collective.collectionfilter


Namecollective.collectionfilter JSON
Version 5.2.0 PyPI version JSON
download
home_pagehttp://github.com/collective/collective.collectionfilter
SummaryPlone addon for filtering collection results.
upload_time2023-09-27 11:37:58
maintainer
docs_urlNone
authorJohannes Raggam
requires_python>=3.8
licenseGPL
keywords plone collection filter faceted tagcloud tags
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            collective.collectionfilter
===========================

|CI| |Meta|

.. |CI| image:: https://github.com/collective/collective.collectionfilter/actions/workflows/main.yml/badge.svg
   :target: https://github.com/collective/collective.collectionfilter/actions/workflows/main.yml

.. |Meta| image:: https://github.com/collective/collective.collectionfilter/actions/workflows/meta.yml/badge.svg
   :target: https://github.com/collective/collective.collectionfilter/actions/workflows/meta.yml


Faceted navigation filter for collection or contentlisting tiles.

This Plone 5 addon allows you to filter listing results for fields which are indexed in the catalog
(Plones internal search tool).
For example, you can add a subject filter, but also a filter for authors or portal types.

The filter types can be extended (see: ``collective.collectionfilter.vocabularies``).

There are three portlets/tiles available for filtering:

``Collection Filter``
    a list with values (select, radio, checkbox, link) you can filter on
``Collection Search``
    a SearchableText input field to do a fulltextsearch on the collection results
``Collection Maps``
    a LeafletJS map which shows and filters ``IGeolocatable`` items on it
    (this feature is available if ``collective.geolocationbehavior`` is installed and the behavior
    is activated on a contenttype. See installation notes below)
``Collection Result Listing Sort``
    a list of indexes where the user can sort the filtered result listing
``Collection Filter Reset``
    a link to reset all filters


Filter Results of Collections
-----------------------------

Add as many filter/search portlets directly to a collection.

When you select values from the filter the results are loaded asynchronously onto the page (no page refresh).
Unless you turn off ajax loading in the registry or are using Plone 5.0. If you are using special theme or view template
you can customize ``Content Selector`` and/or ```View Template``` to ensure ajax loading works correctly.
Make sure the selector exists on the source collection template and on the target page which shows the filtered results.

It is also possible to use filter portlets that aren't directly on a collection by specifying a target collection.
To use ajax loading you will need to ensure your content selector is visible on the page. If not using ajax loading selecting a filter
option will redirect you to the collection.


Mosaic Integration
------------------

Use the package extra to install the required dependencies::

    [buildout]
    ...
    eggs +=
        collective.collectionfilter[mosaic]
    ...

The three tiles can be added within the Mosaic editor multiple times. Just select them in the ``Insert`` menu
and assign a collection to it. To show the results of the collection simply add a
``Content Listing`` tile.

It's possible to use multiple content listings and multiple filters on the same page by specifying additional unique classes in
the listing tiles settings and then adding these classes to the ``Content Selector`` setting of the filter tile.

If you want to use filter tiles with a collection then add a content listing tile with the setting to use the query from the context.
It is also possible to use the ``Embed content`` tile if there is a unique selector on your collection view.



Geolocation filter support
--------------------------

If ``collective.geolocationbehavior`` is installed, this package provides a LeafletJS Maps tile/portlet
which shows each item of a collection result if the ``IGeolocatable`` information is available.
In addition you can activate the ``Narrow down results`` checkbox to narrow down the collection result and
other available filter tiles/portlets if the user moves or zooms the map.

We provide a package extra to install all required dependencies with their according versions.
Simply do this somewhere in your buildout::

    [buildout]
    ...
    eggs +=
        collective.collectionfilter[geolocation]
    ...


Overloading GroupByCriteria
---------------------------

``collective.collectionfilter.vocabularies.GroupByCriteria`` is a singleton, registered as global utility and used to provide a list of possible indices, which grouped values will provide your filter criteria.

It uses a data structure like this::

    self._groupby = {
        it: {                   # Index name
            'index': it,             # Name of the index to use
            'metadata': it,          # Name of the metadata column to use
            'display_modifier': _ ,  # Function to prepare the metadata column value for displaying
            'index_modifier': None,  # Function to transform the index search value.
            'value_blacklist': [],   # Blacklist of index values, which should not included in the filter selection. Can be a callable.
            'sort_key_function': lambda it: it['title'].lower(),  # sort key function. defaults to a lower-cased title
        }
        for it in metadata
    }

As you can see, the standard GroupByCriteriaVocabulary implementation implies, that the index name is the same as the metadata column name.
Also, we use the ``collective.collectionfilter`` message catalog as standard display_modifier (you can register translations under the ``collective.collectionfilter`` domain to translate index values).

