Plugin Directory

Changeset 3415985


Ignore:
Timestamp:
12/10/2025 04:56:56 AM (4 days ago)
Author:
coolplugins
Message:

Update to version 2.6.3 from GitHub

Location:
3r-elementor-timeline-widget
Files:
10 added
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • 3r-elementor-timeline-widget/tags/2.6.3/assets/css/style.css

    r3328809 r3415985  
    214214  align-items: center;
    215215}
     216
  • 3r-elementor-timeline-widget/tags/2.6.3/init.php

    r3407558 r3415985  
    11<?php
    2 
    32/*
    43 * Plugin Name: Vertical Timeline Widget for Elementor
    54 * Description: Vertical Timeline Widget for Elementor Plugin add timeline element to Elementor Page builder.
    65 * Plugin URI: https://wordpress.org/plugins/3r-elementor-timeline-widget
    7  * Version:2.6.2
     6 * Version:2.6.3
    87 * Requires at least: 5.2
    98 * Requires PHP:7.2
    109 * Author: Cool Plugins
     10* Author URI:  https://coolplugins.net/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    1111 * License:GPL v2 or later
    1212 * License URI:https://www.gnu.org/licenses/gpl-2.0.html
     
    1919define( 'TWE_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
    2020define( 'TWE_PLUGIN_PATH', plugin_dir_path(__FILE__));
    21 
    22 
    2321add_action( 'elementor/preview/enqueue_styles', 'twe_enqueue_style' );
    2422add_action('wp_enqueue_scripts', 'twe_enqueue_style');
     23add_action( 'elementor/editor/after_enqueue_styles', function() {
     24
     25    // Load your custom editor CSS
     26    wp_enqueue_style(
     27        'twe-editor-styles',
     28        TWE_PLUGIN_URL . 'assets/css/twe-editor.css',
     29        [],
     30          time()
     31    );
     32
     33});
     34add_action('elementor/editor/after_enqueue_scripts', function() {
     35    wp_enqueue_script(
     36        'twae-editor-js',
     37        TWE_PLUGIN_URL . 'assets/js/twe-editor.js',
     38        ['jquery'],
     39        time(),
     40        true
     41    );
     42
     43    wp_localize_script(
     44        'twae-editor-js',
     45        'twae_ajax_obj',
     46        [
     47            'ajax_url' => admin_url('admin-ajax.php'),
     48            'nonce'    => wp_create_nonce('twae_upgrade_notice_nonce'),
     49        ]
     50    );
     51});
     52
    2553
    2654function twe_enqueue_style() {
    2755    wp_enqueue_style( 'twe-preview', TWE_PLUGIN_URL  . 'assets/css/style.css', array());
    2856}
     57
    2958
    3059class TweTimelinePlugin {
     
    5584 
    5685TweTimelinePlugin::get_instance()->init();
     86
     87add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'twe_add_pro_link' );
     88function twe_add_pro_link( $links ) {
     89    $links[] = '<a style="font-weight:bold; color:#852636;" href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=plugins_list#pricing" target="_blank">Get Pro</a>';
     90    return $links;
     91}
     92add_filter( 'plugin_row_meta', 'twe_add_view_demo_row_meta', 10, 2 );
     93function twe_add_view_demo_row_meta( $links, $file ) {
     94    if ( $file === plugin_basename( __FILE__ ) ) {
     95        $demo_link = '<a href="https://cooltimeline.com/demo/elementor-timeline-widget/vertical-timeline-widget-for-elementor/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=demo&utm_content=plugins_list" target="_blank">View Demo</a>';
     96        array_splice( $links, count( $links ), 0, $demo_link );
     97    }
     98    return $links;
     99}
     100
     101/**
     102 * AJAX: Hide Upgrade Notice
     103 */
     104add_action( 'wp_ajax_twae_hide_upgrade_notice_editor', 'twae_hide_upgrade_notice_editor_callback' );
     105
     106function twae_hide_upgrade_notice_editor_callback() {
     107
     108    check_ajax_referer( 'twae_upgrade_notice_nonce', 'security' );
     109     
     110    update_option( 'twae_hide_upgrade_notice_editor', 'yes' );
     111
     112    wp_send_json_success([
     113        'message' => 'Upgrade notice dismissed'
     114    ]);
     115}
     116
  • 3r-elementor-timeline-widget/tags/2.6.3/readme.txt

    r3407558 r3415985  
    44Tags: Elementor, vertical-timeline, elementor-timeline, timeline, widget
    55Requires at least: 5.2
    6 Tested up to: 6.8.3
    7 Stable tag: 2.6.2
     6Tested up to: 6.9
     7Stable tag: 2.6.3
    88License: GPL v2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    3535
    3636== Changelog ==
     37
     38= 2.6.3 =
     39Release Date - 10 Dec , 2025*
     40* Added helpful timeline plugin recommendations to make it easier for users to discover related features.
    3741
    3842= 2.6.2 - 02 December 2025 =
  • 3r-elementor-timeline-widget/tags/2.6.3/timeline-widget.php

    r3404001 r3415985  
    9595            ]
    9696        );
     97        $repeater = new \Elementor\Repeater();
     98           
     99        $repeater->start_controls_tabs(
     100            'twae_story_tabs'
     101        );
     102
     103        // Story Tab - Content - START
     104        $repeater->start_controls_tab(
     105            'twe_content_tab',
     106            array(
     107                'label' => __( 'Content', '3r-elementor-timeline-widget' ),
     108            )
     109        );
     110
     111        // Story Year / Label Show/Hide
     112        $repeater->add_control(
     113            'twe_show_year_label',
     114            array(
     115                'label'        => __( 'Year / Label (Top) <a href="https://cooltimeline.com/demo/elementor-timeline-widget//?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=demo&utm_content=content_tab_settings" target="_blank" style=" pointer-events: all; color:  #EDACFB;">(Demo ⇗)</a>', '3r-elementor-timeline-widget' ),
     116                'type'         => \Elementor\Controls_Manager::SWITCHER,
     117                'label_on'     => __( 'Show', 'twae' ),
     118                'label_off'    => __( 'Hide', 'twae' ),
     119                'return_value' => 'yes',
     120                'default'      => 'no',
     121
     122            )
     123        );
    97124   
    98125
    99         $repeater = new \Elementor\Repeater();
     126        // Story Label / Date
     127        $repeater->add_control(
     128            'twe_date_label',
     129            array(
     130                'label'   => __( 'Label / Date', '3r-elementor-timeline-widget' ),
     131                'type'    => \Elementor\Controls_Manager::TEXT,
     132                'default' => 'Jan 2020',
     133            )
     134        );
     135   
     136
     137                // Story Media
     138        $repeater->add_control(
     139            'twe_media',
     140            array(
     141                'label'     => __( 'Add Video/Slideshow', '3r-elementor-timeline-widget' ),
     142                'type'      => \Elementor\Controls_Manager::CHOOSE,
     143                'options'   => array(
     144                    'video'     => array(
     145                        'title' => __( 'Video', '3r-elementor-timeline-widget' ),
     146                        'icon'  => 'fa fa-video',
     147                    ),
     148                    'slideshow' => array(
     149                        'title' => __( 'Slideshow', '3r-elementor-timeline-widget' ),
     150                        'icon'  => 'fa fa-images',
     151                    ),
     152                ),
     153                'default'   => 'image',
     154                'toggle'    => true,
     155            )
     156        );
     157
     158            $repeater->add_control(
     159                'twe_label_upgrade_button',
     160                [
     161                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     162                    'raw'  => '
     163                        <div class="twae-upgrade-content-notice">
     164                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=content_tab_settings#pricing"
     165                            target="_blank"
     166                            class="twae-upgrade-link">
     167                                UPGRADE TO PRO 💎
     168                            </a>
     169                        </div>
     170                    ',
     171                    'content_classes' => 'twae-upgrade-container',
     172                ]
     173            );
    100174       
    101175        $repeater->add_control(
     
    134208            ]
    135209        );
    136 
     210    $repeater->end_controls_tab();
     211        $repeater->start_controls_tab(
     212                'twe_advanced_tab',
     213                array(
     214                    'label' => __( 'Advanced', '3r-elementor-timeline-widget' ),
     215                )
     216            );
     217                $repeater->add_control(
     218                'twe_color_upgrade_button',
     219                [
     220                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     221                    'raw'  => '
     222                        <div class="twae-upgrade-color-notice">
     223                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=advanced_tab_settings#pricing"
     224                            target="_blank"
     225                            class="twae-upgrade-link">
     226                                UPGRADE TO PRO 💎
     227                            </a>
     228                        </div>
     229                    ',
     230                    'content_classes' => 'twae-upgrade-container',
     231                ]
     232            );
     233   
     234
     235        // Story Box Background
     236        $repeater->add_control(
     237            'twe_custom_story_bgcolor',
     238            array(
     239                'label'       => __( 'Background Color', '3r-elementor-timeline-widget' ),
     240                'type'        => \Elementor\Controls_Manager::COLOR,
     241                'render_type' => 'template',
     242                'selectors'   => array(
     243                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-bg: {{VALUE}};
     244                    --tw-cbx-bg-gradient: {{VALUE}};
     245                    --tw-arw-bg: {{VALUE}};',
     246                ),
     247            )
     248        );
     249        // Story Box Border Color
     250        $repeater->add_control(
     251            'twe_custom_story_bdcolor',
     252            array(
     253                'label'     => esc_html__( 'Border Color', '3r-elementor-timeline-widget' ),
     254                'type'      => \Elementor\Controls_Manager::COLOR,
     255                'selectors' => array(
     256                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-bd-color: {{VALUE}};
     257                    --tw-cbx-bd-color: {{VALUE}};
     258                    --tw-arw-bd-color: {{VALUE}};',
     259                ),
     260            )
     261        );
     262        // Story Title Color
     263        $repeater->add_control(
     264            'twe_custom_story_title_color',
     265            array(
     266                'label'     => __( 'Title Color', '3r-elementor-timeline-widget' ),
     267                'type'      => \Elementor\Controls_Manager::COLOR,
     268                'selectors' => array(
     269                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-title-color: {{VALUE}}',
     270                ),
     271            )
     272        );
     273   
     274        // Story Description Color
     275        $repeater->add_control(
     276            'twe_custom_description_color',
     277            array(
     278                'label'     => __( 'Description Color', '3r-elementor-timeline-widget' ),
     279                'type'      => \Elementor\Controls_Manager::COLOR,
     280                'selectors' => array(
     281                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-des-color: {{VALUE}}',
     282                ),
     283            )
     284        );
     285
     286                $repeater->add_control(
     287                'twe_add_icon_on_line',
     288                [
     289                    'label'        => __( 'Add Icon on Line', '3r-elementor-timeline-widget' ),
     290                    'type'         => \Elementor\Controls_Manager::SWITCHER,
     291                    'label_on'     => __( 'Yes', '3r-elementor-timeline-widget' ),
     292                    'label_off'    => __( 'No', '3r-elementor-timeline-widget' ),
     293                    'return_value' => 'yes',
     294                    'default'      => 'no',
     295                ]
     296            );
     297 
     298        // Story Read More Show/Hide
     299        $repeater->add_control(
     300            'twe_title_link',
     301            array(
     302                'label'        => __( 'Read More Button', '3r-elementor-timeline-widget' ),
     303                'type'         => \Elementor\Controls_Manager::SWITCHER,
     304                'label_on'     => __( 'Show', 'twae' ),
     305                'label_off'    => __( 'Hide', 'twae' ),
     306                'return_value' => 'yes',
     307                'default'      => 'no',
     308            )
     309        );
     310
     311        $repeater->end_controls_tab();
     312        $repeater->end_controls_tabs();
    137313        $this->add_control(
    138314            'list',
     
    153329            ]
    154330        );
    155    
    156     $this->end_controls_section();
     331         
     332             
     333           
     334           
     335               
     336        if ( !file_exists( WP_PLUGIN_DIR . '/timeline-widget-addon-for-elementor-pro/timeline-widget-addon-pro-for-elementor.php' )){
     337                if ( get_option( 'twae_hide_upgrade_notice_editor' ) !== 'yes' ) {
     338                $this->add_control(
     339                    'twae_upgrade_notice',
     340                    [
     341                        'type' => \Elementor\Controls_Manager::RAW_HTML,
     342                        'raw'  => '<div class="elementor-control-raw-html">
     343                            <div class="elementor-control-notice elementor-control-notice-type-info twae-upgrade-pro-notice" style="position: relative;">
     344                                <button type="button" class="elementor-control-notice-dismiss twae_hide_upgrade_notice_editor" style="position: absolute; top: 5px; right: 5px; z-index: 10;">
     345                                    <i class="eicon-close"></i>
     346                                </button>
     347                                <div class="elementor-control-notice-icon">
     348                                    <img class="twae-highlight-icon" src="'.esc_url( TWE_PLUGIN_URL . 'assets/images/twae-highlight-icon.svg' ).'" width="250" alt="Highlight Icon" style="filter: brightness(0) saturate(100%) invert(32%) sepia(84%) saturate(627%) hue-rotate(190deg) brightness(92%) contrast(92%);" />
     349                                </div>
     350                                <div class="elementor-control-notice-main">
     351                                    <div class="elementor-control-notice-main-content">
     352                                        Want more advanced features? Upgrade to the Pro version.
     353                                    </div>
     354                                    <div class="elementor-control-notice-main-actions">
     355                                        <a class="elementor-button e-btn e-info e-btn-1" style="color:white;"
     356                                        href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=content_tab_settings#pricing"
     357                                        target="_blank">
     358                                            Get Pro
     359                                        </a>
     360                                    </div>
     361                                </div>
     362                            </div>
     363                        </div>',
     364                        'content_classes' => 'twae-upgrade-box',
     365                    ]
     366                );
     367            }
     368    }
     369
     370        if ( defined( 'TWAE_PRO_VERSION' ) || defined( 'TWAE_VERSION' ) ) {
     371            if (get_option('twe_hide_migration_notice') !== 'yes' ) {
     372
     373                $this->add_control(
     374                    'twae_migrate_notice',
     375                    [
     376                        'type' => \Elementor\Controls_Manager::RAW_HTML,
     377                        'raw'  => '<div class="elementor-control-raw-html">
     378                            <div class="elementor-control-notice elementor-control-notice-type-info twae-migration-notice" style="position: relative;">
     379                                <button type="button" class="elementor-control-notice-dismiss twae_hide_migration_notice_editor" style="position: absolute; top: 5px; right: 5px; z-index: 10;">
     380                                    <i class="eicon-close"></i>
     381                                </button>
     382                                <div class="elementor-control-notice-icon">
     383                                    <img class="twae-highlight-icon" src="'.esc_url( TWE_PLUGIN_URL . 'assets/images/twae-highlight-icon.svg' ).'" width="250" alt="Highlight Icon" style="filter: brightness(0) saturate(100%) invert(32%) sepia(84%) saturate(627%) hue-rotate(190deg) brightness(92%) contrast(92%);" />
     384                                </div>
     385                                <div class="elementor-control-notice-main">
     386                                    <div class="elementor-control-notice-main-content">
     387                                        Do you want to migrate this timeline into Timeline Widget Pro to use the advanced features?
     388                                    </div>
     389                                    <div class="elementor-control-notice-main-actions">
     390                                        <button type="button" class="elementor-button e-btn e-info e-btn-1" id="twae-run-migration">Migrate Now</button>
     391                                    </div>
     392                                </div>
     393                            </div>
     394                        </div>',
     395                        'content_classes' => 'twae-migrate-box',
     396                    ]
     397                );
     398            }
     399        }
     400       
     401      $this->end_controls_section();
     402       
     403      $this->start_controls_section(
     404            'twe_layout_section',
     405            array(
     406                'label' => __( 'Layout Settings', '3r-elementor-timeline-widget' ),
     407                'tab'   => \Elementor\Controls_Manager::TAB_CONTENT,
     408            )
     409        );
     410        // Select Layout
     411        $this->add_control(
     412            'twe_layout',
     413            array(
     414                'label'   => __( 'Layout', '3r-elementor-timeline-widget' ),
     415                'type'    => \Elementor\Controls_Manager::SELECT,
     416                'default' => 'centered',
     417                'options' => array(
     418                    'centered'               => 'Vertical Right / Left (Free)',
     419                    'one-sided'              => 'Vertical Right Only(Pro)',
     420                    'left-sided'             => 'Vertical Left Only(Pro)',
     421                    'compact'                => 'Vertical Compact(Pro)',
     422                    'modern'                    => 'Vertical Tab(Pro)',
     423                    'horizontal'             => 'Horizontal Top(Pro)',
     424                    'horizontal-bottom'      => 'Horizontal Bottom(Pro)',
     425                    'horizontal-highlighted' => 'Horizontal Highlighted(Pro)',
     426                ),
     427            )
     428        );
     429
     430   
     431        // Story Content Alignment
     432        $this->add_control(
     433            'twe_content_alignment',
     434            array(
     435                'label'     => esc_html__( 'Content Alignment', '3r-elementor-timeline-widget' ),
     436                'type'      => \Elementor\Controls_Manager::CHOOSE,
     437                'separator' => 'before',
     438                'options'   => array(
     439                    'left'   => array(
     440                        'title' => esc_html__( 'Left', '3r-elementor-timeline-widget' ),
     441                        'icon'  => 'eicon-text-align-left',
     442                    ),
     443                    'center' => array(
     444                        'title' => esc_html__( 'Center', '3r-elementor-timeline-widget' ),
     445                        'icon'  => 'eicon-text-align-center',
     446                    ),
     447                    'right'  => array(
     448                        'title' => esc_html__( 'Right', '3r-elementor-timeline-widget' ),
     449                        'icon'  => 'eicon-text-align-right',
     450                    ),
     451                ),
     452                'toggle'    => true,
     453                'selectors' => array(
     454                    '{{WRAPPER}} .twae-wrapper' => '--tw-cbx-text-align: {{VALUE}};',
     455                ),
     456            )
     457        );
     458
     459            $this->add_control(
     460            'twe_display_icons',
     461            array(
     462                'label'   => esc_html__( 'Display Icons', '3r-elementor-timeline-widget' ),
     463                'type'    => \Elementor\Controls_Manager::CHOOSE,
     464                'options' => array(
     465                    'displayicons' => array(
     466                        'title' => esc_html__( 'Icons', '3r-elementor-timeline-widget' ),
     467                        'icon'  => 'eicon-clock',
     468                    ),
     469                    'displaydots'  => array(
     470                        'title' => esc_html__( 'Dots', '3r-elementor-timeline-widget' ),
     471                        'icon'  => 'eicon-circle',
     472               
     473                    ),
     474                    'displaynone'  => array(
     475                        'title' => esc_html__( 'None', '3r-elementor-timeline-widget' ),
     476                        'icon'  => 'eicon-ban',
     477                    ),
     478                ),
     479                'default' => 'displayicons',
     480                'toggle'  => false,
     481               
     482            )
     483        );
     484        $this->add_control(
     485            'twe_animation',
     486            array(
     487                'label'     => __( 'Animations', '3r-elementor-timeline-widget' ),
     488                'type'      => \Elementor\Controls_Manager::SELECT,
     489                'default'   => 'fade',
     490                'options' => array(
     491                    'none'            => 'none',
     492                    'fade'            => 'fade',
     493                    'zoom-in'         => 'zoom-in',
     494                    'flip-right'      => 'flip-right',
     495                    'zoom-out'        => 'zoom-out',
     496                    'fade-up'         => 'fade-up',
     497                    'fade-down'       => 'fade-down',
     498                ),
     499               
     500            )
     501        );
     502            $this->add_control(
     503                'twe_upgrade_button_layout_section',
     504                [
     505                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     506                    'raw'  => '
     507                        <div class="twe-upgrade-button-notice-layout-section">
     508                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=layout_tab_settings#pricing"
     509                            target="_blank"
     510                            class="twae-upgrade-link">
     511                                UPGRADE TO PRO 💎
     512                            </a>
     513                        </div>
     514                    ',
     515                    'content_classes' => 'twae-upgrade-container',
     516                ]
     517            );
     518        $this->end_controls_section();
     519
    157520    /*------- BoxStyle ------------*/
    158521    $this->start_controls_section(
  • 3r-elementor-timeline-widget/trunk/assets/css/style.css

    r3328809 r3415985  
    214214  align-items: center;
    215215}
     216
  • 3r-elementor-timeline-widget/trunk/init.php

    r3407558 r3415985  
    11<?php
    2 
    32/*
    43 * Plugin Name: Vertical Timeline Widget for Elementor
    54 * Description: Vertical Timeline Widget for Elementor Plugin add timeline element to Elementor Page builder.
    65 * Plugin URI: https://wordpress.org/plugins/3r-elementor-timeline-widget
    7  * Version:2.6.2
     6 * Version:2.6.3
    87 * Requires at least: 5.2
    98 * Requires PHP:7.2
    109 * Author: Cool Plugins
     10* Author URI:  https://coolplugins.net/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=author_page&utm_content=plugins_list
    1111 * License:GPL v2 or later
    1212 * License URI:https://www.gnu.org/licenses/gpl-2.0.html
     
    1919define( 'TWE_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
    2020define( 'TWE_PLUGIN_PATH', plugin_dir_path(__FILE__));
    21 
    22 
    2321add_action( 'elementor/preview/enqueue_styles', 'twe_enqueue_style' );
    2422add_action('wp_enqueue_scripts', 'twe_enqueue_style');
     23add_action( 'elementor/editor/after_enqueue_styles', function() {
     24
     25    // Load your custom editor CSS
     26    wp_enqueue_style(
     27        'twe-editor-styles',
     28        TWE_PLUGIN_URL . 'assets/css/twe-editor.css',
     29        [],
     30          time()
     31    );
     32
     33});
     34add_action('elementor/editor/after_enqueue_scripts', function() {
     35    wp_enqueue_script(
     36        'twae-editor-js',
     37        TWE_PLUGIN_URL . 'assets/js/twe-editor.js',
     38        ['jquery'],
     39        time(),
     40        true
     41    );
     42
     43    wp_localize_script(
     44        'twae-editor-js',
     45        'twae_ajax_obj',
     46        [
     47            'ajax_url' => admin_url('admin-ajax.php'),
     48            'nonce'    => wp_create_nonce('twae_upgrade_notice_nonce'),
     49        ]
     50    );
     51});
     52
    2553
    2654function twe_enqueue_style() {
    2755    wp_enqueue_style( 'twe-preview', TWE_PLUGIN_URL  . 'assets/css/style.css', array());
    2856}
     57
    2958
    3059class TweTimelinePlugin {
     
    5584 
    5685TweTimelinePlugin::get_instance()->init();
     86
     87add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'twe_add_pro_link' );
     88function twe_add_pro_link( $links ) {
     89    $links[] = '<a style="font-weight:bold; color:#852636;" href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=plugins_list#pricing" target="_blank">Get Pro</a>';
     90    return $links;
     91}
     92add_filter( 'plugin_row_meta', 'twe_add_view_demo_row_meta', 10, 2 );
     93function twe_add_view_demo_row_meta( $links, $file ) {
     94    if ( $file === plugin_basename( __FILE__ ) ) {
     95        $demo_link = '<a href="https://cooltimeline.com/demo/elementor-timeline-widget/vertical-timeline-widget-for-elementor/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=demo&utm_content=plugins_list" target="_blank">View Demo</a>';
     96        array_splice( $links, count( $links ), 0, $demo_link );
     97    }
     98    return $links;
     99}
     100
     101/**
     102 * AJAX: Hide Upgrade Notice
     103 */
     104add_action( 'wp_ajax_twae_hide_upgrade_notice_editor', 'twae_hide_upgrade_notice_editor_callback' );
     105
     106function twae_hide_upgrade_notice_editor_callback() {
     107
     108    check_ajax_referer( 'twae_upgrade_notice_nonce', 'security' );
     109     
     110    update_option( 'twae_hide_upgrade_notice_editor', 'yes' );
     111
     112    wp_send_json_success([
     113        'message' => 'Upgrade notice dismissed'
     114    ]);
     115}
     116
  • 3r-elementor-timeline-widget/trunk/readme.txt

    r3407558 r3415985  
    44Tags: Elementor, vertical-timeline, elementor-timeline, timeline, widget
    55Requires at least: 5.2
    6 Tested up to: 6.8.3
    7 Stable tag: 2.6.2
     6Tested up to: 6.9
     7Stable tag: 2.6.3
    88License: GPL v2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    3535
    3636== Changelog ==
     37
     38= 2.6.3 =
     39Release Date - 10 Dec , 2025*
     40* Added helpful timeline plugin recommendations to make it easier for users to discover related features.
    3741
    3842= 2.6.2 - 02 December 2025 =
  • 3r-elementor-timeline-widget/trunk/timeline-widget.php

    r3404001 r3415985  
    9595            ]
    9696        );
     97        $repeater = new \Elementor\Repeater();
     98           
     99        $repeater->start_controls_tabs(
     100            'twae_story_tabs'
     101        );
     102
     103        // Story Tab - Content - START
     104        $repeater->start_controls_tab(
     105            'twe_content_tab',
     106            array(
     107                'label' => __( 'Content', '3r-elementor-timeline-widget' ),
     108            )
     109        );
     110
     111        // Story Year / Label Show/Hide
     112        $repeater->add_control(
     113            'twe_show_year_label',
     114            array(
     115                'label'        => __( 'Year / Label (Top) <a href="https://cooltimeline.com/demo/elementor-timeline-widget//?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=demo&utm_content=content_tab_settings" target="_blank" style=" pointer-events: all; color:  #EDACFB;">(Demo ⇗)</a>', '3r-elementor-timeline-widget' ),
     116                'type'         => \Elementor\Controls_Manager::SWITCHER,
     117                'label_on'     => __( 'Show', 'twae' ),
     118                'label_off'    => __( 'Hide', 'twae' ),
     119                'return_value' => 'yes',
     120                'default'      => 'no',
     121
     122            )
     123        );
    97124   
    98125
    99         $repeater = new \Elementor\Repeater();
     126        // Story Label / Date
     127        $repeater->add_control(
     128            'twe_date_label',
     129            array(
     130                'label'   => __( 'Label / Date', '3r-elementor-timeline-widget' ),
     131                'type'    => \Elementor\Controls_Manager::TEXT,
     132                'default' => 'Jan 2020',
     133            )
     134        );
     135   
     136
     137                // Story Media
     138        $repeater->add_control(
     139            'twe_media',
     140            array(
     141                'label'     => __( 'Add Video/Slideshow', '3r-elementor-timeline-widget' ),
     142                'type'      => \Elementor\Controls_Manager::CHOOSE,
     143                'options'   => array(
     144                    'video'     => array(
     145                        'title' => __( 'Video', '3r-elementor-timeline-widget' ),
     146                        'icon'  => 'fa fa-video',
     147                    ),
     148                    'slideshow' => array(
     149                        'title' => __( 'Slideshow', '3r-elementor-timeline-widget' ),
     150                        'icon'  => 'fa fa-images',
     151                    ),
     152                ),
     153                'default'   => 'image',
     154                'toggle'    => true,
     155            )
     156        );
     157
     158            $repeater->add_control(
     159                'twe_label_upgrade_button',
     160                [
     161                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     162                    'raw'  => '
     163                        <div class="twae-upgrade-content-notice">
     164                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=content_tab_settings#pricing"
     165                            target="_blank"
     166                            class="twae-upgrade-link">
     167                                UPGRADE TO PRO 💎
     168                            </a>
     169                        </div>
     170                    ',
     171                    'content_classes' => 'twae-upgrade-container',
     172                ]
     173            );
    100174       
    101175        $repeater->add_control(
     
    134208            ]
    135209        );
    136 
     210    $repeater->end_controls_tab();
     211        $repeater->start_controls_tab(
     212                'twe_advanced_tab',
     213                array(
     214                    'label' => __( 'Advanced', '3r-elementor-timeline-widget' ),
     215                )
     216            );
     217                $repeater->add_control(
     218                'twe_color_upgrade_button',
     219                [
     220                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     221                    'raw'  => '
     222                        <div class="twae-upgrade-color-notice">
     223                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=advanced_tab_settings#pricing"
     224                            target="_blank"
     225                            class="twae-upgrade-link">
     226                                UPGRADE TO PRO 💎
     227                            </a>
     228                        </div>
     229                    ',
     230                    'content_classes' => 'twae-upgrade-container',
     231                ]
     232            );
     233   
     234
     235        // Story Box Background
     236        $repeater->add_control(
     237            'twe_custom_story_bgcolor',
     238            array(
     239                'label'       => __( 'Background Color', '3r-elementor-timeline-widget' ),
     240                'type'        => \Elementor\Controls_Manager::COLOR,
     241                'render_type' => 'template',
     242                'selectors'   => array(
     243                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-bg: {{VALUE}};
     244                    --tw-cbx-bg-gradient: {{VALUE}};
     245                    --tw-arw-bg: {{VALUE}};',
     246                ),
     247            )
     248        );
     249        // Story Box Border Color
     250        $repeater->add_control(
     251            'twe_custom_story_bdcolor',
     252            array(
     253                'label'     => esc_html__( 'Border Color', '3r-elementor-timeline-widget' ),
     254                'type'      => \Elementor\Controls_Manager::COLOR,
     255                'selectors' => array(
     256                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-bd-color: {{VALUE}};
     257                    --tw-cbx-bd-color: {{VALUE}};
     258                    --tw-arw-bd-color: {{VALUE}};',
     259                ),
     260            )
     261        );
     262        // Story Title Color
     263        $repeater->add_control(
     264            'twe_custom_story_title_color',
     265            array(
     266                'label'     => __( 'Title Color', '3r-elementor-timeline-widget' ),
     267                'type'      => \Elementor\Controls_Manager::COLOR,
     268                'selectors' => array(
     269                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-title-color: {{VALUE}}',
     270                ),
     271            )
     272        );
     273   
     274        // Story Description Color
     275        $repeater->add_control(
     276            'twe_custom_description_color',
     277            array(
     278                'label'     => __( 'Description Color', '3r-elementor-timeline-widget' ),
     279                'type'      => \Elementor\Controls_Manager::COLOR,
     280                'selectors' => array(
     281                    '{{WRAPPER}} .twae-wrapper {{CURRENT_ITEM}}' => '--tw-cbx-des-color: {{VALUE}}',
     282                ),
     283            )
     284        );
     285
     286                $repeater->add_control(
     287                'twe_add_icon_on_line',
     288                [
     289                    'label'        => __( 'Add Icon on Line', '3r-elementor-timeline-widget' ),
     290                    'type'         => \Elementor\Controls_Manager::SWITCHER,
     291                    'label_on'     => __( 'Yes', '3r-elementor-timeline-widget' ),
     292                    'label_off'    => __( 'No', '3r-elementor-timeline-widget' ),
     293                    'return_value' => 'yes',
     294                    'default'      => 'no',
     295                ]
     296            );
     297 
     298        // Story Read More Show/Hide
     299        $repeater->add_control(
     300            'twe_title_link',
     301            array(
     302                'label'        => __( 'Read More Button', '3r-elementor-timeline-widget' ),
     303                'type'         => \Elementor\Controls_Manager::SWITCHER,
     304                'label_on'     => __( 'Show', 'twae' ),
     305                'label_off'    => __( 'Hide', 'twae' ),
     306                'return_value' => 'yes',
     307                'default'      => 'no',
     308            )
     309        );
     310
     311        $repeater->end_controls_tab();
     312        $repeater->end_controls_tabs();
    137313        $this->add_control(
    138314            'list',
     
    153329            ]
    154330        );
    155    
    156     $this->end_controls_section();
     331         
     332             
     333           
     334           
     335               
     336        if ( !file_exists( WP_PLUGIN_DIR . '/timeline-widget-addon-for-elementor-pro/timeline-widget-addon-pro-for-elementor.php' )){
     337                if ( get_option( 'twae_hide_upgrade_notice_editor' ) !== 'yes' ) {
     338                $this->add_control(
     339                    'twae_upgrade_notice',
     340                    [
     341                        'type' => \Elementor\Controls_Manager::RAW_HTML,
     342                        'raw'  => '<div class="elementor-control-raw-html">
     343                            <div class="elementor-control-notice elementor-control-notice-type-info twae-upgrade-pro-notice" style="position: relative;">
     344                                <button type="button" class="elementor-control-notice-dismiss twae_hide_upgrade_notice_editor" style="position: absolute; top: 5px; right: 5px; z-index: 10;">
     345                                    <i class="eicon-close"></i>
     346                                </button>
     347                                <div class="elementor-control-notice-icon">
     348                                    <img class="twae-highlight-icon" src="'.esc_url( TWE_PLUGIN_URL . 'assets/images/twae-highlight-icon.svg' ).'" width="250" alt="Highlight Icon" style="filter: brightness(0) saturate(100%) invert(32%) sepia(84%) saturate(627%) hue-rotate(190deg) brightness(92%) contrast(92%);" />
     349                                </div>
     350                                <div class="elementor-control-notice-main">
     351                                    <div class="elementor-control-notice-main-content">
     352                                        Want more advanced features? Upgrade to the Pro version.
     353                                    </div>
     354                                    <div class="elementor-control-notice-main-actions">
     355                                        <a class="elementor-button e-btn e-info e-btn-1" style="color:white;"
     356                                        href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=content_tab_settings#pricing"
     357                                        target="_blank">
     358                                            Get Pro
     359                                        </a>
     360                                    </div>
     361                                </div>
     362                            </div>
     363                        </div>',
     364                        'content_classes' => 'twae-upgrade-box',
     365                    ]
     366                );
     367            }
     368    }
     369
     370        if ( defined( 'TWAE_PRO_VERSION' ) || defined( 'TWAE_VERSION' ) ) {
     371            if (get_option('twe_hide_migration_notice') !== 'yes' ) {
     372
     373                $this->add_control(
     374                    'twae_migrate_notice',
     375                    [
     376                        'type' => \Elementor\Controls_Manager::RAW_HTML,
     377                        'raw'  => '<div class="elementor-control-raw-html">
     378                            <div class="elementor-control-notice elementor-control-notice-type-info twae-migration-notice" style="position: relative;">
     379                                <button type="button" class="elementor-control-notice-dismiss twae_hide_migration_notice_editor" style="position: absolute; top: 5px; right: 5px; z-index: 10;">
     380                                    <i class="eicon-close"></i>
     381                                </button>
     382                                <div class="elementor-control-notice-icon">
     383                                    <img class="twae-highlight-icon" src="'.esc_url( TWE_PLUGIN_URL . 'assets/images/twae-highlight-icon.svg' ).'" width="250" alt="Highlight Icon" style="filter: brightness(0) saturate(100%) invert(32%) sepia(84%) saturate(627%) hue-rotate(190deg) brightness(92%) contrast(92%);" />
     384                                </div>
     385                                <div class="elementor-control-notice-main">
     386                                    <div class="elementor-control-notice-main-content">
     387                                        Do you want to migrate this timeline into Timeline Widget Pro to use the advanced features?
     388                                    </div>
     389                                    <div class="elementor-control-notice-main-actions">
     390                                        <button type="button" class="elementor-button e-btn e-info e-btn-1" id="twae-run-migration">Migrate Now</button>
     391                                    </div>
     392                                </div>
     393                            </div>
     394                        </div>',
     395                        'content_classes' => 'twae-migrate-box',
     396                    ]
     397                );
     398            }
     399        }
     400       
     401      $this->end_controls_section();
     402       
     403      $this->start_controls_section(
     404            'twe_layout_section',
     405            array(
     406                'label' => __( 'Layout Settings', '3r-elementor-timeline-widget' ),
     407                'tab'   => \Elementor\Controls_Manager::TAB_CONTENT,
     408            )
     409        );
     410        // Select Layout
     411        $this->add_control(
     412            'twe_layout',
     413            array(
     414                'label'   => __( 'Layout', '3r-elementor-timeline-widget' ),
     415                'type'    => \Elementor\Controls_Manager::SELECT,
     416                'default' => 'centered',
     417                'options' => array(
     418                    'centered'               => 'Vertical Right / Left (Free)',
     419                    'one-sided'              => 'Vertical Right Only(Pro)',
     420                    'left-sided'             => 'Vertical Left Only(Pro)',
     421                    'compact'                => 'Vertical Compact(Pro)',
     422                    'modern'                    => 'Vertical Tab(Pro)',
     423                    'horizontal'             => 'Horizontal Top(Pro)',
     424                    'horizontal-bottom'      => 'Horizontal Bottom(Pro)',
     425                    'horizontal-highlighted' => 'Horizontal Highlighted(Pro)',
     426                ),
     427            )
     428        );
     429
     430   
     431        // Story Content Alignment
     432        $this->add_control(
     433            'twe_content_alignment',
     434            array(
     435                'label'     => esc_html__( 'Content Alignment', '3r-elementor-timeline-widget' ),
     436                'type'      => \Elementor\Controls_Manager::CHOOSE,
     437                'separator' => 'before',
     438                'options'   => array(
     439                    'left'   => array(
     440                        'title' => esc_html__( 'Left', '3r-elementor-timeline-widget' ),
     441                        'icon'  => 'eicon-text-align-left',
     442                    ),
     443                    'center' => array(
     444                        'title' => esc_html__( 'Center', '3r-elementor-timeline-widget' ),
     445                        'icon'  => 'eicon-text-align-center',
     446                    ),
     447                    'right'  => array(
     448                        'title' => esc_html__( 'Right', '3r-elementor-timeline-widget' ),
     449                        'icon'  => 'eicon-text-align-right',
     450                    ),
     451                ),
     452                'toggle'    => true,
     453                'selectors' => array(
     454                    '{{WRAPPER}} .twae-wrapper' => '--tw-cbx-text-align: {{VALUE}};',
     455                ),
     456            )
     457        );
     458
     459            $this->add_control(
     460            'twe_display_icons',
     461            array(
     462                'label'   => esc_html__( 'Display Icons', '3r-elementor-timeline-widget' ),
     463                'type'    => \Elementor\Controls_Manager::CHOOSE,
     464                'options' => array(
     465                    'displayicons' => array(
     466                        'title' => esc_html__( 'Icons', '3r-elementor-timeline-widget' ),
     467                        'icon'  => 'eicon-clock',
     468                    ),
     469                    'displaydots'  => array(
     470                        'title' => esc_html__( 'Dots', '3r-elementor-timeline-widget' ),
     471                        'icon'  => 'eicon-circle',
     472               
     473                    ),
     474                    'displaynone'  => array(
     475                        'title' => esc_html__( 'None', '3r-elementor-timeline-widget' ),
     476                        'icon'  => 'eicon-ban',
     477                    ),
     478                ),
     479                'default' => 'displayicons',
     480                'toggle'  => false,
     481               
     482            )
     483        );
     484        $this->add_control(
     485            'twe_animation',
     486            array(
     487                'label'     => __( 'Animations', '3r-elementor-timeline-widget' ),
     488                'type'      => \Elementor\Controls_Manager::SELECT,
     489                'default'   => 'fade',
     490                'options' => array(
     491                    'none'            => 'none',
     492                    'fade'            => 'fade',
     493                    'zoom-in'         => 'zoom-in',
     494                    'flip-right'      => 'flip-right',
     495                    'zoom-out'        => 'zoom-out',
     496                    'fade-up'         => 'fade-up',
     497                    'fade-down'       => 'fade-down',
     498                ),
     499               
     500            )
     501        );
     502            $this->add_control(
     503                'twe_upgrade_button_layout_section',
     504                [
     505                    'type' => \Elementor\Controls_Manager::RAW_HTML,
     506                    'raw'  => '
     507                        <div class="twe-upgrade-button-notice-layout-section">
     508                            <a href="https://cooltimeline.com/plugin/elementor-timeline-widget-pro/?utm_source=vtwe_plugin&utm_medium=inside&utm_campaign=get_pro&utm_content=layout_tab_settings#pricing"
     509                            target="_blank"
     510                            class="twae-upgrade-link">
     511                                UPGRADE TO PRO 💎
     512                            </a>
     513                        </div>
     514                    ',
     515                    'content_classes' => 'twae-upgrade-container',
     516                ]
     517            );
     518        $this->end_controls_section();
     519
    157520    /*------- BoxStyle ------------*/
    158521    $this->start_controls_section(
Note: See TracChangeset for help on using the changeset viewer.