r13349 - in archetypes.pfgextender/trunk: . src/archetypes/pfgextender src/archetypes/pfgextender/browser src/archetypes/pfgextender/locales src/archetypes/pfgextender/locales/fr src/archetypes/pfgextender/locales/fr/LC_MESSAGES src/archetypes/pfgextender/profiles/default src/archetypes/pfgextender/profiles/default/types

"Godefroid Chapelle" <[email protected]>
Newsgroups gmane.comp.web.zope.plone.archetypes.cvs
Message-ID <[email protected]>
Author: gotcha
Date: Fri Dec 10 15:55:06 2010
New Revision: 13349

Added:
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/fr/
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/fr/LC_MESSAGES/
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/fr/LC_MESSAGES/pfgextender.po
Modified:
   archetypes.pfgextender/trunk/.gitignore
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/__init__.py
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/configure.zcml
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/controlpanel.xml
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/types/PFGExtender.xml
   archetypes.pfgextender/trunk/src/archetypes/pfgextender/tool.py
Log:
Types Extensions configlet does work

tests still missing

Modified: archetypes.pfgextender/trunk/.gitignore
==============================================================================
--- archetypes.pfgextender/trunk/.gitignore	(original)
+++ archetypes.pfgextender/trunk/.gitignore	Fri Dec 10 15:55:06 2010
@@ -6,3 +6,4 @@
 tags
 coverage
 .mr.developer.cfg
+*.mo

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/__init__.py
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/__init__.py	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/__init__.py	Fri Dec 10 15:55:06 2010
@@ -0,0 +1,2 @@
+from zope.i18nmessageid import MessageFactory
+PfgExtenderFactory = MessageFactory('pfgextender')

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py	Fri Dec 10 15:55:06 2010
@@ -6,10 +6,15 @@
 
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
 from Products.CMFCore.utils import getToolByName
+from Products.statusmessages.interfaces import IStatusMessage
 
 from plone.app.controlpanel.form import ControlPanelView
 
 from archetypes.pfgextender.tool import TOOL_ID
+from archetypes.pfgextender import PfgExtenderFactory as _
+
+
+NO_EXTENSION_ID = "no_extension"
 
 
 class TypesControlPanel(ControlPanelView):
@@ -41,11 +46,13 @@
         form = self.request.form
         submitted = form.get('form.submitted', False)
         cancel_button = form.get('form.button.Cancel', None) is not None
+        save_button = form.get('form.button.Save', None) is not None
         type_id = form.get('old_type_id', None)
+        form_id = form.get('form_id', None)
 
-        if submitted and not cancel_button:
+        if submitted and save_button:
             if type_id:
-                pass
+                self.applyNewForm(type_id, form_id)
         elif cancel_button:
             self.request.response.redirect(self.context.absolute_url() + \
                                            '/plone_control_panel')
@@ -54,6 +61,19 @@
         if postback:
             return self.template()
 
