From c03ac991e61ce65ed7cb1d910fa19202bec5a088 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Fri, 28 Feb 2014 09:35:02 +0100 Subject: [PATCH 1/1] editor: Dialog improvements - close, cancel events - adding text content - handling empty fields list --- src/editor/modules/data/dialog.html | 2 +- src/editor/modules/data/dialog.js | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/editor/modules/data/dialog.html b/src/editor/modules/data/dialog.html index 9ac7888..97adf56 100644 --- a/src/editor/modules/data/dialog.html +++ b/src/editor/modules/data/dialog.html @@ -7,6 +7,6 @@ \ No newline at end of file diff --git a/src/editor/modules/data/dialog.js b/src/editor/modules/data/dialog.js index a2c56e2..c32738a 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'), @@ -17,7 +18,7 @@ define(function(require) { template: _.template(dialogTemplate), events: { 'click .save-btn': 'onSave', - 'click .cancel-btn': 'close', + '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({ + submitButtonText: 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,6 +42,10 @@ define(function(require) { ); }); + if(this.options.text) { + body.append('

' + this.options.text + '

'); + } + this.$el.modal({backdrop: 'static'}); this.$el.modal('show'); this.$('textarea').focus(); @@ -47,7 +55,7 @@ define(function(require) { 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(); }); @@ -58,6 +66,10 @@ define(function(require) { 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); -- 2.20.1