'', 'hide_on_mobile' => fusion_builder_default_visibility( 'string' ), 'id' => '', ]; } /** * Render the shortcode * * @access public * @since 3.13.0 * @param array $args Shortcode parameters. * @param string $content Content between shortcode. * @return string HTML output. */ public function render( $args, $content = '' ) { $this->args = array_merge( self::get_element_defaults(), $args ); $html = '' . $this->parse_dynamic_object_string( $args ) . ''; $html = apply_filters( 'fusion_shortcode_content', $html, 'awb_dd', $args ); $html = '' . $html . ''; $this->on_render(); return apply_filters( 'fusion_element_dynamic_data_content', $html, $this->args ); } /** * Parses the dynamic data arguments into an object string. * * @access public * @since 3.13.0 * @param array $args The dynamic data arguments. * @return string The dynamic data object string, that can be parsed in the dynamic data class. */ public function parse_dynamic_object_string( $args ) { $non_dynamic_args = [ 'hide_on_mobile', 'class', 'id' ]; $object_string = '{'; foreach( $args as $arg => $value ) { if ( 'dynamic_data' === $arg ) { $object_string .= $value; } else if ( ! in_array( $arg, $non_dynamic_args ) ) { $object_string .= ',' . $arg . ':' . $value; } } $object_string .= '}'; return $object_string; } /** * Builds the attributes array. * * @access public * @since 3.13.0 * @return array */ public function attr() { $attr = [ 'class' => 'awb-dd awb-dd-' . $this->counter, 'style' => '', ]; $attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], $attr ); if ( $this->args['class'] ) { $attr['class'] .= ' ' . $this->args['class']; } if ( $this->args['id'] ) { $attr['id'] = $this->args['id']; } return $attr; } } new FusionSC_DynamicData(); } /** * Map shortcode to Avada Builder * * @since 3.13.0 */ function awb_element_dynamic_data() { $dynamic_params = FusionBuilder()->dynamic_data->get_params(); $dd_endpoints = []; $group = ''; $params = []; foreach( $dynamic_params as $id => $param ) { if ( isset( $param['group'] ) && $group !== $param['group'] ) { $dd_endpoints[ 'group__' . str_replace( ' ', '_', strtolower( $param['group'] ) ) ] = $param['group']; $group === $param['group']; } $dd_endpoints[ $id ] = isset( $param['label'] ) ? $param['label'] : ucwords (str_replace ('_', ' ', $id ) ); if ( isset( $param['fields'] ) ) { foreach( $param['fields'] as $name => $option ) { $new_option = [ 'type' => 'text' === $option['type'] ? 'textfield' : $option['type'], 'heading' => $option['heading'], 'param_name' => $id . '__' . $option['param_name'], 'dependency' => [ [ 'element' => 'dynamic_data', 'value' => $id, 'operator' => '==', ], ], ]; if ( isset( $option['description'] ) ) { $new_option['description'] = $option['description']; } if ( isset( $option['default'] ) ) { $new_option['default'] = $option['default']; } if ( isset( $option['value'] ) ) { $new_option['value'] = $option['value']; } $params[] = $new_option; } } } $params['0'] = [ 'type' => 'select', 'heading' => esc_html__( 'Dynamic Data', 'fusion-builder' ), 'description' => esc_html__( 'Choose your dynamic data endpoint.', 'fusion-builder' ), 'placeholder' => esc_html__( 'Dynamic Data', 'fusion-builder' ), 'param_name' => 'dynamic_data', 'default' => '', 'value' => $dd_endpoints, ]; $params[] = [ 'type' => 'checkbox_button_set', 'heading' => esc_attr__( 'Element Visibility', 'fusion-builder' ), 'param_name' => 'hide_on_mobile', 'value' => fusion_builder_visibility_options( 'full' ), 'default' => fusion_builder_default_visibility( 'array' ), 'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ), ]; $params[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS Class', 'fusion-builder' ), 'param_name' => 'class', 'value' => '', 'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ), ]; $params[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS ID', 'fusion-builder' ), 'param_name' => 'id', 'value' => '', 'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ), ]; $params['fusion_conditional_render_placeholder'] = []; fusion_builder_map( fusion_builder_frontend_data( 'FusionSC_DynamicData', [ 'name' => esc_html__( 'Dynamic Data', 'fusion-builder' ), 'shortcode' => 'awb_dd', 'icon' => 'fusiona-dynamic-data', 'generator_only' => true, 'help_url' => 'https://avada.com/documentation/how-to-use-dynamic-content-options-in-avada/', 'params' => $params, ] ) ); } add_action( 'fusion_builder_wp_loaded', 'awb_element_dynamic_data' );