Repository URL to install this package:
|
Version:
4.1.3 ▾
|
<?php
/**
* Settings: Display
*
* @package SimplePay\Core\Settings
* @copyright Copyright (c) 2020, Sandhills Development, LLC
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 4.0.0
*/
namespace SimplePay\Core\Settings;
use SimplePay\Core\Utils;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Outputs the setting's primary navigation.
*
* @since 4.0.0
*
* @param string $current_section Current Section ID.
*/
function primary_nav( $current_section ) {
$sections = Utils\get_collection( 'settings-sections' );
if ( false === $sections ) {
return;
}
$tabs = $sections->get_items();
?>
<div class="clear"></div>
<h2 class="nav-tab-wrapper simpay-nav-tab-wrapper">
<?php
foreach ( $tabs as $tab ) :
$url = get_url(
array(
'section' => $tab->id,
)
);
$active_class = $current_section === $tab->id
? 'nav-tab-active'
: ''
?>
<a
href="<?php echo esc_url( $url ); ?>"
class="nav-tab <?php echo esc_attr( $active_class ); ?>"
>
<?php echo wp_kses_post( $tab->label ); ?>
</a>
<?php endforeach; ?>
<?php
/**
* Allows furhter output after settings tabs.
*
* @since 3.0.0
*/
do_action( 'simpay_admin_page_settings_tabs' );
?>
</h2>
<?php
}
/**
* Outputs the setting's secondary navigation.
*
* @since 4.0.0
*
* @param string $current_subsection Current Subsection ID.
*/
function secondary_nav( $current_subsection ) {
$sections = Utils\get_collection( 'settings-sections' );
$subsections = Utils\get_collection( 'settings-subsections' );
if ( false === $sections || false === $subsections ) {
return;
}
// Get current Subsection.
$subsection = $subsections->get_item( $current_subsection );
if ( false === $subsection ) {
return;
}
// Get current Section.
$section = $sections->get_item( $subsection->section );
if ( false === $section ) {
return;
}
// Get the current Section's Subsections.
$tabs = $section->get_subsections();
// Don't output if there is only one registered Subsection.
if ( 1 === count( $tabs ) ) {
return;
}
?>
<nav class="simpay-settings-subsections">
<?php
foreach ( $tabs as $tab ) :
$url = get_url(
array(
'section' => $tab->section,
'subsection' => $tab->id,
)
);
$active_class = $current_subsection === $tab->id
? 'is-active'
: ''
?>
<a
href="<?php echo esc_url( $url ); ?>"
class="simpay-settings-subsections__subsection <?php echo esc_attr( $active_class ); ?>"
>
<?php echo wp_kses_post( $tab->label ); ?>
</a>
<?php endforeach; ?>
</nav>
<?php
}
/**
* Outputs relevant registered Sections, Subsections, and Settings for the
* current view.
*
* @since 4.0.0
*/
function page() {
$section = ! empty( $_GET['tab'] )
? sanitize_key( $_GET['tab'] )
: get_main_section_id();
$subsection = ! empty( $_GET['subsection'] )
? sanitize_key( $_GET['subsection'] )
: get_main_subsection_id( $section );
$sidebar = apply_filters(
'simpay_settings_sidebar_template',
SIMPLE_PAY_INC . 'core/admin/notices/promos/general/sidebar.php'
);
$sidebar_class = ! empty( $sidebar )
? 'simpay-global-settings--has-sidebar'
: null;
// Find the legacy "page" value for hook/filter compatibility.
switch ( $section ) {
case 'stripe':
$page = 'keys';
break;
case 'payment-confirmations':
$page = 'display';
break;
default:
$page = $section;
}
?>
<div
id="simpay-global-settings"
class="wrap <?php echo esc_attr( $sidebar_class ); ?>"
>
<h1 class="wp-heading-inline">
<?php esc_html_e( 'Settings', 'simple-pay' ); ?>
</h1>
<hr class="wp-header-end">
<div class="wp-clearfix">
<div
id="simpay-settings-left"
class="simpay-settings <?php echo esc_attr( $section . '-' . $subsection ); ?>"
>
<?php
settings_errors();
primary_nav( $section );
secondary_nav( $subsection );
?>
<form method="post" action="options.php">
<?php
/**
* Allows output before a settings section.
*
* @since 3.0.0
*/
do_action( 'simpay_admin_page_settings_' . $page . '_start' );
settings_fields( 'simpay_settings' );
do_settings_sections(
sprintf(
'simpay_settings_%s_%s',
$section,
$subsection
)
);
/**
* Allows output after a settings section.
*
* @since 3.0.0
*/
do_action( 'simpay_admin_page_settings_' . $page . '_end' );
/**
* Filters the display of the setting's "Submit" button.
*
* @since 3.0.0
*
* @param bool $submit If the submit button should display. Default true.
*/
$submit = apply_filters(
'simpay_admin_page_settings_' . $page . '_submit',
true
);
if ( true === $submit ) {
submit_button();
}
?>
<input type="hidden" name="section" value="<?php echo esc_attr( $section ); ?>" />
<input type="hidden" name="subsection" value="<?php echo esc_attr( $subsection ); ?>" />
</form>
</div>
<div id="simpay-settings-sidebar-right">
<?php
if ( ! empty( $sidebar ) ) :
include_once $sidebar;
endif;
?>
</div>
<br class="simpay-clearfix">
</div>
</div>
<?php
}
/**
* Adds script data to visually toggle registered settings.
*
* @since 4.0.0
*/
function register_setting_toggles() {
$section = ! empty( $_GET['tab'] )
? sanitize_key( $_GET['tab'] )
: get_main_section_id();
$subsection = ! empty( $_GET['subsection'] )
? sanitize_key( $_GET['subsection'] )
: get_main_subsection_id( $section );
$settings = Utils\get_collection( 'settings' );
if ( false === $settings ) {
return;
}
$settings = $settings->by( 'subsection', $subsection );
$toggles = array();
foreach ( $settings as $setting ) {
if ( empty( $setting->toggles ) ) {
continue;
}
$toggles[] = array(
'id' => $setting->id,
'value' => $setting->toggles['value'],
'toggles' => $setting->toggles['settings'],
);
}
wp_localize_script(
'simpay-admin',
'simpayAdminSettingToggles',
$toggles
);
}
add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\\register_setting_toggles', 20 );