/** * 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-' + this.fieldModel.id.replace(/[/[\]_\s]/g, '-'); function fillAndSubmitForm(value) { var $form = $('#' + 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 = $('
').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);