[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/ -reimplemented PortalConfig view using SettingsEditFormBase
Yvo Schubbe
cvs-admin at zope.org
Thu Aug 30 10:45:50 UTC 2012
Log message for revision 127623:
-reimplemented PortalConfig view using SettingsEditFormBase
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.pt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/interfaces.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.pt 2012-08-30 10:14:05 UTC (rev 127622)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.pt 2012-08-30 10:45:46 UTC (rev 127623)
@@ -1,19 +1,14 @@
<html metal:use-macro="context/@@standard_macros/page">
-
<body>
<metal:slot metal:fill-slot="body" i18n:domain="cmf_default">
+<metal:macro metal:use-macro="context/@@formlib_macros/errors" />
-<ul class="errors" tal:condition="view/errors">
- <li tal:repeat="error view/error_views"
- tal:content="structure error">Error Message</li>
-</ul>
+<metal:macro metal:use-macro="context/@@formlib_macros/header" />
-<h1 i18n:translate="">Portal Configuration</h1>
+<form action="." method="post"
+ tal:attributes="action request/ACTUAL_URL">
-<form action="." method="post"
- tal:attributes="action request/ACTUAL_URL">
-
<fieldset tal:repeat="widget view/widgets">
<label tal:attributes="for widget/name" tal:content="widget/label"></label>
<tal:block replace="structure widget" />
@@ -24,13 +19,12 @@
<span class="errors" tal:condition="not: globals/uidtool_installed">CMFUId is not installed</span>
- <div class="buttons">
- <tal:loop tal:repeat="action view/actions"
- tal:replace="structure action/render" />
- </div>
+<div class="buttons">
+ <tal:loop tal:repeat="action view/actions"
+ tal:replace="structure action/render" />
+</div>
</form>
-
</metal:slot>
</body>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py 2012-08-30 10:14:05 UTC (rev 127622)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/config.py 2012-08-30 10:45:46 UTC (rev 127623)
@@ -14,51 +14,66 @@
"""
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from zope.component import adapts
from zope.component import getUtility
from zope.formlib import form
-from zope.schema import getFieldNames
+from zope.interface import implements
from Products.CMFCore.interfaces import IPropertiesTool
-from Products.CMFDefault.formlib.form import EditFormBase
+from Products.CMFDefault.browser.utils import memoize
+from Products.CMFDefault.formlib.form import SettingsEditFormBase
+from Products.CMFDefault.formlib.schema import SchemaAdapterBase
from Products.CMFDefault.formlib.widgets import ChoiceRadioWidget
from Products.CMFDefault.utils import Message as _
from .interfaces import IPortalConfig
-class PortalConfig(EditFormBase):
+class ConfigSchemaAdapter(SchemaAdapterBase):
+ """Adapter for IPropertiesTool.
+ """
+
+ adapts(IPropertiesTool)
+ implements(IPortalConfig)
+
+ def __getattr__(self, name):
+ if name in ('title', 'smtp_server'):
+ value = getattr(self.context, name)()
+ else:
+ value = self.context.getProperty(name)
+ if isinstance(value, str) and self.encoding:
+ return value.decode(self.encoding)
+ return value
+
+ def __setattr__(self, name, value):
+ if name in ('context', 'encoding'):
+ SchemaAdapterBase.__setattr__(self, name, value)
+ return
+ if isinstance(value, unicode) and self.encoding:
+ value = value.encode(self.encoding)
+ self.context.editProperties({name: value})
+
+
+class PortalConfig(SettingsEditFormBase):
+
form_fields = form.FormFields(IPortalConfig)
form_fields['validate_email'].custom_widget = ChoiceRadioWidget
- actions = form.Actions(
- form.Action(
- name='change',
- label=_(u'Change'),
- success='handle_success',
- failure='handle_failure'),
- )
template = ViewPageTemplateFile("config.pt")
+ label = _(u'Portal Configuration')
+ description = _(u'This form is used to set the portal configuration '
+ 'options.')
+ successMessage = _(u'Portal settings changed.')
- def setUpWidgets(self, ignore_request=False):
- data = {}
+ @memoize
+ def getContent(self):
ptool = getUtility(IPropertiesTool)
- charset = ptool.getProperty('default_charset', None)
- for name in getFieldNames(IPortalConfig):
- value = ptool.getProperty(name)
- try:
- value = value.decode(charset)
- except (AttributeError, UnicodeEncodeError):
- pass
- data[name] = value
- data['smtp_server'] = ptool.smtp_server()
- self.widgets = form.setUpDataWidgets(
- self.form_fields, self.prefix,
- self.context, self.request, data=data,
- ignore_request=ignore_request)
+ return ConfigSchemaAdapter(ptool)
- def handle_success(self, action, data):
- ptool = getUtility(IPropertiesTool)
- ptool.editProperties(data)
- self.status = _(u"Portal settings changed.")
- self._setRedirect('portal_actions', 'global/configPortal')
+ def handle_change_success(self, action, data):
+ self._handle_success(action, data)
+ return self._setRedirect('portal_actions', 'global/configPortal')
+
+ def handle_cancel_success(self, action, data):
+ return self._setRedirect('portal_actions', 'ROOT')
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/interfaces.py 2012-08-30 10:14:05 UTC (rev 127622)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/interfaces.py 2012-08-30 10:45:46 UTC (rev 127623)
@@ -46,31 +46,36 @@
title=_(u"Portal 'From' name"),
description=_(u"When the portal generates mail, it uses this name as "
u"its (apparent) sender."),
- required=False)
+ required=False,
+ missing_value=u'')
email_from_address = TextLine(
title=_(u"Portal 'From' address"),
description=_(u"When the portal generates mail, it uses this address "
u"as its (apparent) return address."),
- required=False)
+ required=False,
+ missing_value=u'')
smtp_server = TextLine(
title=_(u"SMTP server"),
description=_(u"This is the address of your local SMTP (out-going "
u"mail) server."),
- required=False)
+ required=False,
+ missing_value=u'')
title = TextLine(
title=_(u"Portal title"),
description=_(u"This is the title which appears at the top of every "
u"portal page."),
- required=False)
+ required=False,
+ missing_value=u'')
description = TextLine(
title=_(u"Portal description"),
description=_(u"This description is made available via syndicated "
u"content and elsewhere. It should be fairly brief."),
- required=False)
+ required=False,
+ missing_value=u'')
validate_email = Choice(
title=_(u"Password policy"),
@@ -83,7 +88,7 @@
u"empty, 'utf-8' is used."),
required=False,
constraint=check_encoding,
- default="UTF-8")
+ default="utf-8")
email_charset = ASCIILine(
title=_(u"Portal email encoding"),
@@ -91,7 +96,7 @@
u"empty, 'utf-8' is used if necessary."),
required=False,
constraint=check_encoding,
- default="UTF-8")
+ default="utf-8")
enable_actionicons = Bool(
title=_(u"Action icons"),
More information about the checkins
mailing list