PluginProbe ʕ •ᴥ•ʔ
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI / 3.5.2
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI v3.5.2
3.5.2 3.5.1 3.5.0 3.4.8 3.4.7 3.4.6 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5.1 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.6.1 1.6.7 1.7.0 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.2 1.7.2.1 1.7.2.2 1.7.3 1.7.4 1.7.5 1.7.5.1 1.7.5.2 1.7.6 1.7.7 1.7.7.1 1.7.7.2 1.7.8 1.7.9 1.8.0 1.8.0.1 1.8.1 1.8.2 1.8.2.1 1.8.2.2 1.8.2.3 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.0.1 1.9.1 1.9.2 1.9.3 1.9.4 1.9.4.1 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.0.1 2.0.1 2.0.2 2.0.3 2.0.3.1 2.0.4 2.0.4.1 2.0.5 2.0.6 2.0.7 2.0.8 2.0.8.1 2.0.9 3.0.0 3.0.0.1 3.0.1 3.0.2 3.0.3 3.0.3.1 3.0.4 3.0.4.1 3.0.4.2 3.0.5 3.0.5.1 3.0.5.2 3.0.6 3.0.6.1 3.0.7.1 3.0.8 3.0.8.1 3.0.9 3.0.9.1 3.0.9.2 3.0.9.3 3.0.9.4 3.0.9.5 3.1.0 3.1.1 3.1.2 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.4.0 3.4.1 3.4.2 3.4.2.1 3.4.3 3.4.4 3.4.5 trunk 1.0 1.0.1 1.0.2 1.0.3
everest-forms / assets / js / admin / admin.js
everest-forms / assets / js / admin Last commit date
admin.js 3 weeks ago admin.min.js 3 weeks ago chart.js 2 years ago chart.min.js 1 year ago customize-controls.js 1 year ago customize-controls.min.js 1 year ago customize-preview.js 1 year ago customize-preview.min.js 1 year ago deactivation-feedback.js 2 years ago deactivation-feedback.min.js 2 years ago editor.js 7 years ago editor.min.js 5 years ago everest-forms-survey-polls-quiz-builder.js 2 years ago everest-forms-survey-polls-quiz-builder.min.js 2 years ago evf-admin-email.js 2 years ago evf-admin-email.min.js 1 year ago evf-clipboard.js 7 years ago evf-clipboard.min.js 7 years ago evf-enhanced-select.js 3 years ago evf-enhanced-select.min.js 2 years ago evf-file-uploader.js 1 year ago evf-file-uploader.min.js 1 year ago evf-setup.js 1 year ago evf-setup.min.js 1 year ago extensions.js 2 years ago extensions.min.js 2 years ago form-builder.js 6 days ago form-builder.min.js 6 days ago form-template-controller.js 3 years ago form-template-controller.min.js 3 years ago printThis.min.js 2 years ago progressbar.js 2 years ago progressbar.min.js 1 year ago randomColor.js 2 years ago randomColor.min.js 2 years ago settings.js 3 weeks ago settings.min.js 3 weeks ago shortcode-form-embed.js 2 years ago shortcode-form-embed.min.js 2 years ago tool-import-entries.js 2 years ago tool-import-entries.min.js 2 years ago tools.js 3 weeks ago tools.min.js 3 weeks ago upgrade.js 3 weeks ago upgrade.min.js 3 weeks ago
admin.js
1169 lines
1 /* global everest_forms_admin, PerfectScrollbar */
2 ( function( $, params ) {
3
4 function evfGetToastContainer() {
5 var $container = $('#evf-toast-container');
6
7 if (!$container.length) {
8 $container = $('<div id="evf-toast-container"></div>');
9 $('body').append($container);
10 }
11
12 return $container;
13 }
14
15 window.evfShowToast = function (message, type, duration) {
16 type = type || 'info';
17 duration = typeof duration === 'number' ? duration : 4000;
18
19 var $container = evfGetToastContainer();
20
21 var $toast = $(
22 '<div class="evf-toast evf-toast-' +
23 type +
24 '">' +
25 '<button type="button" class="evf-toast-close" aria-label="Close">&times;</button>' +
26 '<div class="evf-toast-content"></div>' +
27 '</div>',
28 );
29
30 $toast.find('.evf-toast-content').text(message);
31 $container.append($toast);
32
33 setTimeout(function () {
34 $toast.addClass('is-visible');
35 }, 10);
36
37 if (duration > 0) {
38 setTimeout(function () {
39 hideToast($toast);
40 }, duration);
41 }
42
43 $toast.on('click', '.evf-toast-close', function () {
44 hideToast($toast);
45 });
46
47 function hideToast($el) {
48 $el.removeClass('is-visible');
49 setTimeout(function () {
50 $el.remove();
51 }, 250);
52 }
53 };
54
55 // Colorpicker.
56 $( document ).on( 'click', '.everest-forms-field.everest-forms-field-rating', function() {
57 $( '.everest-forms-field-option-row-icon_color input.evf-colorpicker' ).wpColorPicker({
58 change: function( event ) {
59 var $this = $( this ),
60 value = $this.val(),
61 id = $this.closest( '.everest-forms-field-option-row' ).data( 'field-id' ),
62 $icons = $( '#everest-forms-field-'+id +' .rating-icon svg' );
63 $icons.css( 'fill', value );
64 }
65 });
66 });
67
68 /**
69 * Handle to open he upgrade to pro link in a new tab.
70 *
71 * @since 3.0.9.4
72 */
73 $('#toplevel_page_everest-forms .wp-submenu li').each(function() {
74 var link = $(this).find('a');
75 if (link.text().trim() === 'Upgrade to Pro') {
76 link.attr('target', '_blank');
77 }
78 });
79
80 $('.evf-search input[type="search"]').on('keypress', function (e) {
81 if (e.which === 13) {
82 e.preventDefault();
83 $(this).closest('form').submit();
84 }
85 });
86
87 // Function to handle changes in the reporting frequency while sending the entries stat report.
88 $(document).ready(function () {
89 var urlParams = new URLSearchParams(window.location.search);
90 var toastMessage = urlParams.get('evf_toast');
91 var toastType = urlParams.get('evf_toast_type') || 'success';
92
93 if (toastMessage) {
94 try {
95 window.evfShowToast(
96 atob(decodeURIComponent(toastMessage)),
97 toastType,
98 5000,
99 );
100
101 urlParams.delete('evf_toast');
102 urlParams.delete('evf_toast_type');
103
104 try {
105 window.history.replaceState(
106 {},
107 document.title,
108 window.location.pathname +
109 (urlParams.toString() ? '?' + urlParams.toString() : ''),
110 );
111 } catch (historyError) {
112 // Ignore SecurityError when admin URL host differs from the browser (e.g. ngrok).
113 }
114 } catch (e) {}
115 }
116
117 var $evfNotice = $('#setting-error-bulk_action.notice');
118
119 if ($evfNotice.length) {
120 var toastType = 'info';
121
122 if (
123 $evfNotice.hasClass('notice-success') ||
124 $evfNotice.hasClass('updated')
125 ) {
126 toastType = 'success';
127 } else if (
128 $evfNotice.hasClass('notice-error') ||
129 $evfNotice.hasClass('error')
130 ) {
131 toastType = 'error';
132 } else if ($evfNotice.hasClass('notice-warning')) {
133 toastType = 'warning';
134 }
135
136 var message = $evfNotice.find('p').text().trim();
137
138 if (message) {
139 $evfNotice.remove();
140 window.evfShowToast(message, toastType, 5000);
141 }
142 }
143
144 function handleReportingFrequencyChange() {
145 var everest_forms_entries_reporting_frequency = $(
146 '#everest_forms_entries_reporting_frequency',
147 ).val();
148 if ('Weekly' !== everest_forms_entries_reporting_frequency) {
149 $('#everest_forms_entries_reporting_day')
150 .closest('.everest-forms-global-settings')
151 .hide();
152 } else {
153 $('#everest_forms_entries_reporting_day')
154 .closest('.everest-forms-global-settings')
155 .show();
156 }
157 }
158
159 // Execute the function on page load
160 handleReportingFrequencyChange();
161
162 //Entries tab
163 var $wrapper = $('.evf-entries-tab-wrapper');
164
165 if ($wrapper.length) {
166 // Click handler.
167 $wrapper.on('click', '.evf-tab-nav__btn', function () {
168 var $btn = $(this);
169 var target = $btn.data('tab');
170
171 $('.evf-tab-nav__btn', $wrapper)
172 .removeClass('evf-tab--active')
173 .attr('aria-selected', 'false');
174
175 $btn.addClass('evf-tab--active').attr('aria-selected', 'true');
176
177 $('.evf-tab-panel', $wrapper)
178 .removeClass('evf-tab-panel--active')
179 .attr('hidden', true);
180
181 $('#' + target, $wrapper)
182 .addClass('evf-tab-panel--active')
183 .removeAttr('hidden');
184
185 $(window).trigger('resize');
186 });
187
188
189 $('.evf-tab-nav__btn', $wrapper).first().trigger('click');
190 }
191
192 $(document).on(
193 'change click',
194 '#everest_forms_entries_reporting_frequency',
195 handleReportingFrequencyChange,
196 );
197
198 $(document).ready(function () {
199 $(document).on('change', '#filter-by-form', function () {
200 var $form = $(this).val();
201 var url = new URL(window.location.href);
202
203 if ($form !== '') {
204 url.searchParams.set('form_id', $form);
205 } else {
206 url.searchParams.delete('form_id');
207 }
208 window.location.href = url.toString();
209 });
210
211 $(document).on(
212 'select2:select select2:unselect',
213 '#filter-by-form',
214 function () {
215 $(this).trigger('change');
216 },
217 );
218 });
219
220 // Auto-submit on status dropdown change (entries page).
221 $(document).on('change', '#filter-by-status', function () {
222 var $form = $(this).closest('form');
223 var status = $(this).val();
224 var $search = $form.find('input[name="s"]');
225
226 $form.find('input[name="status"]').remove();
227
228 $form.find('select[name="action"]').val('-1');
229 $form.find('select[name="action2"]').val('-1');
230
231 $form.find('input[name="bulk_action"]').prop('disabled', true);
232
233 if (status !== '') {
234 $form.append(
235 '<input type="hidden" name="status" value="' + status + '" />'
236 );
237 }
238
239 if ($search.length && !$search.val().trim()) {
240 $search.prop('disabled', true);
241 }
242 $(this).prop('disabled', true);
243
244 $form.submit();
245 });
246
247 $(document).on('change', '#filter-by-form-status', function () {
248 var status = $(this).val();
249 var url = new URL(window.location.href);
250
251 if (status !== '') {
252 url.searchParams.set('status', status);
253 } else {
254 url.searchParams.delete('status');
255 }
256
257 url.searchParams.set('page', 'evf-builder');
258
259 url.searchParams.delete('paged');
260
261 window.location.href = url.toString();
262 });
263
264 $('#evf-form-listing__screen-options').on('click', function () {
265 $('#show-settings-link').click();
266 });
267 });
268
269 // Function to handle changes in the premium sidebar.
270 $(document).ready(function () {
271 function handlePremiumSidebar() {
272 var isCheckboxChecked = $('#everest-forms-enable-premium-sidebar').is(':checked');
273 localStorage.setItem('isPremiumSidebarEnabled', isCheckboxChecked);
274 document.cookie = 'isPremiumSidebarEnabled=' + isCheckboxChecked + '; path=/;';
275 if (isCheckboxChecked) {
276 $('body').removeClass('evf-premium-sidebar-hidden').addClass('evf-premium-sidebar-show');
277 $('.everest-forms-toggle-text').text('Hide Sidebar');
278 } else {
279 $('body').removeClass('evf-premium-sidebar-show').addClass('evf-premium-sidebar-hidden');
280 $('.everest-forms-toggle-text').text('Show Sidebar');
281 }
282 }
283 $(document).on('change', '#everest-forms-enable-premium-sidebar', handlePremiumSidebar);
284
285 });
286
287
288 // Enable Perfect Scrollbar.
289 $( document ).on( 'init_perfect_scrollbar', function() {
290 var nav_wrapper = $( 'nav.evf-nav-tab-wrapper' );
291
292 if ( nav_wrapper.length >= 1 ) {
293 window.evf_nav_ps = new PerfectScrollbar( 'nav.evf-nav-tab-wrapper', {
294 suppressScrollY : true,
295 useBothWheelAxes: true,
296 wheelPropagation: true
297 });
298 }
299 });
300
301 // Update Perfect Scrollbar.
302 window.addEventListener( 'resize orientationchange', function() {
303 var resizeTimer,
304 nav_wrapper = $( 'nav.evf-nav-tab-wrapper' );
305
306 if ( nav_wrapper.length >= 1 ) {
307 clearTimeout( resizeTimer );
308 resizeTimer = setTimeout( function() {
309 window.evf_nav_ps.update();
310 }, 400 );
311 }
312 });
313
314 // Trigger Perfect Scrollbar.
315 $( document ).ready( function( $ ) {
316 if ( 'undefined' !== typeof PerfectScrollbar ) {
317 $( document ).trigger( 'init_perfect_scrollbar' );
318 }
319 });
320
321 // Field validation error tips.
322 $( document.body )
323
324 .on( 'evf_add_error_tip', function( e, element, error_type, locale ) {
325 var offset = element.position();
326
327 if ( element.parent().find( '.evf_error_tip' ).length === 0 ) {
328 element.after( '<div class="evf_error_tip ' + error_type + '">' + locale[error_type] + '</div>' );
329 element.parent().find( '.evf_error_tip' )
330 .css( 'left', offset.left + element.width() - ( element.width() / 2 ) - ( $( '.evf_error_tip' ).width() / 2 ) )
331 .css( 'top', offset.top + element.height() )
332 .fadeIn( '100' );
333 }
334 })
335
336 .on( 'evf_remove_error_tip', function( e, element, error_type ) {
337 element.parent().find( '.evf_error_tip.' + error_type ).fadeOut( '100', function() { $( this ).remove(); } );
338 })
339
340 .on( 'click', 'input:not([type=number])', function() {
341 $( '.evf_error_tip' ).fadeOut( '100', function() { $( this ).remove(); } );
342 })
343
344 .on( 'blur', '.evf-input-meta-key[type=text], .evf-input-number[type=number]', function() {
345 $( '.evf_error_tip' ).fadeOut( '100', function() { $( this ).remove(); } );
346 })
347
348 .on( 'change', '.evf-input-meta-key[type=text], .evf-input-number[type=number]', function() {
349 var regex;
350
351 if ( $( this ).is( '.evf-input-number' ) ) {
352 regex = new RegExp( '[^-0-9]+', 'gi' );
353 } else {
354 regex = new RegExp( '[^a-z0-9_\-]+', 'gi' );
355 }
356
357 var value = $( this ).val();
358 var newvalue = value.replace( regex, '' );
359
360 if ( value !== newvalue ) {
361 $( this ).val( newvalue );
362 }
363 })
364
365 .on( 'keyup', '.evf-input-meta-key[type=text]', function() {
366 var regex, error;
367
368 if ( $( this ).is( '.evf-input-meta-key' ) ) {
369 regex = new RegExp( '[^a-z0-9_\-]+', 'gi' );
370 error = 'i18n_field_meta_key_error';
371 }
372
373 var value = $( this ).val();
374 var newvalue = value.replace( regex, '' );
375
376 if ( value !== newvalue ) {
377 $( document.body ).triggerHandler( 'evf_add_error_tip', [ $( this ), error, params ] );
378 } else {
379 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $( this ), error ] );
380 }
381 })
382
383 .on( 'keyup focus', '.evf-input-number[type=number]', function() {
384 var fieldId = $( this ).parent().data( 'fieldId' ) ? $( this ).parent().data( 'fieldId' ) : $( this ).closest( '.everest-forms-field-option-row' ).data( 'field-id' );
385 var maxField = $( "input#everest-forms-field-option-"+fieldId+"-max_value" );
386 var minField = $( "input#everest-forms-field-option-"+fieldId+"-min_value" );
387 var maxVal = maxField.val();
388 var minVal = minField.val();
389
390 if ( 0 !== minVal.length && 0 !== maxVal.length ) {
391 if ( parseFloat( minVal ) > parseFloat( maxVal ) ) {
392 if( $( this ).attr( 'id' ).indexOf( 'min_value' ) !== -1 ) {
393 $( document.body ).triggerHandler( 'evf_add_error_tip', [ $( this ), 'i18n_field_min_value_greater', params ] );
394 } else {
395 $( document.body ).triggerHandler( 'evf_add_error_tip', [ $( this ), 'i18n_field_max_value_smaller', params ] );
396 }
397 } else {
398 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $( this ), 'i18n_field_max_value_smaller' ] );
399 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $( this ), 'i18n_field_min_value_greater' ] );
400 }
401 }
402 })
403
404 .on('keydown click','.evf-max-file-number[type=number]', function(e) {
405 if( !( ( e.keyCode > 95 && e.keyCode < 106 )
406 || ( e.keyCode > 47 && e.keyCode < 58 )
407 || e.keyCode == 8 ) ) {
408 return false;
409 }
410 })
411
412 .on( 'focusout','.evf-input-number[type=number]', function(e) {
413 var fieldId = $( this ).parent().data( 'fieldId' ) ? $( this ).parent().data( 'fieldId' ) : $( this ).closest( '.everest-forms-field-option-row' ).data( 'field-id' );
414 var maxField = $( "input#everest-forms-field-option-"+fieldId+"-max_value" );
415 var minField = $( "input#everest-forms-field-option-"+fieldId+"-min_value" );
416 var maxVal = parseFloat( maxField.val() );
417 var minVal = parseFloat( minField.val() );
418
419 if ( minVal > maxVal || ( '' === maxField.val() && '' !== minField.val() ) ) {
420 maxField.val( minVal + 1 );
421 }
422 })
423
424 .on('click','.everest-forms-field-number, .everest-forms-field-range-slider', function(e) {
425 var $this = $(this);
426 var id = $this.data('field-id');
427 $(document).on('keydown click',"#everest-forms-field-option-"+ id +"-default_value",function(e){
428 if( !( ( e.keyCode > 95 && e.keyCode < 106 )
429 || ( e.keyCode > 47 && e.keyCode < 58 )
430 || e.keyCode == 8 ) ) {
431 return false;
432 }
433 })
434
435 $(document).on( 'keyup focus',"#everest-forms-field-option-"+ id +"-default_value",function( e ){
436 var fieldId = $( this ).parent().data( 'fieldId' ) ? $( this ).parent().data( 'fieldId' ) : $( this ).closest( '.everest-forms-field-option-row' ).data( 'field-id' );
437 var maxField = $( "input#everest-forms-field-option-"+fieldId+"-max_value" );
438 var minField = $( "input#everest-forms-field-option-"+fieldId+"-min_value" );
439 var maxVal = maxField.val();
440 var minVal = minField.val();
441 var defVal = e.target.value;
442 var $this = $( this );
443
444 if ( 0 !== minVal.length ) {
445
446 if( 0 !== maxVal.length && parseFloat( defVal ) > parseFloat( maxVal ) ) {
447 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $this, 'i18n_field_def_value_smaller' ] );
448 $( document.body ).triggerHandler( 'evf_add_error_tip', [ $this, 'i18n_field_def_value_greater', params ] );
449 } else {
450 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $this, 'i18n_field_def_value_greater' ] );
451 }
452
453 if( 0 !== defVal.length && parseFloat( defVal ) < parseFloat( minVal ) ) {
454 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $this, 'i18n_field_def_value_greater' ] );
455 $( document.body ).triggerHandler( 'evf_add_error_tip', [ $this, 'i18n_field_def_value_smaller', params ] );
456 } else {
457 $( document.body ).triggerHandler( 'evf_remove_error_tip', [ $this, 'i18n_field_def_value_smaller' ] );
458 }
459 }
460 })
461
462 .on( 'focusout', "#everest-forms-field-option-"+ id +"-default_value", function(e) {
463 var fieldId = $( this ).parent().data( 'fieldId' ) ? $( this ).parent().data( 'fieldId' ) : $( this ).closest( '.everest-forms-field-option-row' ).data( 'field-id' );
464 var maxField = $( "input#everest-forms-field-option-"+fieldId+"-max_value" );
465 var minField = $( "input#everest-forms-field-option-"+fieldId+"-min_value" );
466 var maxVal = parseFloat( maxField.val() );
467 var minVal = parseFloat( minField.val() );
468 var defVal = parseFloat( e.target.value );
469
470 if ( minVal > defVal || maxVal < defVal ) {
471 e.target.value = '';
472 }
473 })
474 })
475
476 .on('click','.everest-forms-field-payment-quantity', function(e) {
477 var $this = $(this);
478 var id = $this.data('field-id');
479 $(document).on('keydown click',"#everest-forms-field-option-"+ id +"-default_value",function(e){
480 if( !( ( e.keyCode > 95 && e.keyCode < 106 )
481 || ( e.keyCode > 47 && e.keyCode < 58 )
482 || e.keyCode == 8 ) ) {
483 return false;
484 }
485 })
486 })
487
488 .on( 'init_tooltips', function() {
489 $( '.tips, .help_tip, .everest-forms-help-tip, .everest-forms-help-tooltip, .everest-forms-icon' ).tooltipster( {
490 maxWidth: 200,
491 multiple: true,
492 interactive: true,
493 trigger:'custom',
494 triggerOpen: {
495 mouseenter: true,
496 click: true,
497 tap: true
498 },
499 triggerClose: {
500 mouseleave: true,
501 click: true,
502 tap: true
503 },
504 position: 'bottom',
505 contentAsHTML: true,
506 updateAnimation: false,
507 restoration: 'current',
508 functionInit: function( instance, helper ) {
509 var $origin = $( helper.origin ),
510 dataTip = $origin.attr( 'data-tip' );
511
512 if ( dataTip ) {
513 instance.content( dataTip );
514 }
515 }
516 } );
517 });
518
519 // Dynamic live binding on newly created elements.
520 $( 'body' ).on( 'mouseenter', '.evf-content-email-settings-inner .everest-forms-help-tooltip:not(.tooltipstered)', function() {
521 $( this ).tooltipster({
522 maxWidth: 200,
523 multiple: true,
524 interactive: true,
525 position: 'bottom',
526 contentAsHTML: true,
527 updateAnimation: false,
528 trigger:'custom',
529 triggerOpen: {
530 mouseenter: true,
531 click: true,
532 tap: true
533 },
534 triggerClose: {
535 mouseleave: true,
536 click: true,
537 tap: true
538 },
539 restoration: 'current',
540 functionInit: function( instance, helper ) {
541 var $origin = $( helper.origin ),
542 dataTip = $origin.attr( 'data-tip' );
543 if ( dataTip ) {
544 instance.content( dataTip );
545 }
546 }
547 });
548 $( this ).tooltipster( 'open' );
549 });
550
551 $( document ).on( 'click', '.everest-forms-email-add', function() {
552 $( '.evf-content-email-settings-inner .tooltipstered' ).tooltipster( 'destroy' );
553 });
554
555 $( document ).on( 'click', '.everest-forms-email-duplicate', function() {
556 $( '.evf-content-email-settings-inner .tooltipstered' ).tooltipster( 'destroy' );
557 });
558
559 // Tooltips
560 $( document.body ).trigger( 'init_tooltips' );
561
562 // Check for new form entries using Heartbeat API.
563 $( document ).on( 'heartbeat-send', function( event, data ) {
564 var $entriesList = $( '#everest-forms-entries-list' ),
565 form_id = $entriesList.find( '#entries-list' ).data( 'form-id' );
566 last_entry_id = $entriesList.find( '#entries-list' ).data( 'last-entry-id' );
567
568 // Work on entry list table page and check if last entry ID is found.
569 if ( ! $entriesList.length || typeof last_entry_id === 'undefined' ) {
570 return;
571 }
572
573 // Add custom entries data to Heartbeat data.
574 data.evf_new_entries_form_id = form_id;
575 data.evf_new_entries_last_entry_id = last_entry_id;
576 });
577
578 // Display entries list notification if Heartbeat API new form entries check is successful.
579 $( document ).on( 'heartbeat-tick', function ( event, data ) {
580 var $entriesList = $( '#everest-forms-entries-list' ),
581 columnsCount = $entriesList.find( '.wp-list-table thead tr:first-child > :visible' ).length;
582
583 // Work on entry list table page and check for new entry notification.
584 if ( ! $entriesList.length || ! data.evf_new_entries_notification ) {
585 return;
586 }
587
588 if ( ! $entriesList.find( '.new-entries-notification' ).length ) {
589 $entriesList.find( '.wp-list-table thead' ).append( '<tr class="new-entries-notification"><td colspan="' + columnsCount + '"><a href="#new" onClick="window.location.reload(true);"></a></td></tr>' );
590 }
591
592 $entriesList
593 .find( '.new-entries-notification a' )
594 .text( data.evf_new_entries_notification )
595 .slideDown( {
596 duration : 500,
597 start : function () {
598 $( this ).css( {
599 display: 'block'
600 } );
601 }
602 } );
603 });
604
605 // To play welcome video.
606 $( document ).on( 'click', '#everest-forms-welcome .welcome-video-play', function( event ) {
607 var video = '<div class="welcome-video-container"><iframe width="760" height="429" src="https://www.youtube.com/embed/N_HbZccA-Ts?rel=0&amp;showinfo=0&amp;autoplay=1" frameborder="0" allowfullscreen></iframe></div>';
608
609 event.preventDefault();
610
611 $(this).find('.everest-froms-welcome-thumb').remove();
612 $(this).append(video);
613 });
614
615 // Change span with file name when user selects a file.
616 $( '#everest-forms-import' ).on( 'change', function(e) {
617 var file = $( '#everest-forms-import' ).prop( 'files' )[0];
618
619 $( '#import-file-name' ).html( file.name );
620 });
621
622 $( '.everest-forms-export-form-action' ).on( 'click', function() {
623 var form_id = $( this ).closest( '.everest-forms-export-form' ).find( '#everest-forms-form-export' ).val();
624
625 $( this ).closest( '.everest-forms-export-form' ).find( '#message' ).remove();
626
627 if ( ! form_id ) {
628 $( this ).closest( '.everest-forms-export-form' ).find( 'h3' ).after( '<div id="message" class="error inline everest-froms-import_notice"><p><strong>' + everest_forms_admin.i18n_form_export_action_error + '</strong></p></div>' );
629 return false;
630 }
631 });
632
633 $( '.everest_forms_import_action' ).on( 'click', function() {
634 var file_data = $( '#everest-forms-import' ).prop( 'files' )[0],
635 form_data = new FormData();
636
637 form_data.append( 'jsonfile', file_data );
638 form_data.append( 'action', 'everest_forms_import_form_action' );
639 form_data.append( 'security', everest_forms_admin.ajax_import_nonce );
640
641 $.ajax({
642 url: evf_email_params.ajax_url,
643 dataType: 'json', // JSON type is expected back from the PHP script.
644 cache: false,
645 contentType: false,
646 processData: false,
647 data: form_data,
648 type: 'POST',
649 beforeSend: function () {
650 var spinner = '<i class="evf-loading evf-loading-active"></i>';
651 $( '.everest_forms_import_action' ).closest( '.everest_forms_import_action' ).append( spinner );
652 $( '.everest-froms-import_notice' ).remove();
653 },
654 complete: function( response ) {
655 var message_string = '';
656
657 $( '.everest_forms_import_action' ).closest( '.everest_forms_import_action' ).find( '.evf-loading' ).remove();
658 $( '.everest-froms-import_notice' ).remove();
659
660 if ( true === response.responseJSON.success ) {
661 message_string = '<div id="message" class="updated inline everest-froms-import_notice"><p><strong>' + response.responseJSON.data.message + '</strong></p></div>';
662 } else {
663 message_string = '<div id="message" class="error inline everest-froms-import_notice"><p><strong>' + response.responseJSON.data.message + '</strong></p></div>';
664 }
665
666 $( '.everest-forms-import-form' ).find( 'h3' ).after( message_string );
667 $( '#everest-forms-import' ).val( '' );
668 $( '#import-file-name' ).html( 'No file selected' );
669 }
670 });
671 });
672
673 // Adding active class for button group
674 $('.everest-forms-btn-group .everest-forms-btn').on('click', function() {
675 $(this).siblings().removeClass('is-active')
676 $(this).addClass('is-active');
677 })
678
679 $(document).find('.evf-form-locate').on('click', function(e) {
680 e.preventDefault();
681 var id = $(this).data('id');
682 var data = {
683 'action':'everest_forms_locate_form_action',
684 'id':id,
685 'security':everest_forms_admin_locate.ajax_locate_nonce
686 }
687 var tag = e.target;
688 var target_tag = tag.closest(".row-actions");
689 $.ajax({
690 url : everest_forms_admin_locate.ajax_url,
691 dataType: 'json', // JSON type is expected back from the PHP script.
692 cache: false,
693 data: data,
694 type: 'POST',
695 beforeSend: function () {
696 var spinner = '<i class="evf-loading evf-loading-active"></i>';
697 $(target_tag).append( spinner );
698 },
699 success: function(response) {
700 var len = Object.keys(response.data).length;
701
702 if (len > 0) {
703 var add_tag =
704 '<div class="locate-form"><span>' +
705 everest_forms_admin_locate.form_found +
706 '</span>';
707 var i = 1;
708
709 $.each(response.data, function (index, value) {
710 if (i > 1) {
711 add_tag += ', ';
712 }
713 let wordsArray = index.split(' ');
714 if (wordsArray.length > 4) {
715 let slicedArray = wordsArray.slice(0, 4);
716 index = slicedArray.join(' ') + '...';
717 }
718 add_tag +=
719 ' <a href="' + value + '" target="_blank">' + index + '</a>';
720 i++;
721 });
722
723 add_tag += '</div>';
724
725 if ($(target_tag).prev('.locate-form').length !== 0) {
726 $(target_tag).prev('.locate-form').remove();
727 }
728
729 // ⬇️ insert BEFORE .row-actions
730 $(target_tag).before(add_tag);
731 } else {
732 if ($(target_tag).prev('.locate-form').length !== 0) {
733 $(target_tag).prev('.locate-form').remove();
734 }
735
736 $(target_tag).before(
737 '<div class="locate-form"><span>' +
738 everest_forms_admin_locate.form_found_error +
739 '</span></div>',
740 );
741 }
742
743 $(target_tag).find('.evf-loading').remove();
744 }
745
746
747 })
748 });
749 //Dismiss the form migrator notice.
750 $('.evf-fm-dismiss-notice').on('click', function(e){
751 e.preventDefault();
752 var optionId = $(this).data('option-id');
753 var data = {
754 'action':'everest_forms_fm_dismiss_notice',
755 'option_id':optionId,
756 'security':everest_forms_admin_form_migrator.evf_fm_dismiss_notice_nonce,
757 }
758
759 $.ajax({
760 url: everest_forms_admin_form_migrator.ajax_url,
761 type:"POST",
762 dataType:'JSON',
763 data:data,
764 success:function(res){
765 if(res.success){
766 $('.evf-fm-notice').hide();
767 }
768 }
769 })
770 });
771 $( '.evf-smart-phone-field' ).each( function( i, el ) {
772 var $el = $( el );
773 var field_name = $el.attr( 'name' );
774 setTimeout(function() {
775 $('input[name="' + field_name + '"]').val($el.val());
776 }, 2000);
777 });
778 $('.everest-forms-system-info-setting-copy').tooltipster({
779 content: 'Copied',
780 trigger: 'click',
781 theme: 'tooltipster-noir',
782 interactive: true,
783 functionBefore: function(instance, helper) {
784 var table = $('.everest-forms-system-info-setting table')[0];
785 var range = document.createRange();
786 range.selectNode(table);
787 window.getSelection().removeAllRanges();
788 window.getSelection().addRange(range);
789 document.execCommand('copy');
790 window.getSelection().removeAllRanges();
791 }
792 });
793
794
795
796 // Search functionality in addon.
797 $(document).ready(function(){
798 $("#everest_forms_search_addons").on("keyup search", function() {
799 var value = $(this).val().toLowerCase();
800 var matchFound = false;
801
802 $(".the-list .plugin-card").each(function() {
803 var $card = $(this);
804 var text = $card.text().toLowerCase();
805
806 if (text.indexOf(value) > -1) {
807 $card.show();
808 matchFound = true;
809 } else {
810 $card.hide();
811 }
812 });
813
814 if (!matchFound) {
815 $(".refresh").hide();
816 $("#evf_addon_no_result_found").remove();
817 $(".refresh").after('<p id="evf_addon_no_result_found">No Result Found</p>');
818 } else {
819 $(".refresh").show();
820 $("#evf_addon_no_result_found").hide();
821 }
822 });
823 });
824 //Rest api settings.
825 if($('#everest_forms_enable_restapi').is(":checked")){
826 $(document).find('.evf-restapi-key-wrapper').show();
827 }else {
828 $(document).find('.evf-restapi-key-wrapper').hide();
829 }
830 $('#everest_forms_enable_restapi').on('click', function(e){
831 const {checked} = e.target;
832 if(checked) {
833 $(document).find('.evf-restapi-key-wrapper').show();
834 }else {
835 $(document).find('.evf-restapi-key-wrapper').hide();
836 }
837 });
838 $('#everest_forms_restapi_keys').on('click', function(e){
839 evfClearClipboard();
840 evfSetClipboard( $( this ).val(), $( this ) );
841 e.preventDefault();
842 }).on('aftercopy', function() {
843 $( this ).tooltipster( 'content', $( this ).attr( 'data-copied' ) ).trigger( 'mouseenter' ).on( 'mouseleave', function() {
844 var $this = $( this );
845
846 setTimeout( function() {
847 $this.tooltipster( 'content', $this.attr( 'data-tip' ) );
848 }, 5000 );
849 } );
850 });
851 $('.everest-forms-generate-api-key, .everest-forms-regenerate-api-key').on('click', function(){
852 let dataId = $(this).data('id');
853
854 let data = {
855 action: "everest_forms_generate_restapi_key",
856 security: everest_forms_admin_generate_restapi_key.ajax_restapi_key_nonce,
857 };
858 $.ajax({
859 url: everest_forms_admin_generate_restapi_key.ajax_url,
860 type: "post",
861 data:data,
862 success:(res)=>{
863 $(document).find('#' + dataId).val(res.data);
864 }
865 })
866 });
867
868
869 $( '.everest_forms_install_and_activate_smart_smtp' ).on( 'click', function() {
870 var data = {
871 action: 'everest_forms_install_and_activate_smart_smtp',
872 security: everest_forms_admin.smart_smtp_install_and_activate_nonce
873 };
874
875 try {
876 $.ajax({
877 url: everest_forms_admin.ajax_url,
878 method: 'POST',
879 data: data,
880 beforeSend: function () {
881 var spinner = '<i class="evf-loading evf-loading-active"></i>';
882 $( '.everest_forms_install_and_activate_smart_smtp' ).append( spinner );
883 },
884 success: function(response) {
885 $( '.everest_forms_install_and_activate_smart_smtp' ).find( '.evf-loading' ).remove();
886
887
888 var data = response.data;
889 var message = data.message;
890 var redirection_url = data.redirection_url;
891
892 if ('' !== message && '' !== redirection_url) {
893 $('.everest_forms_install_and_activate_smart_smtp')
894 .closest('.everest-forms-smart-smtp-page-setup__inner-wrapper')
895 .find('.everest_forms_install_and_activate_smart_smtp')
896 .removeClass('everest_forms_install_and_activate_smart_smtp everest-forms-btn-primary')
897 .addClass('everest_forms_install_and_activated_smart_smtp everest-forms-btn-secondary')
898 .css('pointer-events', 'none').
899 text('Installed and Activated SmartSMTP');
900 window.location.replace(redirection_url);
901 } else if ('' !== message && '' === redirection_url) {
902 alert(message);
903 }
904 },
905 error:function(response) {
906 $( '.everest_forms_install_and_activate_smart_smtp' ).find( '.evf-loading' ).remove();
907 var error_data = response.data;
908 var message = error_data.message;
909 alert(message);
910 window.location.reload();
911 }
912 });
913 } catch (error) {
914 $( '.everest_forms_install_and_activate_smart_smtp' ).find( '.evf-loading' ).remove();
915 alert(error);
916 window.location.reload();
917
918 }
919 });
920
921 /**
922 * Manage tags.
923 *
924 * @since 3.2.0
925 */
926 $(document).on('click', '.evf-manage-tags', function(e){
927 e.preventDefault();
928 var tags = $('#filter-by-tags').val();
929
930 if(!tags || tags.length ===0) {
931 return;
932 }
933
934 $.confirm( {
935 title: 'Delete Tags',
936 theme: 'modern',
937 type: 'red',
938 boxClass:'evf-delete-tags-popup',
939 boxWidth: '25%',
940 useBootstrap: false,
941 backgroundDismiss: true,
942 content: evf_admin_manage_tags.manage_tags_title +
943 '<br>' +
944 '<div style="color: #ff4d4f; padding-top: 20px; padding-bottom:20px">' +
945 '<i class="fa fa-exclamation-triangle" aria-hidden="true" style="margin-right: 2px;"></i>' +
946 evf_admin_manage_tags.manage_tags_desc +
947 '</div>',
948 buttons:{
949 confirm:{
950 text:'Delete',
951 btnClass:'btn-red',
952 action:function() {
953 $.ajax({
954 type: 'POST',
955 url: evf_admin_manage_tags.ajax_url,
956 data: {
957 action: 'everest_forms_delete_form_tags',
958 tags: tags,
959 security : evf_admin_manage_tags.ajax_manage_tags_nonce
960 },
961 success: function(res) {
962 //for log.
963 }
964 });
965
966 window.location.reload();
967 }
968
969 },
970 cancel:{
971 text:'Cancel',
972 btnClass:'btn-gray'
973 }
974 },
975 type: 'blue',
976 boxWidth: '565px',
977 boxHeight:'200px'
978 } );
979
980 });
981
982 var $tagsSelect = $('#filter-by-tags');
983 var $manageTagsBtn = $('.evf-manage-tags');
984
985 $manageTagsBtn.prop('disabled', !$tagsSelect.val() || $tagsSelect.val().length === 0);
986
987 $tagsSelect.on('change', function() {
988 $manageTagsBtn.prop('disabled', !$(this).val() || $(this).val().length === 0);
989 });
990
991 $('.form-tags-select2').each(function() {
992 var $select = $(this);
993 var placeholder = ($select.data('placeholder') || '').trim();
994
995 $select.select2({
996 placeholder: placeholder,
997 tags: true,
998 createTag: function(params) {
999 var term = (params.term || '').trim();
1000
1001 if (term === '') {
1002 return null;
1003 }
1004
1005 if (placeholder && term === placeholder) {
1006 return null;
1007 }
1008
1009 var exists = false;
1010 $select.find('option').each(function() {
1011 if ($(this).text().trim() === term || $(this).val().trim() === term) {
1012 exists = true;
1013 return false;
1014 }
1015 });
1016
1017 if (exists) {
1018 return null;
1019 }
1020
1021 return {
1022 id: term,
1023 text: term,
1024 isNew: true
1025 };
1026 },
1027 templateResult: function(data) {
1028 var $result = $('<span></span>');
1029 $result.text(data.text);
1030
1031 if (data.isNew) {
1032 $result.append(' <em>(new)</em>');
1033 }
1034
1035 return $result;
1036 }
1037 }).on('select2:select', function(e) {
1038 if (!e.params || !e.params.data) {
1039 return;
1040 }
1041
1042 var selectedText = (e.params.data.text || '').trim();
1043
1044 if (placeholder && selectedText === placeholder) {
1045 $select.val(null).trigger('change');
1046 return;
1047 }
1048
1049 if (e.params.data.isNew) {
1050 var newValue = selectedText;
1051
1052 $select.find('option').filter(function() {
1053 return $(this).val() === newValue && !$(this).prop('selected');
1054 }).remove();
1055
1056 $select.find('option').filter(function() {
1057 return $(this).val() === newValue && $(this).data('select2-tag');
1058 }).remove();
1059
1060 var newOption = new Option(newValue, newValue, true, true);
1061 $select.append(newOption).trigger('change');
1062 }
1063 });
1064
1065 var $searchField = $select.next('.select2').find('.select2-search__field');
1066 $searchField.css('min-width', '120px');
1067 });
1068
1069 $('.evf-bulk-form-tags-select').trigger('evf-enhanced-tags-select-init');
1070
1071 $(document).on('click', '.evf-update-bulk-tags', function(){
1072 var container = $(this).closest('.evf-bulk-edit-forms-tags-container'),
1073 forms = $(container).find('#bulk_tag_forms').val(),
1074 tags = $(container).find('#bulk_tags').val();
1075
1076 if(!forms || 0 === forms.length) {
1077 return
1078 }
1079
1080 $.ajax({
1081 type: 'POST',
1082 url: evf_admin_manage_tags.ajax_url,
1083 data: {
1084 action: 'everest_forms_update_tags_in_bulk',
1085 tags: tags,
1086 forms:forms,
1087 security : evf_admin_manage_tags.ajax_manage_tags_nonce
1088 },
1089 success: function(res) {
1090 window.location.reload();
1091 }
1092 });
1093
1094 })
1095
1096
1097 var $copyLogBtn = $( '#evf-copy-log-btn' );
1098 if ( ! $copyLogBtn.length ) {
1099 return;
1100 }
1101 var copiedLabel = params && params.i18n_log_copied ? params.i18n_log_copied : 'Copied!';
1102 $copyLogBtn.on( 'click', function() {
1103 var $btn = $( this );
1104 var $content = $( '#evf-log-content' );
1105 if ( ! $content.length ) {
1106 return;
1107 }
1108 var text = $content.text();
1109 var originalLabel = $btn.text();
1110
1111 function showCopied() {
1112 $btn.text( copiedLabel );
1113 setTimeout( function() {
1114 $btn.text( originalLabel );
1115 }, 2000 );
1116 }
1117
1118 function fallbackCopy( copyText ) {
1119 var $ta = $( '<textarea>' );
1120 $ta.val( copyText );
1121 $ta.css( { position: 'fixed', opacity: '0' } );
1122 $( 'body' ).append( $ta );
1123 $ta.trigger( 'focus' );
1124 $ta[0].select();
1125 try {
1126 document.execCommand( 'copy' );
1127 showCopied();
1128 } catch ( e ) {}
1129 $ta.remove();
1130 }
1131
1132 if ( navigator.clipboard && navigator.clipboard.writeText ) {
1133 navigator.clipboard.writeText( text ).then( showCopied ).catch( function() {
1134 fallbackCopy( text );
1135 } );
1136 } else {
1137 fallbackCopy( text );
1138 }
1139 } );
1140
1141 // Row-actions hover: JS-managed class prevents tr:hover boundary flicker on Trash link.
1142 $( document ).ready( function() {
1143 $( '.evf-base-list-table tbody, .everest-forms-table tbody' ).find( 'tr' ).each( function() {
1144 var $tr = $( this );
1145 var $rowActions = $tr.find( '.row-actions' );
1146 var hideTimer;
1147
1148 if ( ! $rowActions.length ) {
1149 return;
1150 }
1151
1152 function showRow() {
1153 clearTimeout( hideTimer );
1154 $tr.addClass( 'evf-row-hover' );
1155 }
1156
1157 function hideRow() {
1158 hideTimer = setTimeout( function() {
1159 $tr.removeClass( 'evf-row-hover' );
1160 }, 100 );
1161 }
1162
1163 $tr.on( 'mouseenter.evfRow', showRow ).on( 'mouseleave.evfRow', hideRow );
1164 $rowActions.on( 'mouseenter.evfRow', showRow ).on( 'mouseleave.evfRow', hideRow );
1165 } );
1166 } );
1167
1168 })( jQuery, everest_forms_admin );
1169