1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-08 02:10:24 +00:00
Files
seahub/frontend/src/pages/sys-admin/side-panel.js
Leo 63bd44acf7 Sysadmin reconstruct settings (#3946)
* sysadmin reconstruct settings page

* [system admin] settings: refactored it

* fixup & improvement
2019-09-29 18:19:25 +08:00

222 lines
10 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import { Link } from '@reach/router';
import Logo from '../../components/logo';
import { gettext, siteRoot, isPro, isDefaultAdmin, canViewSystemInfo, canViewStatistic,
canConfigSystem, canManageLibrary, canManageUser, canManageGroup, canViewUserLog,
canViewAdminLog, constanceEnabled, multiTenancy, multiInstitution, sysadminExtraEnabled,
enableGuestInvitation, enableTermsAndConditions, enableFileScan, enableWorkWeixin } from '../../utils/constants';
const propTypes = {
isSidePanelClosed: PropTypes.bool.isRequired,
onCloseSidePanel: PropTypes.func.isRequired,
currentTab: PropTypes.string.isRequired,
tabItemClick: PropTypes.func.isRequired
};
class SidePanel extends React.Component {
getActiveClass = (tab) => {
return this.props.currentTab == tab ? 'active' : '';
}
render() {
return (
<div className={`side-panel ${this.props.isSidePanelClosed ? '' : 'left-zero'}`}>
<div className="side-panel-north">
<Logo onCloseSidePanel={this.props.onCloseSidePanel}/>
</div>
<div className="side-panel-center">
<div className="side-nav">
<div className="side-nav-con">
<h3 className="sf-heading">{gettext('System Admin')}</h3>
<ul className="nav nav-pills flex-column nav-container">
{canViewSystemInfo &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('info')}`}
to={siteRoot + 'sys/info/'}
onClick={() => this.props.tabItemClick('info')}
>
<span className="sf2-icon-info" aria-hidden="true"></span>
<span className="nav-text">{gettext('Info')}</span>
</Link>
</li>
}
{isPro && canViewStatistic &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/statistic/file/'}>
<span className="sf2-icon-histogram" aria-hidden="true"></span>
<span className="nav-text">{gettext('Statistic')}</span>
</a>
</li>
}
{isDefaultAdmin &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('devices')}`}
to={siteRoot + 'sys/desktop-devices/'}
onClick={() => this.props.tabItemClick('devices')}
>
<span className="sf2-icon-monitor" aria-hidden="true"></span>
<span className="nav-text">{gettext('Devices')}</span>
</Link>
</li>
}
{constanceEnabled && canConfigSystem &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('web-settings')}`}
to={siteRoot + 'sys/web-settings/'}
onClick={() => this.props.tabItemClick('web-settings')}
>
<span className="sf2-icon-cog2" aria-hidden="true"></span>
<span className="nav-text">{gettext('Settings')}</span>
</Link>
</li>
}
{canManageLibrary &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('libraries')}`}
to={siteRoot + 'sys/all-libraries/'}
onClick={() => this.props.tabItemClick('libraries')}
>
<span className="sf2-icon-library" aria-hidden="true"></span>
<span className="nav-text">{gettext('Libraries')}</span>
</Link>
</li>
}
{canManageUser &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/useradmin/'}>
<span className="sf2-icon-user" aria-hidden="true"></span>
<span className="nav-text">{gettext('Users')}</span>
</a>
</li>
}
{canManageGroup &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sysadmin/#groups/'}>
<span className="sf2-icon-group" aria-hidden="true"></span>
<span className="nav-text">{gettext('Groups')}</span>
</a>
</li>
}
{isPro && canManageGroup &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sysadmin/#address-book/'}>
<span className="sf2-icon-organization" aria-hidden="true"></span>
<span className="nav-text">{gettext('Departments')}</span>
</a>
</li>
}
{multiTenancy && isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/orgadmin/'}>
<span className="sf2-icon-organization" aria-hidden="true"></span>
<span className="nav-text">{gettext('Organizations')}</span>
</a>
</li>
}
{multiInstitution && isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/instadmin/'}>
<span className="sf2-icon-organization" aria-hidden="true"></span>
<span className="nav-text">{gettext('Institutions')}</span>
</a>
</li>
}
{isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/notificationadmin/'}>
<span className="sf2-icon-msgs" aria-hidden="true"></span>
<span className="nav-text">{gettext('Notifications')}</span>
</a>
</li>
}
{isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/publinkadmin/'}>
<span className="sf2-icon-link" aria-hidden="true"></span>
<span className="nav-text">{gettext('Links')}</span>
</a>
</li>
}
{sysadminExtraEnabled && canViewUserLog &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/loginadmin/'}>
<span className="sf2-icon-clock" aria-hidden="true"></span>
<span className="nav-text">{gettext('Logs')}</span>
</a>
</li>
}
{isPro && isDefaultAdmin && enableFileScan &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('file-scan-records')}`}
to={siteRoot + 'sys/file-scan-records/'}
onClick={() => this.props.tabItemClick('file-scan-records')}
>
<span className="sf2-icon-security" aria-hidden="true"></span>
<span className="nav-text">{gettext('File Scan')}</span>
</Link>
</li>
}
{isPro && isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/virus_scan_records/'}>
<span className="sf2-icon-security" aria-hidden="true"></span>
<span className="nav-text">{gettext('Virus Scan')}</span>
</a>
</li>
}
{enableGuestInvitation && isDefaultAdmin &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/invitationadmin/'}>
<span className="sf2-icon-invite" aria-hidden="true"></span>
<span className="nav-text">{gettext('Invitations')}</span>
</a>
</li>
}
{isDefaultAdmin && enableTermsAndConditions &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sys/termsadmin/'}>
<span className="sf2-icon-wiki" aria-hidden="true"></span>
<span className="nav-text">{gettext('Terms and Conditions')}</span>
</a>
</li>
}
{isPro && canViewAdminLog &&
<li className="nav-item">
<a className='nav-link ellipsis' href={siteRoot + 'sysadmin/#admin-operation-logs/'}>
<span className="sf2-icon-admin-log" aria-hidden="true"></span>
<span className="nav-text">{gettext('Admin Logs')}</span>
</a>
</li>
}
{isDefaultAdmin && enableWorkWeixin &&
<li className="nav-item">
<Link
className={`nav-link ellipsis ${this.getActiveClass('work-weixin')}`}
to={siteRoot + 'sys/work-weixin/'}
onClick={() => this.props.tabItemClick('work-weixin')}
>
<span className="sf3-font-enterprise-wechat sf3-font" aria-hidden="true"></span>
<span className="nav-text">{'企业微信集成'}</span>
</Link>
</li>
}
</ul>
</div>
</div>
</div>
</div>
);
}
}
SidePanel.propTypes = propTypes;
export default SidePanel;