HEX
Server: Apache/2.4.65 (Debian)
System: Linux wordpress-7cb4c6b6f6-nmkdc 5.15.0-131-generic #141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64
User: www-data (33)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/themesky/elementor/autocomplete-control.php
<?php
if( !class_exists('\Elementor\Base_Data_Control') ){
	return;
}

class TS_Elementor_AutoComplete_Control extends \Elementor\Base_Data_Control{
	public function get_type(){
		return 'ts_autocomplete';
	}
	
	protected function get_default_settings(){
		return array(
			'options'			=> array()
			,'multiple'			=> true
			,'select2options'	=> array()
			,'sortable'			=> true
			,'autocomplete'		=> array(
				'type'	=> 'post' /* post or taxonomy */
				,'name'	=> 'post' /* post, page, ... */
			)
		);
	}
	
	public function enqueue(){
		$js_dir = plugin_dir_url( __DIR__ ) . 'js';
		
		wp_enqueue_script( 'ts-elementor-autocomplete', $js_dir . '/elementor-autocomplete.js', array('jquery'), THEMESKY_VERSION, true );
		
		$data = array(
			'ajaxurl'	=> admin_url('admin-ajax.php', 'relative')
		);
		wp_localize_script( 'ts-elementor-autocomplete', 'ts_autocomplete_params', $data );
	}
	
	public function content_template(){		
		$control_uid = $this->get_control_uid();
		?>
		<div class="elementor-control-field">
			<# if ( data.label ) {#>
				<label for="<?php echo $control_uid; ?>" class="elementor-control-title">{{{ data.label }}}</label>
			<# } #>
			<div class="elementor-control-input-wrapper elementor-control-unit-5">
				<# var multiple = ( data.multiple ) ? 'multiple' : ''; #>
				<# var sortable = ( data.sortable ) ? '1' : '0'; #>
				<# var selected_values = _.isArray(data.controlValue) ? data.controlValue.join() : data.controlValue; #>
				<select id="<?php echo $control_uid; ?>" class="elementor-select2" type="select2" {{ multiple }} data-setting="{{ data.name }}" data-selected_values="{{ selected_values }}" data-query_type="{{ data.autocomplete.type }}" data-query_name="{{ data.autocomplete.name }}" data-sortable="{{ sortable }}">
					<# _.each( data.options, function( option_title, option_value ) {
						var value = data.controlValue;
						if ( typeof value == 'string' ) {
							var selected = ( option_value === value ) ? 'selected' : '';
						} else if ( null !== value ) {
							var value = _.values( value );
							var selected = ( -1 !== value.indexOf( option_value ) ) ? 'selected' : '';
						}
						#>
					<option {{ selected }} value="{{ option_value }}">{{{ option_title }}}</option>
					<# } ); #>
				</select>
			</div>
		</div>
		<# if ( data.description ) { #>
			<div class="elementor-control-field-description">{{{ data.description }}}</div>
		<# } #>
		<?php
	}
}