+    def applyNewForm(self, type_id, form_id):
+        portal_pfgextender = getToolByName(self.context, TOOL_ID)
+        if form_id == NO_EXTENSION_ID:
+            portal_pfgextender.resetFormForPortalType(type_id)
+            msg = _("content_type_no_more_extended",
+                u"The content type is not extended anymore.")
+        elif form_id:
+            portal_pfgextender.registerFormForPortalType(form_id=form_id,
+                portal_type=type_id)
+            msg = _("content_type_extension_updated",
+                u"The content type extension form has been modified")
+        IStatusMessage(self.request).addStatusMessage(msg, type='info')
+
     @memoize
     def selectable_types(self):
         vocab_factory = getUtility(IVocabularyFactory,
@@ -78,13 +98,26 @@
 
     def get_forms(self):
         portal_pfgextender = getToolByName(self.context, TOOL_ID)
-        result = []
+        is_registered = self.is_selected_type_registered()
+        no_extension = dict(id=NO_EXTENSION_ID, title=_("No extension"),
+            selected=not is_registered)
+        result = [no_extension]
         for form_id in portal_pfgextender.objectIds():
             form = getattr(portal_pfgextender, form_id)
             title = form.Title()
-            result.append(dict(id=form_id, title=title))
+            selected = is_registered and (form_id ==
+            self.selected_type_form().getId())
+            result.append(dict(id=form_id, title=title, selected=selected))
         return result
 
+    def selected_type_form(self):
+        portal_pfgextender = getToolByName(self.context, TOOL_ID)
+        return portal_pfgextender.getRegisteredFormForPortalType(
+            self.fti.getId())
+
+    def is_selected_type_registered(self):
+        return self.selected_type_form() is not None
+
     def selected_type_title(self):
         return self.fti.Title()
 

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt	Fri Dec 10 15:55:06 2010
@@ -4,7 +4,7 @@
       xmlns:i18n="http://xml.zope.org/namespaces/i18n"
       xml:lang="en" lang="en"
       metal:use-macro="context/prefs_main_template/macros/master"
-      i18n:domain="plone">
+      i18n:domain="pfgextender">
 
 <metal:block metal:fill-slot="top_slot"
              tal:define="dummy python:request.set('disable_border', 1)" />
@@ -14,17 +14,18 @@
 <div metal:fill-slot="prefs_configlet_main">
 
     <h1 class="documentFirstHeading"
-        i18n:translate="heading_types_extensions_settings">Types Extensions</h1>
+        i18n:translate="">Types Extensions</h1>
 
     <a href=""
         class="link-parent"
         tal:attributes="href string:$portal_url/plone_control_panel"
+        i18n:domain="plone"
         i18n:translate="label_up_to_plone_setup">
             Up to Site Setup
     </a>
 
-    <p i18n:translate="description_types_extensions_setup">
-      Select a form (set of fields) used to extend a content type.
+    <p i18n:translate="description_types_extensions_setup" >
+      Selection of the forms used to extend the content types.
     </p>
     
     <form method="post" 
@@ -37,9 +38,11 @@
         <fieldset>
             <legend>
                 <select name="type_id" onchange="form.submit()">
-
+                    <option value="" 
+                            i18n:translate="" >Select a type</option>
                     <tal:option repeat="selectable view/selectable_types">
                         <option tal:content="selectable/title" i18n:translate=""
+                                i18n:domain="plone"
                                 tal:attributes="value selectable/id;
                                                 selected python:type_id == selectable['id'] and 'selected' or None">
                                 Content type
@@ -51,6 +54,7 @@
                            name="form.button.SelectContentType"
                            class="standalone"
                            value="Change"
+                           i18n:domain="plone"
                            i18n:attributes="value label_change;" />
                 </noscript>
            </legend>
@@ -60,6 +64,7 @@
                <p class="discreet"
                   tal:content="view/selected_type_description"
                   tal:condition="view/selected_type_description"
+                  i18n:domain="plone"
                   i18n:translate="">
                    Type description
                </p>
@@ -67,7 +72,8 @@
                <div class="field">
                   <select name="form_id">
                     <option tal:repeat="form view/get_forms"
-                            tal:attributes="value form/id"
+                            tal:attributes="value form/id;
+                                            selected form/selected"
                             tal:content="form/title">Title</option>
                   </select>
                </div>
@@ -85,11 +91,13 @@
                      value="Apply Changes"
                      name="form.button.Save"
                      class="context"
+                     i18n:domain="plone"
                      i18n:attributes="value label_apply_changes;" />
               <input type="submit"
                      value="Cancel" 
                      name="form.button.Cancel"
                      class="context"
+                     i18n:domain="plone"
                      i18n:attributes="value label_cancel;" />
             </div>
             

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/configure.zcml
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/configure.zcml	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/configure.zcml	Fri Dec 10 15:55:06 2010
@@ -1,6 +1,7 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
     xmlns:five="http://namespaces.zope.org/five"
+    xmlns:i18n="http://namespaces.zope.org/i18n"
     i18n_domain="archetypes.pfgextender">
 
   <include package="Products.PloneFormGen" />
@@ -9,6 +10,8 @@
 
   <include file="profiles.zcml" />
 
+  <i18n:registerTranslations directory="locales"/>
+
   <subscriber
     for="Products.PloneFormGen.interfaces.IPloneFormGenForm
          zope.app.container.interfaces.IObjectMovedEvent"

Added: archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/fr/LC_MESSAGES/pfgextender.po
==============================================================================
--- (empty file)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/locales/fr/LC_MESSAGES/pfgextender.po	Fri Dec 10 15:55:06 2010
@@ -0,0 +1,37 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: archetypes.pfgextender\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"PO-Revision-Date: 2006-09-13 23:56+0100\n"
+"Last-Translator: Godefroid Chapelle <[email protected]>"
+"Language-Team: French Translation Team <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: fr\n"
+"Language-Name: French\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: pfgextender\n"
+"X-Is-Fallback-For: fr-be fr-ca fr-lu fr-mc fr-ch fr-fr\n"
+
+msgid "No extension"
+msgstr "Pas d'extension"
+
+msgid "Select a type"
+msgstr "Veuillez choisir un type"
+
+msgid "Extension forms"
+msgstr "Formulaires d'extension"
+
+msgid "Types Extensions"
+msgstr "Extensions de types"
+
+msgid "description_types_extensions_setup"
+msgstr "Choix des formulaires pour étendre les types de contenus"
+
+msgid "content_type_extension_updated"
+msgstr "Le formulaire d'extension du type de contenu a été modifié."
+
+msgid "content_type_no_more_extended"
+msgstr "Le type de contenu n'est plus étendu."

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/controlpanel.xml
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/controlpanel.xml	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/controlpanel.xml	Fri Dec 10 15:55:06 2010
@@ -1,12 +1,12 @@
 <?xml version="1.0"?>
 <object name="portal_controlpanel" meta_type="Plone Control Panel Tool"
-    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="plone">
- <configlet title="Type Extender" action_id="pfgextender_view" appId="pfgextender_view"
+    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="pfgextender">
+ <configlet title="Extension forms" action_id="pfgextender_view" appId="pfgextender_view"
     category="Products" condition_expr=""
     url_expr="string:${portal_url}/portal_pfgextender/folder_contents" visible="True">
   <permission>Manage portal</permission>
  </configlet>
- <configlet title="Type Extender Configuration" action_id="pfgextender" appId="pfgextender"
+ <configlet title="Types Extensions" action_id="pfgextender" appId="pfgextender"
     category="Products" condition_expr=""
     url_expr="string:${portal_url}/pfgextender-controlpanel" visible="True">
   <permission>Manage portal</permission>

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/types/PFGExtender.xml
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/types/PFGExtender.xml	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/types/PFGExtender.xml	Fri Dec 10 15:55:06 2010
@@ -6,7 +6,7 @@
     i18n:translate="">Use folders to put content in categories.</property>
  <property name="content_icon">folder_icon.gif</property>
  <property name="content_meta_type">PFGExtender</property>
- <property name="product">archetypes.pfgextender</property>
+ <property name="product"></property>
  <property name="factory">cmf.folder</property>
  <property name="immediate_view">folder_contents</property>
  <property name="global_allow">False</property>

Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/tool.py
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/tool.py	(original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/tool.py	Fri Dec 10 15:55:06 2010
@@ -11,6 +11,7 @@
 
 from archetypes.pfgextender.interfaces import IPFGExtenderForm
 from archetypes.pfgextender.interfaces import IPFGExtensible
+from archetypes.pfgextender import PfgExtenderFactory as _
 
 TOOL_ID = 'portal_pfgextender'
 
@@ -28,7 +29,7 @@
     id = TOOL_ID
     meta_type = 'PFGExtender'
     portal_type = 'PFGExtender'
-    title = 'PFGExtender Forms'
+    Title = _('Extension Forms')
     plone_tool = True
     security = ClassSecurityInfo()
 
@@ -37,24 +38,34 @@
     allowed_types = [FormFolder.portal_type]
 
     def registerFormForPortalType(self, form_id, portal_type):
-        self.makeExistingContentAsExtensible(portal_type)
-        pfgForm = self.get(form_id, None)
-        sm = getSiteManager(self)
-        registered = sm.queryUtility(IPFGExtenderForm, name=portal_type)
-        if registered is not pfgForm:
-            if registered is not None:
-                sm.unregisterUtility(registered, IPFGExtenderForm,
-                    name=portal_type)
-            sm.registerUtility(pfgForm, IPFGExtenderForm, name=portal_type)
+        newForm = self.get(form_id, None)
+        if newForm is None:
+            self.resetFormForPortalType(portal_type)
+        else:
+            self.makeExistingContentAsExtensible(portal_type)
+            sm = getSiteManager(self)
+            currentForm = sm.queryUtility(IPFGExtenderForm, name=portal_type)
+            # register new form only if there is a change
+            if newForm is not currentForm:
+                # unregister only if there is a current registration
+                if currentForm is not None:
+                    sm.unregisterUtility(provided=IPFGExtenderForm,
+                        name=portal_type)
+                sm.registerUtility(newForm, IPFGExtenderForm, name=portal_type)
 
     def resetFormForPortalType(self, portal_type):
         self.makeExistingContentNoLongerExtensible(portal_type)
-        sm = getSiteManager(self)
-        registered = sm.queryUtility(IPFGExtenderForm, name=portal_type)
+        registered = self.getRegisteredFormForPortalType(portal_type)
         if registered is not None:
-            sm.unregisterUtility(registered, IPFGExtenderForm,
+            sm = getSiteManager(self)
+            sm.unregisterUtility(provided=IPFGExtenderForm,
                 name=portal_type)
 
+    def getRegisteredFormForPortalType(self, portal_type):
+        sm = getSiteManager(self)
+        registered = sm.queryUtility(IPFGExtenderForm, name=portal_type)
+        return registered
+
     def makeExistingContentAsExtensible(self, portal_type):
         portal_catalog = getToolByName(self, 'portal_catalog')
         brains = portal_catalog(portal_type=portal_type)

------------------------------------------------------------------------------
Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
new data types, scalar functions, improved concurrency, built-in packages, 
OCI, SQL*Plus, data movement tools, best practices and more.
http://p.sf.net/sfu/oracle-sfdev2dev 
_______________________________________________
Archetypes-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/archetypes-checkins
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.