Changeset 3465591
- Timestamp:
- 02/20/2026 09:22:22 AM (2 days ago)
- Location:
- daily-slider
- Files:
-
- 50 added
- 5 edited
-
tags/2.8.0 (added)
-
tags/2.8.0/admin (added)
-
tags/2.8.0/admin/dashboard.php (added)
-
tags/2.8.0/admin/welcome-page.php (added)
-
tags/2.8.0/admin/widget-config.php (added)
-
tags/2.8.0/admin/widget-manager.php (added)
-
tags/2.8.0/assets (added)
-
tags/2.8.0/assets/css (added)
-
tags/2.8.0/assets/css/common.css (added)
-
tags/2.8.0/assets/css/widgets (added)
-
tags/2.8.0/assets/css/widgets/eldorado.css (added)
-
tags/2.8.0/assets/css/widgets/marqee.css (added)
-
tags/2.8.0/assets/css/widgets/marquee.css (added)
-
tags/2.8.0/assets/css/widgets/news-ticker.css (added)
-
tags/2.8.0/assets/css/widgets/pixel.css (added)
-
tags/2.8.0/assets/css/widgets/review-carousel.css (added)
-
tags/2.8.0/assets/css/widgets/testimonials-marquee.css (added)
-
tags/2.8.0/assets/images (added)
-
tags/2.8.0/assets/images/item-1.svg (added)
-
tags/2.8.0/assets/images/item-2.svg (added)
-
tags/2.8.0/assets/images/item-3.svg (added)
-
tags/2.8.0/assets/images/widgets (added)
-
tags/2.8.0/assets/js (added)
-
tags/2.8.0/assets/js/widgets (added)
-
tags/2.8.0/assets/js/widgets/eldorado.js (added)
-
tags/2.8.0/assets/js/widgets/marquee.js (added)
-
tags/2.8.0/assets/js/widgets/news-ticker.js (added)
-
tags/2.8.0/assets/js/widgets/pixel.js (added)
-
tags/2.8.0/assets/js/widgets/review-carousel.js (added)
-
tags/2.8.0/assets/js/widgets/testimonials-marquee.js (added)
-
tags/2.8.0/daily-slider.php (added)
-
tags/2.8.0/readme.txt (added)
-
tags/2.8.0/widgets (added)
-
tags/2.8.0/widgets/eldorado (added)
-
tags/2.8.0/widgets/eldorado/eldorado.php (added)
-
tags/2.8.0/widgets/marquee (added)
-
tags/2.8.0/widgets/marquee/marquee.php (added)
-
tags/2.8.0/widgets/news-ticker (added)
-
tags/2.8.0/widgets/news-ticker/news-ticker.php (added)
-
tags/2.8.0/widgets/pixel (added)
-
tags/2.8.0/widgets/pixel/pixel.php (added)
-
tags/2.8.0/widgets/review-carousel (added)
-
tags/2.8.0/widgets/review-carousel/review-carousel.php (added)
-
tags/2.8.0/widgets/testimonials-marquee (added)
-
tags/2.8.0/widgets/testimonials-marquee/testimonials-marquee.php (added)
-
trunk/admin/dashboard.php (modified) (3 diffs)
-
trunk/admin/welcome-page.php (modified) (1 diff)
-
trunk/admin/widget-config.php (added)
-
trunk/admin/widget-manager.php (modified) (2 diffs)
-
trunk/assets/css/widgets/news-ticker.css (added)
-
trunk/assets/js/widgets/news-ticker.js (added)
-
trunk/daily-slider.php (modified) (14 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/widgets/news-ticker (added)
-
trunk/widgets/news-ticker/news-ticker.php (added)
Legend:
- Unmodified
- Added
- Removed
-
daily-slider/trunk/admin/dashboard.php
r3423716 r3465591 17 17 // Include widget manager class 18 18 require_once plugin_dir_path(__FILE__) . 'widget-manager.php'; 19 20 // Include widget config class 21 require_once plugin_dir_path(__FILE__) . 'widget-config.php'; 19 22 } 20 23 … … 52 55 register_setting('daily_slider_settings', 'daily_slider_widgets', array( 53 56 'type' => 'array', 54 'default' => array( 55 'pixel' => true, 56 'eldorado' => true, 57 'review_carousel' => true, 58 'marquee' => true, 59 'testimonials_marquee' => true 60 61 ), 57 'default' => DailySliderWidgetConfig::get_default_enabled_widgets(), 62 58 'sanitize_callback' => array($this, 'sanitize_widgets_settings') 63 59 )); … … 73 69 74 70 $sanitized = array(); 75 $valid_widgets = array('pixel', 'eldorado', 'review_carousel', 'marquee', 'testimonials_marquee'); 71 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 72 $valid_widgets = array_keys($widgets_config); 76 73 77 74 foreach ($valid_widgets as $widget) { -
daily-slider/trunk/admin/welcome-page.php
r3445048 r3465591 17 17 } 18 18 19 $available_widgets = array( 20 'pixel' => array('name' => __('Pixel', 'daily-slider')), 21 'eldorado' => array('name' => __('Eldorado', 'daily-slider')), 22 'review_carousel' => array('name' => __('Review Carousel', 'daily-slider')), 23 'marquee' => array('name' => __('Marquee Slider', 'daily-slider')), 24 'testimonials_marquee' => array('name' => __('Testimonials Marquee', 'daily-slider')), 25 ); 19 $available_widgets = DailySliderWidgetConfig::get_welcome_page_widgets(); 26 20 27 21 $coming_features = array( -
daily-slider/trunk/admin/widget-manager.php
r3445042 r3465591 16 16 */ 17 17 private static function register_widgets() { 18 // Current Widgets 19 self::add_widget('pixel', [ 20 'name' => __('Pixel (Hero Slider)', 'daily-slider'), 21 'icon' => 'dashicons-format-image', 22 'category' => 'current', 23 'status' => 'active', 24 'url' => 'https://xpospark.com/plugin/daily-slider/demo/pixel/', 25 ]); 26 27 self::add_widget('eldorado', [ 28 'name' => __('Eldorado (Image Carousel)', 'daily-slider'), 29 'icon' => 'dashicons-images-alt2', 30 'category' => 'current', 31 'status' => 'active', 32 'url' => 'https://xpospark.com/plugin/daily-slider/demo/eldorado/', 33 ]); 34 35 self::add_widget('review_carousel', [ 36 'name' => __('Review Carousel', 'daily-slider'), 37 'icon' => 'dashicons-star-filled', 38 'category' => 'current', 39 'status' => 'active', 40 'url' => 'https://xpospark.com/plugin/daily-slider/demo/review-carousel/', 41 ]); 42 43 self::add_widget('marquee', [ 44 'name' => __('Marquee Slider', 'daily-slider'), 45 'icon' => 'dashicons-editor-code', 46 'category' => 'current', 47 'status' => 'active', 48 'url' => 'https://xpospark.com/plugin/daily-slider/demo/marquee-slider/', 49 ]); 50 51 52 self::add_widget('testimonials_marquee', [ 53 'name' => __('Testimonials Marquee', 'daily-slider'), 54 'icon' => 'dashicons-editor-code', 55 'category' => 'current', 56 'status' => 'active', 57 'url' => 'https://xpospark.com/plugin/daily-slider/demo/marquee-testimonials/', 58 ]); 59 60 // Coming Soon Widgets 61 self::add_widget('post_slider', [ 62 'name' => __('Post Slider', 'daily-slider'), 63 'icon' => 'dashicons-admin-post', 64 'category' => 'coming_soon', 65 'status' => 'coming_soon', 66 ]); 67 68 self::add_widget('post_carousel', [ 69 'name' => __('Post Carousel', 'daily-slider'), 70 'icon' => 'dashicons-admin-page', 71 'category' => 'coming_soon', 72 'status' => 'coming_soon', 73 ]); 74 75 self::add_widget('woo_products', [ 76 'name' => __('WooCommerce Products', 'daily-slider'), 77 'icon' => 'dashicons-cart', 78 'category' => 'coming_soon', 79 'status' => 'coming_soon', 80 ]); 18 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 19 20 foreach ($widgets_config as $key => $widget) { 21 self::add_widget($key, $widget); 22 } 81 23 } 82 24 … … 108 50 */ 109 51 public static function get_enabled_widgets() { 110 $enabled_widgets = get_option('daily_slider_widgets', array( 111 'pixel' => true, 112 'eldorado' => true, 113 'review_carousel' => true, 114 'marquee' => true, 115 'testimonials_marquee' => true 116 )); 52 $enabled_widgets = get_option('daily_slider_widgets', DailySliderWidgetConfig::get_default_enabled_widgets()); 117 53 118 54 // Ensure we always return an array 119 55 if (!is_array($enabled_widgets)) { 120 $enabled_widgets = array( 121 'pixel' => true, 122 'eldorado' => true, 123 'review_carousel' => true, 124 'marquee' => true, 125 'testimonials_marquee' => true 126 ); 56 $enabled_widgets = DailySliderWidgetConfig::get_default_enabled_widgets(); 127 57 }; 128 58 -
daily-slider/trunk/daily-slider.php
r3445381 r3465591 3 3 * Plugin Name: Daily Slider 4 4 * Description: Enhance Elementor with customizable hero sliders, review carousels, and portfolio showcases, featuring responsive design, animations, and hover effects. 5 * Version: 2. 7.05 * Version: 2.8.0 6 6 * Author: wpcoder75 7 7 * Author URI: https://github.com/asikwp75 … … 13 13 */ 14 14 15 16 if ( ! defined( 'ABSPATH' ) ) { 15 if ( ! defined( 'ABSPATH' ) ) { 17 16 exit; // Exit if accessed directly 18 17 } 19 18 19 // Include widget config 20 require_once plugin_dir_path( __FILE__ ) . 'admin/widget-config.php'; 21 20 22 class DailySliderPlugin { 21 const VERSION = '2. 7.0';23 const VERSION = '2.8.0'; 22 24 const MINIMUM_ELEMENTOR_VERSION = '3.26.0'; 23 25 const MINIMUM_PHP_VERSION = '7.4'; … … 39 41 // Load text domain first thing in init 40 42 load_plugin_textdomain( 'daily-slider', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); 41 43 42 44 // Load dashboard after text domain is loaded 43 45 if ( is_admin() ) { … … 48 50 $this->check_elementor_and_register(); 49 51 } 50 52 51 53 public function load_dashboard() { 52 54 require_once plugin_dir_path( __FILE__ ) . 'admin/dashboard.php'; 53 55 new DailySliderDashboard(); 54 56 } 55 57 56 58 public function check_elementor_and_register() { 57 59 if ( ! did_action( 'elementor/loaded' ) ) { … … 72 74 // Register Elementor hooks immediately when Elementor is available 73 75 $this->register_elementor_hooks(); 74 } 75 76 77 // Fix WordPress 6.9.1 script dependency validation for Elementor v2 scripts 78 add_filter( 'script_loader_src', array( $this, 'fix_elementor_v2_script_dependencies' ), 10, 2 ); 79 } 80 76 81 public function register_elementor_hooks() { 77 82 add_action( 'elementor/elements/categories_registered', array( $this, 'add_elementor_category' ) ); … … 79 84 add_action( 'elementor/frontend/after_enqueue_styles', array( $this, 'enqueue_styles' ) ); 80 85 add_action( 'elementor/frontend/after_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); 81 86 82 87 // Add scripts for Elementor editor 83 88 add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'enqueue_editor_scripts' ) ); … … 86 91 public function enqueue_styles() { 87 92 // Get enabled widgets 88 $enabled_widgets = get_option('daily_slider_widgets', array( 89 'pixel' => true, 90 'eldorado' => true, 91 'review_carousel' => true, 92 'marquee' => true, 93 'testimonials_marquee' => true 94 )); 93 $enabled_widgets = get_option('daily_slider_widgets', DailySliderWidgetConfig::get_default_enabled_widgets()); 94 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 95 95 96 96 // Enqueue styles only for enabled widgets 97 if (isset($enabled_widgets['eldorado']) && $enabled_widgets['eldorado']) { 98 wp_enqueue_style( 'DailySlider-eldorado-styles', plugins_url( 'assets/css/widgets/eldorado.css', __FILE__ ), array(), '1.0.0', false ); 99 } 100 101 if (isset($enabled_widgets['pixel']) && $enabled_widgets['pixel']) { 102 wp_enqueue_style( 'DailySlider-pixel-styles', plugins_url( 'assets/css/widgets/pixel.css', __FILE__ ), array(), '1.0.0', false ); 103 } 104 105 if (isset($enabled_widgets['review_carousel']) && $enabled_widgets['review_carousel']) { 106 wp_enqueue_style( 'DailySlider-review-carousel-styles', plugins_url( 'assets/css/widgets/review-carousel.css', __FILE__ ), array(), '1.0.0', false ); 107 } 108 109 if (isset($enabled_widgets['marquee']) && $enabled_widgets['marquee']) { 110 wp_enqueue_style( 'DailySlider-marquee-styles', plugins_url( 'assets/css/widgets/marquee.css', __FILE__ ), array(), '1.0.0', false ); 111 } 112 113 if (isset($enabled_widgets['testimonials_marquee']) && $enabled_widgets['testimonials_marquee']) { 114 wp_enqueue_style( 'DailySlider-testimonials-marquee-styles', plugins_url( 'assets/css/widgets/testimonials-marquee.css', __FILE__ ), array(), '1.0.0', false ); 97 foreach ($widgets_config as $widget_key => $widget_config) { 98 if (isset($enabled_widgets[$widget_key]) && $enabled_widgets[$widget_key] && !empty($widget_config['file_path'])) { 99 $css_file = 'assets/css/widgets/' . basename($widget_config['file_path'], '.php') . '.css'; 100 $css_path = plugin_dir_path(__FILE__) . $css_file; 101 102 if (file_exists($css_path)) { 103 $handle = 'DailySlider-' . basename($widget_config['file_path'], '.php') . '-styles'; 104 wp_enqueue_style($handle, plugins_url($css_file, __FILE__), array(), '1.0.0', false); 105 } 106 } 115 107 } 116 108 117 109 // Always enqueue common styles if any widget is enabled 118 110 if (array_filter($enabled_widgets)) { 119 wp_enqueue_style( 'DailySlider-common-styles', plugins_url( 'assets/css/common.css', __FILE__ ), array(), '1.0.0', false);111 wp_enqueue_style('DailySlider-common-styles', plugins_url('assets/css/common.css', __FILE__), array(), '1.0.0', false); 120 112 } 121 113 } … … 123 115 public function enqueue_scripts() { 124 116 // Get enabled widgets 125 $enabled_widgets = get_option('daily_slider_widgets', array( 126 'pixel' => true, 127 'eldorado' => true, 128 'review_carousel' => true, 129 'marquee' => true, 130 'testimonials_marquee' => true 131 )); 117 $enabled_widgets = get_option('daily_slider_widgets', DailySliderWidgetConfig::get_default_enabled_widgets()); 118 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 132 119 133 120 // Enqueue scripts only for enabled widgets 134 if (isset($enabled_widgets['eldorado']) && $enabled_widgets['eldorado']) { 135 wp_enqueue_script( 'DailySlider-eldorado-scripts', plugins_url( 'assets/js/widgets/eldorado.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 136 } 137 138 if (isset($enabled_widgets['pixel']) && $enabled_widgets['pixel']) { 139 wp_enqueue_script( 'DailySlider-pixel-scripts', plugins_url( 'assets/js/widgets/pixel.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 140 } 141 142 if (isset($enabled_widgets['review_carousel']) && $enabled_widgets['review_carousel']) { 143 wp_enqueue_script( 'DailySlider-review-carousel-scripts', plugins_url( 'assets/js/widgets/review-carousel.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 144 } 145 146 if (isset($enabled_widgets['marquee']) && $enabled_widgets['marquee']) { 147 wp_enqueue_script( 'DailySlider-marquee-scripts', plugins_url( 'assets/js/widgets/marquee.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 148 } 149 150 if (isset($enabled_widgets['testimonials_marquee']) && $enabled_widgets['testimonials_marquee']) { 151 wp_enqueue_script( 'DailySlider-testimonials-marquee-scripts', plugins_url( 'assets/js/widgets/testimonials-marquee.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 152 } 153 } 154 121 foreach ($widgets_config as $widget_key => $widget_config) { 122 if (isset($enabled_widgets[$widget_key]) && $enabled_widgets[$widget_key] && !empty($widget_config['file_path'])) { 123 $js_file = 'assets/js/widgets/' . basename($widget_config['file_path'], '.php') . '.js'; 124 $js_path = plugin_dir_path(__FILE__) . $js_file; 125 126 if (file_exists($js_path)) { 127 $handle = 'DailySlider-' . basename($widget_config['file_path'], '.php') . '-scripts'; 128 wp_enqueue_script($handle, plugins_url($js_file, __FILE__), array('jquery'), '1.0.0', true); 129 } 130 } 131 } 132 } 133 155 134 /** 156 135 * Enqueue scripts for Elementor editor … … 158 137 public function enqueue_editor_scripts() { 159 138 // Get enabled widgets 160 $enabled_widgets = get_option('daily_slider_widgets', array( 161 'pixel' => true, 162 'eldorado' => true, 163 'review_carousel' => true, 164 'marquee' => true, 165 'testimonials_marquee' => true 166 )); 167 168 // Enqueue widget scripts for editor only for enabled widgets 169 if (isset($enabled_widgets['eldorado']) && $enabled_widgets['eldorado']) { 170 wp_enqueue_script( 'DailySlider-eldorado-scripts', plugins_url( 'assets/js/widgets/eldorado.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 171 } 172 173 if (isset($enabled_widgets['pixel']) && $enabled_widgets['pixel']) { 174 wp_enqueue_script( 'DailySlider-pixel-scripts', plugins_url( 'assets/js/widgets/pixel.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 175 } 176 177 if (isset($enabled_widgets['review_carousel']) && $enabled_widgets['review_carousel']) { 178 wp_enqueue_script( 'DailySlider-review-carousel-scripts', plugins_url( 'assets/js/widgets/review-carousel.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 179 } 180 181 if (isset($enabled_widgets['marquee']) && $enabled_widgets['marquee']) { 182 wp_enqueue_script( 'DailySlider-marquee-scripts', plugins_url( 'assets/js/widgets/marquee.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 183 } 184 185 if (isset($enabled_widgets['testimonials_marquee']) && $enabled_widgets['testimonials_marquee']) { 186 wp_enqueue_script( 'DailySlider-testimonials-marquee-scripts', plugins_url( 'assets/js/widgets/testimonials-marquee.js', __FILE__ ), array( 'jquery', 'elementor-frontend' ), '1.0.0', true ); 187 } 188 189 // Enqueue widget styles for editor only for enabled widgets 190 if (isset($enabled_widgets['eldorado']) && $enabled_widgets['eldorado']) { 191 wp_enqueue_style( 'DailySlider-eldorado-styles', plugins_url( 'assets/css/widgets/eldorado.css', __FILE__ ), array(), '1.0.0', false ); 192 } 193 194 if (isset($enabled_widgets['pixel']) && $enabled_widgets['pixel']) { 195 wp_enqueue_style( 'DailySlider-pixel-styles', plugins_url( 'assets/css/widgets/pixel.css', __FILE__ ), array(), '1.0.0', false ); 196 } 197 198 if (isset($enabled_widgets['review_carousel']) && $enabled_widgets['review_carousel']) { 199 wp_enqueue_style( 'DailySlider-review-carousel-styles', plugins_url( 'assets/css/widgets/review-carousel.css', __FILE__ ), array(), '1.0.0', false ); 200 } 201 202 if (isset($enabled_widgets['marquee']) && $enabled_widgets['marquee']) { 203 wp_enqueue_style( 'DailySlider-marquee-styles', plugins_url( 'assets/css/widgets/marquee.css', __FILE__ ), array(), '1.0.0', false ); 204 } 205 206 if (isset($enabled_widgets['testimonials_marquee']) && $enabled_widgets['testimonials_marquee']) { 207 wp_enqueue_style( 'DailySlider-testimonials-marquee-styles', plugins_url( 'assets/css/widgets/testimonials-marquee.css', __FILE__ ), array(), '1.0.0', false ); 139 $enabled_widgets = get_option('daily_slider_widgets', DailySliderWidgetConfig::get_default_enabled_widgets()); 140 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 141 142 // Enqueue widget scripts and styles for editor only for enabled widgets 143 foreach ($widgets_config as $widget_key => $widget_config) { 144 if (isset($enabled_widgets[$widget_key]) && $enabled_widgets[$widget_key] && !empty($widget_config['file_path'])) { 145 $base_name = basename($widget_config['file_path'], '.php'); 146 147 // Enqueue script 148 $js_file = 'assets/js/widgets/' . $base_name . '.js'; 149 $js_path = plugin_dir_path(__FILE__) . $js_file; 150 151 if (file_exists($js_path)) { 152 $handle = 'DailySlider-' . $base_name . '-scripts'; 153 wp_enqueue_script($handle, plugins_url($js_file, __FILE__), array('jquery'), '1.0.0', true); 154 } 155 156 // Enqueue style 157 $css_file = 'assets/css/widgets/' . $base_name . '.css'; 158 $css_path = plugin_dir_path(__FILE__) . $css_file; 159 160 if (file_exists($css_path)) { 161 $handle = 'DailySlider-' . $base_name . '-styles'; 162 wp_enqueue_style($handle, plugins_url($css_file, __FILE__), array(), '1.0.0', false); 163 } 164 } 208 165 } 209 166 210 167 // Always enqueue common styles if any widget is enabled 211 168 if (array_filter($enabled_widgets)) { 212 wp_enqueue_style( 'DailySlider-common-styles', plugins_url( 'assets/css/common.css', __FILE__ ), array(), '1.0.0', false ); 213 } 214 } 215 169 wp_enqueue_style('DailySlider-common-styles', plugins_url('assets/css/common.css', __FILE__), array(), '1.0.0', false); 170 } 171 } 216 172 217 173 public function add_elementor_category( $elements_manager ) { … … 228 184 public function register_widgets( $widgets_manager ) { 229 185 // Get enabled widgets from dashboard settings 230 $enabled_widgets = get_option('daily_slider_widgets', array( 231 'pixel' => true, 232 'eldorado' => true, 233 'review_carousel' => true, 234 'marquee' => true, 235 'testimonials_marquee' => true 236 )); 186 $enabled_widgets = get_option('daily_slider_widgets', DailySliderWidgetConfig::get_default_enabled_widgets()); 237 187 238 188 // Debug: Log widget registration … … 241 191 } 242 192 243 // Register Eldorado Widget if enabled 244 if (isset($enabled_widgets['eldorado']) && $enabled_widgets['eldorado']) { 245 require_once plugin_dir_path( __FILE__ ) . 'widgets/eldorado/eldorado.php'; 246 $widgets_manager->register( new \DailySlider\Widgets\Eldorado_Widget() ); 247 if (defined('WP_DEBUG') && WP_DEBUG) { 248 error_log('Daily Slider: Eldorado widget registered'); 249 } 250 } 251 252 // Register Pixel Widget if enabled 253 if (isset($enabled_widgets['pixel']) && $enabled_widgets['pixel']) { 254 require_once plugin_dir_path( __FILE__ ) . 'widgets/pixel/pixel.php'; 255 $widgets_manager->register( new \DailySlider\Widgets\Pixel_Widget() ); 256 if (defined('WP_DEBUG') && WP_DEBUG) { 257 error_log('Daily Slider: Pixel widget registered'); 258 } 259 } 260 261 // Register Review Carousel Widget if enabled 262 if (isset($enabled_widgets['review_carousel']) && $enabled_widgets['review_carousel']) { 263 require_once plugin_dir_path( __FILE__ ) . 'widgets/review-carousel/review-carousel.php'; 264 $widgets_manager->register( new \DailySlider\Widgets\ReviewCarousel_Widget() ); 265 if (defined('WP_DEBUG') && WP_DEBUG) { 266 error_log('Daily Slider: Review Carousel widget registered'); 267 } 268 } 269 270 // Register Marquee Widget if enabled 271 if (isset($enabled_widgets['marquee']) && $enabled_widgets['marquee']) { 272 require_once plugin_dir_path( __FILE__ ) . 'widgets/marquee/marquee.php'; 273 $widgets_manager->register( new \DailySlider\Widgets\Marquee_Widget() ); 274 if (defined('WP_DEBUG') && WP_DEBUG) { 275 error_log('Daily Slider: Marquee widget registered'); 276 } 277 } 278 279 280 // Register Testimonials Marquee Widget if enabled 281 if (isset($enabled_widgets['testimonials_marquee']) && $enabled_widgets['testimonials_marquee']) { 282 require_once plugin_dir_path( __FILE__ ) . 'widgets/testimonials-marquee/testimonials-marquee.php'; 283 $widgets_manager->register( new \DailySlider\Widgets\Testimonials_Marquee_Widget() ); 284 if (defined('WP_DEBUG') && WP_DEBUG) { 285 error_log('Daily Slider: Testimonials Marquee widget registered'); 286 } 287 } 288 } 289 290 193 // Get widget configuration 194 $widgets_config = DailySliderWidgetConfig::get_widgets_config(); 195 196 // Register each enabled widget 197 foreach ($widgets_config as $widget_key => $widget_config) { 198 if (isset($enabled_widgets[$widget_key]) && $enabled_widgets[$widget_key] && !empty($widget_config['file_path'])) { 199 $file_path = plugin_dir_path(__FILE__) . $widget_config['file_path']; 200 $class_name = $widget_config['class_name']; 201 202 if (file_exists($file_path)) { 203 require_once $file_path; 204 if (class_exists($class_name)) { 205 $widgets_manager->register(new $class_name()); 206 207 if (defined('WP_DEBUG') && WP_DEBUG) { 208 error_log('Daily Slider: ' . $widget_config['name'] . ' widget registered'); 209 } 210 } 211 } 212 } 213 } 214 } 215 291 216 public function admin_notice_missing_main_plugin() { 292 217 $message = sprintf( … … 297 222 printf( '<div class="notice notice-warning daily-slider-notice is-dismissible"><p>%s</p></div>', wp_kses_post( $message ) ); 298 223 } 299 224 300 225 public function admin_notice_minimum_php_version() { 301 226 $message = sprintf( … … 307 232 printf( '<div class="notice notice-warning daily-slider-notice is-dismissible"><p>%s</p></div>', wp_kses_post( $message ) ); 308 233 } 309 234 310 235 public function admin_notice_minimum_elementor_version() { 311 236 $message = sprintf( … … 317 242 printf( '<div class="notice notice-warning daily-slider-notice is-dismissible"><p>%s</p></div>', wp_kses_post( $message ) ); 318 243 } 319 320 321 322 244 245 /** 246 * Fix WordPress 6.9.1 script dependency validation for Elementor v2 scripts 247 * This prevents notices about unregistered Elementor v2 dependencies 248 */ 249 public function fix_elementor_v2_script_dependencies( $src, $handle ) { 250 // List of Elementor v2 scripts that may have dependency issues 251 $v2_scripts = array( 252 'elementor-v2-editor-components', 253 'elementor-v2-editor-interactions', 254 'elementor-v2-editor-canvas', 255 'elementor-v2-editor-controls', 256 'elementor-v2-editor-editing-panel', 257 'elementor-v2-editor-elements', 258 'elementor-v2-editor-props', 259 'elementor-v2-editor-styles-repository' 260 ); 261 262 if ( in_array( $handle, $v2_scripts ) ) { 263 global $wp_scripts; 264 265 if ( isset( $wp_scripts->registered[ $handle ] ) ) { 266 $script = $wp_scripts->registered[ $handle ]; 267 268 $valid_deps = array(); 269 foreach ( $script->deps as $dep ) { 270 if ( isset( $wp_scripts->registered[ $dep ] ) || in_array( $dep, array( 'jquery', 'jquery-core', 'jquery-migrate', 'wp-i18n' ) ) ) { 271 $valid_deps[] = $dep; 272 } 273 } 274 275 $script->deps = $valid_deps; 276 } 277 } 278 279 return $src; 280 } 281 323 282 } 324 283 325 284 DailySliderPlugin::instance(); 326 -
daily-slider/trunk/readme.txt
r3445413 r3465591 4 4 Requires at least: 5.0 5 5 Tested up to: 6.9 6 Stable tag: 2.7.06 Stable Tag: 2.8.0 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 127 127 == Changelog == 128 128 129 ### = 2.7.0 [23 January 2026] = 129 ### = 2.8.0 [20 Feb 2026] = 130 131 - Added **Image Marquee Widget** with smooth scrolling animations, customizable speed, direction, and pause-on-hover functionality. 132 133 ### = 2.7.0 [23rd January 2026] = 130 134 131 135 * Improved: Removed unnecessary code to improve performance and maintainability.
Note: See TracChangeset
for help on using the changeset viewer.