is_edit_mode_load()) { $this->enqueue_styles_scripts(); } parent::__construct($data, $args); } /** * Retrieve the list of categories the widget belongs to. * * Used to determine where to display the widget in the editor. * * Note that currently Elementor supports only one category. * When multiple categories passed, Elementor uses the first one. * * @since 1.1.0 * * @access public * * @return array Widget categories. */ public function get_categories() { return [ 'wdk-elementor-listing-preview' ]; } /** * Retrieve the widget name. * * @since 1.1.0 * * @access public * * @return string Widget name. */ public function get_name() { return 'wdk-field-icon'; } /** * Retrieve the widget title. * * @since 1.1.0 * * @access public * * @return string Widget title. */ public function get_title() { return esc_html__('Wdk Field Icon', 'wpdirectorykit'); } /** * Retrieve the widget icon. * * @since 1.1.0 * * @access public * * @return string Widget icon. */ public function get_icon() { return 'eicon-image-bold'; } /** * Register the widget controls. * * Adds different input fields to allow the user to change and customize the widget settings. * * @since 1.1.0 * * @access protected */ protected function register_controls() { $this->generate_controls_conf(); $this->generate_controls_layout(); $this->generate_controls_styles(); $this->generate_controls_content(); $this->insert_pro_message('1'); parent::register_controls(); } /** * Render the widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 1.1.0 * * @access protected */ protected function render() { parent::render(); global $wdk_listing_id; $this->data['id_element'] = $this->get_id(); $this->data['settings'] = $this->get_settings(); $this->data['field_icon'] = ''; if(!empty($this->data['settings']['field_id'])) { if(strpos($this->data['settings']['field_id'],'__') !== FALSE){ $this->data['settings']['field_id'] = substr($this->data['settings']['field_id'], strpos($this->data['settings']['field_id'],'__')+2); } if($this->data['settings']['field_id'] == 'category_id') { $this->WMVC->model('category_m'); $tree_data = $this->WMVC->category_m->get(wdk_field_value ($this->data['settings']['field_id'], $wdk_listing_id), TRUE); $this->data['field_icon'] = wmvc_show_data('icon_id', $tree_data); } else if($this->data['settings']['field_id'] == 'location_id') { $this->WMVC->model('location_id'); $tree_data = $this->WMVC->location_id->get(wdk_field_value ($this->data['settings']['field_id'], $wdk_listing_id), TRUE); $this->data['field_icon'] = wmvc_show_data('icon_id', $tree_data); } else { $this->data['field_icon'] = wdk_field_option ($this->data['settings']['field_id'], 'icon_id'); } } $this->data['is_edit_mode']= false; if(Plugin::$instance->editor->is_edit_mode()){ $this->data['is_edit_mode']= true; } else { /* return false if no content */ if($this->data['settings']['hide_onempty'] == 'yes' && $this->data['field_icon'] == '') return false; /* return false if no content */ if($this->data['field_icon'] == '') return false; } $this->view('wdk-field-icon', $this->data, true); } private function generate_controls_conf() { $this->start_controls_section( 'tab_conf_main_section', [ 'label' => esc_html__('Main', 'wpdirectorykit'), 'tab' => '1', ] ); $fields_data = wdk_cached_field_get(); $fields_list = array('' => esc_html__('Not Selected', 'wpdirectorykit')); $order_i = 0; $fields_list [(++$order_i).'__section'] = esc_html__('-- Section Custom fields --', 'wpdirectorykit'); $fields_list [(++$order_i).'__post_title'] = esc_html__('WP Title', 'wpdirectorykit'); $fields_list [(++$order_i).'__post_content'] = esc_html__('WP Content', 'wpdirectorykit'); $fields_list [(++$order_i).'__address'] = esc_html__('Address', 'wpdirectorykit'); $fields_list [(++$order_i).'__category_id'] = esc_html__('Category', 'wpdirectorykit'); $fields_list [(++$order_i).'__location_id'] = esc_html__('Location', 'wpdirectorykit'); foreach($fields_data as $field) { if(wmvc_show_data('field_type', $field) == 'SECTION') { $fields_list [(++$order_i).'section__'.wmvc_show_data('idfield', $field)] = '-- '.esc_html__('Section', 'wpdirectorykit').' '.wmvc_show_data('field_label', $field).' --'; } else { $fields_list[(++$order_i).'__'.wmvc_show_data('idfield', $field)] = '#'.wmvc_show_data('idfield', $field).' '.wmvc_show_data('field_label', $field).'['.wmvc_show_data('field_type', $field).']'; } } $this->add_control( 'field_id', [ 'label' => __( 'Field id', 'wpdirectorykit' ), 'type' => \Elementor\Controls_Manager::SELECT2, 'default' => '', 'options' => $fields_list, 'separator' => 'after', ] ); $this->add_control( 'hide_onempty', [ 'label' => __( 'Hide if empty', 'wpdirectorykit' ), 'type' => \Elementor\Controls_Manager::SWITCHER, 'label_on' => __( 'True', 'wpdirectorykit' ), 'label_off' => __( 'False', 'wpdirectorykit' ), 'return_value' => 'yes', 'default' => '', ] ); $this->end_controls_section(); } private function generate_controls_layout() { } private function generate_controls_styles() { $this->start_controls_section( 'field_group', [ 'label' => esc_html__('Field icon', 'wpdirectorykit'), 'tab' => Controls_Manager::TAB_STYLE, ] ); $selectors = array( 'normal' => '{{WRAPPER}} .wdk-field-icon img', ); $this->generate_renders_tabs($selectors, 'layout_image_dynamic', ['image_size_control','image_fit_control', 'height', 'width','css_filters']); $this->end_controls_section(); /* END special for some elements */ } private function generate_controls_content() { } public function enqueue_styles_scripts() { } }