- close, cancel events
- adding text content
- handling empty fields list
</div>
<div class="modal-footer">
<a href="#" class="btn btn-info btn-mini save-btn"><%= submitButtonText %></a>
</div>
<div class="modal-footer">
<a href="#" class="btn btn-info btn-mini save-btn"><%= submitButtonText %></a>
- <a href="#" class="btn btn-danger btn-mini cancel-btn"><%= gettext('Cancel') %></a>
+ <a href="#" class="btn btn-danger btn-mini cancel-btn"><%= cancelButtonText %></a>
</div>
</div>
\ No newline at end of file
</div>
</div>
\ No newline at end of file
define(function(require) {
define(function(require) {
'use strict';
var _ = require('libs/underscore'),
'use strict';
var _ = require('libs/underscore'),
template: _.template(dialogTemplate),
events: {
'click .save-btn': 'onSave',
template: _.template(dialogTemplate),
events: {
'click .save-btn': 'onSave',
- 'click .cancel-btn': 'close',
+ 'click .cancel-btn': 'onCancel',
'click .close': 'close'
},
initialize: function() {
'click .close': 'close'
},
initialize: function() {
this.actionsDisabled = false;
},
show: function() {
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');
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));
var template = fieldTemplates[field.type];
if(!template) {
throw new Error('Field type {type} not recognized.'.replace('{type}', field.type));
+ if(this.options.text) {
+ body.append('<p>' + this.options.text + '</p>');
+ }
+
this.$el.modal({backdrop: 'static'});
this.$el.modal('show');
this.$('textarea').focus();
this.$el.modal({backdrop: 'static'});
this.$el.modal('show');
this.$('textarea').focus();
var view = this,
formData = {};
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();
});
var widget = view.$('[name=' + field.name +']');
formData[field.name] = widget.val();
});
error: 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();
close: function(e) {
if(e) {
e.preventDefault();
this.$el.modal('hide');
this.$el.remove();
}
this.$el.modal('hide');
this.$el.remove();
}
},
toggleButtons: function(toggle) {
this.$('.btn, button').toggleClass('disabled', !toggle);
},
toggleButtons: function(toggle) {
this.$('.btn, button').toggleClass('disabled', !toggle);