X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/413a5f1dc25d5c8a788127f40816f39c49cd0d1c..032212c1a346b6ab46c582571eafb0c70b6b42c2:/src/editor/views/dialog/dialog.js diff --git a/src/editor/views/dialog/dialog.js b/src/editor/views/dialog/dialog.js index 0d4bbd4..0e45dd7 100644 --- a/src/editor/views/dialog/dialog.js +++ b/src/editor/views/dialog/dialog.js @@ -1,9 +1,9 @@ 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 = {}; @@ -27,8 +27,9 @@ define(function(require) { }, 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'); @@ -37,9 +38,21 @@ define(function(require) { 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) { @@ -48,7 +61,7 @@ define(function(require) { this.$el.modal({backdrop: 'static'}); this.$el.modal('show'); - this.$('textarea').focus(); + this.$('textarea, input').first().focus(); }, onExecute: function(e) { e.preventDefault(); @@ -57,7 +70,10 @@ define(function(require) { (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', { @@ -84,6 +100,10 @@ define(function(require) { 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); } });