function format_tax_rates_for_display($value) { $_tax = new jigoshop_tax(); $tax_classes = $_tax->get_tax_classes(); $tax_rates = Jigoshop_Base::get_options()->get('jigoshop_tax_rates'); if (empty($tax_rates)) { $tax_rates = array(); } $applied_all_states = array(); ob_start(); ?> <div id="jigoshop_tax_rates"> <table class="tax_rate_rules" cellspacing="0"> <thead> <tr> <th><?php _e('Remove', 'jigoshop'); ?> </th> <th><?php _e('Tax Classes', 'jigoshop'); ?> </th> <th><?php _e('Online Label', 'jigoshop'); ?> </th> <th><?php _e('Country/State', 'jigoshop'); ?> </th> <th><?php _e("Rate (%)", 'jigoshop'); ?> </th> <th><?php _e('Apply to shipping', 'jigoshop'); ?> </th> <th><?php _e('Compound', 'jigoshop'); ?> </th> </tr> </thead> <tfoot> <tr> <th><?php _e('Remove', 'jigoshop'); ?> </th> <th><?php _e('Tax Classes', 'jigoshop'); ?> </th> <th><?php _e('Online Label', 'jigoshop'); ?> </th> <th><?php _e('Country/State', 'jigoshop'); ?> </th> <th><?php _e("Rate (%)", 'jigoshop'); ?> </th> <th><?php _e('Apply to shipping', 'jigoshop'); ?> </th> <th><?php _e('Compound', 'jigoshop'); ?> </th> </tr> </tfoot> <tbody> <?php $i = -1; if ($tax_rates && is_array($tax_rates) && sizeof($tax_rates) > 0) { $tax_rates = $this->array_compare($tax_rates); foreach ($tax_rates as $rate) { if (isset($rate['is_all_states']) && in_array($rate['country'] . $rate['class'], $applied_all_states)) { continue; } $i++; // increment counter after check for all states having been applied echo '<tr class="tax_rate"><td><a href="#" class="remove button">×</a></td>'; echo '<td><select id="tax_classes[' . esc_attr($i) . ']" name="tax_classes[' . esc_attr($i) . ']"><option value="*">' . __('Standard Rate', 'jigoshop') . '</option>'; if ($tax_classes) { foreach ($tax_classes as $class) { echo '<option value="' . sanitize_title($class) . '"'; if (isset($rate['class']) && $rate['class'] == sanitize_title($class)) { echo 'selected="selected"'; } echo '>' . $class . '</option>'; } } echo '</select></td>'; echo '<td><input type="text" value="' . esc_attr($rate['label']) . '" name="tax_label[' . esc_attr($i) . ']" placeholder="' . __('Online Label', 'jigoshop') . '" size="10" /></td>'; echo '<td><select name="tax_country[' . esc_attr($i) . '][]" id="tax_country_' . esc_attr($i) . '" class="tax_select2" multiple="multiple" style="width:220px;">'; if (isset($rate['is_all_states'])) { if (is_array($applied_all_states) && !in_array($rate['country'] . $rate['class'], $applied_all_states)) { $applied_all_states[] = $rate['country'] . $rate['class']; jigoshop_countries::country_dropdown_options($rate['country'], '*', true); //all-states } else { continue; } } else { jigoshop_countries::country_dropdown_options($rate['country'], $rate['state'], true); } echo '</select>'; echo '<button class="select_none button">' . __('None', 'jigoshop') . '</button><button class="button select_all">' . __('All', 'jigoshop') . '</button><button class="button select_us_states">' . __('US States', 'jigoshop') . '</button><button class="button select_europe">' . __('EU States', 'jigoshop') . '</button></td>'; echo '<td><input type="text" value="' . esc_attr($rate['rate']) . '" name="tax_rate[' . esc_attr($i) . ']" placeholder="' . __('Rate (%)', 'jigoshop') . '" size="6" /></td>'; echo '<td><input type="checkbox" name="tax_shipping[' . esc_attr($i) . ']" '; if (isset($rate['shipping']) && $rate['shipping'] == 'yes') { echo 'checked="checked"'; } echo ' /></td>'; echo '<td><input type="checkbox" name="tax_compound[' . esc_attr($i) . ']" '; if (isset($rate['compound']) && $rate['compound'] == 'yes') { echo 'checked="checked"'; } echo ' /></td></tr>'; ?> <script type="text/javascript"> /*<![CDATA[*/ jQuery(function() { jQuery("#tax_country_<?php echo esc_attr($i); ?> ").select2(); }); /*]]>*/ </script><?php } } ?> </tbody> </table> <div><a href="#" class="add button"><?php _e('+ Add Tax Rule', 'jigoshop'); ?> </a></div> </div> <script type="text/javascript"> /*<![CDATA[*/ jQuery(function() { jQuery(document.body).on('click', 'tr.tax_rate .select_none', function(){ jQuery(this).closest('td').find('select option').removeAttr("selected"); jQuery(this).closest('td').find('select.tax_select2').trigger("change"); return false; }); jQuery(document.body).on('click', 'tr.tax_rate .select_all', function(){ jQuery(this).closest('td').find('select option').attr("selected","selected"); jQuery(this).closest('td').find('select.tax_select2').trigger("change"); return false; }); jQuery(document.body).on('click', 'tr.tax_rate .select_us_states', function(){ jQuery(this).closest('td').find('select optgroup[label="<?php _e('United States', 'jigoshop'); ?> "] option').attr("selected","selected"); jQuery(this).closest('td').find('select.tax_select2').trigger("change"); return false; }); jQuery(document.body).on('change', 'tr.tax_rate .options select', function(e){ jQuery(this).trigger("liszt:updated"); jQuery(this).closest('td').find('label').text( jQuery(":selected", this).length + ' ' + '<?php _e('countries/states selected', 'jigoshop'); ?> ' ); }); jQuery(document.body).on('click', 'tr.tax_rate .select_europe', function(e){ jQuery(this).closest('td').find('option[value="BE"],option[value="FR"],option[value="DE"],option[value="IT"],option[value="LU"],option[value="NL"],option[value="DK"],option[value="IE"],option[value="GR"],option[value="PT"],option[value="ES"],option[value="AT"],option[value="FI"],option[value="SE"],option[value="CY"],option[value="CZ"],option[value="EE"],option[value="HU"],option[value="LV"],option[value="LT"],option[value="MT"],option[value="PL"],option[value="SK"],option[value="SI"],option[value="RO"],option[value="BG"],option[value="IM"],option[value="GB"]').attr("selected","selected"); jQuery(this).closest('td').find('select.tax_select2').trigger("change"); return false; }); jQuery(document.body).on('click', '#jigoshop_tax_rates a.add', function() { var size = jQuery('.tax_rate_rules tbody tr').size(); jQuery('<tr class="tax_rate"> \ <td><a href="#" class="remove button">×</a></td> \ <td><select name="tax_classes[' + size + ']" > \ <option value="*"><?php _e('Standard Rate', 'jigoshop'); ?> </option> \ <?php $tax_classes = $_tax->get_tax_classes(); if ($tax_classes) { foreach ($tax_classes as $class) { echo '<option value="' . sanitize_title($class) . '">' . $class . '</option>'; } } ?> \ </select></td> \ <td><input type="text" name="tax_label[' + size + ']" placeholder="<?php _e('Online Label', 'jigoshop'); ?> " size="10" /></td> \ <td><select name="tax_country[' + size + '][]" id="tax_country_' + size +'" multiple="multiple" style="width:220px;"> \ <?php jigoshop_countries::country_dropdown_options('', '', true); ?> </select> \ <button class="select_none button"><?php _e('None', 'jigoshop'); ?> </button> \ <button class="button select_all"><?php _e('All', 'jigoshop'); ?> </button> \ <button class="button select_us_states"><?php _e('US States', 'jigoshop'); ?> </button> \ <button class="button select_europe"><?php _e('EU States', 'jigoshop'); ?> </button></td> \ <td><input type="text" name="tax_rate[' + size + ']" placeholder="<?php _e('Rate (%)', 'jigoshop'); ?> " size="6" /> \ <td><input type="checkbox" name="tax_shipping[' + size + ']" /></td> \ <td><input type="checkbox" name="tax_compound[' + size + ']" /></td> \ </tr>' ).appendTo('#jigoshop_tax_rates .tax_rate_rules tbody'); jQuery('#tax_country_' + size).select2(); jQuery('#tax_country_' + size).addClass("tax_select2"); return false; }); jQuery(document.body).on('click', '#jigoshop_tax_rates a.remove', function(){ var answer = confirm("<?php _e('Delete this rule?', 'jigoshop'); ?> "); if (answer) jQuery(this).parent().parent().remove(); return false; }); }); /*]]>*/ </script> <?php $output = ob_get_contents(); ob_end_clean(); return $output; }
/** * Product data box * * Displays the product data box, tabbed, with several panels covering price, stock etc * * @since 1.0 */ function jigoshop_product_data_box() { global $post, $wpdb, $thepostid; add_action('admin_footer', 'jigoshop_meta_scripts'); wp_nonce_field('jigoshop_save_data', 'jigoshop_meta_nonce'); $thepostid = $post->ID; // Product Type $terms = get_the_terms($thepostid, 'product_type'); $product_type = $terms ? current($terms)->slug : 'simple'; $product_type_selector = apply_filters('jigoshop_product_type_selector', array('simple' => __('Simple', 'jigoshop'), 'downloadable' => __('Downloadable', 'jigoshop'), 'grouped' => __('Grouped', 'jigoshop'), 'virtual' => __('Virtual', 'jigoshop'), 'variable' => __('Variable', 'jigoshop'), 'external' => __('External / Affiliate', 'jigoshop'))); $product_type_select = '<div class="product-type-label">' . __('Product Type', 'jigoshop') . '</div><select id="product-type" name="product-type"><optgroup label="' . __('Product Type', 'jigoshop') . '">'; foreach ($product_type_selector as $value => $label) { $product_type_select .= '<option value="' . $value . '" ' . selected($product_type, $value, false) . '>' . $label . '</option>'; } $product_type_select .= '</optgroup></select><div class="clear"></div>'; ?> <div class="panels"> <span class="jigoshop_product_data_type"><?php echo $product_type_select; ?> </span> <ul class="product_data_tabs tabs" style="display:none;"> <li class="general_tab active"> <a href="#general"><?php _e('General', 'jigoshop'); ?> </a> </li> <li class="advanced_tab"> <a href="#tax"><?php _e('Advanced', 'jigoshop'); ?> </a> </li> <?php if (Jigoshop_Base::get_options()->get('jigoshop_manage_stock') == 'yes') { ?> <li class="inventory_tab"> <a href="#inventory"><?php _e('Inventory', 'jigoshop'); ?> </a> </li> <?php } ?> <li class="attributes_tab"> <a href="#attributes"><?php _e('Attributes', 'jigoshop'); ?> </a> </li> <li class="grouped_tab"> <a href="#grouped"><?php _e('Grouping', 'jigoshop'); ?> </a> </li> <li class="file_tab"> <a href="#files"><?php _e('Download', 'jigoshop'); ?> </a> </li> <?php do_action('jigoshop_product_write_panel_tabs'); ?> <?php do_action('product_write_panel_tabs'); ?> </ul> <div id="general" class="panel jigoshop_options_panel"> <fieldset> <?php // Visibility $args = array('id' => 'product_visibility', 'label' => __('Visibility', 'jigoshop'), 'options' => array('visible' => __('Catalog & Search', 'jigoshop'), 'catalog' => __('Catalog Only', 'jigoshop'), 'search' => __('Search Only', 'jigoshop'), 'hidden' => __('Hidden', 'jigoshop')), 'selected' => get_post_meta($post->ID, 'visibility', true)); echo Jigoshop_Forms::select($args); // Featured $args = array('id' => 'featured', 'label' => __('Featured?', 'jigoshop'), 'desc' => __('Enable this option to feature this product', 'jigoshop'), 'value' => false); echo Jigoshop_Forms::checkbox($args); ?> </fieldset> <fieldset> <?php // SKU if (Jigoshop_Base::get_options()->get('jigoshop_enable_sku') !== 'no') { $args = array('id' => 'sku', 'label' => __('SKU', 'jigoshop'), 'placeholder' => $post->ID); echo Jigoshop_Forms::input($args); } //Brand if (Jigoshop_Base::get_options()->get('jigoshop_enable_brand') !== 'no') { $args = array('id' => 'brand', 'label' => __('Brand', 'jigoshop')); echo Jigoshop_Forms::input($args); } //GTIN if (Jigoshop_Base::get_options()->get('jigoshop_enable_gtin ') !== 'no') { $args = array('id' => 'gtin', 'label' => __('GTIN ', 'jigoshop')); echo Jigoshop_Forms::input($args); } //MPN if (Jigoshop_Base::get_options()->get('jigoshop_enable_mpn') !== 'no') { $args = array('id' => 'mpn', 'label' => __('MPN', 'jigoshop')); echo Jigoshop_Forms::input($args); } ?> </fieldset> <fieldset id="price_fieldset"> <?php // Regular Price $args = array('id' => 'regular_price', 'label' => __('Regular Price', 'jigoshop'), 'after_label' => ' (' . get_jigoshop_currency_symbol() . ')', 'type' => 'number', 'step' => 'any', 'placeholder' => __('Price Not Announced', 'jigoshop')); echo Jigoshop_Forms::input($args); // Sale Price $args = array('id' => 'sale_price', 'label' => __('Sale Price', 'jigoshop'), 'after_label' => ' (' . get_jigoshop_currency_symbol() . __(' or %', 'jigoshop') . ')', 'desc' => '<a href="#" class="sale_schedule">' . __('Schedule', 'jigoshop') . '</a>', 'placeholder' => __('15% or 19.99', 'jigoshop')); echo Jigoshop_Forms::input($args); // Sale Price date range // TODO: Convert this to a helper somehow? $field = array('id' => 'sale_price_dates', 'label' => __('On Sale Between', 'jigoshop')); $sale_price_dates_from = get_post_meta($thepostid, 'sale_price_dates_from', true); $sale_price_dates_to = get_post_meta($thepostid, 'sale_price_dates_to', true); echo '<p class="form-field sale_price_dates_fields">' . __('Current time:', 'jigoshop') . ' ' . current_time('Y-m-d H:i') . '</p>'; echo ' <p class="form-field sale_price_dates_fields"> <label for="' . esc_attr($field['id']) . '_from">' . $field['label'] . '</label> <input type="text" class="short date-pick" name="' . esc_attr($field['id']) . '_from" id="' . esc_attr($field['id']) . '_from" value="'; if ($sale_price_dates_from) { echo date('Y-m-d H:i', $sale_price_dates_from); } echo '" placeholder="' . __('From', 'jigoshop') . ' (' . date('Y-m-d H:i') . ')" maxlength="16" /> <input type="text" class="short date-pick" name="' . esc_attr($field['id']) . '_to" id="' . esc_attr($field['id']) . '_to" value="'; if ($sale_price_dates_to) { echo date('Y-m-d H:i', $sale_price_dates_to); } echo '" placeholder="' . __('To', 'jigoshop') . ' (' . date('Y-m-d H:i') . ')" maxlength="16" /> <a href="#" class="cancel_sale_schedule">' . __('Cancel', 'jigoshop') . '</a> </p>'; ?> <?php do_action('jigoshop_product_pricing_options'); /* allow extensions like sales flash pro to add pricing options */ ?> </fieldset> <fieldset> <?php // External products $args = array('id' => 'external_url', 'label' => __('Product URL', 'jigoshop'), 'placeholder' => __('The URL of the external product (eg. http://www.google.com)', 'jigoshop'), 'extras' => array()); echo Jigoshop_Forms::input($args); ?> </fieldset> <?php do_action('jigoshop_product_general_panel'); ?> </div> <div id="tax" class="panel jigoshop_options_panel"> <fieldset id="tax_fieldset"> <?php // Tax Status $status = get_post_meta($post->ID, 'tax_status', true); if (empty($status)) { $status = Jigoshop_Base::get_options()->get('jigoshop_tax_defaults_status', 'taxable'); } $args = array('id' => 'tax_status', 'label' => __('Tax Status', 'jigoshop'), 'options' => array('taxable' => __('Taxable', 'jigoshop'), 'shipping' => __('Shipping', 'jigoshop'), 'none' => __('None', 'jigoshop')), 'selected' => $status); echo Jigoshop_Forms::select($args); ?> <p class="form_field tax_classes_field"> <label for="tax_classes"><?php _e('Tax Classes', 'jigoshop'); ?> </label> <span class="multiselect short"> <?php $_tax = new jigoshop_tax(); $tax_classes = $_tax->get_tax_classes(); $selections = get_post_meta($post->ID, 'tax_classes', true); if (!is_array($selections)) { $selections = Jigoshop_Base::get_options()->get('jigoshop_tax_defaults_classes', array('*')); } $checked = checked(in_array('*', $selections), true, false); printf('<label %s><input type="checkbox" name="tax_classes[]" value="%s" %s/> %s</label>', !empty($checked) ? 'class="selected"' : '', '*', $checked, __('Standard', 'jigoshop')); if ($tax_classes) { foreach ($tax_classes as $tax_class) { $checked = checked(in_array(sanitize_title($tax_class), $selections), true, false); printf('<label %s><input type="checkbox" name="tax_classes[]" value="%s" %s/> %s</label>', !empty($checked) ? 'class="selected"' : '', sanitize_title($tax_class), $checked, __($tax_class, 'jigoshop')); } } ?> </span> <span class="multiselect-controls"> <a class="check-all" href="#"><?php _e('Check All', 'jigoshop'); ?> </a> | <a class="uncheck-all" href="#"><?php _e('Uncheck All', 'jigoshop'); ?> </a> </span> </p> </fieldset> <?php if (Jigoshop_Base::get_options()->get('jigoshop_enable_weight') !== 'no' || Jigoshop_Base::get_options()->get('jigoshop_enable_dimensions', true) !== 'no') { ?> <fieldset id="form_fieldset"> <?php // Weight if (Jigoshop_Base::get_options()->get('jigoshop_enable_weight') !== 'no') { $args = array('id' => 'weight', 'label' => __('Weight', 'jigoshop'), 'after_label' => ' (' . Jigoshop_Base::get_options()->get('jigoshop_weight_unit') . ')', 'type' => 'number', 'step' => 'any', 'placeholder' => '0.00'); echo Jigoshop_Forms::input($args); } // Dimensions if (Jigoshop_Base::get_options()->get('jigoshop_enable_dimensions', true) !== 'no') { echo ' <p class="form-field dimensions_field"> <label for"product_length">' . __('Dimensions', 'jigoshop') . ' (' . Jigoshop_Base::get_options()->get('jigoshop_dimension_unit') . ')' . '</label> <input type="number" step="any" name="length" class="short" value="' . get_post_meta($thepostid, 'length', true) . '" placeholder="' . __('Length', 'jigoshop') . '" /> <input type="number" step="any" name="width" class="short" value="' . get_post_meta($thepostid, 'width', true) . '" placeholder="' . __('Width', 'jigoshop') . '" /> <input type="number" step="any" name="height" class="short" value="' . get_post_meta($thepostid, 'height', true) . '" placeholder="' . __('Height', 'jigoshop') . '" /> </p> '; } ?> </fieldset> <?php } ?> <fieldset> <?php // Customizable $args = array('id' => 'product_customize', 'label' => __('Can be personalized', 'jigoshop'), 'options' => array('no' => __('No', 'jigoshop'), 'yes' => __('Yes', 'jigoshop')), 'selected' => get_post_meta($post->ID, 'customizable', true)); echo Jigoshop_Forms::select($args); // Customizable length $args = array('id' => 'customized_length', 'label' => __('Personalized Characters', 'jigoshop'), 'type' => 'number', 'value' => get_post_meta($post->ID, 'customized_length', true), 'placeholder' => __('Leave blank for unlimited', 'jigoshop')); echo Jigoshop_Forms::input($args); ?> </fieldset> <?php do_action('jigoshop_product_tax_panel'); ?> </div> <?php if (Jigoshop_Base::get_options()->get('jigoshop_manage_stock') == 'yes') { ?> <div id="inventory" class="panel jigoshop_options_panel"> <fieldset> <?php // manage stock $args = array('id' => 'manage_stock', 'label' => __('Manage Stock?', 'jigoshop'), 'desc' => __('Handle stock for me', 'jigoshop'), 'value' => false); echo Jigoshop_Forms::checkbox($args); ?> </fieldset> <fieldset> <?php // Stock Status // TODO: These values should be true/false $args = array('id' => 'stock_status', 'label' => __('Stock Status', 'jigoshop'), 'options' => array('instock' => __('In Stock', 'jigoshop'), 'outofstock' => __('Out of Stock', 'jigoshop'))); echo Jigoshop_Forms::select($args); echo '<div class="stock_fields">'; // Stock // TODO: Missing default value of 0 $args = array('id' => 'stock', 'label' => __('Stock Quantity', 'jigoshop'), 'type' => 'number'); echo Jigoshop_Forms::input($args); // Backorders $args = array('id' => 'backorders', 'label' => __('Allow Backorders?', 'jigoshop'), 'options' => array('no' => __('Do not allow', 'jigoshop'), 'notify' => __('Allow, but notify customer', 'jigoshop'), 'yes' => __('Allow', 'jigoshop'))); echo Jigoshop_Forms::select($args); echo '</div>'; ?> </fieldset> <?php do_action('jigoshop_product_inventory_panel'); ?> </div> <?php } ?> <div id="attributes" class="panel"> <?php do_action('jigoshop_attributes_display'); ?> </div> <div id="grouped" class="panel jigoshop_options_panel"> <?php // Grouped Products // TODO: Needs refactoring & a bit of love $posts_in = (array) get_objects_in_term(get_term_by('slug', 'grouped', 'product_type')->term_id, 'product_type'); $posts_in = array_unique($posts_in); if ((bool) $posts_in) { $args = array('post_type' => 'product', 'post_status' => 'publish', 'numberposts' => -1, 'orderby' => 'title', 'order' => 'asc', 'post_parent' => 0, 'include' => $posts_in); $grouped_products = get_posts($args); $options = array(null => '– Pick a Product Group –'); if ($grouped_products) { foreach ($grouped_products as $product) { if ($product->ID == $post->ID) { continue; } $options[$product->ID] = $product->post_title; } } // Only echo the form if we have grouped products $args = array('id' => 'parent_id', 'label' => __('Product Group', 'jigoshop'), 'options' => $options, 'selected' => $post->post_parent); echo Jigoshop_Forms::select($args); } // Ordering $args = array('id' => 'menu_order', 'label' => __('Sort Order', 'jigoshop'), 'type' => 'number', 'value' => $post->menu_order); echo Jigoshop_Forms::input($args); $args = array('id' => 'variation_order', 'label' => __('Variation Order', 'jigoshop'), 'options' => array('asort' => __('By name ascending', 'jigoshop'), 'arsort' => __('By name descending', 'jigoshop'), 'ksort' => __('From first to last key', 'jigoshop'), 'krsort' => __('From last to first key', 'jigoshop'), 'shuffle' => __('Random', 'jigoshop')), 'selected' => get_post_meta($post->ID, 'variation_order', true)); echo Jigoshop_Forms::select($args); ?> <?php do_action('jigoshop_product_grouped_panel'); ?> </div> <div id="files" class="panel jigoshop_options_panel"> <fieldset> <?php // DOWNLOADABLE OPTIONS // File URL // TODO: Refactor this into a helper $file_path = get_post_meta($post->ID, 'file_path', true); $field = array('id' => 'file_path', 'label' => __('File Path', 'jigoshop')); echo '<p class="form-field"><label for="' . esc_attr($field['id']) . '">' . $field['label'] . ':</label> <input type="text" class="file_path" name="' . esc_attr($field['id']) . '" id="' . esc_attr($field['id']) . '" value="' . esc_attr($file_path) . '" placeholder="' . site_url() . '" /> <input type="button" class="upload_file_button button" data-postid="' . esc_attr($post->ID) . '" value="' . __('Upload a file', 'jigoshop') . '" /> </p>'; // Download Limit $args = array('id' => 'download_limit', 'label' => __('Download Limit', 'jigoshop'), 'type' => 'number', 'desc' => __('Leave blank for unlimited re-downloads', 'jigoshop')); echo Jigoshop_Forms::input($args); do_action('additional_downloadable_product_type_options'); ?> </fieldset> <?php do_action('jigoshop_product_files_panel'); ?> </div> <?php do_action('jigoshop_product_write_panels'); ?> <?php do_action('product_write_panels'); ?> </div> <?php }
public function display_default_tax_classes() { $tax = new jigoshop_tax(); $classes = $tax->get_tax_classes(); $defaults = Jigoshop_Base::get_options()->get('jigoshop_tax_defaults_classes', array('*')); ob_start(); //We don't want any notices here. $old_status = error_reporting(0); echo Jigoshop_Forms::checkbox(array('id' => 'jigoshop_tax_defaults_class_standard', 'name' => 'jigoshop_tax_defaults_classes[*]', 'label' => __('Standard', 'jigoshop'), 'value' => in_array('*', $defaults))); foreach ($classes as $class) { $value = sanitize_title($class); echo Jigoshop_Forms::checkbox(array('id' => 'jigoshop_tax_defaults_class_' . $value, 'name' => 'jigoshop_tax_defaults_classes[' . $value . ']', 'label' => __($class, 'jigoshop'), 'value' => in_array($value, $defaults))); } error_reporting($old_status); return ob_get_clean(); }
/** * Product data box * * Displays the product data box, tabbed, with several panels covering price, stock etc * * @since 1.0 */ function jigoshop_product_data_box() { global $post, $wpdb, $thepostid; add_action('admin_footer', 'jigoshop_meta_scripts'); wp_nonce_field( 'jigoshop_save_data', 'jigoshop_meta_nonce' ); $data = (array) maybe_unserialize( get_post_meta($post->ID, 'product_data', true) ); $featured = (string) get_post_meta( $post->ID, 'featured', true ); $visibility = (string) get_post_meta( $post->ID, 'visibility', true); if (!isset($data['weight'])) $data['weight'] = ''; if (!isset($data['regular_price'])) $data['regular_price'] = ''; if (!isset($data['sale_price'])) $data['sale_price'] = ''; $thepostid = $post->ID; ?> <div class="panel-wrap product_data"> <ul class="product_data_tabs tabs" style="display:none;"> <li class="active"><a href="#general_product_data"><?php _e('General', 'jigoshop'); ?></a></li> <li class="pricing_tab"><a href="#pricing_product_data"><?php _e('Pricing', 'jigoshop'); ?></a></li> <?php if (get_option('jigoshop_manage_stock')=='yes') : ?><li class="inventory_tab"><a href="#inventory_product_data"><?php _e('Inventory', 'jigoshop'); ?></a></li><?php endif; ?> <li><a href="#jigoshop_attributes"><?php _e('Attributes', 'jigoshop'); ?></a></li> <?php do_action('product_write_panel_tabs'); ?> </ul> <div id="general_product_data" class="panel jigoshop_options_panel"><?php // Product Type if ($terms = wp_get_object_terms( $thepostid, 'product_type' )) $product_type = current($terms)->slug; else $product_type = 'simple'; $field = array( 'id' => 'product-type', 'label' => __('Product Type', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].' <em class="req" title="'.__('Required', 'jigoshop') . '">*</em></label><select id="'.$field['id'].'" name="'.$field['id'].'">'; echo '<option value="simple" '; if ($product_type=='simple') echo 'selected="selected"'; echo '>'.__('Simple','jigoshop').'</option>'; do_action('product_type_selector', $product_type); echo '</select></p>'; // Summary echo '<p class="form-field"><label for="excerpt">' . __('Summary', 'jigoshop') . ':</label> <textarea name="excerpt" id="excerpt" placeholder="' . __('Add a summary for your product – this is a quick description to encourage users to view the product.', 'jigoshop') . '">'.esc_html( $post->post_excerpt ).'</textarea></p>'; // SKU $field = array( 'id' => 'sku', 'label' => __('SKU', 'jigoshop') ); $SKU = get_post_meta($thepostid, 'SKU', true); if( get_option('jigoshop_enable_sku', true) !== 'no' ) : echo '<p class="form-field"> <label for="'.$field['id'].'">'.$field['label'].':</label> <input type="text" class="short" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$SKU.'" /> <span class="description">' . __('Leave blank to use product ID', 'jigoshop') . '</span></p>'; else: echo '<input type="hidden" name="'.$field['id'].'" value="'.$SKU.'" />'; endif; // Weight $field = array( 'id' => 'weight', 'label' => __('Weight', 'jigoshop') . ' ('.get_option('jigoshop_weight_unit').'):' ); if( get_option('jigoshop_enable_weight', true) !== 'no' ) : echo '<p class="form-field"> <label for="'.$field['id'].'">'.$field['label'].'</label> <input type="text" class="short" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$data[$field['id']].'" placeholder="0.00" /></p>'; else: echo '<input type="hidden" name="'.$field['id'].'" value="'.$data[$field['id']].'" />'; endif; // Featured $field = array( 'id' => 'featured', 'label' => __('Featured?', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].'</label><select name="'.$field['id'].'">'; echo '<option value="no" '; if (isset($featured) && $featured=='no') echo 'selected="selected"'; echo '>' . __('No', 'jigoshop') . '</option>'; echo '<option value="yes" '; if (isset($featured) && $featured=='yes') echo 'selected="selected"'; echo '>' . __('Yes', 'jigoshop') . '</option>'; echo '</select></p>'; // Visibility $field = array( 'id' => 'visibility', 'label' => __('Visibility', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].':</label><select name="'.$field['id'].'">'; echo '<option value="visible" '; if (isset($visibility) && $visibility=='visible') echo 'selected="selected"'; echo '>' . __('Catalog & Search', 'jigoshop') . '</option>'; echo '<option value="catalog" '; if (isset($visibility) && $visibility=='catalog') echo 'selected="selected"'; echo '>' . __('Catalog', 'jigoshop') . '</option>'; echo '<option value="search" '; if (isset($visibility) && $visibility=='search') echo 'selected="selected"'; echo '>' . __('Search', 'jigoshop') . '</option>'; echo '<option value="hidden" '; if (isset($visibility) && $visibility=='hidden') echo 'selected="selected"'; echo '>' . __('Hidden', 'jigoshop') . '</option>'; echo '</select></p>'; ?> </div> <div id="pricing_product_data" class="panel jigoshop_options_panel"> <?php // Price $field = array( 'id' => 'regular_price', 'label' => __('Regular Price', 'jigoshop') . ' ('.get_jigoshop_currency_symbol().'):' ); echo ' <p class="form-field"> <label for="'.$field['id'].'">'.$field['label'].'</label> <input type="text" class="short" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$data[$field['id']].'" placeholder="0.00" /></p>'; // Special Price $field = array( 'id' => 'sale_price', 'label' => __('Sale Price', 'jigoshop') . ' ('.get_jigoshop_currency_symbol().'):' ); echo ' <p class="form-field"> <label for="'.$field['id'].'">'.$field['label'].'</label> <input type="text" class="short" name="'.$field['id'].'" id="'.$field['id'].'" value="'.$data[$field['id']].'" placeholder="0.00" /></p>'; // Special Price date range $field = array( 'id' => 'sale_price_dates', 'label' => __('Sale Price Dates', 'jigoshop') ); $sale_price_dates_from = get_post_meta($thepostid, 'sale_price_dates_from', true); $sale_price_dates_to = get_post_meta($thepostid, 'sale_price_dates_to', true); echo ' <p class="form-field"> <label for="'.$field['id'].'_from">'.$field['label'].':</label> <input type="text" class="short date-pick" name="'.$field['id'].'_from" id="'.$field['id'].'_from" value="'; if ($sale_price_dates_from) echo date('Y-m-d', $sale_price_dates_from); echo '" placeholder="' . __('From…', 'jigoshop') . '" maxlength="10" /> <input type="text" class="short date-pick" name="'.$field['id'].'_to" id="'.$field['id'].'_to" value="'; if ($sale_price_dates_to) echo date('Y-m-d', $sale_price_dates_to); echo '" placeholder="' . __('To…', 'jigoshop') . '" maxlength="10" /> <span class="description">' . __('Date format', 'jigoshop') . ': <code>YYYY-MM-DD</code></span> </p>'; // Tax $_tax = new jigoshop_tax(); $field = array( 'id' => 'tax_status', 'label' => __('Tax Status', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].':</label><select name="'.$field['id'].'">'; echo '<option value="taxable" '; if (isset($data[$field['id']]) && $data[$field['id']]=='taxable') echo 'selected="selected"'; echo '>' . __('Taxable', 'jigoshop') . '</option>'; echo '<option value="shipping" '; if (isset($data[$field['id']]) && $data[$field['id']]=='shipping') echo 'selected="selected"'; echo '>' . __('Shipping only', 'jigoshop') . '</option>'; echo '<option value="none" '; if (isset($data[$field['id']]) && $data[$field['id']]=='none') echo 'selected="selected"'; echo '>' . __('None', 'jigoshop') . '</option>'; echo '</select></p>'; $field = array( 'id' => 'tax_class', 'label' => __('Tax Class', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].':</label><select name="'.$field['id'].'">'; echo '<option value="" '; if (isset($data[$field['id']]) && $data[$field['id']]=='') echo 'selected="selected"'; echo '>'.__('Standard', 'jigoshop').'</option>'; $tax_classes = $_tax->get_tax_classes(); if ($tax_classes) foreach ($tax_classes as $class) : echo '<option value="'.sanitize_title($class).'" '; if (isset($data[$field['id']]) && $data[$field['id']]==sanitize_title($class)) echo 'selected="selected"'; echo '>'.$class.'</option>'; endforeach; echo '</select></p>'; ?> </div> <?php if (get_option('jigoshop_manage_stock')=='yes') : ?> <div id="inventory_product_data" class="panel jigoshop_options_panel"> <?php // manage stock $field = array( 'id' => 'manage_stock', 'label' => __('Manage stock?', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].' <em class="req" title="' .__('Required', 'jigoshop') . '">*</em></label><input type="checkbox" class="checkbox" name="'.$field['id'].'" id="'.$field['id'].'"'; if (isset($data[$field['id']]) && $data[$field['id']]=='yes') echo 'checked="checked"'; echo ' /></p>'; // Stock status $field = array( 'id' => 'stock_status', 'label' => 'Stock status:' ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].' <em class="req" title="'.__('Required', 'jigoshop') . '">*</em></label><select name="'.$field['id'].'">'; echo '<option value="instock" '; if (isset($data[$field['id']]) && $data[$field['id']]=='instock') echo 'selected="selected"'; echo '>In stock</option>'; echo '<option value="outofstock" '; if (isset($data[$field['id']]) && $data[$field['id']]=='outofstock') echo 'selected="selected"'; echo '>Out of stock</option>'; echo '</select></p>'; echo '<div class="stock_fields">'; // Stock $field = array( 'id' => 'stock', 'label' => __('Stock Qty', 'jigoshop') ); echo ' <p class="form-field"> <label for="'.$field['id'].'">'.$field['label'].': <em class="req" title="'.__('Required', 'jigoshop') . '">*</em></label> <input type="text" class="short" name="'.$field['id'].'" id="'.$field['id'].'" value="'; $stock = get_post_meta($post->ID, 'stock', true); if (!$stock) $stock = 0; echo $stock; echo '" /> </p>'; // Backorders? $field = array( 'id' => 'backorders', 'label' => __('Allow Backorders?', 'jigoshop') ); echo '<p class="form-field"><label for="'.$field['id'].'">'.$field['label'].' <em class="req" title="'.__('Required', 'jigoshop') . '">*</em></label><select name="'.$field['id'].'">'; echo '<option value="no" '; if (isset($data[$field['id']]) && $data[$field['id']]=='no') echo 'selected="selected"'; echo '>' . __('Do not allow', 'jigoshop') . '</option>'; echo '<option value="notify" '; if (isset($data[$field['id']]) && $data[$field['id']]=='notify') echo 'selected="selected"'; echo '>' . __('Allow, but notify customer', 'jigoshop') . '</option>'; echo '<option value="yes" '; if (isset($data[$field['id']]) && $data[$field['id']]=='yes') echo 'selected="selected"'; echo '>' . __('Allow', 'jigoshop') . '</option>'; echo '</select></p>'; echo '</div>'; ?> </div> <?php endif; ?> <div id="jigoshop_attributes" class="panel"> <div class="jigoshop_attributes_wrapper"> <table cellpadding="0" cellspacing="0" class="jigoshop_attributes"> <thead> <tr> <th class="center" width="60"><?php _e('Order', 'jigoshop'); ?></th> <th width="180"><?php _e('Name', 'jigoshop'); ?></th> <th><?php _e('Value', 'jigoshop'); ?></th> <th class="center" width="1%"><?php _e('Visible?', 'jigoshop'); ?></th> <!--th class="center" width="1%"><?php _e('Variation?', 'jigoshop'); ?></th--> <th class="center" width="1%"><?php _e('Remove', 'jigoshop'); ?></th> </tr> </thead> <tbody id="attributes_list"> <?php $attribute_taxonomies = jigoshop::$attribute_taxonomies; $attributes = maybe_unserialize( get_post_meta($post->ID, 'product_attributes', true) ); $i = -1; // Taxonomies if ( $attribute_taxonomies ) : foreach ($attribute_taxonomies as $tax) : $i++; $attribute_nicename = strtolower(sanitize_title($tax->attribute_name)); if (isset($attributes[$attribute_nicename])) $attribute = $attributes[$attribute_nicename]; if (isset($attribute['visible']) && $attribute['visible']=='yes') $checked = 'checked="checked"'; else $checked = ''; if (isset($attribute['variation']) && $attribute['variation']=='yes') $checked2 = 'checked="checked"'; else $checked2 = ''; $values = wp_get_post_terms( $thepostid, 'pa_'.strtolower(sanitize_title($tax->attribute_name)) ); $value = array(); if (!is_wp_error($values) && $values) : foreach ($values as $v) : $value[] = $v->slug; endforeach; endif; ?><tr class="taxonomy <?php echo strtolower(sanitize_title($tax->attribute_name)); ?>" rel="<?php if (isset($attribute['position'])) echo $attribute['position']; else echo '0'; ?>" <?php if (!$value || sizeof($value)==0) echo 'style="display:none"'; ?>> <td class="center"> <button type="button" class="move_up button">↑</button><button type="button" class="move_down button">↓</button> <input type="hidden" name="attribute_position[<?php echo $i; ?>]" class="attribute_position" value="<?php if (isset($attribute['position'])) echo $attribute['position']; else echo '0'; ?>" /> </td> <td class="name"> <?php echo $tax->attribute_name; ?> <input type="hidden" name="attribute_names[<?php echo $i; ?>]" value="<?php echo $tax->attribute_name; ?>" /> <input type="hidden" name="attribute_is_taxonomy[<?php echo $i; ?>]" value="1" /> </td> <td> <?php if ($tax->attribute_type=="select" || $tax->attribute_type=="multiselect") : ?> <select <?php if ($tax->attribute_type=="multiselect") echo 'multiple="multiple" class="multiselect" name="attribute_values['.$i.'][]"'; else echo 'name="attribute_values['.$i.']"'; ?>> <?php if ($tax->attribute_type=="select") : ?><option value=""><?php _e('Choose an option…', 'jigoshop'); ?></option><?php endif; ?> <?php if (taxonomy_exists('pa_'.strtolower(sanitize_title($tax->attribute_name)))) : $terms = get_terms( 'pa_'.strtolower(sanitize_title($tax->attribute_name)), 'orderby=name&hide_empty=0' ); if ($terms) : foreach ($terms as $term) : echo '<option value="'.$term->name.'" '; if (in_array($term->slug, $value)) echo 'selected="selected"'; echo '>'.$term->name.'</option>'; endforeach; endif; endif; ?> </select> <?php elseif ($tax->attribute_type=="text") : ?> <input type="text" name="attribute_values[<?php echo $i; ?>]" value="<?php if (isset($attribute['value'])) echo $attribute['value']; ?>" placeholder="<?php _e('Comma separate terms', 'jigoshop'); ?>" /> <?php endif; ?> </td> <td class="center"><input type="checkbox" <?php echo $checked; ?> name="attribute_visibility[<?php echo $i; ?>]" value="1" /></td> <!--td class="center"><input type="checkbox" <?php echo $checked2; ?> name="attribute_variation[<?php echo $i; ?>]" value="1" /></td--> <td class="center"><button type="button" class="hide_row button">×</button></td> </tr><?php endforeach; endif; // Attributes if ($attributes && sizeof($attributes)>0) foreach ($attributes as $attribute) : if (isset($attribute['is_taxonomy']) && $attribute['is_taxonomy']=='yes') continue; $i++; if (isset($attribute['visible']) && $attribute['visible']=='yes') $checked = 'checked="checked"'; else $checked = ''; if (isset($attribute['variation']) && $attribute['variation']=='yes') $checked2 = 'checked="checked"'; else $checked2 = ''; ?><tr rel="<?php if (isset($attribute['position'])) echo $attribute['position']; else echo '0'; ?>"> <td class="center"> <button type="button" class="move_up button">↑</button><button type="button" class="move_down button">↓</button> <input type="hidden" name="attribute_position[<?php echo $i; ?>]" class="attribute_position" value="<?php if (isset($attribute['position'])) echo $attribute['position']; else echo '0'; ?>" /> </td> <td> <input type="text" name="attribute_names[<?php echo $i; ?>]" value="<?php echo $attribute['name']; ?>" /> <input type="hidden" name="attribute_is_taxonomy[<?php echo $i; ?>]" value="0" /> </td> <td><input type="text" name="attribute_values[<?php echo $i; ?>]" value="<?php echo $attribute['value']; ?>" /></td> <td class="center"><input type="checkbox" <?php echo $checked; ?> name="attribute_visibility[<?php echo $i; ?>]" value="1" /></td> <!--td class="center"><input type="checkbox" <?php echo $checked2; ?> name="attribute_variation[<?php echo $i; ?>]" value="1" /></td--> <td class="center"><button type="button" class="remove_row button">×</button></td> </tr><?php endforeach; ?> </tbody> </table> </div> <button type="button" class="button button-primary add_attribute"><?php _e('Add', 'jigoshop'); ?></button> <select name="attribute_taxonomy" class="attribute_taxonomy"> <option value=""><?php _e('Custom product attribute', 'jigoshop'); ?></option> <?php if ( $attribute_taxonomies ) : foreach ($attribute_taxonomies as $tax) : echo '<option value="'.strtolower(sanitize_title($tax->attribute_name)).'">'.$tax->attribute_name.'</option>'; endforeach; endif; ?> </select> <div class="clear"></div> </div> <?php do_action('product_write_panels'); ?> </div> <?php }
/** * Admin fields * * Loops though the jigoshop options array and outputs each field. * * @since 1.0 * @usedby jigoshop_settings() * * @param array $options List of options to go through and save */ function jigoshop_admin_fields($options) { ?> <div id="tabs-wrap"> <p class="submit"><input name="save" type="submit" value="<?php _e('Save changes','jigoshop') ?>" /></p> <?php $counter = 1; echo '<ul class="tabs">'; foreach ($options as $value) { if ( 'tab' == $value['type'] ) : echo '<li><a href="#'.$value['type'].$counter.'">'.$value['tabname'].'</a></li>'. "\n"; $counter = $counter + 1; endif; } echo '</ul>'; $counter = 1; foreach ($options as $value) : switch($value['type']) : case 'string': ?> <tr> <td class="titledesc"><?php echo $value['name']; ?></td> <td class="forminp"><?php echo $value['desc']; ?></td> </tr> <?php break; case 'tab': echo '<div id="'.$value['type'].$counter.'" class="panel">'; echo '<table class="widefat fixed" style="width:850px; margin-bottom:20px;">'. "\n\n"; break; case 'title': ?><thead><tr><th scope="col" width="200px"><?php echo $value['name'] ?></th><th scope="col" class="desc"><?php if (isset($value['desc'])) echo $value['desc'] ?> </th></tr></thead><?php break; case 'text': ?><tr> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"><input name="<?php echo $value['id'] ?>" id="<?php echo $value['id'] ?>" type="<?php echo $value['type'] ?>" style="<?php echo $value['css'] ?>" value="<?php if ( get_option( $value['id']) !== false && get_option( $value['id']) !== null ) echo get_option( $value['id'] ); else echo $value['std'] ?>" /><br /><small><?php echo $value['desc'] ?></small></td> </tr><?php break; case 'select': ?><tr> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"><select name="<?php echo $value['id'] ?>" id="<?php echo $value['id'] ?>" style="<?php echo $value['css'] ?>"> <?php foreach ($value['options'] as $key => $val) { ?> <option value="<?php echo $key ?>" <?php if (get_option($value['id']) == $key) { ?> selected="selected" <?php } ?>><?php echo ucfirst($val) ?></option> <?php } ?> </select><br /><small><?php echo $value['desc'] ?></small> </td> </tr><?php break; case 'textarea': ?><tr> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"> <textarea <?php if ( isset($value['args']) ) echo $value['args'] . ' '; ?>name="<?php echo $value['id'] ?>" id="<?php echo $value['id'] ?>" style="<?php echo $value['css'] ?>"><?php if (get_option($value['id'])) echo stripslashes(get_option($value['id'])); else echo $value['std']; ?></textarea> <br /><small><?php echo $value['desc'] ?></small> </td> </tr><?php break; case 'tabend': echo '</table></div>'; $counter = $counter + 1; break; case 'single_select_page' : $page_setting = (int) get_option($value['id']); $args = array( 'name' => $value['id'], 'id' => $value['id']. '" style="width: 200px;', 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'selected' => $page_setting); if( isset($value['args']) ) $args = wp_parse_args($value['args'], $args); ?><tr class="single_select_page"> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"> <?php wp_dropdown_pages($args); ?> <br /><small><?php echo $value['desc'] ?></small> </td> </tr><?php break; case 'single_select_country' : $countries = jigoshop_countries::$countries; $country_setting = (string) get_option($value['id']); if (strstr($country_setting, ':')) : $country = current(explode(':', $country_setting)); $state = end(explode(':', $country_setting)); else : $country = $country_setting; $state = '*'; endif; ?><tr class="multi_select_countries"> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"><select name="<?php echo $value['id'] ?>" title="Country" style="width: 150px;"> <?php echo jigoshop_countries::country_dropdown_options($country, $state); ?> </select> </td> </tr><?php break; case 'multi_select_countries' : $countries = jigoshop_countries::$countries; asort($countries); $selections = (array) get_option($value['id']); ?><tr class="multi_select_countries"> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp"> <div class="multi_select_countries"><ul><?php if ($countries) foreach ($countries as $key=>$val) : echo '<li><label><input type="checkbox" name="'. $value['id'] .'[]" value="'. $key .'" '; if (in_array($key, $selections)) echo 'checked="checked"'; echo ' />'. $val .'</label></li>'; endforeach; ?></ul></div> </td> </tr><?php break; case 'coupons' : $coupons = new jigoshop_coupons(); $coupon_codes = $coupons->get_coupons(); ?><tr> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp" id="coupon_codes"> <table class="coupon_rows" cellspacing="0"> <thead> <tr> <th><?php _e('Coupon Code', 'jigoshop'); ?></th> <th><?php _e('Coupon Type', 'jigoshop'); ?></th> <th><?php _e('Coupon Amount', 'jigoshop'); ?></th> <th><?php _e('Product ids', 'jigoshop'); ?></th> <th><?php _e('Individual use', 'jigoshop'); ?></th> <th><?php _e('Delete', 'jigoshop'); ?></th> </tr> </thead> <tbody> <?php $i = -1; if ($coupon_codes && is_array($coupon_codes) && sizeof($coupon_codes)>0) foreach( $coupon_codes as $coupon ) : $i++; echo '<tr class="coupon_row"><td><input type="text" value="'.$coupon['code'].'" name="coupon_code['.$i.']" title="'.__('Coupon Code', 'jigoshop').'" placeholder="'.__('Coupon Code', 'jigoshop').'" class="text" /></td><td><select name="coupon_type['.$i.']" title="Coupon Type">'; $discount_types = array( 'fixed_cart' => __('Cart Discount', 'jigoshop'), 'percent' => __('Cart % Discount', 'jigoshop'), 'fixed_product' => __('Product Discount', 'jigoshop') ); foreach ($discount_types as $type => $label) : $selected = ($coupon['type']==$type) ? 'selected="selected"' : ''; echo '<option value="'.$type.'" '.$selected.'>'.$label.'</option>'; endforeach; echo '</select></td><td><input type="text" value="'.$coupon['amount'].'" name="coupon_amount['.$i.']" title="'.__('Coupon Amount', 'jigoshop').'" placeholder="'.__('Coupon Amount', 'jigoshop').'" class="text" /></td><td><input type="text" value="'.implode(', ', $coupon['products']).'" name="product_ids['.$i.']" placeholder="'.__('1, 2, 3', 'jigoshop').'" class="text" /></td><td><label><input type="checkbox" name="individual['.$i.']" '; if (isset($coupon['individual_use']) && $coupon['individual_use']=='yes') echo 'checked="checked"'; echo ' /> '.__('Individual use only', 'jigoshop').'</label></td><td><a href="#" class="remove button">×</a></td></tr>'; endforeach; ?> </tbody> </table> <p><a href="#" class="add button"><?php _e('+ Add Coupon', 'jigoshop'); ?></a></p> </td> </tr> <script type="text/javascript"> /* <![CDATA[ */ jQuery(function() { jQuery('#coupon_codes a.add').live('click', function(){ var size = jQuery('#coupon_codes table.coupon_rows tbody .coupon_row').size(); // Make sure tbody exists var tbody_size = jQuery('#coupon_codes table.coupon_rows tbody').size(); if (tbody_size==0) jQuery('#coupon_codes table.coupon_rows').append('<tbody></tbody>'); // Add the row jQuery('<tr class="coupon_row">\ <td><input type="text" value="" name="coupon_code[' + size + ']" title="<?php _e('Coupon Code', 'jigoshop'); ?>" placeholder="<?php _e('Coupon Code', 'jigoshop'); ?>" class="text" /></td>\ <td><select name="coupon_type[' + size + ']" title="Coupon Type">\ <option value="percent"><?php _e('% Discount', 'jigoshop'); ?></option>\ <option value="fixed_product"><?php _e('Product Discount', 'jigoshop');?></option>\ <option value="fixed_cart"><?php _e('Cart Discount', 'jigoshop'); ?></option>\ </select></td>\ <td><input type="text" value="" name="coupon_amount[' + size + ']" title="<?php _e('Coupon Amount', 'jigoshop'); ?>" placeholder="<?php _e('Coupon Amount', 'jigoshop'); ?>" class="text" /></td>\ <td><input type="text" value="" name="product_ids[' + size + ']" placeholder="<?php _e('1, 2, 3', 'jigoshop'); ?>" class="text" /></td>\ <td><label><input type="checkbox" name="individual[' + size + ']" /> <?php _e('Individual use only', 'jigoshop'); ?></label></td>\ <td><a href="#" class="remove button">×</a></td></tr>').appendTo('#coupon_codes table.coupon_rows tbody'); return false; }); jQuery('#coupon_codes a.remove').live('click', function(){ var answer = confirm("<?php _e('Delete this coupon?', 'jigoshop'); ?>") if (answer) { jQuery('input', jQuery(this).parent().parent()).val(''); jQuery(this).parent().parent().hide(); } return false; }); }); /* ]]> */ </script> <?php break; case 'tax_rates' : $_tax = new jigoshop_tax(); $tax_classes = $_tax->get_tax_classes(); $tax_rates = get_option('jigoshop_tax_rates'); ?><tr> <td class="titledesc"><?php if ($value['tip']) { ?><a href="#" tip="<?php echo $value['tip'] ?>" class="tips" tabindex="99"></a><?php } ?><?php echo $value['name'] ?>:</td> <td class="forminp" id="tax_rates"> <div class="taxrows"> <?php $i = -1; if ($tax_rates && is_array($tax_rates) && sizeof($tax_rates)>0) foreach( $tax_rates as $rate ) : $i++; echo '<p class="taxrow"><select name="tax_class['.$i.']" title="Tax Class"><option value="">'.__('Standard Rate', 'jigoshop').'</option>'; if ($tax_classes) foreach ($tax_classes as $class) : echo '<option value="'.sanitize_title($class).'"'; if ($rate['class']==sanitize_title($class)) echo 'selected="selected"'; echo '>'.$class.'</option>'; endforeach; echo '</select><select name="tax_country['.$i.']" title="Country">'; jigoshop_countries::country_dropdown_options($rate['country'], $rate['state']); echo '</select><input type="text" class="text" value="'.$rate['rate'].'" name="tax_rate['.$i.']" title="'.__('Rate', 'jigoshop').'" placeholder="'.__('Rate', 'jigoshop').'" maxlength="8" />% <label><input type="checkbox" name="tax_shipping['.$i.']" '; if (isset($rate['shipping']) && $rate['shipping']=='yes') echo 'checked="checked"'; echo ' /> '.__('Apply to shipping', 'jigoshop').'</label><a href="#" class="remove button">×</a></p>'; endforeach; ?> </div> <p><a href="#" class="add button"><?php _e('+ Add Tax Rule', 'jigoshop'); ?></a></p> </td> </tr> <script type="text/javascript"> /* <![CDATA[ */ jQuery(function() { jQuery('#tax_rates a.add').live('click', function(){ var size = jQuery('.taxrows .taxrow').size(); // Add the row jQuery('<p class="taxrow"> \ <select name="tax_class[' + size + ']" title="Tax Class"> \ <option value=""><?php _e('Standard Rate', 'jigoshop'); ?></option><?php $tax_classes = $_tax->get_tax_classes(); if ($tax_classes) foreach ($tax_classes as $class) : echo '<option value="'.sanitize_title($class).'">'.$class.'</option>'; endforeach; ?></select><select name="tax_country[' + size + ']" title="Country"><?php jigoshop_countries::country_dropdown_options('','',true); ?></select><input type="text" class="text" name="tax_rate[' + size + ']" title="<?php _e('Rate', 'jigoshop'); ?>" placeholder="<?php _e('Rate', 'jigoshop'); ?>" maxlength="8" />%\ <label><input type="checkbox" name="tax_shipping[' + size + ']" /> <?php _e('Apply to shipping', 'jigoshop'); ?></label>\ <a href="#" class="remove button">×</a>\ </p>').appendTo('#tax_rates div.taxrows'); return false; }); jQuery('#tax_rates a.remove').live('click', function(){ var answer = confirm("<?php _e('Delete this rule?', 'jigoshop'); ?>"); if (answer) { jQuery('input', jQuery(this).parent()).val(''); jQuery(this).parent().hide(); } return false; }); }); /* ]]> */ </script> <?php break; case "shipping_options" : foreach (jigoshop_shipping::$shipping_methods as $method) : $method->admin_options(); endforeach; break; case "gateway_options" : foreach (jigoshop_payment_gateways::payment_gateways() as $gateway) : $gateway->admin_options(); endforeach; break; endswitch; endforeach; ?> <p class="submit"><input name="save" type="submit" value="<?php _e('Save changes','jigoshop') ?>" /></p> </div> <script type="text/javascript"> jQuery(function() { // Tabs jQuery('ul.tabs').show(); jQuery('ul.tabs li:first').addClass('active'); jQuery('div.panel:not(div.panel:first)').hide(); jQuery('ul.tabs a').click(function(){ jQuery('ul.tabs li').removeClass('active'); jQuery(this).parent().addClass('active'); jQuery('div.panel').hide(); jQuery( jQuery(this).attr('href') ).show(); jQuery.cookie('jigoshop_settings_tab_index', jQuery(this).parent().index('ul.tabs li')) return false; }); <?php if (isset($_COOKIE['jigoshop_settings_tab_index']) && $_COOKIE['jigoshop_settings_tab_index'] > 0) : ?> jQuery('ul.tabs li:eq(<?php echo $_COOKIE['jigoshop_settings_tab_index']; ?>) a').click(); <?php endif; ?> // Countries jQuery('select#jigoshop_allowed_countries').change(function(){ if (jQuery(this).val()=="specific") { jQuery(this).parent().parent().next('tr.multi_select_countries').show(); } else { jQuery(this).parent().parent().next('tr.multi_select_countries').hide(); } }).change(); }); </script> <?php }
function jigoshop_admin_option_display($options) { if (empty($options)) { return false; } $counter = 1; foreach ($options as $value) { switch ($value['type']) { case 'string': ?> <tr> <th scope="row"><?php echo $value['name']; ?> </th> <td><?php echo $value['desc']; ?> </td> </tr><?php break; case 'tab': ?> <div id="<?php echo $value['type'] . $counter; ?> " class="panel"> <table class="form-table"><?php break; case 'title': ?> <thead> <tr> <th scope="col" colspan="2"> <h3 class="title"><?php echo $value['name']; ?> </h3> <?php if (!empty($value['desc'])) { ?> <p><?php echo $value['desc']; ?> </p> <?php } ?> </th> </tr> </thead><?php break; case 'button': ?> <tr> <th scope="row"<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php if (!empty($value['tip'])) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99" ></a> <?php } ?> <?php if (!empty($value['name'])) { ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label> <?php } ?> </th> <td<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <a id="<?php echo esc_attr($value['id']); ?> " class="button <?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " style="<?php if (!empty($value['css'])) { echo esc_attr($value['css']); } ?> " href="<?php if (!empty($value['href'])) { echo esc_attr($value['href']); } ?> " ><?php if (!empty($value['desc'])) { echo $value['desc']; } ?> </a> </td> </tr><?php break; case 'checkbox': ?> <tr> <th scope="row"<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php if (!empty($value['tip'])) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99" ></a> <?php } ?> <?php if (!empty($value['name'])) { ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label> <?php } ?> </th> <td<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <input id="<?php echo esc_attr($value['id']); ?> " type="checkbox" class="jigoshop-input jigoshop-checkbox <?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " style="<?php if (!empty($value['css'])) { echo esc_attr($value['css']); } ?> " name="<?php echo esc_attr($value['id']); ?> " <?php if (get_option($value['id']) !== false && get_option($value['id']) !== null) { echo checked(get_option($value['id']), 'yes', false); } else { if (isset($value['std'])) { echo checked($value['std'], 'yes', false); } } ?> /> <label for="<?php echo esc_attr($value['id']); ?> "><?php if (!empty($value['desc'])) { echo $value['desc']; } ?> </label> </td> </tr><?php break; case 'text': case 'number': ?> <tr> <th scope="row"<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php if (!empty($value['tip'])) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a> <?php } ?> <?php if (!empty($value['name'])) { ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label> <?php } ?> </th> <td<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <input name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " type="<?php echo $value['type']; ?> " <?php if ($value['type'] == 'number' && !empty($value['restrict']) && is_array($value['restrict'])) { ?> min="<?php echo isset($value['restrict']['min']) ? $value['restrict']['min'] : ''; ?> " max="<?php echo isset($value['restrict']['max']) ? $value['restrict']['max'] : ''; ?> " step="<?php echo isset($value['restrict']['step']) ? $value['restrict']['step'] : 'any'; ?> " <?php } ?> class="regular-text <?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " style="<?php if (!empty($value['css'])) { echo esc_attr($value['css']); } ?> " placeholder="<?php if (!empty($value['placeholder'])) { echo esc_attr($value['placeholder']); } ?> " value="<?php if (get_option($value['id']) !== false && get_option($value['id']) !== null) { echo esc_attr(get_option($value['id'])); } else { if (isset($value['std'])) { echo esc_attr($value['std']); } } ?> " /> <?php if (!empty($value['desc']) && (!empty($value['name']) && empty($value['group']))) { ?> <br /><small><?php echo $value['desc']; ?> </small> <?php } elseif (!empty($value['desc'])) { ?> <?php echo $value['desc']; ?> <?php } ?> </td> </tr><?php break; case 'select': ?> <tr> <th scope="row"<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php if (!empty($value['tip'])) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a> <?php } ?> <?php if (!empty($value['name'])) { ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label> <?php } ?> </th> <td> <select name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " style="<?php if (isset($value['css'])) { echo esc_attr($value['css']); } ?> " class="<?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " <?php if (!empty($value['multiple'])) { echo 'multiple="multiple"'; } ?> <?php if (!empty($value['class']) && $value['class'] == 'chzn-select' && !empty($value['placeholder'])) { ?> data-placeholder="<?php _e(esc_attr($value['placeholder'])); ?> " <?php } ?> > <?php $selected = get_option($value['id']); $selected = !empty($selected) ? $selected : $value['std']; ?> <?php foreach ($value['options'] as $key => $val) { ?> <option value="<?php echo esc_attr($key); ?> " <?php if (!is_array($selected) && $selected == $key || is_array($selected) && in_array($key, $selected)) { ?> selected="selected" <?php } ?> > <?php echo ucfirst($val); ?> </option> <?php } ?> </select> <?php if (!empty($value['desc']) && (!empty($value['name']) && empty($value['group']))) { ?> <br /><small><?php echo $value['desc']; ?> </small> <?php } elseif (!empty($value['desc'])) { ?> <?php echo $value['desc']; ?> <?php } ?> </td> </tr><?php break; case 'radio': ?> <tr> <th scope="row"<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php if (!empty($value['tip'])) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a> <?php } ?> <?php echo $value['name']; ?> </th> <td<?php if (empty($value['name'])) { ?> style="padding-top:0px;"<?php } ?> > <?php foreach ($value['options'] as $key => $val) { ?> <label class="radio"> <input type="radio" name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($key); ?> " value="<?php echo esc_attr($key); ?> " class="<?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " <?php if (get_option($value['id']) == $key) { ?> checked="checked" <?php } ?> > <?php echo esc_attr(ucfirst($val)); ?> </label><br /> <?php } ?> </td> </tr><?php break; case 'image_size': $sizes = array('jigoshop_shop_tiny' => 'jigoshop_use_wordpress_tiny_crop', 'jigoshop_shop_thumbnail' => 'jigoshop_use_wordpress_thumbnail_crop', 'jigoshop_shop_small' => 'jigoshop_use_wordpress_catalog_crop', 'jigoshop_shop_large' => 'jigoshop_use_wordpress_featured_crop'); $altSize = $sizes[$value['id']]; ?> <tr> <th scope="row"><?php echo $value['name']; ?> </label></th> <td valign="top" style="line-height:25px;height:25px;"> <input name="<?php echo esc_attr($value['id']); ?> _w" id="<?php echo esc_attr($value['id']); ?> _w" type="number" min="0" style="width:60px;" placeholder=<?php if (!empty($value['placeholder'])) { echo $value['placeholder']; } ?> value="<?php if ($size = get_option($value['id'] . '_w')) { echo $size; } else { echo $value['std']; } ?> " /> <label for="<?php echo esc_attr($value['id']); ?> _h">x</label> <input name="<?php echo esc_attr($value['id']); ?> _h" id="<?php echo esc_attr($value['id']); ?> _h" type="number" min="0" style="width:60px;" placeholder=<?php if (!empty($value['placeholder'])) { echo $value['placeholder']; } ?> value="<?php if ($size = get_option($value['id'] . '_h')) { echo $size; } else { echo $value['std']; } ?> " /> <input id="<?php echo esc_attr($altSize); ?> " type="checkbox" class="jigoshop-input jigoshop-checkbox" name="<?php echo esc_attr($altSize); ?> " <?php if (get_option($altSize) !== false && get_option($altSize) !== null) { echo checked(get_option($altSize), 'yes', false); } ?> /> <label for="<?php echo esc_attr($altSize); ?> "> <?php echo __('Crop', 'jigoshop'); ?> </label> <br /><small><?php echo $value['desc']; ?> </small> </td> </tr><?php break; case 'textarea': ?> <tr> <th scope="row"><?php if ($value['tip']) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a><?php } ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label></th> <td> <textarea <?php if (isset($value['args'])) { echo $value['args'] . ' '; } ?> name="<?php echo esc_attr($value['id']); ?> " id="<?php echo esc_attr($value['id']); ?> " class="large-text <?php if (!empty($value['class'])) { echo esc_attr($value['class']); } ?> " style="<?php echo esc_attr($value['css']); ?> " placeholder="<?php if (!empty($value['placeholder'])) { echo esc_attr($value['placeholder']); } ?> " ><?php echo esc_textarea(get_option($value['id']) ? stripslashes(get_option($value['id'])) : $value['std']); ?> </textarea> <br /><small><?php echo $value['desc']; ?> </small> </td> </tr><?php break; case 'tabend': ?> </table></div><?php $counter = $counter + 1; break; case 'single_select_page': $args = array('name' => $value['id'], 'id' => $value['id'] . '" style="width: 200px;', 'sort_column' => 'menu_order', 'sort_order' => 'ASC', 'selected' => (int) get_option($value['id'])); if (!empty($value['args'])) { $args = wp_parse_args($value['args'], $args); } ?> <tr class="single_select_page"> <th scope="row"><?php if ($value['tip']) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a><?php } ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label></th> <td> <?php wp_dropdown_pages($args); ?> <br /><small><?php echo $value['desc']; ?> </small> </td> </tr><?php break; case 'single_select_country': $countries = jigoshop_countries::$countries; $country_setting = (string) get_option($value['id']); if (strstr($country_setting, ':')) { $country = current(explode(':', $country_setting)); $state = end(explode(':', $country_setting)); } else { $country = $country_setting; $state = '*'; } ?> <tr class="multi_select_countries"> <th scope="row"><?php if ($value['tip']) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a><?php } ?> <label for="<?php echo esc_attr($value['id']); ?> "><?php echo $value['name']; ?> </label></th> <td> <select id="<?php echo esc_attr($value['id']); ?> " name="<?php echo esc_attr($value['id']); ?> " title="Country" style="width: 150px;"> <?php $show_all = $value['id'] != 'jigoshop_default_country'; echo jigoshop_countries::country_dropdown_options($country, $state, false, $show_all); ?> </select> </td> </tr><?php if (!$show_all && jigoshop_countries::country_has_states($country) && $state == '*') { jigoshop_countries::base_country_notice(); } break; case 'multi_select_countries': $countries = jigoshop_countries::$countries; asort($countries); $selections = (array) get_option($value['id']); ?> <tr class="multi_select_countries"> <th scope="row"><?php if ($value['tip']) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a><?php } ?> <label><?php echo $value['name']; ?> </label></th> <td> <div class="multi_select_countries"> <ul><?php if ($countries) { foreach ($countries as $key => $val) { ?> <li><label> <input type="checkbox" name="<?php echo esc_attr($value['id']) . '[]'; ?> " value="<?php echo esc_attr($key); ?> " <?php if (in_array($key, $selections)) { ?> checked="checked" <?php } ?> /> <?php echo $val; ?> </label></li><?php } } ?> </ul> </div> </td> </tr><?php break; case 'coupons': _deprecated_argument('jigoshop_admin_option_display', '1.3', 'The coupons type has no alternative. Use the new custom post Coupons Menu item under Jigoshop.'); $coupons = new jigoshop_coupons(); $coupon_codes = $coupons->get_coupons(); ?> <style> table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} .table{width:100%;margin-bottom:18px;} .table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} .table thead th{vertical-align:bottom;} .table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} .table tbody+tbody{border-top:2px solid #dddddd;} .table-condensed th,.table-condensed td{padding:4px 5px;} .coupon-table th,.coupon-table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:0px;} </style> <tr><td><a href="#" class="add button" id="add_coupon"><?php _e('+ Add Coupon', 'jigoshop'); ?> </a></td></tr> <table class="coupons table"> <thead> <tr> <th>Coupon</th> <th>Type</th> <th>Amount</th> <th>Usage</th> <th>Controls</th> </tr> </thead> <tbody> <?php /* Payment methods. */ $payment_methods = array(); $available_gateways = jigoshop_payment_gateways::get_available_payment_gateways(); if (!empty($available_gateways)) { foreach ($available_gateways as $id => $info) { $payment_methods[$id] = $info->title; } } /* Coupon types. */ $discount_types = jigoshop_coupons::get_coupon_types(); /* Product categories. */ $categories = get_terms('product_cat', array('hide_empty' => false)); $coupon_cats = array(); foreach ($categories as $category) { $coupon_cats[$category->term_id] = $category->name; } $i = -1; if ($coupon_codes && is_array($coupon_codes) && sizeof($coupon_codes) > 0) { foreach ($coupon_codes as $coupon) { $i++; ?> <tr> <td style="width:500px;"> <table class="coupon-table form-table" id="coupons_table_<?php echo $i; ?> "> <?php echo $coupon['code']; ?> <tbody class="couponDisplay" id="coupons_rows_<?php echo $i; ?> "> <?php $selected_type = ''; foreach ($discount_types as $type => $label) { if ($coupon['type'] == $type) { $selected_type = $type; } } $options3 = array(array('name' => __('Code', 'jigoshop'), 'tip' => __('The coupon code a customer enters on the cart or checkout page.', 'jigoshop'), 'id' => 'coupon_code[' . esc_attr($i) . ']', 'css' => 'width:150px;', 'class' => 'coupon_code', 'type' => 'text', 'std' => esc_attr($coupon['code'])), array('name' => __('Type', 'jigoshop'), 'tip' => __('Cart - Applies to whole cart<br/>Product - Applies to individual products only. You must specify individual products.', 'jigoshop'), 'id' => 'coupon_type[' . esc_attr($i) . ']', 'css' => 'width:200px;', 'type' => 'select', 'std' => $selected_type, 'options' => $discount_types), array('name' => __('Amount', 'jigoshop'), 'tip' => __('Amount this coupon is worth. If it is a percentange, just include the number without the percentage sign.', 'jigoshop'), 'id' => 'coupon_amount[' . esc_attr($i) . ']', 'css' => 'width:60px;', 'type' => 'number', 'restrict' => array('min' => 0), 'std' => esc_attr($coupon['amount'])), array('name' => __('Usage limit', 'jigoshop'), 'desc' => __(sprintf('Times used: %s', !empty($coupon['usage']) ? $coupon['usage'] : '0'), 'jigoshop'), 'placeholder' => __('No limit', 'jigoshop'), 'tip' => __('Control how many times this coupon may be used.', 'jigoshop'), 'id' => 'usage_limit[' . esc_attr($i) . ']', 'css' => 'width:60px;', 'type' => 'number', 'restrict' => array('min' => 0), 'std' => !empty($coupon['usage_limit']) ? $coupon['usage_limit'] : ''), array('name' => __('Order subtotal', 'jigoshop'), 'placeholder' => __('No min', 'jigoshop'), 'desc' => __('Min', 'jigoshop'), 'tip' => __('Set the required subtotal for this coupon to be valid on an order.', 'jigoshop'), 'id' => 'order_total_min[' . esc_attr($i) . ']', 'css' => 'width:60px;', 'type' => 'number', 'restrict' => array('min' => 0), 'std' => !empty($coupon['order_total_min']) ? $coupon['order_total_min'] : '', 'group' => true), array('desc' => __('Max', 'jigoshop'), 'placeholder' => __('No max', 'jigoshop'), 'id' => 'order_total_max[' . esc_attr($i) . ']', 'css' => 'width:60px;', 'type' => 'number', 'restrict' => array('min' => 0), 'std' => !empty($coupon['order_total_max']) ? $coupon['order_total_max'] : '', 'group' => true), array('name' => __('Payment methods', 'jigoshop'), 'tip' => __('Which payment methods are allowed for this coupon to be effective?', 'jigoshop'), 'id' => 'coupon_pay_methods[' . esc_attr($i) . '][]', 'css' => 'width:200px;', 'class' => 'chzn-select', 'type' => 'select', 'placeholder' => 'Any method', 'multiple' => true, 'std' => !empty($coupon['coupon_pay_methods']) ? $coupon['coupon_pay_methods'] : '', 'options' => $payment_methods)); jigoshop_admin_option_display($options3); ?> <tr> <th scope="row"> <a href="#" tip="<?php _e('Control which products this coupon can apply to.', 'jigoshop'); ?> " class="tips" tabindex="99"></a> <label for="product_ids_<?php echo esc_attr($i); ?> "><?php _e('Products', 'jigoshop'); ?> </label> </th> <td> <select id="product_ids_<?php echo esc_attr($i); ?> " style="width:200px;" name="product_ids[<?php echo esc_attr($i); ?> ][]" style="width:100px" class="ajax_chosen_select_products_and_variations" multiple="multiple" data-placeholder="<?php _e('Any product', 'jigoshop'); ?> "> <?php $product_ids = $coupon['products']; if ($product_ids) { foreach ($product_ids as $product_id) { $title = get_the_title($product_id); $sku = get_post_meta($product_id, '_sku', true); if (!$title) { continue; } if (isset($sku) && $sku) { $sku = ' (SKU: ' . $sku . ')'; } echo '<option value="' . $product_id . '" selected="selected">' . $title . $sku . '</option>'; } } ?> </select> <?php _e('Include', 'jigoshop'); ?> </td> </tr> <tr> <th scope="row"></th> <td style="padding-top:0px;"> <select id="exclude_product_ids_<?php echo esc_attr($i); ?> " style="width:200px;" name="exclude_product_ids[<?php echo esc_attr($i); ?> ][]" style="width:100px" class="ajax_chosen_select_products_and_variations" multiple="multiple" data-placeholder="<?php _e('Any product', 'jigoshop'); ?> "> <?php if (!empty($coupon['exclude_products'])) { foreach ($coupon['exclude_products'] as $product_id) { $title = get_the_title($product_id); $sku = get_post_meta($product_id, '_sku', true); if (!$title) { continue; } if (isset($sku) && $sku) { $sku = ' (SKU: ' . $sku . ')'; } echo '<option value="' . $product_id . '" selected="selected">' . $title . $sku . '</option>'; } } ?> </select> <?php _e('Exclude', 'jigoshop'); ?> </td> </tr> <?php $options2 = array(array('name' => __('Categories', 'jigoshop'), 'desc' => __('Include', 'jigoshop'), 'tip' => __('Control which categories this coupon can apply to.', 'jigoshop'), 'id' => 'coupon_category[' . esc_attr($i) . '][]', 'type' => 'select', 'multiple' => true, 'std' => !empty($coupon['coupon_category']) ? $coupon['coupon_category'] : '', 'options' => $coupon_cats, 'class' => 'chzn-select', 'css' => 'width:200px;', 'placeholder' => 'Any category', 'group' => true), array('desc' => __('Exclude', 'jigoshop'), 'id' => 'exclude_categories[' . esc_attr($i) . '][]', 'type' => 'select', 'multiple' => true, 'std' => !empty($coupon['exclude_categories']) ? $coupon['exclude_categories'] : '', 'options' => $coupon_cats, 'class' => 'chzn-select', 'css' => 'width:200px;', 'placeholder' => 'Any category', 'group' => true), array('name' => __('Dates allowed', 'jigoshop'), 'desc' => __('From', 'jigoshop'), 'placeholder' => __('Any date', 'jigoshop'), 'tip' => __('Choose between which dates this coupon is enabled.', 'jigoshop'), 'id' => 'coupon_date_from[' . esc_attr($i) . ']', 'css' => 'width:150px;', 'type' => 'text', 'class' => 'date-pick', 'std' => !empty($coupon['date_from']) ? date('Y-m-d', $coupon['date_from']) : '', 'group' => true), array('desc' => __('To', 'jigoshop'), 'placeholder' => __('Any date', 'jigoshop'), 'id' => 'coupon_date_to[' . esc_attr($i) . ']', 'css' => 'width:150px;', 'type' => 'text', 'class' => 'date-pick', 'std' => !empty($coupon['date_to']) ? date('Y-m-d', $coupon['date_to']) : '', 'group' => true), array('name' => __('Misc. settings', 'jigoshop'), 'desc' => 'Prevent other coupons', 'tip' => __('Prevent other coupons from being used while this one is applied to a cart.', 'jigoshop'), 'id' => 'individual[' . esc_attr($i) . ']', 'type' => 'checkbox', 'std' => isset($coupon['individual_use']) && $coupon['individual_use'] == 'yes' ? 'yes' : 'no'), array('desc' => 'Free shipping', 'tip' => __('Show the Free Shipping method on checkout with this enabled.', 'jigoshop'), 'id' => 'coupon_free_shipping[' . esc_attr($i) . ']', 'type' => 'checkbox', 'std' => isset($coupon['coupon_free_shipping']) && $coupon['coupon_free_shipping'] == 'yes' ? 'yes' : 'no')); jigoshop_admin_option_display($options2); ?> </tbody> </table> <script type="text/javascript"> /* <![CDATA[ */ jQuery(function() { jQuery("select#product_ids_<?php echo esc_attr($i); ?> ").ajaxChosen({ method: 'GET', url: '<?php echo !is_ssl() ? str_replace('https', 'http', admin_url('admin-ajax.php')) : admin_url('admin-ajax.php'); ?> ', dataType: 'json', afterTypeDelay: 100, data: { action: 'jigoshop_json_search_products_and_variations', security: '<?php echo wp_create_nonce("search-products"); ?> ' } }, function (data) { var terms = {}; jQuery.each(data, function (i, val) { terms[i] = val; }); return terms; }); jQuery("select#exclude_product_ids_<?php echo esc_attr($i); ?> ").ajaxChosen({ method: 'GET', url: '<?php echo !is_ssl() ? str_replace('https', 'http', admin_url('admin-ajax.php')) : admin_url('admin-ajax.php'); ?> ', dataType: 'json', afterTypeDelay: 100, data: { action: 'jigoshop_json_search_products_and_variations', security: '<?php echo wp_create_nonce("search-products"); ?> ' } }, function (data) { var terms = {}; jQuery.each(data, function (i, val) { terms[i] = val; }); return terms; }); jQuery('.date-pick').datepicker( {dateFormat: 'yy-mm-dd', gotoCurrent: true} ); }); /* ]]> */ </script> </td> <td><?php echo $discount_types[$selected_type]; ?> </td> <td><?php echo !empty($coupon['amount']) ? $coupon['amount'] : ''; ?> </td> <td><?php echo !empty($coupon['usage']) ? $coupon['usage'] : '0'; ?> </td> <td> <a class="toggleCoupon" href="#coupons_rows_<?php echo $i; ?> "><?php _e('Show', 'jigoshop'); ?> </a> / <a href="#" id="remove_coupon_<?php echo esc_attr($i); ?> " class="remove_coupon" title="<?php _e('Delete this Coupon', 'jigoshop'); ?> "><?php _e('Delete', 'jigoshop'); ?> </a> </td> </tr> <?php } } ?> <script type="text/javascript"> jQuery('.couponDisplay').hide(); /* <![CDATA[ */ jQuery(function() { function toggle_coupons() { jQuery('a.toggleCoupon').click(function(e) { e.preventDefault(); jQuery(this).text(jQuery(this).text() == '<?php _e('Show', 'jigoshop'); ?> ' ? '<?php _e('Hide', 'jigoshop'); ?> ' : '<?php _e('Show', 'jigoshop'); ?> '); var id = jQuery(this).attr('href').substr(1); jQuery('#' + id).toggle('slow'); }); } toggle_coupons(); jQuery('#add_coupon').live('click', function(e){ e.preventDefault(); var size = jQuery('.couponDisplay').size(); var new_coupon = '\ <table class="coupon-table form-table" id="coupons_table_' + size + '">\ <tbody class="couponDisplay" id="coupons_rows_[' + size + ']">\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('The coupon code a customer enters on the cart or checkout page.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="coupon_code[' + size + ']"><?php _e('Code', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input name="coupon_code[' + size + ']" id="coupon_code[' + size + ']" type="text" class="regular-text coupon_code"\ style="width:150px;" placeholder="" value="" />\ <br />\ <small></small>\ </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Cart - Applies to whole cart<br/>Product - Applies to individual products only. You must specify individual products.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="coupon_type[' + size + ']"><?php _e('Type', 'jigoshop'); ?> </label>\ </th>\ <td>\ <select name="coupon_type[' + size + ']" id="coupon_type[' + size + ']" style="width:150px;">\ <option value="fixed_cart"><?php _e('Cart Discount', 'jigoshop'); ?> </option>\ <option value="percent"><?php _e('Cart % Discount', 'jigoshop'); ?> </option>\ <option value="fixed_product"><?php _e('Product Discount', 'jigoshop'); ?> </option>\ <option value="percent_product"><?php _e('Product % Discount', 'jigoshop'); ?> </option>\ </select>\ <br />\ <small></small>\ </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Amount this coupon is worth. If it is a percentange, just include the number without the percentage sign.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="coupon_amount[' + size + ']"><?php _e('Amount', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input name="coupon_amount[' + size + ']" id="coupon_amount[' + size + ']" type="number" min="0"\ max="" class="regular-text " style="width:60px;" value=""\ />\ <br />\ <small></small>\ </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Control how many times this coupon may be used.', 'jigoshop'); ?> " class="tips"\ tabindex="99"></a>\ <label for="usage_limit[' + size + ']"><?php _e('Usage limit', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input name="usage_limit[' + size + ']" id="usage_limit[' + size + ']" type="number" min="0"\ max="" class="regular-text " style="width:60px;" placeholder="<?php _e('No limit', 'jigoshop'); ?> "\ value="" />\ </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Set the required subtotal for this coupon to be valid on an order.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="order_total_min[' + size + ']"><?php _e('Order subtotal', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input name="order_total_min[' + size + ']" id="order_total_min[' + size + ']" type="number"\ min="0" max="" class="regular-text " style="width:60px;" placeholder="<?php _e('No min', 'jigoshop'); ?> "\ value="" /><?php _e('Min', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row" style="padding-top:0px;"></th>\ <td style="padding-top:0px;">\ <input name="order_total_max[' + size + ']" id="order_total_max[' + size + ']" type="number"\ min="0" max="" class="regular-text " style="width:60px;" placeholder="<?php _e('No max', 'jigoshop'); ?> "\ value="" /><?php _e('Max', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Which payment methods are allowed for this coupon to be effective?', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="coupon_pay_methods[' + size + '][]"><?php _e('Payment methods', 'jigoshop'); ?> </label>\ </th>\ <td>\ <select name="coupon_pay_methods[' + size + '][]" id="coupon_pay_methods[' + size + '][]" style="width:200px;"\ class="chzn-select" multiple="multiple">\ <?php foreach ($payment_methods as $id => $label) { echo '<option value="' . $id . '">' . $label . '</option>'; } ?> \ </select>\ <br />\ <small></small>\ </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Control which products this coupon can apply to.', 'jigoshop'); ?> " class="tips"\ tabindex="99"></a>\ <label for="product_ids_' + size + '"><?php _e('Products', 'jigoshop'); ?> </label>\ </th>\ <td>\ <select id="product_ids_' + size + '" style="width:200px;" name="product_ids[' + size + '][]"\ style="width:100px" class="ajax_chosen_select_products_and_variations"\ multiple="multiple" data-placeholder="<?php _e('Any product', 'jigoshop'); ?> "></select><?php _e('Include', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row"></th>\ <td style="padding-top:0px;">\ <select id="exclude_product_ids_' + size + '" style="width:200px;" name="exclude_product_ids[' + size + '][]"\ style="width:100px" class="ajax_chosen_select_products_and_variations"\ multiple="multiple" data-placeholder="<?php _e('Any product', 'jigoshop'); ?> "></select><?php _e('Exclude', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Control which categories this coupon can apply to.', 'jigoshop'); ?> " class="tips"\ tabindex="99"></a>\ <label for="coupon_category[' + size + '][]"><?php _e('Categories', 'jigoshop'); ?> </label>\ </th>\ <td>\ <select name="coupon_category[' + size + '][]" id="coupon_category_' + size + '" style="width:200px;"\ class="chzn-select" multiple="multiple">\ <?php $categories = get_terms('product_cat', array('hide_empty' => false)); foreach ($categories as $category) { echo '<option value="' . $category->term_id . '">' . $category->name . '</option>'; } ?> \ </select><?php _e('Include', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row">\ <label for="exclude_categories[' + size + '][]"></label>\ </th>\ <td>\ <select name="exclude_categories[' + size + '][]" id="exclude_categories_' + size + '" style="width:200px;"\ class="chzn-select" multiple="multiple">\ <?php $categories = get_terms('product_cat', array('hide_empty' => false)); foreach ($categories as $category) { echo '<option value="' . $category->term_id . '">' . $category->name . '</option>'; } ?> \ </select><?php _e('Exclude', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Choose between which dates this coupon is enabled.', 'jigoshop'); ?> " class="tips"\ tabindex="99"></a>\ <label for="coupon_date_from[' + size + ']"><?php _e('Dates allowed', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input name="coupon_date_from[' + size + ']" id="coupon_date_from[' + size + ']" type="text"\ class="regular-text date-pick" style="width:150px;" placeholder="<?php _e('Any date', 'jigoshop'); ?> "\ value="" /><?php _e('From', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row" style="padding-top:0px;"></th>\ <td style="padding-top:0px;">\ <input name="coupon_date_to[' + size + ']" id="coupon_date_to[' + size + ']" type="text" class="regular-text date-pick"\ style="width:150px;" placeholder="<?php _e('Any date', 'jigoshop'); ?> " value="" /><?php _e('To', 'jigoshop'); ?> </td>\ </tr>\ <tr>\ <th scope="row">\ <a href="#" tip="<?php _e('Prevent other coupons from being used while this one is applied to a cart.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ <label for="individual[' + size + ']"><?php _e('Misc. settings', 'jigoshop'); ?> </label>\ </th>\ <td>\ <input id="individual[' + size + ']" type="checkbox" class="jigoshop-input jigoshop-checkbox "\ style="" name="individual[' + size + ']" />\ <label for="individual[' + size + ']"><?php _e('Prevent other coupons', 'jigoshop'); ?> </label>\ </td>\ </tr>\ <tr>\ <th scope="row" style="padding-top:0px;">\ <a href="#" tip="<?php _e('Show the Free Shipping method on checkout with this enabled.', 'jigoshop'); ?> "\ class="tips" tabindex="99"></a>\ </th>\ <td style="padding-top:0px;">\ <input id="coupon_free_shipping[' + size + ']" type="checkbox" class="jigoshop-input jigoshop-checkbox "\ style="" name="coupon_free_shipping[' + size + ']" />\ <label for="coupon_free_shipping[' + size + ']"><?php _e('Free shipping', 'jigoshop'); ?> </label>\ </td>\ </tr>\ </tbody>\ </table>\ '; /* Add the table */ jQuery('.coupons.table').before(new_coupon); jQuery('#coupons_table_' + size).hide().fadeIn('slow'); jQuery("select#product_ids_" + size).ajaxChosen({ method: 'GET', url: '<?php echo !is_ssl() ? str_replace('https', 'http', admin_url('admin-ajax.php')) : admin_url('admin-ajax.php'); ?> ', dataType: 'json', afterTypeDelay: 100, data: { action: 'jigoshop_json_search_products_and_variations', security: '<?php echo wp_create_nonce("search-products"); ?> ' } }, function (data) { var terms = {}; jQuery.each(data, function (i, val) { terms[i] = val; }); return terms; }); jQuery("select#exclude_product_ids_" + size).ajaxChosen({ method: 'GET', url: '<?php echo !is_ssl() ? str_replace('https', 'http', admin_url('admin-ajax.php')) : admin_url('admin-ajax.php'); ?> ', dataType: 'json', afterTypeDelay: 100, data: { action: 'jigoshop_json_search_products_and_variations', security: '<?php echo wp_create_nonce("search-products"); ?> ' } }, function (data) { var terms = {}; jQuery.each(data, function (i, val) { terms[i] = val; }); return terms; }); jQuery('a[href="#coupons_rows_'+size+'"]').click(function(e) { e.preventDefault(); jQuery('#coupons_rows_'+size).toggle('slow', function() { // Stuff later? }); }); jQuery(".chzn-select").chosen(); jQuery(".tips").tooltip(); jQuery('.date-pick').datepicker( {dateFormat: 'yy-mm-dd', gotoCurrent: true} ); return false; }); jQuery('a.remove_coupon').live('click', function(){ var answer = confirm("<?php _e('Delete this coupon?', 'jigoshop'); ?> ") if (answer) { jQuery('input', jQuery(this).parent().parent().children()).val(''); jQuery(this).parent().parent().fadeOut(); } return false; }); }); /* ]]> */ </script> <?php break; case 'tax_rates': $_tax = new jigoshop_tax(); $tax_classes = $_tax->get_tax_classes(); $tax_rates = get_option('jigoshop_tax_rates'); $applied_all_states = array(); ?> <tr> <th><?php if ($value['tip']) { ?> <a href="#" tip="<?php echo $value['tip']; ?> " class="tips" tabindex="99"></a><?php } ?> <label><?php echo $value['name']; ?> </label></th> <td id="tax_rates"> <div class="taxrows"> <?php $i = -1; if ($tax_rates && is_array($tax_rates) && sizeof($tax_rates) > 0) { function array_find($needle, $haystack) { foreach ($haystack as $key => $val) { if ($needle == array("label" => $val['label'], "compound" => $val['compound'], 'rate' => $val['rate'], 'shipping' => $val['shipping'], 'is_all_states' => $val['is_all_states'], 'class' => $val['class'])) { return $key; } } return false; } function array_compare($tax_rates) { $after = array(); foreach ($tax_rates as $key => $val) { $first_two = array("label" => $val['label'], "compound" => $val['compound'], 'rate' => $val['rate'], 'shipping' => $val['shipping'], 'is_all_states' => $val['is_all_states'], 'class' => $val['class']); $found = array_find($first_two, $after); if ($found !== false) { $combined = $after[$found]["state"]; $combined2 = $after[$found]["country"]; $combined = !is_array($combined) ? array($combined) : $combined; $combined2 = !is_array($combined2) ? array($combined2) : $combined2; $after[$found] = array_merge($first_two, array("state" => array_merge($combined, array($val['state'])), "country" => array_merge($combined2, array($val['country'])))); } else { $after = array_merge($after, array(array_merge($first_two, array("state" => $val['state'], "country" => $val['country'])))); } } return $after; } $tax_rates = array_compare($tax_rates); foreach ($tax_rates as $rate) { if ($rate['is_all_states'] && in_array(get_all_states_key($rate), $applied_all_states)) { continue; } $i++; // increment counter after check for all states having been applied echo '<p class="taxrow"> <select name="tax_classes[' . esc_attr($i) . ']" title="Tax Classes"> <option value="*">' . __('Standard Rate', 'jigoshop') . '</option>'; if ($tax_classes) { foreach ($tax_classes as $class) { echo '<option value="' . sanitize_title($class) . '"'; if ($rate['class'] == sanitize_title($class)) { echo 'selected="selected"'; } echo '>' . $class . '</option>'; } } echo '</select> <input type="text" class="text" value="' . esc_attr($rate['label']) . '" name="tax_label[' . esc_attr($i) . ']" title="' . __('Online Label', 'jigoshop') . '" placeholder="' . __('Online Label', 'jigoshop') . '" maxlength="15" />'; echo '<select name="tax_country[' . esc_attr($i) . '][]" title="Country" multiple="multiple" style="width:250px;">'; if ($rate['is_all_states']) { if (is_array($applied_all_states) && !in_array(get_all_states_key($rate), $applied_all_states)) { $applied_all_states[] = get_all_states_key($rate); jigoshop_countries::country_dropdown_options($rate['country'], '*'); //all-states } else { continue; } } else { jigoshop_countries::country_dropdown_options($rate['country'], $rate['state']); } echo '</select> <input type="text" class="text" value="' . esc_attr($rate['rate']) . '" name="tax_rate[' . esc_attr($i) . ']" title="' . __('Rate', 'jigoshop') . '" placeholder="' . __('Rate', 'jigoshop') . '" maxlength="8" />% <label><input type="checkbox" name="tax_shipping[' . esc_attr($i) . ']" '; if (isset($rate['shipping']) && $rate['shipping'] == 'yes') { echo 'checked="checked"'; } echo ' /> ' . __('Apply to shipping', 'jigoshop') . '</label> <label><input type="checkbox" name="tax_compound[' . esc_attr($i) . ']" '; if (isset($rate['compound']) && $rate['compound'] == 'yes') { echo 'checked="checked"'; } echo ' /> ' . __('Compound', 'jigoshop') . '</label> <a href="#" class="remove button">×</a></p>'; } } ?> </div> <p><a href="#" class="add button"><?php _e('+ Add Tax Rule', 'jigoshop'); ?> </a></p> </td> </tr> <script type="text/javascript"> /* <![CDATA[ */ jQuery(function() { jQuery('#tax_rates a.add').live('click', function(){ var size = jQuery('.taxrows .taxrow').size(); // Add the row jQuery('<p class="taxrow"> \ <select name="tax_classes[' + size + ']" title="Tax Classes"> \ <option value="*"><?php _e('Standard Rate', 'jigoshop'); ?> </option><?php $tax_classes = $_tax->get_tax_classes(); if ($tax_classes) { foreach ($tax_classes as $class) { echo '<option value="' . sanitize_title($class) . '">' . $class . '</option>'; } } ?> </select><input type="text" class="text" name="tax_label[' + size + ']" title="<?php _e('Online Label', 'jigoshop'); ?> " placeholder="<?php _e('Online Label', 'jigoshop'); ?> " maxlength="15" />\ </select><select name="tax_country[' + size + '][]" title="Country" multiple="multiple"><?php jigoshop_countries::country_dropdown_options('', '', true); ?> </select><input type="text" class="text" name="tax_rate[' + size + ']" title="<?php _e('Rate', 'jigoshop'); ?> " placeholder="<?php _e('Rate', 'jigoshop'); ?> " maxlength="8" />%\ <label><input type="checkbox" name="tax_shipping[' + size + ']" /> <?php _e('Apply to shipping', 'jigoshop'); ?> </label>\ <label><input type="checkbox" name="tax_compound[' + size + ']" /> <?php _e('Compound', 'jigoshop'); ?> </label><a href="#" class="remove button">×</a>\ </p>').appendTo('#tax_rates div.taxrows'); return false; }); jQuery('#tax_rates a.remove').live('click', function(){ var answer = confirm("<?php _e('Delete this rule?', 'jigoshop'); ?> "); if (answer) { jQuery('input', jQuery(this).parent()).val(''); jQuery(this).parent().hide(); } return false; }); }); /* ]]> */ </script> <?php break; case "shipping_options": foreach (jigoshop_shipping::get_all_methods() as $method) { $method->admin_options(); } break; case "gateway_options": foreach (jigoshop_payment_gateways::payment_gateways() as $gateway) { $gateway->admin_options(); } break; } } }