JoomlaPolska / jezyk-J4

Język polski dla Joomla 4
GNU General Public License v2.0
3 stars 5 forks source link

[5.0] Smart Search: Allow to select which taxonomies to index #352

Closed joomlapl-bot closed 7 months ago

joomlapl-bot commented 1 year ago

PR w związku ze zmianą oryginału https://github.com/joomla/joomla-cms/pull/36867 Poniżej zmiany w oryginale:

Click to expand the diff! ```diff diff --git a/administrator/components/com_finder/src/Field/TaxonomytypesField.php b/administrator/components/com_finder/src/Field/TaxonomytypesField.php new file mode 100644 index 000000000000..f8f763f22726 --- /dev/null +++ b/administrator/components/com_finder/src/Field/TaxonomytypesField.php @@ -0,0 +1,50 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +namespace Joomla\Component\Finder\Administrator\Field; + +use Joomla\CMS\Form\Field\CheckboxesField; + +/** + * Taxonomy Types field for the Finder package. + * This is a helper to allow to save an empty set of + * options by having a hidden field with a "none" value. + * + * @since __DEPLOY_VERSION__ + */ +class TaxonomytypesField extends CheckboxesField +{ + /** + * The form field type. + * + * @var string + * @since __DEPLOY_VERSION__ + */ + protected $type = 'TaxonomyTypes'; + + /** + * Method to get the field input markup for a generic list. + * Use the multiple attribute to enable multiselect. + * + * @return string The field input markup. + * + * @since __DEPLOY_VERSION__ + */ + protected function getInput() + { + $html = parent::getInput(); + + $data = $this->getLayoutData(); + $data['id'] .= '_hidden'; + $data['value'] = 'none'; + + return $html . $this->getRenderer('joomla.form.field.hidden')->render($data); + } +} diff --git a/administrator/language/en-GB/plg_finder_categories.ini b/administrator/language/en-GB/plg_finder_categories.ini index d97f8c763fe8..62e086af6adf 100644 --- a/administrator/language/en-GB/plg_finder_categories.ini +++ b/administrator/language/en-GB/plg_finder_categories.ini @@ -5,3 +5,6 @@ PLG_FINDER_CATEGORIES="Smart Search - Categories" PLG_FINDER_CATEGORIES_XML_DESCRIPTION="This plugin indexes Joomla! Categories." +PLG_FINDER_CATEGORIES_TAXONOMIES_LABEL="Taxonomies to Index" +PLG_FINDER_CATEGORIES_TAXONOMIES_LANGUAGE="Language" +PLG_FINDER_CATEGORIES_TAXONOMIES_TYPE="Type" diff --git a/administrator/language/en-GB/plg_finder_contacts.ini b/administrator/language/en-GB/plg_finder_contacts.ini index f7ca24805624..d55214f36b51 100644 --- a/administrator/language/en-GB/plg_finder_contacts.ini +++ b/administrator/language/en-GB/plg_finder_contacts.ini @@ -5,6 +5,12 @@ PLG_FINDER_CONTACTS="Smart Search - Contacts" PLG_FINDER_CONTACTS_XML_DESCRIPTION="This plugin indexes Joomla! Contacts." +PLG_FINDER_CONTACTS_TAXONOMIES_CATEGORY="Category" +PLG_FINDER_CONTACTS_TAXONOMIES_COUNTRY="Country" +PLG_FINDER_CONTACTS_TAXONOMIES_LABEL="Taxonomies to Index" +PLG_FINDER_CONTACTS_TAXONOMIES_LANGUAGE="Language" +PLG_FINDER_CONTACTS_TAXONOMIES_REGION="Region" +PLG_FINDER_CONTACTS_TAXONOMIES_TYPE="Type" PLG_FINDER_QUERY_FILTER_BRANCH_P_CONTACT="Contacts" PLG_FINDER_QUERY_FILTER_BRANCH_P_COUNTRY="Countries" PLG_FINDER_QUERY_FILTER_BRANCH_P_REGION="Regions" diff --git a/administrator/language/en-GB/plg_finder_content.ini b/administrator/language/en-GB/plg_finder_content.ini index 8666746f3b9a..4a58a44c7c39 100644 --- a/administrator/language/en-GB/plg_finder_content.ini +++ b/administrator/language/en-GB/plg_finder_content.ini @@ -4,6 +4,11 @@ ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CONTENT="Smart Search - Content" +PLG_FINDER_CONTENT_TAXONOMIES_AUTHOR="Author" +PLG_FINDER_CONTENT_TAXONOMIES_CATEGORY="Category" +PLG_FINDER_CONTENT_TAXONOMIES_LABEL="Taxonomies to Index" +PLG_FINDER_CONTENT_TAXONOMIES_LANGUAGE="Language" +PLG_FINDER_CONTENT_TAXONOMIES_TYPE="Type" PLG_FINDER_CONTENT_XML_DESCRIPTION="Updates the indexes of Joomla! Articles whenever an article is created, modified or deleted. NOTE the Content - Smart Search plugin must be enabled." PLG_FINDER_QUERY_FILTER_BRANCH_P_ARTICLE="Articles" PLG_FINDER_QUERY_FILTER_BRANCH_P_AUTHOR="Authors" diff --git a/administrator/language/en-GB/plg_finder_newsfeeds.ini b/administrator/language/en-GB/plg_finder_newsfeeds.ini index c3a6c37ade57..e311469ada5a 100644 --- a/administrator/language/en-GB/plg_finder_newsfeeds.ini +++ b/administrator/language/en-GB/plg_finder_newsfeeds.ini @@ -5,5 +5,9 @@ PLG_FINDER_NEWSFEEDS="Smart Search - News Feeds" PLG_FINDER_NEWSFEEDS_XML_DESCRIPTION="This plugin indexes Joomla! News feeds." +PLG_FINDER_NEWSFEEDS_TAXONOMIES_CATEGORY="Category" +PLG_FINDER_NEWSFEEDS_TAXONOMIES_LABEL="Taxonomies to Index" +PLG_FINDER_NEWSFEEDS_TAXONOMIES_LANGUAGE="Language" +PLG_FINDER_NEWSFEEDS_TAXONOMIES_TYPE="Type" PLG_FINDER_QUERY_FILTER_BRANCH_P_NEWS_FEED="News feeds" PLG_FINDER_QUERY_FILTER_BRANCH_S_NEWS_FEED="News feed" diff --git a/administrator/language/en-GB/plg_finder_tags.ini b/administrator/language/en-GB/plg_finder_tags.ini index 9ddbd0c01124..14b009a250aa 100644 --- a/administrator/language/en-GB/plg_finder_tags.ini +++ b/administrator/language/en-GB/plg_finder_tags.ini @@ -7,3 +7,7 @@ PLG_FINDER_QUERY_FILTER_BRANCH_P_TAG="Tags" PLG_FINDER_QUERY_FILTER_BRANCH_S_TAG="Tag" PLG_FINDER_TAGS="Smart Search - Tags" PLG_FINDER_TAGS_XML_DESCRIPTION="This plugin indexes Joomla! Tags." +PLG_FINDER_TAGS_TAXONOMIES_AUTHOR="Author" +PLG_FINDER_TAGS_TAXONOMIES_LABEL="Taxonomies to Index" +PLG_FINDER_TAGS_TAXONOMIES_LANGUAGE="Language" +PLG_FINDER_TAGS_TAXONOMIES_TYPE="Type" diff --git a/plugins/finder/categories/categories.xml b/plugins/finder/categories/categories.xml index 337b2dd77d13..20838b34bdb3 100644 --- a/plugins/finder/categories/categories.xml +++ b/plugins/finder/categories/categories.xml @@ -18,4 +18,20 @@ language/en-GB/plg_finder_categories.ini language/en-GB/plg_finder_categories.sys.ini + + +
+ + + + +
+
+
diff --git a/plugins/finder/categories/src/Extension/Categories.php b/plugins/finder/categories/src/Extension/Categories.php index 396c0eee1b61..ef31ca18d73e 100644 --- a/plugins/finder/categories/src/Extension/Categories.php +++ b/plugins/finder/categories/src/Extension/Categories.php @@ -335,11 +335,18 @@ protected function index(Result $item) // Translate the state. Categories should only be published if the parent category is published. $item->state = $this->translateState($item->state); + // Get taxonomies to display + $taxonomies = $this->params->get('taxonomies', ['type', 'language']); + // Add the type taxonomy data. - $item->addTaxonomy('Type', 'Category'); + if (in_array('type', $taxonomies)) { + $item->addTaxonomy('Type', 'Category'); + } // Add the language taxonomy data. - $item->addTaxonomy('Language', $item->language); + if (in_array('language', $taxonomies)) { + $item->addTaxonomy('Language', $item->language); + } // Get content extras. Helper::getContentExtras($item); diff --git a/plugins/finder/contacts/contacts.xml b/plugins/finder/contacts/contacts.xml index 4aebc5bd728a..6afe144f6eb3 100644 --- a/plugins/finder/contacts/contacts.xml +++ b/plugins/finder/contacts/contacts.xml @@ -18,4 +18,23 @@ language/en-GB/plg_finder_contacts.ini language/en-GB/plg_finder_contacts.sys.ini + + +
+ + + + + + + +
+
+
diff --git a/plugins/finder/contacts/src/Extension/Contacts.php b/plugins/finder/contacts/src/Extension/Contacts.php index 0ee4955acc8c..293366e318d5 100644 --- a/plugins/finder/contacts/src/Extension/Contacts.php +++ b/plugins/finder/contacts/src/Extension/Contacts.php @@ -333,30 +333,39 @@ protected function index(Result $item) // Handle the contact user name. $item->addInstruction(Indexer::META_CONTEXT, 'user'); + // Get taxonomies to display + $taxonomies = $this->params->get('taxonomies', ['type', 'category', 'language', 'region', 'country']); + // Add the type taxonomy data. - $item->addTaxonomy('Type', 'Contact'); + if (in_array('type', $taxonomies)) { + $item->addTaxonomy('Type', 'Contact'); + } // Add the category taxonomy data. $categories = $this->getApplication()->bootComponent('com_contact')->getCategory(['published' => false, 'access' => false]); $category = $categories->get($item->catid); - // Category does not exist, stop here if (!$category) { return; } - $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + // Add the category taxonomy data. + if (in_array('category', $taxonomies)) { + $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + } // Add the language taxonomy data. - $item->addTaxonomy('Language', $item->language); + if (in_array('language', $taxonomies)) { + $item->addTaxonomy('Language', $item->language); + } // Add the region taxonomy data. - if (!empty($item->region) && $this->params->get('tax_add_region', true)) { + if (in_array('region', $taxonomies) && !empty($item->region) && $this->params->get('tax_add_region', true)) { $item->addTaxonomy('Region', $item->region); } // Add the country taxonomy data. - if (!empty($item->country) && $this->params->get('tax_add_country', true)) { + if (in_array('country', $taxonomies) && !empty($item->country) && $this->params->get('tax_add_country', true)) { $item->addTaxonomy('Country', $item->country); } diff --git a/plugins/finder/content/content.xml b/plugins/finder/content/content.xml index d5b79e0403b8..03fbccf34988 100644 --- a/plugins/finder/content/content.xml +++ b/plugins/finder/content/content.xml @@ -18,4 +18,22 @@ language/en-GB/plg_finder_content.ini language/en-GB/plg_finder_content.sys.ini + + +
+ + + + + + +
+
+
diff --git a/plugins/finder/content/src/Extension/Content.php b/plugins/finder/content/src/Extension/Content.php index b1ca7fd98ce9..041fdc68cd85 100644 --- a/plugins/finder/content/src/Extension/Content.php +++ b/plugins/finder/content/src/Extension/Content.php @@ -305,11 +305,16 @@ protected function index(Result $item) // Translate the state. Articles should only be published if the category is published. $item->state = $this->translateState($item->state, $item->cat_state); + // Get taxonomies to display + $taxonomies = $this->params->get('taxonomies', ['type', 'author', 'category', 'language']); + // Add the type taxonomy data. - $item->addTaxonomy('Type', 'Article'); + if (in_array('type', $taxonomies)) { + $item->addTaxonomy('Type', 'Article'); + } // Add the author taxonomy data. - if (!empty($item->author) || !empty($item->created_by_alias)) { + if (in_array('author', $taxonomies) && (!empty($item->author) || !empty($item->created_by_alias))) { $item->addTaxonomy('Author', !empty($item->created_by_alias) ? $item->created_by_alias : $item->author, $item->state); } @@ -317,15 +322,19 @@ protected function index(Result $item) $categories = $this->getApplication()->bootComponent('com_content')->getCategory(['published' => false, 'access' => false]); $category = $categories->get($item->catid); - // Category does not exist, stop here if (!$category) { return; } - $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + // Add the category taxonomy data. + if (in_array('category', $taxonomies)) { + $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + } // Add the language taxonomy data. - $item->addTaxonomy('Language', $item->language); + if (in_array('language', $taxonomies)) { + $item->addTaxonomy('Language', $item->language); + } // Get content extras. Helper::getContentExtras($item); diff --git a/plugins/finder/newsfeeds/newsfeeds.xml b/plugins/finder/newsfeeds/newsfeeds.xml index e31e27ddff8b..9d6d67c15582 100644 --- a/plugins/finder/newsfeeds/newsfeeds.xml +++ b/plugins/finder/newsfeeds/newsfeeds.xml @@ -18,4 +18,21 @@ language/en-GB/plg_finder_newsfeeds.ini language/en-GB/plg_finder_newsfeeds.sys.ini + + +
+ + + + + +
+
+
diff --git a/plugins/finder/newsfeeds/src/Extension/Newsfeeds.php b/plugins/finder/newsfeeds/src/Extension/Newsfeeds.php index 130489c47e45..15a6f7044f82 100644 --- a/plugins/finder/newsfeeds/src/Extension/Newsfeeds.php +++ b/plugins/finder/newsfeeds/src/Extension/Newsfeeds.php @@ -281,22 +281,31 @@ protected function index(Result $item) $item->addInstruction(Indexer::META_CONTEXT, 'author'); $item->addInstruction(Indexer::META_CONTEXT, 'created_by_alias'); + // Get taxonomies to display + $taxonomies = $this->params->get('taxonomies', ['type', 'category', 'language']); + // Add the type taxonomy data. - $item->addTaxonomy('Type', 'News Feed'); + if (in_array('type', $taxonomies)) { + $item->addTaxonomy('Type', 'News Feed'); + } // Add the category taxonomy data. $categories = $this->getApplication()->bootComponent('com_newsfeeds')->getCategory(['published' => false, 'access' => false]); $category = $categories->get($item->catid); - // Category does not exist, stop here if (!$category) { return; } - $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + // Add the category taxonomy data. + if (in_array('category', $taxonomies)) { + $item->addNestedTaxonomy('Category', $category, $this->translateState($category->published), $category->access, $category->language); + } // Add the language taxonomy data. - $item->addTaxonomy('Language', $item->language); + if (in_array('language', $taxonomies)) { + $item->addTaxonomy('Language', $item->language); + } // Get content extras. Helper::getContentExtras($item); diff --git a/plugins/finder/tags/src/Extension/Tags.php b/plugins/finder/tags/src/Extension/Tags.php index 7fcbcbd912c7..555ed298f4d7 100644 --- a/plugins/finder/tags/src/Extension/Tags.php +++ b/plugins/finder/tags/src/Extension/Tags.php @@ -246,16 +246,23 @@ protected function index(Result $item) $item->addInstruction(Indexer::META_CONTEXT, 'author'); $item->addInstruction(Indexer::META_CONTEXT, 'created_by_alias'); + // Get taxonomies to display + $taxonomies = $this->params->get('taxonomies', ['type', 'author', 'language']); + // Add the type taxonomy data. - $item->addTaxonomy('Type', 'Tag'); + if (in_array('type', $taxonomies)) { + $item->addTaxonomy('Type', 'Tag'); + } // Add the author taxonomy data. - if (!empty($item->author) || !empty($item->created_by_alias)) { + if (in_array('author', $taxonomies) && (!empty($item->author) || !empty($item->created_by_alias))) { $item->addTaxonomy('Author', !empty($item->created_by_alias) ? $item->created_by_alias : $item->author); } // Add the language taxonomy data. - $item->addTaxonomy('Language', $item->language); + if (in_array('language', $taxonomies)) { + $item->addTaxonomy('Language', $item->language); + } // Get content extras. Helper::getContentExtras($item); diff --git a/plugins/finder/tags/tags.xml b/plugins/finder/tags/tags.xml index 0f2951a8850b..1a259abe98eb 100644 --- a/plugins/finder/tags/tags.xml +++ b/plugins/finder/tags/tags.xml @@ -18,4 +18,21 @@ language/en-GB/plg_finder_tags.ini language/en-GB/plg_finder_tags.sys.ini + + +
+ + + + + +
+
+
```