Broken up settings pages to ease development
This commit is contained in:
parent
3db551c4d8
commit
cec98bf646
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
/**
|
||||
* Frontend styles/color picker settings
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce
|
||||
*/
|
||||
add_action( 'woocommerce_admin_field_frontend_styles', 'woocommerce_frontend_styles_setting' );
|
||||
|
||||
function woocommerce_frontend_styles_setting() {
|
||||
global $woocommerce;
|
||||
?><tr valign="top" class="woocommerce_frontend_css_colors">
|
||||
<th scope="row" class="titledesc">
|
||||
<label><?php _e( 'Styles', 'woocommerce' ); ?></label>
|
||||
</th>
|
||||
<td class="forminp"><?php
|
||||
|
||||
$base_file = $woocommerce->plugin_path() . '/assets/css/woocommerce-base.less';
|
||||
$css_file = $woocommerce->plugin_path() . '/assets/css/woocommerce.css';
|
||||
|
||||
if ( is_writable( $base_file ) && is_writable( $css_file ) ) {
|
||||
|
||||
// Get settings
|
||||
$colors = (array) get_option( 'woocommerce_frontend_css_colors' );
|
||||
|
||||
// Defaults
|
||||
if ( empty( $colors['primary'] ) ) $colors['primary'] = '#ad74a2';
|
||||
if ( empty( $colors['secondary'] ) ) $colors['secondary'] = '#f7f6f7';
|
||||
if ( empty( $colors['highlight'] ) ) $colors['highlight'] = '#85ad74';
|
||||
if ( empty( $colors['content_bg'] ) ) $colors['content_bg'] = '#ffffff';
|
||||
if ( empty( $colors['subtext'] ) ) $colors['subtext'] = '#777777';
|
||||
|
||||
// Show inputs
|
||||
woocommerce_frontend_css_color_picker( __('Primary', 'woocommerce'), 'woocommerce_frontend_css_primary', $colors['primary'], __('Call to action buttons/price slider/layered nav UI', 'woocommerce') );
|
||||
woocommerce_frontend_css_color_picker( __('Secondary', 'woocommerce'), 'woocommerce_frontend_css_secondary', $colors['secondary'], __('Buttons and tabs', 'woocommerce') );
|
||||
woocommerce_frontend_css_color_picker( __('Highlight', 'woocommerce'), 'woocommerce_frontend_css_highlight', $colors['highlight'], __('Price labels and Sale Flashes', 'woocommerce') );
|
||||
woocommerce_frontend_css_color_picker( __('Content', 'woocommerce'), 'woocommerce_frontend_css_content_bg', $colors['content_bg'], __('Your themes page background - used for tab active states', 'woocommerce') );
|
||||
woocommerce_frontend_css_color_picker( __('Subtext', 'woocommerce'), 'woocommerce_frontend_css_subtext', $colors['subtext'], __('Used for certain text and asides - breadcrumbs, small text etc.', 'woocommerce') );
|
||||
|
||||
} else {
|
||||
|
||||
echo '<span class="description">' . __( 'To edit colours <code>woocommerce/assets/css/woocommerce-base.less</code> and <code>woocommerce.css</code> need to be writable. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.', 'woocommerce' ) . '</span>';
|
||||
|
||||
}
|
||||
|
||||
?></td>
|
||||
</tr>
|
||||
<script type="text/javascript">
|
||||
jQuery('input#woocommerce_frontend_css').change(function() {
|
||||
if (jQuery(this).is(':checked')) {
|
||||
jQuery('tr.woocommerce_frontend_css_colors').show();
|
||||
} else {
|
||||
jQuery('tr.woocommerce_frontend_css_colors').hide();
|
||||
}
|
||||
}).change();
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Color Picker Input
|
||||
*
|
||||
* Shows a color picker for our options
|
||||
*/
|
||||
function woocommerce_frontend_css_color_picker( $name, $id, $value, $desc = '' ) {
|
||||
global $woocommerce;
|
||||
|
||||
echo '<div class="color_box"><strong><img class="help_tip" data-tip="' . $desc . '" src="' . $woocommerce->plugin_url() . '/assets/images/help.png" /> ' . $name . '</strong>
|
||||
<input name="' . esc_attr( $id ). '" id="' . $id . '" type="text" value="' . esc_attr( $value ) . '" class="colorpick" /> <div id="colorPickerDiv_' . esc_attr( $id ) . '" class="colorpickdiv"></div>
|
||||
</div>';
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* Additional payment gateway settings
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce
|
||||
*/
|
||||
add_action( 'woocommerce_admin_field_payment_gateways', 'woocommerce_payment_gateways_setting' );
|
||||
|
||||
function woocommerce_payment_gateways_setting() {
|
||||
global $woocommerce;
|
||||
?>
|
||||
<tr valign="top">
|
||||
<td class="forminp" colspan="2">
|
||||
<table class="wc_gateways widefat" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="1%"><?php _e('Default', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Gateway', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Status', 'woocommerce'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ( $woocommerce->payment_gateways->payment_gateways() as $gateway ) :
|
||||
|
||||
$default_gateway = get_option('woocommerce_default_gateway');
|
||||
|
||||
echo '<tr>
|
||||
<td width="1%" class="radio">
|
||||
<input type="radio" name="default_gateway" value="' . $gateway->id . '" ' . checked( $default_gateway, $gateway->id, false ) . ' />
|
||||
<input type="hidden" name="gateway_order[]" value="' . $gateway->id . '" />
|
||||
</td>
|
||||
<td>
|
||||
<p><strong>' . $gateway->title . '</strong><br/>
|
||||
<small>' . __('Gateway ID', 'woocommerce') . ': ' . $gateway->id . '</small></p>
|
||||
</td>
|
||||
<td>';
|
||||
|
||||
if ( $gateway->enabled == 'yes' )
|
||||
echo '<img src="' . $woocommerce->plugin_url() . '/assets/images/success.png" alt="yes" />';
|
||||
else
|
||||
echo '<img src="' . $woocommerce->plugin_url() . '/assets/images/success-off.png" alt="no" />';
|
||||
|
||||
echo '</td>
|
||||
</tr>';
|
||||
|
||||
endforeach;
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
|
@ -0,0 +1,179 @@
|
|||
<?php
|
||||
/**
|
||||
* Update options
|
||||
*
|
||||
* Updates the options on the woocommerce settings pages. Returns true if saved.
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce
|
||||
*/
|
||||
|
||||
function woocommerce_update_options($options) {
|
||||
|
||||
if ( empty( $_POST ) ) return false;
|
||||
|
||||
foreach ( $options as $value ) {
|
||||
if ( isset( $value['id'] ) && $value['id'] == 'woocommerce_tax_rates' ) {
|
||||
|
||||
// Tax rates saving
|
||||
$tax_rates = array();
|
||||
$tax_classes = (isset($_POST['tax_class'])) ? $_POST['tax_class'] : array();
|
||||
$tax_countries = (isset($_POST['tax_country'])) ? $_POST['tax_country'] : array();
|
||||
$tax_rate = (isset($_POST['tax_rate'])) ? $_POST['tax_rate'] : array();
|
||||
$tax_shipping = (isset($_POST['tax_shipping'])) ? $_POST['tax_shipping'] : array();
|
||||
$tax_postcode = (isset($_POST['tax_postcode'])) ? $_POST['tax_postcode'] : array();
|
||||
$tax_compound = (isset($_POST['tax_compound'])) ? $_POST['tax_compound'] : array();
|
||||
$tax_label = (isset($_POST['tax_label'])) ? $_POST['tax_label'] : array();
|
||||
$tax_classes_count = sizeof( $tax_classes );
|
||||
for ($i=0; $i<$tax_classes_count; $i++) :
|
||||
|
||||
if (isset($tax_classes[$i]) && isset($tax_countries[$i]) && isset($tax_rate[$i]) && is_numeric($tax_rate[$i])) :
|
||||
|
||||
$rate = esc_attr(trim($tax_rate[$i]));
|
||||
$rate = number_format($rate, 4, '.', '');
|
||||
|
||||
$class = woocommerce_clean($tax_classes[$i]);
|
||||
|
||||
if (isset($tax_shipping[$i]) && $tax_shipping[$i]) $shipping = 'yes'; else $shipping = 'no';
|
||||
if (isset($tax_compound[$i]) && $tax_compound[$i]) $compound = 'yes'; else $compound = 'no';
|
||||
|
||||
// Handle countries
|
||||
$counties_array = array();
|
||||
$countries = $tax_countries[$i];
|
||||
if ($countries) foreach ($countries as $country) :
|
||||
|
||||
$country = woocommerce_clean($country);
|
||||
$state = '*';
|
||||
|
||||
if (strstr($country, ':')) :
|
||||
$cr = explode(':', $country);
|
||||
$country = current($cr);
|
||||
$state = end($cr);
|
||||
endif;
|
||||
|
||||
$counties_array[trim($country)][] = trim($state);
|
||||
|
||||
endforeach;
|
||||
|
||||
$tax_rates[] = array(
|
||||
'countries' => $counties_array,
|
||||
'rate' => $rate,
|
||||
'shipping' => $shipping,
|
||||
'compound' => $compound,
|
||||
'class' => $class,
|
||||
'label' => esc_attr($tax_label[$i])
|
||||
);
|
||||
|
||||
endif;
|
||||
|
||||
endfor;
|
||||
|
||||
update_option( 'woocommerce_tax_rates', $tax_rates );
|
||||
|
||||
// Local tax rates saving
|
||||
$local_tax_rates = array();
|
||||
$tax_classes = (isset($_POST['local_tax_class'])) ? $_POST['local_tax_class'] : array();
|
||||
$tax_countries = (isset($_POST['local_tax_country'])) ? $_POST['local_tax_country'] : array();
|
||||
$tax_postcode = (isset($_POST['local_tax_postcode'])) ? $_POST['local_tax_postcode'] : array();
|
||||
$tax_rate = (isset($_POST['local_tax_rate'])) ? $_POST['local_tax_rate'] : array();
|
||||
$tax_shipping = (isset($_POST['local_tax_shipping'])) ? $_POST['local_tax_shipping'] : array();
|
||||
$tax_postcode = (isset($_POST['local_tax_postcode'])) ? $_POST['local_tax_postcode'] : array();
|
||||
$tax_compound = (isset($_POST['local_tax_compound'])) ? $_POST['local_tax_compound'] : array();
|
||||
$tax_label = (isset($_POST['local_tax_label'])) ? $_POST['local_tax_label'] : array();
|
||||
$tax_classes_count = sizeof( $tax_classes );
|
||||
for ($i=0; $i<$tax_classes_count; $i++) :
|
||||
|
||||
if (isset($tax_classes[$i]) && isset($tax_countries[$i]) && isset($tax_rate[$i]) && is_numeric($tax_rate[$i])) :
|
||||
|
||||
$rate = esc_attr(trim($tax_rate[$i]));
|
||||
$rate = number_format($rate, 4, '.', '');
|
||||
|
||||
$class = woocommerce_clean($tax_classes[$i]);
|
||||
|
||||
if (isset($tax_shipping[$i]) && $tax_shipping[$i]) $shipping = 'yes'; else $shipping = 'no';
|
||||
if (isset($tax_compound[$i]) && $tax_compound[$i]) $compound = 'yes'; else $compound = 'no';
|
||||
|
||||
// Handle country
|
||||
$country = woocommerce_clean($tax_countries[$i]);
|
||||
$state = '*';
|
||||
|
||||
if (strstr($country, ':')) :
|
||||
$cr = explode(':', $country);
|
||||
$country = current($cr);
|
||||
$state = end($cr);
|
||||
endif;
|
||||
|
||||
// Handle postcodes
|
||||
$postcodes = explode(';', $tax_postcode[$i]);
|
||||
$postcodes = array_filter(array_map('trim', $postcodes));
|
||||
|
||||
$local_tax_rates[] = array(
|
||||
'country' => $country,
|
||||
'state' => $state,
|
||||
'postcode' => $postcodes,
|
||||
'rate' => $rate,
|
||||
'shipping' => $shipping,
|
||||
'compound' => $compound,
|
||||
'class' => $class,
|
||||
'label' => esc_attr($tax_label[$i])
|
||||
);
|
||||
|
||||
endif;
|
||||
|
||||
endfor;
|
||||
|
||||
update_option( 'woocommerce_local_tax_rates', $local_tax_rates );
|
||||
|
||||
} elseif ( isset( $value['type'] ) && $value['type'] == 'multi_select_countries' ) {
|
||||
|
||||
// Get countries array
|
||||
if (isset($_POST[$value['id']])) $selected_countries = $_POST[$value['id']]; else $selected_countries = array();
|
||||
update_option($value['id'], $selected_countries);
|
||||
|
||||
} elseif ( isset( $value['id'] ) && ( $value['id'] == 'woocommerce_price_thousand_sep' || $value['id'] == 'woocommerce_price_decimal_sep' ) ) {
|
||||
|
||||
// price separators get a special treatment as they should allow a spaces (don't trim)
|
||||
if ( isset( $_POST[ $value['id'] ] ) ) {
|
||||
update_option($value['id'], $_POST[$value['id']] );
|
||||
} else {
|
||||
delete_option($value['id']);
|
||||
}
|
||||
|
||||
} elseif ( isset( $value['type'] ) && $value['type'] == 'checkbox' ) {
|
||||
|
||||
if ( isset( $value['id'] ) && isset( $_POST[$value['id']] ) ) {
|
||||
update_option($value['id'], 'yes');
|
||||
} else {
|
||||
update_option($value['id'], 'no');
|
||||
}
|
||||
|
||||
} elseif (isset( $value['type'] ) && $value['type'] == 'image_width' ) {
|
||||
|
||||
if ( isset( $value['id'] ) && isset( $_POST[$value['id'] . '_width'] ) ) {
|
||||
update_option($value['id'].'_width', woocommerce_clean($_POST[$value['id'].'_width']));
|
||||
update_option($value['id'].'_height', woocommerce_clean($_POST[$value['id'].'_height']));
|
||||
if (isset($_POST[$value['id'].'_crop'])) :
|
||||
update_option($value['id'].'_crop', 1);
|
||||
else :
|
||||
update_option($value['id'].'_crop', 0);
|
||||
endif;
|
||||
} else {
|
||||
update_option($value['id'].'_width', $value['std']);
|
||||
update_option($value['id'].'_height', $value['std']);
|
||||
update_option($value['id'].'_crop', 1);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if ( isset( $value['id'] ) && isset( $_POST[$value['id']] ) ) {
|
||||
update_option($value['id'], woocommerce_clean($_POST[$value['id']]));
|
||||
} elseif( isset( $value['id'] ) ) {
|
||||
delete_option($value['id']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
/**
|
||||
* Additional shipping settings
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce
|
||||
*/
|
||||
add_action( 'woocommerce_admin_field_shipping_methods', 'woocommerce_shipping_methods_setting' );
|
||||
|
||||
function woocommerce_shipping_methods_setting() {
|
||||
global $woocommerce;
|
||||
?>
|
||||
<tr valign="top">
|
||||
<th scope="row" class="titledesc"><?php _e('Shipping Methods', 'woocommerce') ?></th>
|
||||
<td class="forminp">
|
||||
<p class="description" style="margin-top: 0;"><?php _e('Drag and drop methods to control their display order.', 'woocommerce'); ?></p>
|
||||
<table class="wc_shipping widefat" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php _e('Default', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Shipping Method', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Status', 'woocommerce'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ( $woocommerce->shipping->shipping_methods as $method ) {
|
||||
|
||||
$default_shipping_method = get_option('woocommerce_default_shipping_method');
|
||||
|
||||
echo '<tr>
|
||||
<td width="1%" class="radio">
|
||||
<input type="radio" name="default_shipping_method" value="' . $method->id . '" ' . checked( $default_shipping_method, $method->id, false ) . ' />
|
||||
<input type="hidden" name="method_order[]" value="' . $method->id . '" />
|
||||
<td>
|
||||
<p><strong>' . $method->title . '</strong><br/>
|
||||
<small>' . __('Method ID', 'woocommerce') . ': ' . $method->id . '</small></p>
|
||||
</td>
|
||||
<td>';
|
||||
|
||||
if ($method->enabled == 'yes')
|
||||
echo '<img src="' . $woocommerce->plugin_url() . '/assets/images/success.png" alt="yes" />';
|
||||
else
|
||||
echo '<img src="' . $woocommerce->plugin_url() . '/assets/images/success-off.png" alt="no" />';
|
||||
|
||||
echo '</td>
|
||||
</tr>';
|
||||
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
|
@ -0,0 +1,392 @@
|
|||
<?php
|
||||
/**
|
||||
* Additional tax settings
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce
|
||||
*/
|
||||
add_action( 'woocommerce_admin_field_tax_rates', 'woocommerce_tax_rates_setting' );
|
||||
|
||||
function woocommerce_tax_rates_setting() {
|
||||
global $woocommerce;
|
||||
|
||||
$tax_classes = array_filter(array_map('trim', explode("\n", get_option('woocommerce_tax_classes'))));
|
||||
$tax_rates = get_option('woocommerce_tax_rates');
|
||||
$local_tax_rates = get_option('woocommerce_local_tax_rates');
|
||||
|
||||
?><tr valign="top">
|
||||
<th scope="row" class="titledesc"><?php _e('Tax Rates', 'woocommerce') ?></th>
|
||||
<td class="forminp">
|
||||
<!--<a class="button export_rates"><?php _e('Export rates', 'woocommerce'); ?></a>
|
||||
<a class="button import_rates"><?php _e('Import rates', 'woocommerce'); ?></a>
|
||||
<p style="margin-top:0;" class="description"><?php printf(__('Define tax rates for countries and states below, or alternatively upload a CSV file containing your rates to <code>wp-content/woocommerce_tax_rates.csv</code> instead. <a href="%s">Download sample csv.</a>', 'woocommerce'), ''); ?></p>-->
|
||||
<table class="taxrows widefat" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="check-column"><input type="checkbox"></th>
|
||||
<th class="country"><?php _e('Countries/states', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Tax Class', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Label', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Optionally, enter a label for this rate - this will appear in the totals table', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Rate', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Enter a tax rate (percentage) to 4 decimal places.', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Compound', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Choose whether or not this is a compound rate. Compound tax rates are applied on top of other tax rates.', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Shipping', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Choose whether or not this tax rate also gets applied to shipping.', 'woocommerce'); ?>">[?]</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="2"><a href="#" class="add_tax_rate button"><?php _e('+ Add Tax Rate', 'woocommerce'); ?></a></th>
|
||||
<th colspan="6">
|
||||
<small><?php _e('All matching rates will be applied, and non-compound rates will be summed.', 'woocommerce'); ?></small>
|
||||
<a href="#" class="dupe button"><?php _e('Duplicate selected rows', 'woocommerce'); ?></a> <a href="#" class="remove button"><?php _e('Delete selected rows', 'woocommerce'); ?></a>
|
||||
</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody id="tax_rates">
|
||||
|
||||
<?php $i = -1; if ($tax_rates && is_array($tax_rates)) foreach( $tax_rates as $rate ) : $i++; ?>
|
||||
<tr class="tax_rate">
|
||||
<td class="check-column"><input type="checkbox" name="select" /></td>
|
||||
<td class="country">
|
||||
<p class="edit"><button class="edit_options button"><?php _e('Edit', 'woocommerce') ?></button> <label><?php echo woocommerce_tax_row_label( $rate['countries'] ); ?></label></p>
|
||||
<div class="options" style="display:none">
|
||||
<select name="tax_country[<?php echo $i; ?>][]" data-placeholder="<?php _e('Select countries/states…', 'woocommerce'); ?>" class="tax_chosen_select select" size="10" multiple="multiple">
|
||||
<?php echo $woocommerce->countries->country_multiselect_options( $rate['countries'] ); ?>
|
||||
</select>
|
||||
<?php echo '<p><button class="select_all button">'.__('All', 'woocommerce').'</button><button class="select_none button">'.__('None', 'woocommerce').'</button><button class="button select_us_states">'.__('US States', 'woocommerce').'</button><button class="button select_europe">'.__('EU States', 'woocommerce').'</button></p>'; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="tax_class">
|
||||
<select name="tax_class[<?php echo $i; ?>]" title="Tax Class" class="select">
|
||||
<option value=""><?php _e('Standard Rate', 'woocommerce'); ?></option>
|
||||
<?php
|
||||
if ($tax_classes) foreach ($tax_classes as $class) :
|
||||
echo '<option value="'.sanitize_title($class).'"';
|
||||
selected($rate['class'], sanitize_title($class));
|
||||
echo '>'.$class.'</option>';
|
||||
endforeach;
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
<td class="label">
|
||||
<input type="text" class="text" value="<?php if (isset($rate['label'])) echo esc_attr( $rate['label'] ); ?>" name="tax_label[<?php echo $i; ?>]" title="<?php _e('Label', 'woocommerce'); ?>" size="16" />
|
||||
</td>
|
||||
<td class="rate">
|
||||
<input type="text" class="text" value="<?php echo esc_attr( $rate['rate'] ); ?>" name="tax_rate[<?php echo $i; ?>]" title="<?php _e('Rate', 'woocommerce'); ?>" placeholder="<?php _e('Rate', 'woocommerce'); ?>" maxlength="8" size="4" />%
|
||||
</td>
|
||||
<td class="compound">
|
||||
<input type="checkbox" class="checkbox" name="tax_compound[<?php echo $i; ?>]" <?php if (isset($rate['compound'])) checked($rate['compound'], 'yes'); ?> />
|
||||
</td>
|
||||
<td class="apply_to_shipping">
|
||||
<input type="checkbox" class="checkbox" name="tax_shipping[<?php echo $i; ?>]" <?php if (isset($rate['shipping'])) checked($rate['shipping'], 'yes'); ?> />
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row" class="titledesc"><?php _e('Local Tax Rates', 'woocommerce') ?></th>
|
||||
<td class="forminp">
|
||||
<table class="taxrows widefat" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="check-column"><input type="checkbox"></th>
|
||||
<th class="country"><?php _e('Post/zip codes', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('List postcodes/zips this rate applies to separated by semi-colons. You may also enter ranges for numeric zip codes. e.g. 12345-12349;23456;', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Tax Class', 'woocommerce'); ?></th>
|
||||
<th><?php _e('Label', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Optionally, enter a label for this rate - this will appear in the totals table', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Rate', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Enter a tax rate (percentage) to 4 decimal places.', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Compound', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Choose whether or not this is a compound rate. Compound tax rates are applied on top of other tax rates.', 'woocommerce'); ?>">[?]</a></th>
|
||||
<th><?php _e('Shipping', 'woocommerce'); ?> <a class="tips" data-tip="<?php _e('Choose whether or not this tax rate also gets applied to shipping.', 'woocommerce'); ?>">[?]</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="2"><a href="#" class="add_local_tax_rate button"><?php _e('+ Add Tax Rate', 'woocommerce'); ?></a></th>
|
||||
<th colspan="5">
|
||||
<small><?php _e('All matching rates will be applied, and non-compound rates will be summed.', 'woocommerce'); ?></small>
|
||||
<a href="#" class="dupe button"><?php _e('Duplicate selected rows', 'woocommerce'); ?></a> <a href="#" class="remove button"><?php _e('Delete selected rows', 'woocommerce'); ?></a>
|
||||
</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody id="local_tax_rates">
|
||||
|
||||
<?php $i = -1; if ($local_tax_rates && is_array($local_tax_rates)) foreach( $local_tax_rates as $rate ) : $i++; ?>
|
||||
<tr class="tax_rate">
|
||||
<td class="check-column"><input type="checkbox" name="select" /></td>
|
||||
<td class="local_country">
|
||||
<select name="local_tax_country[<?php echo $i; ?>]" class="select">
|
||||
<option value=""><?php _e('Select a country/state…', 'woocommerce'); ?></option>
|
||||
<?php echo $woocommerce->countries->country_dropdown_options( $rate['country'], $rate['state'] ); ?>
|
||||
</select>
|
||||
<textarea type="text" placeholder="<?php _e('Post/zip codes', 'woocommerce'); ?>" class="text" name="local_tax_postcode[<?php echo $i; ?>]"><?php if (isset($rate['postcode'])) echo implode(';', $rate['postcode']); ?></textarea>
|
||||
</td>
|
||||
<td class="tax_class">
|
||||
<select name="local_tax_class[<?php echo $i; ?>]" title="Tax Class" class="select">
|
||||
<option value=""><?php _e('Standard Rate', 'woocommerce'); ?></option>
|
||||
<?php
|
||||
if ($tax_classes) foreach ($tax_classes as $class) :
|
||||
echo '<option value="'.sanitize_title($class).'"';
|
||||
selected($rate['class'], sanitize_title($class));
|
||||
echo '>'.$class.'</option>';
|
||||
endforeach;
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
<td class="label">
|
||||
<input type="text" class="text" value="<?php if (isset($rate['label'])) echo esc_attr( $rate['label'] ); ?>" name="local_tax_label[<?php echo $i; ?>]" title="<?php _e('Label', 'woocommerce'); ?>" size="16" />
|
||||
</td>
|
||||
<td class="rate">
|
||||
<input type="text" class="text" value="<?php echo esc_attr( $rate['rate'] ); ?>" name="local_tax_rate[<?php echo $i; ?>]" title="<?php _e('Rate', 'woocommerce'); ?>" placeholder="<?php _e('Rate', 'woocommerce'); ?>" maxlength="8" size="4" />%
|
||||
</td>
|
||||
<td class="compound">
|
||||
<input type="checkbox" class="checkbox" name="local_tax_compound[<?php echo $i; ?>]" <?php if (isset($rate['compound'])) checked($rate['compound'], 'yes'); ?> />
|
||||
</td>
|
||||
<td class="apply_to_shipping">
|
||||
<input type="checkbox" class="checkbox" name="local_tax_shipping[<?php echo $i; ?>]" <?php if (isset($rate['shipping'])) checked($rate['shipping'], 'yes'); ?> />
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function() {
|
||||
|
||||
jQuery('tr.tax_rate .edit_options').live('click', function(){
|
||||
jQuery(this).closest('td').find('.options').slideToggle();
|
||||
if (jQuery(this).text()=='<?php _e('Edit', 'woocommerce'); ?>') {
|
||||
|
||||
jQuery(this).closest('tr').find("select.tax_chosen_select").chosen();
|
||||
|
||||
jQuery(this).text('<?php _e('Done', 'woocommerce'); ?>');
|
||||
|
||||
} else {
|
||||
jQuery(this).text('<?php _e('Edit', 'woocommerce'); ?>');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('tr.tax_rate .select_all').live('click', function(){
|
||||
jQuery(this).closest('td').find('select option').attr("selected","selected");
|
||||
jQuery(this).closest('td').find('select.tax_chosen_select').trigger("change");
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('tr.tax_rate .select_none').live('click', function(){
|
||||
jQuery(this).closest('td').find('select option').removeAttr("selected");
|
||||
jQuery(this).closest('td').find('select.tax_chosen_select').trigger("change");
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('tr.tax_rate .select_us_states').live('click', function(){
|
||||
jQuery(this).closest('td').find('select optgroup[label="United States"] option').attr("selected","selected");
|
||||
jQuery(this).closest('td').find('select.tax_chosen_select').trigger("change");
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('tr.tax_rate .options select').live('change', function(){
|
||||
jQuery(this).trigger("liszt:updated");
|
||||
jQuery(this).closest('td').find('label').text( jQuery(":selected", this).length + '<?php _e(' countries/states selected', 'woocommerce') ?>' );
|
||||
});
|
||||
|
||||
jQuery('tr.tax_rate .select_europe').live('click', function(){
|
||||
jQuery(this).closest('td').find('option[value="AL"], option[value="AD"], option[value="AM"], option[value="AT"], option[value="BY"], option[value="BE"], option[value="BA"], option[value="BG"], option[value="CH"], option[value="CY"], option[value="CZ"], option[value="DE"], option[value="DK"], option[value="EE"], option[value="ES"], option[value="FO"], option[value="FI"], option[value="FR"], option[value="GB"], option[value="GE"], option[value="GI"], option[value="GR"], option[value="HU"], option[value="HR"], option[value="IE"], option[value="IS"], option[value="IT"], option[value="LT"], option[value="LU"], option[value="LV"], option[value="MC"], option[value="MK"], option[value="MT"], option[value="NO"], option[value="NL"], option[value="PO"], option[value="PT"], option[value="RO"], option[value="RU"], option[value="SE"], option[value="SI"], option[value="SK"], option[value="SM"], option[value="TR"], option[value="UA"], option[value="VA"]').attr("selected","selected");
|
||||
jQuery(this).closest('td').find('select.tax_chosen_select').trigger("change");
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('.taxrows a.add_tax_rate').live('click', function(){
|
||||
var size = jQuery('#tax_rates tr').size();
|
||||
|
||||
// Add the row
|
||||
jQuery('<tr class="tax_rate new_rate">\
|
||||
<td class="check-column"><input type="checkbox" name="select" /></td>\
|
||||
<td class="country">\
|
||||
<p class="edit"><button class="edit_options button"><?php _e('Edit', 'woocommerce') ?></button> <label><?php _e('No countries selected', 'woocommerce'); ?></label></p>\
|
||||
<div class="options" style="display:none">\
|
||||
<select name="tax_country[' + size + '][]" data-placeholder="<?php _e('Select countries/states…', 'woocommerce'); ?>" class="tax_chosen_select select" size="10" multiple="multiple">\
|
||||
<?php echo $woocommerce->countries->country_multiselect_options(); ?>\
|
||||
</select>\
|
||||
<?php echo '<p><button class="select_all button">'.__('All', 'woocommerce').'</button><button class="select_none button">'.__('None', 'woocommerce').'</button><button class="button select_us_states">'.__('US States', 'woocommerce').'</button><button class="button select_europe">'.__('EU States', 'woocommerce').'</button></p>'; ?>\
|
||||
</div>\
|
||||
</td>\
|
||||
<td class="tax_class">\
|
||||
<select name="tax_class[' + size + ']" title="Tax Class" class="select">\
|
||||
<option value=""><?php _e('Standard Rate', 'woocommerce'); ?></option>\
|
||||
<?php
|
||||
if ($tax_classes) foreach ($tax_classes as $class) :
|
||||
echo '<option value="'.sanitize_title($class).'">'.$class.'</option>';
|
||||
endforeach;
|
||||
?>
|
||||
</select>\
|
||||
</td>\
|
||||
<td class="label">\
|
||||
<input type="text" class="text" name="tax_label[' + size + ']" title="<?php _e('Label', 'woocommerce'); ?>" size="16" />\
|
||||
</td>\
|
||||
<td class="rate">\
|
||||
<input type="text" class="text" name="tax_rate[' + size + ']" title="<?php _e('Rate', 'woocommerce'); ?>" placeholder="<?php _e('Rate', 'woocommerce'); ?>" maxlength="8" size="4" />%\
|
||||
</td>\
|
||||
<td class="compound">\
|
||||
<input type="checkbox" class="checkbox" name="tax_compound[' + size + ']" />\
|
||||
</td>\
|
||||
<td class="apply_to_shipping">\
|
||||
<input type="checkbox" class="checkbox" name="tax_shipping[' + size + ']" />\
|
||||
</td>\
|
||||
</tr>').appendTo('#tax_rates');
|
||||
|
||||
jQuery(".new_rate select.tax_chosen_select").chosen();
|
||||
jQuery(".new_rate").removeClass('new_rate');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
jQuery('.taxrows a.add_local_tax_rate').live('click', function(){
|
||||
var size = jQuery('#local_tax_rates tr').size();
|
||||
|
||||
// Add the row
|
||||
jQuery('<tr class="tax_rate new_rate">\
|
||||
<td class="check-column"><input type="checkbox" name="select" /></td>\
|
||||
<td class="local_country">\
|
||||
<select name="local_tax_country[' + size + ']" class="select">\
|
||||
<option value=""><?php _e('Select a country/state…', 'woocommerce'); ?></option>\
|
||||
<?php echo $woocommerce->countries->country_dropdown_options( '', '', true ); ?>\
|
||||
</select>\
|
||||
<textarea type="text" placeholder="<?php _e('Post/zip codes', 'woocommerce'); ?>" class="text" name="local_tax_postcode[' + size + ']"></textarea>\
|
||||
</td>\
|
||||
<td class="tax_class">\
|
||||
<select name="local_tax_class[' + size + ']" title="Tax Class" class="select">\
|
||||
<option value=""><?php _e('Standard Rate', 'woocommerce'); ?></option>\
|
||||
<?php
|
||||
if ($tax_classes) foreach ($tax_classes as $class) :
|
||||
echo '<option value="'.sanitize_title($class).'">'.$class.'</option>';
|
||||
endforeach;
|
||||
?>
|
||||
</select>\
|
||||
</td>\
|
||||
<td class="label">\
|
||||
<input type="text" class="text" name="local_tax_label[' + size + ']" title="<?php _e('Label', 'woocommerce'); ?>" size="16" />\
|
||||
</td>\
|
||||
<td class="rate">\
|
||||
<input type="text" class="text" name="local_tax_rate[' + size + ']" title="<?php _e('Rate', 'woocommerce'); ?>" placeholder="<?php _e('Rate', 'woocommerce'); ?>" maxlength="8" size="4" />%\
|
||||
</td>\
|
||||
<td class="compound">\
|
||||
<input type="checkbox" class="checkbox" name="local_tax_compound[' + size + ']" />\
|
||||
</td>\
|
||||
<td class="apply_to_shipping">\
|
||||
<input type="checkbox" class="checkbox" name="local_tax_shipping[' + size + ']" />\
|
||||
</td>\
|
||||
</tr>').appendTo('#local_tax_rates');
|
||||
|
||||
jQuery(".new_rate").removeClass('new_rate');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// Remove row
|
||||
jQuery('.taxrows a.remove').live('click', function(){
|
||||
var answer = confirm("<?php _e('Delete the selected rates?', 'woocommerce'); ?>")
|
||||
if (answer) {
|
||||
var $rates = jQuery(this).closest('.taxrows').find('tbody');
|
||||
|
||||
$rates.find('tr td.check-column input:checked').each(function(i, el){
|
||||
jQuery(el).closest('tr').find('input.text, input.checkbox, select.select').val('');
|
||||
jQuery(el).closest('tr').hide();
|
||||
});
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
// Dupe row
|
||||
jQuery('.taxrows a.dupe').live('click', function(){
|
||||
var answer = confirm("<?php _e('Duplicate the selected rates?', 'woocommerce'); ?>")
|
||||
if (answer) {
|
||||
|
||||
var $rates = jQuery(this).closest('.taxrows').find('tbody');
|
||||
|
||||
$rates.find('tr td.check-column input:checked').each(function(i, el){
|
||||
var dupe = jQuery(el).closest('tr').clone()
|
||||
|
||||
// Remove chosen selector
|
||||
dupe.find('.chzn-done').removeClass('chzn-done').removeAttr('id').removeAttr('style');
|
||||
dupe.find('.chzn-container').remove();
|
||||
|
||||
// Append
|
||||
$rates.append( dupe );
|
||||
});
|
||||
|
||||
// Re-index keys
|
||||
var loop = 0;
|
||||
$rates.find('tr.tax_rate').each(function( index, row ){
|
||||
jQuery('input.text, input.checkbox, select.select', row).each(function( i, el ){
|
||||
|
||||
var t = jQuery(el);
|
||||
t.attr('name', t.attr('name').replace(/\[([^[]*)\]/, "[" + loop + "]"));
|
||||
|
||||
});
|
||||
loop++;
|
||||
});
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Tax Row Label
|
||||
*
|
||||
* Show a label based on user selections
|
||||
*/
|
||||
function woocommerce_tax_row_label( $selected ) {
|
||||
global $woocommerce;
|
||||
|
||||
$return = '';
|
||||
|
||||
// Get counts/countries
|
||||
$counties_array = array();
|
||||
$states_count = 0;
|
||||
|
||||
if ($selected) foreach ($selected as $country => $value) :
|
||||
|
||||
$country = woocommerce_clean($country);
|
||||
|
||||
if (sizeof($value)>0 && $value[0]!=='*') :
|
||||
$states_count+=sizeof($value);
|
||||
endif;
|
||||
|
||||
if (!in_array($country, $counties_array)) $counties_array[] = $woocommerce->countries->countries[$country];
|
||||
|
||||
endforeach;
|
||||
|
||||
$states_text = '';
|
||||
$countries_text = implode(', ', $counties_array);
|
||||
|
||||
// Show label
|
||||
if (sizeof($counties_array)==0) :
|
||||
|
||||
$return .= __('No countries selected', 'woocommerce');
|
||||
|
||||
elseif ( sizeof($counties_array) < 6 ) :
|
||||
|
||||
if ($states_count>0) $states_text = sprintf(_n('(1 state)', '(%s states)', $states_count, 'woocommerce'), $states_count);
|
||||
|
||||
$return .= $countries_text . ' ' . $states_text;
|
||||
|
||||
else :
|
||||
|
||||
if ($states_count>0) $states_text = sprintf(_n('and 1 state', 'and %s states', $states_count, 'woocommerce'), $states_count);
|
||||
|
||||
$return .= sprintf(_n('1 country', '%1$s countries', sizeof($counties_array), 'woocommerce'), sizeof($counties_array)) . ' ' . $states_text;
|
||||
|
||||
endif;
|
||||
|
||||
return $return;
|
||||
}
|
|
@ -165,7 +165,6 @@ include_once( 'woocommerce-admin-taxonomies.php' );
|
|||
* Includes for admin pages - only load functions when needed
|
||||
*/
|
||||
function woocommerce_settings_page() {
|
||||
include_once( 'woocommerce-admin-settings-forms.php' );
|
||||
include_once( 'woocommerce-admin-settings.php' );
|
||||
woocommerce_settings();
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ function woocommerce_default_options() {
|
|||
global $woocommerce_settings;
|
||||
|
||||
// Include settings so that we can run through defaults
|
||||
include_once( 'woocommerce-admin-settings.php' );
|
||||
include_once( 'settings/settings-init.php' );
|
||||
|
||||
foreach ($woocommerce_settings as $section) {
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1230,9 +1230,11 @@ a.export_rates, a.import_rates {
|
|||
}
|
||||
}
|
||||
table.wc_gateways, table.wc_shipping {
|
||||
position: relative;
|
||||
td {
|
||||
vertical-align: middle;
|
||||
cursor: move;
|
||||
padding: 4px 7px 2px;
|
||||
p {
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
|
|
@ -149,6 +149,7 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woothemes/wooc
|
|||
|
||||
==
|
||||
|
||||
* Tweak - Broken up settings pages to ease development
|
||||
* Fix - Strange error where detecting the page (is_page etc) would break the canonical redirect in some instances when hooked into 'wp'. Used the later get_header hook instead.
|
||||
* Fix - fix for https://bugs.php.net/bug.php?id=61166 (thanks Max Rice)
|
||||
|
||||
|
|
Loading…
Reference in New Issue