You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
6.6 KiB
PHP
190 lines
6.6 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>
|