D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
tvinntxo
/
www
/
wp-content
/
themes
/
woodmart
/
inc
/
builder
/
elements
/
abstract
/
Filename :
Element.php
back
Copy
<?php if ( ! defined('WOODMART_THEME_DIR')) exit('No direct script access allowed'); /** * ------------------------------------------------------------------------------------------------ * Abstract class for all elements used in the builder. This class is used both on backend and * on the frontend. * ------------------------------------------------------------------------------------------------ */ if( ! class_exists( 'WOODMART_HB_Element' ) ) { abstract class WOODMART_HB_Element { public $args = array(); public $template_name; public $vc_element = false; public function __construct() { // if( $this->vc_element && function_exists('vc_mapper') ) { // vc_mapper()->init(); if( $this->vc_element && is_admin()) { $this->visual_composer_to_header(); } else { $this->map(); } } public function get_header_options() { return WOODMART_Header_Builder::get_instance()->structure->get_header_options(); } public function get_args() { return $this->args; } public function render( $el, $children = '' ) { if( $this->vc_element ) { $args = $this->_parse_vc_args( $el ); } else { $args = $this->_parse_args( $el ); } extract( $args ); $path = '/header-elements/' . $this->template_name . '.php'; $located = ''; if ( file_exists(get_stylesheet_directory() . $path)) { $located = get_stylesheet_directory() . $path; } elseif ( file_exists(get_template_directory() . $path) ) { $located = get_template_directory() . $path; } if( file_exists( $located ) ) require $located; } private function _parse_args( $el ) { $a = array(); foreach ($el['params'] as $arg) { $a[ $arg['id'] ] = $arg['value']; } unset( $el['content'] ); $el['params'] = $a; return $el; } private function _parse_vc_args( $el ) { $a = array(); foreach ($el['params'] as $arg) { if( $arg['id'] == 'link' ) { $url = ''; if( isset( $arg['value'] ) && isset( $arg['value']['url'] ) ) $url = $arg['value']['url']; $value = 'url:' . rawurlencode($url); if( isset( $arg['value'] ) && isset( $arg['value']['blank'] ) && $arg['value']['blank'] ) $value .= '|target:_blank'; $a[ $arg['id'] ] = $value; } else if( $arg['type'] == 'switcher' ) { $a[ $arg['id'] ] = $arg['value'] ? 'yes' : 'no'; } else if( $arg['type'] == 'image' ) { $a[ $arg['id'] ] = (isset( $arg['value']['id'] )) ? $arg['value']['id'] : ''; } else { $a[ $arg['id'] ] = $arg['value']; } } unset( $el['content'] ); $el['params'] = $a; return $el; } public function has_background($params) { return( isset( $params['background'] ) && ( isset( $params['background']['background-color'] ) || isset( $params['background']['background-image'] ) ) ); } public function has_border($params) { return( isset( $params['border'] ) && isset( $params['border']['width'] ) && (int) $params['border']['width'] > 0 ); } public function visual_composer_to_header() { $vc_element = 'woodmart_get_' . $this->vc_element . '_shortcode_args'; $vc_args = $vc_element(); $old_args = $this->args; $this->args = array( 'type' => $this->_get_type_from_vc($this->vc_element), 'title' => $vc_args['name'], 'text' => $old_args['text'], 'icon' => $old_args['icon'], 'editable' => true, 'container' => false, 'edit_on_create' => true, 'drag_target_for' => array(), 'drag_source' => 'content_element', 'removable' => true, 'addable' => true, 'params' => $this->_get_params_from_vc( $vc_args['params'] ) ); } private function _get_params_from_vc( $params ) { $new_params = array(); if ( empty( $params ) ) return array(); foreach ($params as $key => $param) { if ( !$param || $param['type'] == 'woodmart_title_divider' || $param['type'] == 'woodmart_css_id' ) continue; $new_param = $this->_get_param_from_vc($param); if ( $new_param ) $new_params[$param['param_name']] = $new_param; } return $new_params; } private function _get_param_from_vc($param) { $new_param = array(); $new_param['id'] = $param['param_name']; $new_param['title'] = isset ( $param['heading'] ) ? $param['heading'] : ''; $new_param['value'] = ''; $dropdown_params = array( 'dropdown', 'woodmart_dropdown', 'woodmart_button_set', 'woodmart_image_select' ); if( isset( $param['description'] ) ) $new_param['description'] = $param['description']; if( isset( $param['group'] ) ) $new_param['tab'] = $param['group']; else $new_param['tab'] = 'General'; if( isset( $param['dependency'] ) ) { if( isset( $param['dependency']['value_not_equal_to'] ) ) { $new_param['requires'] = array( $param['dependency']['element'] => array( 'comparison' => 'not_equal', 'value' => $param['dependency']['value_not_equal_to'] ) ); } if( isset( $param['dependency']['value'] ) && is_array( $param['dependency']['value'] ) ) { $new_param['requires'] = array( $param['dependency']['element'] => array( 'comparison' => 'equal', 'value' => $param['dependency']['value'][0] ) ); } } switch ($param['type']) { case 'textfield': $new_param['type'] = 'text'; break; case 'vc_link': $new_param['type'] = 'link'; break; case in_array( $param['type'], $dropdown_params ): $options = $this->_get_options_from_vc($param['value']); $first_option = reset($options); $new_param['type'] = 'select'; if( count( $options ) < 6 ) $new_param['type'] = 'selector'; $new_param['options'] = $options; $new_param['value'] = $first_option['value']; break; case 'checkbox': $new_param['type'] = 'switcher'; $new_param['value'] = false; break; case 'textfield': $new_param['type'] = 'text'; break; case 'iconpicker': $new_param['type'] = 'text'; break; case 'attach_image': $new_param['type'] = 'image'; break; case 'textarea_html': $new_param['type'] = 'editor'; break; case 'textarea': $new_param['type'] = 'textarea'; break; case 'colorpicker': $new_param['type'] = 'color'; break; case 'woodmart_switch': $new_param['type'] = 'switcher'; break; case 'woodmart_colorpicker': $new_param['type'] = 'color'; break; default: $new_param = false; break; } return $new_param; } private function _get_options_from_vc($options) { $new_options = array(); foreach ( $options as $name => $value ) { $new_options[$value] = array( 'label' => $name, 'value' => $value ); } return $new_options; } private function _get_type_from_vc($type) { switch ($type) { case 'woodmart_button': return 'button'; break; case 'woodmart_info_box': return 'infobox'; break; case 'social_buttons': return 'social'; break; } } public function get_menu_options() { $array = array(); $menus = wp_get_nav_menus(); foreach ( $menus as $menu ) { $array[$menu->slug] = array( 'label' => $menu->name, 'value' => $menu->slug ); } return $array; } } }