diff --git a/src/recensio/plone/adapter/configure.zcml b/src/recensio/plone/adapter/configure.zcml index db5f7be..188ef36 100644 --- a/src/recensio/plone/adapter/configure.zcml +++ b/src/recensio/plone/adapter/configure.zcml @@ -64,6 +64,8 @@ name="listReviewAuthors" /> + + diff --git a/src/recensio/plone/adapter/converters.py b/src/recensio/plone/adapter/converters.py new file mode 100644 index 0000000..eaf2763 --- /dev/null +++ b/src/recensio/plone/adapter/converters.py @@ -0,0 +1,26 @@ +from plone.app.dexterity.textindexer.interfaces import IDexterityTextIndexFieldConverter +from recensio.plone.interfaces import IReview +from z3c.form.interfaces import IWidget +from z3c.relationfield.interfaces import IRelationList +from zope.component import adapter +from zope.interface import implementer + + +@implementer(IDexterityTextIndexFieldConverter) +@adapter(IReview, IRelationList, IWidget) +class AuthorsDexterityTextIndexFieldConverter: + """Extract author names for indexing in SearchableText""" + + def __init__(self, context, field, _): + """Initialize field converter""" + self.context = context + self.field = field + + def convert(self): + names = [] + for relation in self.field.get(self.context): + obj = relation.to_object + if not obj: + continue + names.append(obj.title) + return ", ".join(names) diff --git a/src/recensio/plone/behaviors/authors.py b/src/recensio/plone/behaviors/authors.py index a50fd90..304dbff 100644 --- a/src/recensio/plone/behaviors/authors.py +++ b/src/recensio/plone/behaviors/authors.py @@ -1,3 +1,4 @@ +from plone.app.dexterity.textindexer import searchable from plone.app.vocabularies.catalog import CatalogSource from plone.app.z3cform.widget import RelatedItemsFieldWidget from plone.autoform import directives @@ -20,6 +21,7 @@ class IAuthors(model.Schema): RelatedItemsFieldWidget, pattern_options={"mode": "auto", "favorites": []}, ) + searchable("authors") authors = RelationList( title=_("Authors"), defaultFactory=list, diff --git a/src/recensio/plone/behaviors/base.py b/src/recensio/plone/behaviors/base.py index ad22a51..3410523 100644 --- a/src/recensio/plone/behaviors/base.py +++ b/src/recensio/plone/behaviors/base.py @@ -44,6 +44,7 @@ class IBase(model.Schema): RelatedItemsFieldWidget, pattern_options={"mode": "auto", "favorites": []}, ) + searchable("reviewAuthors") reviewAuthors = RelationList( title=_("label_review_authors"), defaultFactory=list, diff --git a/src/recensio/plone/profiles/default/types/Review_Article_Collection.xml b/src/recensio/plone/profiles/default/types/Review_Article_Collection.xml index f0548f7..96620ec 100644 --- a/src/recensio/plone/profiles/default/types/Review_Article_Collection.xml +++ b/src/recensio/plone/profiles/default/types/Review_Article_Collection.xml @@ -33,6 +33,7 @@ + diff --git a/src/recensio/plone/profiles/default/types/Review_Article_Journal.xml b/src/recensio/plone/profiles/default/types/Review_Article_Journal.xml index e73baa0..9dc75f2 100644 --- a/src/recensio/plone/profiles/default/types/Review_Article_Journal.xml +++ b/src/recensio/plone/profiles/default/types/Review_Article_Journal.xml @@ -40,6 +40,7 @@ + diff --git a/src/recensio/plone/profiles/default/types/Review_Exhibition.xml b/src/recensio/plone/profiles/default/types/Review_Exhibition.xml index 58dfb2c..da18853 100644 --- a/src/recensio/plone/profiles/default/types/Review_Exhibition.xml +++ b/src/recensio/plone/profiles/default/types/Review_Exhibition.xml @@ -33,6 +33,7 @@ + diff --git a/src/recensio/plone/profiles/default/types/Review_Journal.xml b/src/recensio/plone/profiles/default/types/Review_Journal.xml index d6fe6cf..447c8c0 100644 --- a/src/recensio/plone/profiles/default/types/Review_Journal.xml +++ b/src/recensio/plone/profiles/default/types/Review_Journal.xml @@ -40,6 +40,7 @@ + diff --git a/src/recensio/plone/profiles/default/types/Review_Monograph.xml b/src/recensio/plone/profiles/default/types/Review_Monograph.xml index d3e2a38..930ea5b 100644 --- a/src/recensio/plone/profiles/default/types/Review_Monograph.xml +++ b/src/recensio/plone/profiles/default/types/Review_Monograph.xml @@ -40,6 +40,7 @@ +