PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.7.1
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.7.1
2.7.1 2.7.2 2.7.0 2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 All 141 releases
metasync / admin / js / metasync-sitemap-tabs.js

metasync-sitemap-tabs.js in Search Atlas SEO – OTTO AI SEO Automation for WordPress 2.7.1, at admin/js/metasync-sitemap-tabs.js

95 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Sitemap Tabs - Client-side tab switching & scrollable checkbox lists
3 *
4 * @package Metasync
5 * @since 1.0.0
6 */
7 (function ($) {
8 'use strict';
9
10 var validTabs = ['general', 'news', 'video'];
11 var currentActiveTab = 'general';
12
13 /* ---- Tab switching ---- */
14
15 function switchToTab(targetTab) {
16 if (validTabs.indexOf(targetTab) === -1) {
17 targetTab = 'general';
18 }
19 currentActiveTab = targetTab;
20
21 $('.metasync-sitemap-tabs .metasync-tab-nav a').removeClass('active');
22 $('.metasync-sitemap-tabs .metasync-tab-nav a[data-tab="' + targetTab + '"]').addClass('active');
23
24 $('.metasync-sitemap-tab-content').removeClass('active');
25 $('#metasync-sitemap-' + targetTab).addClass('active');
26 }
27
28 function getActiveTab() {
29 var urlParams = new URLSearchParams(window.location.search);
30 var urlTab = urlParams.get('tab');
31 if (urlTab && validTabs.indexOf(urlTab) !== -1) {
32 return urlTab;
33 }
34 if (typeof metasyncSitemapTabs !== 'undefined' && metasyncSitemapTabs.activeTab) {
35 return metasyncSitemapTabs.activeTab;
36 }
37 return 'general';
38 }
39
40 /* ---- Scrollable checkbox search/filter ---- */
41
42 function initCheckboxSearch() {
43 $('.metasync-checkbox-search').on('input', function () {
44 var query = $(this).val().toLowerCase();
45 var $container = $(this).closest('td');
46 var $scrollBox = $container.find('.metasync-checkbox-scroll');
47 var $labels = $scrollBox.find('label');
48 var $noResults = $scrollBox.find('.metasync-no-results');
49 var visible = 0;
50
51 $labels.each(function () {
52 var text = $(this).text().toLowerCase();
53 var match = text.indexOf(query) !== -1;
54 $(this).toggle(match);
55 if (match) visible++;
56 });
57
58 $noResults.toggle(visible === 0);
59 });
60 }
61
62 /* ---- Init ---- */
63
64 $(document).ready(function () {
65 switchToTab(getActiveTab());
66
67 // Tab click
68 $('.metasync-sitemap-tabs .metasync-tab-nav a').on('click', function (e) {
69 e.preventDefault();
70 var targetTab = $(this).data('tab');
71 switchToTab(targetTab);
72
73 var url = new URL(window.location);
74 url.searchParams.set('tab', targetTab);
75 window.history.pushState({}, '', url);
76 });
77
78 // Form redirect tab
79 $('.metasync-sitemap-tab-content form').on('submit', function () {
80 var $form = $(this);
81 $form.find('input[name="redirect_tab"]').remove();
82 $form.append('<input type="hidden" name="redirect_tab" value="' + currentActiveTab + '">');
83 });
84
85 // Browser back/forward
86 $(window).on('popstate', function () {
87 var urlParams = new URLSearchParams(window.location.search);
88 switchToTab(urlParams.get('tab') || 'general');
89 });
90
91 // Init search filters
92 initCheckboxSearch();
93 });
94 })(jQuery);
95