PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.0.7
Easy Elements for Elementor – Addons & Website Templates v1.0.7
1.5.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.6 1.4.7 1.4.8 1.4.5 1.4.4 1.4.3 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.7 1.3.8 1.3.9 1.4.0 All 47 releases
← All changes | assets/js/admin.js +39 -453 1.2.9 → 1.0.7 View file →
@@ -11,10 +11,8 @@
11 11 this.easyEltab();
12 12 this.easyElFilter();
13 13 this.easyelVideoPopuo();
14 14 this.easyelFaq();
15 - this.initSettings();
16 - this.EasyelWidgetGroupEnable();
17 15 },
18 16
19 17 initWidgetToggles: function() {
20 18
@@ -21,98 +19,47 @@
21 19 $('.easy-widget-item.easyel-pro-enable .widget-toggle-checkbox').each(function() {
22 20 $(this).prop('checked', false).prop('disabled', true);
23 21 });
24 22
25 -
26 - $('.widget-toggle-checkbox').on('change', function () {
27 -
28 - var checkbox = $(this);
23 + $('.widget-toggle-checkbox').on('change', function() {
24 + var checkbox = $(this);
29 25 var widgetItem = checkbox.closest('.easy-widget-item');
30 - var mainWrap = $('.easyel-plugin-main-settings-page');
31 - var indicator = mainWrap.find('.easyel-saving-indicator');
32 26
33 27 if (widgetItem.hasClass('easyel-pro-enable')) {
28 +
34 29 checkbox.prop('checked', false).prop('disabled', true);
35 - return false;
30 + return false;
36 31 }
37 32
38 33 var widgetKey = checkbox.data('widget-key');
39 - var status = checkbox.is(':checked') ? '1' : '0';
34 + var status = checkbox.is(':checked') ? '1' : '0';
40 35
41 36 if (!widgetKey) return;
42 37
43 - indicator.text('Saving...');
44 - mainWrap.addClass('is-saving');
45 -
46 - $.ajax({
47 - url: ajaxurl,
48 - type: 'POST',
49 - data: {
50 - action: 'easy_elements_save_widget_setting',
51 - widget_key: widgetKey,
52 - status: status,
53 - nonce: easyElementsData.widget_settings_nonce
54 - },
55 -
56 - success: function (response) {
57 -
58 - if (response.success) {
59 -
60 - indicator.text('Saved');
61 -
62 - setTimeout(function () {
63 - mainWrap.removeClass('is-saving');
64 - indicator.text('Saving...');
65 - }, 500 );
66 -
67 - } else {
68 - mainWrap.removeClass('is-saving');
69 - checkbox.prop('checked', !checkbox.is(':checked'));
70 - }
71 - },
72 -
73 - error: function () {
74 - mainWrap.removeClass('is-saving');
75 - checkbox.prop('checked', !checkbox.is(':checked'));
38 + $.post(ajaxurl, {
39 + action: 'easy_elements_save_widget_setting',
40 + widget_key: widgetKey,
41 + status: status,
42 + nonce: easyElementsData.widget_settings_nonce
43 + })
44 + .done(function(response) {
45 + if (!response.success) {
46 + checkbox.prop('checked', !checkbox.is(':checked'));
76 47 }
48 + })
49 + .fail(function() {
50 + checkbox.prop('checked', !checkbox.is(':checked'));
77 51 });
78 52 });
79 -
80 -
81 -
82 -
83 53 },
84 54
85 55 initSearchFunctionality: function() {
86 -
87 - function hideEmptyGroups() {
88 - $('.easyel-widgets-grid').each(function () {
89 - var wrapper = $(this);
90 - var items = wrapper.find('.easy-widget-item');
91 -
92 - var visibleItems = items.filter(function () {
93 - return $(this).css('display') !== 'none';
94 - }).length;
95 -
96 - var headingGroup = wrapper.prev('.easyel-widget-heading-group');
97 -
98 - if (visibleItems === 0) {
99 - headingGroup.hide();
100 - wrapper.hide();
101 - } else {
102 - headingGroup.show();
103 - wrapper.show();
104 - }
105 - });
106 - }
107 -
108 56 $('#element-search').on('input', function() {
109 57 var searchTerm = $(this).val().toLowerCase();
110 -
111 58 $('.easy-widget-item').each(function() {
112 59 var widgetTitle = $(this).find('.widget-header strong').text().toLowerCase();
113 - var widgetDesc = $(this).find('.widget-description').text().toLowerCase();
114 -
60 + var widgetDesc = $(this).find('.widget-description').text().toLowerCase();
61 +
115 62 if (widgetTitle.includes(searchTerm) || widgetDesc.includes(searchTerm)) {
116 63 $(this).show();
117 64 } else {
118 65 $(this).hide();
@@ -117,16 +64,11 @@
117 64 } else {
118 65 $(this).hide();
119 66 }
120 67 });
121 -
122 - hideEmptyGroups();
123 68 });
124 -
125 - hideEmptyGroups();
126 69 },
127 70
128 -
129 71 initBulkActions: function() {
130 72 $('#activate-all-btn').on('click', function() {
131 73 var currentTab = $('.easyel-nav-tab-active').data('tab');
132 74 EasyElementsAdmin.performBulkAction('activate_all', currentTab);
@@ -137,154 +79,42 @@
137 79 });
138 80 },
139 81
140 82 performBulkAction: function(action) {
141 -
142 83 var currentTab = $('.easyel-nav-tab-active').data('tab');
143 - var currentFilter = $('.easyel-action-btn.active').data('filter');
144 84 var btn = action === 'activate_all' ? $('#activate-all-btn') : $('#deactivate-all-btn');
145 85 var originalText = btn.text();
146 86
147 - let mainWrap = $('.easyel-plugin-main-settings-page');
148 - let indicator = mainWrap.find('.easyel-saving-indicator');
149 -
150 87 btn.prop('disabled', true).text(easyElementsData.strings.processing);
151 88
152 - indicator.text('Saving...');
153 - mainWrap.addClass('is-saving');
154 -
155 89 $.post(ajaxurl, {
156 90 action: 'easy_elements_bulk_action',
157 91 bulk_action: action,
158 92 tab: currentTab,
159 - filter: currentFilter,
160 93 nonce: easyElementsData.bulk_action_nonce
161 94 })
162 95 .done(function(response) {
163 -
164 96 if (response.success) {
165 -
166 97 $('.widget-toggle-checkbox').each(function() {
167 98 var $checkbox = $(this);
168 - let item = $checkbox.closest('.easy-widget-item');
169 99
170 - if ($checkbox.data('tab') !== currentTab) {
171 - return;
100 + if ($checkbox.data('tab') === currentTab) {
101 + var isPro = $checkbox.closest('.easy-widget-item').hasClass('easyel-pro-enable');
102 + if (isPro && !response.data.is_pro_active) {
103 + $checkbox.prop('checked', false).prop('disabled', true);
104 + } else {
105 + $checkbox.prop('checked', action === 'activate_all');
106 + $checkbox.prop('disabled', false);
107 + }
172 108 }
173 -
174 - let isProWidget = item.hasClass('easyel-pro-widget');
175 -
176 - if (currentFilter === 'easyel_free' && isProWidget) {
177 - return;
178 - }
179 -
180 - if (currentFilter === 'easyel_pro' && !isProWidget) {
181 - return;
182 - }
183 -
184 - if (isProWidget && !response.data.is_pro_active) {
185 - $checkbox.prop('checked', false).prop('disabled', true);
186 - } else {
187 - $checkbox.prop('checked', action === 'activate_all');
188 - $checkbox.prop('disabled', false);
189 - }
190 -
191 109 });
192 -
193 - $('.easyel-group-toggle-widget').each(function() {
194 - let groupCheckbox = $(this);
195 - let groupSlug = groupCheckbox.data('group');
196 - let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
197 -
198 - let allChecked = true;
199 - groupWrapper.find('.widget-toggle-checkbox').each(function() {
200 - if (!$(this).prop('checked') && !$(this).closest('.easyel-widget-item').hasClass('easyel-pro-enable')) {
201 - allChecked = false;
202 - return false;
203 - }
204 - });
205 -
206 - groupCheckbox.prop('checked', allChecked);
207 - groupCheckbox.closest('.easyel-toggle-switch-widget').find('.easyel-enable-all-widget').text(allChecked ? 'Disable All' : 'Enable All');
208 - });
209 -
210 - indicator.text('Saved');
211 -
212 - setTimeout(function() {
213 - mainWrap.removeClass('is-saving');
214 - indicator.text('Saving...');
215 - }, 700);
216 110 }
217 111 })
218 - .fail(function() {
219 - // Error fallback
220 - mainWrap.removeClass('is-saving');
221 - })
222 112 .always(function() {
223 113 btn.prop('disabled', false).text(originalText);
224 114 });
225 115 },
226 116
227 - EasyelWidgetGroupEnable: function() {
228 -
229 - function EasyupdateEnableAllText2(groupCheckbox, groupWrapper) {
230 - let allChecked = true;
231 - groupWrapper.find('.widget-toggle-checkbox').each(function() {
232 - if (!$(this).prop('checked') && !$(this).closest('.easyel-widget-item').hasClass('easyel-pro-enable')) {
233 - allChecked = false;
234 - return false;
235 - }
236 - });
237 -
238 - let textSpan = groupCheckbox.closest('.easyel-toggle-switch-widget').find('.easyel-enable-all-widget');
239 -
240 - textSpan.text(allChecked ? 'Disable All' : 'Enable All');
241 - groupCheckbox.prop('checked', allChecked);
242 - }
243 -
244 - let groupTabEnable = $(".easyel-tab-panel.widget");
245 -
246 - groupTabEnable.find('.easyel-group-toggle-widget').each(function() {
247 - let groupCheckbox = $(this);
248 - let groupSlug = groupCheckbox.data('group');
249 - let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
250 -
251 - EasyupdateEnableAllText2(groupCheckbox, groupWrapper);
252 - });
253 -
254 - groupTabEnable.on('change', '.easyel-group-toggle-widget', function () {
255 -
256 - let groupCheckbox = $(this);
257 - let groupSlug = groupCheckbox.data('group');
258 - let groupWrapper = $('.easyel-widgets-grid[data-group="' + groupSlug + '"]');
259 - let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
260 -
261 - let status = groupCheckbox.is(':checked') ? 1 : 0;
262 -
263 - groupWrapper.find('.widget-toggle-checkbox').each(function () {
264 - let checkbox = $(this);
265 - if (checkbox.closest('.easyel-widget-item').hasClass('easyel-pro-enable')) return;
266 - checkbox.prop('checked', status === 1);
267 - });
268 -
269 - hiddenField.val(status);
270 -
271 - EasyupdateEnableAllText2( groupCheckbox, groupWrapper );
272 -
273 - let keys = [];
274 - groupWrapper.find('.widget-toggle-checkbox').each(function() { keys.push($(this).data('key')); });
275 - if (keys.length) {
276 - $.post(ajaxurl, {
277 - action: 'easy_elements_bulk_group_action',
278 - group: groupSlug,
279 - status: status,
280 - nonce: easyElementsData.bulk_action_nonce
281 - });
282 - }
283 - });
284 -
285 - },
286 -
287 117 initAllExtensions: function() {
288 118 let $extensionsTab = $('.easyel-tab-panel.extensions');
289 119
290 120 $('.easyel-extension-toggle').on('change', function () {
@@ -292,14 +122,8 @@
292 122 let key = checkbox.data('key');
293 123 let tab = checkbox.data('tab');
294 124 let status = checkbox.is(':checked') ? 1 : 0;
295 125
296 - let mainWrap = $('.easyel-plugin-main-settings-page');
297 - let indicator = mainWrap.find('.easyel-saving-indicator');
298 -
299 - indicator.text('Saving...');
300 - mainWrap.addClass('is-saving');
301 -
302 126 $.post(ajaxurl, {
303 127 action: 'easy_elements_save_global_extensions',
304 128 tab: tab,
305 129 key: key,
@@ -305,43 +129,13 @@
305 129 key: key,
306 130 status: status,
307 131 nonce: easyElementsData.widget_settings_nonce
308 132 })
309 - .done(function(response) {
310 - if (response.success) {
311 - indicator.text('Saved');
312 - } else {
313 - indicator.text('Failed');
314 - checkbox.prop('checked', !checkbox.is(':checked'));
315 - }
316 -
317 - setTimeout(function() {
318 - mainWrap.removeClass('is-saving');
319 - indicator.text('Saving...');
320 - }, 500);
321 - })
322 133 .fail(function () {
323 - mainWrap.removeClass('is-saving');
324 134 checkbox.prop('checked', !checkbox.is(':checked'));
325 135 });
326 136 });
327 137
328 - function EasyupdateEnableAllText(groupCheckbox) {
329 - let status = groupCheckbox.is(':checked') ? 1 : 0;
330 - let label = groupCheckbox.closest('.easyel-toggle-switch-extension');
331 - let textSpan = label.find('.easyel-enable-all');
332 -
333 - if (status === 1) {
334 - textSpan.text('Disable All');
335 - } else {
336 - textSpan.text('Enable All');
337 - }
338 - }
339 -
340 - $extensionsTab.find('.easyel-group-toggle').each(function() {
341 - EasyupdateEnableAllText($(this));
342 - });
343 -
344 138 $extensionsTab.on('change', '.easyel-group-toggle', function () {
345 139 let groupCheckbox = $(this);
346 140 let groupSlug = groupCheckbox.data('group');
347 141 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
@@ -347,12 +141,8 @@
347 141 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
348 142 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
349 143
350 144 let status = groupCheckbox.is(':checked') ? 1 : 0;
351 -
352 - EasyupdateEnableAllText(groupCheckbox);
353 -
354 -
355 145 groupWrapper.find('.easyel-extension-toggle').each(function () {
356 146 let checkbox = $(this);
357 147 if (checkbox.closest('.easyel-extension-item').hasClass('easyel-pro-enable')) return;
358 148 checkbox.prop('checked', status === 1);
@@ -359,14 +149,8 @@
359 149 });
360 150
361 151 hiddenField.val(status);
362 152
363 - let mainWrap = $('.easyel-plugin-main-settings-page');
364 - let indicator = mainWrap.find('.easyel-saving-indicator');
365 -
366 - indicator.text('Saving...');
367 - mainWrap.addClass('is-saving');
368 -
369 153 let keys = [];
370 154 groupWrapper.find('.easyel-extension-toggle').each(function() { keys.push($(this).data('key')); });
371 155 if (keys.length) {
372 156 $.post(ajaxurl, {
@@ -375,34 +159,10 @@
375 159 keys: keys,
376 160 status: status,
377 161 group: groupSlug,
378 162 nonce: easyElementsData.widget_settings_nonce
379 - }).done(function(response) {
380 - if (response.success) {
381 - indicator.text('Saved');
382 - } else {
383 - indicator.text('Failed');
384 - }
385 -
386 - setTimeout(function() {
387 - mainWrap.removeClass('is-saving');
388 - indicator.text('Saving...');
389 - }, 500 );
390 - })
391 - .fail(function() {
392 - indicator.text('Failed');
393 - setTimeout(function() {
394 - mainWrap.removeClass('is-saving');
395 - indicator.text('Saving...');
396 - }, 700);
397 163 });
398 164 }
399 - else {
400 - setTimeout(function() {
401 - mainWrap.removeClass('is-saving');
402 - indicator.text('Saving...');
403 - }, 500);
404 - }
405 165 });
406 166 },
407 167
408 168 easyEltab: function() {
@@ -409,8 +169,12 @@
409 169 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a').on('click', function (e) {
410 170 const href = $(this).attr('href');
411 171 const isDashboardPage = window.location.href.includes('page=easy-elements-dashboard');
412 172
173 + if (href.includes('page=easy-elements-license')) {
174 + return;
175 + }
176 +
413 177 if (isDashboardPage && href.includes('#')) {
414 178 e.preventDefault();
415 179
416 180 let tab = 'overview';
@@ -415,9 +179,8 @@
415 179
416 180 let tab = 'overview';
417 181 if (href.includes('#widget')) tab = 'widget';
418 182 if (href.includes('#extensions')) tab = 'extensions';
419 - if (href.includes('#activate_license')) tab = 'activate_license';
420 183
421 184 activateTab(tab);
422 185 history.replaceState(null, null, '#' + tab);
423 186 }
@@ -429,8 +192,16 @@
429 192
430 193 $('.easyel-nav-tab').click(function (e) {
431 194 const tab = $(this).data('tab');
432 195
196 + if (tab === 'activate_license') {
197 + const url = $(this).attr('href');
198 + if (url) {
199 + window.location.href = url;
200 + }
201 + return;
202 + }
203 +
433 204 e.preventDefault();
434 205 activateTab(tab);
435 206 history.replaceState(null, null, '#' + tab);
436 207 });
@@ -443,9 +214,8 @@
443 214 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu li').removeClass('current');
444 215 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a[href*="#' + tab + '"]').parent().addClass('current');
445 216 }
446 217 },
447 -
448 218 easyElFilter: function() {
449 219 $(".easyel-action-btn").on("click", function() {
450 220 var filter = $(this).data("filter");
451 221 $(".easyel-action-btn").removeClass("active");
@@ -504,82 +274,8 @@
504 274 }
505 275 });
506 276 };
507 277 },
508 -
509 - easyel_notify: function(message, type = 'success', duration = 3000) {
510 - const toast = document.createElement('div');
511 - toast.className = `easyel-toast ${type}`;
512 - toast.innerText = message;
513 -
514 - document.body.appendChild(toast);
515 -
516 - // Show animation
517 - setTimeout(() => toast.classList.add('show'), 50);
518 -
519 - // Auto remove after duration
520 - setTimeout(() => {
521 - toast.classList.remove('show');
522 - setTimeout(() => toast.remove(), 300);
523 - }, duration);
524 - },
525 -
526 - initSettings: function() {
527 - $('#easyel-settings-save').click(function (e) {
528 - e.preventDefault();
529 -
530 - let dataArr = $('#easyel-settings-form').serializeArray();
531 - let settings = {};
532 -
533 - dataArr.forEach(field => {
534 - let name = field.name;
535 - let value = field.value;
536 -
537 - // Detect nested name e.g. fb_config[page_id]
538 - if (name.includes('[')) {
539 - let mainKey = name.split('[')[0]; // fb_config
540 - let subKey = name.match(/\[(.*?)\]/)[1]; // page_id
541 -
542 - if (!settings[mainKey]) settings[mainKey] = {}; // init object
543 - settings[mainKey][subKey] = value; // assign value
544 - } else {
545 - // simple field (no nested)
546 - settings[name] = value;
547 - }
548 - });
549 -
550 - $.ajax({
551 - url: ajaxurl,
552 - type: "POST",
553 - data: {
554 - action: "easyel_save_user_data",
555 - security: easyElementsData.nonce,
556 - settings: settings
557 - },
558 - beforeSend: function () {
559 - $('#easyel-settings-save')
560 - .text("Saving...")
561 - .prop("disabled", true);
562 - },
563 - success: function(res){
564 - $('#easyel-settings-save')
565 - .text('Save Settings')
566 - .prop('disabled', false);
567 -
568 - if(res.success){
569 - EasyElementsAdmin.easyel_notify(res.data.message, 'success');
570 - } else {
571 - EasyElementsAdmin.easyel_notify('Error saving settings.', 'error');
572 - }
573 - },
574 - error: function(){
575 - EasyElementsAdmin.easyel_notify('AJAX error!', 'error');
576 - $('#easyel-settings-save').text('Save Settings').prop('disabled', false);
577 - }
578 - });
579 -
580 - });
581 - },
582 278 };
583 279
584 280 $(document).ready(function() {
585 281 EasyElementsAdmin.init();
@@ -585,116 +281,6 @@
585 281 EasyElementsAdmin.init();
586 282 });
587 283
588 284 window.EasyElementsAdmin = EasyElementsAdmin;
589 -
590 - $(document).ready(function ($) {
591 -
592 - function hideEmptyGroups() {
593 -
594 - $('.easyel-widgets-grid').each(function () {
595 - var wrapper = $(this);
596 -
597 - var items = wrapper.find('.easy-widget-item');
598 -
599 - var visibleItems = items.filter(function () {
600 - return $(this).css('display') !== 'none';
601 - }).length;
602 -
603 - var headingGroup = wrapper.prev('.easyel-widget-heading-group');
604 -
605 - if (visibleItems === 0) {
606 - headingGroup.hide();
607 - } else {
608 - headingGroup.show();
609 - }
610 - });
611 - }
612 -
613 - hideEmptyGroups();
614 -
615 - $(document).on('click', '.easyel-action-btn', function () {
616 - setTimeout(hideEmptyGroups, 50);
617 - });
618 -
619 - });
620 -
621 -
622 - $(document).ready(function() {
623 -
624 - $('.easyel-scroll-smoother-popup-setting').on('click', function(e) {
625 - e.preventDefault();
626 -
627 - $('.easyel-smooth-scroll-popup').addClass('active');
628 - $('html').addClass('popup-opened');
629 - });
630 -
631 - $('.easyel-smooth-scroll-popup-close-icon').on('click', function(e) {
632 - e.preventDefault();
633 - $('.easyel-smooth-scroll-popup').removeClass('active');
634 - $('html').removeClass('popup-opened');
635 - });
636 - });
637 -
638 - function easyelDisplayMessage(message, type = 'success') {
639 - let messageBox = $('#easyel-message-box');
640 -
641 - if (type === 'success') {
642 - messageBox.html('<p class="easyel-saved-success-message">' + message + '</p>').fadeIn().delay(1500).fadeOut();
643 - }
644 - }
645 -
646 - $(document).ready(function($){
647 -
648 - var $form = $('.easyel-smooth-scroll-settings-main-wrapper');
649 - var $saveButton = $('.smooth_scroll_popup_item_save');
650 -
651 - $saveButton.prop('disabled', true);
652 -
653 - $form.on('input change', 'input, select', function() {
654 - $saveButton.prop('disabled', false).val('Save Changes');
655 - });
656 -
657 - $(document).on('click', '.smooth_scroll_popup_item_save', function(event){
658 - event.preventDefault();
659 -
660 - var saveButton = $(this);
661 -
662 - saveButton.prop('disabled', true).val('Saving...');
663 -
664 - var settings = {
665 - smooth_scroll_speed: $('input[name="smooth_scroll_speed"]').val(),
666 - smooth_scroll_normalize: $('input[name="smooth_scroll_normalize"]').is(':checked') ? 1 : 0,
667 - smooth_scroll_enable_mobile: $('input[name="smooth_scroll_enable_mobile"]').is(':checked') ? 1 : 0,
668 - smooth_scroll_disable_editor_mode: $('input[name="smooth_scroll_disable_editor_mode"]').is(':checked') ? 1 : 0,
669 - enable_smooth_scroller: $('input[data-key="enable_smooth_scroller"]').is(':checked') ? 1 : 0
670 - };
671 -
672 - // AJAX call
673 - $.ajax({
674 - url: ajaxurl,
675 - type: 'POST',
676 - dataType: 'json',
677 - data: {
678 - action: 'save_smooth_scroll_settings',
679 - nonce: easyElementsData.nonce,
680 - settings: settings
681 - },
682 - success: function(response){
683 - if(response.success){
684 - easyelDisplayMessage('All settings saved', 'success');
685 - saveButton.val('Saved All Data').prop('disabled', true);
686 - } else {
687 - easyelDisplayMessage('Error saving settings', 'error');
688 - saveButton.val('Save Changes').prop('disabled', false);
689 - }
690 - },
691 - error: function(jqXHR, textStatus, errorThrown){
692 - console.log('AJAX error:', textStatus, errorThrown);
693 - easyelDisplayMessage('AJAX error: ' + textStatus, 'error');
694 - saveButton.val('Save Changes').prop('disabled', false);
695 - }
696 - });
697 - });
698 - });
699 285
700 286 })(jQuery);