<?php /** * @package Freemius * @copyright Copyright (c) 2015, Freemius, Inc. * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 * @since 1.2.2.7 */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * @var array $VARS * @var Freemius $fs */ $fs = freemius( $VARS['id'] ); $slug = $fs->get_slug(); $menu_items = $fs->get_menu_items(); $show_settings_with_tabs = $fs->show_settings_with_tabs(); $tabs = array(); foreach ( $menu_items as $priority => $items ) { foreach ( $items as $item ) { if ( ! $item['show_submenu'] ) { $submenu_name = ('wp-support-forum' === $item['menu_slug']) ? 'support' : $item['menu_slug']; if ( 'pricing' === $submenu_name && ! $fs->is_pricing_page_visible() ) { continue; } if ( ! $show_settings_with_tabs || ! $fs->is_submenu_item_visible( $submenu_name, true ) ) { continue; } } $url = $fs->_get_admin_page_url( $item['menu_slug'] ); $title = $item['menu_title']; $tab = array( 'label' => $title, 'href' => $url, 'slug' => $item['menu_slug'], ); if ( 'pricing' === $item['menu_slug'] && $fs->is_in_trial_promotion() ) { $tab['href'] .= '&trial=true'; } $tabs[] = $tab; } } ?> <script type="text/javascript"> (function ($) { $(document).ready(function () { var $wrap = $('.wrap'); if (0 === $wrap.length) { $wrap = $('<div class="wrap">'); $wrap.insertBefore($('#wpbody-content .clear')); } var $tabsWrapper = $('.nav-tab-wrapper'), $tabs = $tabsWrapper.find('.nav-tab'), $tab = null; if (0 < $tabs.length) { // Tries to set $tab to the first inactive tab. for (var i = 0; i < $tabs.length; i++) { $tab = $($tabs[i]); if (!$tab.hasClass('nav-tab-active')) { break; } } } <?php if (0 < count( $tabs )) : ?> if (null == $tab) { // No tabs found, therefore, create new tabs section if required. var $h1 = $wrap.find('h1'); $tabsWrapper = $('<h2 class="nav-tab-wrapper"></h2>'); if (0 < $h1.length) { $tabsWrapper.insertAfter($h1); } else if (0 < $wrap.length) { $wrap.prepend($tabsWrapper); } $tab = $('<a href="#" class="nav-tab"></a>'); } // Create a clone. $tab = $tab.clone(); // Open in current page. $tab.removeAttr('target'); $tab.removeClass('nav-tab-active'); $tab.addClass('fs-tab'); $tab.addClass('<?php echo $fs->get_unique_affix() ?>'); var $tabClone = null; <?php $freemius_context_page = null ?> <?php foreach ($tabs as $tab) : ?> <?php $is_support_tab = ( 'wp-support-forum' == $tab['slug'] ) ?> // Add the Freemius tabs. $tabClone = $tab.clone(); $tabClone.html(<?php echo json_encode( $tab['label'] ) ?>) .attr('href', '<?php echo $is_support_tab ? $fs->get_support_forum_url() : $tab['href'] ?>') .appendTo($tabsWrapper) // Remove any custom click events. .off('click', '**') .addClass('<?php echo $tab['slug'] ?>') // Avoid tab click triggering parent events. .click(function (e) { e.stopPropagation(); }); <?php if ($is_support_tab) : ?> // Open support in a new tab/page. $tabClone.attr('target', '_blank'); <?php endif ?> <?php if ($fs->is_admin_page( $tab['slug'] )) : ?> <?php $freemius_context_page = $tab['slug'] ?> // Select the relevant Freemius tab. $tabs.removeClass('nav-tab-active'); $tabClone.addClass('nav-tab-active'); <?php if (in_array( $freemius_context_page, array( 'pricing', 'contact', 'checkout' ) )) : ?> // Add AJAX loader. $tabClone.prepend('<i class="fs-ajax-spinner"></i>'); // Hide loader after content fully loaded. $('.wrap i' + 'frame').load(function () { $(".fs-ajax-spinner").hide(); }); <?php endif ?> // Fix URLs that are starting with a hashtag. $tabs.each(function (j, tab) { if (0 === $(tab).attr('href').indexOf('#')) { $(tab).attr('href', '<?php echo esc_js( $fs->main_menu_url() ) ?>' + $(tab).attr('href')); } }); <?php endif ?> <?php endforeach ?> var selectTab = function ($tab) { $(window).load(function () { $tab.click(); // Scroll to the top since the browser will auto scroll to the anchor. document.body.scrollTop = 0; document.body.scrollLeft = 0; // window.scrollTo(0,0); }); }; // If the URL is loaded with a hashtag, find the context tab and select it. if (window.location.hash) { for (var j = 0; j < $tabs.length; j++) { if (window.location.hash === $($tabs[j]).attr('href')) { selectTab($($tabs[j])); break; } } } <?php if (is_string( $freemius_context_page ) && in_array( $freemius_context_page, array( 'pricing', 'contact', 'checkout' ) )) : ?> // Add margin to the upper section of the tabs to give extra space for the HTTPS header. // @todo This code assumes that the wrapper style is fully loaded, if there's a stylesheet that is not loaded via the HTML head, it may cause unpredicted margin-top. var $tabsWrap = $tabsWrapper.parents('.wrap'); $tabsWrap.css('marginTop', (parseInt($tabsWrap.css('marginTop'), 10) + 30) + 'px'); <?php endif ?> <?php endif ?> }); })(jQuery); </script>