mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-28 19:25:03 +00:00
251 lines
9.2 KiB
JavaScript
251 lines
9.2 KiB
JavaScript
/*global define*/
|
|
define([
|
|
'jquery',
|
|
'backbone',
|
|
'common',
|
|
'sysadmin-app/views/side-nav',
|
|
'sysadmin-app/views/dashboard',
|
|
'sysadmin-app/views/desktop-devices',
|
|
'sysadmin-app/views/mobile-devices',
|
|
'sysadmin-app/views/device-errors',
|
|
'sysadmin-app/views/repos',
|
|
'sysadmin-app/views/search-repos',
|
|
'sysadmin-app/views/system-repo',
|
|
'sysadmin-app/views/trash-repos',
|
|
'sysadmin-app/views/search-trash-repos',
|
|
'sysadmin-app/views/dir',
|
|
'sysadmin-app/views/groups',
|
|
'sysadmin-app/views/search-groups',
|
|
'sysadmin-app/views/group-repos',
|
|
'sysadmin-app/views/group-members',
|
|
'sysadmin-app/views/admin-logs',
|
|
'app/views/account'
|
|
], function($, Backbone, Common, SideNavView, DashboardView,
|
|
DesktopDevicesView, MobileDevicesView, DeviceErrorsView,
|
|
ReposView, SearchReposView, SystemReposView, TrashReposView,
|
|
SearchTrashReposView, DirView, GroupsView, SearchGroupsView,
|
|
GroupReposView, GroupMembersView, AdminLogsView, AccountView) {
|
|
|
|
"use strict";
|
|
|
|
var Router = Backbone.Router.extend({
|
|
routes: {
|
|
'': 'showDashboard',
|
|
'dashboard/': 'showDashboard',
|
|
'desktop-devices/': 'showDesktopDevices',
|
|
'mobile-devices/': 'showMobileDevices',
|
|
'device-errors/': 'showDeviceErrors',
|
|
'all-libs/': 'showLibraries',
|
|
'search-libs/': 'showSearchLibraries',
|
|
'system-lib/': 'showSystemLibrary',
|
|
'trash-libs/': 'showTrashLibraries',
|
|
'search-trash-libs/': 'showSearchTrashLibraries',
|
|
'libs/:repo_id(/*path)': 'showLibraryDir',
|
|
'groups/': 'showGroups',
|
|
'search-groups/': 'showSearchGroups',
|
|
'groups/:group_id/': 'showGroupLibraries',
|
|
'groups/:group_id/libs/': 'showGroupLibraries',
|
|
'groups/:group_id/members/': 'showGroupMembers',
|
|
'admin-logs/': 'showAdminLogs',
|
|
// Default
|
|
'*actions': 'showDashboard'
|
|
},
|
|
|
|
initialize: function() {
|
|
$('#initial-loading-view').hide();
|
|
|
|
Common.prepareApiCsrf();
|
|
Common.initLocale();
|
|
|
|
this.sideNavView = new SideNavView();
|
|
app.ui = {
|
|
sideNavView: this.sideNavView
|
|
};
|
|
|
|
this.dashboardView = new DashboardView();
|
|
this.desktopDevicesView = new DesktopDevicesView();
|
|
this.mobileDevicesView = new MobileDevicesView();
|
|
this.deviceErrorsView = new DeviceErrorsView();
|
|
|
|
this.reposView = new ReposView();
|
|
this.searchReposView = new SearchReposView();
|
|
this.systemReposView = new SystemReposView();
|
|
this.trashReposView = new TrashReposView();
|
|
this.searchTrashReposView = new SearchTrashReposView();
|
|
this.dirView = new DirView();
|
|
|
|
this.groupsView = new GroupsView();
|
|
this.searchGroupsView = new SearchGroupsView();
|
|
this.groupReposView = new GroupReposView();
|
|
this.groupMembersView = new GroupMembersView();
|
|
|
|
this.adminLogsView = new AdminLogsView();
|
|
|
|
app.ui.accountView = this.accountView = new AccountView();
|
|
|
|
this.currentView = this.dashboardView;
|
|
|
|
$('#info-bar .close').click(Common.closeTopNoticeBar);
|
|
},
|
|
|
|
switchCurrentView: function(newView) {
|
|
if (this.currentView != newView) {
|
|
this.currentView.hide();
|
|
this.currentView = newView;
|
|
}
|
|
},
|
|
|
|
showDashboard: function() {
|
|
this.switchCurrentView(this.dashboardView);
|
|
this.sideNavView.setCurTab('dashboard');
|
|
this.dashboardView.show();
|
|
},
|
|
|
|
showDesktopDevices: function(current_page) {
|
|
var url = window.location.href;
|
|
var page = url.match(/.*?page=(\d+)/);
|
|
if (page) {
|
|
var current_page = page[1];
|
|
} else {
|
|
var current_page = null;
|
|
}
|
|
this.switchCurrentView(this.desktopDevicesView);
|
|
this.sideNavView.setCurTab('devices');
|
|
this.desktopDevicesView.show({'current_page': current_page});
|
|
},
|
|
|
|
showMobileDevices: function(current_page) {
|
|
var url = window.location.href;
|
|
var page = url.match(/.*?page=(\d+)/);
|
|
if (page) {
|
|
current_page = page[1];
|
|
} else {
|
|
current_page = null;
|
|
}
|
|
this.switchCurrentView(this.mobileDevicesView);
|
|
this.sideNavView.setCurTab('devices');
|
|
this.mobileDevicesView.show({'current_page': current_page});
|
|
},
|
|
|
|
showDeviceErrors: function() {
|
|
this.switchCurrentView(this.deviceErrorsView);
|
|
this.sideNavView.setCurTab('devices');
|
|
this.deviceErrorsView.show();
|
|
},
|
|
|
|
showLibraries: function() {
|
|
// url_match: null or an array like ["http://127.0.0.1:8000/sysadmin/#libraries/?page=2", "2"]
|
|
var url_match = location.href.match(/.*?page=(\d+)/);
|
|
var page = url_match ? url_match[1] : 1; // 1: default
|
|
|
|
this.switchCurrentView(this.reposView);
|
|
this.sideNavView.setCurTab('libraries', {'option': 'all'});
|
|
this.reposView.show({'page': page});
|
|
},
|
|
|
|
showSearchLibraries: function() {
|
|
// url_match: null or an array
|
|
var url_match = location.href.match(/.*?name=(.*)&owner=(.*)/); // search by repo_name/owner
|
|
var repo_name = url_match ? url_match[1] : '';
|
|
var owner = url_match ? url_match[2] : '';
|
|
|
|
this.switchCurrentView(this.searchReposView);
|
|
this.sideNavView.setCurTab('libraries', {'option': 'search'});
|
|
this.searchReposView.show({
|
|
'name': decodeURIComponent(repo_name),
|
|
'owner': decodeURIComponent(owner)
|
|
});
|
|
},
|
|
|
|
showLibraryDir: function(repo_id, path) {
|
|
if (path) {
|
|
path = '/' + path;
|
|
} else {
|
|
path = '/';
|
|
}
|
|
this.switchCurrentView(this.dirView);
|
|
this.dirView.show(repo_id, path);
|
|
this.sideNavView.setCurTab('libraries', {'option': ''});
|
|
},
|
|
|
|
showSystemLibrary: function() {
|
|
this.switchCurrentView(this.systemReposView);
|
|
this.sideNavView.setCurTab('libraries', {'option': 'system'});
|
|
this.systemReposView.show();
|
|
},
|
|
|
|
// show trash libs by page
|
|
showTrashLibraries: function() {
|
|
// url_match: null or an array
|
|
var url_match = location.href.match(/.*?page=(\d+)/);
|
|
var page = url_match ? url_match[1] : 1; // 1: default
|
|
|
|
this.switchCurrentView(this.trashReposView);
|
|
this.sideNavView.setCurTab('libraries', {'option': 'trash'});
|
|
this.trashReposView.show({'page': page});
|
|
},
|
|
|
|
// search trash libs by owner
|
|
showSearchTrashLibraries: function() {
|
|
// url_match: null or an array
|
|
var url_match = location.href.match(/.*?name=(.*)/); // search by owner
|
|
var owner = url_match ? url_match[1] : '';
|
|
|
|
this.switchCurrentView(this.searchTrashReposView);
|
|
this.sideNavView.setCurTab('libraries', {'option': 'trash'});
|
|
this.searchTrashReposView.show({'owner': decodeURIComponent(owner)});
|
|
},
|
|
|
|
showGroups: function() {
|
|
// url_match: null or an array like ["http://127.0.0.1:8000/sysadmin/#groups/?page=2", "2"]
|
|
var url_match = location.href.match(/.*?page=(\d+)/);
|
|
var page = url_match ? url_match[1] : 1; // 1: default
|
|
|
|
this.switchCurrentView(this.groupsView);
|
|
this.sideNavView.setCurTab('groups');
|
|
this.groupsView.show({'page': page});
|
|
},
|
|
|
|
showSearchGroups: function() {
|
|
// url_match: null or an array
|
|
var url_match = location.href.match(/.*?name=(.*)/); // search by group_name
|
|
var group_name = url_match ? url_match[1] : '';
|
|
|
|
this.switchCurrentView(this.searchGroupsView);
|
|
this.sideNavView.setCurTab('groups', {'option': 'search'});
|
|
this.searchGroupsView.show({
|
|
'name': decodeURIComponent(group_name)
|
|
});
|
|
},
|
|
|
|
showGroupLibraries: function(group_id) {
|
|
this.switchCurrentView(this.groupReposView);
|
|
this.sideNavView.setCurTab('groups');
|
|
this.groupReposView.show(group_id);
|
|
},
|
|
|
|
showGroupMembers: function(group_id) {
|
|
this.switchCurrentView(this.groupMembersView);
|
|
this.sideNavView.setCurTab('groups');
|
|
this.groupMembersView.show(group_id);
|
|
},
|
|
|
|
showAdminLogs: function() {
|
|
var url = window.location.href;
|
|
var page = url.match(/.*?page=(\d+)/);
|
|
if (page) {
|
|
var current_page = page[1];
|
|
} else {
|
|
var current_page = null;
|
|
}
|
|
|
|
this.switchCurrentView(this.adminLogsView);
|
|
this.sideNavView.setCurTab('admin-logs');
|
|
this.adminLogsView.show({'current_page': current_page});
|
|
}
|
|
|
|
});
|
|
|
|
return Router;
|
|
});
|