define(function(require) {
- /* globals gettext */
'use strict';
- var _ = require('libs/underscore'),
+ var $ = require('libs/jquery'),
+ _ = require('libs/underscore'),
Backbone = require('libs/backbone'),
dialogTemplate = require('libs/text!./dialog.html'),
fieldTemplates = {};
},
show: function() {
this.setElement(this.template(_.extend({
- executeButtonText: gettext('Submit'),
- cancelButtonText: gettext('Cancel')
+ executeButtonText: null,
+ cancelButtonText: null,
+ cssClass: ''
}, this.options)));
var body = this.$('.modal-body');
if(!template) {
throw new Error('Field type {type} not recognized.'.replace('{type}', field.type));
}
- body.append(
- _.template(template)(_.extend({description: ''}, field))
- );
+ var widget = $(_.template(template)(_.extend({description: '', initialValue: ''}, field)));
+
+ body.append(widget);
+
+ if(_.isFunction(field.prePasteHandler) && field.type === 'input') { // TODO: extract this out to widget specific impl.
+ widget.find('input').on('paste', function(e) {
+ var clipboardData = e.originalEvent.clipboardData;
+ if(!clipboardData || !clipboardData.getData) {
+ return;
+ }
+ e.preventDefault();
+ var text = clipboardData.getData('text/plain').replace(/\r?\n|\r/g, ' ');
+ $(e.target).val(field.prePasteHandler(text));
+ });
+ }
});
if(this.options.text) {
this.$el.modal({backdrop: 'static'});
this.$el.modal('show');
- this.$('textarea').focus();
+ this.$('textarea, input').first().focus();
},
onExecute: function(e) {
e.preventDefault();
(this.options.fields || []).forEach(function(field) {
var widget = view.$('[name=' + field.name +']');
- formData[field.name] = widget.val();
+ var widget_type = widget.attr('type');
+ if (!(widget_type == 'checkbox' || widget_type == 'radio') || widget.is(':checked')) {
+ formData[field.name] = widget.val();
+ }
});
this.trigger('execute', {
this.$('.btn, button').toggleClass('disabled', !toggle);
this.$('textarea').attr('disabled', !toggle);
this.actionsDisabled = !toggle;
+ },
+ setContentView: function(view) {
+ var body = this.$('.modal-body');
+ body.append(view);
}
});