PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/v1world.us/wp-content/themes/neve/header-footer-grid/Core/Components/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //home/trave494/v1world.us/wp-content/themes/neve/header-footer-grid/Core/Components/CustomHtml.php |
<?php /** * Custom Component class for Header Footer Grid. * * Name: Header Footer Grid * Author: Bogdan Preda <bogdan.preda@themeisle.com> * * @version 1.0.0 * @package HFG */ namespace HFG\Core\Components; use HFG\Core\Settings\Manager as SettingsManager; use HFG\Main; use Neve\Core\Styles\Dynamic_Selector; /** * Class Copyright * * @package HFG\Core\Components */ class CustomHtml extends Abstract_Component { const CONTENT_ID = 'content'; const COMPONENT_ID = 'custom_html'; const COLOR_ID = 'color'; /** * CustomHtml constructor. * * @since 1.0.0 * @access public */ public function init() { $this->set_property( 'label', __( 'HTML', 'neve' ) ); $this->set_property( 'id', $this->get_class_const( 'COMPONENT_ID' ) ); $this->set_property( 'width', 3 ); $this->set_property( 'component_slug', 'hfg-html' ); $this->set_property( 'icon', 'welcome-write-blog' ); $this->set_property( 'has_typeface_control', true ); $this->set_property( 'default_typography_selector', $this->default_typography_selector . '.builder-item--' . $this->get_id() . ' .nv-html-content' ); //phpcs:ignore WordPressVIPMinimum.Security.Vuejs.RawHTMLDirectiveFound add_filter( 'wp_kses_allowed_html', array( $this, 'allow_input_form_tags' ), 10, 2 ); } /** * Add form and input tag to allowed tags in header_footer_grid context. * * @param array $tags HTML Tags. * @param string|array $context The context for which to retrieve tags. * * @return array */ public function allow_input_form_tags( $tags, $context ) { if ( $context !== 'header_footer_grid' ) { return $tags; } $tags = wp_kses_allowed_html( 'post' ); $global_attributes = array( 'accesskey' => true, 'class' => true, 'contenteditable' => true, 'data-*' => true, 'dir' => true, 'draggable' => true, 'dropzone' => true, 'hidden' => true, 'id' => true, 'lang' => true, 'spellcheck' => true, 'style' => true, 'tabindex' => true, 'title' => true, 'translate' => true, ); $input_attributes = array( 'accept' => true, 'align' => true, 'alt' => true, 'autocomplete' => true, 'autofocus' => true, 'checked' => true, 'dirname' => true, 'disabled' => true, 'form' => true, 'formaction' => true, 'formenctype' => true, 'formmethod' => true, 'formnovalidate' => true, 'formtarget' => true, 'height' => true, 'list' => true, 'max' => true, 'maxlength' => true, 'min' => true, 'multiple' => true, 'name' => true, 'pattern' => true, 'placeholder' => true, 'readonly' => true, 'required' => true, 'size' => true, 'src' => true, 'step' => true, 'type' => true, 'value' => true, 'width' => true, ); $form_attributes = array( 'accept' => true, 'accept-charset' => true, 'action' => true, 'autocomplete' => true, 'enctype' => true, 'method' => true, 'name' => true, 'nonvalidate' => true, 'target' => true, ); $tags['input'] = array_merge( $input_attributes, $global_attributes ); $tags['form'] = array_merge( $form_attributes, $global_attributes ); $tags['span'] = array_merge( array(), $global_attributes ); $tags['time'] = array( 'datetime' => true, 'class' => true, ); return $tags; } /** * Called to register component controls. * * @since 1.0.0 * @access public */ public function add_settings() { SettingsManager::get_instance()->add( [ 'id' => self::CONTENT_ID, 'group' => $this->get_class_const( 'COMPONENT_ID' ), 'tab' => SettingsManager::TAB_GENERAL, 'transport' => 'post' . $this->get_class_const( 'COMPONENT_ID' ), 'sanitize_callback' => 'wp_kses_post', 'default' => get_theme_mod( 'neve_top_bar_content', '' ), ' ' => '', 'label' => __( 'HTML', 'neve' ), 'description' => __( 'Arbitrary HTML code. It supports also shortcodes.', 'neve' ), 'type' => 'textarea', 'section' => $this->section, 'use_dynamic_fields' => array( 'string', 'url' ), 'conditional_header' => $this->get_builder_id() === 'header', ] ); SettingsManager::get_instance()->add( [ 'id' => self::COLOR_ID, 'group' => $this->get_class_const( 'COMPONENT_ID' ), 'tab' => SettingsManager::TAB_STYLE, 'transport' => 'postMessage', 'sanitize_callback' => 'neve_sanitize_colors', 'label' => __( 'Text Color', 'neve' ), 'type' => 'neve_color_control', 'section' => $this->section, 'live_refresh_selector' => true, 'live_refresh_css_prop' => [ 'cssVar' => [ 'vars' => '--color', 'selector' => '.builder-item--' . $this->get_id(), ], [ 'selector' => $this->default_typography_selector . ', ' . $this->default_typography_selector . ' *:not(a)', 'prop' => 'color', 'fallback' => 'inherit', ], ], 'conditional_header' => $this->get_builder_id() === 'header', ] ); } /** * Method to add Component css styles. * * @param array $css_array An array containing css rules. * * @return array * @since 1.0.0 * @access public */ public function add_style( array $css_array = array() ) { if ( ! neve_is_new_skin() ) { $css_array[] = [ Dynamic_Selector::KEY_SELECTOR => $this->default_typography_selector . ', ' . $this->default_typography_selector . ' *', Dynamic_Selector::KEY_RULES => [ \Neve\Core\Settings\Config::CSS_PROP_COLOR => [ Dynamic_Selector::META_KEY => $this->get_id() . '_' . self::COLOR_ID, Dynamic_Selector::META_DEFAULT => SettingsManager::get_instance()->get_default( $this->get_id() . '_' . self::COLOR_ID ), ], ], ]; return parent::add_style( $css_array ); } $css_array[] = [ Dynamic_Selector::KEY_SELECTOR => '.builder-item--' . $this->get_id(), Dynamic_Selector::KEY_RULES => [ '--color' => [ Dynamic_Selector::META_KEY => $this->get_id() . '_' . self::COLOR_ID, Dynamic_Selector::META_DEFAULT => SettingsManager::get_instance()->get_default( $this->get_id() . '_' . self::COLOR_ID ), ], ], ]; return parent::add_style( $css_array ); } /** * The render method for the component. * * @since 1.0.0 * @access public */ public function render_component() { Main::get_instance()->load( 'components/component-html' ); } }