diff --git a/public/js/app/router.js b/public/js/app/router.js index 1651bf0..b6bec03 100644 --- a/public/js/app/router.js +++ b/public/js/app/router.js @@ -7,7 +7,7 @@ define(function (require) { LayoutView = require('app/views/layout'), NavigationView = require('app/views/navigation'), ServersView = require('app/views/servers/list'), - MissionsListView= require('app/views/missions/list'), + MissionsView = require('app/views/missions/index'), ModsListView = require('app/views/mods/list'), ServerView = require('app/views/servers/view'), Missions = require('app/collections/missions'), @@ -21,7 +21,7 @@ define(function (require) { layoutView = new LayoutView({el: $body}).render(), navigationView = new NavigationView({servers: servers}), serversView = new ServersView({collection: servers}), - missionsListView = new MissionsListView({collection: missions}), + missionsView = new MissionsView({missions: missions}), modsListView = new ModsListView({collection: mods}); return Backbone.Router.extend({ @@ -50,8 +50,8 @@ define(function (require) { }, missions: function () { - layoutView.content.show(missionsListView); - missionsListView.delegateEvents(); + layoutView.content.show(missionsView); + missionsView.delegateEvents(); }, mods: function () { diff --git a/public/js/app/views/missions/form.js b/public/js/app/views/missions/form.js index f871755..d00a7c6 100644 --- a/public/js/app/views/missions/form.js +++ b/public/js/app/views/missions/form.js @@ -15,31 +15,27 @@ define(function (require) { return Marionette.ItemView.extend({ template: _.template(tpl), + events: { + 'click form button': 'submit', + }, + initialize: function (options) { this.missions = options.missions; this.model = new Mission(); - this.bind("ok", this.submit); - this.bind('shown', this.shown); }, - shown: function (modal) { - var $okBtn = modal.$el.find('.btn.ok'); + onShow: function () { + var $okBtn = this.$el.find('form button[type=submit]'); $okBtn.addClass('ladda-button').attr('data-style', 'expand-left'); this.laddaBtn = Ladda.create($okBtn.get(0)); }, - submit: function (modal) { + submit: function () { var self = this; var $form = $('form'); - modal.preventClose(); - - $form.find('.form-group').removeClass('has-error'); - $form.find('.help-block').text(''); - this.laddaBtn.start(); - modal.$el.find('.btn.cancel').addClass('disabled'); $.ajax("/api/missions", { files: $form.find(":file"), @@ -47,8 +43,10 @@ define(function (require) { }).complete(function(data) { self.missions.fetch({success : function () { self.laddaBtn.stop(); - modal.close(); + self.render(); }}); + }).error(function() { + self.laddaBtn.stop(); }); }, }); diff --git a/public/js/app/views/missions/index.js b/public/js/app/views/missions/index.js new file mode 100644 index 0000000..68442e7 --- /dev/null +++ b/public/js/app/views/missions/index.js @@ -0,0 +1,27 @@ +define(function (require) { + + "use strict"; + + var $ = require('jquery'), + _ = require('underscore'), + Backbone = require('backbone'), + Marionette = require('marionette'), + FormView = require('app/views/missions/form'), + ListView = require('app/views/missions/list'), + tpl = require('text!tpl/missions/index.html'); + + return Marionette.Layout.extend({ + template: _.template(tpl), + + regions: { + formView: "#form", + listView: "#list", + }, + + onRender: function() { + this.formView.show(new FormView({missions: this.options.missions})); + this.listView.show(new ListView({collection: this.options.missions})); + }, + }); + +}); diff --git a/public/js/app/views/missions/list.js b/public/js/app/views/missions/list.js index 6bbe0bb..584f9b3 100644 --- a/public/js/app/views/missions/list.js +++ b/public/js/app/views/missions/list.js @@ -7,7 +7,6 @@ define(function (require) { Backbone = require('backbone'), Marionette = require('marionette'), ListItemView = require('app/views/missions/list_item'), - FormView = require('app/views/missions/form'), tpl = require('text!tpl/missions/list.html'), template = _.template(tpl); @@ -16,15 +15,5 @@ define(function (require) { itemView: ListItemView, itemViewContainer: "tbody", template: template, - - events: { - "click #upload": "upload" - }, - - upload: function (event) { - event.preventDefault(); - var view = new FormView({missions: this.collection}); - new Backbone.BootstrapModal({ content: view, animate: true }).open() - }, }); }); diff --git a/public/js/tpl/missions/form.html b/public/js/tpl/missions/form.html index c801c6f..63e1c92 100644 --- a/public/js/tpl/missions/form.html +++ b/public/js/tpl/missions/form.html @@ -4,4 +4,5 @@ Only supports missions packed as a PBO + diff --git a/public/js/tpl/missions/index.html b/public/js/tpl/missions/index.html new file mode 100644 index 0000000..48c2e53 --- /dev/null +++ b/public/js/tpl/missions/index.html @@ -0,0 +1,4 @@ +