Skip to content
Snippets Groups Projects
Verified Commit c9d305c5 authored by Dave Long's avatar Dave Long
Browse files

Issue #3425875 by Wim Leers, phenaproxima, smustgrave: Add validation...

Issue #3425875 by Wim Leers, phenaproxima, smustgrave: Add validation constraints to search.settings
parent 566b7d32
No related branches found
No related tags found
32 merge requests!12227Issue #3181946 by jonmcl, mglaman,!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8540Issue #3457061: Bootstrap Modal dialog Not closing after 10.3.0 Update,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8373Issue #3427374 by danflanagan8, Vighneshh: taxonomy_tid ViewsArgumentDefault...,!7526Expose roles in response,!7352Draft: Resolve #3203489 "Set filename as",!5423Draft: Resolve #3329907 "Test2",!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3478Issue #3337882: Deleted menus are not removed from content type config,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2794Issue #3100732: Allow specifying `meta` data on JSON:API objects,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
......@@ -59,6 +59,13 @@ trait SchemaCheckTrait {
'^The file storage you selected is not a visible, readable and writable stream wrapper\. Possible choices: <em class="placeholder"><\/em>\.$',
],
],
'search.settings' => [
// @todo Simple config cannot have dependencies on any other config.
// Remove this in https://www.drupal.org/project/drupal/issues/3425992.
'default_page' => [
"The 'search.page.node_search' config does not exist.",
],
],
];
/**
......
......@@ -3,13 +3,24 @@
search.settings:
type: config_object
label: 'Search settings'
constraints:
FullyValidatable: ~
mapping:
and_or_limit:
type: integer
label: 'AND/OR combination limit'
constraints:
Range:
min: 0
default_page:
type: string
label: 'Default search page'
constraints:
ConfigExists:
prefix: search.page.
# @see \Drupal\search\SearchPageRepository::getDefaultSearchPage()
# @see \Drupal\search\SearchPageRepository::clearDefaultSearchPage()
requiredKey: false
index:
type: mapping
label: 'Indexing settings'
......@@ -17,51 +28,57 @@ search.settings:
cron_limit:
type: integer
label: 'Number of items to index per cron run'
constraints:
Range:
min: 1
overlap_cjk:
type: boolean
label: 'Simple CJK handling'
minimum_word_size:
type: integer
label: 'Minimum word length to index'
constraints:
Range:
min: 1
tag_weights:
type: mapping
label: 'HTML tags weight'
mapping:
h1:
type: integer
type: weight
label: 'Tag h1 weight'
h2:
type: integer
type: weight
label: 'Tag h2 weight'
h3:
type: integer
type: weight
label: 'Tag h3 weight'
h4:
type: integer
type: weight
label: 'Tag h4 weight'
h5:
type: integer
type: weight
label: 'Tag h5 weight'
h6:
type: integer
type: weight
label: 'Tag h6 weight'
u:
type: integer
type: weight
label: 'Tag u weight'
b:
type: integer
type: weight
label: 'Tag b weight'
i:
type: integer
type: weight
label: 'Tag i weight'
strong:
type: integer
type: weight
label: 'Tag strong weight'
em:
type: integer
type: weight
label: 'Tag em weight'
a:
type: integer
type: weight
label: 'Tag a weight'
logging:
type: boolean
......
......@@ -35,12 +35,17 @@ protected function actions(array $form, FormStateInterface $form_state) {
*/
public function save(array $form, FormStateInterface $form_state) {
// If there is no default search page, make the added search the default.
if (!$this->searchPageRepository->getDefaultSearchPage()) {
$this->searchPageRepository->setDefaultSearchPage($this->entity);
}
// TRICKY: ::getDefaultSearchPage() will return the first active search page
// as the default if no explicit default is configured in `search.settings`.
// That's why this must be checked *before* saving the form.
$make_default = !$this->searchPageRepository->getDefaultSearchPage();
parent::save($form, $form_state);
if ($make_default) {
$this->searchPageRepository->setDefaultSearchPage($this->entity);
}
$this->messenger()->addStatus($this->t('The %label search page has been added.', ['%label' => $this->entity->label()]));
}
......
......@@ -24,6 +24,7 @@ class MigrateSearchSettingsTest extends MigrateDrupal6TestBase {
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig(['search']);
$this->executeMigration('d6_search_settings');
}
......
......@@ -19,6 +19,14 @@ class SearchTokenizerTest extends KernelTestBase {
*/
protected static $modules = ['search'];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig(['search']);
}
/**
* Verifies that strings of CJK characters are tokenized.
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment