File: /var/www/vfconf/wp-content/plugins/so-widgets-bundle/base/inc/fields/autocomplete.class.php
<?php
/**
* Class SiteOrigin_Widget_Field_Autocomplete
*/
class SiteOrigin_Widget_Field_Autocomplete extends SiteOrigin_Widget_Field_Text_Input_Base {
/**
* An array of post types to use in the autocomplete query. Only used for posts.
*
* @var array
*/
protected $post_types;
/**
* Indicates which database table will be used to retrieve autocomplete suggestions.
* Currently only `posts` and `terms` are allowed.
*
* @var string
*/
protected $source;
/**
* Whether to allow multiple items to be selected.
*
* @access protected
* @var string
*/
protected $multiple;
/**
* The CSS classes to be applied to the rendered text input.
*/
protected function get_input_classes() {
return array( 'widefat', 'siteorigin-widget-input', 'siteorigin-widget-autocomplete-input' );
}
protected function get_default_options() {
$defaults = parent::get_default_options();
$defaults['source'] = 'posts';
$defaults['multiple'] = true;
return $defaults;
}
protected function render_after_field( $value, $instance ) {
$post_types = ! empty( $this->post_types ) && is_array( $this->post_types ) ? implode( ',', $this->post_types ) : '';
?>
<div class="existing-content-selector" data-multiple="<?php echo esc_attr( $this->multiple ); ?>">
<input
type="text"
class="content-text-search"
data-post-types="<?php echo esc_attr( $post_types ); ?>"
data-source="<?php echo esc_attr( $this->source ); ?>"
placeholder="<?php esc_attr_e( 'Search', 'so-widgets-bundle' ); ?>"
tabindex="0"
/>
<ul class="items"></ul>
<p class="content-no-results hidden"><?php esc_html_e( 'No results found.', 'so-widgets-bundle' ); ?></p>
<div class="buttons">
<a href="#" class="button-close button"><?php esc_html_e( 'Close', 'so-widgets-bundle' ); ?></a>
</div>
</div>
<?php
parent::render_after_field( $value, $instance );
}
public function enqueue_scripts() {
wp_enqueue_script(
'so-autocomplete-field',
plugin_dir_url( __FILE__ ) . 'js/autocomplete-field' . SOW_BUNDLE_JS_SUFFIX . '.js',
array( 'jquery' ),
SOW_BUNDLE_VERSION
);
}
}