1/** 2 * sswcmaat.plugin.js 3 * Custom JavaScript code required by the plugin 4 * 5 * @version 1.3.2 6 */ 7jQuery(function ($) { 8 9 'use strict'; 10 11 function sswcmaat() { 12 var requestRunning = false, 13 links = (sswcmaat_localize !== 'undefined' && sswcmaat_localize.internal_links) ? '.woocommerce-MyAccount-navigation > ul > li > a, .myaccount-menu > li > a, a.sswcmaat-ajax-link, .my_account_orders a, .woocommerce-Addresses a.edit' : '.woocommerce-MyAccount-navigation > ul > li > a, .myaccount-menu > li > a', 14 default_container = $('.woocommerce-MyAccount-content'), 15 yith_container = $('#my-account-content'), 16 container = $(yith_container).length ? yith_container : default_container, 17 endpoint = $(yith_container).length ? ' #my-account-content' : ' .woocommerce-MyAccount-content', 18 link_text = $('.woocommerce-MyAccount-navigation > ul > li.is-active > a, .myaccount-menu > li.active > a').text(), 19 account_nav = $('.woocommerce-MyAccount-navigation > ul, .myaccount-menu'), 20 id = 'sswcmaat-' + $.trim(link_text).replace(/\s/g, "%20"), 21 title_selector = (sswcmaat_localize !== 'undefined' && sswcmaat_localize.title_selector) ? sswcmaat_localize.title_selector : '.entry-title'; 22 23 // First tab is already loaded 24 $('.woocommerce-MyAccount-navigation > ul > li.is-active > a, .myaccount-menu > li.active > a').attr('data-loaded', 'true'); 25 26 // Update page heading text with current tab 27 if (link_text) { 28 $(title_selector).text(link_text); 29 } 30 31 // Update document title 32 if (sswcmaat_localize.change_doc_title && link_text) { 33 $(document).find('title').html(link_text + ' – ' + sswcmaat_localize.site_name); 34 } 35 36 // Wrap tab container 37 $(container).wrapInner('<div class="sswcmaat-tab">'); 38 $(container).find('.sswcmaat-tab').attr('data-heading', link_text); 39 40 // create dummy holder 41 $(container).append('<div class="sswcmaat-loader">'); 42 $('.sswcmaat-tab').attr('id', id); 43 44 if (links.length) { 45 46 $(document).on('click', links, function (e) { 47 // Do not ajaxify if it is a logout link 48 if ($(this).parent().hasClass('woocommerce-MyAccount-navigation-link--customer-logout')) { 49 return; 50 } 51 e.preventDefault(); 52 53 var href = $(this).attr('href'), 54 btn = $(this), 55 btn_text = $(this).text(), 56 id = 'sswcmaat-' + $.trim(btn_text).replace(/\s/g, "%20"), 57 to_show = '', 58 h_text = $(document).find(title_selector).text(); 59 60 to_show = $(document.getElementById(id)); 61 62 if (!$(btn).data('loaded')) { 63 64 if (container.length) { 65 $(container).find('.sswcmaat-tab').hide(); 66 $(container).addClass('sswcmaat-loading'); 67 if (requestRunning) { // return if an ajax request is already running 68 return; 69 } 70 requestRunning = true; 71 72 // Remove error messages upon tab click 73 $('.woocommerce > .woocommerce-message, .woocommerce > .woocommerce-info, .woocommerce > .woocommerce-error').hide(); 74 $('.load-error').remove(); 75 76 $.ajax({
77 url: href, 78 timeout: (sswcmaat_localize !== 'undefined' && sswcmaat_localize.ajax_timeout) ? sswcmaat_localize.ajax_timeout : 30000, 79 error: function (response, jqXHR, textStatus) { 80 81 var not_loaded = sswcmaat_localize !== 'undefined' ? sswcmaat_localize.loading_error : ''; 82 83 $(container).append('<div class="woocommerce-error load-error">' + not_loaded + ' ' + textStatus + '</div>'); 84 $(container).removeClass('sswcmaat-loading'); 85 $('.woocommerce-MyAccount-navigation > ul > li').removeClass('is-active'); 86 $('.myaccount-menu > li').removeClass('active'); 87 $(btn).parent('li').addClass('is-active'); 88 $(btn).parent('li').addClass('active'); 89 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('is-active'); 90 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('active'); 91 requestRunning = false; 92 return; 93 94 }, 95 success: function (response) { 96 97 var content = $(response).find(endpoint); 98 99 h_text = $(response).find(title_selector).text(); 100 101 $(container).find('.sswcmaat-loader').html($(content).html()); 102 103 // extract loaded content and convert into tab 104 if ($(yith_container).length) { 105 $(container).find('.sswcmaat-loader').addClass('sswcmaat-tab').removeClass('sswcmaat-loader').attr('id', id).attr('data-heading', btn_text); 106 } else { 107 $(container).find('.sswcmaat-loader').addClass('sswcmaat-tab').removeClass('woocommerce-MyAccount-content').removeClass('sswcmaat-loader').attr('id', id).attr('data-heading', btn_text); 108 } 109 110 // add dummy holder for next content 111 $(container).append('<div class="sswcmaat-loader">'); 112 113 $('.woocommerce-MyAccount-navigation > ul > li').removeClass('is-active'); 114 $('.myaccount-menu > li').removeClass('active'); 115 116 $(btn).attr('data-loaded', 'true'); 117 $(btn).parent('li').addClass('is-active'); 118 $(btn).parent('li').addClass('active'); 119 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('is-active'); 120 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('active'); 121 122 // Update page heading text 123 $(title_selector).text(h_text); 124 125 // Update document title 126 if (sswcmaat_localize.change_doc_title) { 127 $(document).find('title').html(btn_text + ' – ' + sswcmaat_localize.site_name); 128 } 129 130 // Update browser URL 131 if (history.pushState) { 132 history.pushState({}, '', href); 133 } 134 135 requestRunning = false; 136 137 // Remove loading spinner 138 $(container).removeClass('sswcmaat-loading'); 139 140 // trigger an event 141 $(document).trigger("sswcmaat-loaded"); 142 143 } // success 144 145 }); 146 } // container.length 147 } // if not btn.data('loaded') 148 else { 149 150 $('.woocommerce-MyAccount-navigation > ul > li').removeClass('is-active'); 151 $('.myaccount-menu > li').removeClass('active'); 152 $(btn).parent('li').addClass('is-active'); 153 $(btn).parent('li').addClass('active'); 154 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('is-active'); 155 $(account_nav).find('a[href="' + href + '"]').parent('li').addClass('active'); 156 157 // hide all tabs and show the one whose link is clicked 158 $('.sswcmaat-tab').hide(); 159 $(to_show).show(); 160 161 // Update page heading text 162 $(title_selector).text(to_show.data('heading'));
163 164 // Update document title 165 if (sswcmaat_localize.change_doc_title) { 166 $(document).find('title').html(to_show.data('heading') + ' – ' + sswcmaat_localize.site_name); 167 } 168 169 if (history.pushState) { 170 history.pushState({}, '', href); 171 } 172 } 173 }); 174 } // links.length 175 } // sswcmat 176 177 if (sswcmaat_localize !== 'undefined' && !sswcmaat_localize.disable_ajax) { 178 sswcmaat(); 179 } 180 181}); //$
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.