From 96d7a5fffd93f9b76f071ba9c6c8921132e5dee6 Mon Sep 17 00:00:00 2001 From: Asko Soukka Date: Mon, 28 Mar 2016 18:30:53 +0300 Subject: [PATCH] Restore dexteritytextindexer support --- plone/app/blocks/configure.zcml | 5 +++++ plone/app/blocks/indexing.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/plone/app/blocks/configure.zcml b/plone/app/blocks/configure.zcml index c2cb34c5..9ca6687c 100644 --- a/plone/app/blocks/configure.zcml +++ b/plone/app/blocks/configure.zcml @@ -211,4 +211,9 @@ zope.lifecycleevent.interfaces.IObjectModifiedEvent" handler=".subscribers.onLayoutEdited" /> + + diff --git a/plone/app/blocks/indexing.py b/plone/app/blocks/indexing.py index dd58b82b..78e410d4 100644 --- a/plone/app/blocks/indexing.py +++ b/plone/app/blocks/indexing.py @@ -1,10 +1,26 @@ +# -*- coding: utf-8 -*- from Products.CMFPlone.utils import safe_unicode from lxml.html import fromstring from lxml.html import tostring from plone.app.blocks.layoutbehavior import ILayoutAware +from plone.dexterity.interfaces import IDexterityContent from plone.indexer.decorator import indexer from plone.tiles.data import ANNOTATIONS_KEY_PREFIX +from z3c.form.interfaces import IWidget from zope.annotation.interfaces import IAnnotations +from zope.component import adapter +from zope.interface import implementer +import pkg_resources + +try: + pkg_resources.get_distribution('collective.dexteritytextindexer') +except pkg_resources.DistributionNotFound: + HAS_DEXTERITYTEXTINDEXER = False +else: + from collective.dexteritytextindexer.converters import DefaultDexterityTextIndexFieldConverter # noqa + from collective.dexteritytextindexer.interfaces import IDexterityTextIndexFieldConverter # noqa + from collective.dexteritytextindexer.utils import searchable + HAS_DEXTERITYTEXTINDEXER = True try: from plone.app.contenttypes import indexers @@ -52,3 +68,15 @@ def LayoutSearchableText(obj): text.append(tostring(el)) return concat(*text) + + +if HAS_DEXTERITYTEXTINDEXER: + + searchable(ILayoutAware, 'content') + + @implementer(IDexterityTextIndexFieldConverter) + @adapter(IDexterityContent, ILayoutAware, IWidget) + class LayoutFieldConverter(DefaultDexterityTextIndexFieldConverter): + + def convert(self): + return LayoutSearchableText(self.context)