diff --git a/src/common/array-store.js b/src/common/array-store.js index 70e9c9e..2789dcd 100644 --- a/src/common/array-store.js +++ b/src/common/array-store.js @@ -115,6 +115,10 @@ class ArrayStore extends ReduceStore { this.dataManager.update(action.data, action.token); return state; + case this.type + '/start-own-edit': + this.dataManager.update(action.data, action.token); + return state; + case this.type + '/edited': return this.updateElements(state, [action.data]); diff --git a/src/user/edit-own-user.js b/src/user/edit-own-user.js new file mode 100644 index 0000000..81c9d9c --- /dev/null +++ b/src/user/edit-own-user.js @@ -0,0 +1,142 @@ +/** + * File: edit-user.js + * Author: Ricardo Hernandez-Montoya + * Date: 02.05.2017 + * + * This file is part of VILLASweb. + * + * VILLASweb is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * VILLASweb is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with VILLASweb. If not, see . + ******************************************************************************/ + +import React from 'react'; +import {FormGroup, FormControl, FormLabel, Col} from 'react-bootstrap'; + +import Dialog from '../common/dialogs/dialog'; +import UserStore from './user-store'; + + +class EditOwnUserDialog extends React.Component { + valid: true; + + constructor(props) { + super(props); + + this.state = { + username: '', + currentpassword: '', + mail: '', + role: '', + id: '', + password: '', + active: '' + } + } + + + + onClose(canceled) { + if (canceled === false) { + if (this.valid) { + this.props.onClose(this.state); + } + } else { + this.props.onClose(); + } + } + + + + handleChange(e) { + let user = UserStore.getState().currentUser; + console.log("edit-own-user, handlechange methode called"); + this.setState({ [e.target.id]: e.target.value }); + + // check all controls + var username = true; + var role = true; + var mail = true; + var pw = true; + var active = true; + var currentpassword = true; + + if (this.state.username === '') { + username = false; + } + + + if(this.state.mail === ''){ + mail = false; + } + + if(this.state.password === ''){ + pw = false; + } + + if(this.state.active === ''){ + active = false; + } + + if(this.state.currentpassword === ''){ + currentpassword = false; + } + + + this.setState({ + role: user.role, + id: user.id + }); + + // form is valid if any of the fields contain somethig + this.valid = username || role || active || currentpassword || mail || pw; + + } + + resetState() { + this.setState({ + //username: this.props.user.username, + //mail: this.props.user.mail, + role: this.props.user.role, + id: this.props.user.id + }); + } + + render() { + return ( + this.onClose(c)} onReset={() => this.resetState()} valid={this.valid}> +
+ + Username + this.handleChange(e)} /> + + + + E-mail + this.handleChange(e)} /> + + + Old Password + this.handleChange(e)} /> + + + + New Password + this.handleChange(e)} /> + +
+
+ ); + } +} + +export default EditOwnUserDialog; diff --git a/src/user/user.js b/src/user/user.js index ca424c5..9817069 100644 --- a/src/user/user.js +++ b/src/user/user.js @@ -21,28 +21,28 @@ import React, { Component } from 'react'; import { Container } from 'flux/utils'; -import {Button, Col, Row, FormGroup, FormLabel} from 'react-bootstrap'; +import {Button, Col, Row} from 'react-bootstrap'; import AppDispatcher from '../common/app-dispatcher'; import UserStore from './user-store'; +import UsersStore from './users-store'; + import Icon from '../common/icon'; -import EditUserDialog from './edit-user'; +import EditOwnUserDialog from './edit-own-user' -import DeleteDialog from '../common/dialogs/delete-dialog'; -import ParametersEditor from "../common/parameters-editor"; class User extends Component { static getStores() { - return [ UserStore ]; + return [ UserStore, UsersStore ]; } static calculateState(prevState, props) { - prevState = prevState || {}; - - const sessionToken = UserStore.getState().token; + //prevState = prevState || {}; + let sessionToken = UserStore.getState().token; let user = UserStore.getState().currentUser; + if(user === null) { AppDispatcher.dispatch({ @@ -60,52 +60,38 @@ class User extends Component { user, token: sessionToken, - editModal: prevState.editModal || false, - deleteModal: prevState.deleteModal || false, - modalData: prevState.modalData || {} + newModal: false, + editModal: false, + update: false, + modalData: {} }; } - closeDeleteModal(confirmDelete) { - this.setState({ deleteModal: false }); - - if (confirmDelete === false) { - return; - } - - AppDispatcher.dispatch({ - type: 'users/start-remove', - data: this.state.modalData, - token: this.state.token - }); - } closeEditModal(data) { this.setState({ editModal: false }); + console.log(data); if (data) { + + AppDispatcher.dispatch({ - type: 'users/start-edit', + type: 'users/start-own-edit', data: data, token: this.state.token }); } + } + getHumanRoleName(role_key) { const HUMAN_ROLE_NAMES = {Admin: 'Administrator', User: 'User', Guest: 'Guest'}; return HUMAN_ROLE_NAMES.hasOwnProperty(role_key)? HUMAN_ROLE_NAMES[role_key] : ''; } - onModalKeyPress = (event) => { - if (event.key === 'Enter') { - event.preventDefault(); - - this.confirmDeleteModal(); - } - }; render() { @@ -129,6 +115,9 @@ class User extends Component { Role: {this.state.user.role} + + + this.closeEditModal(data)} user={this.state.modalData} /> @@ -137,19 +126,7 @@ class User extends Component { } } -{/**/} -{/**/} -{/* this.closeEditModal(data)} user={this.state.modalData} />*/} -{/* this.closeDeleteModal(e)} />*/} - -{/**/} -{/* */} -{/* */} -{/* */} -{/* this.getHumanRoleName(role)} />*/} -{/* */} -{/*
*/} let fluxContainerConverter = require('../common/FluxContainerConverter');