Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • project/facets
  • issue/facets-3182762
  • issue/facets-2937191
  • issue/facets-3073444
  • issue/facets-3187388
  • issue/facets-3189343
  • issue/facets-3190076
  • issue/facets-3190111
  • issue/facets-3190240
  • issue/facets-3057943
  • issue/facets-3153889
  • issue/facets-3015387
  • issue/facets-3197615
  • issue/facets-3199135
  • issue/facets-3199156
  • issue/facets-3200659
  • issue/facets-3204072
  • issue/facets-3205381
  • issue/facets-3162984
  • issue/facets-3208580
  • issue/facets-3211155
  • issue/facets-3168241
  • issue/facets-3058314
  • issue/facets-3214662
  • issue/facets-3212932
  • issue/facets-2979223
  • issue/facets-3213733
  • issue/facets-3216756
  • issue/facets-3221545
  • issue/facets-3223956
  • issue/facets-3052574
  • issue/facets-3173865
  • issue/facets-3231934
  • issue/facets-3226284
  • issue/facets-3100620
  • issue/facets-3283166
  • issue/facets-3281408
  • issue/facets-3225189
  • issue/facets-3153622
  • issue/facets-3186953
  • issue/facets-3248297
  • issue/facets-3220140
  • issue/facets-3252806
  • issue/facets-3046872
  • issue/facets-3254732
  • issue/facets-3255454
  • issue/facets-3255596
  • issue/facets-3256305
  • issue/facets-3256222
  • issue/facets-3257441
  • issue/facets-3257445
  • issue/facets-3173972
  • issue/facets-3259958
  • issue/facets-3261140
  • issue/facets-3262863
  • issue/facets-3264045
  • issue/facets-3264196
  • issue/facets-3264284
  • issue/facets-3265768
  • issue/facets-2939710
  • issue/facets-3031544
  • issue/facets-3266265
  • issue/facets-3047910
  • issue/facets-2908937
  • issue/facets-3270514
  • issue/facets-3008061
  • issue/facets-3272851
  • issue/facets-2993101
  • issue/facets-3273431
  • issue/facets-3190289
  • issue/facets-2937619
  • issue/facets-3285728
  • issue/facets-3106111
  • issue/facets-3291943
  • issue/facets-3260603
  • issue/facets-3293266
  • issue/facets-3294991
  • issue/facets-3296120
  • issue/facets-2873480
  • issue/facets-3298956
  • issue/facets-3299603
  • issue/facets-3111903
  • issue/facets-3300227
  • issue/facets-3303927
  • issue/facets-3116236
  • issue/facets-3297168
  • issue/facets-3301075
  • issue/facets-3295536
  • issue/facets-3303305
  • issue/facets-3305120
  • issue/facets-2837729
  • issue/facets-3310812
  • issue/facets-3310894
  • issue/facets-3306634
  • issue/facets-3307082
  • issue/facets-3307968
  • issue/facets-3308371
  • issue/facets-3309309
  • issue/facets-3310848
  • issue/facets-3310857
  • issue/facets-3311242
  • issue/facets-3311500
  • issue/facets-3311856
  • issue/facets-3251920
  • issue/facets-3317585
  • issue/facets-3317783
  • issue/facets-2978248
  • issue/facets-3314702
  • issue/facets-3318667
  • issue/facets-3326080
  • issue/facets-3326809
  • issue/facets-3327596
  • issue/facets-3320629
  • issue/facets-3327246
  • issue/facets-3327613
  • issue/facets-3327629
  • issue/facets-3172373
  • issue/facets-3327604
  • issue/facets-3327592
  • issue/facets-3323372
  • issue/facets-3336646
  • issue/facets-3343860
  • issue/facets-3331219
  • issue/facets-3260155
  • issue/facets-3206427
  • issue/facets-3342656
  • issue/facets-3349266
  • issue/facets-3352687
  • issue/facets-3355614
  • issue/facets-3318636
  • issue/facets-3332128
  • issue/facets-3356573
  • issue/facets-2986981
  • issue/facets-2984641
  • issue/facets-3350613
  • issue/facets-3360010
  • issue/facets-3360426
  • issue/facets-3365579
  • issue/facets-3367124
  • issue/facets-3368253
  • issue/facets-3368327
  • issue/facets-3133309
  • issue/facets-3360920
  • issue/facets-3395766
  • issue/facets-3402720
  • issue/facets-3404340
  • issue/facets-3211200
  • issue/facets-3374554
  • issue/facets-3385696
  • issue/facets-2997417
  • issue/facets-3387254
  • issue/facets-3386518
  • issue/facets-3117495
  • issue/facets-3390004
  • issue/facets-3387250
  • issue/facets-3390365
  • issue/facets-3391052
  • issue/facets-3391322
  • issue/facets-3391614
  • issue/facets-3394866
  • issue/facets-3214153
  • issue/facets-3408085
  • issue/facets-3395567
  • issue/facets-3313850
  • issue/facets-3410049
  • issue/facets-3420142
  • issue/facets-3373338
  • issue/facets-3412573
  • issue/facets-3413405
  • issue/facets-3414606
  • issue/facets-3415552
  • issue/facets-3416017
  • issue/facets-3415900
  • issue/facets-3258992
  • issue/facets-3408001
  • issue/facets-3254496
  • issue/facets-3254497
  • issue/facets-3421560
  • issue/facets-3422013
  • issue/facets-3419501
  • issue/facets-3364560
  • issue/facets-3423195
  • issue/facets-3276669
  • issue/facets-3425883
  • issue/facets-3426667
  • issue/facets-3426673
  • issue/facets-3426675
  • issue/facets-3427300
  • issue/facets-3427383
  • issue/facets-3112463
  • issue/facets-3428646
  • issue/facets-3446053
  • issue/facets-3444352
  • issue/facets-3436160
  • issue/facets-3440551
  • issue/facets-3430401
  • issue/facets-3285575
  • issue/facets-3446781
  • issue/facets-3436010
  • issue/facets-3326234
  • issue/facets-3365166
  • issue/facets-3431226
  • issue/facets-3437814
  • issue/facets-3446211
  • issue/facets-3432718
  • issue/facets-3390386
  • issue/facets-3438980
  • issue/facets-3259123
  • issue/facets-3447859
  • issue/facets-3447884
  • issue/facets-3449029
  • issue/facets-3449596
  • issue/facets-3451106
  • issue/facets-3451557
  • issue/facets-3452863
  • issue/facets-3008561
  • issue/facets-3406085
  • issue/facets-3283106
  • issue/facets-3455217
  • issue/facets-3195236
  • issue/facets-3458558
  • issue/facets-3459093
  • issue/facets-3460346
  • issue/facets-3462302
  • issue/facets-3259836
  • issue/facets-3463418
  • issue/facets-3459885
  • issue/facets-3008615
  • issue/facets-3466566
  • issue/facets-2811331
  • issue/facets-3467119
  • issue/facets-3467173
  • issue/facets-3469997
  • issue/facets-2950054
  • issue/facets-3092320
  • issue/facets-3473690
  • issue/facets-3386783
  • issue/facets-3469754
  • issue/facets-3477332
  • issue/facets-3477929
  • issue/facets-3479103
  • issue/facets-3049100
  • issue/facets-3480277
  • issue/facets-3282290
  • issue/facets-3481448
  • issue/facets-3482015
  • issue/facets-3482326
  • issue/facets-3095160
  • issue/facets-3495860
  • issue/facets-3484320
  • issue/facets-3484946
  • issue/facets-3485860
  • issue/facets-3487006
  • issue/facets-3487270
  • issue/facets-3488396
  • issue/facets-3488547
  • issue/facets-3489712
  • issue/facets-3490006
  • issue/facets-3490556
  • issue/facets-3492078
  • issue/facets-3492924
  • issue/facets-3492410
  • issue/facets-3495743
  • issue/facets-3497166
  • issue/facets-3252416
  • issue/facets-3499673
  • issue/facets-3501351
  • issue/facets-3501981
  • issue/facets-3195462
  • issue/facets-3161773
  • issue/facets-3502922
  • issue/facets-3502957
  • issue/facets-3503603
  • issue/facets-3504337
  • issue/facets-3504573
  • issue/facets-3446040
  • issue/facets-3506376
  • issue/facets-3508123
  • issue/facets-3013795
  • issue/facets-3509068
  • issue/facets-3508981
  • issue/facets-3509670