If you need a special ``display_modifier``, or index or metadata columns do not have the same identifier, you can modify this data structure.
For that, register an adapter for ``IGroupByModifier``, which adapts to the GroupByCriteria utility.
Within this adapter, you can modify the already populated ``_groupby`` attribute (do not use the ``groupby``, which is a property method and at this point hasn't finished).

This is how.

Write an adapter::

    # -*- coding: utf-8 -*-
    from collective.collectionfilter.interfaces import IGroupByCriteria
    from collective.collectionfilter.interfaces import IGroupByModifier
    from zope.component import adapter
    from zope.interface import implementer


    sort_map = {
        'VALUE1': 3,
        'VALUE2': 1,
        'VALUE3': 2,
    }


    def subjectsort(it):
        # Sorts the value after a fixed sort map
        val = it['title']
        return sort_map.get(val, 0)


    @implementer(IGroupByModifier)
    @adapter(IGroupByCriteria)
    def groupby_modifier(groupby):
        groupby._groupby['Subject']['display_modifier'] = lambda x, idx: x.upper()
        groupby._groupby['Subject']['sort_key_function'] = subjectsort
        groupby._groupby['my_new_index'] = {
            'index': 'my_new_index',
            'metadata': 'my_new_index_metadata_colum',
            'display_modifier': lambda it, idx: u'this is awesome: {0}'.format(it)
        }

Register the adapter::

    <configure xmlns="http://namespaces.zope.org/zope">
      <adapter factory=".collectionfilter.groupby_modifier" name="modifier_1" />
    </configure>

Done.

Your adapter is called by ``collective.collectionfilter.vocabularies.GroupByCriteria.groupby``.

Compatibility
-------------

- Version 5.x is compatible with Plone 6.x+
- Version 4.x is compatible with Plone 5.2+
- Version 3.x is compatible with Plone 5.0.x and 5.1.x

If your theme doesn't work well with AJAX loading this can be overridden in the registry or via diazo.

Author
------

- Johannes Raggam
- Peter Holzer

This package is based on ``collective.portlet.collectionfilter`` and ``collective.portlet.collectionbysubject``.


5.2.0 (2023-09-27)
------------------

New features:


- Add a Reset Button to Reset all Filters.
  [toalba, jensens] (reset-button)


Bug fixes:


- Fix German label from 'Portlet Titel' to 'Filtertitel'.
  [jensens] (detranslation)


5.1.1 (2023-08-08)
------------------

New features:


- Implement CSS class for disabling `collectionfilter:reload` event when
  links in enhanced custom filter templates  are designed for other actions
  (eg. dropdowns or collapsibles).
  [petschki] (#201)


Bug fixes:


- Fix selecting default `content_selector` for mosaic pages with contentlisting tile.
  [petschki] (#202)


5.1 (2023-08-02)
----------------

Bug fixes:


- Fix filter tiles when more than one contentlisting is on the same page.
  [petschki] (#150)


Internal:


- Update configuration files.
  [plone devs] (8af8caab)


Changelog
=========

5.1 (unreleased)
----------------

- Nothing changed yet.


5.0 (2023-06-07)
----------------

- implement `geojson_ajaxurl` property for `pat-leaflet` to load geojson
  information asynchronously.
  [petschki]

- Fix translations for swiss german
  [agitator]


5.0a2 (2022-06-20)
------------------

- Updated classifiers
  [petschki]


5.0a1 (2022-06-20)
------------------

Breaking Change:

- add Plone 6 ES6 compatible Bundle
- add Plone 6 ES6 compatible JS and SCSS resources
- add Plone 6 Javascript Bundle Infrastructure
- update Portlet Template, Plone 6 ready, use the 'cards' Element
- add Upgrade Step to remove old registry settings
- increment Version in Metadata
- add tox Test Instrastructure
- update github workflow, remove Plone 5 from matrix
  [1letter]


4.0 (2022-05-10)
----------------

Breaking Change:

- Remove Plone 5.0 and 5.1 support.
  [petschki]

- Add idx parameter to display_modifier call, so that we can use the index name to resolve the correct translated
  taxonomy titles in collective.taxonomy. This means that the display_modifier method in the groupby_modifier adapters
  needs to expect this parameter too!
  [MrTango]

Features:

- Add checkbox to reverse output the filters.
  [jensens]

- Support and Test Plone 6.
  [jensens]

- Add a module global COLLECTIONISH_TARGETS to c.c.tiles to register other tiles with collections than plone.app.standardtiles.contentlisting.
  [jensens]

Bug Fixes:

- Fix `b_start` in tiles, where the key is pre/postfixed.
  Removes those from new filters too, in order to not be on a page that does not exist for the new filtered result.
  [jensens]

- Not every metadata entry has an index with same name.
  Ignore if not a pair.
  [jensens]

- Fix/Workaround for #59 (Int fields in indexes are not working).
  [jensens]

- Hide uninstall profiles from install view.
  [jensens]

- Fix edge cases where "All" wasn't translated.
  [agitator]

- Ensure a `GroupByCriteria`'s `sort_key_function` function `lower()` call gets a string.
  [jensens]

- Fixed searches for only non-alphanumeric characters causing an exception to be displayed.
  [JeffersonBledsoe]


Other:

- Code-Style Black and Isort
  [jensens]


3.5.1 (2021-05-26)
------------------

- Updated de and ch-de translations
  [agitator]


3.5 (2021-05-26)
----------------

- Use collection from context as default. `target_collection` is now used to select an alternative collection as result source.
  This allows to copy and paste preconfigured collections for reuse without reconfiguring each filter element.
  [agitator]

- Fix search which include the terms "and", "or" and "not"
  [jeffersonbledsoe]


3.4.2 (2021-02-25)
------------------

- Do not render filter tiles when page gets AJAX loaded
  [petschki]
- Do not add hidden field ``collectionfilter`` multiple times. Fixes #116
  [petschki]


3.4.1 (2020-06-18)
------------------

- Separated translation display_modifier for portal_type and Type.
  [iham]


3.4 (2020-06-16)
----------------

Features:

- Add sorting tile/portlet to populate selected sort indexes to enduser
  [petschki]
- Added translation display_modifier for portal_type and Type.
  [iham]

Bug fixes:

- fix ``filter_type`` for indexes without ``operator`` capability. Fixes #74
  [petschki]


3.3 (2020-01-22)
----------------

- Fix is_available property
  [agitator]
- Added css_modifier to extend css class of a filter item
  [agitator]
- Fix check for boolean values.
  [tmassman]
- fix translation of ``filter_value``
  [petschki]


3.2.1 (2019-08-07)
------------------

Bug fixes:

- fix bug introduced with pattern option ``ajaxLoad``
  [petschki]


3.2 (2019-07-23)
----------------

Features:

- Restore 5.0.x compatibility
  [djay, quang]
- Make ajax loading of results and portlets a pattern option is themers can override it
  [quang]
- change collection picker to show parent by default so you don't have to click backwards
  [djay]

Bug fixes:

- Fix double display of portlets profile
  [agitator]
- Fix bug where filter urls was getting utf encoded then made into unicode again
  [djay]
- Fix 5.2 where operators should not be used on all index types
  [djay]
- Fix unfiltered results appearing in next page of batch
  [djay]
- Fix bug where portlets didn't work without GeoLocation dependencies
  [djay]


3.1 (2019-06-06)
----------------

New features:

- Geolocation filter.
  [petschki, thet]


Bug fixes:

- Remove dependency on plone.app.upgrade
  [agitator]

- Constrain ``target collection`` to a configurable registry value.
  The default is ``['Collection', ]``.
  [petschki]

- Fix non-interable catalog metadata values for Python 3.
  [petschki]

- Use Map Layer translations from plone.formwidget.geolocation
  [petschki]

- Fix ``None`` value in ``safe_interable``
  [petschki]

- Fix for empty SearchableText field (see #56)
  [petschki]


3.0 (2019-03-25)
----------------

Breaking changes:

- Remove support for Plone < 5.1.
  [petschki]

New features:

- Python 3 compatibility.
  [petschki]

- Test setup
  [petschki]

Bug fixes:

- fix bug in @@render-portlet for Python 3.
  NOTE on Python 3: this required plone.app.portlets >= 4.4.2
  [petschki]


2.1 (2019-03-22)
----------------

New features:

- Python 3 compatibility.
  [agitator]

Bug fixes:

- Do not render an empty ``filterClassName``.
  [thet]

- patCollectionFilter is not in settings, it’s in view.
  [agitator]

- Fix styles for long/multiline filter terms
  [agitator]


2.0.1 (2018-12-13)
------------------

- Fix upgrade steps and reapply profile to fix bundle registration
  Remove conditional reinitialization - caused problems with other patterns
  [agitator]


2.0 (2018-12-08)
----------------

Breaking changes:

- Remove the ``cache_time`` setting and replace it with ``cache_enabled``.

- collectionsearch.pt: changed view attribute ``header_title`` to ``title``.

- Depend on plone.app.contenttypes.
  All target collections must provide ``plone.app.contenttypes.behaviors.collection.ICollection`` interface.
  The ``result`` method will be callend on this behavior adapter.

- There is a implicit dependency to Font Awesome for the filter tile edit links.
  That has to be revisited to make it work out of the box.

- Modernized markup for easier styling

New:

- Optimize the cache key by including the current language, user roles instead of id and the database counter.

- Remove the view_name part when populating the browser history with filter changes.
  The view_name part is for loading specific AJAX tiles, but should probably not be displayed.

- Add filter and search tiles.

- Add a ``sort_key_function`` key to the IQueryModifier dict to allow for a different sort key function when sorting the values.

- Add a ``index_modifier`` key to the IQueryModifier indexes dict to allow transforming of index search values.
  For ``KeywordIndex`` indices the index_modifier is automatically set to encode the value to utf-8.

- Add a ``value_blacklist`` key to the IQueryModifier indexes dict to allow blacklisting of individual index values.

- Add ``view_name`` configuration parameter to call a special result listing view.
  This can be used to call a tile instead to call the whole context view.

- Add ``content_selector`` configuration parameter to choose a DOM node from the source to inject into the target.

- Ensure early exit on the content filter traverse handler if it is not needed to run.

- Make backwards compatible with Plone 5.0
  [nngu6036, instification]

Bug fixes:

- When reloading the collection in JavaScript, use the content selector's parent as base to trigger events on.
  The content selector itself is replaced and events cannot be caught.

- Register the bundle compile files as ``collectionfilter-bundle-compiled.js`` and ``collectionfilter-bundle-compiled.css``, so that using ``plone-compile-resources`` results in the same files.
  See: https://github.com/plone/Products.CMFPlone/issues/2437

- Sort the filter value list for filter title instead filter value.

- fix collectionsearch portlet
  [petschki]

- when providing a custom `IGroupByCriteria` adapter, fallback to title sorted values if no sort_key_function is given.
  [petschki]


1.0.1 (2018-02-09)
------------------

- Fix target collection selection via catalog vocabular and RelatedItemsFieldWidget.
  [agitator]


1.0 (2018-01-27)
----------------

- Implement AJAX search for the collection search portlet.
  [thet]

- Update the history / location bar URL with the current filter URL.
  [thet]

- Fix error where ``closest`` DOM method isn't supported on IE.
  Fixes #6.
  [agitator]

- Register bundle to depend on ``*`` to avoid weird Select2 initialization error.
  [thet]

- Add ``input_type`` option to be able to better select the type of input.
  Add ``input_type`` support for dropdowns.
  Remove ``as_input`` attribute and provide upgrade step for it.
  [thet]

- Initial release from collective.portlet.collectionfilter.
  [thet]

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/collective/collective.collectionfilter",
    "name": "collective.collectionfilter",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "plone collection filter faceted tagcloud tags",
    "author": "Johannes Raggam",
    "author_email": "thetetet@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a9/69/a0a84de5a2d8e3a1ed66d36523f54857d0eecc6a521f3909d4d38f6d02d2/collective.collectionfilter-5.2.0.tar.gz",
    "platform": null,
    "description": "collective.collectionfilter\n===========================\n\n|CI| |Meta|\n\n.. |CI| image:: https://github.com/collective/collective.collectionfilter/actions/workflows/main.yml/badge.svg\n   :target: https://github.com/collective/collective.collectionfilter/actions/workflows/main.yml\n\n.. |Meta| image:: https://github.com/collective/collective.collectionfilter/actions/workflows/meta.yml/badge.svg\n   :target: https://github.com/collective/collective.collectionfilter/actions/workflows/meta.yml\n\n\nFaceted navigation filter for collection or contentlisting tiles.\n\nThis Plone 5 addon allows you to filter listing results for fields which are indexed in the catalog\n(Plones internal search tool).\nFor example, you can add a subject filter, but also a filter for authors or portal types.\n\nThe filter types can be extended (see: ``collective.collectionfilter.vocabularies``).\n\nThere are three portlets/tiles available for filtering:\n\n``Collection Filter``\n    a list with values (select, radio, checkbox, link) you can filter on\n``Collection Search``\n    a SearchableText input field to do a fulltextsearch on the collection results\n``Collection Maps``\n    a LeafletJS map which shows and filters ``IGeolocatable`` items on it\n    (this feature is available if ``collective.geolocationbehavior`` is installed and the behavior\n    is activated on a contenttype. See installation notes below)\n``Collection Result Listing Sort``\n    a list of indexes where the user can sort the filtered result listing\n``Collection Filter Reset``\n    a link to reset all filters\n\n\nFilter Results of Collections\n-----------------------------\n\nAdd as many filter/search portlets directly to a collection.\n\nWhen you select values from the filter the results are loaded asynchronously onto the page (no page refresh).\nUnless you turn off ajax loading in the registry or are using Plone 5.0. If you are using special theme or view template\nyou can customize ``Content Selector`` and/or ```View Template``` to ensure ajax loading works correctly.\nMake sure the selector exists on the source collection template and on the target page which shows the filtered results.\n\nIt is also possible to use filter portlets that aren't directly on a collection by specifying a target collection.\nTo use ajax loading you will need to ensure your content selector is visible on the page. If not using ajax loading selecting a filter\noption will redirect you to the collection.\n\n\nMosaic Integration\n------------------\n\nUse the package extra to install the required dependencies::\n\n    [buildout]\n    ...\n    eggs +=\n        collective.collectionfilter[mosaic]\n    ...\n\nThe three tiles can be added within the Mosaic editor multiple times. Just select them in the ``Insert`` menu\nand assign a collection to it. To show the results of the collection simply add a\n``Content Listing`` tile.\n\nIt's possible to use multiple content listings and multiple filters on the same page by specifying additional unique classes in\nthe listing tiles settings and then adding these classes to the ``Content Selector`` setting of the filter tile.\n\nIf you want to use filter tiles with a collection then add a content listing tile with the setting to use the query from the context.\nIt is also possible to use the ``Embed content`` tile if there is a unique selector on your collection view.\n\n\n\nGeolocation filter support\n--------------------------\n\nIf ``collective.geolocationbehavior`` is installed, this package provides a LeafletJS Maps tile/portlet\nwhich shows each item of a collection result if the ``IGeolocatable`` information is available.\nIn addition you can activate the ``Narrow down results`` checkbox to narrow down the collection result and\nother available filter tiles/portlets if the user moves or zooms the map.\n\nWe provide a package extra to install all required dependencies with their according versions.\nSimply do this somewhere in your buildout::\n\n    [buildout]\n    ...\n    eggs +=\n        collective.collectionfilter[geolocation]\n    ...\n\n\nOverloading GroupByCriteria\n---------------------------\n\n``collective.collectionfilter.vocabularies.GroupByCriteria`` is a singleton, registered as global utility and used to provide a list of possible indices, which grouped values will provide your filter criteria.\n\nIt uses a data structure like this::\n\n    self._groupby = {\n        it: {                   # Index name\n            'index': it,             # Name of the index to use\n            'metadata': it,          # Name of the metadata column to use\n            'display_modifier': _ ,  # Function to prepare the metadata column value for displaying\n            'index_modifier': None,  # Function to transform the index search value.\n            'value_blacklist': [],   # Blacklist of index values, which should not included in the filter selection. Can be a callable.\n            'sort_key_function': lambda it: it['title'].lower(),  # sort key function. defaults to a lower-cased title\n        }\n        for it in metadata\n    }\n\nAs you can see, the standard GroupByCriteriaVocabulary implementation implies, that the index name is the same as the metadata column name.\nAlso, we use the ``collective.collectionfilter`` message catalog as standard display_modifier (you can register translations under the ``collective.collectionfilter`` domain to translate index values).\n\nIf you need a special ``display_modifier``, or index or metadata columns do not have the same identifier, you can modify this data structure.\nFor that, register an adapter for ``IGroupByModifier``, which adapts to the GroupByCriteria utility.\nWithin this adapter, you can modify the already populated ``_groupby`` attribute (do not use the ``groupby``, which is a property method and at this point hasn't finished).\n\nThis is how.\n\nWrite an adapter::\n\n    # -*- coding: utf-8 -*-\n    from collective.collectionfilter.interfaces import IGroupByCriteria\n    from collective.collectionfilter.interfaces import IGroupByModifier\n    from zope.component import adapter\n    from zope.interface import implementer\n\n\n    sort_map = {\n        'VALUE1': 3,\n        'VALUE2': 1,\n        'VALUE3': 2,\n    }\n\n\n    def subjectsort(it):\n        # Sorts the value after a fixed sort map\n        val = it['title']\n        return sort_map.get(val, 0)\n\n\n    @implementer(IGroupByModifier)\n    @adapter(IGroupByCriteria)\n    def groupby_modifier(groupby):\n        groupby._groupby['Subject']['display_modifier'] = lambda x, idx: x.upper()\n        groupby._groupby['Subject']['sort_key_function'] = subjectsort\n        groupby._groupby['my_new_index'] = {\n            'index': 'my_new_index',\n            'metadata': 'my_new_index_metadata_colum',\n            'display_modifier': lambda it, idx: u'this is awesome: {0}'.format(it)\n        }\n\nRegister the adapter::\n\n    <configure xmlns=\"http://namespaces.zope.org/zope\">\n      <adapter factory=\".collectionfilter.groupby_modifier\" name=\"modifier_1\" />\n    </configure>\n\nDone.\n\nYour adapter is called by ``collective.collectionfilter.vocabularies.GroupByCriteria.groupby``.\n\nCompatibility\n-------------\n\n- Version 5.x is compatible with Plone 6.x+\n- Version 4.x is compatible with Plone 5.2+\n- Version 3.x is compatible with Plone 5.0.x and 5.1.x\n\nIf your theme doesn't work well with AJAX loading this can be overridden in the registry or via diazo.\n\nAuthor\n------\n\n- Johannes Raggam\n- Peter Holzer\n\nThis package is based on ``collective.portlet.collectionfilter`` and ``collective.portlet.collectionbysubject``.\n\n\n5.2.0 (2023-09-27)\n------------------\n\nNew features:\n\n\n- Add a Reset Button to Reset all Filters.\n  [toalba, jensens] (reset-button)\n\n\nBug fixes:\n\n\n- Fix German label from 'Portlet Titel' to 'Filtertitel'.\n  [jensens] (detranslation)\n\n\n5.1.1 (2023-08-08)\n------------------\n\nNew features:\n\n\n- Implement CSS class for disabling `collectionfilter:reload` event when\n  links in enhanced custom filter templates  are designed for other actions\n  (eg. dropdowns or collapsibles).\n  [petschki] (#201)\n\n\nBug fixes:\n\n\n- Fix selecting default `content_selector` for mosaic pages with contentlisting tile.\n  [petschki] (#202)\n\n\n5.1 (2023-08-02)\n----------------\n\nBug fixes:\n\n\n- Fix filter tiles when more than one contentlisting is on the same page.\n  [petschki] (#150)\n\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (8af8caab)\n\n\nChangelog\n=========\n\n5.1 (unreleased)\n----------------\n\n- Nothing changed yet.\n\n\n5.0 (2023-06-07)\n----------------\n\n- implement `geojson_ajaxurl` property for `pat-leaflet` to load geojson\n  information asynchronously.\n  [petschki]\n\n- Fix translations for swiss german\n  [agitator]\n\n\n5.0a2 (2022-06-20)\n------------------\n\n- Updated classifiers\n  [petschki]\n\n\n5.0a1 (2022-06-20)\n------------------\n\nBreaking Change:\n\n- add Plone 6 ES6 compatible Bundle\n- add Plone 6 ES6 compatible JS and SCSS resources\n- add Plone 6 Javascript Bundle Infrastructure\n- update Portlet Template, Plone 6 ready, use the 'cards' Element\n- add Upgrade Step to remove old registry settings\n- increment Version in Metadata\n- add tox Test Instrastructure\n- update github workflow, remove Plone 5 from matrix\n  [1letter]\n\n\n4.0 (2022-05-10)\n----------------\n\nBreaking Change:\n\n- Remove Plone 5.0 and 5.1 support.\n  [petschki]\n\n- Add idx parameter to display_modifier call, so that we can use the index name to resolve the correct translated\n  taxonomy titles in collective.taxonomy. This means that the display_modifier method in the groupby_modifier adapters\n  needs to expect this parameter too!\n  [MrTango]\n\nFeatures:\n\n- Add checkbox to reverse output the filters.\n  [jensens]\n\n- Support and Test Plone 6.\n  [jensens]\n\n- Add a module global COLLECTIONISH_TARGETS to c.c.tiles to register other tiles with collections than plone.app.standardtiles.contentlisting.\n  [jensens]\n\nBug Fixes:\n\n- Fix `b_start` in tiles, where the key is pre/postfixed.\n  Removes those from new filters too, in order to not be on a page that does not exist for the new filtered result.\n  [jensens]\n\n- Not every metadata entry has an index with same name.\n  Ignore if not a pair.\n  [jensens]\n\n- Fix/Workaround for #59 (Int fields in indexes are not working).\n  [jensens]\n\n- Hide uninstall profiles from install view.\n  [jensens]\n\n- Fix edge cases where \"All\" wasn't translated.\n  [agitator]\n\n- Ensure a `GroupByCriteria`'s `sort_key_function` function `lower()` call gets a string.\n  [jensens]\n\n- Fixed searches for only non-alphanumeric characters causing an exception to be displayed.\n  [JeffersonBledsoe]\n\n\nOther:\n\n- Code-Style Black and Isort\n  [jensens]\n\n\n3.5.1 (2021-05-26)\n------------------\n\n- Updated de and ch-de translations\n  [agitator]\n\n\n3.5 (2021-05-26)\n----------------\n\n- Use collection from context as default. `target_collection` is now used to select an alternative collection as result source.\n  This allows to copy and paste preconfigured collections for reuse without reconfiguring each filter element.\n  [agitator]\n\n- Fix search which include the terms \"and\", \"or\" and \"not\"\n  [jeffersonbledsoe]\n\n\n3.4.2 (2021-02-25)\n------------------\n\n- Do not render filter tiles when page gets AJAX loaded\n  [petschki]\n- Do not add hidden field ``collectionfilter`` multiple times. Fixes #116\n  [petschki]\n\n\n3.4.1 (2020-06-18)\n------------------\n\n- Separated translation display_modifier for portal_type and Type.\n  [iham]\n\n\n3.4 (2020-06-16)\n----------------\n\nFeatures:\n\n- Add sorting tile/portlet to populate selected sort indexes to enduser\n  [petschki]\n- Added translation display_modifier for portal_type and Type.\n  [iham]\n\nBug fixes:\n\n- fix ``filter_type`` for indexes without ``operator`` capability. Fixes #74\n  [petschki]\n\n\n3.3 (2020-01-22)\n----------------\n\n- Fix is_available property\n  [agitator]\n- Added css_modifier to extend css class of a filter item\n  [agitator]\n- Fix check for boolean values.\n  [tmassman]\n- fix translation of ``filter_value``\n  [petschki]\n\n\n3.2.1 (2019-08-07)\n------------------\n\nBug fixes:\n\n- fix bug introduced with pattern option ``ajaxLoad``\n  [petschki]\n\n\n3.2 (2019-07-23)\n----------------\n\nFeatures:\n\n- Restore 5.0.x compatibility\n  [djay, quang]\n- Make ajax loading of results and portlets a pattern option is themers can override it\n  [quang]\n- change collection picker to show parent by default so you don't have to click backwards\n  [djay]\n\nBug fixes:\n\n- Fix double display of portlets profile\n  [agitator]\n- Fix bug where filter urls was getting utf encoded then made into unicode again\n  [djay]\n- Fix 5.2 where operators should not be used on all index types\n  [djay]\n- Fix unfiltered results appearing in next page of batch\n  [djay]\n- Fix bug where portlets didn't work without GeoLocation dependencies\n  [djay]\n\n\n3.1 (2019-06-06)\n----------------\n\nNew features:\n\n- Geolocation filter.\n  [petschki, thet]\n\n\nBug fixes:\n\n- Remove dependency on plone.app.upgrade\n  [agitator]\n\n- Constrain ``target collection`` to a configurable registry value.\n  The default is ``['Collection', ]``.\n  [petschki]\n\n- Fix non-interable catalog metadata values for Python 3.\n  [petschki]\n\n- Use Map Layer translations from plone.formwidget.geolocation\n  [petschki]\n\n- Fix ``None`` value in ``safe_interable``\n  [petschki]\n\n- Fix for empty SearchableText field (see #56)\n  [petschki]\n\n\n3.0 (2019-03-25)\n----------------\n\nBreaking changes:\n\n- Remove support for Plone < 5.1.\n  [petschki]\n\nNew features:\n\n- Python 3 compatibility.\n  [petschki]\n\n- Test setup\n  [petschki]\n\nBug fixes:\n\n- fix bug in @@render-portlet for Python 3.\n  NOTE on Python 3: this required plone.app.portlets >= 4.4.2\n  [petschki]\n\n\n2.1 (2019-03-22)\n----------------\n\nNew features:\n\n- Python 3 compatibility.\n  [agitator]\n\nBug fixes:\n\n- Do not render an empty ``filterClassName``.\n  [thet]\n\n- patCollectionFilter is not in settings, it\u2019s in view.\n  [agitator]\n\n- Fix styles for long/multiline filter terms\n  [agitator]\n\n\n2.0.1 (2018-12-13)\n------------------\n\n- Fix upgrade steps and reapply profile to fix bundle registration\n  Remove conditional reinitialization - caused problems with other patterns\n  [agitator]\n\n\n2.0 (2018-12-08)\n----------------\n\nBreaking changes:\n\n- Remove the ``cache_time`` setting and replace it with ``cache_enabled``.\n\n- collectionsearch.pt: changed view attribute ``header_title`` to ``title``.\n\n- Depend on plone.app.contenttypes.\n  All target collections must provide ``plone.app.contenttypes.behaviors.collection.ICollection`` interface.\n  The ``result`` method will be callend on this behavior adapter.\n\n- There is a implicit dependency to Font Awesome for the filter tile edit links.\n  That has to be revisited to make it work out of the box.\n\n- Modernized markup for easier styling\n\nNew:\n\n- Optimize the cache key by including the current language, user roles instead of id and the database counter.\n\n- Remove the view_name part when populating the browser history with filter changes.\n  The view_name part is for loading specific AJAX tiles, but should probably not be displayed.\n\n- Add filter and search tiles.\n\n- Add a ``sort_key_function`` key to the IQueryModifier dict to allow for a different sort key function when sorting the values.\n\n- Add a ``index_modifier`` key to the IQueryModifier indexes dict to allow transforming of index search values.\n  For ``KeywordIndex`` indices the index_modifier is automatically set to encode the value to utf-8.\n\n- Add a ``value_blacklist`` key to the IQueryModifier indexes dict to allow blacklisting of individual index values.\n\n- Add ``view_name`` configuration parameter to call a special result listing view.\n  This can be used to call a tile instead to call the whole context view.\n\n- Add ``content_selector`` configuration parameter to choose a DOM node from the source to inject into the target.\n\n- Ensure early exit on the content filter traverse handler if it is not needed to run.\n\n- Make backwards compatible with Plone 5.0\n  [nngu6036, instification]\n\nBug fixes:\n\n- When reloading the collection in JavaScript, use the content selector's parent as base to trigger events on.\n  The content selector itself is replaced and events cannot be caught.\n\n- Register the bundle compile files as ``collectionfilter-bundle-compiled.js`` and ``collectionfilter-bundle-compiled.css``, so that using ``plone-compile-resources`` results in the same files.\n  See: https://github.com/plone/Products.CMFPlone/issues/2437\n\n- Sort the filter value list for filter title instead filter value.\n\n- fix collectionsearch portlet\n  [petschki]\n\n- when providing a custom `IGroupByCriteria` adapter, fallback to title sorted values if no sort_key_function is given.\n  [petschki]\n\n\n1.0.1 (2018-02-09)\n------------------\n\n- Fix target collection selection via catalog vocabular and RelatedItemsFieldWidget.\n  [agitator]\n\n\n1.0 (2018-01-27)\n----------------\n\n- Implement AJAX search for the collection search portlet.\n  [thet]\n\n- Update the history / location bar URL with the current filter URL.\n  [thet]\n\n- Fix error where ``closest`` DOM method isn't supported on IE.\n  Fixes #6.\n  [agitator]\n\n- Register bundle to depend on ``*`` to avoid weird Select2 initialization error.\n  [thet]\n\n- Add ``input_type`` option to be able to better select the type of input.\n  Add ``input_type`` support for dropdowns.\n  Remove ``as_input`` attribute and provide upgrade step for it.\n  [thet]\n\n- Initial release from collective.portlet.collectionfilter.\n  [thet]\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Plone addon for filtering collection results.",
    "version": "5.2.0",
    "project_urls": {
        "Homepage": "http://github.com/collective/collective.collectionfilter"
    },
    "split_keywords": [
        "plone",
        "collection",
        "filter",
        "faceted",
        "tagcloud",
        "tags"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "03302087a24410328803b231524cb68e8ad27ee65755a15482b14b49299bdf9f",
                "md5": "31e490cd3eb42c71bdd740300e6a1ce6",
                "sha256": "77a2b18fa14fa480edea1962a58964dd8a4072b09ccb47481ea4d74c925ec73f"
            },
            "downloads": -1,
            "filename": "collective.collectionfilter-5.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "31e490cd3eb42c71bdd740300e6a1ce6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 1984371,
            "upload_time": "2023-09-27T11:37:55",
            "upload_time_iso_8601": "2023-09-27T11:37:55.252017Z",
            "url": "https://files.pythonhosted.org/packages/03/30/2087a24410328803b231524cb68e8ad27ee65755a15482b14b49299bdf9f/collective.collectionfilter-5.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a969a0a84de5a2d8e3a1ed66d36523f54857d0eecc6a521f3909d4d38f6d02d2",
                "md5": "45c6efbefd9c66847e32385b7d5bb604",
                "sha256": "9609b2e08deb4ad31740d89a92eafabd2b8a5af360272d6e664c366f00d6373a"
            },
            "downloads": -1,
            "filename": "collective.collectionfilter-5.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "45c6efbefd9c66847e32385b7d5bb604",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1084739,
            "upload_time": "2023-09-27T11:37:58",
            "upload_time_iso_8601": "2023-09-27T11:37:58.445288Z",
            "url": "https://files.pythonhosted.org/packages/a9/69/a0a84de5a2d8e3a1ed66d36523f54857d0eecc6a521f3909d4d38f6d02d2/collective.collectionfilter-5.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-27 11:37:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "collective",
    "github_project": "collective.collectionfilter",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "collective.collectionfilter"
}
        
Elapsed time: 0.12270s