From 9fbd04e74cdc1810a6099a73df6e56e6fb321991 Mon Sep 17 00:00:00 2001 From: Michael An <1822852997@qq.com> Date: Mon, 29 Apr 2019 22:20:56 +0800 Subject: [PATCH 1/2] adjust button position --- frontend/src/pages/org-admin/index.js | 26 +++++++++++--- frontend/src/pages/org-admin/main-panel.js | 6 ++++ .../pages/org-admin/org-department-item.js | 34 ++++++++++++------- .../pages/org-admin/org-departments-list.js | 14 ++------ 4 files changed, 52 insertions(+), 28 deletions(-) diff --git a/frontend/src/pages/org-admin/index.js b/frontend/src/pages/org-admin/index.js index 42d6bc4b00..b3115e421f 100644 --- a/frontend/src/pages/org-admin/index.js +++ b/frontend/src/pages/org-admin/index.js @@ -34,6 +34,7 @@ class Org extends React.Component { isShowAddOrgUserDialog: false, isShowAddOrgAdminDialog: false, isInviteUserDialogOpen: false, + isShowAddDepartDialog: false, currentTab: 'users', }; } @@ -70,8 +71,11 @@ class Org extends React.Component { this.setState({isInviteUserDialogOpen: !this.state.isInviteUserDialogOpen}); } - render() { + toggleAddDepartDialog = () => { + this.setState({ isShowAddDepartDialog: !this.state.isShowAddDepartDialog}); + } + render() { let { isSidePanelClosed, currentTab, isShowAddOrgUserDialog, isShowAddOrgAdminDialog, isInviteUserDialogOpen } = this.state; let href = window.location.href; let newPath = 'groups/'; @@ -81,7 +85,13 @@ class Org extends React.Component { return (
- + - - + +
@@ -45,6 +46,11 @@ class MainPanel extends Component { {gettext('Add admin')} } + {(this.props.currentTab === 'departmentadmin' && !groupID) && + + }
diff --git a/frontend/src/pages/org-admin/org-department-item.js b/frontend/src/pages/org-admin/org-department-item.js index dde49685d5..75ec873e56 100644 --- a/frontend/src/pages/org-admin/org-department-item.js +++ b/frontend/src/pages/org-admin/org-department-item.js @@ -109,25 +109,35 @@ class OrgDepartmentItem extends React.Component {
-

- { this.state.groupID ? - {gettext('Departments')} - : {gettext('Departments')} - } - { - this.state.ancestorGroups.map(ancestor => { +
+

+ {this.state.groupID ? + {gettext('Departments')} + : {gettext('Departments')} + } + {this.state.ancestorGroups.map(ancestor => { let newHref = serviceURL + '/org/departmentadmin/groups/' + ancestor.id + '/'; return ( {' / '}{ancestor.name} ); - }) - } - { this.state.groupID && {' / '}{this.state.groupName} } -

+ })} + {this.state.groupID && {' / '}{this.state.groupName}} +

+
+ {this.state.groupID && +
+ +
+ }
- +
diff --git a/frontend/src/pages/org-admin/org-departments-list.js b/frontend/src/pages/org-admin/org-departments-list.js index d657d8c83d..80379fbe29 100644 --- a/frontend/src/pages/org-admin/org-departments-list.js +++ b/frontend/src/pages/org-admin/org-departments-list.js @@ -20,7 +20,6 @@ class OrgDepartmentsList extends React.Component { groups: null, groupID: -1, groupName: '', - showAddDepartDialog: false, showDeleteDepartDialog: false, showSetGroupQuotaDialog: false, }; @@ -42,10 +41,6 @@ class OrgDepartmentsList extends React.Component { } } - showAddDepartDialog = () => { - this.setState({ showAddDepartDialog: true }); - } - showDeleteDepartDialog = (group) => { this.setState({ showDeleteDepartDialog: true, groupID: group.id, groupName: group.name }); } @@ -56,7 +51,6 @@ class OrgDepartmentsList extends React.Component { toggleCancel = () => { this.setState({ - showAddDepartDialog: false, showDeleteDepartDialog: false, showSetGroupQuotaDialog: false, }); @@ -74,16 +68,12 @@ class OrgDepartmentsList extends React.Component { const groups = this.state.groups; let isSub = this.props.groupID ? true : false; let header = isSub ? gettext('Sub-departments') : gettext('Departments'); - let headerButton = isSub ? gettext('New Sub-department') : gettext('New Department'); let noGroup = isSub ? gettext('No sub-departments') : gettext('No departments'); return (

{header}

-
- -
{groups && groups.length > 0 ? @@ -115,13 +105,13 @@ class OrgDepartmentsList extends React.Component { }
- {this.state.showAddDepartDialog && ( + {this.props.isShowAddDepartDialog && ( )} From 7c2fb46e31c8743380288c7143706bf5b5b115f8 Mon Sep 17 00:00:00 2001 From: Michael An <1822852997@qq.com> Date: Tue, 30 Apr 2019 10:28:32 +0800 Subject: [PATCH 2/2] fix-org-member --- .../dialog/org-add-member-dialog.js | 12 ++-- frontend/src/pages/org-admin/index.js | 16 +++++ frontend/src/pages/org-admin/main-panel.js | 18 ++++-- .../pages/org-admin/org-department-item.js | 64 ++++++++----------- .../pages/org-admin/org-departments-list.js | 18 ++++-- 5 files changed, 70 insertions(+), 58 deletions(-) diff --git a/frontend/src/components/dialog/org-add-member-dialog.js b/frontend/src/components/dialog/org-add-member-dialog.js index 136d6faa6d..32cc386ff6 100644 --- a/frontend/src/components/dialog/org-add-member-dialog.js +++ b/frontend/src/components/dialog/org-add-member-dialog.js @@ -30,15 +30,13 @@ class AddMemberDialog extends React.Component { if (!this.state.selectedOption) return; const email = this.state.selectedOption.email; this.refs.orgSelect.clearSelect(); - this.setState({ errorMsg: [] }); + this.setState({ errMessage: [] }); seafileAPI.orgAdminAddDepartGroupUser(orgID, this.props.groupID, email).then((res) => { - if (res.data.failed) { - this.setState({ errorMsg: res.data.failed[0] }); + this.setState({ selectedOption: null }); + if (res.data.failed.length > 0) { + this.setState({ errMessage: res.data.failed[0].error_msg }); } - this.setState({ - selectedOption: null, - }); - if (res.data.success) { + if (res.data.success.length > 0) { this.props.onMemberChanged(); this.props.toggle(); } diff --git a/frontend/src/pages/org-admin/index.js b/frontend/src/pages/org-admin/index.js index b3115e421f..a9bc4f1992 100644 --- a/frontend/src/pages/org-admin/index.js +++ b/frontend/src/pages/org-admin/index.js @@ -35,6 +35,8 @@ class Org extends React.Component { isShowAddOrgAdminDialog: false, isInviteUserDialogOpen: false, isShowAddDepartDialog: false, + isShowAddMemberDialog: false, + isShowAddRepoDialog: false, currentTab: 'users', }; } @@ -75,6 +77,14 @@ class Org extends React.Component { this.setState({ isShowAddDepartDialog: !this.state.isShowAddDepartDialog}); } + toggleAddMemberDialog = () => { + this.setState({ isShowAddMemberDialog: !this.state.isShowAddMemberDialog }); + } + + toggleAddRepoDialog = () => { + this.setState({ isShowAddRepoDialog: !this.state.isShowAddRepoDialog }); + } + render() { let { isSidePanelClosed, currentTab, isShowAddOrgUserDialog, isShowAddOrgAdminDialog, isInviteUserDialogOpen } = this.state; let href = window.location.href; @@ -91,6 +101,8 @@ class Org extends React.Component { toggleAddOrgUser={this.toggleAddOrgUser} toggleInviteUserDialog={this.toggleInviteUserDialog} toggleAddDepartDialog={this.toggleAddDepartDialog} + toggleAddMemberDialog={this.toggleAddMemberDialog} + toggleAddRepoDialog={this.toggleAddRepoDialog} > @@ -117,6 +129,10 @@ class Org extends React.Component { path={newPath} isShowAddDepartDialog={this.state.isShowAddDepartDialog} toggleAddDepartDialog={this.toggleAddDepartDialog} + isShowAddMemberDialog={this.state.isShowAddMemberDialog} + toggleAddMemberDialog={this.toggleAddMemberDialog} + isShowAddRepoDialog={this.state.isShowAddRepoDialog} + toggleAddRepoDialog={this.toggleAddRepoDialog} />
@@ -46,10 +47,17 @@ class MainPanel extends Component { {gettext('Add admin')} } - {(this.props.currentTab === 'departmentadmin' && !groupID) && - + {this.props.currentTab === 'departmentadmin' && + + {!groupID && } + {groupID && } + {groupID && } + {groupID && } + }
diff --git a/frontend/src/pages/org-admin/org-department-item.js b/frontend/src/pages/org-admin/org-department-item.js index 75ec873e56..b32003aae5 100644 --- a/frontend/src/pages/org-admin/org-department-item.js +++ b/frontend/src/pages/org-admin/org-department-item.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { seafileAPI } from '../../utils/seafile-api'; import { Utils } from '../../utils/utils.js'; -import { serviceURL, mediaUrl, gettext, orgID } from '../../utils/constants'; +import { serviceURL, gettext, orgID } from '../../utils/constants'; import OrgDepartmentsList from './org-departments-list'; import ModalPortal from '../../components/modal-portal'; import AddMemberDialog from '../../components/dialog/org-add-member-dialog'; @@ -23,14 +23,12 @@ class OrgDepartmentItem extends React.Component { ancestorGroups: [], deletedMember: {}, deletedRepo: {}, - showAddMemberDialog: false, showDeleteMemberDialog: false, - showAddRepoDialog: false, showDeleteRepoDialog: false, isItemFreezed: false, groupID: null, groupName: '', - } + }; } listOrgGroupRepo = (groupID) => { @@ -52,27 +50,17 @@ class OrgDepartmentItem extends React.Component { }); } - showAddMemberDialog = () => { - this.setState({ showAddMemberDialog: true }); - } - showDeleteMemberDialog = (member) => { this.setState({ showDeleteMemberDialog: true, deletedMember: member }); } - showAddRepoDialog = () => { - this.setState({ showAddRepoDialog: true }); - } - showDeleteRepoDialog = (repo) => { this.setState({ showDeleteRepoDialog: true, deletedRepo: repo }); } toggleCancel = () => { this.setState({ - showAddMemberDialog: false, showDeleteMemberDialog: false, - showAddRepoDialog: false, showDeleteRepoDialog: false, }); } @@ -124,12 +112,6 @@ class OrgDepartmentItem extends React.Component { {this.state.groupID && {' / '}{this.state.groupName}}
- {this.state.groupID && -
- -
- }
@@ -145,12 +127,9 @@ class OrgDepartmentItem extends React.Component {

{gettext('Members')}

-
- -
- {(members && members.length === 1 && members[0].role === "Owner") ? + {(members && members.length === 1 && members[0].role === 'Owner') ?

{gettext('No members')}

: @@ -167,7 +146,6 @@ class OrgDepartmentItem extends React.Component {

{gettext('Libraries')}

-
- -
{ repos.length > 0 ?
@@ -238,19 +213,19 @@ class OrgDepartmentItem extends React.Component { /> )} - {this.state.showAddMemberDialog && ( + {this.props.isShowAddMemberDialog && ( )} - {this.state.showAddRepoDialog && ( + {this.props.isShowAddRepoDialog && ( @@ -262,6 +237,17 @@ class OrgDepartmentItem extends React.Component { } } +const OrgDepartmentItemPropTypes = { + isShowAddDepartDialog: PropTypes.bool.isRequired, + isShowAddMemberDialog: PropTypes.bool.isRequired, + isShowAddRepoDialog: PropTypes.bool.isRequired, + toggleAddDepartDialog: PropTypes.func.isRequired, + toggleAddMemberDialog: PropTypes.func.isRequired, + toggleAddRepoDialog: PropTypes.func.isRequired, +}; + +OrgDepartmentItem.propTypes = OrgDepartmentItemPropTypes; + class MemberItem extends React.Component { @@ -305,7 +291,7 @@ class MemberItem extends React.Component { if (member.role === 'Owner') return null; return (
- + - { - !this.props.isItemFreezed ? - : - } + {!this.props.isItemFreezed ? + : + } ); } } const MemberItemPropTypes = { + member: PropTypes.object.isRequired, isItemFreezed: PropTypes.bool.isRequired, onMemberChanged: PropTypes.func.isRequired, showDeleteMemberDialog: PropTypes.func.isRequired, diff --git a/frontend/src/pages/org-admin/org-departments-list.js b/frontend/src/pages/org-admin/org-departments-list.js index 80379fbe29..c38b751778 100644 --- a/frontend/src/pages/org-admin/org-departments-list.js +++ b/frontend/src/pages/org-admin/org-departments-list.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import moment from 'moment'; import { seafileAPI } from '../../utils/seafile-api'; -import { siteRoot, serviceURL, gettext, orgID, lang } from '../../utils/constants'; +import { serviceURL, gettext, orgID, lang } from '../../utils/constants'; import { Utils } from '../../utils/utils.js'; import ModalPortal from '../../components/modal-portal'; import AddDepartDialog from '../../components/dialog/org-add-department-dialog'; @@ -28,15 +28,11 @@ class OrgDepartmentsList extends React.Component { listDepartGroups = () => { if (this.props.groupID) { seafileAPI.orgAdminListGroupInfo(orgID, this.props.groupID, true).then(res => { - this.setState({ - groups: res.data.groups - }); + this.setState({ groups: res.data.groups }); }); } else { seafileAPI.orgAdminListDepartGroups(orgID).then(res => { - this.setState({ - groups: res.data.data - }); + this.setState({ groups: res.data.data }); }); } } @@ -141,6 +137,14 @@ class OrgDepartmentsList extends React.Component { } } +const OrgDepartmentsListPropTypes = { + isShowAddDepartDialog: PropTypes.bool.isRequired, + toggleAddDepartDialog: PropTypes.func.isRequired, +}; + +OrgDepartmentsList.propTypes = OrgDepartmentsListPropTypes; + + class GroupItem extends React.Component { constructor(props) {
member-headermember-header {member.name} - - + +