annotate core/modules/quickedit/js/views/EditorView.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 /**
Chris@0 2 * DO NOT EDIT THIS FILE.
Chris@0 3 * See the following change record for more information,
Chris@0 4 * https://www.drupal.org/node/2815083
Chris@0 5 * @preserve
Chris@0 6 **/
Chris@0 7
Chris@0 8 (function ($, Backbone, Drupal) {
Chris@0 9 Drupal.quickedit.EditorView = Backbone.View.extend({
Chris@0 10 initialize: function initialize(options) {
Chris@0 11 this.fieldModel = options.fieldModel;
Chris@0 12 this.listenTo(this.fieldModel, 'change:state', this.stateChange);
Chris@0 13 },
Chris@0 14 remove: function remove() {
Chris@0 15 this.setElement();
Chris@0 16 Backbone.View.prototype.remove.call(this);
Chris@0 17 },
Chris@0 18 getEditedElement: function getEditedElement() {
Chris@0 19 return this.$el;
Chris@0 20 },
Chris@0 21 getQuickEditUISettings: function getQuickEditUISettings() {
Chris@17 22 return {
Chris@17 23 padding: false,
Chris@17 24 unifiedToolbar: false,
Chris@17 25 fullWidthToolbar: false,
Chris@17 26 popup: false
Chris@17 27 };
Chris@0 28 },
Chris@0 29 stateChange: function stateChange(fieldModel, state) {
Chris@0 30 var from = fieldModel.previous('state');
Chris@0 31 var to = state;
Chris@0 32 switch (to) {
Chris@0 33 case 'inactive':
Chris@0 34 break;
Chris@0 35
Chris@0 36 case 'candidate':
Chris@0 37 if (from === 'invalid') {
Chris@0 38 this.removeValidationErrors();
Chris@0 39 }
Chris@0 40 break;
Chris@0 41
Chris@0 42 case 'highlighted':
Chris@0 43 break;
Chris@0 44
Chris@0 45 case 'activating':
Chris@14 46 {
Chris@14 47 var loadDependencies = function loadDependencies(callback) {
Chris@14 48 callback();
Chris@14 49 };
Chris@14 50 loadDependencies(function () {
Chris@14 51 fieldModel.set('state', 'active');
Chris@14 52 });
Chris@14 53 break;
Chris@14 54 }
Chris@0 55
Chris@0 56 case 'active':
Chris@0 57 break;
Chris@0 58
Chris@0 59 case 'changed':
Chris@0 60 break;
Chris@0 61
Chris@0 62 case 'saving':
Chris@0 63 if (from === 'invalid') {
Chris@0 64 this.removeValidationErrors();
Chris@0 65 }
Chris@0 66 this.save();
Chris@0 67 break;
Chris@0 68
Chris@0 69 case 'saved':
Chris@0 70 break;
Chris@0 71
Chris@0 72 case 'invalid':
Chris@0 73 this.showValidationErrors();
Chris@0 74 break;
Chris@0 75 }
Chris@0 76 },
Chris@0 77 revert: function revert() {},
Chris@0 78 save: function save() {
Chris@0 79 var fieldModel = this.fieldModel;
Chris@0 80 var editorModel = this.model;
Chris@14 81 var backstageId = 'quickedit_backstage-' + this.fieldModel.id.replace(/[/[\]_\s]/g, '-');
Chris@0 82
Chris@0 83 function fillAndSubmitForm(value) {
Chris@0 84 var $form = $('#' + backstageId).find('form');
Chris@0 85
Chris@0 86 $form.find(':input[type!="hidden"][type!="submit"]:not(select)').not('[name$="\\[summary\\]"]').val(value);
Chris@0 87
Chris@0 88 $form.find('.quickedit-form-submit').trigger('click.quickedit');
Chris@0 89 }
Chris@0 90
Chris@0 91 var formOptions = {
Chris@0 92 fieldID: this.fieldModel.get('fieldID'),
Chris@0 93 $el: this.$el,
Chris@0 94 nocssjs: true,
Chris@0 95 other_view_modes: fieldModel.findOtherViewModes(),
Chris@0 96
Chris@0 97 reset: !this.fieldModel.get('entity').get('inTempStore')
Chris@0 98 };
Chris@0 99
Chris@0 100 var self = this;
Chris@0 101 Drupal.quickedit.util.form.load(formOptions, function (form, ajax) {
Chris@0 102 var $backstage = $(Drupal.theme('quickeditBackstage', { id: backstageId })).appendTo('body');
Chris@0 103
Chris@0 104 var $form = $(form).appendTo($backstage);
Chris@0 105
Chris@0 106 $form.prop('novalidate', true);
Chris@0 107 var $submit = $form.find('.quickedit-form-submit');
Chris@0 108 self.formSaveAjax = Drupal.quickedit.util.form.ajaxifySaving(formOptions, $submit);
Chris@0 109
Chris@0 110 function removeHiddenForm() {
Chris@0 111 Drupal.quickedit.util.form.unajaxifySaving(self.formSaveAjax);
Chris@0 112 delete self.formSaveAjax;
Chris@0 113 $backstage.remove();
Chris@0 114 }
Chris@0 115
Chris@0 116 self.formSaveAjax.commands.quickeditFieldFormSaved = function (ajax, response, status) {
Chris@0 117 removeHiddenForm();
Chris@0 118
Chris@0 119 fieldModel.set('state', 'saved');
Chris@0 120
Chris@0 121 fieldModel.set('htmlForOtherViewModes', response.other_view_modes);
Chris@0 122
Chris@0 123 fieldModel.set('html', response.data);
Chris@0 124 };
Chris@0 125
Chris@0 126 self.formSaveAjax.commands.quickeditFieldFormValidationErrors = function (ajax, response, status) {
Chris@0 127 removeHiddenForm();
Chris@0 128 editorModel.set('validationErrors', response.data);
Chris@0 129 fieldModel.set('state', 'invalid');
Chris@0 130 };
Chris@0 131
Chris@0 132 self.formSaveAjax.commands.quickeditFieldForm = function () {};
Chris@0 133
Chris@0 134 fillAndSubmitForm(editorModel.get('currentValue'));
Chris@0 135 });
Chris@0 136 },
Chris@0 137 showValidationErrors: function showValidationErrors() {
Chris@0 138 var $errors = $('<div class="quickedit-validation-errors"></div>').append(this.model.get('validationErrors'));
Chris@0 139 this.getEditedElement().addClass('quickedit-validation-error').after($errors);
Chris@0 140 },
Chris@0 141 removeValidationErrors: function removeValidationErrors() {
Chris@0 142 this.getEditedElement().removeClass('quickedit-validation-error').next('.quickedit-validation-errors').remove();
Chris@0 143 }
Chris@0 144 });
Chris@0 145 })(jQuery, Backbone, Drupal);