Skip to content

Commit

Permalink
optimize code
Browse files Browse the repository at this point in the history
  • Loading branch information
shuntian committed May 11, 2024
1 parent 0ad075b commit f817000
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 2 deletions.
1 change: 1 addition & 0 deletions frontend/config/webpack.entry.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const entryFiles = {
sysAdmin: '/pages/sys-admin',
search: '/pages/search',
uploadLink: '/pages/upload-link',
institutionAdmin: '/pages/institution-admin/index.js'
};

const getEntries = (isEnvDevelopment) => {
Expand Down
21 changes: 21 additions & 0 deletions frontend/src/pages/institution-admin/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from 'react';
import ReactDom from 'react-dom';
import SidePanel from './side-panel';
import Users from './users';
import MainPanel from '../sys-admin/main-panel';

import '../../css/layout.css';
import '../../css/toolbar.css';

export default function Institutions() {
return (
<div id="main">
<SidePanel></SidePanel>
<MainPanel>
<Users />
</MainPanel>
</div>
);
}

ReactDom.render(<Institutions />, document.getElementById('wrapper'));
44 changes: 44 additions & 0 deletions frontend/src/pages/institution-admin/side-panel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import Logo from '../../components/logo';
import { gettext, siteRoot } 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 {

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('Institution')}</h3>
<ul className="nav nav-pills flex-column nav-container">
<li className="nav-item">
<Link className="nav-link ellipsis active" to={siteRoot + 'inst/useradmin/'}>
<span className="sf2-icon-info" aria-hidden="true"></span>
<span className="nav-text">{gettext('Users')}</span>
</Link>
</li>
</ul>
</div>
</div>
</div>
</div>
);
}
}

SidePanel.propTypes = propTypes;

export default SidePanel;
7 changes: 7 additions & 0 deletions frontend/src/pages/institution-admin/users/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import React from 'react';

export default function Users() {
return (
<div>Users</div>
);
}
27 changes: 27 additions & 0 deletions seahub/institutions/templates/institutions/admin.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{% extends 'base_for_react.html' %}
{% load render_bundle from webpack_loader %}
{% load seahub_tags %}

{% block extra_style %}
{% render_bundle 'institutionAdmin' 'css' %}
{% endblock %}

{% block extra_script %}
<script type="text/javascript">
// overwrite the one in base_for_react.html
window.app.pageOptions = {
server: '{{ service_url }}',
username: '{{ user.username|escapejs }}',
userNickName: '{{request.user.username|email2nickname|escapejs}}',
inst: '{{inst}}',
users: '{{users}}'
};

window.app.userInfo = {
username: '{{ user.username }}',
name: '{{ user.username|email2nickname|escapejs }}',
contact_email: '{{ user.username|email2contact_email }}',
}
</script>
{% render_bundle 'institutionAdmin' 'js' %}
{% endblock %}
4 changes: 2 additions & 2 deletions seahub/institutions/urls.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Copyright (c) 2012-2016 Seafile Ltd.
from django.urls import path

from .views import (info, useradmin, user_info, user_remove, useradmin_search,
from .views import (info, useradmin_react_fake_view, useradmin, user_info, user_remove, useradmin_search,
user_toggle_status, user_set_quota)

urlpatterns = [
path('info/', info, name="info"),
path('useradmin/', useradmin, name="useradmin"),
path('useradmin/', useradmin_react_fake_view, name="useradmin"),
path('useradmin/info/<str:email>/', user_info, name='user_info'),
path('useradmin/remove/<str:email>/', user_remove, name='user_remove'),
path('useradmin/search/', useradmin_search, name="useradmin_search"),
Expand Down
10 changes: 10 additions & 0 deletions seahub/institutions/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,16 @@ def info(request):
'inst': inst,
})

@inst_admin_required
def useradmin_react_fake_view(request):
"""List users in the institution.
"""
# Make sure page request is an int. If not, deliver first page.
inst = request.user.institution

return render(request, 'institutions/admin.html', {
'institution': inst.name,
})

@inst_admin_required
def useradmin(request):
Expand Down

0 comments on commit f817000

Please sign in to comment.