/** * @inheritDoc */ public function form($instance) { // @todo Make compatible with Customizer if ($this->is_preview()) { $warning = sprintf(esc_html__('This widget is not configurable from this screen. Please configure it on the %sWidgets page%s.', 'gravityview'), '<a href="' . admin_url('widgets.php') . '">', '</a>'); echo wpautop(GravityView_Admin::get_floaty() . $warning); return; } $defaults = array('title' => '', 'view_id' => 0, 'post_id' => '', 'search_fields' => ''); $instance = wp_parse_args((array) $instance, $defaults); $title = $instance['title']; $view_id = $instance['view_id']; $post_id = $instance['post_id']; $search_fields = $instance['search_fields']; $views = GVCommon::get_all_views(); // If there are no views set up yet, we get outta here. if (empty($views)) { ?> <div id="select_gravityview_view"> <div class="wrap"><?php echo GravityView_Post_Types::no_views_text(); ?> </div> </div> <?php return; } ?> <p><label for="<?php echo $this->get_field_id('title'); ?> "><?php _e('Title:', 'gravityview'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?> " name="<?php echo $this->get_field_name('title'); ?> " type="text" value="<?php echo esc_attr($title); ?> " /></label></p> <?php /** * Display errors generated for invalid embed IDs * @see GravityView_View_Data::is_valid_embed_id */ if (isset($instance['updated']) && empty($instance['view_id'])) { ?> <div class="error inline hide-on-view-change"> <p><?php esc_html_e('Please select a View to search.', 'gravityview'); ?> </p> </div> <?php unset($error); } ?> <p> <label for="gravityview_view_id"><?php _e('View:', 'gravityview'); ?> </label> <select id="gravityview_view_id" name="<?php echo $this->get_field_name('view_id'); ?> " class="widefat"> <option value=""><?php esc_html_e('— Select a View —', 'gravityview'); ?> </option> <?php foreach ($views as $view_option) { $title = empty($view_option->post_title) ? __('(no title)', 'gravityview') : $view_option->post_title; echo '<option value="' . $view_option->ID . '" ' . selected(esc_attr($view_id), $view_option->ID, false) . '>' . esc_html(sprintf('%s #%d', $title, $view_option->ID)) . '</option>'; } ?> </select> </p> <?php /** * Display errors generated for invalid embed IDs * @see GravityView_View_Data::is_valid_embed_id */ if (!empty($instance['error_post_id'])) { ?> <div class="error inline"> <p><?php echo $instance['error_post_id']; ?> </p> </div> <?php unset($error); } ?> <p> <label for="<?php echo $this->get_field_id('post_id'); ?> "><?php esc_html_e('If Embedded, Page ID:', 'gravityview'); ?> </label> <input class="code" size="3" id="<?php echo $this->get_field_id('post_id'); ?> " name="<?php echo $this->get_field_name('post_id'); ?> " type="text" value="<?php echo esc_attr($post_id); ?> " /> <span class="howto"><?php esc_html_e('To have a search performed on an embedded View, enter the ID of the post or page where the View is embedded.', 'gravityview'); echo ' ' . gravityview_get_link('http://docs.gravityview.co/article/222-the-search-widget', __('Learn more…', 'gravityview'), 'target=_blank'); ?> </span> </p> <hr /> <?php // @todo: move style to CSS ?> <div style="margin-bottom: 1em;"> <label class="screen-reader-text" for="<?php echo $this->get_field_id('search_fields'); ?> "><?php _e('Searchable fields:', 'gravityview'); ?> </label> <div class="gv-widget-search-fields" title="<?php esc_html_e('Search Fields', 'gravityview'); ?> "> <input id="<?php echo $this->get_field_id('search_fields'); ?> " name="<?php echo $this->get_field_name('search_fields'); ?> " type="hidden" value="<?php echo esc_attr($search_fields); ?> " class="gv-search-fields-value"> </div> </div> <script> // When the widget is saved or added, refresh the Merge Tags (here for backward compatibility) // WordPress 3.9 added widget-added and widget-updated actions jQuery('#<?php echo $this->get_field_id('view_id'); ?> ').trigger( 'change' ); </script> <?php }