282 results
Show changes
Commits on Source (4)
......@@ -18,8 +18,8 @@ search interfaces.
## REQUIREMENTS
No other modules required; we're supporting Drupal Core's search as a source for
creating facets.
No other modules are required; we're supporting Drupal Core's search as a
source for creating facets.
## RECOMMENDED MODULES
......@@ -30,7 +30,8 @@ creating facets.
## INSTALLATION
* Install as you would normally install a contributed Drupal module. Visit:
https://www.drupal.org/docs/extending-drupal/installing-modules for further information.
https://www.drupal.org/docs/extending-drupal/installing-modules
for further information.
## CONFIGURATION
......@@ -45,8 +46,8 @@ After adding one of those, you can add a facet on the facets configuration page:
admin/config/search/facets/add-facet. Use that page to add the facet by
selecting the correct facet source and field from that source.
If you're using Search API views, make sure to disable views cache when using
facets for that view.
If you're using Search API views, make sure to disable the views cache when
using facets for that view.
## KNOWN ISSUES
......@@ -56,7 +57,7 @@ the limitation is done internally after sorting on the number of results ("num")
first and then sorting by the raw value of the facet (e.g. entity-id) in the
second dimension. This can lead to edge cases when there is an equal amount of
results on facets that are exactly on the threshold of the hard limit. In this
case the raw facet value with the lower value is preferred:
case, the raw facet value with the lower value is preferred:
| num | value | label |
|-----|-------|-------|
......@@ -73,10 +74,9 @@ further details see: https://www.drupal.org/node/2834730
If you are the developer of a search API backend implementation and want
to support facets with your service class, too, you'll have to support the
"search_api_facets" feature. In short, you'll just have to return facet terms
and counts according to the query's "search_api_facets" option, when executing
a query.
For the module to be able to tell that your server supports facets,
"search_api_facets" feature. In short, when executing a query, you'll have to
return facet terms and counts according to the query's "search_api_facets"
option. For the module to be able to tell that your server supports facets,
you will also have to change your service's supportsFeature() method to
something like the following:
......@@ -99,7 +99,7 @@ $query->setOption('search_api_facets', [
'limit' => (int),
// The facet operator: "and" or "or".
'operator' => (string),
// The minimum count a filter/value must have to be returned.
// The minimum count a filter/value must have been returned.
'min_count' => (int),
// Whether to retrieve a facet for "missing" values.
'missing' => (bool),
......@@ -149,7 +149,7 @@ A filter is a string with one of the following forms:
- https://www.drupal.org/project/facets_range_input
Provides an input range form (min and max) as a processor and widget.
- https://www.drupal.org/project/facets_range_dropdowns
Provides an dropdown widget that works with the range processor.
Provides a dropdown widget that works with the range processor.
## FAQ
......@@ -167,7 +167,7 @@ See https://www.drupal.org/node/2853121 for more information.
Q: Why are facets results links from another language showing in the facet
results?
A: Facets use the same limitations as the query object passed, so when using
views, add a filter to the view to limit to one language.
views, add a filter to the view to limit it to one language.
Otherwise, this is solved by adding a `hook_search_api_query_alter()` that
limits the results to the current language.
......
......@@ -117,7 +117,7 @@ class FacetBlockAjaxController extends ControllerBase {
// Rebuild the request and the current path, needed for facets.
$path = $request->request->get('facet_link');
$facets_blocks = $request->request->get('facets_blocks');
$facets_blocks = $request->request->all()['facets_blocks'] ?? [];
if (empty($path) || empty($facets_blocks)) {
throw new NotFoundHttpException('No facet link or facet blocks found.');
......
......@@ -23,11 +23,6 @@ class BreadcrumbIntegrationTest extends FacetsTestBase {
'facets_search_api_dependency',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'classy';
/**
* {@inheritdoc}
*/
......@@ -100,7 +95,7 @@ class BreadcrumbIntegrationTest extends FacetsTestBase {
$this->drupalGet('search-api-test-fulltext', ['query' => $initial_query]);
$this->clickLink('item');
$breadcrumb = $this->getSession()->getPage()->find('css', '.breadcrumb');
$breadcrumb = $this->getSession()->getPage()->find('css', 'nav[aria-labelledby="system-breadcrumb"]');
$this->assertFalse(strpos($breadcrumb->getText(), 'Type'));
$breadcrumb->findLink('item');
......@@ -109,7 +104,7 @@ class BreadcrumbIntegrationTest extends FacetsTestBase {
$initial_query = ['search_api_fulltext' => 'foo'];
$this->drupalGet('search-api-test-fulltext', ['query' => $initial_query]);
$this->clickLink('item');
$breadcrumb = $this->getSession()->getPage()->find('css', '.breadcrumb');
$breadcrumb = $this->getSession()->getPage()->find('css', 'nav[aria-labelledby="system-breadcrumb"]');
$this->assertNotFalse(strpos($breadcrumb->getText(), 'Type'));
}
......
......@@ -179,8 +179,8 @@ class DefaultFacetManagerTest extends EntityKernelTestBase {
// Make sure that query cachebillity will include facets cache tags e.g.
// view results will depends on the facet configuration.
$this->facetManager->alterQuery($query, $facet_source);
$this->assertCacheabillityArrays($expected_contexts, $query->getCacheContexts());
$this->assertCacheabillityArrays($expected_tags, $query->getCacheTags());
$this->assertEqualsCanonicalizing($expected_contexts, $query->getCacheContexts());
$this->assertEqualsCanonicalizing($expected_tags, $query->getCacheTags());
}
/**
......@@ -219,8 +219,8 @@ class DefaultFacetManagerTest extends EntityKernelTestBase {
$metadata = CacheableMetadata::createFromObject($facet);
$metadata->applyTo($build);
$this->assertEquals($expected_metadata['max-age'], $build['#cache']['max-age']);
$this->assertCacheabillityArrays($expected_metadata['contexts'], $build['#cache']['contexts']);
$this->assertCacheabillityArrays($expected_metadata['tags'], $build['#cache']['tags']);
$this->assertEqualsCanonicalizing($expected_metadata['contexts'], $build['#cache']['contexts']);
$this->assertEqualsCanonicalizing($expected_metadata['tags'], $build['#cache']['tags']);
$facet->removeProcessor('fpc_sort_processor');
// Test that un-cacheable plugin kills the cache.
......@@ -238,8 +238,8 @@ class DefaultFacetManagerTest extends EntityKernelTestBase {
$metadata->applyTo($build);
$this->assertEquals(0, $build['#cache']['max-age']);
$this->assertCacheabillityArrays($expected_metadata['contexts'], $build['#cache']['contexts']);
$this->assertCacheabillityArrays($expected_metadata['tags'], $build['#cache']['tags']);
$this->assertEqualsCanonicalizing($expected_metadata['contexts'], $build['#cache']['contexts']);
$this->assertEqualsCanonicalizing($expected_metadata['tags'], $build['#cache']['tags']);
}
/**
......@@ -294,22 +294,6 @@ class DefaultFacetManagerTest extends EntityKernelTestBase {
}
}
/**
* Assert that actual cachebillity matches expected one.
*/
public function assertCacheabillityArrays($expected, $actual, string $message = ''): void {
foreach ([&$expected, &$actual] as &$array) {
foreach ($array as &$value) {
if (is_array($value)) {
sort($value);
}
}
}
sort($expected);
sort($actual);
$this->assertEquals($expected, $actual, $message);
}
/**
* Data provider for testBuildCacheabilityMetadata().
*
......