/var/www/html/wp-content/plugins/elementor/includes/controls/url.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
namespace Elementor;

use 
Elementor\Modules\DynamicTags\Module as TagsModule;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

/**
 * Elementor URL control.
 *
 * A base control for creating url control. Displays a URL input with the
 * ability to set the target of the link to `_blank` to open in a new tab.
 *
 * @since 1.0.0
 */
class Control_URL extends Control_Base_Multiple {

    
/**
     * Get url control type.
     *
     * Retrieve the control type, in this case `url`.
     *
     * @since 1.0.0
     * @access public
     *
     * @return string Control type.
     */
    
public function get_type() {
        return 
'url';
    }

    
/**
     * Get url control default values.
     *
     * Retrieve the default value of the url control. Used to return the default
     * values while initializing the url control.
     *
     * @since 1.0.0
     * @access public
     *
     * @return array Control default value.
     */
    
public function get_default_value() {
        return [
            
'url' => '',
            
'is_external' => '',
            
'nofollow' => '',
            
'custom_attributes' => '',
        ];
    }

    
/**
     * Get url control default settings.
     *
     * Retrieve the default settings of the url control. Used to return the default
     * settings while initializing the url control.
     *
     * @since 1.0.0
     * @access protected
     *
     * @return array Control default settings.
     */
    
protected function get_default_settings() {
        return [
            
'label_block' => true,
            
'placeholder' => esc_html__'Paste URL or type''elementor' ),
            
'autocomplete' => true,
            
'options' => [ 'is_external''nofollow''custom_attributes' ],
            
'dynamic' => [
                
'categories' => [ TagsModule::URL_CATEGORY ],
                
'property' => 'url',
            ],
            
'custom_attributes_description' => sprintf(
                
'%1$s <a target="_blank" href="https://go.elementor.com/panel-link-custom-attributes/">%2$s</a>',
                
esc_html__'Set custom attributes for the link element. Separate attribute keys from values using the | (pipe) character. Separate key-value pairs with a comma.''elementor' ),
                
esc_html__'Learn more''elementor' )
            ),
        ];
    }

    
/**
     * Render url control output in the editor.
     *
     * Used to generate the control HTML in the editor using Underscore JS
     * template. The variables for the class are available using `data` JS
     * object.
     *
     * @since 1.0.0
     * @access public
     */
    
public function content_template() {
        
?>
        <div class="elementor-control-field elementor-control-url-external-{{{ ( data.options.length || data.show_external ) ? 'show' : 'hide' }}}">
            <label for="<?php $this->print_control_uid(); ?>" class="elementor-control-title">{{{ data.label }}}</label>
            <div class="elementor-control-input-wrapper elementor-control-dynamic-switcher-wrapper">
                <i class="elementor-control-url-autocomplete-spinner eicon-loading eicon-animation-spin" aria-hidden="true"></i>
                <input id="<?php $this->print_control_uid(); ?>" class="elementor-control-tag-area elementor-input" data-setting="url" placeholder="{{ view.getControlPlaceholder() }}" />
                <?php // PHPCS - Nonces don't require escaping. ?>
                <input id="_ajax_linking_nonce" type="hidden" value="<?php echo wp_create_nonce'internal-linking' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" />
                <# if ( !! data.options ) { #>
                <button class="elementor-control-url-more tooltip-target elementor-control-unit-1" data-tooltip="<?php echo esc_attr__'Link Options''elementor' ); ?>" aria-label="<?php echo esc_attr__'Link Options''elementor' ); ?>">
                    <i class="eicon-cog" aria-hidden="true"></i>
                </button>
                <# } #>
            </div>
            <# if ( !! data.options ) { #>
            <div class="elementor-control-url-more-options">
                <div class="elementor-control-url-option">
                    <input id="<?php $this->print_control_uid'is_external' ); ?>" type="checkbox" class="elementor-control-url-option-input" data-setting="is_external">
                    <label for="<?php $this->print_control_uid'is_external' ); ?>"><?php echo esc_html__'Open in new window''elementor' ); ?></label>
                </div>
                <div class="elementor-control-url-option">
                    <input id="<?php $this->print_control_uid'nofollow' ); ?>" type="checkbox" class="elementor-control-url-option-input" data-setting="nofollow">
                    <label for="<?php $this->print_control_uid'nofollow' ); ?>"><?php echo esc_html__'Add nofollow''elementor' ); ?></label>
                </div>
                <div class="elementor-control-url__custom-attributes">
                    <label for="<?php $this->print_control_uid'custom_attributes' ); ?>" class="elementor-control-url__custom-attributes-label"><?php echo esc_html__'Custom Attributes''elementor' ); ?></label>
                    <input type="text" id="<?php $this->print_control_uid'custom_attributes' ); ?>" class="elementor-control-unit-5" placeholder="key|value" data-setting="custom_attributes">
                </div>
                <# if ( ( data.options && -1 !== data.options.indexOf( 'custom_attributes' ) ) && data.custom_attributes_description ) { #>
                <div class="elementor-control-field-description">{{{ data.custom_attributes_description }}}</div>
                <# } #>
            </div>
            <# } #>
        </div>
        <# if ( data.description ) { #>
        <div class="elementor-control-field-description">{{{ data.description }}}</div>
        <# } #>
        <?php
    
}
}