PluginProbe
Easy Elements for Elementor – Addons & Website Templates / 1.2.8
Easy Elements for Elementor – Addons & Website Templates v1.2.8
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
easy-elements / assets / js / admin.js

admin.js in Easy Elements for Elementor – Addons & Website Templates 1.2.8, at assets/js/admin.js

701 lines 26.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2 'use strict';
3
4 var EasyElementsAdmin = {
5
6 init: function() {
7 this.initWidgetToggles();
8 this.initSearchFunctionality();
9 this.initBulkActions();
10 this.initAllExtensions();
11 this.easyEltab();
12 this.easyElFilter();
13 this.easyelVideoPopuo();
14 this.easyelFaq();
15 this.initSettings();
16 this.EasyelWidgetGroupEnable();
17 },
18
19 initWidgetToggles: function() {
20
21 $('.easy-widget-item.easyel-pro-enable .widget-toggle-checkbox').each(function() {
22 $(this).prop('checked', false).prop('disabled', true);
23 });
24
25
26 $('.widget-toggle-checkbox').on('change', function () {
27
28 var checkbox = $(this);
29 var widgetItem = checkbox.closest('.easy-widget-item');
30 var mainWrap = $('.easyel-plugin-main-settings-page');
31 var indicator = mainWrap.find('.easyel-saving-indicator');
32
33 if (widgetItem.hasClass('easyel-pro-enable')) {
34 checkbox.prop('checked', false).prop('disabled', true);
35 return false;
36 }
37
38 var widgetKey = checkbox.data('widget-key');
39 var status = checkbox.is(':checked') ? '1' : '0';
40
41 if (!widgetKey) return;
42
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'));
76 }
77 });
78 });
79
80
81
82
83 },
84
85 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 $('#element-search').on('input', function() {
109 var searchTerm = $(this).val().toLowerCase();
110
111 $('.easy-widget-item').each(function() {
112 var widgetTitle = $(this).find('.widget-header strong').text().toLowerCase();
113 var widgetDesc = $(this).find('.widget-description').text().toLowerCase();
114
115 if (widgetTitle.includes(searchTerm) || widgetDesc.includes(searchTerm)) {
116 $(this).show();
117 } else {
118 $(this).hide();
119 }
120 });
121
122 hideEmptyGroups();
123 });
124
125 hideEmptyGroups();
126 },
127
128
129 initBulkActions: function() {
130 $('#activate-all-btn').on('click', function() {
131 var currentTab = $('.easyel-nav-tab-active').data('tab');
132 EasyElementsAdmin.performBulkAction('activate_all', currentTab);
133 });
134
135 $('#deactivate-all-btn').on('click', function() {
136 EasyElementsAdmin.performBulkAction('deactivate_all');
137 });
138 },
139
140 performBulkAction: function(action) {
141
142 var currentTab = $('.easyel-nav-tab-active').data('tab');
143 var currentFilter = $('.easyel-action-btn.active').data('filter');
144 var btn = action === 'activate_all' ? $('#activate-all-btn') : $('#deactivate-all-btn');
145 var originalText = btn.text();
146
147 let mainWrap = $('.easyel-plugin-main-settings-page');
148 let indicator = mainWrap.find('.easyel-saving-indicator');
149
150 btn.prop('disabled', true).text(easyElementsData.strings.processing);
151
152 indicator.text('Saving...');
153 mainWrap.addClass('is-saving');
154
155 $.post(ajaxurl, {
156 action: 'easy_elements_bulk_action',
157 bulk_action: action,
158 tab: currentTab,
159 filter: currentFilter,
160 nonce: easyElementsData.bulk_action_nonce
161 })
162 .done(function(response) {
163
164 if (response.success) {
165
166 $('.widget-toggle-checkbox').each(function() {
167 var $checkbox = $(this);
168 let item = $checkbox.closest('.easy-widget-item');
169
170 if ($checkbox.data('tab') !== currentTab) {
171 return;
172 }
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 });
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 }
217 })
218 .fail(function() {
219 // Error fallback
220 mainWrap.removeClass('is-saving');
221 })
222 .always(function() {
223 btn.prop('disabled', false).text(originalText);
224 });
225 },
226
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 initAllExtensions: function() {
288 let $extensionsTab = $('.easyel-tab-panel.extensions');
289
290 $('.easyel-extension-toggle').on('change', function () {
291 let checkbox = $(this);
292 let key = checkbox.data('key');
293 let tab = checkbox.data('tab');
294 let status = checkbox.is(':checked') ? 1 : 0;
295
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 $.post(ajaxurl, {
303 action: 'easy_elements_save_global_extensions',
304 tab: tab,
305 key: key,
306 status: status,
307 nonce: easyElementsData.widget_settings_nonce
308 })
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 .fail(function () {
323 mainWrap.removeClass('is-saving');
324 checkbox.prop('checked', !checkbox.is(':checked'));
325 });
326 });
327
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 $extensionsTab.on('change', '.easyel-group-toggle', function () {
345 let groupCheckbox = $(this);
346 let groupSlug = groupCheckbox.data('group');
347 let groupWrapper = $('.easyel-extension-wrapper[data-group="' + groupSlug + '"]');
348 let hiddenField = $('input.easyel-group-hidden[name="easy_element_group_' + groupSlug + '"]');
349
350 let status = groupCheckbox.is(':checked') ? 1 : 0;
351
352 EasyupdateEnableAllText(groupCheckbox);
353
354
355 groupWrapper.find('.easyel-extension-toggle').each(function () {
356 let checkbox = $(this);
357 if (checkbox.closest('.easyel-extension-item').hasClass('easyel-pro-enable')) return;
358 checkbox.prop('checked', status === 1);
359 });
360
361 hiddenField.val(status);
362
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 let keys = [];
370 groupWrapper.find('.easyel-extension-toggle').each(function() { keys.push($(this).data('key')); });
371 if (keys.length) {
372 $.post(ajaxurl, {
373 action: 'easy_elements_save_global_extensions_bulk',
374 tab: 'extensions',
375 keys: keys,
376 status: status,
377 group: groupSlug,
378 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 });
398 }
399 else {
400 setTimeout(function() {
401 mainWrap.removeClass('is-saving');
402 indicator.text('Saving...');
403 }, 500);
404 }
405 });
406 },
407
408 easyEltab: function() {
409 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a').on('click', function (e) {
410 const href = $(this).attr('href');
411 const isDashboardPage = window.location.href.includes('page=easy-elements-dashboard');
412
413 if (isDashboardPage && href.includes('#')) {
414 e.preventDefault();
415
416 let tab = 'overview';
417 if (href.includes('#widget')) tab = 'widget';
418 if (href.includes('#extensions')) tab = 'extensions';
419 if (href.includes('#activate_license')) tab = 'activate_license';
420
421 activateTab(tab);
422 history.replaceState(null, null, '#' + tab);
423 }
424 });
425
426 let hash = window.location.hash.substring(1);
427 if (hash) activateTab(hash);
428 else activateTab('overview');
429
430 $('.easyel-nav-tab').click(function (e) {
431 const tab = $(this).data('tab');
432
433 e.preventDefault();
434 activateTab(tab);
435 history.replaceState(null, null, '#' + tab);
436 });
437
438 function activateTab(tab) {
439 $('.easyel-nav-tab').removeClass('easyel-nav-tab-active');
440 $('.easyel-nav-tab[data-tab="' + tab + '"]').addClass('easyel-nav-tab-active');
441 $('.easyel-tab-panel').hide();
442 $('#tab-' + tab).show();
443 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu li').removeClass('current');
444 $('#toplevel_page_easy-elements-dashboard ul.wp-submenu a[href*="#' + tab + '"]').parent().addClass('current');
445 }
446 },
447
448 easyElFilter: function() {
449 $(".easyel-action-btn").on("click", function() {
450 var filter = $(this).data("filter");
451 $(".easyel-action-btn").removeClass("active");
452 $(this).addClass("active");
453
454 $(".easy-widget-item,.easyel-extension-item").each(function() {
455 var $widget = $(this);
456
457 if (filter === "easyel_all") $widget.show();
458 else if (filter === "easyel_free") {
459 if ($widget.hasClass("easyel-pro-widget")) $widget.hide();
460 else $widget.show();
461 } else if (filter === "easyel_pro") {
462 if ($widget.hasClass("easyel-pro-widget")) $widget.show();
463 else $widget.hide();
464 }
465 });
466 });
467 },
468
469 easyelVideoPopuo: function() {
470 if ($(".easyel-video-popup").length ) {
471 var $popup = $('#easyel-popup-video-area'),
472 $videoContainer = $popup.find('.easyel-popup-video');
473
474 $('.easyel-video-popup').on('click', function(e){
475 e.preventDefault();
476 var videoId = $(this).attr('href').split('v=')[1].split('&')[0];
477 $videoContainer.html('<iframe src="https://www.youtube.com/embed/' + videoId + '?autoplay=1" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>');
478 $popup.fadeIn();
479 });
480
481 $popup.on('click', '.easyel-popup-close, #easyel-popup-video-area', function(e){
482 if($(e.target).is('.easyel-popup-close') || $(e.target).is('#easyel-popup-video-area')){
483 $popup.fadeOut();
484 $videoContainer.html('');
485 }
486 });
487 };
488 },
489
490 easyelFaq: function() {
491 if ($(".easyel-faq-item").length ) {
492 $(".easyel-faq-item.active").find(".easyel-faq-item-content").show();
493 $(".easyel-faq-item-heading").click(function(){
494 var faqItem = $(this).closest(".easyel-faq-item");
495 var content = faqItem.children(".easyel-faq-item-content");
496
497 if(faqItem.hasClass("active")){
498 faqItem.removeClass("active");
499 content.slideUp(300);
500 } else {
501 $(".easyel-faq-item.active").removeClass("active").children(".easyel-faq-item-content").slideUp(300);
502 faqItem.addClass("active");
503 content.slideDown(300);
504 }
505 });
506 };
507 },
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 };
583
584 $(document).ready(function() {
585 EasyElementsAdmin.init();
586 });
587
588 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
700 })(jQuery);
701