8889841ctiming.php000064400000016735150513460140006557 0ustar00start_controls_section( 'timing' ); $this->start_settings_group( 'page_views', esc_html__( 'Show after X page views', 'elementor-pro' ) ); $this->add_settings_group_control( 'views', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Page Views', 'elementor-pro' ), 'default' => 3, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'sessions', esc_html__( 'Show after X sessions', 'elementor-pro' ) ); $this->add_settings_group_control( 'sessions', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Sessions', 'elementor-pro' ), 'default' => 2, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'times', esc_html__( 'Show up to X times', 'elementor-pro' ) ); $this->add_settings_group_control( 'times', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Times', 'elementor-pro' ), 'default' => 3, 'min' => 1, ] ); $this->add_settings_group_control( 'period', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Per', 'elementor-pro' ), 'default' => '', // Backward Compatibility - Persisting is old default value. 'options' => [ '' => esc_html__( 'Persisting', 'elementor-pro' ), 'session' => esc_html__( 'Session', 'elementor-pro' ), 'day' => esc_html__( 'Day', 'elementor-pro' ), 'week' => esc_html__( 'Week', 'elementor-pro' ), 'month' => esc_html__( 'Month', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'count', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Count', 'elementor-pro' ), 'options' => [ '' => esc_html__( 'On Open', 'elementor-pro' ), 'close' => esc_html__( 'On Close', 'elementor-pro' ), ], ] ); $this->end_settings_group(); $this->start_settings_group( 'url', esc_html__( 'When arriving from specific URL', 'elementor-pro' ) ); $this->add_settings_group_control( 'action', [ 'type' => Controls_Manager::SELECT, 'default' => 'show', 'options' => [ 'show' => esc_html__( 'Show', 'elementor-pro' ), 'hide' => esc_html__( 'Hide', 'elementor-pro' ), 'regex' => esc_html__( 'Regex', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'url', [ 'type' => Controls_Manager::TEXT, 'placeholder' => esc_html__( 'URL', 'elementor-pro' ), ] ); $this->end_settings_group(); $this->start_settings_group( 'sources', esc_html__( 'Show when arriving from', 'elementor-pro' ) ); $this->add_settings_group_control( 'sources', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [ 'search', 'external', 'internal' ], 'options' => [ 'search' => esc_html__( 'Search Engines', 'elementor-pro' ), 'external' => esc_html__( 'External Links', 'elementor-pro' ), 'internal' => esc_html__( 'Internal Links', 'elementor-pro' ), ], ] ); $this->end_settings_group(); $this->start_settings_group( 'logged_in', esc_html__( 'Hide for logged in users', 'elementor-pro' ) ); $this->add_settings_group_control( 'users', [ 'type' => Controls_Manager::SELECT, 'default' => 'all', 'options' => [ 'all' => esc_html__( 'All Users', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], ] ); global $wp_roles; $roles = array_map( function( $role ) { return $role['name']; }, $wp_roles->roles ); $this->add_settings_group_control( 'roles', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [], 'options' => $roles, 'select2options' => [ 'placeholder' => esc_html__( 'Select Roles', 'elementor-pro' ), ], 'condition' => [ 'users' => 'custom', ], ] ); $this->end_settings_group(); $available_devices = [ 'desktop' => esc_html__( 'Desktop', 'elementor-pro' ), ]; $default_devices = [ 'desktop' ]; $active_breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints(); foreach ( $active_breakpoints as $breakpoint_key => $breakpoint ) { $available_devices[ $breakpoint_key ] = $breakpoint->get_label(); $default_devices[] = $breakpoint_key; } $this->start_settings_group( 'devices', esc_html__( 'Show on devices', 'elementor-pro' ) ); $this->add_settings_group_control( 'devices', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => $default_devices, 'options' => $available_devices, ] ); $this->end_settings_group(); $this->start_settings_group( 'browsers', esc_html__( 'Show on browsers', 'elementor-pro' ) ); $this->add_settings_group_control( 'browsers', [ 'type' => Controls_Manager::SELECT, 'default' => 'all', 'options' => [ 'all' => esc_html__( 'All Browsers', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'browsers_options', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [], 'options' => [ 'ie' => esc_html__( 'Internet Explorer', 'elementor-pro' ), 'chrome' => esc_html__( 'Chrome', 'elementor-pro' ), 'edge' => esc_html__( 'Edge', 'elementor-pro' ), 'firefox' => esc_html__( 'Firefox', 'elementor-pro' ), 'safari' => esc_html__( 'Safari', 'elementor-pro' ), ], 'condition' => [ 'browsers' => 'custom', ], ] ); $this->end_settings_group(); $this->start_settings_group( 'schedule', esc_html__( 'Schedule date and time', 'elementor-pro' ) ); $this->add_settings_group_control( 'timezone', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Timezone', 'elementor-pro' ), 'default' => 'site', 'options' => [ 'site' => esc_html__( 'Site', 'elementor-pro' ), 'visitor' => esc_html__( 'Visitor', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'start_date', [ 'label' => esc_html__( 'Start', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'picker_options' => [ 'enableTime' => true, 'minDate' => 'today', ], 'validation' => [ 'date_time' => [ 'control_name' => $this->get_prefixed_control_id( 'end_date' ), 'operator' => '<=', ], ], ] ); $this->add_settings_group_control( 'end_date', [ 'label' => esc_html__( 'End', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'picker_options' => [ 'enableTime' => true, 'minDate' => 'today', ], 'validation' => [ 'date_time' => [ 'control_name' => $this->get_prefixed_control_id( 'start_date' ), 'operator' => '>=', ], ], ] ); $datetime = new \DateTime( 'now', new \DateTimeZone( wp_timezone_string() ) ); $datetime = $datetime->format( 'Y-m-d H:i:s' ); $this->add_settings_group_control( 'server_datetime', [ 'type' => Controls_Manager::HIDDEN, 'default' => $datetime, ] ); $this->end_settings_group(); $this->end_controls_section(); } } base.php000064400000002600150513460140006164 0ustar00current_group = $group_name; $args = [ 'type' => Controls_Manager::HEADING, 'label' => $group_title, ]; $this->add_control( $group_name . '_heading', $args ); } protected function end_settings_group() { $this->add_control( $this->current_group, [ 'type' => Controls_Manager::SWITCHER, 'classes' => 'elementor-popup__display-settings__group-toggle', 'frontend_available' => true, ] ); $this->current_group = null; } protected function add_settings_group_control( $id, array $args ) { $id = $this->get_prefixed_control_id( $id ); $args['frontend_available'] = true; if ( ! empty( $args['condition'] ) ) { $args['condition'] = array_combine( array_map( function( $key ) { return $this->current_group . '_' . $key; }, array_keys( $args['condition'] ) ), $args['condition'] ); } $args['condition'][ $this->current_group ] = 'yes'; return $this->add_control( $id, $args ); } protected function get_prefixed_control_id( $id ) { return $this->current_group . '_' . $id; } } triggers.php000064400000005277150513460140007115 0ustar00start_controls_section( 'triggers' ); $this->start_settings_group( 'page_load', esc_html__( 'On Page Load', 'elementor-pro' ) ); $this->add_settings_group_control( 'delay', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)', 'default' => 0, 'min' => 0, 'step' => 0.1, ] ); $this->end_settings_group(); $this->start_settings_group( 'scrolling', esc_html__( 'On Scroll', 'elementor-pro' ) ); $this->add_settings_group_control( 'direction', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Direction', 'elementor-pro' ), 'default' => 'down', 'options' => [ 'down' => esc_html__( 'Down', 'elementor-pro' ), 'up' => esc_html__( 'Up', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'offset', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (%)', 'default' => 50, 'min' => 1, 'max' => 100, 'condition' => [ 'direction' => 'down', ], ] ); $this->end_settings_group(); $this->start_settings_group( 'scrolling_to', esc_html__( 'On Scroll To Element', 'elementor-pro' ) ); $this->add_settings_group_control( 'selector', [ 'type' => Controls_Manager::TEXT, 'label' => esc_html__( 'Selector', 'elementor-pro' ), 'placeholder' => '.my-class', ] ); $this->end_settings_group(); $this->start_settings_group( 'click', esc_html__( 'On Click', 'elementor-pro' ) ); $this->add_settings_group_control( 'times', [ 'label' => esc_html__( 'Clicks', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'inactivity', esc_html__( 'After Inactivity', 'elementor-pro' ) ); $this->add_settings_group_control( 'time', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)', 'default' => 30, 'min' => 1, 'step' => 0.1, ] ); $this->end_settings_group(); $this->start_settings_group( 'exit_intent', esc_html__( 'On Page Exit Intent', 'elementor-pro' ) ); $this->end_settings_group(); $this->end_controls_section(); } }