2011-08-10 17:11:11 +00:00
< ? php
/**
* Functions for the settings page in admin .
2012-08-10 09:35:25 +00:00
*
2011-08-10 17:11:11 +00:00
* The settings page contains options for the WooCommerce plugin - this file contains functions to display
* and save the list of options .
*
* @ author WooThemes
* @ category Admin
2012-08-14 12:21:34 +00:00
* @ package WooCommerce / Admin / Settings
* @ version 1.6 . 4
2011-08-10 17:11:11 +00:00
*/
2012-10-15 10:32:24 +00:00
if ( ! defined ( 'ABSPATH' ) ) exit ; // Exit if accessed directly
2012-08-15 18:30:35 +00:00
/** Store settings in this array */
2011-09-09 14:23:32 +00:00
global $woocommerce_settings ;
2011-08-10 17:11:11 +00:00
2012-08-15 18:30:35 +00:00
/** Settings init */
2012-08-14 12:21:34 +00:00
include ( 'settings/settings-init.php' );
2011-10-25 12:54:16 +00:00
2012-05-19 19:04:34 +00:00
if ( ! function_exists ( 'woocommerce_settings' ) ) {
2012-08-14 12:21:34 +00:00
/**
* Settings page .
*
* Handles the display of the main woocommerce settings page in admin .
*
* @ access public
* @ return void
*/
2012-05-19 19:04:34 +00:00
function woocommerce_settings () {
2012-12-02 21:31:43 +00:00
global $woocommerce , $woocommerce_settings , $current_section , $current_tab ;
2012-11-27 16:22:47 +00:00
2012-09-10 11:26:26 +00:00
do_action ( 'woocommerce_settings_start' );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Get current tab/section
2012-10-16 15:22:07 +00:00
$current_tab = ( empty ( $_GET [ 'tab' ] ) ) ? 'general' : sanitize_text_field ( urldecode ( $_GET [ 'tab' ] ) );
$current_section = ( empty ( $_REQUEST [ 'section' ] ) ) ? '' : sanitize_text_field ( urldecode ( $_REQUEST [ 'section' ] ) );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Save settings
if ( ! empty ( $_POST ) ) {
2012-08-10 09:35:25 +00:00
2013-04-04 16:45:39 +00:00
if ( empty ( $_REQUEST [ '_wpnonce' ] ) || ! wp_verify_nonce ( $_REQUEST [ '_wpnonce' ], 'woocommerce-settings' ) )
2012-08-10 09:35:25 +00:00
die ( __ ( 'Action failed. Please refresh the page and retry.' , 'woocommerce' ) );
2012-05-19 19:04:34 +00:00
if ( ! $current_section ) {
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$old_base_color = get_option ( 'woocommerce_frontend_css_base_color' );
$old_base_color = get_option ( 'woocommerce_frontend_css_base_color' );
2012-05-30 15:20:54 +00:00
include_once ( 'settings/settings-save.php' );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
switch ( $current_tab ) {
2012-12-31 18:25:09 +00:00
case " payment_gateways " :
woocommerce_update_options ( $woocommerce_settings [ $current_tab ] );
$woocommerce -> payment_gateways -> process_admin_options ();
break ;
case " shipping " :
woocommerce_update_options ( $woocommerce_settings [ $current_tab ] );
$woocommerce -> shipping -> process_admin_options ();
break ;
2013-01-20 13:38:45 +00:00
default :
2013-01-20 13:44:05 +00:00
if ( isset ( $woocommerce_settings [ $current_tab ] ) )
woocommerce_update_options ( $woocommerce_settings [ $current_tab ] );
2013-01-20 13:38:45 +00:00
// Trigger action for tab
do_action ( 'woocommerce_update_options_' . $current_tab );
break ;
2012-05-19 19:04:34 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
do_action ( 'woocommerce_update_options' );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Handle Colour Settings
if ( $current_tab == 'general' && get_option ( 'woocommerce_frontend_css' ) == 'yes' ) {
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Save settings
$primary = ( ! empty ( $_POST [ 'woocommerce_frontend_css_primary' ] ) ) ? woocommerce_format_hex ( $_POST [ 'woocommerce_frontend_css_primary' ] ) : '' ;
$secondary = ( ! empty ( $_POST [ 'woocommerce_frontend_css_secondary' ] ) ) ? woocommerce_format_hex ( $_POST [ 'woocommerce_frontend_css_secondary' ] ) : '' ;
$highlight = ( ! empty ( $_POST [ 'woocommerce_frontend_css_highlight' ] ) ) ? woocommerce_format_hex ( $_POST [ 'woocommerce_frontend_css_highlight' ] ) : '' ;
$content_bg = ( ! empty ( $_POST [ 'woocommerce_frontend_css_content_bg' ] ) ) ? woocommerce_format_hex ( $_POST [ 'woocommerce_frontend_css_content_bg' ] ) : '' ;
$subtext = ( ! empty ( $_POST [ 'woocommerce_frontend_css_subtext' ] ) ) ? woocommerce_format_hex ( $_POST [ 'woocommerce_frontend_css_subtext' ] ) : '' ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$colors = array (
2012-09-17 00:53:17 +00:00
'primary' => $primary ,
'secondary' => $secondary ,
'highlight' => $highlight ,
'content_bg' => $content_bg ,
'subtext' => $subtext
2012-05-19 19:04:34 +00:00
);
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$old_colors = get_option ( 'woocommerce_frontend_css_colors' );
update_option ( 'woocommerce_frontend_css_colors' , $colors );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
if ( $old_colors != $colors )
woocommerce_compile_less_styles ();
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
} else {
2012-08-10 09:35:25 +00:00
2012-05-29 14:02:18 +00:00
// If saving a shipping methods options, load 'er up
2013-01-07 17:23:09 +00:00
if ( ( $current_tab == 'shipping' || $current_tab == 'payment_gateways' && class_exists ( $current_section ) ) ) {
2012-11-27 16:22:47 +00:00
2013-01-07 17:23:09 +00:00
$current_section_class = new $current_section ();
do_action ( 'woocommerce_update_options_' . $current_tab . '_' . $current_section_class -> id );
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
// If saving an email's options, load theme
} elseif ( $current_tab == 'email' ) {
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
// Load mailer
2013-01-10 15:17:33 +00:00
$mailer = $woocommerce -> mailer ();
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
if ( class_exists ( $current_section ) ) {
$current_section_class = new $current_section ();
do_action ( 'woocommerce_update_options_' . $current_tab . '_' . $current_section_class -> id );
} else {
do_action ( 'woocommerce_update_options_' . $current_tab . '_' . $current_section );
}
2012-11-27 16:22:47 +00:00
2012-12-02 21:31:43 +00:00
// Save tax
} elseif ( $current_tab == 'tax' ) {
include_once ( 'settings/settings-tax-rates.php' );
woocommerce_tax_rates_setting_save ();
2012-05-29 14:02:18 +00:00
} else {
2012-08-10 09:35:25 +00:00
2012-05-29 14:02:18 +00:00
// Save section only
do_action ( 'woocommerce_update_options_' . $current_tab . '_' . $current_section );
2012-08-10 09:35:25 +00:00
2012-05-29 14:02:18 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-01 18:28:45 +00:00
}
2012-08-10 09:35:25 +00:00
2012-10-10 09:21:04 +00:00
// Clear any unwanted data
2012-05-19 19:04:34 +00:00
$woocommerce -> clear_product_transients ();
2012-08-10 09:35:25 +00:00
2013-04-05 21:24:51 +00:00
delete_transient ( 'woocommerce_cache_excluded_uris' );
2012-05-19 19:04:34 +00:00
// Redirect back to the settings page
$redirect = add_query_arg ( 'saved' , 'true' );
2012-08-10 09:35:25 +00:00
if ( ! empty ( $_POST [ 'subtab' ] ) ) $redirect = add_query_arg ( 'subtab' , esc_attr ( str_replace ( '#' , '' , $_POST [ 'subtab' ] ) ), $redirect );
2012-10-16 15:22:07 +00:00
wp_safe_redirect ( $redirect );
2012-05-19 19:04:34 +00:00
exit ;
2012-04-11 09:01:22 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Get any returned messages
$error = ( empty ( $_GET [ 'wc_error' ] ) ) ? '' : urldecode ( stripslashes ( $_GET [ 'wc_error' ] ) );
$message = ( empty ( $_GET [ 'wc_message' ] ) ) ? '' : urldecode ( stripslashes ( $_GET [ 'wc_message' ] ) );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
if ( $error || $message ) {
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
if ( $error ) {
2012-10-16 14:46:21 +00:00
echo '<div id="message" class="error fade"><p><strong>' . esc_html ( $error ) . '</strong></p></div>' ;
2012-05-19 19:04:34 +00:00
} else {
2012-10-16 14:46:21 +00:00
echo '<div id="message" class="updated fade"><p><strong>' . esc_html ( $message ) . '</strong></p></div>' ;
2012-05-19 19:04:34 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
} elseif ( ! empty ( $_GET [ 'saved' ] ) ) {
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
echo '<div id="message" class="updated fade"><p><strong>' . __ ( 'Your settings have been saved.' , 'woocommerce' ) . '</strong></p></div>' ;
2012-08-10 09:35:25 +00:00
2012-04-30 19:50:35 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Were the settings saved?
if ( ! empty ( $_GET [ 'saved' ] ) ) {
do_action ( 'woocommerce_settings_saved' );
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Hide WC Link
2013-03-01 16:03:10 +00:00
if ( ! empty ( $_GET [ 'hide-wc-extensions-message' ] ) )
update_option ( 'hide-wc-extensions-message' , 1 );
2012-05-19 19:04:34 +00:00
?>
< div class = " wrap woocommerce " >
2012-06-25 14:31:58 +00:00
< form method = " post " id = " mainform " action = " " enctype = " multipart/form-data " >
2012-05-19 19:04:34 +00:00
< div class = " icon32 icon32-woocommerce-settings " id = " icon-woocommerce " >< br /></ div >< h2 class = " nav-tab-wrapper woo-nav-tab-wrapper " >
< ? php
$tabs = array (
'general' => __ ( 'General' , 'woocommerce' ),
'catalog' => __ ( 'Catalog' , 'woocommerce' ),
'pages' => __ ( 'Pages' , 'woocommerce' ),
'inventory' => __ ( 'Inventory' , 'woocommerce' ),
'tax' => __ ( 'Tax' , 'woocommerce' ),
'shipping' => __ ( 'Shipping' , 'woocommerce' ),
'payment_gateways' => __ ( 'Payment Gateways' , 'woocommerce' ),
'email' => __ ( 'Emails' , 'woocommerce' ),
'integration' => __ ( 'Integration' , 'woocommerce' )
);
2013-01-17 17:02:14 +00:00
if ( ! $woocommerce -> integrations -> get_integrations () )
2013-01-16 16:20:25 +00:00
unset ( $tabs [ 'integration' ] );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$tabs = apply_filters ( 'woocommerce_settings_tabs_array' , $tabs );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
foreach ( $tabs as $name => $label ) {
2012-07-29 10:21:17 +00:00
echo '<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=' . $name ) . '" class="nav-tab ' ;
2012-05-19 19:04:34 +00:00
if ( $current_tab == $name ) echo 'nav-tab-active' ;
echo '">' . $label . '</a>' ;
2012-04-11 09:01:22 +00:00
}
2012-08-10 09:35:25 +00:00
do_action ( 'woocommerce_settings_tabs' );
2012-05-19 19:04:34 +00:00
?>
</ h2 >
< ? php wp_nonce_field ( 'woocommerce-settings' , '_wpnonce' , true , true ); ?>
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
< ? php if ( ! get_option ( 'hide-wc-extensions-message' ) ) : ?>
2012-10-16 09:45:33 +00:00
< div id = " woocommerce_extensions " >< a href = " <?php echo add_query_arg('hide-wc-extensions-message', 'true') ?> " class = " hide " >& times ; </ a >< ? php printf ( __ ( 'More functionality and gateway options available via <a href="%s" target="_blank">WC official extensions</a>.' , 'woocommerce' ), 'http://www.woothemes.com/extensions/woocommerce-extensions/' ); ?> </div>
2012-05-19 19:04:34 +00:00
< ? php endif ; ?>
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
< ? php
switch ( $current_tab ) :
case " general " :
include_once ( 'settings/settings-frontend-styles.php' );
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
break ;
case " tax " :
2012-12-02 21:31:43 +00:00
$links = array (
'<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=tax' ) . '" class="' . ( $current_section == '' ? 'current' : '' ) . '">' . __ ( 'Tax Options' , 'woocommerce' ) . '</a>'
);
// Get tax classes and display as links
2012-12-03 10:57:36 +00:00
$tax_classes = array_filter ( array_map ( 'trim' , explode ( " \n " , get_option ( 'woocommerce_tax_classes' ) ) ) );
$links [] = __ ( 'Tax Rates' , 'woocommerce' ) . ': <a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=tax§ion=standard' ) . '" class="' . ( $current_section == 'standard' ? 'current' : '' ) . '">' . __ ( 'Standard' , 'woocommerce' ) . '</a>' ;
2012-12-02 21:31:43 +00:00
if ( $tax_classes )
foreach ( $tax_classes as $class )
2012-12-03 10:57:36 +00:00
$links [] = '<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=tax§ion=' . sanitize_title ( $class ) ) . '" class="' . ( $current_section == sanitize_title ( $class ) ? 'current' : '' ) . '">' . $class . '</a>' ;
2012-12-02 21:31:43 +00:00
echo '<ul class="subsubsub"><li>' . implode ( ' | </li><li>' , $links ) . '</li></ul><br class="clear" />' ;
2012-12-03 10:57:36 +00:00
if ( $current_section == 'standard' || in_array ( $current_section , array_map ( 'sanitize_title' , $tax_classes ) ) ) {
2012-12-02 21:31:43 +00:00
include_once ( 'settings/settings-tax-rates.php' );
woocommerce_tax_rates_setting ();
} else {
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
}
2012-05-19 19:04:34 +00:00
break ;
case " pages " :
case " catalog " :
case " inventory " :
2012-04-11 09:01:22 +00:00
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
2012-05-19 19:04:34 +00:00
break ;
2012-09-17 00:53:17 +00:00
case " email " :
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
$current = $current_section ? '' : 'class="current"' ;
$links = array ( '<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=email' ) . '" ' . $current . '>' . __ ( 'Email Options' , 'woocommerce' ) . '</a>' );
// Define emails that can be customised here
$mailer = $woocommerce -> mailer ();
$email_templates = $mailer -> get_emails ();
foreach ( $email_templates as $email ) {
$title = empty ( $email -> title ) ? ucwords ( $email -> id ) : ucwords ( $email -> title );
$current = ( get_class ( $email ) == $current_section ) ? 'class="current"' : '' ;
2012-10-16 14:46:21 +00:00
$links [] = '<a href="' . add_query_arg ( 'section' , get_class ( $email ), admin_url ( 'admin.php?page=woocommerce_settings&tab=email' ) ) . '"' . $current . '>' . esc_html ( $title ) . '</a>' ;
2012-09-17 00:53:17 +00:00
}
echo '<ul class="subsubsub"><li>' . implode ( ' | </li><li>' , $links ) . '</li></ul><br class="clear" />' ;
2012-11-27 16:22:47 +00:00
2012-09-17 00:53:17 +00:00
// Specific email options
if ( $current_section ) {
foreach ( $email_templates as $email ) {
if ( get_class ( $email ) == $current_section ) {
$email -> admin_options ();
break ;
}
}
} else {
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
}
break ;
2012-05-19 19:04:34 +00:00
case " shipping " :
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
include ( 'settings/settings-shipping-methods.php' );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$current = $current_section ? '' : 'class="current"' ;
2012-08-10 09:35:25 +00:00
2012-10-16 09:45:33 +00:00
$links = array ( '<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=shipping' ) . '" ' . $current . '>' . __ ( 'Shipping Options' , 'woocommerce' ) . '</a>' );
2012-08-10 09:35:25 +00:00
2012-05-29 14:02:18 +00:00
// Load shipping methods so we can show any global options they may have
2012-05-29 12:32:54 +00:00
$shipping_methods = $woocommerce -> shipping -> load_shipping_methods ();
2012-08-10 09:35:25 +00:00
2012-05-29 12:32:54 +00:00
foreach ( $shipping_methods as $method ) {
2012-08-10 09:35:25 +00:00
2012-05-29 12:32:54 +00:00
if ( ! $method -> has_settings () ) continue ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$title = empty ( $method -> method_title ) ? ucwords ( $method -> id ) : ucwords ( $method -> method_title );
2012-08-10 09:35:25 +00:00
2012-05-29 14:02:18 +00:00
$current = ( get_class ( $method ) == $current_section ) ? 'class="current"' : '' ;
2012-08-10 09:35:25 +00:00
2012-10-16 14:46:21 +00:00
$links [] = '<a href="' . add_query_arg ( 'section' , get_class ( $method ), admin_url ( 'admin.php?page=woocommerce_settings&tab=shipping' ) ) . '"' . $current . '>' . esc_html ( $title ) . '</a>' ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
echo '<ul class="subsubsub"><li>' . implode ( ' | </li><li>' , $links ) . '</li></ul><br class="clear" />' ;
2012-08-10 09:35:25 +00:00
2012-04-11 09:01:22 +00:00
// Specific method options
2012-05-19 19:04:34 +00:00
if ( $current_section ) {
2012-05-29 14:02:18 +00:00
foreach ( $shipping_methods as $method ) {
if ( get_class ( $method ) == $current_section && $method -> has_settings () ) {
$method -> admin_options ();
break ;
}
}
2012-05-19 19:04:34 +00:00
} else {
2012-12-31 18:25:09 +00:00
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
2012-04-11 09:01:22 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
break ;
2012-08-10 09:35:25 +00:00
case " payment_gateways " :
2012-05-19 19:04:34 +00:00
include ( 'settings/settings-payment-gateways.php' );
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
$current = $current_section ? '' : 'class="current"' ;
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
$links = array ( '<a href="' . admin_url ( 'admin.php?page=woocommerce_settings&tab=payment_gateways' ) . '" ' . $current . '>' . __ ( 'Payment Gateways' , 'woocommerce' ) . '</a>' );
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
// Load shipping methods so we can show any global options they may have
$payment_gateways = $woocommerce -> payment_gateways -> payment_gateways ();
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
foreach ( $payment_gateways as $gateway ) {
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
$title = empty ( $gateway -> method_title ) ? ucwords ( $gateway -> id ) : ucwords ( $gateway -> method_title );
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
$current = ( get_class ( $gateway ) == $current_section ) ? 'class="current"' : '' ;
2012-08-10 09:35:25 +00:00
2012-12-31 18:25:09 +00:00
$links [] = '<a href="' . add_query_arg ( 'section' , get_class ( $gateway ), admin_url ( 'admin.php?page=woocommerce_settings&tab=payment_gateways' ) ) . '"' . $current . '>' . esc_html ( $title ) . '</a>' ;
}
echo '<ul class="subsubsub"><li>' . implode ( ' | </li><li>' , $links ) . '</li></ul><br class="clear" />' ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Specific method options
2012-12-31 18:25:09 +00:00
if ( $current_section ) {
foreach ( $payment_gateways as $gateway ) {
if ( get_class ( $gateway ) == $current_section ) {
$gateway -> admin_options ();
break ;
}
}
} else {
woocommerce_admin_fields ( $woocommerce_settings [ $current_tab ] );
2012-05-19 19:04:34 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
break ;
case " integration " :
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$integrations = $woocommerce -> integrations -> get_integrations ();
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$current_section = empty ( $current_section ) ? key ( $integrations ) : $current_section ;
2013-01-20 13:38:45 +00:00
2013-01-16 15:46:40 +00:00
$links = array ();
2013-01-20 13:38:45 +00:00
2012-05-19 19:04:34 +00:00
foreach ( $integrations as $integration ) {
$title = empty ( $integration -> method_title ) ? ucwords ( $integration -> id ) : ucwords ( $integration -> method_title );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
$current = ( $integration -> id == $current_section ) ? 'class="current"' : '' ;
2012-08-10 09:35:25 +00:00
2012-10-16 14:46:21 +00:00
$links [] = '<a href="' . add_query_arg ( 'section' , $integration -> id , admin_url ( 'admin.php?page=woocommerce_settings&tab=integration' ) ) . '"' . $current . '>' . esc_html ( $title ) . '</a>' ;
2012-05-19 19:04:34 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
echo '<ul class="subsubsub"><li>' . implode ( ' | </li><li>' , $links ) . '</li></ul><br class="clear" />' ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
if ( isset ( $integrations [ $current_section ] ) )
$integrations [ $current_section ] -> admin_options ();
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
break ;
default :
do_action ( 'woocommerce_settings_tabs_' . $current_tab );
break ;
endswitch ;
?>
< p class = " submit " >
2012-11-16 18:13:23 +00:00
< ? php if ( ! isset ( $GLOBALS [ 'hide_save_button' ] ) ) : ?>
< input name = " save " class = " button-primary " type = " submit " value = " <?php _e( 'Save changes', 'woocommerce' ); ?> " />
< ? php endif ; ?>
2012-05-19 19:04:34 +00:00
< input type = " hidden " name = " subtab " id = " last_tab " />
</ p >
</ form >
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
< script type = " text/javascript " >
jQuery ( window ) . load ( function (){
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Countries
jQuery ( 'select#woocommerce_allowed_countries' ) . change ( function (){
if ( jQuery ( this ) . val () == " specific " ) {
jQuery ( this ) . parent () . parent () . next ( 'tr' ) . show ();
} else {
jQuery ( this ) . parent () . parent () . next ( 'tr' ) . hide ();
}
}) . change ();
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Color picker
jQuery ( '.colorpick' ) . each ( function (){
jQuery ( '.colorpickdiv' , jQuery ( this ) . parent ()) . farbtastic ( this );
jQuery ( this ) . click ( function () {
if ( jQuery ( this ) . val () == " " ) jQuery ( this ) . val ( '#' );
jQuery ( '.colorpickdiv' , jQuery ( this ) . parent () ) . show ();
2012-08-10 09:35:25 +00:00
});
2012-05-19 19:04:34 +00:00
});
jQuery ( document ) . mousedown ( function (){
jQuery ( '.colorpickdiv' ) . hide ();
2011-12-06 16:45:08 +00:00
});
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Edit prompt
jQuery ( function (){
var changed = false ;
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
jQuery ( 'input, textarea, select, checkbox' ) . change ( function (){
changed = true ;
});
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
jQuery ( '.woo-nav-tab-wrapper a' ) . click ( function (){
if ( changed ) {
window . onbeforeunload = function () {
return '<?php echo __( ' The changes you made will be lost if you navigate away from this page . ', ' woocommerce ' ); ?>' ;
}
} else {
window . onbeforeunload = '' ;
2011-12-06 16:45:08 +00:00
}
2012-05-19 19:04:34 +00:00
});
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
jQuery ( '.submit input' ) . click ( function (){
2011-12-06 16:45:08 +00:00
window . onbeforeunload = '' ;
2012-05-19 19:04:34 +00:00
});
});
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Sorting
jQuery ( 'table.wc_gateways tbody, table.wc_shipping tbody' ) . sortable ({
items : 'tr' ,
cursor : 'move' ,
axis : 'y' ,
handle : 'td' ,
scrollSensitivity : 40 ,
helper : function ( e , ui ){
ui . children () . each ( function (){
jQuery ( this ) . width ( jQuery ( this ) . width ());
});
ui . css ( 'left' , '0' );
return ui ;
},
start : function ( event , ui ){
ui . item . css ( 'background-color' , '#f6f6f6' );
},
stop : function ( event , ui ){
ui . item . removeAttr ( 'style' );
2011-12-06 16:45:08 +00:00
}
});
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
// Chosen selects
jQuery ( " select.chosen_select " ) . chosen ();
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
jQuery ( " select.chosen_select_nostd " ) . chosen ({
allow_single_deselect : 'true'
2011-12-06 16:45:08 +00:00
});
});
2012-05-19 19:04:34 +00:00
</ script >
</ div >
< ? php
}
}
2012-08-14 12:21:34 +00:00
2012-11-27 15:37:01 +00:00
/**
* Get a setting from the settings API .
2012-11-27 16:22:47 +00:00
*
2012-11-27 15:37:01 +00:00
* @ access public
* @ param mixed $option
* @ return void
*/
function woocommerce_settings_get_option ( $option_name , $default = '' ) {
// Array value
if ( strstr ( $option_name , '[' ) ) {
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
parse_str ( $option_name , $option_array );
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
// Option name is first key
$option_name = current ( array_keys ( $option_array ) );
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
// Get value
$option_values = get_option ( $option_name , '' );
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$key = key ( $option_array [ $option_name ] );
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
if ( isset ( $option_values [ $key ] ) )
$option_value = $option_values [ $key ];
else
$option_value = null ;
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
// Single value
} else {
$option_value = get_option ( $option_name , null );
}
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
if ( is_array ( $option_value ) )
$option_value = array_map ( 'stripslashes' , $option_value );
2012-12-13 16:38:40 +00:00
elseif ( ! is_null ( $option_value ) )
2012-11-27 15:37:01 +00:00
$option_value = stripslashes ( $option_value );
2012-12-13 16:38:40 +00:00
return $option_value === null ? $default : $option_value ;
2012-11-27 15:37:01 +00:00
}
2012-05-19 19:04:34 +00:00
/**
2012-08-14 12:21:34 +00:00
* Output admin fields .
2012-08-10 09:35:25 +00:00
*
2012-05-19 19:04:34 +00:00
* Loops though the woocommerce options array and outputs each field .
2012-08-14 12:21:34 +00:00
*
* @ access public
* @ param array $options Opens array to output
* @ return void
2012-05-19 19:04:34 +00:00
*/
2012-08-14 12:21:34 +00:00
function woocommerce_admin_fields ( $options ) {
2012-05-19 19:04:34 +00:00
global $woocommerce ;
foreach ( $options as $value ) {
if ( ! isset ( $value [ 'type' ] ) ) continue ;
if ( ! isset ( $value [ 'id' ] ) ) $value [ 'id' ] = '' ;
2012-11-27 16:32:56 +00:00
if ( ! isset ( $value [ 'title' ] ) ) $value [ 'title' ] = isset ( $value [ 'name' ] ) ? $value [ 'name' ] : '' ;
2012-05-19 19:04:34 +00:00
if ( ! isset ( $value [ 'class' ] ) ) $value [ 'class' ] = '' ;
if ( ! isset ( $value [ 'css' ] ) ) $value [ 'css' ] = '' ;
2012-11-27 15:37:01 +00:00
if ( ! isset ( $value [ 'default' ] ) ) $value [ 'default' ] = '' ;
2012-05-19 19:04:34 +00:00
if ( ! isset ( $value [ 'desc' ] ) ) $value [ 'desc' ] = '' ;
if ( ! isset ( $value [ 'desc_tip' ] ) ) $value [ 'desc_tip' ] = false ;
2012-11-27 16:22:47 +00:00
2012-11-20 17:32:50 +00:00
// Custom attribute handling
$custom_attributes = array ();
2012-11-27 16:22:47 +00:00
2012-11-20 17:32:50 +00:00
if ( ! empty ( $value [ 'custom_attributes' ] ) && is_array ( $value [ 'custom_attributes' ] ) )
foreach ( $value [ 'custom_attributes' ] as $attribute => $attribute_value )
$custom_attributes [] = esc_attr ( $attribute ) . '="' . esc_attr ( $attribute_value ) . '"' ;
2012-08-10 09:35:25 +00:00
2012-11-26 15:55:23 +00:00
// Description handling
if ( $value [ 'desc_tip' ] === true ) {
$description = '' ;
$tip = $value [ 'desc' ];
} elseif ( ! empty ( $value [ 'desc_tip' ] ) ) {
$description = $value [ 'desc' ];
$tip = $value [ 'desc_tip' ];
} elseif ( ! empty ( $value [ 'desc' ] ) ) {
$description = $value [ 'desc' ];
$tip = '' ;
} else {
$description = $tip = '' ;
}
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
if ( $description && in_array ( $value [ 'type' ], array ( 'textarea' , 'radio' ) ) ) {
$description = '<p style="margin-top:0">' . wp_kses_post ( $description ) . '</p>' ;
} elseif ( $description ) {
$description = '<span class="description">' . wp_kses_post ( $description ) . '</span>' ;
}
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
if ( $tip && in_array ( $value [ 'type' ], array ( 'checkbox' ) ) ) {
2013-02-11 13:53:24 +00:00
$tip = '<p class="description">' . $tip . '</p>' ;
2012-11-26 15:55:23 +00:00
} elseif ( $tip ) {
2013-02-11 13:53:24 +00:00
2012-12-03 11:57:04 +00:00
$tip = '<img class="help_tip" data-tip="' . esc_attr ( $tip ) . '" src="' . $woocommerce -> plugin_url () . '/assets/images/help.png" height="16" width="16" />' ;
2013-02-11 13:53:24 +00:00
2012-11-26 15:55:23 +00:00
}
2012-08-10 09:35:25 +00:00
2012-11-26 15:55:23 +00:00
// Switch based on type
2012-05-19 19:04:34 +00:00
switch ( $value [ 'type' ] ) {
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Section Titles
2012-05-19 19:04:34 +00:00
case 'title' :
2012-11-27 15:37:01 +00:00
if ( ! empty ( $value [ 'title' ] ) ) echo '<h3>' . esc_html ( $value [ 'title' ] ) . '</h3>' ;
2012-11-26 15:55:23 +00:00
if ( ! empty ( $value [ 'desc' ] ) ) echo wpautop ( wptexturize ( wp_kses_post ( $value [ 'desc' ] ) ) );
2012-05-19 19:04:34 +00:00
echo '<table class="form-table">' . " \n \n " ;
2012-11-26 15:55:23 +00:00
if ( ! empty ( $value [ 'id' ] ) ) do_action ( 'woocommerce_settings_' . sanitize_title ( $value [ 'id' ] ) );
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Section Ends
2012-05-19 19:04:34 +00:00
case 'sectionend' :
2012-11-26 15:55:23 +00:00
if ( ! empty ( $value [ 'id' ] ) ) do_action ( 'woocommerce_settings_' . sanitize_title ( $value [ 'id' ] ) . '_end' );
2012-05-19 19:04:34 +00:00
echo '</table>' ;
2012-11-26 15:55:23 +00:00
if ( ! empty ( $value [ 'id' ] ) ) do_action ( 'woocommerce_settings_' . sanitize_title ( $value [ 'id' ] ) . '_after' );
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Standard text inputs and subtypes like 'number'
2012-05-19 19:04:34 +00:00
case 'text' :
2012-11-20 17:32:50 +00:00
case 'email' :
case 'number' :
2012-11-26 15:55:23 +00:00
case 'color' :
2012-12-28 19:22:47 +00:00
case 'password' :
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
$type = $value [ 'type' ];
$class = '' ;
2012-11-27 15:37:01 +00:00
$option_value = woocommerce_settings_get_option ( $value [ 'id' ], $value [ 'default' ] );
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
if ( $value [ 'type' ] == 'color' ) {
$type = 'text' ;
$value [ 'class' ] .= 'colorpick' ;
$description .= '<div id="colorPickerDiv_' . esc_attr ( $value [ 'id' ] ) . '" class="colorpickdiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;display:none;"></div>' ;
}
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
2012-05-19 19:04:34 +00:00
</ th >
2012-11-26 15:55:23 +00:00
< td class = " forminp forminp-<?php echo sanitize_title( $value['type'] ) ?> " >
2012-11-27 16:22:47 +00:00
< input
name = " <?php echo esc_attr( $value['id'] ); ?> "
id = " <?php echo esc_attr( $value['id'] ); ?> "
type = " <?php echo esc_attr( $type ); ?> "
style = " <?php echo esc_attr( $value['css'] ); ?> "
value = " <?php echo esc_attr( $option_value ); ?> "
2012-11-26 15:55:23 +00:00
class = " <?php echo esc_attr( $value['class'] ); ?> "
2012-11-27 16:22:47 +00:00
< ? php echo implode ( ' ' , $custom_attributes ); ?>
2012-11-26 15:55:23 +00:00
/> < ? php echo $description ; ?>
</ td >
2012-05-19 19:04:34 +00:00
</ tr >< ? php
2012-11-27 16:22:47 +00:00
break ;
2012-11-26 15:55:23 +00:00
// Textarea
case 'textarea' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$option_value = woocommerce_settings_get_option ( $value [ 'id' ], $value [ 'default' ] );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
2012-05-19 19:04:34 +00:00
</ th >
2012-11-26 15:55:23 +00:00
< td class = " forminp forminp-<?php echo sanitize_title( $value['type'] ) ?> " >
< ? php echo $description ; ?>
2012-11-27 16:22:47 +00:00
< textarea
name = " <?php echo esc_attr( $value['id'] ); ?> "
id = " <?php echo esc_attr( $value['id'] ); ?> "
style = " <?php echo esc_attr( $value['css'] ); ?> "
2012-11-26 15:55:23 +00:00
class = " <?php echo esc_attr( $value['class'] ); ?> "
< ? php echo implode ( ' ' , $custom_attributes ); ?>
2012-11-27 15:37:01 +00:00
>< ? php echo esc_textarea ( $option_value ); ?> </textarea>
2012-11-26 15:55:23 +00:00
</ td >
2012-05-19 19:04:34 +00:00
</ tr >< ? php
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Select boxes
case 'select' :
case 'multiselect' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$option_value = woocommerce_settings_get_option ( $value [ 'id' ], $value [ 'default' ] );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
2012-11-26 15:55:23 +00:00
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
</ th >
< td class = " forminp forminp-<?php echo sanitize_title( $value['type'] ) ?> " >
2012-11-27 16:22:47 +00:00
< select
2013-01-21 10:48:26 +00:00
name = " <?php echo esc_attr( $value['id'] ); ?><?php if ( $value['type'] == 'multiselect' ) echo '[]'; ?> "
2012-11-27 16:22:47 +00:00
id = " <?php echo esc_attr( $value['id'] ); ?> "
style = " <?php echo esc_attr( $value['css'] ); ?> "
2012-11-26 15:55:23 +00:00
class = " <?php echo esc_attr( $value['class'] ); ?> "
< ? php echo implode ( ' ' , $custom_attributes ); ?>
< ? php if ( $value [ 'type' ] == 'multiselect' ) echo 'multiple="multiple"' ; ?>
>
< ? php
foreach ( $value [ 'options' ] as $key => $val ) {
?>
2012-11-27 16:22:47 +00:00
< option value = " <?php echo esc_attr( $key ); ?> " < ? php
2012-11-26 15:55:23 +00:00
if ( is_array ( $option_value ) )
2012-11-27 16:22:47 +00:00
selected ( in_array ( $key , $option_value ), true );
2012-11-26 15:55:23 +00:00
else
2012-11-27 16:22:47 +00:00
selected ( $option_value , $key );
2012-11-26 15:55:23 +00:00
?> ><?php echo $val ?></option>
< ? php
}
?>
</ select > < ? php echo $description ; ?>
</ td >
2012-05-19 19:04:34 +00:00
</ tr >< ? php
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Radio inputs
case 'radio' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$option_value = woocommerce_settings_get_option ( $value [ 'id' ], $value [ 'default' ] );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
2012-05-19 19:04:34 +00:00
</ th >
2012-11-26 15:55:23 +00:00
< td class = " forminp forminp-<?php echo sanitize_title( $value['type'] ) ?> " >
< fieldset >
< ? php echo $description ; ?>
< ul >
< ? php
foreach ( $value [ 'options' ] as $key => $val ) {
?>
< li >
2012-11-27 16:22:47 +00:00
< label >< input
name = " <?php echo esc_attr( $value['id'] ); ?> "
value = " <?php echo $key ; ?> "
type = " radio "
style = " <?php echo esc_attr( $value['css'] ); ?> "
2012-11-26 15:55:23 +00:00
class = " <?php echo esc_attr( $value['class'] ); ?> "
< ? php echo implode ( ' ' , $custom_attributes ); ?>
< ? php checked ( $key , $option_value ); ?>
/> < ? php echo $val ?> </label>
</ li >
< ? php
}
?>
</ ul >
</ fieldset >
2012-05-19 19:04:34 +00:00
</ td >
</ tr >< ? php
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Checkbox input
2012-05-19 19:04:34 +00:00
case 'checkbox' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$option_value = woocommerce_settings_get_option ( $value [ 'id' ], $value [ 'default' ] );
2012-08-10 09:35:25 +00:00
2012-11-26 15:55:23 +00:00
if ( ! isset ( $value [ 'hide_if_checked' ] ) ) $value [ 'hide_if_checked' ] = false ;
if ( ! isset ( $value [ 'show_if_checked' ] ) ) $value [ 'show_if_checked' ] = false ;
2012-08-10 09:35:25 +00:00
2012-11-26 15:55:23 +00:00
if ( ! isset ( $value [ 'checkboxgroup' ] ) || ( isset ( $value [ 'checkboxgroup' ] ) && $value [ 'checkboxgroup' ] == 'start' ) ) {
2012-05-19 19:04:34 +00:00
?>
2012-08-10 09:35:25 +00:00
< tr valign = " top " class = " <?php
2012-11-26 15:55:23 +00:00
if ( $value [ 'hide_if_checked' ] == 'yes' || $value [ 'show_if_checked' ] == 'yes' ) echo 'hidden_option' ;
if ( $value [ 'hide_if_checked' ] == 'option' ) echo 'hide_options_if_checked' ;
if ( $value [ 'show_if_checked' ] == 'option' ) echo 'show_options_if_checked' ;
2012-05-19 19:04:34 +00:00
?> ">
2012-11-27 15:37:01 +00:00
< th scope = " row " class = " titledesc " >< ? php echo esc_html ( $value [ 'title' ] ) ?> </th>
2012-11-26 15:55:23 +00:00
< td class = " forminp forminp-checkbox " >
2012-05-19 19:04:34 +00:00
< fieldset >
< ? php
2012-11-26 15:55:23 +00:00
} else {
2012-05-19 19:04:34 +00:00
?>
2012-08-10 09:35:25 +00:00
< fieldset class = " <?php
2012-11-26 15:55:23 +00:00
if ( $value [ 'hide_if_checked' ] == 'yes' || $value [ 'show_if_checked' ] == 'yes' ) echo 'hidden_option' ;
if ( $value [ 'hide_if_checked' ] == 'option' ) echo 'hide_options_if_checked' ;
if ( $value [ 'show_if_checked' ] == 'option' ) echo 'show_options_if_checked' ;
2012-05-19 19:04:34 +00:00
?> ">
< ? php
2012-11-26 15:55:23 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
?>
2012-11-27 15:37:01 +00:00
< legend class = " screen-reader-text " >< span >< ? php echo esc_html ( $value [ 'title' ] ) ?> </span></legend>
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
< label for = " <?php echo $value['id'] ?> " >
2012-11-27 16:22:47 +00:00
< input
name = " <?php echo esc_attr( $value['id'] ); ?> "
id = " <?php echo esc_attr( $value['id'] ); ?> "
type = " checkbox "
value = " 1 "
< ? php checked ( $option_value , 'yes' ); ?>
< ? php echo implode ( ' ' , $custom_attributes ); ?>
2013-02-11 13:53:24 +00:00
/> < ? php echo wp_kses_post ( $value [ 'desc' ] ) ?> </label> <?php echo $tip; ?>
2012-05-19 19:04:34 +00:00
< ? php
2012-08-10 09:35:25 +00:00
2012-11-26 15:55:23 +00:00
if ( ! isset ( $value [ 'checkboxgroup' ] ) || ( isset ( $value [ 'checkboxgroup' ] ) && $value [ 'checkboxgroup' ] == 'end' ) ) {
2012-05-19 19:04:34 +00:00
?>
</ fieldset >
</ td >
</ tr >
< ? php
2012-11-26 15:55:23 +00:00
} else {
2012-05-19 19:04:34 +00:00
?>
</ fieldset >
< ? php
2012-11-26 15:55:23 +00:00
}
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Image width settings
case 'image_width' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$width = woocommerce_settings_get_option ( $value [ 'id' ] . '[width]' , $value [ 'default' ][ 'width' ] );
$height = woocommerce_settings_get_option ( $value [ 'id' ] . '[height]' , $value [ 'default' ][ 'height' ] );
$crop = checked ( 1 , woocommerce_settings_get_option ( $value [ 'id' ] . '[crop]' , $value [ 'default' ][ 'crop' ] ), false );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
2013-03-07 12:49:51 +00:00
< th scope = " row " class = " titledesc " >< ? php echo esc_html ( $value [ 'title' ] ) ?> <?php echo $tip; ?></th>
2012-11-26 15:55:23 +00:00
< td class = " forminp " >
2012-11-27 15:37:01 +00:00
< ? php _e ( 'Width' , 'woocommerce' ); ?> <input name="<?php echo esc_attr( $value['id'] ); ?>[width]" id="<?php echo esc_attr( $value['id'] ); ?>-width" type="text" size="3" value="<?php echo $width; ?>" />
2012-11-26 15:55:23 +00:00
2012-11-27 15:37:01 +00:00
< ? php _e ( 'Height' , 'woocommerce' ); ?> <input name="<?php echo esc_attr( $value['id'] ); ?>[height]" id="<?php echo esc_attr( $value['id'] ); ?>-height" type="text" size="3" value="<?php echo $height; ?>" />
2012-11-26 15:55:23 +00:00
2012-11-27 15:37:01 +00:00
< label >< ? php _e ( 'Hard Crop' , 'woocommerce' ); ?> <input name="<?php echo esc_attr( $value['id'] ); ?>[crop]" id="<?php echo esc_attr( $value['id'] ); ?>-crop" type="checkbox" <?php echo $crop; ?> /></label>
2012-11-26 15:55:23 +00:00
2013-03-07 12:49:51 +00:00
</ td >
2012-05-19 19:04:34 +00:00
</ tr >< ? php
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Single page selects
2012-05-19 19:04:34 +00:00
case 'single_select_page' :
2012-11-27 16:22:47 +00:00
2012-11-29 18:01:10 +00:00
$args = array ( 'name' => $value [ 'id' ],
2012-05-19 19:04:34 +00:00
'id' => $value [ 'id' ],
'sort_column' => 'menu_order' ,
'sort_order' => 'ASC' ,
'show_option_none' => ' ' ,
'class' => $value [ 'class' ],
'echo' => false ,
2012-11-27 15:37:01 +00:00
'selected' => absint ( woocommerce_settings_get_option ( $value [ 'id' ] ) )
2012-11-26 15:55:23 +00:00
);
2012-08-10 09:35:25 +00:00
2012-11-27 16:22:47 +00:00
if ( isset ( $value [ 'args' ] ) )
2012-11-26 15:55:23 +00:00
$args = wp_parse_args ( $value [ 'args' ], $args );
2012-08-10 09:35:25 +00:00
2012-05-19 19:04:34 +00:00
?> <tr valign="top" class="single_select_page">
2012-11-27 15:37:01 +00:00
< th scope = " row " class = " titledesc " >< ? php echo esc_html ( $value [ 'title' ] ) ?> <?php echo $tip; ?></th>
2012-05-19 19:04:34 +00:00
< td class = " forminp " >
2012-11-26 15:55:23 +00:00
< ? php echo str_replace ( ' id=' , " data-placeholder=' " . __ ( 'Select a page…' , 'woocommerce' ) . " ' style=' " . $value [ 'css' ] . " ' class=' " . $value [ 'class' ] . " ' id= " , wp_dropdown_pages ( $args ) ); ?> <?php echo $description; ?>
2012-05-19 19:04:34 +00:00
</ td >
2012-08-10 09:35:25 +00:00
</ tr >< ? php
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Single country selects
2012-05-19 19:04:34 +00:00
case 'single_select_country' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$country_setting = ( string ) woocommerce_settings_get_option ( $value [ 'id' ] );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
$countries = $woocommerce -> countries -> countries ;
if ( strstr ( $country_setting , ':' )) :
$country = current ( explode ( ':' , $country_setting ));
$state = end ( explode ( ':' , $country_setting ));
else :
$country = $country_setting ;
$state = '*' ;
endif ;
?> <tr valign="top">
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
2012-05-19 19:04:34 +00:00
</ th >
2012-10-16 09:45:33 +00:00
< td class = " forminp " >< select name = " <?php echo esc_attr( $value['id'] ); ?> " style = " <?php echo esc_attr( $value['css'] ); ?> " data - placeholder = " <?php _e( 'Choose a country…', 'woocommerce' ); ?> " title = " Country " class = " chosen_select " >
2012-11-26 15:55:23 +00:00
< ? php echo $woocommerce -> countries -> country_dropdown_options ( $country , $state ); ?>
2012-05-19 19:04:34 +00:00
</ select > < ? php echo $description ; ?>
</ td >
2012-08-10 09:35:25 +00:00
</ tr >< ? php
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Country multiselects
2012-05-19 19:04:34 +00:00
case 'multi_select_countries' :
2012-11-27 16:22:47 +00:00
2012-11-27 15:37:01 +00:00
$selections = ( array ) woocommerce_settings_get_option ( $value [ 'id' ] );
2012-11-27 16:22:47 +00:00
2012-05-19 19:04:34 +00:00
$countries = $woocommerce -> countries -> countries ;
2012-11-26 15:55:23 +00:00
asort ( $countries );
2012-05-19 19:04:34 +00:00
?> <tr valign="top">
< th scope = " row " class = " titledesc " >
2012-11-27 15:37:01 +00:00
< label for = " <?php echo esc_attr( $value['id'] ); ?> " >< ? php echo esc_html ( $value [ 'title' ] ); ?> </label>
2012-11-26 15:55:23 +00:00
< ? php echo $tip ; ?>
2012-05-19 19:04:34 +00:00
</ th >
< td class = " forminp " >
2012-10-16 09:45:33 +00:00
< select multiple = " multiple " name = " <?php echo esc_attr( $value['id'] ); ?>[] " style = " width:450px; " data - placeholder = " <?php _e( 'Choose countries…', 'woocommerce' ); ?> " title = " Country " class = " chosen_select " >
2012-05-19 19:04:34 +00:00
< ? php
2012-11-27 16:22:47 +00:00
if ( $countries )
2012-11-26 15:55:23 +00:00
foreach ( $countries as $key => $val )
echo '<option value="' . $key . '" ' . selected ( in_array ( $key , $selections ), true , false ) . '>' . $val . '</option>' ;
2012-08-10 09:35:25 +00:00
?>
2012-11-26 15:55:23 +00:00
</ select > < ? php echo $description ; ?>
2012-05-19 19:04:34 +00:00
</ td >
2012-08-10 09:35:25 +00:00
</ tr >< ? php
2012-05-19 19:04:34 +00:00
break ;
2012-11-27 16:22:47 +00:00
2012-11-26 15:55:23 +00:00
// Default: run an action
2012-05-19 19:04:34 +00:00
default :
do_action ( 'woocommerce_admin_field_' . $value [ 'type' ], $value );
break ;
}
}
2013-01-03 07:30:04 +00:00
}