X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0990bc1dc7fad5165148a8993901138de9e22d0e..fe31e3a7385bf539772d927a1dd3d9cc8ef47f0d:/src/editor/modules/data/saveDialog.js diff --git a/src/editor/modules/data/saveDialog.js b/src/editor/modules/data/saveDialog.js index e1f49b4..3aa17ec 100644 --- a/src/editor/modules/data/saveDialog.js +++ b/src/editor/modules/data/saveDialog.js @@ -1,11 +1,18 @@ -define([ -'libs/text!./saveDialog.html', -'libs/underscore', -'libs/backbone' -], function(saveDialogTemplate, _, Backbone) { +define(function(require) { 'use strict'; + var _ = require('libs/underscore'), + Backbone = require('libs/backbone'), + saveDialogTemplate = require('libs/text!./saveDialog.html'), + fieldTemplates = {}; + fieldTemplates.checkbox = require('libs/text!./templates/checkbox.html'); + fieldTemplates.select = require('libs/text!./templates/select.html'); + fieldTemplates.textarea = require('libs/text!./templates/textarea.html'); + fieldTemplates.input = require('libs/text!./templates/input.html'); + + + var DialogView = Backbone.View.extend({ template: _.template(saveDialogTemplate), events: { @@ -19,16 +26,34 @@ define([ }, show: function() { this.setElement(this.template()); + + var body = this.$('.modal-body'); + this.options.fields.forEach(function(field) { + var template = fieldTemplates[field.type]; + if(!template) { + throw new Error('Field type {type} not recognized.'.replace('{type}', field.type)); + } + body.append( + _.template(template)(_.extend({description: ''}, field)) + ); + }); + this.$el.modal({backdrop: 'static'}); this.$el.modal('show'); this.$('textarea').focus(); - }, onSave: function(e) { e.preventDefault(); - var view = this; + var view = this, + formData = {}; + + this.options.fields.forEach(function(field) { + var widget = view.$('[name=' + field.name +']'); + formData[field.name] = widget.val(); + }); + this.trigger('save', { - data: {description: view.$el.find('textarea').val()}, + formData: formData, success: function() { view.actionsDisabled = false; view.close(); }, error: function() { view.actionsDisabled = false; view.close(); }, }); @@ -50,8 +75,8 @@ define([ }); return { - create: function() { - return new DialogView(); + create: function(config) { + return new DialogView(config); } };