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); |