| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- class BeRocket_product_brand_description_Widget extends BeRocket_Base_Product_List_Widget {
- public function __construct() {
- parent::__construct(
- "berocket_product_brand_description_widget",
- __( "WooCommerce Product Brands Description", 'brands-for-woocommerce' ),
- array( "description" => "" )
- );
-
- $this->defaults += array(
- 'brand_id' => '',
- 'display_title' => '',
- 'display_description' => '',
- 'banner_display' => '',
- 'banner_width' => 100,
- 'banner_width_units' => '%',
- 'banner_height' => '',
- 'banner_height_units' => 'px',
- 'banner_fit' => 'cover',
- 'banner_align' => 'center',
- 'thumbnail_display' => '',
- 'thumbnail_width' => 100,
- 'thumbnail_width_units' => '%',
- 'thumbnail_height' => '',
- 'thumbnail_height_units' => 'px',
- 'thumbnail_fit' => 'cover',
- 'thumbnail_align' => 'none',
- 'related_products_display' => '',
- 'display_link' => '',
- 'featured' => '',
- );
-
- // $related_keys = array_diff( array_keys( $this->form_fields ), array( 'title' ) );
- $title = array( 'title' => $this->form_fields['title'] );
- $related = $this->form_fields;
- unset( $related['title'] );
- foreach ( $related as $key => $value ) {
- $related[$key]['class'] .= ' related_products_display_depending';
- }
-
- $this->form_fields = $title + array(
- 'brand_id' => array(
- "title" => __( 'Brand', 'brands-for-woocommerce' ),
- 'type' => 'autocomplete',
- 'class' => 'width100',
- // 'walker' => 'Br_Walker_Brand_Selectlist',
- ),
- 'display_title' => array(
- "title" => __( 'Display brand title', 'brands-for-woocommerce' ),
- 'type' => 'checkbox',
- 'class' => 'br_brands_checkbox_block',
- ),
- 'display_description' => array(
- "title" => __( 'Display brand description', 'brands-for-woocommerce' ),
- 'type' => 'checkbox',
- 'class' => 'br_brands_checkbox_block',
- ),
- 'thumbnail' => array(
- "title" => __( 'Thumbnail:', 'brands-for-woocommerce' ),
- 'type' => 'image',
- 'class' => 'width100',
- 'align_options' => array(
- "left" => array( 'name' => __( 'Left to text', 'brands-for-woocommerce' ) ),
- "right" => array( 'name' => __( 'Right to text', 'brands-for-woocommerce' ) ),
- "none" => array( 'name' => __( 'None', 'brands-for-woocommerce' ) ),
- )
- ),
- 'banner' => array(
- "title" => __( 'Banner:', 'brands-for-woocommerce' ),
- 'type' => 'image',
- 'class' => 'width100',
- 'align_options' => array(
- "left" => array( 'name' => __( 'Left', 'brands-for-woocommerce' ) ),
- "right" => array( 'name' => __( 'Right', 'brands-for-woocommerce' ) ),
- "center" => array( 'name' => __( 'Center', 'brands-for-woocommerce' ) ),
- )
- ),
- 'related_products' => array(
- "title" => __( 'Related products', 'brands-for-woocommerce' ),
- 'type' => 'fieldset',
- 'items' => array(
- 'related_products_display' => array(
- "title" => __( 'Display', 'brands-for-woocommerce' ),
- 'type' => 'checkbox',
- 'class' => 'width100 br_brand_show_more_options',
- 'id' => "related_products_display_depending",
- )
- ) + $related,
- ),
- 'display_link' => array(
- "title" => __( 'Display external link', 'brands-for-woocommerce' ),
- 'type' => 'checkbox',
- 'class' => 'br_brands_checkbox_block',
- ),
- 'featured' => array(
- "title" => __( 'Display last created featured brand', 'brands-for-woocommerce' ),
- 'type' => 'checkbox',
- 'class' => 'br_brands_checkbox_block',
- ),
- );
-
- $this->shortcode_args = array(
- 'display_thumbnail' => 'thumbnail_display',
- 'width' => 'thumbnail_width',
- 'align' => 'thumbnail_align',
- );
- }
-
- public function update( $new_instance, $old_instance ) {
- $new_instance['brand_id'] = empty( $_REQUEST['berocket_brand'] ) ? '' : serialize( $_REQUEST['berocket_brand'] );
- $instance = parent::update( $new_instance, $old_instance );
- return $instance;
- }
-
- public function widget( $args, $instance ) {
- $instance = $this->replace_shortcode_keys( $instance );
- $instance = $this->get_size( 'thumbnail_width', $instance );
- $instance = $this->get_size( 'thumbnail_height', $instance );
- $instance = $this->get_size( 'banner_width', $instance );
- $instance = $this->get_size( 'banner_height', $instance );
-
- if ( ( !is_tax( BeRocket_product_brand::$taxonomy_name ) || !get_query_var( 'term' ) ) && empty( $instance['id'] )
- && empty( $instance['featured'] ) ) {
- return;
- }
-
- $instance['display_title'] = apply_filters( 'widget_title', empty($instance['display_title']) ? '' : $instance['display_title'], $instance );
- $instance = wp_parse_args( (array) $instance, $this->defaults );
-
- if ( !empty( $instance['featured'] ) ) {
- $terms = get_terms(
- array(
- 'hide_empty' => false, // also retrieve terms which are not used yet
- 'meta_query' => array(
- array(
- 'key' => 'br_brand_featured',
- 'value' => 1,
- )
- ),
- 'number' => 1,
- 'orderby' => 'id',
- 'order' => 'DESC',
- 'taxonomy' => BeRocket_product_brand::$taxonomy_name,
- )
- );
- if ( empty( $terms ) ) return;
- $term = $terms[0];
- } else {
- $term = empty( $instance['id'] ) ?
- get_term_by( 'slug', get_query_var( 'term' ), BeRocket_product_brand::$taxonomy_name ) :
- get_term_by( 'id', $instance['id'], BeRocket_product_brand::$taxonomy_name );
- }
-
- $image = get_term_meta( $term->term_id, 'brand_image_url', true );
-
- $BeRocket_product_brand = BeRocket_product_brand::getInstance();
- $options = $BeRocket_product_brand->get_option();
- $instance['link_text'] = empty( $options['link_text'] ) ? '' : $options['link_text'];
- $instance['link_open_in_new_tab'] = empty( $options['link_open_in_new_tab'] ) ? '' : $options['link_open_in_new_tab'];
-
- $related_products_options = array(
- 'columns',
- 'orderby',
- 'order',
- 'slider',
- 'hide_brands',
- 'per_page',
- 'cache_key',
- );
- foreach ( $related_products_options as $option ) {
- $instance["related_products_$option"] = $instance[$option];
- }
-
- set_query_var( 'options', $instance );
- set_query_var( 'brand_term', $term );
- set_query_var( 'tooltip', BeRocket_product_brand::get_tooltip( $term->term_id ) );
- $args['template'] = 'description';
- parent::widget( $args, $instance );
- }
-
- protected function replace_shortcode_keys( $instance ) {
- $instance = parent::replace_shortcode_keys( $instance );
- $instance = $this->get_size( 'thumbnailw', $instance );
- return $instance;
- }
-
- }
-
|