diff core/modules/quickedit/js/views/EditorView.js @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/quickedit/js/views/EditorView.js	Thu Jul 05 14:24:15 2018 +0000
@@ -0,0 +1,140 @@
+/**
+* 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 = $('<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);
\ No newline at end of file