PluginProbe
WP Directory Kit / 1.5.4
WP Directory Kit v1.5.4
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / elementor-elements / classes / includes / js / controls-handlers.js

controls-handlers.js in WP Directory Kit 1.5.4, at elementor-elements/classes/includes/js/controls-handlers.js

270 lines 6.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2
3 var $ = jQuery;
4
5 var pinterestToken = null;
6
7 elementor.channels.editor.on('change', function (view) {
8 var changed = view.elementSettingsModel.changed;
9
10 if (changed.access_token) {
11 if (changed.access_token.startsWith('pina_'))
12 pinterestToken = changed.access_token;
13 }
14 });
15
16 function onSectionActivate(sectionName) {
17
18 if ('access_credentials_section' === sectionName) {
19
20 setTimeout(function () {
21
22 var accessToken = jQuery('.elementor-control-access_token textarea').val();
23
24 pinterestToken = accessToken;
25
26 }, 100);
27 }
28 }
29
30 elementor.channels.editor.on('section:activated', onSectionActivate);
31
32 var selectOptions = elementor.modules.controls.Select2.extend({
33
34 isUpdated: false,
35
36 onReady: function () {
37
38 var options = (0 === this.model.get('options').length);
39
40 if (this.container && "widget" === this.container.type && 'board_id' === this.model.get('name')) {
41 if (options) {
42
43 var _this = this;
44
45 if (pinterestToken) {
46
47 jQuery.ajax({
48 type: "GET",
49 url: PremiumSettings.ajaxurl,
50 dataType: "JSON",
51 data: {
52 action: "get_pinterest_boards",
53 nonce: PremiumSettings.nonce,
54 token: pinterestToken
55 },
56 success: function (res) {
57
58 if (res.data) {
59
60 var options = JSON.parse(res.data);
61
62 _this.model.set("options", options);
63
64 _this.isUpdated = false;
65
66 _this.render();
67
68 }
69 },
70 error: function (err) {
71 console.log(err);
72 }
73 });
74 }
75
76 elementor.channels.editor.on('change', function (view) {
77 var changed = view.elementSettingsModel.changed;
78
79 if (undefined !== changed.board_id && !_this.isUpdated) {
80 _this.isUpdated = true;
81 }
82 });
83
84 }
85 }
86 },
87
88 onBeforeRender: function () {
89
90 if (this.container && ("section" === this.container.type || "container" === this.container.type)) {
91 var widgetObj = elementor.widgetsCache || elementor.config.widgets,
92 optionsToUpdate = {};
93
94 var _this = this;
95 this.container.children.forEach(function (child) {
96
97 if ("container" === _this.container.type) {
98
99 if (child.view.$childViewContainer) {
100 getInnerWidgets(child);
101 } else {
102 //Get Flex Container widgets when no columns are added.
103 var name = child.view.$el.data("widget_type").split('.')[0];
104
105 if ('undefined' !== typeof widgetObj[name]) {
106 optionsToUpdate[".elementor-widget-" + widgetObj[name].widget_type + " .elementor-widget-container"] = widgetObj[name].title;
107 }
108 }
109
110 } else if ("section" === _this.container.type) {
111 getInnerWidgets(child);
112 }
113
114 });
115
116 function getInnerWidgets(child) {
117 child.view.$childViewContainer.children("[data-widget_type]").each(function (index, widget) {
118 var name = $(widget).data("widget_type").split('.')[0];
119
120 if ('undefined' !== typeof widgetObj[name]) {
121 optionsToUpdate[".elementor-widget-" + widgetObj[name].widget_type + " .elementor-widget-container"] = widgetObj[name].title;
122 }
123 });
124
125 }
126
127 this.model.set("options", optionsToUpdate);
128 }
129 },
130 });
131
132 elementor.addControlView("wdk-select", selectOptions);
133
134 var filterOptions = elementor.modules.controls.Select2.extend({
135
136 isUpdated: false,
137
138 onReady: function () {
139 var self = this,
140 type = self.model.get('source') || self.options.elementSettingsModel.attributes.post_type_filter;
141
142 // if ('post' !== type) {
143 var options = (0 === this.model.get('options').length);
144
145 if (options) {
146 self.fetchData(type);
147 }
148 // }
149
150 elementor.channels.editor.on('change', function (view) {
151 var changed = view.elementSettingsModel.changed;
152
153 if (undefined !== changed.post_type_filter && 'post' !== changed.post_type_filter && !self.isUpdated) {
154 self.isUpdated = true;
155 self.fetchData(changed.post_type_filter);
156 }
157 });
158 },
159
160 fetchData: function (type) {
161
162 var self = this;
163 $.ajax({
164 url: PremiumSettings.ajaxurl,
165 dataType: 'json',
166 type: 'POST',
167 data: {
168 nonce: PremiumSettings.nonce,
169 action: 'wdk_update_filter',
170 post_type: 'object' === typeof type ? type : [type]
171 },
172 success: function (res) {
173
174 self.updateFilterOptions(JSON.parse(res.data));
175 self.isUpdated = false;
176
177 self.render();
178 },
179 error: function (err) {
180 console.log(err);
181 },
182 });
183 },
184
185 updateFilterOptions: function (options) {
186 this.model.set("options", options);
187 },
188
189 onBeforeDestroy: function () {
190 if (this.ui.select.data('select2')) {
191 // this.ui.select.select2('destroy');
192 }
193
194 this.$el.remove();
195 }
196 });
197
198 elementor.addControlView("wdk-post-filter", filterOptions);
199
200
201 jQuery(window).on('elementor:init', function() {
202 elementor.hooks.addAction('panel/open_editor/widget', function(panel, model, view) {
203 jQuery('.el-wdk-selector-field').each(function() {
204 const $select = jQuery(this);
205 const isMultiple = $select.prop('multiple');
206 let val = $select.val();
207
208 if (isMultiple) {
209 const selectedOptions = $select.find('option[selected]');
210 if ((!val || !val.length) && selectedOptions.length) {
211 val = selectedOptions.map(function() { return jQuery(this).val(); }).get();
212 $select.val(val).trigger('change');
213 }
214 } else {
215 if (!val) {
216 const selectedOption = $select.find('option[selected]');
217 if (selectedOption.length) {
218 val = selectedOption.first().val();
219 $select.val(val).trigger('change');
220 }
221 }
222 }
223 });
224 });
225 });
226
227
228 jQuery(window).on('elementor:init', () => {
229 elementor.addControlView('wdk-fields-selector', elementor.modules.controls.BaseData.extend({
230
231 onReady() {
232 const $select = this.$el.find('.el-wdk-selector-field');
233
234 if (!$select.hasClass('select2-hidden-accessible')) {
235 $select.select2({
236 width: '100%',
237 placeholder: $select.data('placeholder') || '',
238 allowClear: true
239 });
240 }
241
242 let val = this.getControlValue();
243
244 if (!val) {
245 const selectedOption = $select.find('option[selected]');
246 if (selectedOption.length) {
247 val = selectedOption.val();
248 this.setValue(val);
249 $select.val(val).trigger('change');
250 }
251 } else {
252 $select.val(val).trigger('change');
253 }
254
255 $select.on('change', (e) => {
256 this.setValue($select.val());
257 });
258 },
259
260 onBeforeDestroy() {
261 const $select = this.$el.find('.el-wdk-selector-field');
262 if ($select.data('select2')) {
263 $select.select2('destroy');
264 }
265 },
266 }));
267 });
268
269 })(jQuery);
270