Added basic infrastructure for discussion controlpanel.

svn path=/plone.app.discussion/trunk/; revision=27269
This commit is contained in:
Timo Stollenwerk 2009-06-02 21:20:53 +00:00
parent 47911fa24a
commit f27156e916
6 changed files with 146 additions and 45 deletions

View File

@ -3,6 +3,8 @@
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="plone.app.discussion">
<include package="plone.app.registry" />
<!-- Traversal adapter -->
<adapter factory=".traversal.ConversationNamespace" name="conversation" />
@ -66,4 +68,20 @@
layer="..interfaces.IDiscussionLayer"
/>
<browser:page
name="discussion-settings"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".controlpanel.DiscussionSettingsControlPanel"
permission="cmf.ManagePortal"
/>
<!-- Utility view - use in portal_css or similar as portal/@@xdv-check/enabled" -->
<browser:page
name="discussion-check"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".controlpanel.Utility"
permission="zope.Public"
allowed_attributes="globally_enabled"
/>
</configure>

View File

@ -0,0 +1,57 @@
from Products.Five.browser import BrowserView
from zope.component import queryUtility
from plone.registry.interfaces import IRegistry
from plone.app.registry.browser import controlpanel
from plone.app.discussion.interfaces import IDiscussionSettings, _
try:
# only in z3c.form 2.0
from z3c.form.browser.textlines import TextLinesFieldWidget
from z3c.form.browser.widget import SingleCheckBoxWidget
except ImportError:
from plone.z3cform.textlines import TextLinesFieldWidget
from plone.z3cform.widget import SingleCheckBoxWidget
class DiscussionSettingsEditForm(controlpanel.RegistryEditForm):
schema = IDiscussionSettings
label = _(u"Discussion settings")
description = _(u"Please enter the options specified")
def updateFields(self):
super(DiscussionSettingsEditForm, self).updateFields()
#self.fields['globally_enabled'].widgetFactory = SingleCheckBoxWidget
def updateWidgets(self):
super(DiscussionSettingsEditForm, self).updateWidgets()
class DiscussionSettingsControlPanel(controlpanel.ControlPanelFormWrapper):
form = DiscussionSettingsEditForm
class Utility(BrowserView):
"""Utility view to determine if the site is currently styled with xdv
"""
def globally_enabled(self):
"""Determine if the utility is enabled and we are in an enabled domain
"""
registry = queryUtility(IRegistry)
if registry is None:
return False
settings = None
try:
settings = registry.for_interface(IDiscussionSettings)
except KeyError:
return False
if not settings.globally_enabled:
return False
else:
return True
return False

View File

@ -11,9 +11,9 @@ class IDiscussionSettings(Interface):
configuration registry and obtainable via plone.registry.
"""
globally_enabled = schema.Bool(title=_(u"Globally enabled"),
description=_(u"Use this setting to enable or disable comments globally"),
default=True)
#globally_enabled = schema.Bool(title=_(u"Globally enabled"),
# description=_(u"Use this setting to enable or disable comments globally"),
# default=True)
class IConversation(IIterableMapping):
"""A conversation about a content object.

View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<object
name="portal_controlpanel"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="plone.app.discussion"
purge="False">
<configlet
title="Discussion"
action_id="discussion"
appId="plone.app.discussion"
category="Products"
condition_expr=""
url_expr="string:${portal_url}/@@discussion-settings"
visible="True"
i18n:attributes="title">
<permission>Manage portal</permission>
</configlet>
</object>

View File

@ -0,0 +1,4 @@
<?xml version="1.0"?>
<registry>
<records interface="plone.app.discussion.interfaces.IDiscussionSettings" />
</registry>

View File

@ -27,14 +27,16 @@ setup(name='plone.app.discussion',
'setuptools',
'collective.autopermission',
'collective.testcaselayer',
'plone.app.registry',
'plone.indexer',
'plone.registry',
'plone.z3cform',
'ZODB3',
'zope.interface',
'zope.component',
'zope.annotation',
'zope.event',
'zope.app.container', # XXX: eventually should change to zope.container
'plone.indexer',
],
entry_points="""
[z3c.autoinclude.plugin]