Mercurial > hg > cmmr2012-drupal-site
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