/** * Ger contribution settings for the product settings page * * @since 1.0.0 * @return array */ public function get_contribution_settings() { // Prepare contribution type options $contribution_types = wc_product_reviews_pro()->get_contribution_types(); $contribution_type_options = array(); foreach ($contribution_types as $type) { $contribution_type = wc_product_reviews_pro_get_contribution_type($type); $contribution_type_options[$type] = $contribution_type->get_title(); } // Prepare contribution settings $contribution_settings = array(array('title' => __('Contributions types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Select which contribution types to enable', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_enabled_contribution_types', 'default' => 'all', 'type' => 'select', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'desc_tip' => true, 'options' => array('all' => __('Enable all contribution types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'specific' => __('Enable specific contribution types only', WC_Product_Reviews_Pro::TEXT_DOMAIN))), array('title' => __('Specific contribution types', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => '', 'id' => 'wc_product_reviews_pro_specific_enabled_contribution_types', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'default' => '', 'type' => 'multiselect', 'options' => $contribution_type_options), array('title' => __('Admin Badges', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'desc' => __('Leave blank to disable badges.', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Enter the text to use on badges displayed on admin and shop manager contributions.', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_contribution_badge', 'default' => 'Admin'), array('title' => __('Sorting order', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Choose how contributions are sorted on product pages', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'id' => 'wc_product_reviews_pro_contributions_orderby', 'default' => 'most_helpful', 'type' => 'select', 'class' => 'wc-enhanced-select chosen_select', 'css' => 'min-width: 350px;', 'desc_tip' => true, 'options' => array('most_helpful' => __('Most helpful first', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'newest' => __('Newest first', WC_Product_Reviews_Pro::TEXT_DOMAIN))), array('title' => __('Minimum word count', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Users need to enter at least this amount of words when posting a contribution', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'id' => 'wc_product_reviews_pro_min_word_count'), array('title' => __('Maximum word count', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc_tip' => __('Maximum number of words users can enter when posting a contribution', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'text', 'id' => 'wc_product_reviews_pro_max_word_count'), array('title' => __('Moderation', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'desc' => __('Contributions must be manually approved', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'checkbox', 'id' => 'wc_product_reviews_pro_contribution_moderation')); if (SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3()) { $contribution_settings = array_merge(array(array('type' => 'sectionend', 'id' => 'product_data_options'), array('title' => __('Product Reviews', WC_Product_Reviews_Pro::TEXT_DOMAIN), 'type' => 'title', 'id' => 'product_contributions_options')), $contribution_settings); } return $contribution_settings; }
/** * Render dropdowns for any filterable checkout add-ons * * @since 1.0 */ public function restrict_orders() { global $typenow; if ('shop_order' != $typenow) { return; } $javascript = ''; foreach (wc_checkout_add_ons()->get_add_ons() as $add_on) { // if the add-on is filterable if ($add_on->is_filterable()) { if ($add_on->has_options()) { // filterable multi item add-on field (select, multiselect, radio, checkbox), provide a dropdown ?> <select name="<?php echo esc_attr($add_on->get_key()); ?> " id="<?php echo esc_attr($add_on->get_key()); ?> " class="wc-enhanced-select" data-placeholder="<?php echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name; ?> " data-allow_clear="true" style="min-width:200px;"> <option value=""></option> <?php foreach ($add_on->get_options() as $option) { if ('' === $option['value'] && '' === $option['label']) { continue; } echo '<option value="' . $option['value'] . '" ' . (isset($_GET[$add_on->get_key()]) ? selected($option['value'], $_GET[$add_on->get_key()]) : '') . '>' . __($option['label'], WC_Checkout_Add_Ons::TEXT_DOMAIN) . '</option>'; } ?> </select> <?php $javascript .= SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3() ? "if ( \$().chosen ) { \$('select#" . $add_on->get_key() . "').chosen( { allow_single_deselect: true } ); }" : ""; } elseif ($add_on->type == 'text') { if (SV_WC_Plugin_Compatibility::is_wc_version_gte_2_3()) { ?> <input type="hidden" class="sv-wc-enhanced-search" name="<?php echo esc_attr($add_on->get_key()); ?> " style="min-width:200px;" data-placeholder="<?php echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->label; ?> " data-selected="<?php echo empty($_GET[$add_on->get_key()]) ? '' : $_GET[$add_on->get_key()]; ?> " value="<?php echo empty($_GET[$add_on->get_key()]) ? '' : esc_attr($_GET[$add_on->get_key()]); ?> " data-allow_clear="true" data-action="wc_checkout_add_ons_json_search_field" data-nonce="<?php echo wp_create_nonce('search-field'); ?> " data-request_data = "<?php echo esc_attr(json_encode(array('add_on_id' => $add_on->id, 'default' => addslashes(__('Show all ', WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name)))); ?> " /> <?php SV_WC_Helper::render_select2_ajax(); } else { // search box dropdown ?> <select id="<?php echo esc_attr($add_on->get_key()); ?> " name="<?php echo esc_attr($add_on->get_key()); ?> " data-placeholder="<?php echo __("Show all ", WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name; ?> " data-allow_clear="true" style="min-width:200px;"> <option value=""></option> <?php if (!empty($_GET[$add_on->get_key()])) { echo '<option value="' . esc_attr($_GET[$add_on->get_key()]) . '" '; selected(1, 1); echo '>' . $_GET[$add_on->get_key()] . '</option>'; } ?> </select> <?php $javascript .= "\n\t\t\t\t\t\t\t\$( 'select#" . $add_on->get_key() . "' ).ajaxChosen( {\n\t\t\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\t\t\turl: '" . admin_url('admin-ajax.php') . "',\n\t\t\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\t\t\tafterTypeDelay: '100',\n\t\t\t\t\t\t\t\tminTermLength: 1,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\taction: 'wc_checkout_add_ons_json_search_field',\n\t\t\t\t\t\t\t\t\tsecurity: '" . wp_create_nonce("search-field") . "',\n\t\t\t\t\t\t\t\t\trequest_data: { 'add_on_id' : '" . $add_on->id . "', 'default' : '" . addslashes(__('Show all ', WC_Checkout_Add_Ons::TEXT_DOMAIN) . $add_on->name) . "' },\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, function ( data ) {\n\n\t\t\t\t\t\t\t\tvar terms = {};\n\n\t\t\t\t\t\t\t\t\$.each( data, function ( i, val ) {\n\t\t\t\t\t\t\t\t\tterms[ i ] = val;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn terms;\n\t\t\t\t\t\t\t}, { allow_single_deselect: true } );"; } } elseif ($add_on->type == 'checkbox' || $add_on->type == 'file') { $checked = isset($_GET[$add_on->get_key()]) && $_GET[$add_on->get_key()]; ?> <label class="wc-checkout-add-on-checkbox-filter"> <input type="checkbox" id="<?php echo esc_attr($add_on->get_key()); ?> " name="<?php echo esc_attr($add_on->get_key()); ?> " value="1" <?php checked($checked); ?> > <?php echo $add_on->name; ?> </label> <?php } } } // filterable dropdown javascript wc_enqueue_js($javascript); }
/** * Render dropdowns for any filterable custom order fields * * @since 1.0 */ public function restrict_orders() { global $typenow; if ('shop_order' != $typenow) { return; } $javascript = ''; foreach (wc_admin_custom_order_fields()->get_order_fields() as $order_field) { // if the field is filterable if ($order_field->is_filterable()) { if ($order_field->type == 'date') { // filterable date field: provide a monthly dropdown $this->render_months_dropdown($order_field->label, $order_field->get_meta_key()); $javascript .= "if ( ! \$().select2 && \$().chosen ) { \$( 'select#" . $order_field->get_meta_key() . "' ).chosen( { allow_single_deselect: true } ); }"; } elseif ($order_field->has_options()) { // filterable multi item field (select, multiselect, radio, checkbox), provide a dropdown ?> <select name="<?php echo esc_attr($order_field->get_meta_key()); ?> " id="<?php echo esc_attr($order_field->get_meta_key()); ?> " class="wc-enhanced-select" data-placeholder="<?php echo __("Show all ", 'wc_admin_custom_order_fields') . $order_field->label; ?> " data-allow_clear="true" style="min-width:200px;"> <option value=""></option> <?php foreach ($order_field->get_options() as $option) { if ('' === $option['value'] && '' === $option['label']) { continue; } echo '<option value="' . $option['value'] . '" ' . (isset($_GET[$order_field->get_meta_key()]) ? selected($option['value'], $_GET[$order_field->get_meta_key()]) : '') . '>' . __($option['label'], 'wc_admin_custom_order_fields') . '</option>'; } ?> </select> <?php $javascript .= SV_WC_Plugin_Compatibility::is_wc_version_lt_2_3() ? "if ( ! \$().select2 && \$().chosen ) { \$('select#" . $order_field->get_meta_key() . "').chosen( { allow_single_deselect: true } ); }" : ""; } elseif ($order_field->type == 'text') { if (SV_WC_Plugin_Compatibility::is_wc_version_gte_2_3()) { ?> <input type="hidden" class="sv-wc-enhanced-search" name="<?php echo esc_attr($order_field->get_meta_key()); ?> " style="min-width:200px;" data-placeholder="<?php echo __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label; ?> " data-selected="<?php echo empty($_GET[$order_field->get_meta_key()]) ? '' : $_GET[$order_field->get_meta_key()]; ?> " value="<?php echo empty($_GET[$order_field->get_meta_key()]) ? '' : esc_attr($_GET[$order_field->get_meta_key()]); ?> " data-allow_clear="true" data-action="wc_admin_custom_order_fields_json_search_field" data-nonce="<?php echo wp_create_nonce('search-field'); ?> " data-request_data = "<?php echo esc_attr(json_encode(array('field_name' => $order_field->get_meta_key(), 'default' => __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label))); ?> " /> <?php SV_WC_Helper::render_select2_ajax(); } else { // search box dropdown ?> <select id="<?php echo esc_attr($order_field->get_meta_key()); ?> " name="<?php echo esc_attr($order_field->get_meta_key()); ?> " data-placeholder="<?php echo __('Show all ', 'wc_admin_custom_order_fields') . $order_field->label; ?> " data-allow_clear="true" style="min-width:200px;"> <option value=""></option> <?php if (!empty($_GET[$order_field->get_meta_key()])) { echo '<option value="' . esc_attr($_GET[$order_field->get_meta_key()]) . '" '; selected(1, 1); echo '>' . $_GET[$order_field->get_meta_key()] . '</option>'; } ?> </select> <?php $javascript .= "\n\t\t\t\t\t\tif ( \$().ajaxChosen ) {\n\t\t\t\t\t\t\t\$( 'select#" . $order_field->get_meta_key() . "' ).ajaxChosen( {\n\t\t\t\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\t\t\t\turl: '" . admin_url('admin-ajax.php') . "',\n\t\t\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\t\t\tafterTypeDelay: '100',\n\t\t\t\t\t\t\t\tminTermLength: 1,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\trequest_data: { 'field_name' : '" . $order_field->get_meta_key() . "', 'default' : '" . __('Show all ' . $order_field->label, 'wc_admin_custom_order_fields') . "' },\n\t\t\t\t\t\t\t\t\taction: 'wc_admin_custom_order_fields_json_search_field',\n\t\t\t\t\t\t\t\t\tsecurity: '" . wp_create_nonce("search-field") . "',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, function ( data ) {\n\n\t\t\t\t\t\t\t\tvar terms = {};\n\n\t\t\t\t\t\t\t\t\$.each( data, function ( i, val ) {\n\t\t\t\t\t\t\t\t\tterms[ i ] = val;\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn terms;\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tallow_single_deselect: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t"; } } } } // filterable dropdown javascript wc_enqueue_js($javascript); }