Changeset 3707164
- Timestamp:
- 09/22/2026 11:21:03 AM (5 weeks ago)
- Location:
- softech-addons-for-elementor
- Files:
-
- 228 added
- 9 edited
-
tags/1.3.3 (added)
-
tags/1.3.3/assets (added)
-
tags/1.3.3/assets/css (added)
-
tags/1.3.3/assets/css/admin.css (added)
-
tags/1.3.3/assets/css/blob-shapes.css (added)
-
tags/1.3.3/assets/css/cta-widget.css (added)
-
tags/1.3.3/assets/css/editor.css (added)
-
tags/1.3.3/assets/css/flip-card.css (added)
-
tags/1.3.3/assets/css/frontend.css (added)
-
tags/1.3.3/assets/css/hf-admin.css (added)
-
tags/1.3.3/assets/css/hf-editor.css (added)
-
tags/1.3.3/assets/css/hf-frontend.css (added)
-
tags/1.3.3/assets/css/locked-widget-editor.css (added)
-
tags/1.3.3/assets/css/mega-menu-frontend.css (added)
-
tags/1.3.3/assets/css/mega-menu.css (added)
-
tags/1.3.3/assets/css/shortcodes.css (added)
-
tags/1.3.3/assets/css/sitsel-author-box.css (added)
-
tags/1.3.3/assets/css/sitsel-before-after-slider.css (added)
-
tags/1.3.3/assets/css/sitsel-brand.css (added)
-
tags/1.3.3/assets/css/sitsel-comman.css (added)
-
tags/1.3.3/assets/css/sitsel-feedback.css (added)
-
tags/1.3.3/assets/css/sitsel-filterable-gallery.css (added)
-
tags/1.3.3/assets/css/sitsel-hero-slider.css (added)
-
tags/1.3.3/assets/css/sitsel-marquee.css (added)
-
tags/1.3.3/assets/css/sitsel-post-content.css (added)
-
tags/1.3.3/assets/css/sitsel-post-meta.css (added)
-
tags/1.3.3/assets/css/sitsel-post-navigation.css (added)
-
tags/1.3.3/assets/css/sitsel-post-thumbnail.css (added)
-
tags/1.3.3/assets/css/sitsel-post-title.css (added)
-
tags/1.3.3/assets/css/sitsel-search-widget.css (added)
-
tags/1.3.3/assets/css/sitsel-tabs.css (added)
-
tags/1.3.3/assets/css/sitsel-timeline.css (added)
-
tags/1.3.3/assets/css/sitsel-toc.css (added)
-
tags/1.3.3/assets/css/sticky.css (added)
-
tags/1.3.3/assets/css/stripe-checkout.css (added)
-
tags/1.3.3/assets/css/swiper-bundle.min.css (added)
-
tags/1.3.3/assets/css/template-library.css (added)
-
tags/1.3.3/assets/css/templates-kit-popup.css (added)
-
tags/1.3.3/assets/images (added)
-
tags/1.3.3/assets/images/logo-40x40.png (added)
-
tags/1.3.3/assets/images/placeholder-image.webp (added)
-
tags/1.3.3/assets/js (added)
-
tags/1.3.3/assets/js/ScrollTrigger.min.js (added)
-
tags/1.3.3/assets/js/admin.js (added)
-
tags/1.3.3/assets/js/gsap-handler.js (added)
-
tags/1.3.3/assets/js/gsap-stack-handler.js (added)
-
tags/1.3.3/assets/js/gsap.min.js (added)
-
tags/1.3.3/assets/js/hf-admin.js (added)
-
tags/1.3.3/assets/js/hf-editor.js (added)
-
tags/1.3.3/assets/js/hf-elementor-panel.js (added)
-
tags/1.3.3/assets/js/locked-widget.js (added)
-
tags/1.3.3/assets/js/mega-menu-frontend.js (added)
-
tags/1.3.3/assets/js/mega-menu.js (added)
-
tags/1.3.3/assets/js/sitsel-author-box.js (added)
-
tags/1.3.3/assets/js/sitsel-before-after-slider-editor.js (added)
-
tags/1.3.3/assets/js/sitsel-before-after-slider.js (added)
-
tags/1.3.3/assets/js/sitsel-elementor-editor.js (added)
-
tags/1.3.3/assets/js/sitsel-feedback.js (added)
-
tags/1.3.3/assets/js/sitsel-filterable-gallery-editor.js (added)
-
tags/1.3.3/assets/js/sitsel-filterable-gallery.js (added)
-
tags/1.3.3/assets/js/sitsel-hero-slider.js (added)
-
tags/1.3.3/assets/js/sitsel-loop-grid-slider-editor.js (added)
-
tags/1.3.3/assets/js/sitsel-marquee.js (added)
-
tags/1.3.3/assets/js/sitsel-post-content.js (added)
-
tags/1.3.3/assets/js/sitsel-post-meta.js (added)
-
tags/1.3.3/assets/js/sitsel-post-slider.js (added)
-
tags/1.3.3/assets/js/sitsel-post-thumbnail.js (added)
-
tags/1.3.3/assets/js/sitsel-post-title.js (added)
-
tags/1.3.3/assets/js/sitsel-search-widget.js (added)
-
tags/1.3.3/assets/js/sitsel-tabs.js (added)
-
tags/1.3.3/assets/js/sitsel-testimonial-editor.js (added)
-
tags/1.3.3/assets/js/sitsel-testimonial.js (added)
-
tags/1.3.3/assets/js/sitsel-timeline.js (added)
-
tags/1.3.3/assets/js/sitsel-toc.js (added)
-
tags/1.3.3/assets/js/sticky.js (added)
-
tags/1.3.3/assets/js/stripe-checkout.js (added)
-
tags/1.3.3/assets/js/swiper-bundle.min.js (added)
-
tags/1.3.3/assets/js/template-library.js (added)
-
tags/1.3.3/assets/js/templates-kit-editor.js (added)
-
tags/1.3.3/assets/screenshots (added)
-
tags/1.3.3/assets/screenshots/admin.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-1.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-10.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-11.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-2.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-3.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-4.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-5.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-6.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-7.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-8.png (added)
-
tags/1.3.3/assets/screenshots/screenshot-9.png (added)
-
tags/1.3.3/feature-locked-widgets (added)
-
tags/1.3.3/feature-locked-widgets/sitsel-loop-grid-slider.php (added)
-
tags/1.3.3/includes (added)
-
tags/1.3.3/includes/Base_Locked_Widget.php (added)
-
tags/1.3.3/includes/admin-settings.php (added)
-
tags/1.3.3/includes/class-cache-manager.php (added)
-
tags/1.3.3/includes/class-gsap-manager.php (added)
-
tags/1.3.3/includes/class-header-footer-builder.php (added)
-
tags/1.3.3/includes/class-hf-elementor-document.php (added)
-
tags/1.3.3/includes/class-payment-settings.php (added)
-
tags/1.3.3/includes/class-post-query-manager.php (added)
-
tags/1.3.3/includes/class-review-notice.php (added)
-
tags/1.3.3/includes/class-shortcodes.php (added)
-
tags/1.3.3/includes/class-single-post-widget-base.php (added)
-
tags/1.3.3/includes/class-sits-cli.php (added)
-
tags/1.3.3/includes/class-sitsel-feedback.php (added)
-
tags/1.3.3/includes/class-sitsel-search-handler.php (added)
-
tags/1.3.3/includes/dynamic-tags (added)
-
tags/1.3.3/includes/dynamic-tags/groups (added)
-
tags/1.3.3/includes/dynamic-tags/groups/class-softech-image-group.php (added)
-
tags/1.3.3/includes/dynamic-tags/groups/class-softech-post-group.php (added)
-
tags/1.3.3/includes/dynamic-tags/groups/class-softech-site-group.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags (added)
-
tags/1.3.3/includes/dynamic-tags/tags/image-tags (added)
-
tags/1.3.3/includes/dynamic-tags/tags/image-tags/class-softech-custom-image-field.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/image-tags/class-softech-feature-image.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/image-tags/class-softech-site-logo.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-acf-field-group.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-acf-post-object-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-custom-field-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-partner-term-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-author.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-content.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-custom-field.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-date.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-excerpt.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-id.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-term-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-terms.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-time.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-title.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-post-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/post-tags/class-softech-product-partner-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags/class-softech-current-date-time.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags/class-softech-page-title.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags/class-softech-site-title.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags/class-softech-site-url.php (added)
-
tags/1.3.3/includes/dynamic-tags/tags/site-tags/class-softech-user-info.php (added)
-
tags/1.3.3/includes/helper-functions.php (added)
-
tags/1.3.3/includes/mega-menu.php (added)
-
tags/1.3.3/includes/sticky-controls.php (added)
-
tags/1.3.3/includes/stripe-handler.php (added)
-
tags/1.3.3/includes/template-library (added)
-
tags/1.3.3/includes/template-library/class-template-library.php (added)
-
tags/1.3.3/includes/template-library/templates (added)
-
tags/1.3.3/includes/template-library/templates/404_page (added)
-
tags/1.3.3/includes/template-library/templates/404_page/404-illustrated-friendly.json (added)
-
tags/1.3.3/includes/template-library/templates/404_page/404-illustrated-friendly.png (added)
-
tags/1.3.3/includes/template-library/templates/404_page/404-minimal-teal.json (added)
-
tags/1.3.3/includes/template-library/templates/404_page/404-minimal-teal.png (added)
-
tags/1.3.3/includes/template-library/templates/footer (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-blue-professional.json (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-blue-professional.png (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-purple-creative.json (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-purple-creative.png (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-teal-corporate.json (added)
-
tags/1.3.3/includes/template-library/templates/footer/footer-teal-corporate.png (added)
-
tags/1.3.3/includes/template-library/templates/header (added)
-
tags/1.3.3/includes/template-library/templates/header/header-green-modern.json (added)
-
tags/1.3.3/includes/template-library/templates/header/header-green-modern.png (added)
-
tags/1.3.3/includes/template-library/templates/header/header-purple-vibrant.json (added)
-
tags/1.3.3/includes/template-library/templates/header/header-purple-vibrant.png (added)
-
tags/1.3.3/includes/template-library/templates/header/header-red-minimal.json (added)
-
tags/1.3.3/includes/template-library/templates/header/header-red-minimal.png (added)
-
tags/1.3.3/includes/template-library/templates/manifest.json (added)
-
tags/1.3.3/includes/template-library/templates/sections (added)
-
tags/1.3.3/includes/template-library/templates/sections/marquee-image.json (added)
-
tags/1.3.3/includes/template-library/templates/sections/marquee-image.png (added)
-
tags/1.3.3/includes/template-library/templates/sections/marquee-post.json (added)
-
tags/1.3.3/includes/template-library/templates/sections/marquee-post.png (added)
-
tags/1.3.3/includes/template-library/templates/sections/post-template.png (added)
-
tags/1.3.3/includes/template-library/templates/sections/post-timeline-carousel.json (added)
-
tags/1.3.3/includes/template-library/templates/sections/post-timeline-carousel.png (added)
-
tags/1.3.3/includes/template-library/templates/sections/post-timeline.json (added)
-
tags/1.3.3/includes/template-library/templates/sections/timeline-left.json (added)
-
tags/1.3.3/includes/template-library/templates/sections/timeline-left.png (added)
-
tags/1.3.3/includes/templates-kit (added)
-
tags/1.3.3/includes/templates-kit/class-templates-kit-editor.php (added)
-
tags/1.3.3/includes/utilities.php (added)
-
tags/1.3.3/languages (added)
-
tags/1.3.3/languages/softech-addons-for-elementor.pot (added)
-
tags/1.3.3/license.txt (added)
-
tags/1.3.3/locked-widgets (added)
-
tags/1.3.3/locked-widgets/sitsel-pro-call-to-action.php (added)
-
tags/1.3.3/locked-widgets/sitsel-pro-image-shapes.php (added)
-
tags/1.3.3/locked-widgets/sitsel-pro-popup-widget.php (added)
-
tags/1.3.3/locked-widgets/sitsel-pro-post-comments.php (added)
-
tags/1.3.3/locked-widgets/sitsel-pro-progress-bars.php (added)
-
tags/1.3.3/readme.txt (added)
-
tags/1.3.3/softech-addons-for-elementor.php (added)
-
tags/1.3.3/swiper-license.txt (added)
-
tags/1.3.3/templates (added)
-
tags/1.3.3/templates/archive-empty-fallback.php (added)
-
tags/1.3.3/templates/footer.php (added)
-
tags/1.3.3/templates/header.php (added)
-
tags/1.3.3/templates/sits-canvas.php (added)
-
tags/1.3.3/uninstall.php (added)
-
tags/1.3.3/widgets (added)
-
tags/1.3.3/widgets/sitsel-author-box.php (added)
-
tags/1.3.3/widgets/sitsel-before-after-slider.php (added)
-
tags/1.3.3/widgets/sitsel-blob-shapes.php (added)
-
tags/1.3.3/widgets/sitsel-dual-color-heading.php (added)
-
tags/1.3.3/widgets/sitsel-filterable-gallery.php (added)
-
tags/1.3.3/widgets/sitsel-flip-card.php (added)
-
tags/1.3.3/widgets/sitsel-hero-slider.php (added)
-
tags/1.3.3/widgets/sitsel-image-accordion.php (added)
-
tags/1.3.3/widgets/sitsel-marquee.php (added)
-
tags/1.3.3/widgets/sitsel-mega-menu-widget.php (added)
-
tags/1.3.3/widgets/sitsel-number-box.php (added)
-
tags/1.3.3/widgets/sitsel-pdf-viewer.php (added)
-
tags/1.3.3/widgets/sitsel-post-content.php (added)
-
tags/1.3.3/widgets/sitsel-post-meta.php (added)
-
tags/1.3.3/widgets/sitsel-post-navigation.php (added)
-
tags/1.3.3/widgets/sitsel-post-thumbnail.php (added)
-
tags/1.3.3/widgets/sitsel-post-timeline.php (added)
-
tags/1.3.3/widgets/sitsel-post-title.php (added)
-
tags/1.3.3/widgets/sitsel-search-widget.php (added)
-
tags/1.3.3/widgets/sitsel-site-logo.php (added)
-
tags/1.3.3/widgets/sitsel-stripe-checkout.php (added)
-
tags/1.3.3/widgets/sitsel-tabs.php (added)
-
tags/1.3.3/widgets/sitsel-testimonial.php (added)
-
tags/1.3.3/widgets/sitsel-toc.php (added)
-
trunk/assets/css/hf-editor.css (modified) (1 diff)
-
trunk/assets/css/mega-menu-frontend.css (modified) (1 diff)
-
trunk/includes/class-header-footer-builder.php (modified) (2 diffs)
-
trunk/includes/class-hf-elementor-document.php (modified) (2 diffs)
-
trunk/languages (added)
-
trunk/languages/softech-addons-for-elementor.pot (added)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/softech-addons-for-elementor.php (modified) (3 diffs)
-
trunk/widgets/sitsel-marquee.php (modified) (3 diffs)
-
trunk/widgets/sitsel-mega-menu-widget.php (modified) (14 diffs)
-
trunk/widgets/sitsel-toc.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
softech-addons-for-elementor/trunk/assets/css/hf-editor.css
r3611551 r3707164 13 13 display: block; 14 14 cursor: pointer; 15 }16 .site-header {17 display: none !important;18 19 15 } 20 16 -
softech-addons-for-elementor/trunk/assets/css/mega-menu-frontend.css
r3644202 r3707164 115 115 background: #fff; 116 116 z-index: 96; 117 margin:0; 117 118 } 118 119 -
softech-addons-for-elementor/trunk/includes/class-header-footer-builder.php
r3629434 r3707164 861 861 862 862 if ( $post_id && ! is_wp_error( $post_id ) ) { 863 update_post_meta( $post_id, '_wp_page_template', 'elementor_canvas' ); 864 update_post_meta( $post_id, '_elementor_template_type', 'sits-hf-template' ); 863 865 wp_safe_redirect( admin_url( 'post.php?post=' . $post_id . '&action=elementor' ) ); 864 866 exit; … … 887 889 wp_send_json_error( [ 'message' => __( 'Could not create template draft.', 'softech-addons-for-elementor' ) ] ); 888 890 } 891 892 update_post_meta( $post_id, '_wp_page_template', 'elementor_canvas' ); 893 update_post_meta( $post_id, '_elementor_template_type', 'sits-hf-template' ); 889 894 890 895 wp_send_json_success( [ -
softech-addons-for-elementor/trunk/includes/class-hf-elementor-document.php
r3578373 r3707164 167 167 return true; 168 168 } 169 protected function register_controls() { 170 parent::register_controls(); 171 172 // Force-register Hide Title if Pro stripped it out 173 if ( ! $this->get_controls( 'hide_title' ) ) { 174 $this->add_control( 175 'hide_title', 176 [ 177 'label' => esc_html__( 'Hide Title', 'softech-addons-for-elementor' ), 178 'type' => \Elementor\Controls_Manager::SWITCHER, 179 'default' => '', 180 'separator' => 'before', 181 ] 182 ); 183 } 184 185 // Force-register Page Layout (template) if Pro stripped it out 186 if ( ! $this->get_controls( 'template' ) ) { 187 $templates = []; 188 foreach ( get_page_templates() as $label => $value ) { 189 $templates[ $value ] = $label; 190 } 191 $templates = array_merge( 192 [ 'default' => esc_html__( 'Default', 'softech-addons-for-elementor' ) ], 193 $templates 194 ); 195 196 $this->add_control( 197 'template', 198 [ 199 'label' => esc_html__( 'Page Layout', 'softech-addons-for-elementor' ), 200 'type' => \Elementor\Controls_Manager::SELECT, 201 'default' => 'elementor_canvas', 202 'options' => $templates, 203 ] 204 ); 205 } 206 } 169 protected function register_controls() { 170 parent::register_controls(); 171 172 $this->start_controls_section( 173 'sits_hf_layout_settings', 174 [ 175 'label' => esc_html__( 'Page Layout', 'softech-addons-for-elementor' ), 176 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, 177 ] 178 ); 179 180 if ( ! $this->get_controls( 'hide_title' ) ) { 181 $this->add_control( 182 'hide_title', 183 [ 184 'label' => esc_html__( 'Hide Title', 'softech-addons-for-elementor' ), 185 'type' => \Elementor\Controls_Manager::SWITCHER, 186 'default' => 'yes', 187 ] 188 ); 189 } 190 191 if ( ! $this->get_controls( 'template' ) ) { 192 $this->add_control( 193 'template', 194 [ 195 'label' => esc_html__( 'Page Layout', 'softech-addons-for-elementor' ), 196 'type' => \Elementor\Controls_Manager::SELECT, 197 'default' => 'elementor_canvas', 198 'options' => [ 199 '' => esc_html__( 'Default', 'softech-addons-for-elementor' ), 200 'elementor_header_footer' => esc_html__( 'Elementor Full Width', 'softech-addons-for-elementor' ), 201 'elementor_canvas' => esc_html__( 'Elementor Canvas', 'softech-addons-for-elementor' ), 202 ], 203 ] 204 ); 205 } 206 207 $this->end_controls_section(); 208 } 207 209 } 208 210 } else { … … 300 302 } 301 303 302 protected function filter_print_content() {304 protected function filter_print_content() { 303 305 $type = $this->get_hf_type(); 304 306 return ! in_array( $type, [ 'header', 'footer' ], true ); 305 307 } 308 309 protected function register_controls() { 310 parent::register_controls(); 311 312 $this->start_controls_section( 313 'sits_hf_layout_settings', 314 [ 315 'label' => esc_html__( 'Page Layout', 'softech-addons-for-elementor' ), 316 'tab' => \Elementor\Controls_Manager::TAB_SETTINGS, 317 ] 318 ); 319 320 if ( ! $this->get_controls( 'hide_title' ) ) { 321 $this->add_control( 322 'hide_title', 323 [ 324 'label' => esc_html__( 'Hide Title', 'softech-addons-for-elementor' ), 325 'type' => \Elementor\Controls_Manager::SWITCHER, 326 'default' => 'yes', 327 ] 328 ); 329 } 330 331 if ( ! $this->get_controls( 'template' ) ) { 332 $this->add_control( 333 'template', 334 [ 335 'label' => esc_html__( 'Page Layout', 'softech-addons-for-elementor' ), 336 'type' => \Elementor\Controls_Manager::SELECT, 337 'default' => 'elementor_canvas', 338 'options' => [ 339 '' => esc_html__( 'Default', 'softech-addons-for-elementor' ), 340 'elementor_header_footer' => esc_html__( 'Elementor Full Width', 'softech-addons-for-elementor' ), 341 'elementor_canvas' => esc_html__( 'Elementor Canvas', 'softech-addons-for-elementor' ), 342 ], 343 ] 344 ); 345 } 346 347 $this->end_controls_section(); 348 } 306 349 } 307 350 } -
softech-addons-for-elementor/trunk/readme.txt
r3684891 r3707164 6 6 Tested up to: 7.1 7 7 Requires PHP: 7.4 8 Stable tag: 1.3. 28 Stable tag: 1.3.3 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 133 133 * [Search](https://softechaddons.sitslab.com/elementor-search-widget/) 134 134 * [Marquee](https://softechaddons.sitslab.com/elementor-marquee-widget/) 135 * [Table of Contents](https://softechaddons.sitslab.com/elementor- post-info-widget/)135 * [Table of Contents](https://softechaddons.sitslab.com/elementor-table-of-contents-widget/) 136 136 137 137 … … 276 276 277 277 == 25. Table of Contents == 278 [View Demo](https://softechaddons.sitslab.com/elementor- post-info-widget/)278 [View Demo](https://softechaddons.sitslab.com/elementor-table-of-contents-widget/) 279 279 280 280 Table of Contents - A smart Elementor widget that automatically generates a navigable table of contents from your page or post headings. Perfect for long-form articles, documentation, guides, and tutorials. Features server-side rendered output for SEO, smooth scroll navigation, active-link highlighting as visitors read, customizable dot/number markers, optional dividers between items, and heading label truncation for long titles. Fully responsive with complete typography and color controls. … … 356 356 357 357 == Changelog == 358 359 = 1.3.3 = 360 * **Widget Settings UI/UX**: Refined and improved the widget settings panel across the plugin for a cleaner, more intuitive editing experience 361 * **Table of Contents & Mega Menu**: Fixed several small issues affecting widget behavior for smoother, more reliable rendering 362 * **Multilingual Support**: Widgets now support foreign languages, improving compatibility for non-English and multilingual sites 363 * **General**: Regular update with bug fixes and stability improvements 358 364 359 365 = 1.3.2 = … … 520 526 == Upgrade Notice == 521 527 528 = 1.3.3 = 529 Improved widget settings UI/UX for a smoother editing experience, small fixes for Table of Contents and Mega Menu, and new support for foreign languages across widgets. Recommended update for all users. 530 522 531 = 1.3.2 = 523 532 Introduces the new free Table of Contents widget for auto-generating a navigable heading outline on your pages and posts. Also adds new grid item options to Loop Grid Slider. Recommended update for all users. -
softech-addons-for-elementor/trunk/softech-addons-for-elementor.php
r3684891 r3707164 3 3 Plugin Name: Softech Addons for Elementor 4 4 Description: A custom addon that provides additional widgets to extend Elementor’s functionality with flexible and reusable components. 5 Version: 1.3. 25 Version: 1.3.3 6 6 Author: Shravan Choudhary 7 7 Author URI: https://softechaddons.sitslab.com/ … … 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 Text Domain: softech-addons-for-elementor 11 Domain Path: /languages 11 12 Requires Plugins: elementor 12 13 Elementor tested up to: 4.2.2 … … 42 43 } 43 44 44 define('SITS_ELEMENTOR_ADDONS_VERSION', '1.3. 2');45 define('SITS_ELEMENTOR_ADDONS_VERSION', '1.3.3'); 45 46 define('SITS_ELEMENTOR_ADDONS_PLUGIN_URL', plugin_dir_url(__FILE__)); 46 47 define('SITS_ELEMENTOR_ADDONS_PLUGIN_PATH', plugin_dir_path(__FILE__)); -
softech-addons-for-elementor/trunk/widgets/sitsel-marquee.php
r3656059 r3707164 1507 1507 $sel = '#sitsel-marquee-' . esc_attr($widget_id); 1508 1508 1509 $css = " 1509 $css = " 1510 {$sel} .sitsel-marquee-viewport{ 1511 overflow:hidden;width:100%;position:relative;z-index:1;min-height:1.5em; 1512 } 1510 1513 {$sel} .sitsel-marquee-track{ 1511 1514 display:flex;flex-wrap:nowrap;align-items:center; … … 1519 1522 opacity:1;visibility:visible; 1520 1523 } 1521 {$sel} .sitsel-marquee-item{flex:0 0 auto;white-space:nowrap;} 1524 {$sel} .sitsel-marquee-item{ 1525 flex:0 0 auto;display:flex;align-items:center;white-space:nowrap; 1526 } 1522 1527 {$sel} .sitsel-marquee-icon, 1523 1528 {$sel} .sitsel-marquee-icon i{line-height:1;display:inline-flex;} … … 1541 1546 "; 1542 1547 1543 // Make sure the style handle is registered/enqueued before attaching inline CSS.1544 1548 $this->register_widget_assets(); 1545 1549 if (! wp_style_is('sitsel-marquee-css', 'enqueued')) { 1546 1550 wp_enqueue_style('sitsel-marquee-css'); 1547 1551 } 1548 wp_add_inline_style('sitsel-marquee-css', $css); 1552 1553 echo '<style id="sitsel-marquee-critical-' . esc_attr($widget_id) . '">' . $css . '</style>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 1549 1554 } 1550 1555 -
softech-addons-for-elementor/trunk/widgets/sitsel-mega-menu-widget.php
r3656059 r3707164 57 57 58 58 if (!wp_style_is('sitsel-frontend-mega-menu-css', 'registered')) { 59 wp_register_style('sitsel-frontend-mega-menu-css', $plugin_url . 'assets/css/mega-menu-frontend.css', [], $version); 60 wp_enqueue_style('sitsel-frontend-mega-menu-css'); 61 } 59 wp_register_style('sitsel-frontend-mega-menu-css', $plugin_url . 'assets/css/mega-menu-frontend.css', [], $version); 60 } 62 61 } 63 62 private function get_default_menu_id() { … … 414 413 'label' => esc_html__('Text Color', 'softech-addons-for-elementor'), 415 414 'type' => Controls_Manager::COLOR, 416 'default' => '# fff',415 'default' => '#0F3D4A', 417 416 'selectors' => [ 418 417 '{{WRAPPER}} .sitsel-mega-menu-main > .sits-menu-item > a' => 'color: {{VALUE}};', … … 423 422 'label' => esc_html__('Background Color', 'softech-addons-for-elementor'), 424 423 'type' => Controls_Manager::COLOR, 425 'default' => '# 0f3d4a',424 'default' => '#fff', 426 425 'selectors' => [ 427 426 '{{WRAPPER}} .sitsel-mega-menu-main > .sits-menu-item > a' => 'background-color: {{VALUE}};', … … 552 551 'fields_options'=> [ 553 552 'background' => ['default' => 'classic'], 554 'color' => ['default' => '# 1a5968'],553 'color' => ['default' => '#fff'], 555 554 ], 556 555 'selector' => '{{WRAPPER}} .sitsel-mega-menu-widget:not(.sitsel-mobile-version) .sitsel-sub-menu', … … 618 617 'label' => esc_html__('Text Color', 'softech-addons-for-elementor'), 619 618 'type' => Controls_Manager::COLOR, 620 'default' => '# fff',619 'default' => '#0F3D4A', 621 620 'selectors' => [ 622 621 '{{WRAPPER}} .sitsel-mega-menu-main .sitsel-sub-menu li a' => 'color: {{VALUE}};', … … 634 633 'label' => esc_html__('Text Color', 'softech-addons-for-elementor'), 635 634 'type' => Controls_Manager::COLOR, 635 'default' => '#fff', 636 636 'selectors' => [ 637 637 '{{WRAPPER}} .sitsel-mega-menu-main .sitsel-sub-menu li a:hover' => 'color: {{VALUE}};', … … 642 642 'label' => esc_html__('Background Color', 'softech-addons-for-elementor'), 643 643 'type' => Controls_Manager::COLOR, 644 'default' => '# dfdfdf',644 'default' => '#989898', 645 645 'selectors' => [ 646 646 '{{WRAPPER}} .sitsel-mega-menu-widget .sitsel-sub-menu > .sits-menu-item > a:hover' => 'background: {{VALUE}};', … … 733 733 'label' => esc_html__('Size (px)', 'softech-addons-for-elementor'), 734 734 'type' => Controls_Manager::NUMBER, 735 'default' => 1 2,735 'default' => 10, 736 736 'selectors' => [ 737 737 '{{WRAPPER}} .sitsel-submenu-icon svg' => 'width: {{VALUE}}px;', … … 749 749 'label' => esc_html__('Color', 'softech-addons-for-elementor'), 750 750 'type' => Controls_Manager::COLOR, 751 'default' => '# fff',751 'default' => '#0F3D4A', 752 752 'selectors' => [ 753 753 '{{WRAPPER}} .sitsel-submenu-icon svg' => 'fill: {{VALUE}};', … … 824 824 'fields_options'=> [ 825 825 'background' => ['default' => 'classic'], 826 'color' => ['default' => '# 0f3d4a'],826 'color' => ['default' => '#fff'], 827 827 ], 828 828 'selector' => '{{WRAPPER}} .sitsel-mobile-version .sitsel-mega-menu-main-wrapper', … … 1120 1120 'label' => esc_html__('Size (px)', 'softech-addons-for-elementor'), 1121 1121 'type' => Controls_Manager::NUMBER, 1122 'default' => 1 2,1122 'default' => 10, 1123 1123 'selectors' => [ 1124 1124 '{{WRAPPER}} .sitsel-mobile-version .sitsel-submenu-icon svg' => 'width: {{VALUE}}px; height: {{VALUE}}px;', … … 1142 1142 // ───────────────────────────────────────────── 1143 1143 $this->start_controls_section('style_toggle_button', [ 1144 'label' => esc_html__(' Toggle Button', 'softech-addons-for-elementor'),1144 'label' => esc_html__('Hamburger & Close Button', 'softech-addons-for-elementor'), 1145 1145 'tab' => Controls_Manager::TAB_STYLE, 1146 1146 ]); … … 1150 1150 'type' => Controls_Manager::SLIDER, 1151 1151 'range' => ['px' => ['min' => 8, 'max' => 80]], 1152 'default' => ['size' => 24],1152 'default' => ['size' => 16], 1153 1153 'selectors' => [ 1154 1154 '{{WRAPPER}} .sitsel-icon-open i' => 'font-size: {{SIZE}}px;', … … 1163 1163 'type' => Controls_Manager::SLIDER, 1164 1164 'range' => ['px' => ['min' => 8, 'max' => 80]], 1165 'default' => ['size' => 24],1165 'default' => ['size' => 16], 1166 1166 'selectors' => [ 1167 1167 '{{WRAPPER}} .sitsel-icon-close i' => 'font-size: {{SIZE}}px;', -
softech-addons-for-elementor/trunk/widgets/sitsel-toc.php
r3684903 r3707164 19 19 const ID_PREFIX = 'sits-toc-'; 20 20 21 private static $content_headings = array(); 21 private static $content_headings_map = array(); 22 private static $heading_key_counter = 0; 22 23 private static $content_filter_added = false; 23 24 … … 65 66 } 66 67 67 private static function hook_content_filter() {68 private static function hook_content_filter() { 68 69 if ( self::$content_filter_added ) { 69 70 return; … … 75 76 } 76 77 78 private static function is_trackable_frontend_request() { 79 if ( is_admin() ) { 80 return false; 81 } 82 83 if ( function_exists( 'wp_doing_ajax' ) && wp_doing_ajax() ) { 84 return false; 85 } 86 87 if ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() ) { 88 return false; 89 } 90 91 if ( ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) ) { 92 return false; 93 } 94 95 if ( function_exists( 'is_feed' ) && is_feed() ) { 96 return false; 97 } 98 99 return true; 100 } 101 77 102 public static function capture_content_headings( $content ) { 78 if ( ! is_string( $content ) || false === stripos( $content, '<h' ) ) { 79 return $content; 80 } 81 82 $used_slugs = array(); 83 84 $content = preg_replace_callback( 85 '/<(h[2-4])((?:\s+[^>]*)?)>(.*?)<\/\1>/is', 86 static function ( $matches ) use ( &$used_slugs ) { 87 $tag = strtolower( $matches[1] ); 88 $attrs = $matches[2]; 89 $inner = $matches[3]; 90 $text = trim( wp_strip_all_tags( $inner ) ); 91 92 if ( '' === $text ) { 93 return $matches[0]; 94 } 95 96 if ( preg_match( '/\bid=(["\'])(.*?)\1/i', $attrs, $id_match ) ) { 97 $id = $id_match[2]; 98 } else { 99 $id = sitsel_toc::generate_slug( $text, $used_slugs ); 100 $attrs .= ' id="' . esc_attr( $id ) . '"'; 101 } 102 103 $used_slugs[ $id ] = true; 104 105 sitsel_toc::$content_headings[] = array( 106 'id' => $id, 107 'level' => $tag, 108 'text' => $text, 109 ); 110 111 return '<' . $tag . $attrs . '>' . $inner . '</' . $tag . '>'; 112 }, 113 $content 114 ); 115 103 if ( ! self::is_trackable_frontend_request() ) { 116 104 return $content; 117 105 } 106 107 if ( ! is_singular( 'post' ) ) { 108 return $content; 109 } 110 111 if ( ! is_string( $content ) || false === strpos( $content, '<h' ) ) { 112 return $content; 113 } 114 115 return preg_replace_callback( 116 '/<(h[2-4])((?:\s+[^>]*)?)>(.*?)<\/\1>/is', 117 static function ( $matches ) { 118 $tag = strtolower( $matches[1] ); 119 $attrs = $matches[2]; 120 $inner = $matches[3]; 121 $text = trim( wp_strip_all_tags( $inner ) ); 122 123 if ( '' === $text ) { 124 return $matches[0]; 125 } 126 127 $existing_id = ''; 128 if ( preg_match( '/\bid=(["\'])(.*?)\1/i', $attrs, $id_match ) ) { 129 $existing_id = $id_match[2]; 130 } 131 132 ++self::$heading_key_counter; 133 $key = self::$heading_key_counter; 134 135 self::$content_headings_map[ $key ] = array( 136 'text' => $text, 137 'level' => $tag, 138 'id' => $existing_id, 139 ); 140 141 $attrs .= ' data-sitsel-hkey="' . $key . '"'; 142 143 return '<' . $tag . $attrs . '>' . $inner . '</' . $tag . '>'; 144 }, 145 $content 146 ); 147 } 118 148 119 149 protected function register_controls() { … … 945 975 946 976 public static function start_page_buffer() { 947 if ( is_admin() ) {977 if ( ! self::is_trackable_frontend_request() ) { 948 978 return; 949 979 } 950 980 951 if ( function_exists( 'wp_doing_ajax' ) && wp_doing_ajax() ) {952 return;953 }954 955 if ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() ) {956 return;957 }958 959 if ( ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) ) {960 return;961 }962 963 if ( function_exists( 'is_feed' ) && is_feed() ) {964 return;965 }966 967 981 ob_start( array( __CLASS__, 'process_page_buffer' ) ); 968 982 } 969 983 970 984 public static function process_page_buffer( $html ) { 971 if ( ! is_string( $html ) || false === strpos( $html, 'data-sitsel-toc-id=' )) {985 if ( ! is_string( $html ) ) { 972 986 return $html; 973 987 } 974 988 975 $content_headings = self::$content_headings; // may be empty array, that's fine now 989 if ( false === strpos( $html, 'data-sitsel-toc-id=' ) ) { 990 return self::strip_leftover_hkeys( $html ); 991 } 992 993 $allowed_levels = array(); 994 if ( preg_match_all( '/data-heading-levels="([^"]*)"/', $html, $level_matches ) ) { 995 foreach ( $level_matches[1] as $levels_str ) { 996 foreach ( explode( ',', $levels_str ) as $level ) { 997 $level = trim( $level ); 998 if ( '' !== $level ) { 999 $allowed_levels[ $level ] = true; 1000 } 1001 } 1002 } 1003 } 1004 1005 $used_slugs = array(); 1006 $content_headings = array(); 1007 1008 $html = preg_replace_callback( 1009 '/<(h[2-4])((?:\s+[^>]*)?)>/is', 1010 static function ( $matches ) use ( &$used_slugs, &$content_headings, $allowed_levels ) { 1011 $tag = strtolower( $matches[1] ); 1012 $attrs = $matches[2]; 1013 1014 if ( ! preg_match( '/\sdata-sitsel-hkey="(\d+)"/', $attrs, $key_match ) ) { 1015 return $matches[0]; 1016 } 1017 1018 $key = (int) $key_match[1]; 1019 $attrs = preg_replace( '/\s*data-sitsel-hkey="\d+"/', '', $attrs ); 1020 1021 if ( ! isset( sitsel_toc::$content_headings_map[ $key ] ) || ! isset( $allowed_levels[ $tag ] ) ) { 1022 return '<' . $tag . $attrs . '>'; 1023 } 1024 1025 $heading = sitsel_toc::$content_headings_map[ $key ]; 1026 $id = $heading['id']; 1027 1028 if ( '' === $id ) { 1029 $id = sitsel_toc::generate_slug( $heading['text'], $used_slugs ); 1030 $attrs .= ' id="' . esc_attr( $id ) . '"'; 1031 } 1032 1033 $used_slugs[ $id ] = true; 1034 1035 $content_headings[] = array( 1036 'id' => $id, 1037 'level' => $heading['level'], 1038 'text' => $heading['text'], 1039 ); 1040 1041 return '<' . $tag . $attrs . '>'; 1042 }, 1043 $html 1044 ); 1045 1046 if ( null === $html ) { 1047 return $html; 1048 } 976 1049 977 1050 $html = preg_replace_callback( … … 999 1072 } 1000 1073 1001 $html = preg_replace(1074 $html = preg_replace( 1002 1075 array( 1003 1076 '/<!--sitsel-toc-start-[a-z0-9]+-->/i', … … 1008 1081 ); 1009 1082 1010 return $html; 1083 return self::strip_leftover_hkeys( $html ); 1084 } 1085 1086 private static function strip_leftover_hkeys( $html ) { 1087 if ( ! is_string( $html ) || false === strpos( $html, 'data-sitsel-hkey=' ) ) { 1088 return $html; 1089 } 1090 1091 return preg_replace( '/\s*data-sitsel-hkey="\d+"/', '', $html ); 1011 1092 } 1012 1093
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)