[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/ Portal configuration form.

Charlie Clark charlie at begeistert.org
Sun Sep 26 14:21:40 EDT 2010


Log message for revision 116956:
  Portal configuration form.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/TODO.txt
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/__init__.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.pt
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/configure.zcml
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-09-26 14:45:08 UTC (rev 116955)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-09-26 18:21:40 UTC (rev 116956)
@@ -9,5 +9,7 @@
   <include package=".content" />
 
   <include package=".membership" />
+  
+  <include package=".portal" />
 
 </configure>

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/TODO.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/TODO.txt	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/TODO.txt	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1,8 @@
+Portal views
+------------
+
+Portal configuration
+====================
+
+reconfig_form.py ->
+reconfig_template.pt
\ No newline at end of file

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/__init__.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/__init__.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/__init__.py	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1 @@
+"""Views for the portal itself"""
\ No newline at end of file


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/__init__.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.pt	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.pt	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1,33 @@
+<html metal:use-macro="context/@@standard_macros/page">
+
+<body>
+
+<metal:slot metal:fill-slot="body" i18n:domain="cmf_default">
+
+<p class="errors" tal:condition="view/errors"
+                  tal:repeat="error view/errors" 
+                  tal:content="error">Error Message</p>
+
+<h1 i18n:translate="">Portal Configuration</h1>
+
+<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" />
+      <legend tal:content="widget/hint"></legend>
+    </fieldset>
+
+
+  <div class="buttons">
+    <tal:loop tal:repeat="action view/actions"
+     tal:replace="structure action/render" />
+  </div>
+
+</form>
+
+</metal:slot>
+
+</body>
+</html>

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.py	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1,51 @@
+"""Portal Configuration Form"""
+
+from zope.component import adapts, getUtility
+from zope.interface import implements
+from zope.schema import getFieldsInOrder, getFieldNames
+from zope.formlib import form
+
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+
+from Products.CMFCore.interfaces import IPropertiesTool
+from Products.CMFDefault.utils import Message as _
+from Products.CMFDefault.formlib.schema import ProxyFieldProperty
+from Products.CMFDefault.formlib.form import EditFormBase, ContentEditFormBase
+from Products.CMFDefault.formlib.widgets import ChoiceRadioWidget
+
+from interfaces import IPortalConfig
+
+class PortalConfig(EditFormBase):
+    
+    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")
+    
+    def setUpWidgets(self, ignore_request=False):
+        data = {}
+        ptool = self._getTool('portal_properties')
+        charset = ptool.getProperty('default_charset', None)
+        for name in getFieldNames(IPortalConfig):
+            value = ptool.getProperty(name)
+            if hasattr(value, 'decode'):
+                value = value.decode(charset)
+            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)
+    
+    def handle_success(self, action, data):
+        ptool = self._getTool('portal_properties')
+        ptool.editProperties(data)
+        self.status = _(u"Portal settings changed")
+        self._setRedirect('portal_actions', 'global/configPortal')


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/config.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/configure.zcml	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/configure.zcml	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1,13 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser">
+
+    <browser:page
+      for="Products.CMFCore.interfaces.ISiteRoot"
+      layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
+      name="configure.html"
+      class=".config.PortalConfig"
+      permission="cmf.ManagePortal"
+      />
+
+</configure>

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py	2010-09-26 18:21:40 UTC (rev 116956)
@@ -0,0 +1,64 @@
+"""Schema for portal forms"""
+
+from zope.interface import Interface
+from zope.schema import TextLine, ASCIILine, Bool, Choice
+from zope.schema.vocabulary import SimpleVocabulary
+
+from Products.CMFDefault.utils import Message as _
+
+email_policy = SimpleVocabulary.fromItems(
+         [
+         (_(u"Generate and email members' initial password"), True),
+         (_(u"Allow members to select their initial password"), False)
+         ]
+         )
+
+class IPortalConfig(Interface):
+    
+    email_from_name = TextLine(
+                        title=_(u"Portal 'From' name"),
+                        description=_(u"When the portal generates mail, it uses this name as its (apparent) sender."),
+                        required=False)
+                        
+    email_from_address = TextLine(
+                        title=_(u"Portal 'From' address"),
+                        description=_(u"When the portal generates mail, it uses this address as its (apparent) return address."),
+                        required=False)
+
+    smtp_server = TextLine(
+                        title=_(u"SMTP server"),
+                        description=_(u"This is the address of your local SMTP (out-going mail) server."),
+                        required=False)
+                        
+    title = TextLine(
+                    title=_(u"Portal title"),
+                    description=_(u"This is the title which appears at the top of every portal page."),
+                    required=False)
+                    
+    description = TextLine(
+                    title=_(u"Portal description"),
+                    description=_(u"This description is made available via syndicated content and elsewhere. It should be fairly brief"),
+                    required=False)
+                    
+    validate_email = Choice(
+                    title=_(u"Password policy"),
+                    vocabulary=email_policy,
+                    default=False,
+                    )
+
+    default_charset = ASCIILine(
+                    title=_(u"Portal default encoding"),
+                    description=_(u"Charset used to decode portal content strings. If empty, 'ascii' is used."),
+                    required=False,
+                    default="UTF-8")
+                    
+    email_charset = ASCIILine(
+                    title=_(u"Portal email encoding"),
+                    description=_(u"Charset used to encode emails send by the portal. If empty, 'utf-8' is used if necessary."),
+                    required=False,
+                    default="UTF-8")
+    
+    enable_actionicons = Bool(
+                    title=_(u"Action icons"),
+                    description=_(u"Actions available to the user are shown as                    textual links. With this option enabled, they are also shown as icons if the action definition specifies one."),
+                    required=False)
\ No newline at end of file


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native



More information about the checkins mailing list