r13347 - in archetypes.pfgextender/trunk: . src/archetypes/pfgextender/browser 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:47:48 2010
New Revision: 13347
Added:
archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py
archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt
Modified:
archetypes.pfgextender/trunk/buildout.cfg
archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configure.zcml
archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/controlpanel.xml
archetypes.pfgextender/trunk/src/archetypes/pfgextender/profiles/default/types/PFGExtender.xml
Log:
add configlet; first step
Modified: archetypes.pfgextender/trunk/buildout.cfg
==============================================================================
--- archetypes.pfgextender/trunk/buildout.cfg (original)
+++ archetypes.pfgextender/trunk/buildout.cfg Fri Dec 10 15:47:48 2010
@@ -50,6 +50,7 @@
eggs =
Plone
archetypes.pfgextender
+ vimpdb
zcml = archetypes.pfgextender:testing.zcml
[test]
Added: archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py
==============================================================================
--- (empty file)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configlet.py Fri Dec 10 15:47:48 2010
@@ -0,0 +1,85 @@
+from Acquisition import aq_inner
+
+from zope.component import getUtility
+from zope.schema.interfaces import IVocabularyFactory
+from zope.i18n import translate
+
+from plone.memoize.instance import memoize
+
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+from Products.CMFCore.utils import getToolByName
+
+from plone.app.controlpanel.form import ControlPanelView
+
+
+class TypesControlPanel(ControlPanelView):
+
+ # Actions
+
+ template = ViewPageTemplateFile('types.pt')
+
+ @property
+ @memoize
+ def type_id(self):
+ type_id = self.request.get('type_id', None)
+ if type_id is None:
+ type_id = ''
+ return type_id
+
+ @property
+ @memoize
+ def fti(self):
+ type_id = self.type_id
+ portal_types = getToolByName(self.context, 'portal_types')
+ return getattr(portal_types, type_id)
+
+ def __call__(self):
+ """Perform the update and redirect if necessary, or render the page
+ """
+ postback = True
+ context = aq_inner(self.context)
+
+ form = self.request.form
+ submitted = form.get('form.submitted', False)
+ save_button = form.get('form.button.Save', None) is not None
+ cancel_button = form.get('form.button.Cancel', None) is not None
+ type_id = form.get('old_type_id', None)
+
+ if submitted and not cancel_button:
+ if type_id:
+ pass
+ elif cancel_button:
+ self.request.response.redirect(self.context.absolute_url() + \
+ '/plone_control_panel')
+ postback = False
+
+ if postback:
+ return self.template()
+
+ @memoize
+ def selectable_types(self):
+ vocab_factory = getUtility(IVocabularyFactory,
+ name="plone.app.vocabularies.ReallyUserFriendlyTypes")
+ types = []
+ for v in vocab_factory(self.context):
+ portal_types = getToolByName(self.context, 'portal_types')
+ fti = getattr(portal_types, v.value)
+ if fti.product in ['PloneFormGen', 'archetypes.pfgextender']:
+ continue
+ if v.title:
+ title = translate(v.title, context=self.request)
+ else:
+ title = translate(v.token, domain='plone',
+ context=self.request)
+ types.append(dict(id=v.value, title=title))
+
+ def _key(v):
+ return v['title']
+ types.sort(key=_key)
+ return types
+
+ def selected_type_title(self):
+ return self.fti.Title()
+
+ def selected_type_description(self):
+ return self.fti.Description()
Modified: archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configure.zcml
==============================================================================
--- archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configure.zcml (original)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/configure.zcml Fri Dec 10 15:47:48 2010
@@ -11,4 +11,11 @@
permission="zope2.View"
/>
+ <browser:page
+ name="pfgextender-controlpanel"
+ for="Products.CMFPlone.interfaces.IPloneSiteRoot"
+ class=".configlet.TypesControlPanel"
+ permission="cmf.ManagePortal"
+ />
+
</configure>
Added: archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt
==============================================================================
--- (empty file)
+++ archetypes.pfgextender/trunk/src/archetypes/pfgextender/browser/types.pt Fri Dec 10 15:47:48 2010
@@ -0,0 +1,98 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ 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">
+
+<metal:block metal:fill-slot="top_slot"
+ tal:define="dummy python:request.set('disable_border', 1)" />
+
+<body>
+
+<div metal:fill-slot="prefs_configlet_main">
+
+ <h1 class="documentFirstHeading"
+ i18n:translate="heading_type_settings">Type Settings</h1>
+
+ <a href=""
+ class="link-parent"
+ tal:attributes="href string:$portal_url/plone_control_panel"
+ i18n:translate="label_up_to_plone_setup">
+ Up to Site Setup
+ </a>
+
+ <p i18n:translate="description_types_setup">
+ Workflow, visibility and versioning settings for your content types.
+ </p>
+
+ <form method="post"
+ tal:define="type_id view/type_id"
+ tal:attributes="action string:${context/absolute_url}/@@types-controlpanel">
+
+ <input type="hidden" name="form.submitted:boolean" value="True" />
+ <input type="hidden" name="old_type_id" tal:attributes="value type_id" />
+
+ <fieldset>
+ <legend>
+ <select name="type_id" onchange="form.submit()">
+
+ <tal:option repeat="selectable view/selectable_types">
+ <option tal:content="selectable/title" i18n:translate=""
+ tal:attributes="value selectable/id;
+ selected python:type_id == selectable['id'] and 'selected' or None">
+ Content type
+ </option>
+ </tal:option>
+ </select>
+ <noscript>
+ <input type="submit"
+ name="form.button.SelectContentType"
+ class="standalone"
+ value="Change"
+ i18n:attributes="value label_change;" />
+ </noscript>
+ </legend>
+
+ <tal:block tal:condition="python:type_id!=''">
+
+ <p class="discreet"
+ tal:content="view/selected_type_description"
+ tal:condition="view/selected_type_description"
+ i18n:translate="">
+ Type description
+ </p>
+
+ <div class="field">
+ </div>
+
+ <div class="field">
+ </div>
+
+
+ <div class="field">
+ </div>
+ </tal:block>
+
+ <div class="formControls">
+ <input type="submit"
+ value="Apply Changes"
+ name="form.button.Save"
+ class="context"
+ i18n:attributes="value label_apply_changes;" />
+ <input type="submit"
+ value="Cancel"
+ name="form.button.Cancel"
+ class="context"
+ i18n:attributes="value label_cancel;" />
+ </div>
+
+ </fieldset>
+
+ </form>
+
+</div>
+
+</body>
+</html>
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:47:48 2010
@@ -1,9 +1,14 @@
<?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" appId="pfgextender"
+ <configlet title="Type Extender" 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"
+ category="Products" condition_expr=""
+ url_expr="string:${portal_url}/pfgextender-controlpanel" visible="True">
+ <permission>Manage portal</permission>
+ </configlet>
</object>
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:47:48 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"></property>
+ <property name="product">archetypes.pfgextender</property>
<property name="factory">cmf.folder</property>
<property name="immediate_view">folder_contents</property>
<property name="global_allow">False</property>
------------------------------------------------------------------------------