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>

------------------------------------------------------------------------------
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.