From cf9373809e9453a199802f7d154333ff965fcd51 Mon Sep 17 00:00:00 2001 From: tisto Date: Fri, 21 Feb 2014 20:40:37 +0100 Subject: [PATCH] Add SearchControlPanelAdapter implementation. --- Products/CMFPlone/controlpanel/README.rst | 29 +++++++ .../CMFPlone/controlpanel/bbb/__init__.py | 0 .../CMFPlone/controlpanel/bbb/configure.zcml | 8 ++ Products/CMFPlone/controlpanel/bbb/search.py | 45 +++++++++++ .../CMFPlone/controlpanel/browser/__init__.py | 0 Products/CMFPlone/controlpanel/configure.zcml | 3 + .../CMFPlone/controlpanel/tests/__init__.py | 0 .../test_controlpanel_bbb_search_adapter.py | 67 ++++++++++++++++ .../tests/test_controlpanel_browser_search.py | 78 +++++++++++++++++++ .../tests/test_controlpanel_doctest.py | 34 ++++++++ .../tests/test_controlpanel_search.py} | 0 11 files changed, 264 insertions(+) create mode 100644 Products/CMFPlone/controlpanel/README.rst create mode 100644 Products/CMFPlone/controlpanel/bbb/__init__.py create mode 100644 Products/CMFPlone/controlpanel/bbb/configure.zcml create mode 100644 Products/CMFPlone/controlpanel/bbb/search.py create mode 100644 Products/CMFPlone/controlpanel/browser/__init__.py create mode 100644 Products/CMFPlone/controlpanel/tests/__init__.py create mode 100644 Products/CMFPlone/controlpanel/tests/test_controlpanel_bbb_search_adapter.py create mode 100644 Products/CMFPlone/controlpanel/tests/test_controlpanel_browser_search.py create mode 100644 Products/CMFPlone/controlpanel/tests/test_controlpanel_doctest.py rename Products/CMFPlone/{tests/test_controlpanel.py => controlpanel/tests/test_controlpanel_search.py} (100%) diff --git a/Products/CMFPlone/controlpanel/README.rst b/Products/CMFPlone/controlpanel/README.rst new file mode 100644 index 0000000000..1853fe7fd9 --- /dev/null +++ b/Products/CMFPlone/controlpanel/README.rst @@ -0,0 +1,29 @@ +Plone Controlpanel +================== + +All control panel related settings are stored in plone.app.registry and +can be looked up like this:: + + >>> from zope.component import getUtility + >>> from plone.registry.interfaces import IRegistry + >>> registry = getUtility(IRegistry) + + >>> from Products.CMFPlone.interfaces import ISearchSchema + >>> search_settings = registry.forInterface(ISearchSchema) + + >>> site_settings.enable_livesearch + True + +If you want to change the settings, just change the attribute:: + + >>> search_settings.enable_livesearch = False + + +Search Control Panel +-------------------- + + >>> from plone.app.controlpanel.interfaces import ISearchSchema + >>> site_settings = registry.forInterface(ISearchSchema) + + >>> site_settings.enable_livesearch = True + >>> site_settings.types_not_searched = ('Discussion Item', 'Folder') diff --git a/Products/CMFPlone/controlpanel/bbb/__init__.py b/Products/CMFPlone/controlpanel/bbb/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Products/CMFPlone/controlpanel/bbb/configure.zcml b/Products/CMFPlone/controlpanel/bbb/configure.zcml new file mode 100644 index 0000000000..44bd0f3e80 --- /dev/null +++ b/Products/CMFPlone/controlpanel/bbb/configure.zcml @@ -0,0 +1,8 @@ + + + + + diff --git a/Products/CMFPlone/controlpanel/bbb/search.py b/Products/CMFPlone/controlpanel/bbb/search.py new file mode 100644 index 0000000000..80a7e1683e --- /dev/null +++ b/Products/CMFPlone/controlpanel/bbb/search.py @@ -0,0 +1,45 @@ +from zope.site.hooks import getSite +from Products.CMFPlone.interfaces.siteroot import IPloneSiteRoot +from zope.component import adapts +from zope.interface import implements +from Products.CMFPlone.interfaces import ISearchSchema +from Products.CMFCore.utils import getToolByName +from zope.component import getUtility +from plone.registry.interfaces import IRegistry + + +class SearchControlPanelAdapter(object): + + adapts(IPloneSiteRoot) + implements(ISearchSchema) + + def __init__(self, context): + self.portal = getSite() + self.jstool = getToolByName(context, 'portal_javascripts') + registry = getUtility(IRegistry) + self.search_settings = registry.forInterface(ISearchSchema) + + def get_enable_livesearch(self): + return self.search_settings.enable_livesearch + + def set_enable_livesearch(self, value): + if value: + self.search_settings.enable_livesearch = True + #self.jstool.getResource('livesearch.js').setEnabled(True) + else: + self.search_settings.enable_livesearch = False + #self.jstool.getResource('livesearch.js').setEnabled(False) + self.jstool.cookResources() + + enable_livesearch = property(get_enable_livesearch, set_enable_livesearch) + + def get_types_not_searched(self): + return self.search_settings.types_not_searched + + def set_types_not_searched(self, value): + self.search_settings.types_not_searched = value + + types_not_searched = property( + get_types_not_searched, + set_types_not_searched + ) diff --git a/Products/CMFPlone/controlpanel/browser/__init__.py b/Products/CMFPlone/controlpanel/browser/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Products/CMFPlone/controlpanel/configure.zcml b/Products/CMFPlone/controlpanel/configure.zcml index 7dd73bd4ca..20023c8b6c 100644 --- a/Products/CMFPlone/controlpanel/configure.zcml +++ b/Products/CMFPlone/controlpanel/configure.zcml @@ -5,6 +5,9 @@ + + +