Advertisement
Guest User

Untitled

a guest
Dec 14th, 2022
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.39 KB | None | 0 0
  1. <?php
  2.  
  3. namespace ElementorPro\Modules\Popup\DisplaySettings;
  4.  
  5. use Elementor\Controls_Manager;
  6.  
  7. if ( ! defined( 'ABSPATH' ) ) {
  8.     exit; // Exit if accessed directly
  9. }
  10.  
  11. class Timing extends Base {
  12.  
  13.     /**
  14.      * Get element name.
  15.      *
  16.      * Retrieve the element name.
  17.      *
  18.      * @since  2.4.0
  19.      * @access public
  20.      *
  21.      * @return string The name.
  22.      */
  23.     public function get_name() {
  24.         return 'popup_timing';
  25.     }
  26.  
  27.     protected function register_controls() {
  28.         $this->start_controls_section( 'timing' );
  29.  
  30.         $this->start_settings_group( 'page_views', esc_html__( 'Show after X page views', 'elementor-pro' ) );
  31.  
  32.         $this->add_settings_group_control(
  33.             'views',
  34.             [
  35.                 'type' => Controls_Manager::NUMBER,
  36.                 'label' => esc_html__( 'Page Views', 'elementor-pro' ),
  37.                 'default' => 3,
  38.                 'min' => 1,
  39.             ]
  40.         );
  41.  
  42.         $this->end_settings_group();
  43.  
  44.         $this->start_settings_group( 'sessions', esc_html__( 'Show after X sessions', 'elementor-pro' ) );
  45.  
  46.         $this->add_settings_group_control(
  47.             'sessions',
  48.             [
  49.                 'type' => Controls_Manager::NUMBER,
  50.                 'label' => esc_html__( 'Sessions', 'elementor-pro' ),
  51.                 'default' => 2,
  52.                 'min' => 1,
  53.             ]
  54.         );
  55.  
  56.         $this->end_settings_group();
  57.  
  58.         $this->start_settings_group( 'times', esc_html__( 'Show up to X times', 'elementor-pro' ) );
  59.  
  60.         $this->add_settings_group_control(
  61.             'times',
  62.             [
  63.                 'type' => Controls_Manager::NUMBER,
  64.                 'label' => esc_html__( 'Times', 'elementor-pro' ),
  65.                 'default' => 3,
  66.                 'min' => 1,
  67.             ]
  68.         );
  69.  
  70.         $this->add_settings_group_control(
  71.             'count',
  72.             [
  73.                 'type' => Controls_Manager::SELECT,
  74.                 'label' => esc_html__( 'Count', 'elementor-pro' ),
  75.                 'options' => [
  76.                     '' => esc_html__( 'On Open', 'elementor-pro' ),
  77.                     'close' => esc_html__( 'On Close', 'elementor-pro' ),
  78.                 ],
  79.             ]
  80.         );
  81.  
  82.         $this->end_settings_group();
  83.  
  84.         $this->start_settings_group( 'url', esc_html__( 'When arriving from specific URL', 'elementor-pro' ) );
  85.  
  86.         $this->add_settings_group_control(
  87.             'action',
  88.             [
  89.                 'type' => Controls_Manager::SELECT,
  90.                 'default' => 'show',
  91.                 'options' => [
  92.                     'show' => esc_html__( 'Show', 'elementor-pro' ),
  93.                     'hide' => esc_html__( 'Hide', 'elementor-pro' ),
  94.                     'regex' => esc_html__( 'Regex', 'elementor-pro' ),
  95.                 ],
  96.             ]
  97.         );
  98.  
  99.         $this->add_settings_group_control(
  100.             'url',
  101.             [
  102.                 'type' => Controls_Manager::TEXT,
  103.                 'placeholder' => esc_html__( 'URL', 'elementor-pro' ),
  104.             ]
  105.         );
  106.  
  107.         $this->end_settings_group();
  108.  
  109.         $this->start_settings_group( 'sources', esc_html__( 'Show when arriving from', 'elementor-pro' ) );
  110.  
  111.         $this->add_settings_group_control(
  112.             'sources',
  113.             [
  114.                 'type' => Controls_Manager::SELECT2,
  115.                 'multiple' => true,
  116.                 'default' => [ 'search', 'external', 'internal' ],
  117.                 'options' => [
  118.                     'search' => esc_html__( 'Search Engines', 'elementor-pro' ),
  119.                     'external' => esc_html__( 'External Links', 'elementor-pro' ),
  120.                     'internal' => esc_html__( 'Internal Links', 'elementor-pro' ),
  121.                 ],
  122.             ]
  123.         );
  124.  
  125.         $this->end_settings_group();
  126.  
  127.         $this->start_settings_group( 'logged_in', esc_html__( 'Hide for logged in users', 'elementor-pro' ) );
  128.  
  129.         $this->add_settings_group_control(
  130.             'users',
  131.             [
  132.                 'type' => Controls_Manager::SELECT,
  133.                 'default' => 'all',
  134.                 'options' => [
  135.                     'all' => esc_html__( 'All Users', 'elementor-pro' ),
  136.                     'custom' => esc_html__( 'Custom', 'elementor-pro' ),
  137.                 ],
  138.             ]
  139.         );
  140.  
  141.         global $wp_roles;
  142.  
  143.         $roles = array_map( function( $role ) {
  144.             return $role['name'];
  145.         }, $wp_roles->roles );
  146.  
  147.         $this->add_settings_group_control(
  148.             'roles',
  149.             [
  150.                 'type' => Controls_Manager::SELECT2,
  151.                 'multiple' => true,
  152.                 'default' => [],
  153.                 'options' => $roles,
  154.                 'select2options' => [
  155.                     'placeholder' => esc_html__( 'Select Roles', 'elementor-pro' ),
  156.                 ],
  157.                 'condition' => [
  158.                     'users' => 'custom',
  159.                 ],
  160.             ]
  161.         );
  162.  
  163.         $this->end_settings_group();
  164.  
  165.         $this->start_settings_group( 'devices', esc_html__( 'Show on devices', 'elementor-pro' ) );
  166.  
  167.         $this->add_settings_group_control(
  168.             'devices',
  169.             [
  170.                 'type' => Controls_Manager::SELECT2,
  171.                 'multiple' => true,
  172.                 'default' => [ 'desktop', 'tablet', 'mobile' ],
  173.                 'options' => [
  174.                     'desktop' => esc_html__( 'Desktop', 'elementor-pro' ),
  175.                     'tablet' => esc_html__( 'Tablet', 'elementor-pro' ),
  176.                     'mobile' => esc_html__( 'Mobile', 'elementor-pro' ),
  177.                 ],
  178.             ]
  179.         );
  180.  
  181.         $this->end_settings_group();
  182.  
  183.         $this->start_settings_group( 'browsers', esc_html__( 'Show on browsers', 'elementor-pro' ) );
  184.  
  185.         $this->add_settings_group_control(
  186.             'browsers',
  187.             [
  188.                 'type' => Controls_Manager::SELECT,
  189.                 'default' => 'all',
  190.                 'options' => [
  191.                     'all' => esc_html__( 'All Browsers', 'elementor-pro' ),
  192.                     'custom' => esc_html__( 'Custom', 'elementor-pro' ),
  193.                 ],
  194.             ]
  195.         );
  196.  
  197.         $this->add_settings_group_control(
  198.             'browsers_options',
  199.             [
  200.                 'type' => Controls_Manager::SELECT2,
  201.                 'multiple' => true,
  202.                 'default' => [],
  203.                 'options' => [
  204.                     'ie' => esc_html__( 'Internet Explorer', 'elementor-pro' ),
  205.                     'chrome' => esc_html__( 'Chrome', 'elementor-pro' ),
  206.                     'edge' => esc_html__( 'Edge', 'elementor-pro' ),
  207.                     'firefox' => esc_html__( 'Firefox', 'elementor-pro' ),
  208.                     'safari' => esc_html__( 'Safari', 'elementor-pro' ),
  209.                 ],
  210.                 'condition' => [
  211.                     'browsers' => 'custom',
  212.                 ],
  213.             ]
  214.         );
  215.  
  216.         $this->end_settings_group();
  217.  
  218.         $this->end_controls_section();
  219.     }
  220. }
  221.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement