quickedit-1.0.x-dev/js/views/EditorView.js
js/views/EditorView.js
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/
(function ($, Backbone, Drupal) {
Drupal.quickedit.EditorView = Backbone.View.extend({
initialize: function initialize(options) {
this.fieldModel = options.fieldModel;
this.listenTo(this.fieldModel, 'change:state', this.stateChange);
},
remove: function remove() {
this.setElement();
Backbone.View.prototype.remove.call(this);
},
getEditedElement: function getEditedElement() {
return this.$el;
},
getQuickEditUISettings: function getQuickEditUISettings() {
return {
padding: false,
unifiedToolbar: false,
fullWidthToolbar: false,
popup: false
};
},
stateChange: function stateChange(fieldModel, state) {
var from = fieldModel.previous('state');
var to = state;
switch (to) {
case 'inactive':
break;
case 'candidate':
if (from === 'invalid') {
this.removeValidationErrors();
}
break;
case 'highlighted':
break;
case 'activating':
{
var loadDependencies = function loadDependencies(callback) {
callback();
};
loadDependencies(function () {
fieldModel.set('state', 'active');
});
break;
}
case 'active':
break;
case 'changed':
break;
case 'saving':
if (from === 'invalid') {
this.removeValidationErrors();
}
this.save();
break;
case 'saved':
break;
case 'invalid':
this.showValidationErrors();
break;
}
},
revert: function revert() {},
save: function save() {
var fieldModel = this.fieldModel;
var editorModel = this.model;
var backstageId = "quickedit_backstage-".concat(this.fieldModel.id.replace(/[/[\]_\s]/g, '-'));
function fillAndSubmitForm(value) {
var $form = $("#".concat(backstageId)).find('form');
$form.find(':input[type!="hidden"][type!="submit"]:not(select)').not('[name$="\\[summary\\]"]').val(value);
$form.find('.quickedit-form-submit').trigger('click.quickedit');
}
var formOptions = {
fieldID: this.fieldModel.get('fieldID'),
$el: this.$el,
nocssjs: true,
other_view_modes: fieldModel.findOtherViewModes(),
reset: !this.fieldModel.get('entity').get('inTempStore')
};
var self = this;
Drupal.quickedit.util.form.load(formOptions, function (form, ajax) {
var $backstage = $(Drupal.theme('quickeditBackstage', {
id: backstageId
})).appendTo('body');
var $form = $(form).appendTo($backstage);
$form.prop('novalidate', true);
var $submit = $form.find('.quickedit-form-submit');
self.formSaveAjax = Drupal.quickedit.util.form.ajaxifySaving(formOptions, $submit);
function removeHiddenForm() {
Drupal.quickedit.util.form.unajaxifySaving(self.formSaveAjax);
delete self.formSaveAjax;
$backstage.remove();
}
self.formSaveAjax.commands.quickeditFieldFormSaved = function (ajax, response, status) {
removeHiddenForm();
fieldModel.set('state', 'saved');
fieldModel.set('htmlForOtherViewModes', response.other_view_modes);
fieldModel.set('html', response.data);
};
self.formSaveAjax.commands.quickeditFieldFormValidationErrors = function (ajax, response, status) {
removeHiddenForm();
editorModel.set('validationErrors', response.data);
fieldModel.set('state', 'invalid');
};
self.formSaveAjax.commands.quickeditFieldForm = function () {};
fillAndSubmitForm(editorModel.get('currentValue'));
});
},
showValidationErrors: function showValidationErrors() {
var $errors = $('<div class="quickedit-validation-errors"></div>').append(this.model.get('validationErrors'));
this.getEditedElement().addClass('quickedit-validation-error').after($errors);
},
removeValidationErrors: function removeValidationErrors() {
this.getEditedElement().removeClass('quickedit-validation-error').next('.quickedit-validation-errors').remove();
}
});
})(jQuery, Backbone, Drupal);