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

<?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>