PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.9.2
Admin and Site Enhancements (ASE) v7.9.2
9.1.1 9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / assets / js / admin-page.js
admin-site-enhancements / assets / js Last commit date
codemirror 1 year ago datatables 1 year ago admin-menu-organizer.js 1 year ago admin-page.js 1 year ago content-order-sort.js 1 year ago custom-admin-menu.js 1 year ago external-permalinks.js 1 year ago gutenberg-content-duplication.js 1 year ago hide-admin-notices.js 1 year ago jBox.all.min.js 1 year ago jquery.jsticky.mod.js 1 year ago jquery.jsticky.mod.min.js 1 year ago jquery.mjs.nestedSortable.js 1 year ago jquery.ui.touch-punch.min.js 1 year ago js.cookie.min.js 1 year ago list-tables-content-order.js 1 year ago media-replace.js 1 year ago multiple-user-roles.js 1 year ago select2.full.min.js 1 year ago toggle-hidden-menu.js 1 year ago
admin-page.js
1142 lines
1 (function( $ ) {
2 'use strict';
3
4 $(document).ready( function() {
5
6 // Make page header sticky on scroll. Using https://github.com/AndrewHenderson/jSticky
7 $('#asenha-header').sticky({
8 topSpacing: 0, // Space between element and top of the viewport (in pixels)
9 zIndex: 100, // z-index
10 stopper: '', // Id, class, or number value
11 stickyClass: 'asenha-sticky' // Class applied to element when it's stuck. Class name or false.
12 })
13
14 // Clicking on header save button triggers click of the hidden form submit button
15 $('.asenha-save-button').click( function(e) {
16
17 e.preventDefault();
18
19 $('.asenha-saving-changes').fadeIn();
20
21 // Get current tab's URL hash and save it in cookie
22 var hash = decodeURI(window.location.hash).substr(1); // get hash without the # character
23 Cookies.set('asenha_tab', hash, { expires: 1 }); // expires in 1 day
24
25 // Submit the settings form
26 $('input[type="submit"]#asenha-submit').click();
27
28 });
29
30 // Search modules
31 var searchInput = $('#module-search-input');
32
33 $(searchInput).keyup(delay(function (e) {
34 var searchVal = $(this).val();
35 var filterItems = $('[data-search-filter]');
36
37 if ( searchVal != '' ) {
38 setTimeout(function() {
39 $(searchInput).addClass('has-text-input');
40 $('.modules-tab').hide();
41 $('.search-tab').show();
42 $('.asenha-fields.section-visible').addClass('originally-visible');
43 $('.asenha-fields').removeClass('section-visible');
44 $('.asenha-fields').removeClass('section-hidden');
45 $('.asenha-fields').addClass('section-visible-for-search');
46 filterItems.parents('.asenha-toggle').addClass('result-is-hidden');
47 $('[data-search-filter][data-module-info*="' + searchVal.toLowerCase() + '"]').parents('.asenha-toggle').removeClass('result-is-hidden');
48 }, 250 );
49 refreshCodeMirror();
50 } else {
51 setTimeout(function() {
52 searchInput.removeClass('has-text-input');
53 filterItems.parents('.asenha-toggle').removeClass('result-is-hidden');
54 clear_search();
55 refreshCodeMirror();
56 }, 250 );
57 }
58 }, 200));
59
60 // Restore all results when the x button on search input field is clicked.
61 // The click triggers a 'search' event we're listening to below
62
63 if ( searchInput.length > 0 ) {
64 document.getElementById("module-search-input").addEventListener("search", function(event) {
65 clear_search();
66 refreshCodeMirror();
67 });
68 }
69
70 // Ref: https://stackoverflow.com/a/1909508
71 function delay(fn, ms) {
72 let timer = 0
73 return function(...args) {
74 clearTimeout(timer)
75 timer = setTimeout(fn.bind(this, ...args), ms || 0)
76 }
77 }
78
79 function clear_search() {
80 searchInput.removeClass('has-text-input');
81 $('[data-search-filter]').each( function() {
82 $(this).parents('.asenha-toggle').removeClass('result-is-hidden');
83 $('.modules-tab').show();
84 $('.search-tab').hide();
85 $('.asenha-fields').removeClass('section-visible-for-search');
86 $('.asenha-fields').addClass('section-hidden');
87 // Has no effect. Compensate with CSS .asenha-fields.section-visible.section-hidden { display: block; }
88 // $('.asenha-fields.originally-visible').removeClass('section-hidden');
89 $('.asenha-fields.originally-visible').addClass('section-visible');
90 $('.asenha-fields').removeClass('originally-visible');
91 });
92 }
93
94 // Show all / less toggler for field options | Modified from https://codepen.io/symonsays/pen/rzgEgY
95 $('.asenha-field-with-options.field-show-more > .show-more').click(function(e) {
96
97 e.preventDefault();
98
99 var $this = $(this);
100 $this.toggleClass('show-more');
101
102 if ($this.hasClass('show-more')) {
103 $this.next().removeClass('opened',0);
104 $this.html(adminPageVars.expandText + ' ▼');
105 } else {
106 $this.next().addClass('opened',0);
107 $this.html(adminPageVars.collapseText + ' ▲');
108 }
109
110 });
111
112 // Email Delivery >> Send test email
113 $('#send-test-email').click(function(e) {
114 e.preventDefault();
115 var emailTo = $('#test-email-to').val();
116 if ( emailTo ) {
117 $('#ajax-result').show();
118 $('.sending-test-email').show();
119 $('.test-email-result').hide();
120 $('#test-email-success').hide();
121 $('#test-email-failed').hide();
122 $.ajax({
123 url: ajaxurl,
124 data: {
125 'action':'send_test_email',
126 'email_to': emailTo,
127 'nonce': adminPageVars.sendTestEmailNonce
128 },
129 success:function(data) {
130 var data = data.slice(0,-1); // remove strange trailing zero in string returned by AJAX call
131 var response = JSON.parse(data);
132 if ( response.status == 'success' ) {
133 setTimeout( function() {
134 $('.sending-test-email').hide();
135 // $('.test-email-result').show();
136 $('#test-email-success').show();
137 }, 1500);
138 }
139 if ( response.status == 'failed' ) {
140 setTimeout( function() {
141 $('.sending-test-email').hide();
142 // $('.test-email-result').show();
143 $('#test-email-failed').show();
144 }, 1500);
145 }
146 },
147 error:function(errorThrown) {
148 console.log(errorThrown);
149 setTimeout( function() {
150 $('.sending-test-email').hide();
151 $('.test-email-result').show();
152 $('#test-email-failed').show();
153 }, 1500);
154 }
155 });
156 } else {
157 alert( 'Please enter destination email address first.' );
158 }
159 });
160
161 // Form Builder >> Send test email
162 $('#form-builder-send-test-email').click(function(e) {
163 e.preventDefault();
164 var emailTo = $('#form-builder-test-email-to').val();
165 var emailTemplate = $('.form-builder-email-template select').val();
166 if ( emailTo ) {
167 $('#form-builder-ajax-result').show();
168 $('.form-builder-sending-test-email').show();
169 $('.test-email-result').hide();
170 $('#form-builder-test-email-success').hide();
171 $('#form-builder-test-email-failed').hide();
172 $.ajax({
173 type: 'POST',
174 url: ajaxurl,
175 data: {
176 action: 'formbuilder_test_email_template',
177 email_template: emailTemplate,
178 test_email: emailTo,
179 nonce: adminPageVars.formBuilderSendTestEmailNonce
180 },
181 success:function(data) {
182 var response = JSON.parse(data);
183 if ( response.success ) {
184 setTimeout( function() {
185 $('.form-builder-sending-test-email').hide();
186 $('#form-builder-test-email-success').show();
187 }, 1500);
188 }
189 if ( ! response.success ) {
190 setTimeout( function() {
191 $('.form-builder-sending-test-email').hide();
192 $('#form-builder-test-email-failed').show();
193 }, 1500);
194 }
195 },
196 error:function(errorThrown) {
197 console.log(errorThrown);
198 setTimeout( function() {
199 $('.sending-test-email').hide();
200 $('.test-email-result').show();
201 $('#test-email-failed').show();
202 }, 1500);
203 }
204 });
205 } else {
206 alert( 'Please enter destination email address first.' );
207 }
208 });
209
210 // Initialize data tables
211 var table = $("#login-attempts-log").DataTable({
212 pageLength: 10,
213 order: [[2, 'desc']],
214 language: {
215 emptyTable: adminPageVars.dataTable.emptyTable,
216 info: adminPageVars.dataTable.info,
217 infoEmpty: adminPageVars.dataTable.infoEmpty,
218 infoFiltered: adminPageVars.dataTable.infoFiltered,
219 lengthMenu: adminPageVars.dataTable.lengthMenu,
220 search: adminPageVars.dataTable.search,
221 zeroRecords: adminPageVars.dataTable.zeroRecords,
222 paginate: {
223 first: adminPageVars.dataTable.paginate.first,
224 last: adminPageVars.dataTable.paginate.last,
225 next: adminPageVars.dataTable.paginate.next,
226 previous: adminPageVars.dataTable.paginate.previous
227 },
228 }
229 });
230
231 // Place fields into the "Content Management" tab
232
233 $('.enable-duplication').appendTo('.fields-content-management > table > tbody');
234 $('.duplication-redirect-destination').appendTo('.fields-content-management .enable-duplication .asenha-subfields');
235
236 $('.content-order').appendTo('.fields-content-management > table > tbody');
237 // $('.content-order-subfields-heading').appendTo('.fields-content-management .content-order .asenha-subfields');
238 $('.content-order-for').appendTo('.fields-content-management .content-order .asenha-subfields');
239
240
241 $('.enable-media-replacement').appendTo('.fields-content-management > table > tbody');
242 $('.disable-media-replacement-cache-busting').appendTo('.fields-content-management .enable-media-replacement .asenha-subfields');
243 $('.enable-svg-upload').appendTo('.fields-content-management > table > tbody');
244 $('.enable-svg-upload-for').appendTo('.fields-content-management .enable-svg-upload .asenha-subfields');
245 $('.enable-avif-upload').appendTo('.fields-content-management > table > tbody');
246 $('.avif-support-status').appendTo('.fields-content-management .enable-avif-upload .asenha-subfields');
247
248 $('.enable-external-permalinks').appendTo('.fields-content-management > table > tbody');
249 $('.enable-external-permalinks-for').appendTo('.fields-content-management .enable-external-permalinks .asenha-subfields');
250 $('.external-links-new-tab').appendTo('.fields-content-management > table > tbody');
251 $('.custom-nav-menu-items-new-tab').appendTo('.fields-content-management > table > tbody');
252 $('.enable-missed-schedule-posts-auto-publish').appendTo('.fields-content-management > table > tbody');
253
254 // Place fields into "Admin Interface" tab
255 $('.hide-modify-elements').appendTo('.fields-admin-interface > table > tbody');
256 $('.hide-ab-wp-logo-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
257 $('.hide-ab-site-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
258 $('.hide-ab-customize-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
259 $('.hide-ab-updates-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
260 $('.hide-ab-comments-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
261 $('.hide-ab-new-content-menu').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
262 $('.hide-ab-howdy').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
263 $('.hide-help-drawer').appendTo('.fields-admin-interface .hide-modify-elements .asenha-subfields');
264
265 $('.hide-admin-notices').appendTo('.fields-admin-interface > table > tbody');
266
267 $('.disable-dashboard-widgets').appendTo('.fields-admin-interface > table > tbody');
268 $('.disable-welcome-panel-in-dashboard').appendTo('.fields-admin-interface .disable-dashboard-widgets .asenha-subfields');
269 $('.disabled-dashboard-widgets').appendTo('.fields-admin-interface .disable-dashboard-widgets .asenha-subfields');
270 $('.hide-admin-bar').appendTo('.fields-admin-interface > table > tbody');
271
272 $('.hide-admin-bar-for').appendTo('.fields-admin-interface .hide-admin-bar .asenha-subfields');
273 $('.hide-admin-bar-always-show-for-admins').appendTo('.fields-admin-interface .hide-admin-bar .asenha-subfields');
274
275 $('.hide-admin-bar-description').appendTo('.fields-admin-interface .hide-admin-bar .asenha-subfields');
276
277 $('.wider-admin-menu').appendTo('.fields-admin-interface > table > tbody');
278 $('.admin-menu-width').appendTo('.fields-admin-interface .wider-admin-menu .asenha-subfields');
279 $('.customize-admin-menu').appendTo('.fields-admin-interface > table > tbody');
280
281 $('.show-custom-taxonomy-filters').appendTo('.fields-admin-interface > table > tbody');
282
283 $('.enhance-list-tables').appendTo('.fields-admin-interface > table > tbody');
284 $('.show-featured-image-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
285 $('.show-excerpt-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
286 $('.show-last-modified-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
287 $('.show-id-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
288 $('.show-file-size-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
289 $('.show-id-in-action_row').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
290 $('.hide-date-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
291 $('.hide-comments-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
292 $('.hide-post-tags-column').appendTo('.fields-admin-interface .enhance-list-tables .asenha-subfields');
293 $('.various-admin-ui-enhancements').appendTo('.fields-admin-interface > table > tbody');
294 $('.media-library-infinite-scrolling').appendTo('.fields-admin-interface .various-admin-ui-enhancements .asenha-subfields');
295 $('.display-active-plugins-first').appendTo('.fields-admin-interface .various-admin-ui-enhancements .asenha-subfields');
296
297 $('.custom-admin-footer-text').appendTo('.fields-admin-interface > table > tbody');
298 $('.custom-admin-footer-left').appendTo('.fields-admin-interface .custom-admin-footer-text .asenha-subfields');
299 reinitWpEditor('admin_site_enhancements--custom_admin_footer_left');
300 $('.custom-admin-footer-right').appendTo('.fields-admin-interface .custom-admin-footer-text .asenha-subfields');
301 reinitWpEditor('admin_site_enhancements--custom_admin_footer_right');
302
303 // Place fields into "Log In | Log Out" tab
304 $('.change-login-url').appendTo('.fields-login-logout > table > tbody');
305 $('.custom-login-slug').appendTo('.fields-login-logout .change-login-url .asenha-subfields');
306 $('.custom-login-whitelist').appendTo('.fields-login-logout .change-login-url .asenha-subfields');
307 $('.default-login-redirect-slug').appendTo('.fields-login-logout .change-login-url .asenha-subfields');
308 $('.change-login-url-description').appendTo('.fields-login-logout .change-login-url .asenha-subfields');
309 $('.login-id-type-restriction').appendTo('.fields-login-logout > table > tbody');
310 $('.login-id-type').appendTo('.fields-login-logout .login-id-type-restriction .asenha-subfields');
311
312 $('.site-identity-on-login').appendTo('.fields-login-logout > table > tbody');
313 $('.enable-login-logout-menu').appendTo('.fields-login-logout > table > tbody');
314 $('.enable-last-login-column').appendTo('.fields-login-logout > table > tbody');
315 $('.registration-date-column').appendTo('.fields-login-logout > table > tbody');
316 $('.redirect-after-login').appendTo('.fields-login-logout > table > tbody');
317
318 $('.redirect-after-login-to-slug').appendTo('.fields-login-logout .redirect-after-login .asenha-subfields');
319 $('.redirect-after-login-for').appendTo('.fields-login-logout .redirect-after-login .asenha-subfields');
320
321 $('.redirect-after-logout').appendTo('.fields-login-logout > table > tbody');
322
323 $('.redirect-after-logout-to-slug').appendTo('.fields-login-logout .redirect-after-logout .asenha-subfields');
324 $('.redirect-after-logout-for').appendTo('.fields-login-logout .redirect-after-logout .asenha-subfields');
325
326
327 // Place fields into "Custom Code" tab
328
329 $('.enable-custom-admin-css').appendTo('.fields-custom-code > table > tbody');
330 $('.custom-admin-css').appendTo('.fields-custom-code .enable-custom-admin-css .asenha-subfields');
331 $('.enable-custom-frontend-css').appendTo('.fields-custom-code > table > tbody');
332
333 $('.custom-frontend-css').appendTo('.fields-custom-code .enable-custom-frontend-css .asenha-subfields');
334 $('.insert-head-body-footer-code').appendTo('.fields-custom-code > table > tbody');
335 $('.disable-code-unslash').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
336 $('.head-code-priority').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
337 $('.head-code').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
338 $('.body-code-priority').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
339 $('.body-code').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
340 $('.footer-code-priority').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
341 $('.footer-code').appendTo('.fields-custom-code .insert-head-body-footer-code .asenha-subfields');
342 $('.enable-custom-body-class').appendTo('.fields-custom-code > table > tbody');
343 $('.enable-custom-body-class-for').appendTo('.fields-custom-code .enable-custom-body-class .asenha-subfields');
344 $('.manage-ads-appads-txt').appendTo('.fields-custom-code > table > tbody');
345 $('.ads-txt-content').appendTo('.fields-custom-code .manage-ads-appads-txt .asenha-subfields');
346 $('.app-ads-txt-content').appendTo('.fields-custom-code .manage-ads-appads-txt .asenha-subfields');
347 $('.manage-robots-txt').appendTo('.fields-custom-code > table > tbody');
348 $('.robots-txt-content').appendTo('.fields-custom-code .manage-robots-txt .asenha-subfields');
349
350 // Place fields into the "Disable Components" tab
351 $('.disable-gutenberg').appendTo('.fields-disable-components > table > tbody');
352
353 $('.disable-gutenberg-for').appendTo('.fields-disable-components .disable-gutenberg .asenha-subfields');
354 $('.disable-gutenberg-frontend-styles').appendTo('.fields-disable-components .disable-gutenberg .asenha-subfields');
355 $('.disable-comments').appendTo('.fields-disable-components > table > tbody');
356
357 $('.disable-comments-for').appendTo('.fields-disable-components .disable-comments .asenha-subfields');
358 $('.disable-rest-api').appendTo('.fields-disable-components > table > tbody');
359
360 $('.disable-feeds').appendTo('.fields-disable-components > table > tbody');
361 $('.disable-all-updates').appendTo('.fields-disable-components > table > tbody');
362 $('.disable-author-archives').appendTo('.fields-disable-components > table > tbody');
363 $('.disable-smaller-components').appendTo('.fields-disable-components > table > tbody');
364 $('.disable-head-generator-tag').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
365 $('.disable-feed-generator-tag').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
366 $('.disable-resource-version-number').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
367 $('.disable-head-wlwmanifest-tag').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
368 $('.disable-head-rsd-tag').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
369 $('.disable-head-shortlink-tag').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
370 $('.disable-frontend-dashicons').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
371 $('.disable-emoji-support').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
372 $('.disable-jquery-migrate').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
373 $('.disable-block-widgets').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
374 $('.disable-lazy-load').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
375 $('.disable-application-passwords').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
376 $('.disable-plugin-theme-editor').appendTo('.fields-disable-components .disable-smaller-components .asenha-subfields');
377
378 // Place fields into "Security" tab
379 $('.limit-login-attempts').appendTo('.fields-security > table > tbody');
380 $('.login-fails-allowed').appendTo('.fields-security .limit-login-attempts .asenha-subfields');
381 $('.login-lockout-maxcount').appendTo('.fields-security .limit-login-attempts .asenha-subfields');
382
383 $('.limit-login-attempts-header-override').appendTo('.fields-security .limit-login-attempts .asenha-subfields');
384 $('.limit-login-attempts-header-override-description').appendTo('.fields-security .limit-login-attempts .asenha-subfields');
385 $('.login-attempts-log-table').appendTo('.fields-security .limit-login-attempts .asenha-subfields');
386
387 $('.obfuscate-author-slugs').appendTo('.fields-security > table > tbody');
388 $('.obfuscate-email-address').appendTo('.fields-security > table > tbody');
389 $('.obfuscate-email-address-description').appendTo('.fields-security .obfuscate-email-address .asenha-subfields');
390
391 $('.disable-xmlrpc').appendTo('.fields-security > table > tbody');
392
393 // Place fields into "Optimizations" tab
394 $('.image-upload-control').appendTo('.fields-optimizations > table > tbody');
395 $('.image-max-width').appendTo('.fields-optimizations .image-upload-control .asenha-subfields');
396 $('.image-max-height').appendTo('.fields-optimizations .image-upload-control .asenha-subfields');
397
398 $('.image-upload-control-description').appendTo('.fields-optimizations .image-upload-control .asenha-subfields');
399
400 $('.enable-revisions-control').appendTo('.fields-optimizations > table > tbody');
401 $('.revisions-max-number').appendTo('.fields-optimizations .enable-revisions-control .asenha-subfields');
402 $('.enable-revisions-control-for').appendTo('.fields-optimizations .enable-revisions-control .asenha-subfields');
403 $('.enable-heartbeat-control').appendTo('.fields-optimizations > table > tbody');
404 $('.heartbeat-control-for-admin-pages').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
405 $('.heartbeat-interval-for-admin-pages').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
406 $('.heartbeat-control-for-post-edit').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
407 $('.heartbeat-interval-for-post-edit').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
408 $('.heartbeat-control-for-frontend').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
409 $('.heartbeat-interval-for-frontend').appendTo('.fields-optimizations .enable-heartbeat-control .asenha-subfields');
410
411 // Place fields into "Utilities" tab
412 $('.smtp-email-delivery').appendTo('.fields-utilities > table > tbody');
413 $('.smtp-default-from-description').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
414 $('.smtp-default-from-name').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
415 $('.smtp-default-from-email').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
416 $('.smtp-force-from').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
417
418 $('.smtp--description').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
419 $('.smtp-host').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
420 $('.smtp-port').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
421 $('.smtp-security').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
422
423 $('.smtp-username').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
424 $('.smtp-password').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
425 $('.smtp-bypass-ssl-verification').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
426 $('.smtp-debug').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
427
428 $('.smtp-send-test-email-description').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
429 $('.smtp-send-test-email-to').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
430 $('.smtp-send-test-email-result').appendTo('.fields-utilities .smtp-email-delivery .asenha-subfields');
431
432 $('.multiple-user-roles').appendTo('.fields-utilities > table > tbody');
433 $('.image-sizes-panel').appendTo('.fields-utilities > table > tbody');
434 $('.view-admin-as-role').appendTo('.fields-utilities > table > tbody');
435 $('.view-admin-as-role-description').appendTo('.fields-utilities .view-admin-as-role .asenha-subfields');
436 $('.enable-password-protection').appendTo('.fields-utilities > table > tbody');
437 $('.password-protection-password').appendTo('.fields-utilities .enable-password-protection .asenha-subfields');
438
439 $('.maintenance-mode').appendTo('.fields-utilities > table > tbody');
440
441 $('.maintenance-page-type-custom').appendTo('.fields-utilities .maintenance-mode .asenha-subfields');
442
443 $('.maintenance-page-heading').appendTo('.maintenance-page-type-custom');
444 $('.maintenance-page-description').appendTo('.maintenance-page-type-custom');
445
446 $('.maintenance-page-background').appendTo('.maintenance-page-type-custom');
447
448 $('.maintenance-mode-description').appendTo('.fields-utilities .maintenance-mode .asenha-subfields');
449 $('.redirect-404-to-homepage').appendTo('.fields-utilities > table > tbody');
450
451 $('.display-system-summary').appendTo('.fields-utilities > table > tbody');
452 $('.search-engine-visibility-status').appendTo('.fields-utilities > table > tbody');
453
454
455 // Remove empty .form-table that originally holds the fields
456 const formTableCount = $('.form-table').length;
457 // $('.form-table')[formTableCount-1].remove();
458
459 // Enable Custom Admin CSS => Initialize CodeMirror
460 var adminCssTextarea = document.getElementById("admin_site_enhancements[custom_admin_css]");
461 // if ( typeof CodeMirror != "undefined" ) {
462 // alert('CodeMirror is available');
463 // }
464 var adminCssEditor = CodeMirror.fromTextArea(adminCssTextarea, {
465 mode: "css",
466 lineNumbers: true,
467 lineWrapping: true
468 });
469
470 adminCssEditor.setSize("100%",600);
471
472 // Enable Custom Frontend CSS => Initialize CodeMirror
473 var frontendCssTextarea = document.getElementById("admin_site_enhancements[custom_frontend_css]");
474 var frontendCssEditor = CodeMirror.fromTextArea(frontendCssTextarea, {
475 mode: "css",
476 lineNumbers: true,
477 lineWrapping: true
478 });
479
480 frontendCssEditor.setSize("100%",600);
481
482 // Manage ads.txt and app-ads.txt=> Initialize CodeMirror
483 var adsTxtTextarea = document.getElementById("admin_site_enhancements[ads_txt_content]");
484 var adsTxtEditor = CodeMirror.fromTextArea(adsTxtTextarea, {
485 mode: "markdown",
486 lineNumbers: true,
487 lineWrapping: true
488 });
489
490 adsTxtEditor.setSize("100%",300);
491
492 var appAdsTxtTextarea = document.getElementById("admin_site_enhancements[app_ads_txt_content]");
493 var appAdsTxtEditor = CodeMirror.fromTextArea(appAdsTxtTextarea, {
494 mode: "markdown",
495 lineNumbers: true,
496 lineWrapping: true
497 });
498
499 appAdsTxtEditor.setSize("100%",300);
500
501 // Manage robots.txt => Initialize CodeMirror
502 var robotsTxtTextarea = document.getElementById("admin_site_enhancements[robots_txt_content]");
503 var robotsTxtEditor = CodeMirror.fromTextArea(robotsTxtTextarea, {
504 mode: "markdown",
505 lineNumbers: true,
506 lineWrapping: true
507 });
508
509 robotsTxtEditor.setSize("100%",400);
510
511 // Insert <head>, <body> and <footer> code => Initialize CodeMirror
512 var headCodeTextarea = document.getElementById("admin_site_enhancements[head_code]");
513 var headCodeEditor = CodeMirror.fromTextArea(headCodeTextarea, {
514 mode: "htmlmixed",
515 lineNumbers: true,
516 lineWrapping: true
517 });
518 headCodeEditor.setSize("100%",300);
519
520 var bodyCodeTextarea = document.getElementById("admin_site_enhancements[body_code]");
521 var bodyCodeEditor = CodeMirror.fromTextArea(bodyCodeTextarea, {
522 mode: "htmlmixed",
523 lineNumbers: true,
524 lineWrapping: true
525 });
526 bodyCodeEditor.setSize("100%",300);
527
528 var footerCodeTextarea = document.getElementById("admin_site_enhancements[footer_code]");
529 var footerCodeEditor = CodeMirror.fromTextArea(footerCodeTextarea, {
530 mode: "htmlmixed",
531 lineNumbers: true,
532 lineWrapping: true
533 });
534 footerCodeEditor.setSize("100%",300);
535
536
537
538 function refreshCodeMirror() {
539
540 adminCssEditor.refresh(); // Custom Admin CSS >> CodeMirror
541 frontendCssEditor.refresh(); // Custom Fronend CSS >> CodeMirror
542 adsTxtEditor.refresh(); // Manage ads.txt >> CodeMirror
543 appAdsTxtEditor.refresh(); // Manage app-ads.txt >> CodeMirror
544 headCodeEditor.refresh(); // Insert <head>, <body> and <footer> code >> CodeMirror
545 bodyCodeEditor.refresh(); // Insert <head>, <body> and <footer> code >> CodeMirror
546 footerCodeEditor.refresh(); // Insert <head>, <body> and <footer> code >> CodeMirror
547 robotsTxtEditor.refresh(); // Manage robots.txt >> CodeMirror
548
549 }
550
551 // Show and hide corresponding fields on tab clicks
552
553 function tabSwitcher( tabSlug ) {
554 $('.asenha-fields.fields-'+tabSlug).addClass('section-visible');
555 $('.asenha-fields.fields-'+tabSlug).removeClass('section-hidden');
556 $('.asenha-fields:not(.fields-'+tabSlug+')').removeClass('section-visible');
557 $('.asenha-fields:not(.fields-'+tabSlug+')').addClass('section-hidden');
558 window.location.hash = tabSlug;
559 Cookies.set('asenha_tab', tabSlug, { expires: 1 }); // expires in 1 day
560 }
561
562 $('#tab-content-management + label').click( function() {
563 tabSwitcher('content-management');
564 });
565
566 $('#tab-admin-interface + label').click( function() {
567 tabSwitcher('admin-interface');
568 });
569
570 $('#tab-login-logout + label').click( function() {
571 tabSwitcher('login-logout');
572 refreshCodeMirror();
573 });
574
575 $('#tab-custom-code + label').click( function() {
576 tabSwitcher('custom-code');
577 refreshCodeMirror();
578 });
579
580 $('#tab-disable-components + label').click( function() {
581 tabSwitcher('disable-components');
582 });
583
584 $('#tab-security + label').click( function() {
585 tabSwitcher('security');
586 });
587
588 $('#tab-optimizations + label').click( function() {
589 tabSwitcher('optimizations');
590 });
591
592 $('#tab-utilities + label').click( function() {
593 tabSwitcher('utilities');
594 refreshCodeMirror();
595 });
596
597 // Open tab set in 'asenha_tab' cookie set on saving changes. Defaults to content-management tab when cookie is empty
598 var asenhaTabHash = Cookies.get('asenha_tab');
599
600 if (typeof asenhaTabHash === 'undefined') {
601 $('#tab-content-management + label').trigger('click');
602 } else {
603 $('#tab-' + asenhaTabHash + ' + label').trigger('click');
604 }
605
606 // Show or hide subfields on document ready and on toggle click
607
608 function subfieldsToggler( fieldId, fieldClass, sortableId, codeMirrorInstances ) {
609
610 if (document.getElementById('admin_site_enhancements['+fieldId+']')) {
611
612 // Show/hide subfields on document ready, depending on if module is enabled or not
613 if ( document.getElementById('admin_site_enhancements['+fieldId+']').checked ) {
614
615 $('.'+fieldClass+' .asenha-subfields').show();
616 if (document.querySelector('.'+fieldClass+' .asenha-subfield-select-inner')) {
617 $('.'+fieldClass+' .asenha-subfield-select-inner').show();
618 }
619 $('.asenha-toggle.'+fieldClass+' td .asenha-field-with-options').addClass('is-enabled');
620 if ( codeMirrorInstances ) {
621 Object.keys(codeMirrorInstances).forEach(function(key) {
622 if ( codeMirrorInstances[key] ) {
623 codeMirrorInstances[key].refresh();
624 }
625 });
626 }
627
628 } else {
629
630 $('.'+fieldClass+' .asenha-subfields').hide();
631 if (document.querySelector('.'+fieldClass+' .asenha-subfield-select-inner')) {
632 $('.'+fieldClass+' .asenha-subfield-select-inner').hide();
633 }
634
635 }
636
637 // Show/hide subfields on toggle click
638 document.getElementById('admin_site_enhancements['+fieldId+']').addEventListener('click', event => {
639 if (event.target.checked) {
640
641 $('.'+fieldClass+' .asenha-subfields').fadeIn();
642 if (document.querySelector('.'+fieldClass+' .asenha-subfield-select-inner')) {
643 $('.'+fieldClass+' .asenha-subfield-select-inner').show();
644 }
645 $('.'+fieldClass+' .asenha-field-with-options').toggleClass('is-enabled');
646 if (document.getElementById(sortableId)) {
647 // Initialize sortable elements: https://api.jqueryui.com/sortable/
648 $('#' + sortableId ).sortable();
649 }
650 if ( codeMirrorInstances ) {
651 Object.keys(codeMirrorInstances).forEach(function(key) {
652 if ( codeMirrorInstances[key] ) {
653 codeMirrorInstances[key].refresh();
654 }
655 });
656 }
657
658 } else {
659
660 $('.'+fieldClass+' .asenha-subfields').hide();
661 if (document.querySelector('.'+fieldClass+' .asenha-subfield-select-inner')) {
662 $('.'+fieldClass+' .asenha-subfield-select-inner').hide();
663 }
664 $('.'+fieldClass+' .asenha-field-with-options').toggleClass('is-enabled');
665
666 }
667 });
668
669 }
670
671 }
672
673 // Re-init wp_editor for snippet description. Required because the wp_editor was moved in the DOM after document ready.
674 // Ref: https://stackoverflow.com/a/21519323
675 // Ref: https://core.trac.wordpress.org/ticket/19173
676 function reinitWpEditor(id) {
677 tinymce.execCommand('mceRemoveEditor', true, id);
678 var init = tinymce.extend( {}, tinyMCEPreInit.mceInit[ id ] );
679 try { tinymce.init( init ); } catch(e){}
680 $('textarea[id="' + id + '"]').closest('form').find('input[type="submit"]').click(function(){
681 if( getUserSetting( 'editor' ) == 'tmce' ){
682 var id = mce.find( 'textarea' ).attr( 'id' );
683 tinymce.execCommand( 'mceRemoveEditor', false, id );
684 tinymce.execCommand( 'mceAddEditor', false, id );
685 }
686 return true;
687 });
688 }
689
690
691 subfieldsToggler( 'enable_duplication', 'enable-duplication' );
692 subfieldsToggler( 'content_order', 'content-order' );
693
694 subfieldsToggler( 'enable_media_replacement', 'enable-media-replacement' );
695 subfieldsToggler( 'enable_svg_upload', 'enable-svg-upload' );
696 subfieldsToggler( 'enable_avif_upload', 'enable-avif-upload' );
697
698 subfieldsToggler( 'enable_external_permalinks', 'enable-external-permalinks' );
699
700 subfieldsToggler( 'enhance_list_tables', 'enhance-list-tables' );
701 subfieldsToggler( 'custom_admin_footer_text', 'custom-admin-footer-text' );
702 subfieldsToggler( 'wider_admin_menu', 'wider-admin-menu' );
703 subfieldsToggler( 'customize_admin_menu', 'customize-admin-menu', 'custom-admin-menu' );
704 subfieldsToggler( 'disable_dashboard_widgets', 'disable-dashboard-widgets' );
705 subfieldsToggler( 'various_admin_ui_enhancements', 'various-admin-ui-enhancements' );
706
707 // Clean Up Admin Bar
708 subfieldsToggler( 'hide_modify_elements', 'hide-modify-elements' );
709
710 subfieldsToggler( 'hide_admin_bar', 'hide-admin-bar' );
711 subfieldsToggler( 'change_login_url', 'change-login-url' );
712 subfieldsToggler( 'login_id_type_restriction', 'login-id-type-restriction' );
713
714 subfieldsToggler( 'redirect_after_login', 'redirect-after-login' );
715 subfieldsToggler( 'redirect_after_logout', 'redirect-after-logout' );
716 subfieldsToggler( 'enable_custom_admin_css', 'enable-custom-admin-css', '', {adminCssEditor} );
717 subfieldsToggler( 'enable_custom_frontend_css', 'enable-custom-frontend-css', '', {frontendCssEditor} );
718 subfieldsToggler( 'insert_head_body_footer_code', 'insert-head-body-footer-code', '', {headCodeEditor,bodyCodeEditor,footerCodeEditor} );
719 subfieldsToggler( 'enable_custom_body_class', 'enable-custom-body-class' );
720 subfieldsToggler( 'manage_ads_appads_txt', 'manage-ads-appads-txt', '', {adsTxtEditor,appAdsTxtEditor} );
721 subfieldsToggler( 'manage_robots_txt', 'manage-robots-txt', '', {robotsTxtEditor} );
722
723 subfieldsToggler( 'disable_gutenberg', 'disable-gutenberg' );
724 subfieldsToggler( 'disable_comments', 'disable-comments' );
725
726 subfieldsToggler( 'disable_smaller_components', 'disable-smaller-components' );
727 subfieldsToggler( 'limit_login_attempts', 'limit-login-attempts' );
728
729 subfieldsToggler( 'obfuscate_email_address', 'obfuscate-email-address' );
730 subfieldsToggler( 'image_upload_control', 'image-upload-control' );
731 subfieldsToggler( 'enable_revisions_control', 'enable-revisions-control' );
732 subfieldsToggler( 'enable_heartbeat_control', 'enable-heartbeat-control' );
733
734
735 // Enable Heartbeat Control => Check if "Modify interval" is chosen/clicked and show/hide the corresponding select field
736 if ( $('input[name="admin_site_enhancements[heartbeat_control_for_admin_pages]"]:checked').val() == 'modify' ) {
737 $('.heartbeat-interval-for-admin-pages .asenha-subfield-select-inner').show();
738 }
739
740 $('input[name="admin_site_enhancements[heartbeat_control_for_admin_pages]"]').click(function() {
741 var radioValue = $(this).attr('value');
742 if ( radioValue == 'modify' ) {
743 $('.heartbeat-interval-for-admin-pages .asenha-subfield-select-inner').show();
744 } else {
745 $('.heartbeat-interval-for-admin-pages .asenha-subfield-select-inner').hide();
746 }
747 });
748
749 if ( $('input[name="admin_site_enhancements[heartbeat_control_for_post_edit]"]:checked').val() == 'modify' ) {
750 $('.heartbeat-interval-for-post-edit .asenha-subfield-select-inner').show();
751 }
752
753 $('input[name="admin_site_enhancements[heartbeat_control_for_post_edit]"]').click(function() {
754 var radioValue = $(this).attr('value');
755 if ( radioValue == 'modify' ) {
756 $('.heartbeat-interval-for-post-edit .asenha-subfield-select-inner').show();
757 } else {
758 $('.heartbeat-interval-for-post-edit .asenha-subfield-select-inner').hide();
759 }
760 });
761
762 if ( $('input[name="admin_site_enhancements[heartbeat_control_for_frontend]"]:checked').val() == 'modify' ) {
763 $('.heartbeat-interval-for-frontend .asenha-subfield-select-inner').show();
764 }
765
766 $('input[name="admin_site_enhancements[heartbeat_control_for_frontend]"]').click(function() {
767 var radioValue = $(this).attr('value');
768 if ( radioValue == 'modify' ) {
769 $('.heartbeat-interval-for-frontend .asenha-subfield-select-inner').show();
770 } else {
771 $('.heartbeat-interval-for-frontend .asenha-subfield-select-inner').hide();
772 }
773 });
774
775 subfieldsToggler( 'smtp_email_delivery', 'smtp-email-delivery' );
776
777
778
779 // SMTP Email Delivery => Empty field value on click, so new password can be easily entered
780 var oldSmtpPassValue = '';
781
782 $('input[name="admin_site_enhancements[smtp_password]"]').focusin(function() {
783 oldSmtpPassValue = $(this).val();
784 $(this).val('');
785 });
786
787 $('input[name="admin_site_enhancements[smtp_password]"]').focusout(function() {
788 if ( $(this).val() == '' ) {
789 $(this).val(oldSmtpPassValue);
790 }
791 });
792
793 subfieldsToggler( 'view_admin_as_role', 'view-admin-as-role' );
794 subfieldsToggler( 'enable_password_protection', 'enable-password-protection' );
795
796 // Enable Password protection => Empty field value on click, so new password can be easily entered
797 var oldValue = '';
798 $('input[name="admin_site_enhancements[password_protection_password]"]').focusin(function() {
799 oldValue = $(this).val();
800 $(this).val('');
801 });
802
803 $('input[name="admin_site_enhancements[password_protection_password]"]').focusout(function() {
804 if ( $(this).val() == '' ) {
805 $(this).val(oldValue);
806 }
807 });
808
809
810 subfieldsToggler( 'maintenance_mode', 'maintenance-mode' );
811
812
813
814
815 // Content Toggler
816 $('.asenha-body').on('click', '.asenha-content-toggler', function(e) {
817 e.preventDefault();
818 var targetSelector = $(this).data('target-selector');
819 var showText = $(this).data('show-text');
820 var hideText = $(this).data('hide-text');
821 var expanded = $(this).attr('data-expanded');
822 // $(targetSelector).toggle();
823 if (expanded == 'no') {
824 $(targetSelector).slideDown(200);
825 $(this).html(hideText + ' <span>▲</span>');
826 $(this).attr('data-expanded','yes');
827 } else {
828 $(targetSelector).slideUp(200);
829 $(this).html(showText + ' <span>▼</span>');
830 $(this).attr('data-expanded','no');
831 }
832 });
833
834 // Media frame handler for image selection / upload fields
835 // Reference: https://plugins.trac.wordpress.org/browser/bm-custom-login/trunk/bm-custom-login.php
836 function media_frame_init( selector, button_selector ) {
837 // media_frame_init( '#login-page-logo-image', '#login-page-logo-image-button' );
838 var theSelector = $(selector);
839 var button = $(button_selector);
840
841 button.click(function (event) {
842 event.preventDefault();
843
844 // Configuration of the media frame new instance
845 wp.media.frames.frame = wp.media({
846 title: adminPageVars.mediaFrameTitle,
847 multiple: false,
848 library: {
849 type: 'image'
850 },
851 button: {
852 text: adminPageVars.mediaFrameButtonText
853 }
854 });
855
856 // Function used for the image selection and media manager closing
857 var media_set_image = function() {
858 var selection = wp.media.frames.frame.state().get('selection');
859
860 // Nothing is selected
861 if (!selection) {
862 return;
863 }
864
865 // Iterate through selected elements
866 selection.each(function(attachment) {
867 // console.log(attachment);
868 var url = attachment.attributes.url;
869 url = url.replace( adminPageVars.wpcontentUrl, '' );
870 theSelector.val(url);
871
872 if ( '#login-page-logo-image' == selector ) {
873 var attachmentId = $('.login-page-logo-image-attachment-id input');
874 var originalWidthInput = $('.login-page-logo-image-width-original input');
875 var originalHeightInput = $('.login-page-logo-image-height-original input');
876 var widthInput = $('.login-page-logo-image-width input');
877 var heightInput = $('.login-page-logo-image-height input');
878 attachmentId.val(attachment.attributes.id);
879 originalWidthInput.val(attachment.attributes.width);
880 originalHeightInput.val(attachment.attributes.height);
881 widthInput.val(attachment.attributes.width);
882 heightInput.val(attachment.attributes.height);
883 }
884
885 if ( '#form-builder-email-header-image' == selector ) {
886 var attachmentId = $('.form-builder-email-header-image-attachment-id input');
887 attachmentId.val(attachment.attributes.id);
888 }
889 });
890 };
891
892 wp.media.frames.frame.on('close', media_set_image);
893 wp.media.frames.frame.on('select', media_set_image);
894 wp.media.frames.frame.open();
895 });
896 }
897
898 // Form Builder - Empty out stored/hidden attachment ID when "Email header image" field is emptied
899 var emailHeaderImage = $('#form-builder-email-header-image');
900 var emailHeaderImageAttachmentId = $('.form-builder-email-header-image-attachment-id input');
901
902 $(emailHeaderImage).keyup(delay(function (e) {
903 if ($(this).val().length === 0) {
904 emailHeaderImageAttachmentId.val("");
905 }
906 }, 200));
907
908 // =============== Image Ratio Calculator / Preservation for Login Page Customizer >> Logo Image =================
909
910 // Code modified from: https://codepen.io/tobiasdev/pen/XNjxdZ by Tobias Bogliolo
911
912 var initialWidth, initialHeight, newWidth, newHeight, aspectRatio;
913
914 //Get new values:
915 function getValues(){
916 initialWidth = $(".login-page-logo-image-width-original input").val();
917 initialHeight = $(".login-page-logo-image-height-original input").val();
918 newWidth = $(".login-page-logo-image-width input").val();
919 newHeight = $(".login-page-logo-image-height input").val();
920 };
921
922 //Aspect ratio:
923 function getAspectRatio(){
924 // Formula: "Aspect Ratio = Width / Height".
925 return aspectRatio = initialWidth/initialHeight;
926 };
927
928 //Get new height:
929 $(".login-page-logo-image-width input").on("change keyup", function(){
930 // Refresh data.
931 getValues();
932 getAspectRatio();
933 // New height = new width / (original width / original height).
934 newHeight = Math.round(newWidth/aspectRatio);
935 // Output:
936 $(".login-page-logo-image-height input").val(newHeight);
937 });
938
939 //Get new width:
940 $(".login-page-logo-image-height input").on("change keyup", function(){
941 // Refresh data.
942 getValues();
943 getAspectRatio();
944 // New width = (original width / original height) * new height.
945 newWidth = Math.round(newHeight*aspectRatio);
946 // Output:
947 $(".login-page-logo-image-width input").val(newWidth);
948 });
949
950 //Reset:
951 $(".login-page-logo-image-width-original input, .login-page-logo-image-height-original input").on("change keyup", function(){
952 // Output:
953 $(".login-page-logo-image-width input").val("");
954 $(".login-page-logo-image-height input").val("");
955 });
956
957 // =============== ASE PRO =================
958
959 if ( asenhaStats.isYearEndPromoPeriod ) {
960
961 // Promo nudge
962 if ( asenhaStats.hidePromoNudge ) {
963 $('.asenha-promo-nudge').hide();
964 $('#bottom-upgrade-nudge').show();
965 } else {
966 $('.asenha-promo-nudge').show();
967 $('#bottom-upgrade-nudge').hide();
968 }
969
970 $('#dismiss-promo-nudge').click(function(e) {
971 e.preventDefault();
972 $.ajax({
973 url: ajaxurl,
974 data: {
975 'action':'dismiss_promo_nudge',
976 'nonce': adminPageVars.nonce
977 },
978 success:function(data) {
979 $('.asenha-promo-nudge').hide();
980 },
981 error:function(errorThrown) {
982 console.log(errorThrown);
983 }
984 });
985 });
986
987 } else {
988
989 // Upgrade nudge to Pro
990 if ( asenhaStats.hideUpgradeNudge ) {
991 $('.asenha-upgrade-nudge').hide();
992 $('#bottom-upgrade-nudge').show();
993 } else {
994 $('.asenha-upgrade-nudge').show();
995 $('#bottom-upgrade-nudge').hide();
996 }
997
998 $('#dismiss-upgrade-nudge').click(function(e) {
999 e.preventDefault();
1000 $.ajax({
1001 url: ajaxurl,
1002 data: {
1003 'action':'dismiss_upgrade_nudge',
1004 'nonce': adminPageVars.nonce
1005 },
1006 success:function(data) {
1007 $('.asenha-upgrade-nudge').hide();
1008 // $('#bottom-upgrade-nudge').show();
1009 },
1010 error:function(errorThrown) {
1011 console.log(errorThrown);
1012 }
1013 });
1014 });
1015
1016 }
1017
1018 // =============== SPONSORSHIP =================
1019
1020 // Stats on saving changes from asenha_admin_scripts() wp_localize_script() is availble in the 'asenhaStats' object-----
1021 // console.log( asenhaStats );
1022 // alert(JSON.stringify(asenhaStats));
1023 if ( asenhaStats.showSupportNudge ) {
1024 $('.asenha-support-nudge').show();
1025 } else {
1026 $('.asenha-support-nudge').hide();
1027 }
1028
1029 $('#have-shared,#have-reviewed').click(function(e) {
1030 e.preventDefault();
1031 // $.ajax({
1032 // url: 'https://bowo.io/asenha-sp-ndg',
1033 // method: 'GET',
1034 // dataType: 'jsonp',
1035 // crossDomain: true
1036 // });
1037 $.ajax({
1038 url: ajaxurl,
1039 data: {
1040 'action':'have_supported',
1041 'nonce': adminPageVars.nonce
1042 },
1043 success:function(data) {
1044 $('.asenha-support-nudge').hide();
1045 },
1046 error:function(errorThrown) {
1047 console.log(errorThrown);
1048 }
1049 });
1050 });
1051
1052 $('#support-nudge-dismiss').click(function(e) {
1053 e.preventDefault();
1054 // $.ajax({
1055 // url: 'https://bowo.io/asenha-sp-ndg',
1056 // method: 'GET',
1057 // dataType: 'jsonp',
1058 // crossDomain: true
1059 // });
1060 $.ajax({
1061 url: ajaxurl,
1062 data: {
1063 'action':'dismiss_support_nudge',
1064 'nonce': adminPageVars.nonce
1065 },
1066 success:function(data) {
1067 $('.asenha-support-nudge').hide();
1068 },
1069 error:function(errorThrown) {
1070 console.log(errorThrown);
1071 }
1072 });
1073 });
1074
1075 // Expand support notice | Modified from https://codepen.io/symonsays/pen/rzgEgY
1076 $('.asenha-support-nudge.nudge-show-more > .show-more').click(function(e) {
1077
1078 e.preventDefault();
1079
1080 var $this = $(this);
1081 $this.toggleClass('show-more');
1082 $this.hide();
1083
1084 if ($this.hasClass('show-more')) {
1085 $this.next().removeClass('opened',0);
1086 } else {
1087 $this.next().addClass('opened',0);
1088 }
1089
1090 });
1091
1092 // Collapse support notice | Modified from https://codepen.io/symonsays/pen/rzgEgY
1093 $('#support-nudge-show-less').click(function(e) {
1094
1095 e.preventDefault();
1096
1097 $('.nudge-wrapper-show-more').removeClass('opened',0);
1098 $('#support-nudge-show-moreless').addClass('show-more');
1099 $('#support-nudge-show-moreless').show();
1100
1101 });
1102
1103
1104
1105 // Modal for sponsoring plugin dev and maintenance: https://stephanwagner.me/jBox
1106
1107 // var sponsorModal = new jBox('Modal', {
1108 // attach: '#plugin-sponsor',
1109 // trigger: 'click', // or 'mouseenter'
1110 // // content: 'Test'
1111 // content: $('#asenha-sponsor'),
1112 // width: 740, // pixels
1113 // closeButton: 'box',
1114 // addClass: 'plugin-sponsor-modal',
1115 // overlayClass: 'plugin-sponsor-modal-overlay',
1116 // target: '#wpwrap', // where to anchor the modal
1117 // position: {
1118 // x: 'center',
1119 // y: 'top'
1120 // },
1121 // // fade: 1000,
1122 // animation: {
1123 // open: 'slide:top',
1124 // close: 'slide:top'
1125 // }
1126 // });
1127
1128 // $('#plugin-sponsor').click( function() {
1129 // $.ajax({
1130 // url: 'https://bowo.io/asenha-sp-btn',
1131 // method: 'GET',
1132 // dataType: 'jsonp',
1133 // crossDomain: true
1134 // // success: function(response) {
1135 // // console.log(response);
1136 // // }
1137 // });
1138 // });
1139
1140 }); // END OF $(document).ready()
1141
1142 })( jQuery );