From c171380100aee71e24ec5553f553d91e97031d07 Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Fri, 20 Sep 2024 19:43:04 +0530 Subject: [PATCH 1/9] register:reading progress bar --- inc/class-hfe-settings-page.php | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/inc/class-hfe-settings-page.php b/inc/class-hfe-settings-page.php index 589743a9..e8be280d 100644 --- a/inc/class-hfe-settings-page.php +++ b/inc/class-hfe-settings-page.php @@ -32,6 +32,8 @@ public function __construct() { add_filter( 'admin_footer_text', [ $this, 'admin_footer_text' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_scripts' ] ); add_filter( 'plugin_action_links_' . HFE_PATH, [ $this, 'settings_link' ] ); + add_action( 'elementor/element/after_section_end', [ $this, 'register_reading_progress_bar' ], 10, 3 ); + } /** @@ -850,6 +852,43 @@ public function settings_link( $links ) { return array_merge( $custom, (array) $links ); } + + /** + * Registers the Reading Progress Bar setting. + * + * This function adds the Reading Progress Bar setting to the settings page. + * + * @since x.x.x + * + * @param \Elementor\Element_Base $element The element instance. + * @param string $section_id The section ID. + * @param array $args The arguments. + */ + public function register_reading_progress_bar( $element, $section_id, $args ) { + if ( 'section_page_style' === $section_id || 'container_page_style' === $section_id ) { + $element->start_controls_section( + 'section_reading_progress_bar', + [ + 'label' => __( 'Reading Progress Bar', 'header-footer-elementor' ), + 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, + ] + ); + + $element->add_control( + 'enable_reading_progress_bar', + [ + 'label' => __( 'Enable Reading Progress Bar', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'label_on' => __( 'Yes', 'header-footer-elementor' ), + 'label_off' => __( 'No', 'header-footer-elementor' ), + 'return_value' => 'yes', + 'default' => 'no', + ] + ); + + $element->end_controls_section(); + } + } } new HFE_Settings_Page(); From 1badb71bc4de7b09e0dca9f608ae8f9664e2b16e Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Sat, 21 Sep 2024 00:00:32 +0530 Subject: [PATCH 2/9] added controls --- inc/class-hfe-settings-page.php | 109 +++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/inc/class-hfe-settings-page.php b/inc/class-hfe-settings-page.php index e8be280d..ebdffdf4 100644 --- a/inc/class-hfe-settings-page.php +++ b/inc/class-hfe-settings-page.php @@ -873,7 +873,7 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, ] ); - + $element->add_control( 'enable_reading_progress_bar', [ @@ -885,7 +885,112 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { 'default' => 'no', ] ); - + + $element->add_control( + 'hfe_reading_progress_bar_position', + [ + 'label' => __( 'Position', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'default' => 'top', + 'label_block' => false, + 'options' => [ + 'top' => __( 'Top', 'header-footer-elementor' ), + 'bottom' => __( 'Bottom', 'header-footer-elementor' ), + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_height', + [ + 'label' => __( 'Height', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SLIDER, + 'size_units' => [ 'px' ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 100, + 'step' => 1, + ], + ], + 'default' => [ + 'unit' => 'px', + 'size' => 5, + ], + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress' => 'height: {{SIZE}}{{UNIT}} !important', + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'height: {{SIZE}}{{UNIT}} !important', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_bg_color', + [ + 'label' => __( 'Background Color', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress' => 'background-color: {{VALUE}}', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_fill_color', + [ + 'label' => __( 'Fill Color', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::COLOR, + 'default' => '#1fd18e', + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'background-color: {{VALUE}}', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_animation_speed', + [ + 'label' => __( 'Animation Speed', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SLIDER, + 'size_units' => [ 'px' ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 1000, + 'step' => 1, + ], + ], + 'default' => [ + 'unit' => 'px', + 'size' => 50, + ], + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'transition: width {{SIZE}}ms ease;', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + $element->end_controls_section(); } } From 1c070cd26c77d8b2cf1868c456c42362c42d6ae9 Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:52:00 +0530 Subject: [PATCH 3/9] added controls --- inc/class-hfe-settings-page.php | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/inc/class-hfe-settings-page.php b/inc/class-hfe-settings-page.php index ebdffdf4..ea4bab24 100644 --- a/inc/class-hfe-settings-page.php +++ b/inc/class-hfe-settings-page.php @@ -886,6 +886,42 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { ] ); + $element->add_control( + 'hfe_reading_progress_global', + [ + 'label' => __( 'Enable Global Display ', 'header-footer-elementor' ), + 'description' => __( 'Enabling this option will affect the entire site.', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'default' => 'no', + 'label_on' => __( 'Yes', 'header-footer-elementor' ), + 'label_off' => __( 'No', 'header-footer-elementor' ), + 'return_value' => 'yes', + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_global_display_condition', + [ + 'label' => __( 'Display On', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'default' => 'all', + 'options' => [ + 'posts' => __( 'All Posts', 'header-footer-elementor' ), + 'pages' => __( 'All Pages', 'header-footer-elementor' ), + 'all' => __( 'All Posts & Pages', 'header-footer-elementor' ), + ], + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + 'hfe_reading_progress_global' => 'yes', + ], + 'separator' => 'before', + ] + ); + $element->add_control( 'hfe_reading_progress_bar_position', [ @@ -896,6 +932,8 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { 'options' => [ 'top' => __( 'Top', 'header-footer-elementor' ), 'bottom' => __( 'Bottom', 'header-footer-elementor' ), + 'right' => __( 'Right', 'header-footer-elementor' ), + 'left' => __( 'Left', 'header-footer-elementor' ), ], 'separator' => 'before', 'condition' => [ @@ -991,6 +1029,25 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { ] ); + $element->add_control( + 'hfe_reading_progress_bar_disable_on', + [ + 'label' => __( 'Responsive', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'multiple' => true, + 'options' => [ + 'desktop' => __( 'Desktop', 'header-footer-elementor' ), + 'tablet' => __( 'Tablet', 'header-footer-elementor' ), + 'mobile' => __( 'Mobile', 'header-footer-elementor' ), + ], + 'default' => [ 'desktop' ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + $element->end_controls_section(); } } From acad1c7af1ae1c10b7e53836d39f8965ce719422 Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:31:30 +0530 Subject: [PATCH 4/9] updated label --- inc/class-hfe-settings-page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/class-hfe-settings-page.php b/inc/class-hfe-settings-page.php index ea4bab24..114910ef 100644 --- a/inc/class-hfe-settings-page.php +++ b/inc/class-hfe-settings-page.php @@ -1032,7 +1032,7 @@ public function register_reading_progress_bar( $element, $section_id, $args ) { $element->add_control( 'hfe_reading_progress_bar_disable_on', [ - 'label' => __( 'Responsive', 'header-footer-elementor' ), + 'label' => __( 'Disable On ', 'header-footer-elementor' ), 'type' => \Elementor\Controls_Manager::SELECT, 'multiple' => true, 'options' => [ From f1bcc50f3cc22afc319cc44c0ac16a546a6cc1e3 Mon Sep 17 00:00:00 2001 From: Sushma Kure Date: Sat, 5 Oct 2024 23:01:59 +0530 Subject: [PATCH 5/9] Updated file structure for extensions --- inc/class-header-footer-elementor.php | 1 + inc/class-hfe-settings-page.php | 199 -------------- .../class-extensions-loader.php | 96 +++++++ inc/widgets-manager/class-widgets-loader.php | 2 + .../extensions/class-progress-bar.php | 257 ++++++++++++++++++ 5 files changed, 356 insertions(+), 199 deletions(-) create mode 100644 inc/widgets-manager/class-extensions-loader.php create mode 100644 inc/widgets-manager/extensions/class-progress-bar.php diff --git a/inc/class-header-footer-elementor.php b/inc/class-header-footer-elementor.php index 04f836d1..664cdc5e 100644 --- a/inc/class-header-footer-elementor.php +++ b/inc/class-header-footer-elementor.php @@ -372,6 +372,7 @@ public function includes() { // Load the widgets. require HFE_DIR . 'inc/widgets-manager/class-widgets-loader.php'; + require HFE_DIR . 'inc/widgets-manager/class-extensions-loader.php'; } /** diff --git a/inc/class-hfe-settings-page.php b/inc/class-hfe-settings-page.php index 114910ef..c40520a9 100644 --- a/inc/class-hfe-settings-page.php +++ b/inc/class-hfe-settings-page.php @@ -32,7 +32,6 @@ public function __construct() { add_filter( 'admin_footer_text', [ $this, 'admin_footer_text' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_scripts' ] ); add_filter( 'plugin_action_links_' . HFE_PATH, [ $this, 'settings_link' ] ); - add_action( 'elementor/element/after_section_end', [ $this, 'register_reading_progress_bar' ], 10, 3 ); } @@ -853,204 +852,6 @@ public function settings_link( $links ) { return array_merge( $custom, (array) $links ); } - /** - * Registers the Reading Progress Bar setting. - * - * This function adds the Reading Progress Bar setting to the settings page. - * - * @since x.x.x - * - * @param \Elementor\Element_Base $element The element instance. - * @param string $section_id The section ID. - * @param array $args The arguments. - */ - public function register_reading_progress_bar( $element, $section_id, $args ) { - if ( 'section_page_style' === $section_id || 'container_page_style' === $section_id ) { - $element->start_controls_section( - 'section_reading_progress_bar', - [ - 'label' => __( 'Reading Progress Bar', 'header-footer-elementor' ), - 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, - ] - ); - - $element->add_control( - 'enable_reading_progress_bar', - [ - 'label' => __( 'Enable Reading Progress Bar', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SWITCHER, - 'label_on' => __( 'Yes', 'header-footer-elementor' ), - 'label_off' => __( 'No', 'header-footer-elementor' ), - 'return_value' => 'yes', - 'default' => 'no', - ] - ); - - $element->add_control( - 'hfe_reading_progress_global', - [ - 'label' => __( 'Enable Global Display ', 'header-footer-elementor' ), - 'description' => __( 'Enabling this option will affect the entire site.', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SWITCHER, - 'default' => 'no', - 'label_on' => __( 'Yes', 'header-footer-elementor' ), - 'label_off' => __( 'No', 'header-footer-elementor' ), - 'return_value' => 'yes', - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_global_display_condition', - [ - 'label' => __( 'Display On', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SELECT, - 'default' => 'all', - 'options' => [ - 'posts' => __( 'All Posts', 'header-footer-elementor' ), - 'pages' => __( 'All Pages', 'header-footer-elementor' ), - 'all' => __( 'All Posts & Pages', 'header-footer-elementor' ), - ], - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - 'hfe_reading_progress_global' => 'yes', - ], - 'separator' => 'before', - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_position', - [ - 'label' => __( 'Position', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SELECT, - 'default' => 'top', - 'label_block' => false, - 'options' => [ - 'top' => __( 'Top', 'header-footer-elementor' ), - 'bottom' => __( 'Bottom', 'header-footer-elementor' ), - 'right' => __( 'Right', 'header-footer-elementor' ), - 'left' => __( 'Left', 'header-footer-elementor' ), - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_height', - [ - 'label' => __( 'Height', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SLIDER, - 'size_units' => [ 'px' ], - 'range' => [ - 'px' => [ - 'min' => 0, - 'max' => 100, - 'step' => 1, - ], - ], - 'default' => [ - 'unit' => 'px', - 'size' => 5, - ], - 'selectors' => [ - '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress' => 'height: {{SIZE}}{{UNIT}} !important', - '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'height: {{SIZE}}{{UNIT}} !important', - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_bg_color', - [ - 'label' => __( 'Background Color', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::COLOR, - 'default' => '', - 'selectors' => [ - '{{WRAPPER}} .hfe-reading-progress' => 'background-color: {{VALUE}}', - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_fill_color', - [ - 'label' => __( 'Fill Color', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::COLOR, - 'default' => '#1fd18e', - 'selectors' => [ - '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'background-color: {{VALUE}}', - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_animation_speed', - [ - 'label' => __( 'Animation Speed', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SLIDER, - 'size_units' => [ 'px' ], - 'range' => [ - 'px' => [ - 'min' => 0, - 'max' => 1000, - 'step' => 1, - ], - ], - 'default' => [ - 'unit' => 'px', - 'size' => 50, - ], - 'selectors' => [ - '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'transition: width {{SIZE}}ms ease;', - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->add_control( - 'hfe_reading_progress_bar_disable_on', - [ - 'label' => __( 'Disable On ', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SELECT, - 'multiple' => true, - 'options' => [ - 'desktop' => __( 'Desktop', 'header-footer-elementor' ), - 'tablet' => __( 'Tablet', 'header-footer-elementor' ), - 'mobile' => __( 'Mobile', 'header-footer-elementor' ), - ], - 'default' => [ 'desktop' ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - - $element->end_controls_section(); - } - } } new HFE_Settings_Page(); diff --git a/inc/widgets-manager/class-extensions-loader.php b/inc/widgets-manager/class-extensions-loader.php new file mode 100644 index 00000000..e66c908b --- /dev/null +++ b/inc/widgets-manager/class-extensions-loader.php @@ -0,0 +1,96 @@ +include_extensions_files(); + + } + + + /** + * Returns Script array. + * + * @return array() + * @since 1.3.0 + */ + public static function get_extensions_list() { + $extensions_list = [ + 'progress-bar', + ]; + + return $extensions_list; + } + + /** + * Include Extensions files + * + * Load Extensions files + * + * @since 1.2.0 + * @access public + * @return void + */ + public function include_extensions_files() { + $extensions_list = $this->get_extensions_list(); + + if ( ! empty( $extensions_list ) ) { + foreach ( $extensions_list as $handle => $data ) { + require_once HFE_DIR . '/inc/widgets-manager/extensions/class-' . $data . '.php'; + } + } + } + +} + +/** + * Initiate the class. + */ +Extensions_Loader::instance(); \ No newline at end of file diff --git a/inc/widgets-manager/class-widgets-loader.php b/inc/widgets-manager/class-widgets-loader.php index 750e17ef..6819f892 100644 --- a/inc/widgets-manager/class-widgets-loader.php +++ b/inc/widgets-manager/class-widgets-loader.php @@ -51,6 +51,7 @@ public static function instance() { * @access private */ private function __construct() { + // Register category. add_action( 'elementor/elements/categories_registered', [ $this, 'register_widget_category' ] ); @@ -71,6 +72,7 @@ private function __construct() { add_filter( 'woocommerce_add_to_cart_fragments', [ $this, 'wc_refresh_mini_cart_count' ] ); } + } /** diff --git a/inc/widgets-manager/extensions/class-progress-bar.php b/inc/widgets-manager/extensions/class-progress-bar.php new file mode 100644 index 00000000..32d72326 --- /dev/null +++ b/inc/widgets-manager/extensions/class-progress-bar.php @@ -0,0 +1,257 @@ +start_controls_section( + 'section_reading_progress_bar', + [ + 'label' => __( 'Reading Progress Bar', 'header-footer-elementor' ), + 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, + ] + ); + + $element->add_control( + 'enable_reading_progress_bar', + [ + 'label' => __( 'Enable Reading Progress Bar', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'label_on' => __( 'Yes', 'header-footer-elementor' ), + 'label_off' => __( 'No', 'header-footer-elementor' ), + 'return_value' => 'yes', + 'default' => 'no', + ] + ); + + $element->add_control( + 'hfe_reading_progress_global', + [ + 'label' => __( 'Enable Global Display ', 'header-footer-elementor' ), + 'description' => __( 'Enabling this option will affect the entire site.', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'default' => 'no', + 'label_on' => __( 'Yes', 'header-footer-elementor' ), + 'label_off' => __( 'No', 'header-footer-elementor' ), + 'return_value' => 'yes', + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_global_display_condition', + [ + 'label' => __( 'Display On', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'default' => 'all', + 'options' => [ + 'posts' => __( 'All Posts', 'header-footer-elementor' ), + 'pages' => __( 'All Pages', 'header-footer-elementor' ), + 'all' => __( 'All Posts & Pages', 'header-footer-elementor' ), + ], + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + 'hfe_reading_progress_global' => 'yes', + ], + 'separator' => 'before', + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_position', + [ + 'label' => __( 'Position', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'default' => 'top', + 'label_block' => false, + 'options' => [ + 'top' => __( 'Top', 'header-footer-elementor' ), + 'bottom' => __( 'Bottom', 'header-footer-elementor' ), + 'right' => __( 'Right', 'header-footer-elementor' ), + 'left' => __( 'Left', 'header-footer-elementor' ), + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_height', + [ + 'label' => __( 'Height', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SLIDER, + 'size_units' => [ 'px' ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 100, + 'step' => 1, + ], + ], + 'default' => [ + 'unit' => 'px', + 'size' => 5, + ], + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress' => 'height: {{SIZE}}{{UNIT}} !important', + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'height: {{SIZE}}{{UNIT}} !important', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_bg_color', + [ + 'label' => __( 'Background Color', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::COLOR, + 'default' => '', + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress' => 'background-color: {{VALUE}}', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_fill_color', + [ + 'label' => __( 'Fill Color', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::COLOR, + 'default' => '#1fd18e', + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'background-color: {{VALUE}}', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_animation_speed', + [ + 'label' => __( 'Animation Speed', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SLIDER, + 'size_units' => [ 'px' ], + 'range' => [ + 'px' => [ + 'min' => 0, + 'max' => 1000, + 'step' => 1, + ], + ], + 'default' => [ + 'unit' => 'px', + 'size' => 50, + ], + 'selectors' => [ + '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'transition: width {{SIZE}}ms ease;', + ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->add_control( + 'hfe_reading_progress_bar_disable_on', + [ + 'label' => __( 'Disable On ', 'header-footer-elementor' ), + 'type' => \Elementor\Controls_Manager::SELECT, + 'multiple' => true, + 'options' => [ + 'desktop' => __( 'Desktop', 'header-footer-elementor' ), + 'tablet' => __( 'Tablet', 'header-footer-elementor' ), + 'mobile' => __( 'Mobile', 'header-footer-elementor' ), + ], + 'default' => [ 'desktop' ], + 'separator' => 'before', + 'condition' => [ + 'enable_reading_progress_bar' => 'yes', + ], + ] + ); + + $element->end_controls_section(); + } + } + +} + +Progress_Bar::instance(); From dd26cb1483649fdc61dd5995f2f6cacc293aa306 Mon Sep 17 00:00:00 2001 From: Sushma Kure Date: Sat, 5 Oct 2024 23:07:02 +0530 Subject: [PATCH 6/9] Updated function name --- inc/widgets-manager/extensions/class-progress-bar.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/widgets-manager/extensions/class-progress-bar.php b/inc/widgets-manager/extensions/class-progress-bar.php index 32d72326..502af027 100644 --- a/inc/widgets-manager/extensions/class-progress-bar.php +++ b/inc/widgets-manager/extensions/class-progress-bar.php @@ -50,7 +50,7 @@ public static function instance() { */ private function __construct() { - add_action( 'elementor/element/after_section_end', [ $this, 'register_reading_progress_bar' ], 10, 3 ); + add_action( 'elementor/element/after_section_end', [ $this, 'register_extension_controls' ], 10, 3 ); } /** @@ -64,7 +64,7 @@ private function __construct() { * @param string $section_id The section ID. * @param array $args The arguments. */ - public function register_reading_progress_bar( $element, $section_id, $args ) { + public function register_extension_controls( $element, $section_id, $args ) { if ( 'section_page_style' === $section_id || 'container_page_style' === $section_id ) { $element->start_controls_section( 'section_reading_progress_bar', From cf1cfb27d3e01875df443e8dc783134b50456452 Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:40:46 +0530 Subject: [PATCH 7/9] updated code changes option in controllers --- .../extensions/class-progress-bar.php | 31 +------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/inc/widgets-manager/extensions/class-progress-bar.php b/inc/widgets-manager/extensions/class-progress-bar.php index 502af027..c8278fa7 100644 --- a/inc/widgets-manager/extensions/class-progress-bar.php +++ b/inc/widgets-manager/extensions/class-progress-bar.php @@ -132,8 +132,6 @@ public function register_extension_controls( $element, $section_id, $args ) { 'options' => [ 'top' => __( 'Top', 'header-footer-elementor' ), 'bottom' => __( 'Bottom', 'header-footer-elementor' ), - 'right' => __( 'Right', 'header-footer-elementor' ), - 'left' => __( 'Left', 'header-footer-elementor' ), ], 'separator' => 'before', 'condition' => [ @@ -151,7 +149,7 @@ public function register_extension_controls( $element, $section_id, $args ) { 'range' => [ 'px' => [ 'min' => 0, - 'max' => 100, + 'max' => 50, 'step' => 1, ], ], @@ -202,33 +200,6 @@ public function register_extension_controls( $element, $section_id, $args ) { ] ); - $element->add_control( - 'hfe_reading_progress_bar_animation_speed', - [ - 'label' => __( 'Animation Speed', 'header-footer-elementor' ), - 'type' => \Elementor\Controls_Manager::SLIDER, - 'size_units' => [ 'px' ], - 'range' => [ - 'px' => [ - 'min' => 0, - 'max' => 1000, - 'step' => 1, - ], - ], - 'default' => [ - 'unit' => 'px', - 'size' => 50, - ], - 'selectors' => [ - '{{WRAPPER}} .hfe-reading-progress-wrap .hfe-reading-progress .hfe-reading-progress-fill' => 'transition: width {{SIZE}}ms ease;', - ], - 'separator' => 'before', - 'condition' => [ - 'enable_reading_progress_bar' => 'yes', - ], - ] - ); - $element->add_control( 'hfe_reading_progress_bar_disable_on', [ From ea68f668bed044071e4edb244ca39ef03839c659 Mon Sep 17 00:00:00 2001 From: Vijeta Raikar <110518282+vijetaR@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:46:09 +0530 Subject: [PATCH 8/9] updated code changes in file --- .../extensions/class-progress-bar.php | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/inc/widgets-manager/extensions/class-progress-bar.php b/inc/widgets-manager/extensions/class-progress-bar.php index c8278fa7..99cf88c0 100644 --- a/inc/widgets-manager/extensions/class-progress-bar.php +++ b/inc/widgets-manager/extensions/class-progress-bar.php @@ -4,6 +4,7 @@ * * @package header-footer-elementor */ + namespace HFE\WidgetsManager\Extensions; use Elementor\Controls_Manager; @@ -19,7 +20,7 @@ */ class Progress_Bar { - /** + /** * Instance of Widgets_Loader. * * @since 1.2.0 @@ -28,7 +29,7 @@ class Progress_Bar { private static $_instance = null; - /** + /** * Get instance of Widgets_Loader * * @since 1.2.0 @@ -50,7 +51,9 @@ public static function instance() { */ private function __construct() { - add_action( 'elementor/element/after_section_end', [ $this, 'register_extension_controls' ], 10, 3 ); + add_action( 'elementor/element/after_section_end', [ $this, 'register_extension_controls' ], 10, 3 ); + add_action( 'wp_footer', [ $this, 'render_progress_bar' ] ); + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_progress_bar_scripts' ] ); } /** @@ -223,6 +226,53 @@ public function register_extension_controls( $element, $section_id, $args ) { } } + /** + * Renders the Progress Bar markup in the frontend. + * + * @since x.x.x + */ + public function render_progress_bar() { + // Fetch the settings from Elementor controls. + $position = get_option( 'hfe_reading_progress_bar_position', 'top' ); + + $animation_speed = get_option( 'hfe_reading_progress_bar_animation_speed', 300 ); + + // Other settings like height, background color, fill color can also be passed via inline styles. + ?> +
+
+
+
+
+ Date: Tue, 8 Oct 2024 16:27:10 +0530 Subject: [PATCH 9/9] pushed changes for files --- inc/js/progress-bar.js | 48 +++++++ inc/widgets-css/progress-bar.css | 30 +++++ .../extensions/class-progress-bar-render.php | 118 ++++++++++++++++++ .../extensions/class-progress-bar.php | 7 +- 4 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 inc/js/progress-bar.js create mode 100644 inc/widgets-css/progress-bar.css create mode 100644 inc/widgets-manager/extensions/class-progress-bar-render.php diff --git a/inc/js/progress-bar.js b/inc/js/progress-bar.js new file mode 100644 index 00000000..b6baca14 --- /dev/null +++ b/inc/js/progress-bar.js @@ -0,0 +1,48 @@ +(function (jQuery) { + jQuery(document).ready(function () { + // Function to calculate the scroll progress + function updateProgressBar() { + var scrollTop = jQuery(window).scrollTop(); // Current scroll position + var windowHeight = jQuery(window).height(); // Height of the window + var documentHeight = jQuery(document).height(); // Total height of the document + + // Calculate the scroll percentage + var scrollPercent = (scrollTop / (documentHeight - windowHeight)) * 100; + + // Log the values for debugging + console.log('Scroll Top:', scrollTop); + console.log('Window Height:', windowHeight); + console.log('Document Height:', documentHeight); + console.log('Scroll Percent:', scrollPercent + '%'); + + // Update the width of the progress bar + jQuery('.hfe-reading-progress-fill').css('width', scrollPercent + '%'); + console.log('Progress bar updated to:', scrollPercent + '%'); + } + + // Initial call + updateProgressBar(); + + // Call the function on scroll + jQuery(window).on('scroll', function () { + console.log('Scroll event detected'); // Log when the user scrolls + updateProgressBar(); + }); + + // Set CSS variables for colors + function setProgressBarColors(bgColor, fillColor) { + jQuery('.hfe-reading-progress').css('--progress-bar-bg-color', bgColor); + jQuery('.hfe-reading-progress-fill').css('--progress-bar-fill-color', fillColor); + console.log('Progress bar colors set: BG Color:', bgColor, 'Fill Color:', fillColor); + } + + // Example: Set colors from user settings (replace these with actual settings) + const userSettings = { + bgColor: '#e0e0e0', // Replace with actual value from settings + fillColor: '#1fd18e' // Replace with actual value from settings + }; + + setProgressBarColors(userSettings.bgColor, userSettings.fillColor); + }); +})(jQuery); + diff --git a/inc/widgets-css/progress-bar.css b/inc/widgets-css/progress-bar.css new file mode 100644 index 00000000..97e1f8eb --- /dev/null +++ b/inc/widgets-css/progress-bar.css @@ -0,0 +1,30 @@ +.hfe-reading-progress-wrap { + position: fixed; + z-index: 9999; + left: 0; + width: 100%; + transition: top 0.3s ease, bottom 0.3s ease; +} + +/* Positioning options: */ +.hfe-reading-progress-wrap[data-position="top"] { + top: 0; +} + +.hfe-reading-progress-wrap[data-position="bottom"] { + bottom: 0; +} + + +.hfe-reading-progress { + background-color: var(--progress-bar-bg-color, #eee); + position: relative; + width: 100%; +} + +.hfe-reading-progress-fill { + background-color: var(--progress-bar-fill-color, #1fd18e); + height: 5px; + transition: width 0.5s ease; +} + diff --git a/inc/widgets-manager/extensions/class-progress-bar-render.php b/inc/widgets-manager/extensions/class-progress-bar-render.php new file mode 100644 index 00000000..d31ea5ba --- /dev/null +++ b/inc/widgets-manager/extensions/class-progress-bar-render.php @@ -0,0 +1,118 @@ + +
+
+
+
+
+ + + -
+