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