<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Elementor choose control.
*
* A base control for creating choose control. Displays radio buttons styled as
* groups of buttons with icons for each option.
*
* @since 1.0.0
*/
class Select_Ajax extends \Elementor\Base_Data_Control {
/**
* Get choose control type.
*
* Retrieve the control type, in this case `choose`.
*
* @since 1.0.0
* @access public
*
* @return string Control type.
*/
public function get_type() {
return 'selectajax';
}
/**
* Enqueue ontrol scripts and styles.
*
* @since 1.0.0
* @access public
*/
public function enqueue() {
wp_register_script( 'selectajax', plugin_dir_url( __FILE__ ) . '../assets/js/selectajax.js', [ 'jquery-elementor-select2' ] );
wp_localize_script(
'selectajax',
'selectajax_localize',
[
'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ),
'search_text' => esc_html__( 'Search', 'atlas-core' ),
]
);
wp_enqueue_script( 'selectajax' );
}
protected function get_default_settings()
{
return [
'multiple' => false,
'source_name' => 'post_type',
'source_type' => 'post',
];
}
public function content_template()
{
$control_uid = $this->get_control_uid();
?>
<# var controlUID = '<?php echo esc_html( $control_uid ); ?>'; #>
<# var currentID = elementor.panel.currentView.currentPageView.model.attributes.settings.attributes[data.name]; #>
<div class="elementor-control-field">
<# if ( data.label ) { #>
<label for="<?php echo esc_attr( $control_uid ); ?>" class="elementor-control-title">{{{data.label }}}</label>
<# } #>
<div class="elementor-control-input-wrapper elementor-control-unit-5">
<# var multiple = ( data.multiple ) ? 'multiple' : ''; #>
<select id="<?php echo esc_attr( $control_uid ); ?>" {{ multiple }} class="selectajax" data-setting="{{ data.name }}"></select>
</div>
</div>
<#
( function( $ ) {
$( document.body ).trigger( 'selectajax_init',{currentID:data.controlValue,data:data,controlUID:controlUID,multiple:data.multiple} );
}( jQuery ) );
#>
<?php
}
}