X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/2febe50b1b52293e16330bb9e3437c83f8ade41e..c45af498f0da72fb2cb9d2a50d1aa3f7429ecd25:/src/editor/modules/data/dialog.js?ds=sidebyside diff --git a/src/editor/modules/data/dialog.js b/src/editor/modules/data/dialog.js index a2c56e2..0d4bbd4 100644 --- a/src/editor/modules/data/dialog.js +++ b/src/editor/modules/data/dialog.js @@ -1,5 +1,6 @@ define(function(require) { + /* globals gettext */ 'use strict'; var _ = require('libs/underscore'), @@ -16,8 +17,8 @@ define(function(require) { var DialogView = Backbone.View.extend({ 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);