190 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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>
 |