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