2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
8 (function ($, Backbone, Drupal) {
9 Drupal.quickedit.EditorView = Backbone.View.extend({
10 initialize: function initialize(options) {
11 this.fieldModel = options.fieldModel;
12 this.listenTo(this.fieldModel, 'change:state', this.stateChange);
14 remove: function remove() {
16 Backbone.View.prototype.remove.call(this);
18 getEditedElement: function getEditedElement() {
21 getQuickEditUISettings: function getQuickEditUISettings() {
24 unifiedToolbar: false,
25 fullWidthToolbar: false,
29 stateChange: function stateChange(fieldModel, state) {
30 var from = fieldModel.previous('state');
37 if (from === 'invalid') {
38 this.removeValidationErrors();
47 var loadDependencies = function loadDependencies(callback) {
50 loadDependencies(function () {
51 fieldModel.set('state', 'active');
63 if (from === 'invalid') {
64 this.removeValidationErrors();
73 this.showValidationErrors();
77 revert: function revert() {},
78 save: function save() {
79 var fieldModel = this.fieldModel;
80 var editorModel = this.model;
81 var backstageId = 'quickedit_backstage-' + this.fieldModel.id.replace(/[/[\]_\s]/g, '-');
83 function fillAndSubmitForm(value) {
84 var $form = $('#' + backstageId).find('form');
86 $form.find(':input[type!="hidden"][type!="submit"]:not(select)').not('[name$="\\[summary\\]"]').val(value);
88 $form.find('.quickedit-form-submit').trigger('click.quickedit');
92 fieldID: this.fieldModel.get('fieldID'),
95 other_view_modes: fieldModel.findOtherViewModes(),
97 reset: !this.fieldModel.get('entity').get('inTempStore')
101 Drupal.quickedit.util.form.load(formOptions, function (form, ajax) {
102 var $backstage = $(Drupal.theme('quickeditBackstage', { id: backstageId })).appendTo('body');
104 var $form = $(form).appendTo($backstage);
106 $form.prop('novalidate', true);
107 var $submit = $form.find('.quickedit-form-submit');
108 self.formSaveAjax = Drupal.quickedit.util.form.ajaxifySaving(formOptions, $submit);
110 function removeHiddenForm() {
111 Drupal.quickedit.util.form.unajaxifySaving(self.formSaveAjax);
112 delete self.formSaveAjax;
116 self.formSaveAjax.commands.quickeditFieldFormSaved = function (ajax, response, status) {
119 fieldModel.set('state', 'saved');
121 fieldModel.set('htmlForOtherViewModes', response.other_view_modes);
123 fieldModel.set('html', response.data);
126 self.formSaveAjax.commands.quickeditFieldFormValidationErrors = function (ajax, response, status) {
128 editorModel.set('validationErrors', response.data);
129 fieldModel.set('state', 'invalid');
132 self.formSaveAjax.commands.quickeditFieldForm = function () {};
134 fillAndSubmitForm(editorModel.get('currentValue'));
137 showValidationErrors: function showValidationErrors() {
138 var $errors = $('<div class="quickedit-validation-errors"></div>').append(this.model.get('validationErrors'));
139 this.getEditedElement().addClass('quickedit-validation-error').after($errors);
141 removeValidationErrors: function removeValidationErrors() {
142 this.getEditedElement().removeClass('quickedit-validation-error').next('.quickedit-validation-errors').remove();
145 })(jQuery, Backbone, Drupal);