diff options
Diffstat (limited to 'pyload/web/app/scripts/controller.js')
-rw-r--r-- | pyload/web/app/scripts/controller.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/pyload/web/app/scripts/controller.js b/pyload/web/app/scripts/controller.js new file mode 100644 index 000000000..9a892323f --- /dev/null +++ b/pyload/web/app/scripts/controller.js @@ -0,0 +1,99 @@ +define([ + 'app', + 'backbone', + 'jquery', + 'underscore', + + // Views + 'views/headerView', + 'hbs!tpl/header/blank', + 'views/notificationView', + 'views/dashboard/dashboardView', + 'views/dashboard/selectionView', + 'views/dashboard/filterView', + 'views/loginView', + 'views/settings/settingsView', + 'views/accounts/accountListView' +], function( + App, Backbone, $, _, HeaderView, blankHeader, NotificationView, DashboardView, SelectionView, FilterView, LoginView, SettingsView, AccountListView) { + 'use strict'; + return { + + // resets the main views + reset: function() { + if (App.header.currentView) { + App.header.currentView.close(); + App.header.$el.html(blankHeader()); + App.header.currentView = null; + } + if (App.content.currentView) { + App.content.currentView.close(); + } + + if (App.actionbar.currentView) { + App.actionbar.currentView.close(); + } + }, + + header: function() { + if (!App.header.currentView) { + App.header.show(new HeaderView()); + App.header.currentView.init(); + } + if (!App.notification.currentView) { + App.notification.attachView(new NotificationView()); + } + }, + + dashboard: function() { + this.header(); + + App.actionbar.show(new FilterView()); + + // now visible every time + if (_.isUndefined(App.selection.currentView) || _.isNull(App.selection.currentView)) + App.selection.attachView(new SelectionView()); + + App.content.show(new DashboardView()); + }, + + login: function() { + this.reset(); + + App.content.show(new LoginView()); + }, + + logout: function() { + this.reset(); + + $.ajax(App.apiRequest('logout', null, { + success: function() { + App.user.destroy(); + App.navigate('login'); + } + } + )); + }, + + settings: function() { + this.header(); + + var view = new SettingsView(); + App.actionbar.show(new view.actionbar()); + App.content.show(view); + }, + + accounts: function() { + this.header(); + + var view = new AccountListView(); + App.actionbar.show(new view.actionbar()); + App.content.show(view); + }, + + admin: function() { + alert('Not implemented'); + } + }; + +}); |