diff --git a/composer.json b/composer.json index bda85b2a8d9b333410566012d67917fcafc172ff..c188393c9de53ddd9b93f81bd621e8d545d36480 100644 --- a/composer.json +++ b/composer.json @@ -168,7 +168,7 @@ "drupal/video_embed_field": "2.5", "drupal/view_unpublished": "1.1", "drupal/views_ajax_history": "1.7", - "drupal/views_autocomplete_filters": "1.3", + "drupal/views_autocomplete_filters": "1.4", "drupal/views_bootstrap": "3.6", "drupal/views_bulk_operations": "4.2.3", "drupal/views_fieldsets": "^3.4", diff --git a/composer.lock b/composer.lock index f6fbbb067f62c79cb4b41a724efee3025180e24d..34e99b26e85e0d83bf03615644a559476f420eeb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b811d44ed2412e7c33e294cc83b69afe", + "content-hash": "5c434eba64ac79495b39f8c2b53cbd6d", "packages": [ { "name": "alchemy/zippy", @@ -7619,26 +7619,26 @@ }, { "name": "drupal/views_autocomplete_filters", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/views_autocomplete_filters.git", - "reference": "8.x-1.3" + "reference": "8.x-1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "55762182e55c70f117d5edb8692049e0881ec4ce" + "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "f65d5c6d25df802968c514836ea8edd22ba063a1" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1587146330", + "version": "8.x-1.4", + "datestamp": "1677771862", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index f94f82247d553aa60d5d878ee76059072e35ea52..2f07035f2a479097784e6b7e47b77b61d3ad2765 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -7905,27 +7905,27 @@ }, { "name": "drupal/views_autocomplete_filters", - "version": "1.3.0", - "version_normalized": "1.3.0.0", + "version": "1.4.0", + "version_normalized": "1.4.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/views_autocomplete_filters.git", - "reference": "8.x-1.3" + "reference": "8.x-1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "55762182e55c70f117d5edb8692049e0881ec4ce" + "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "f65d5c6d25df802968c514836ea8edd22ba063a1" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1587146330", + "version": "8.x-1.4", + "datestamp": "1677771862", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7938,14 +7938,18 @@ "GPL-2.0-or-later" ], "authors": [ - { - "name": "RobLoach", - "homepage": "https://www.drupal.org/user/61114" - }, { "name": "colan", "homepage": "https://www.drupal.org/user/58704" }, + { + "name": "heddn", + "homepage": "https://www.drupal.org/user/1463982" + }, + { + "name": "RobLoach", + "homepage": "https://www.drupal.org/user/61114" + }, { "name": "vasike", "homepage": "https://www.drupal.org/user/156237" diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index d1fb3747a3e9677fee4fbb1fb29bb1d9f75d5bab..02bf47f8bed6176936972fc76efaec055fa13eb3 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'osu-asc-webservices/d8-upstream', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '44d8d50fd541fad1e6de4cfd98b65e451d9cde2e', + 'reference' => 'bcc1a39ef696685f6490451f9d8ee448dd5f745a', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -1256,9 +1256,9 @@ 'dev_requirement' => false, ), 'drupal/views_autocomplete_filters' => array( - 'pretty_version' => '1.3.0', - 'version' => '1.3.0.0', - 'reference' => '8.x-1.3', + 'pretty_version' => '1.4.0', + 'version' => '1.4.0.0', + 'reference' => '8.x-1.4', 'type' => 'drupal-module', 'install_path' => __DIR__ . '/../../web/modules/views_autocomplete_filters', 'aliases' => array(), @@ -1558,7 +1558,7 @@ 'osu-asc-webservices/d8-upstream' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '44d8d50fd541fad1e6de4cfd98b65e451d9cde2e', + 'reference' => 'bcc1a39ef696685f6490451f9d8ee448dd5f745a', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/web/modules/views_autocomplete_filters/composer.json b/web/modules/views_autocomplete_filters/composer.json index 381cb35c1fbfffbe65c099369af8b2becba25bbe..2184c3c6a2af5b7be4c673c535bd4775e333ac95 100644 --- a/web/modules/views_autocomplete_filters/composer.json +++ b/web/modules/views_autocomplete_filters/composer.json @@ -8,6 +8,6 @@ "issues": "https://www.drupal.org/project/issues/views_autocomplete_filters" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" } } diff --git a/web/modules/views_autocomplete_filters/config/schema/views_autocomplete_filters.views.schema.yml b/web/modules/views_autocomplete_filters/config/schema/views_autocomplete_filters.views.schema.yml index 2e5bb17d9af67cff8b4cd2c7e3732cc7572253d2..4a3db66ece33b23f8b72f8d858f487365e4255d7 100644 --- a/web/modules/views_autocomplete_filters/config/schema/views_autocomplete_filters.views.schema.yml +++ b/web/modules/views_autocomplete_filters/config/schema/views_autocomplete_filters.views.schema.yml @@ -15,6 +15,9 @@ views.filter.views_autocomplete_filters_combine: autocomplete_items: type: string label: 'Maximum number of items in Autocomplete' + autocomplete_field: + type: string + label: 'Field with autocomplete results' autocomplete_raw_suggestion: type: integer label: 'Unformatted suggestion' @@ -42,6 +45,9 @@ views.filter.views_autocomplete_filters_search_api_fulltext: autocomplete_items: type: string label: 'Maximum number of items in Autocomplete' + autocomplete_field: + type: string + label: 'Field with autocomplete results' autocomplete_raw_suggestion: type: integer label: 'Unformatted suggestion' diff --git a/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php b/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php index 5458b6c7cddb427e70652fefcc095aaeec9cc154..e9873f6631ebed8fe3cd1dd0ce36a7fee417154e 100644 --- a/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php +++ b/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php @@ -68,7 +68,7 @@ public function access($view_name, $view_display) { } return AccessResult::forbidden(); } - /** + /** * Retrieves suggestions for taxonomy term autocompletion. * * This function outputs text suggestions in response to Ajax requests @@ -102,7 +102,7 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte } // Set display and display handler vars for quick access. $display_handler = $view->display_handler; - + // Force "Display all values" for arguments set, // to get results no matter of Not Contextual filter present settings. $arguments = $display_handler->getOption('arguments'); @@ -196,7 +196,7 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte $view->execute(); $view->postExecute(); $display_handler = $view->display_handler; - + // Render field on each row and fill matches array. $use_raw_suggestion = !empty($expose_options['autocomplete_raw_suggestion']); $use_raw_dropdown = !empty($expose_options['autocomplete_raw_dropdown']); @@ -206,7 +206,7 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte $view->row_index = $index; /** @var \Drupal\views\Plugin\views\style\StylePluginBase $style_plugin */ $style_plugin = $display_handler->getPlugin('style'); - + foreach ($field_names as $field_name) { $rendered_field = $raw_field = ''; // Render field only if suggestion or dropdown item not in RAW format. @@ -215,7 +215,9 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte } // Get the raw field value only if suggestion or dropdown item is in RAW format. if ($use_raw_suggestion || $use_raw_dropdown) { - $raw_field = $style_plugin->getFieldValue($index, $field_name); + $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); + $entity = $view->result[$index]->_entity->getTranslation($langcode); + $raw_field = $entity->$field_name->value; if (!is_array($raw_field)) { $raw_field = [['value' => $raw_field]]; } @@ -227,7 +229,7 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte } } } - + if (empty($raw_field) && !empty($rendered_field)) { $raw_field = [['value' => $rendered_field]]; } diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php index 8888157c10ce52532cad02b08183b1944563e1c7..d423cf6cb171f0b1c4a83e8b9709053c3e2330fb 100644 --- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php +++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php @@ -85,7 +85,7 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { '#title' => $this->t('Field with autocomplete results'), '#default_value' => $this->options['expose']['autocomplete_field'], '#options' => $field_options, - '#description' => $this->t('Selected field will be used for dropdown results of autocomplete. In most cases it should be the same field you use for filter.'), + '#description' => $this->t('The selected field will be used for drop-down results of the autocompletion. In most cases it should be the same field you use for the filter, and <em>must</em> be included in the field list for the view/display in order to appear here.'), '#states' => $states, ], 'autocomplete_raw_dropdown' => [ diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml b/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml index 1442c29c7847a00960e9965cb2f18aa25562bb49..fae94b2489a195101bded244695f9f089fd6e9ef 100644 --- a/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml +++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml @@ -2,15 +2,14 @@ name: Views Autocomplete Filters type: module description: 'Use Autocomplete for string field filters.' package: Views -core: 8.x -core_version_requirement: ^8 || ^9 +core_version_requirement: ^8 || ^9 || ^10 dependencies: - drupal:views tags: - views - utility -# Information added by Drupal.org packaging script on 2020-04-17 -version: '8.x-1.3' +# Information added by Drupal.org packaging script on 2023-03-02 +version: '8.x-1.4' project: 'views_autocomplete_filters' -datestamp: 1587146332 +datestamp: 1677771871 diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.module b/web/modules/views_autocomplete_filters/views_autocomplete_filters.module index a62b0670f6050ae0c6908263d78798e2bce786a5..4b971eb89b1c03937e77652d153c4198a55ff878 100644 --- a/web/modules/views_autocomplete_filters/views_autocomplete_filters.module +++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.module @@ -4,3 +4,49 @@ * @file * Extend the Views StringFilter and Combine filter with autocomplete. */ + +/** + * Implements hook_config_schema_info_alter(). + * + * Add config schema for views filters that views_autocomplete_filters modifies. + */ +function views_autocomplete_filters_config_schema_info_alter(&$definitions) { + foreach ($definitions as $key => $value) { + // See views_autocomplete_filters.views.inc for the list of fields modified + // by this module. + if ($key === 'views.filter.combine' + || $key === 'views.filter.search_api_fulltext' + || $key === 'views.filter.search_api_text' + || $key === 'views.filter.string' + ) { + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_filter'] = [ + 'type' => 'integer', + 'label' => 'Use Autocomplete', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_min_chars'] = [ + 'type' => 'string', + 'label' => 'Minimum number of characters to start filter', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_items'] = [ + 'type' => 'string', + 'label' => 'Maximum number of items in Autocomplete', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_field'] = [ + 'type' => 'string', + 'label' => 'Field with autocomplete results', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_raw_suggestion'] = [ + 'type' => 'integer', + 'label' => 'Unformatted suggestion', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_raw_dropdown'] = [ + 'type' => 'integer', + 'label' => 'Unformatted dropdown', + ]; + $definitions[$key]['mapping']['expose']['mapping']['autocomplete_dependent'] = [ + 'type' => 'integer', + 'label' => 'Suggestions depend on other filter fields', + ]; + } + } +}