I'm fairly sure this is going to be a feature we're going to want to use for a number of things on our site in time, but for the moment, I have a pretty simple usage case. I'm putting together a company phone directory, based on information in our Active Directory. Currently I have a PowerShell script that pulls the required information, formats it, and uses the REST API to update a page with the required tables. It even inserts a little alphabetic selector at the top that allows you to jump to that letter of the alphabet.
I've been asked (since this is what they have now on Sharepoint, which we're transitioning from) if instead of jumping to a letter, I can have it filter the list to display just that letter instead.
My idea is to modify my REST API script to create an object for each person and display the results in a table, using Faceted Navigation to filter the list based on the letter of the alphabet clicked.
My first attempt used the eea.facetednavigation add-on. This seems to be pretty wildly broken in 5.2.1. The first issue is that the Actions to enable and disable faceted navigation don't appear after installation. I was able to manually create actions for these by just making an "Enable Faceted Navigation" and "Disable Faceted Navigation" Object action in Site Setup with their Action URL set to string:${object_url}/@@faceted_subtyper/enable and string:${object_url}/@@faceted_subtyper/disable, respectively. It's pretty kludgey and takes up a lot of UI space, but it does seem to work.
From there, as a simple test, I created some objects and set up a hidden filter that limits the navigation to their folder and a non-hidden alphabetic filter. It works! Except that instead of giving me a nice table of output, it only displays these gigantic tiles with each one labelled with that item's Title -- not really suitable for a phone directory. If I change the view to Tabular, the alphabetic selector still shows, but instead of a table below it, I get " This site encountered an error trying to fulfill your request. If the error persists please contact the site maintainer. Thank you for your patience." This seems to only occur if you use the alphabetic filter -- if you leave it out you can use a tabular display. However, it's pretty much the only reason for setting this up right now. The traceback for this is as follows:
Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 156, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 338, in publish_module
Module ZPublisher.WSGIPublisher, line 256, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 62, in call_object
Module eea.facetednavigation.caching.nocache, line 12, in replacement
Module eea.facetednavigation.browser.app.query, line 213, in __call__
Module Products.Five.browser.pagetemplatefile, line 126, in __call__
Module Products.Five.browser.pagetemplatefile, line 61, in __call__
Module zope.pagetemplate.pagetemplate, line 135, in pt_render
Module Products.PageTemplates.engine, line 88, in __call__
Module z3c.pt.pagetemplate, line 173, in render
Module chameleon.zpt.template, line 306, in render
Module chameleon.template, line 209, in render
Module chameleon.utils, line 75, in raise_with_traceback
Module chameleon.template, line 187, in render
Module 52640c83ec016a02bef7a1622bcd409e.py, line 169, in render
Module 0566690dfb5a6446ed300413119a1e0f.py, line 111, in render_content_core
Module 0566690dfb5a6446ed300413119a1e0f.py, line 343, in render_listing
Module Products.PageTemplates.expression, line 101, in __call__
Module plone.app.contenttypes.browser.folder, line 104, in batch
Module eea.facetednavigation.browser.app.query, line 207, in results
TypeError: ('Could not adapt', <generator object WidgetFilterBrains.__call__ at 0x7fb30a22f0a0>, <InterfaceClass plone.app.contentlisting.interfaces.IContentListing>)
- Expression: "view/batch"
- Filename: ... ne/app/contenttypes/browser/templates/listing_tabular.pt
- Location: (line 22: col 29)
- Source: <tal:results define="batch view/batch">
^^^^^^^^^^
- Expression: "view/macros"
- Filename: ... y3.6.egg/eea/facetednavigation/browser/template/query.pt
- Location: (line 11: col 28)
- Source: <metal:block use-macro="view/macros" />
^^^^^^^^^^^
- Arguments: template: <ViewPageTemplateFile - at 0x7fb3124dc780>
options: {...} (0)
args: <tuple - at 0x7fb32f407048>
nothing: <NoneType - at 0x88e860>
modules: <_SecureModuleImporter - at 0x7fb31d0efa58>
request: <WSGIRequest - at 0x7fb30a4995c0>
view: <SimpleViewClass from /opt/plone/buildout-cache/eggs/eea.facetednavigation-13.7-py3.6.egg/eea/facetednavigation/browser/template/query.pt faceted_query at 0x7fb30a2f87b8>
context: <ImplicitAcquisitionWrapper projects at 0x7fb312a41438>
views: <ViewMapper - at 0x7fb30a2f8e48>
here: <ImplicitAcquisitionWrapper - at 0x7fb312a41af8>
container: <ImplicitAcquisitionWrapper projects at 0x7fb312a41438>
root: <ImplicitAcquisitionWrapper at 0x7fb315122090>
traverse_subpath: <list - at 0x7fb30a1b3408>
user: <ImplicitAcquisitionWrapper - at 0x7fb312a413f0>
default: <object - at 0x7fb32f402a90>
repeat: {...} (0)
loop: {...} (0)
wrapped_repeat: <SafeMapping - at 0x7fb30a1b3488>
target_language: <NoneType - at 0x88e860>
translate: <function translate at 0x7fb30a1167b8>
plone_view: <Plone plone at 0x7fb30a2f8630>
batch_base_url: http://casdpln01:8080/Intranet/en-ca/projects
folderContents: <Batch - at 0x7fb30a35d9e8>
contentFilter: {...} (0)
kssClassesView: <NoneType - at 0x88e860>
getKssClasses: <NoneType - at 0x88e860>
templateId: query.pt
macroname: macros
I then tried using collective.collectionfilter, which has the nice plus of working on collections, thus allowing me to customize the table display to some degree. However, while it has a search widget, which is nice, its filter widgets seem to not only be based only on full values (so "Smith" instead of "S*"), but they seem to not allow Title as a possible value, and I'm not sure offhand how to extend the list of possible fields. (Also, I have no idea how I could add custom fields to the tabular display of a collection, but I believe that's at least possible.)
Are there any other faceted navigation tools that might be useful? Is it possible to make eea.facetednavigation work better with Plone 5.2.1, and/or work around that table display error? Am I overlooking a super obvious alternate way to do this?