diff --git a/main.js b/main.js index a91dd02..d3aa842 100644 --- a/main.js +++ b/main.js @@ -47,8 +47,7 @@ app.get('/api/servers', function (req, res){ app.post('/api/servers', function (req, res){ var title = req.body.title; var id = slug(title); - manager.addServer(id, title); - res.send(manager.servers); + res.send(manager.addServer(id, title)); }); app.get('/api/servers/:id/start', function (req, res){ diff --git a/manager.js b/manager.js index 3d09d9a..f62ae32 100644 --- a/manager.js +++ b/manager.js @@ -47,7 +47,9 @@ function Manager() { Manager.prototype.addServer = (function (id, title) { mods = []; port = 2302; - this.servers.push(new Server(id, title, port, mods)); + var server = new Server(id, title, port, mods) + this.servers.push(server); + return server; }); module.exports = Manager; \ No newline at end of file diff --git a/public/js/app/models/server.js b/public/js/app/models/server.js index ef5efbb..2fb0023 100644 --- a/public/js/app/models/server.js +++ b/public/js/app/models/server.js @@ -9,7 +9,8 @@ define(function (require) { return Backbone.Model.extend({ defaults: { title: '' - } + }, + url: '/api/servers' }); }); \ No newline at end of file diff --git a/public/js/app/views/home.js b/public/js/app/views/home.js index aec24ce..9470cdb 100644 --- a/public/js/app/views/home.js +++ b/public/js/app/views/home.js @@ -21,7 +21,7 @@ define(function (require) { }, addServer: function () { - var view = new AddServerView(); + var view = new AddServerView({servers: this.servers}); new Backbone.BootstrapModal({ content: view, servers: this.servers }).open() }, }); diff --git a/public/js/app/views/servers/add.js b/public/js/app/views/servers/add.js index 3cd9d1f..c19e594 100644 --- a/public/js/app/views/servers/add.js +++ b/public/js/app/views/servers/add.js @@ -6,10 +6,37 @@ define(function (require) { _ = require('underscore'), Backbone = require('backbone'), Marionette = require('marionette'), + FormView = require('marionette-formview'), + Server = require('app/models/server'), tpl = require('text!tpl/servers/add.html'); return Marionette.ItemView.extend({ template: _.template(tpl), + + initialize: function (options) { + this.servers = options.servers; + this.model = new Server(); + this.bind("ok", this.submit); + }, + + submit: function (modal) { + modal.preventClose(); + + this.model.set('title', $("form #title").val()); + + var self = this; + + this.model.save({}, { + success: function() { + modal.close(); + self.servers.fetch(); + Backbone.history.navigate('#servers/' + self.model.get('id'), true); + }, + error: function() { + alert("Error :("); + } + }); + } }); }); \ No newline at end of file diff --git a/public/js/tpl/servers/add.html b/public/js/tpl/servers/add.html index ffe8d89..13b3f38 100644 --- a/public/js/tpl/servers/add.html +++ b/public/js/tpl/servers/add.html @@ -1,14 +1,8 @@