Skip to content
/**
* @file
* Administration styles for the Facets module.
*/
/*
* Facets overview page
*/
.facets-groups-list {
margin-bottom: 2em;
}
.facets-groups-list tr {
border-bottom: none;
}
.facets-groups-list tr.facet-source {
border-top: 1px solid #e6e4df;
}
.facets-groups-list tr.facet:last-of-type {
border-bottom: 1px solid #e6e4df;
}
.facets-groups-list tr.facet-source .facets-type,
.facets-groups-list tr.facet-source .search-api-title {
font-weight: bold;
}
.facets-groups-list tr.facet .facets-type {
padding-left: 3em;
}
/*
* Facets Display page
*/
.facets-processor-settings-sorting {
margin-bottom: -7px;
margin-left: 20px;
margin-top: -16px;
}
.facets-processor-settings-facet {
margin-left: 20px;
margin-bottom: 20px;
}
drupal.facetapi.admin_css:
version: VERSION
css:
theme:
css/facetapi.admin.css: {}
entity.facetapi_facet.add_form:
route_name: entity.facetapi_facet.add_form
title: 'Add facet'
appears_on:
- facetapi.overview
entity.facetapi_facet.edit_form:
title: 'Edit facet'
route_name: 'entity.facetapi_facet.edit_form'
group: facetapi_facet
\ No newline at end of file
entity.facetapi_facet.edit_form:
title: 'Edit'
route_name: entity.facetapi_facet.edit_form
base_route: entity.facetapi_facet.edit_form
entity.facetapi_facet.display:
title: 'Display'
route_name: entity.facetapi_facet.display_form
base_route: entity.facetapi_facet.edit_form
\ No newline at end of file
facetapi.overview:
path: '/admin/config/search/facet-api'
defaults:
_title: 'Facet API'
_entity_list: 'facetapi_facet'
requirements:
_entity_create_access: 'search_api_index'
entity.facetapi_facet.add_form:
path: '/admin/config/search/facet-api/add-facet'
defaults:
_controller: '\Drupal\facetapi\Controller\FacetController::addForm'
_title: 'Add facet'
requirements:
_entity_create_access: 'facetapi_facet'
entity.facetapi_facet.canonical:
path: '/admin/config/search/facet-api/{facetapi_facet}'
defaults:
_controller: '\Drupal\facetapi\Controller\FacetController::page'
_title_callback: '\Drupal\facetapi\Controller\FacetController::pageTitle'
requirements:
_entity_access: 'facetapi_facet.view'
entity.facetapi_facet.edit_form:
path: '/admin/config/search/facet-api/{facetapi_facet}/edit'
defaults:
_controller: '\Drupal\facetapi\Controller\FacetController::editForm'
_title: 'Add facet'
requirements:
_entity_access: 'facetapi_facet.edit'
entity.facetapi_facet.delete_form:
path: '/admin/config/search/facet-api/{facetapi_facet}/delete'
defaults:
_entity_form: 'facetapi_facet.delete'
requirements:
_entity_access: 'facetapi_facet.delete'
entity.facetapi_facet.display_form:
path: '/admin/config/search/facet-api/{facetapi_facet}/display'
defaults:
_entity_form: 'facetapi_facet.display'
requirements:
_entity_access: 'facetapi_facet.edit'
services:
plugin.manager.facetapi.query_type:
class: Drupal\facetapi\QueryType\QueryTypePluginManager
parent: default_plugin_manager
plugin.manager.facetapi.widget:
class: Drupal\facetapi\Widget\WidgetPluginManager
parent: default_plugin_manager
plugin.manager.facetapi.facet_source:
class: Drupal\facetapi\FacetSource\FacetSourcePluginManager
parent: default_plugin_manager
plugin.manager.facetapi.processor:
class: Drupal\facetapi\Processor\ProcessorPluginManager
arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@string_translation']
plugin.manager.facetapi.empty_behavior:
class: Drupal\facetapi\EmptyBehavior\EmptyBehaviorPluginManager
parent: default_plugin_manager
facetapi.manager:
class: Drupal\facetapi\FacetManager\DefaultFacetManager
arguments:
- '@plugin.manager.facetapi.query_type'
- '@plugin.manager.facetapi.widget'
- '@plugin.manager.facetapi.facet_source'
- '@plugin.manager.facetapi.processor'
- '@plugin.manager.facetapi.empty_behavior'
- '@entity_type.manager'
facetapi.facet_context:
class: Drupal\facetapi\ContextProvider\FacetContextProvider
arguments: ['@entity_type.manager']
tags:
- { name: context_provider }
<?php
/**
* @file
* Hooks provided by the Facet API module.
* Hooks provided by the Facets module.
*/
/**
......@@ -10,7 +10,7 @@
*/
/**
* Alter the Facet API Query Type mapping.
* Alter the Facets Query Type mapping.
*
* Modules may implement this hook to alter the mapping that defines how a
* certain data type should be handled in Search API based Facets.
......@@ -18,9 +18,9 @@
* @param array $query_types
* The Search API backend info array, keyed by backend ID.
*
* @see \Drupal\facetapi\Plugin\facetapi\facet_source\SearchApiBaseFacetSource
* @see \Drupal\facets\Plugin\facets\facet_source\SearchApiBaseFacetSource
*/
function hook_facetapi_search_api_query_type_mapping_alter($backend_plugin_id, array &$query_types) {
function hook_facets_search_api_query_type_mapping_alter($backend_plugin_id, array &$query_types) {
if ($backend_plugin_id == 'search_api_solr') {
$query_types['string'] = 'search_api_solr_string';
}
......
name: 'Facet API'
name: 'Facets'
type: module
description: 'Faceted search interfaces that can be used on Search API searchers.'
core: 8.x
package: Search
configure: facets.overview
test_dependencies:
- search_api:search_api
- drupal:views
drupal.facets.index-active-formatters:
version: VERSION
js:
js/index-active-formatters.js: {}
dependencies:
- core/jquery
- core/drupal
- core/jquery.once
drupal.facets.admin_css:
version: VERSION
css:
theme:
css/facets.admin.css: {}
entity.facets_facet.add_form:
route_name: entity.facets_facet.add_form
title: 'Add facet'
appears_on:
- facets.overview
entity.facets_facet.display_form:
title: 'Configure facet display'
route_name: 'entity.facets_facet.display_form'
group: facets_facet
\ No newline at end of file
facetapi.overview:
title: Facet API
facets.overview:
title: Facets
description: 'Configure facets for Search API searchers.'
route_name: facetapi.overview
route_name: facets.overview
weight: 30
parent: system.admin_config_search
entity.facets_facet.edit_form:
title: 'Edit'
route_name: entity.facets_facet.edit_form
base_route: entity.facets_facet.edit_form
entity.facets_facet.display:
title: 'Display'
route_name: entity.facets_facet.display_form
base_route: entity.facets_facet.edit_form
\ No newline at end of file
......@@ -2,26 +2,24 @@
/**
* @file
* Contains facetapi.module
* Contains facets.module
*/
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\search_api\Query\QueryInterface;
use Drupal\facetapi\FacetInterface;
/**
* Implements hook_help().
*/
function facetapi_help($route_name, RouteMatchInterface $route_match) {
function facets_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
// Main module help for the facetapi module.
case 'help.page.facetapi':
// Main module help for the facets module.
case 'help.page.facets':
$output = '';
$output .= '<h3>' . t('About') . '</h3>';
$output .= '<p>' . t('Facetapi test') . '</p>';
$output .= '<p>' . t('Facets test') . '</p>';
return $output;
case 'facetapi.overview':
case 'facets.overview':
return t('Below is a list of facets grouped by facetsources they are associated with. A facetsource is the instance where the facet does the actual filtering, e.g. a View on a Search API index.');
}
}
......@@ -31,9 +29,9 @@ function facetapi_help($route_name, RouteMatchInterface $route_match) {
*
* @param \Drupal\search_api\Query\QueryInterface $query
*/
function facetapi_search_api_query_alter(QueryInterface &$query) {
/** @var \Drupal\facetapi\FacetManager\DefaultFacetManager $facet_manager */
$facet_manager = \Drupal::service('facetapi.manager');
function facets_search_api_query_alter(QueryInterface &$query) {
/** @var \Drupal\facets\FacetManager\DefaultFacetManager $facet_manager */
$facet_manager = \Drupal::service('facets.manager');
$search_id = $query->getOption('search id');
......
'administer facetapi':
title: 'Administer Facet Api'
'administer facets':
title: 'Administer Facets'
description: 'Create and configure Facets for your Search pages.'
facets_processor:
label: Facets processor
plugin_manager_service_id: plugin.manager.facets.processor
plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
facets_url_processor:
label: Facets URL processor
plugin_manager_service_id: plugin.manager.facets.url_processor
plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
facets_facet_source:
label: Facets source
plugin_manager_service_id: plugin.manager.facets.facet_source
plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
facets_widget:
label: Facets widget
plugin_manager_service_id: plugin.manager.facets.widget
plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
facets_query_type:
label: Facets query type
plugin_manager_service_id: plugin.manager.facets.query_type
plugin_definition_decorator_class: \Drupal\plugin\PluginDefinition\ArrayPluginDefinitionDecorator
facets.overview:
path: '/admin/config/search/facets'
defaults:
_title: 'Facets'
_entity_list: 'facets_facet'
requirements:
_entity_create_access: 'facets_facet'
entity.facets_facet.add_form:
path: '/admin/config/search/facets/add-facet'
defaults:
_entity_form: 'facets_facet.default'
requirements:
_entity_create_access: 'facets_facet'
entity.facets_facet.canonical:
path: '/admin/config/search/facets/{facets_facet}'
defaults:
_controller: '\Drupal\facets\Controller\FacetController::page'
_title_callback: '\Drupal\facets\Controller\FacetController::pageTitle'
requirements:
_entity_access: 'facets_facet.view'
entity.facets_facet.edit_form:
path: '/admin/config/search/facets/{facets_facet}/edit'
defaults:
_entity_form: 'facets_facet.edit'
requirements:
_entity_access: 'facets_facet.edit'
entity.facets_facet.delete_form:
path: '/admin/config/search/facets/{facets_facet}/delete'
defaults:
_entity_form: 'facets_facet.delete'
requirements:
_entity_access: 'facets_facet.delete'
entity.facets_facet.display_form:
path: '/admin/config/search/facets/{facets_facet}/display'
defaults:
_entity_form: 'facets_facet.display'
requirements:
_entity_access: 'facets_facet.edit'
entity.facets_facet_source.edit_form:
path: '/admin/config/search/facets/facet-sources/{source_id}/edit'
defaults:
_controller: '\Drupal\facets\Controller\FacetSourceController::facetSourceConfigForm'
_title: 'Edit facet source configuration'
requirements:
_entity_create_access: 'facets_facet'
services:
plugin.manager.facets.query_type:
class: Drupal\facets\QueryType\QueryTypePluginManager
parent: default_plugin_manager
plugin.manager.facets.widget:
class: Drupal\facets\Widget\WidgetPluginManager
parent: default_plugin_manager
plugin.manager.facets.facet_source:
class: Drupal\facets\FacetSource\FacetSourcePluginManager
parent: default_plugin_manager
plugin.manager.facets.processor:
class: Drupal\facets\Processor\ProcessorPluginManager
arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@string_translation']
plugin.manager.facets.url_processor:
class: Drupal\facets\UrlProcessor\UrlProcessorPluginManager
parent: default_plugin_manager
facets.manager:
class: Drupal\facets\FacetManager\DefaultFacetManager
arguments:
- '@plugin.manager.facets.query_type'
- '@plugin.manager.facets.widget'
- '@plugin.manager.facets.facet_source'
- '@plugin.manager.facets.processor'
- '@entity_type.manager'
/**
* @file
* Attaches show/hide functionality to checkboxes in the "Processor" tab.
*/
(function ($) {
"use strict";
Drupal.behaviors.facetsIndexFormatter = {
attach: function (context, settings) {
$('.search-api-status-wrapper input.form-checkbox', context).each(function () {
var $checkbox = $(this);
var processor_id = $checkbox.data('id');
var $rows = $('.search-api-processor-weight--' + processor_id, context);
var tab = $('.search-api-processor-settings-' + processor_id, context).data('verticalTab');
// Bind a click handler to this checkbox to conditionally show and hide
// the processor's table row and vertical tab pane.
$checkbox.on('click.searchApiUpdate', function () {
if ($checkbox.is(':checked')) {
$rows.show();
if (tab) {
tab.tabShow().updateSummary();
}
}
else {
$rows.hide();
if (tab) {
tab.tabHide().updateSummary();
}
}
});
// Attach summary for configurable items (only for screen-readers).
if (tab) {
tab.details.drupalSetSummary(function () {
return $checkbox.is(':checked') ? Drupal.t('Enabled') : Drupal.t('Disabled');
});
}
// Trigger our bound click handler to update elements to initial state.
$checkbox.triggerHandler('click.searchApiUpdate');
});
}
};
})(jQuery);