123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /**
- * 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);
|