X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/e68778f27b18c21c23387d7609d825ab3a192af7..49906096d20853e8ce794225e7ce14147bf112ec:/src/editor/modules/data/dialog.js?ds=inline diff --git a/src/editor/modules/data/dialog.js b/src/editor/modules/data/dialog.js index 0ad87e5..0d4bbd4 100644 --- a/src/editor/modules/data/dialog.js +++ b/src/editor/modules/data/dialog.js @@ -1,10 +1,11 @@ define(function(require) { + /* globals gettext */ 'use strict'; var _ = require('libs/underscore'), Backbone = require('libs/backbone'), - saveDialogTemplate = require('libs/text!./dialog.html'), + dialogTemplate = require('libs/text!./dialog.html'), fieldTemplates = {}; fieldTemplates.checkbox = require('libs/text!./templates/checkbox.html'); fieldTemplates.select = require('libs/text!./templates/select.html'); @@ -14,10 +15,10 @@ define(function(require) { var DialogView = Backbone.View.extend({ - template: _.template(saveDialogTemplate), + template: _.template(dialogTemplate), events: { - 'click .save-btn': 'onSave', - 'click .cancel-btn': 'close', + 'click .execute-btn': 'onExecute', + 'click .cancel-btn': 'onCancel', 'click .close': 'close' }, initialize: function() { @@ -25,10 +26,13 @@ define(function(require) { this.actionsDisabled = false; }, show: function() { - this.setElement(this.template(this.options)); + this.setElement(this.template(_.extend({ + executeButtonText: gettext('Submit'), + cancelButtonText: gettext('Cancel') + }, this.options))); var body = this.$('.modal-body'); - this.options.fields.forEach(function(field) { + (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)); @@ -38,26 +42,34 @@ define(function(require) { ); }); + if(this.options.text) { + body.append('
' + this.options.text + '
'); + } + this.$el.modal({backdrop: 'static'}); this.$el.modal('show'); this.$('textarea').focus(); }, - onSave: function(e) { + onExecute: function(e) { e.preventDefault(); var view = this, formData = {}; - this.options.fields.forEach(function(field) { + (this.options.fields || []).forEach(function(field) { var widget = view.$('[name=' + field.name +']'); formData[field.name] = widget.val(); }); - this.trigger('save', { + this.trigger('execute', { formData: formData, success: function() { view.actionsDisabled = false; view.close(); }, error: function() { view.actionsDisabled = false; view.close(); }, }); }, + onCancel: function() { + this.trigger('cancel'); + this.close(); + }, close: function(e) { if(e) { e.preventDefault(); @@ -66,6 +78,7 @@ define(function(require) { this.$el.modal('hide'); this.$el.remove(); } + this.trigger('close'); }, toggleButtons: function(toggle) { this.$('.btn, button').toggleClass('disabled', !toggle);