Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace ElementorPro\Modules\Popup\DisplaySettings;
- use Elementor\Controls_Manager;
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
- }
- class Timing extends Base {
- /**
- * Get element name.
- *
- * Retrieve the element name.
- *
- * @since 2.4.0
- * @access public
- *
- * @return string The name.
- */
- public function get_name() {
- return 'popup_timing';
- }
- protected function register_controls() {
- $this->start_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(
- '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();
- $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' => [ 'desktop', 'tablet', 'mobile' ],
- 'options' => [
- 'desktop' => esc_html__( 'Desktop', 'elementor-pro' ),
- 'tablet' => esc_html__( 'Tablet', 'elementor-pro' ),
- 'mobile' => esc_html__( 'Mobile', 'elementor-pro' ),
- ],
- ]
- );
- $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->end_controls_section();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement