PATH:
home
/
lab2454c
/
caimegroup.com
/
wp-content
/
plugins
/
elementskit
/
modules
/
sticky-content
<?php namespace Elementor; class ElementsKit_Extend_Sticky { public function __construct() { add_action( 'elementor/element/section/section_advanced/after_section_end', [ $this, 'register_controls' ], 6 ); add_action( 'elementor/element/common/_section_style/after_section_end', [ $this, 'register_controls' ], 6 ); // Flexbox Container support add_action( 'elementor/element/container/section_layout/after_section_end', array( $this, 'register_controls' ) ); // Migrate ekit_sticky_on option add_action('init', function() { if(get_transient('ekit_sticky_on_option_migrate') || !version_compare(\ElementsKit::version(), '3.4.1', '>')) { return; }; set_transient('ekit_sticky_on_option_migrate', \ElementsKit::version()); $this->sticky_on_option_migrate_config(); }); } public function register_controls( Controls_Stack $element ) { $element->start_controls_section( 'section_scroll_effect', [ 'label' => esc_html__( 'ElementsKit Sticky', 'elementskit' ), 'tab' => Controls_Manager::TAB_ADVANCED, ] ); $element->add_control( 'ekit_sticky', [ 'label' => esc_html__( 'Sticky', 'elementskit' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => esc_html__( 'None', 'elementskit' ), 'top' => esc_html__( 'Top', 'elementskit' ), 'bottom' => esc_html__( 'Bottom', 'elementskit' ), 'column' => esc_html__( 'Column', 'elementskit' ), 'show_on_scroll_up' => esc_html__( 'Show on Scroll Up', 'elementskit' ), ], 'prefix_class' => 'ekit-sticky--', 'render_type' => 'none', 'frontend_available' => true, ] ); $element->add_control( 'ekit_sticky_until', [ 'label' => esc_html__( 'Sticky Until', 'elementskit' ), 'description' => esc_html__( 'Section id without starting hash, example "section1".', 'elementskit'), 'type' => Controls_Manager::TEXT, 'default' => '', 'condition' => [ 'ekit_sticky!' => ['', 'column'], ], 'render_type' => 'none', 'frontend_available' => true, ] ); $element->add_responsive_control( 'ekit_sticky_offset', [ 'label' => esc_html__( 'Sticky Offset', 'elementskit' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'unit' => 'px', 'size' => 0, ], 'required' => true, 'condition' => [ 'ekit_sticky!' => '', ], 'render_type' => 'template', 'frontend_available' => true, ] ); $element->add_control( 'ekit_sticky_color', [ 'label' => esc_html__( 'Sticky Background Color', 'elementskit' ), 'type' => Controls_Manager::COLOR, 'condition' => [ 'ekit_sticky!' => ['', 'column'], ], 'selectors' => [ '{{WRAPPER}}.ekit-sticky--effects' => 'background-color: {{VALUE}}', ], ] ); $this->sticky_on_devices_controls($element); $element->add_responsive_control( 'ekit_sticky_effect_offset', [ 'label' => esc_html__( 'Add "ekit-sticky--effects" Class Offset', 'elementskit' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'unit' => 'px', 'size' => 0, ], 'required' => true, 'condition' => [ 'ekit_sticky!' => '', ], 'render_type' => 'template', 'frontend_available' => true, ] ); $element->end_controls_section(); } protected function sticky_on_devices_controls($element) { // The 'Hide On X' controls are displayed from largest to smallest, while the method returns smallest to largest. $active_devices = Plugin::$instance->breakpoints->get_active_devices_list( [ 'reverse' => true ] ); $active_breakpoints = Plugin::$instance->breakpoints->get_active_breakpoints(); foreach ( $active_devices as $breakpoint_key ) { $label = 'desktop' === $breakpoint_key ? esc_html__( 'Desktop', 'elementskit' ) : $active_breakpoints[ $breakpoint_key ]->get_label(); $element->add_control( 'ekit_sticky_on_' . $breakpoint_key, [ /* translators: %s: Device name. */ 'label' => sprintf( __( 'Sticky On %s', 'elementskit' ), $label ), 'type' => Controls_Manager::SWITCHER, 'default' => $breakpoint_key, 'label_on' => esc_html__( 'On', 'elementskit' ), 'label_off' => esc_html__( 'Off', 'elementskit' ), 'return_value' => $breakpoint_key, 'condition' => [ 'ekit_sticky!' => '', ], 'frontend_available' => true, ] ); } } /** * Migrate ekit_sticky_on option * * Migrate the ekit_sticky_on select option to switch control * * @todo will be removed * @since 3.3.0 */ public function sticky_on_option_migrate_config() { global $wpdb; $post_ids = $wpdb->get_col( 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"ekit_sticky_on"%\';' ); if (empty($post_ids)) { return; }; foreach ($post_ids as $post_id) { $do_update = false; $document = \Elementor\Plugin::$instance->documents->get($post_id); if ($document) { $data = $document->get_elements_data(); } if (empty($data)) { continue; } $data = \Elementor\Plugin::$instance->db->iterate_data($data, function ($element) use (&$do_update) { if (empty($element['settings']['ekit_sticky_on'])) { return $element; } if (!empty($element['settings']['ekit_sticky_on'])) { $devices = explode('_', $element['settings']['ekit_sticky_on']); $active_devices = Plugin::$instance->breakpoints->get_active_devices_list( [ 'reverse' => true ] ); foreach ($active_devices as $breakpoint_key) { $element['settings']['ekit_sticky_on_' . $breakpoint_key] = in_array($breakpoint_key, $devices) ? $breakpoint_key : ''; $do_update = true; } $element['settings']['ekit_sticky_on_widescreen'] = 'widescreen'; } // cleanup old unused settings. if (!empty($element['settings']['ekit_sticky_on'])) { unset($element['settings']['ekit_sticky_on']); } return $element; }); // Only update if needed. if (!$do_update) { continue; } // We need the `wp_slash` in order to avoid the unslashing during the `update_post_meta` $json_value = wp_slash(wp_json_encode($data)); update_metadata('post', $post_id, '_elementor_data', $json_value); // Clear WP cache for next step. wp_cache_flush(); } // End foreach(). } }
[+]
..
[-] init.php
[edit]
[+]
assets
[-] extend-controls.php
[edit]