summaryrefslogtreecommitdiffstats
path: root/pyload/web/app/scripts/controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/app/scripts/controller.js')
-rw-r--r--pyload/web/app/scripts/controller.js99
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');
+ }
+ };
+
+});