[Checkins] SVN: zopeorg.theme/trunk/zopeorg/theme/ Add a Feature content type

Wichert Akkerman wichert at wiggy.net
Sat Jan 19 15:33:47 EST 2008


Log message for revision 82956:
  Add a Feature content type

Changed:
  U   zopeorg.theme/trunk/zopeorg/theme/__init__.py
  A   zopeorg.theme/trunk/zopeorg/theme/config.py
  U   zopeorg.theme/trunk/zopeorg/theme/configure.zcml
  A   zopeorg.theme/trunk/zopeorg/theme/content/
  A   zopeorg.theme/trunk/zopeorg/theme/content/__init__.py
  A   zopeorg.theme/trunk/zopeorg/theme/content/feature.py
  A   zopeorg.theme/trunk/zopeorg/theme/permissions.py
  A   zopeorg.theme/trunk/zopeorg/theme/profiles/default/factorytool.xml
  A   zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/
  A   zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/Feature.xml
  A   zopeorg.theme/trunk/zopeorg/theme/profiles/default/types.xml

-=-
Modified: zopeorg.theme/trunk/zopeorg/theme/__init__.py
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/__init__.py	2008-01-19 18:57:24 UTC (rev 82955)
+++ zopeorg.theme/trunk/zopeorg/theme/__init__.py	2008-01-19 20:33:47 UTC (rev 82956)
@@ -1 +1,25 @@
-#
+from zope.i18nmessageid import MessageFactory as msgfac
+from Products.Archetypes.public import process_types
+from Products.Archetypes.public import listTypes
+from Products.CMFCore.utils import ContentInit
+from zopeorg.theme.config import PROJECTNAME
+
+MessageFactory = msgfac("zopeorg.theme")
+    
+def initialize(context):
+    import zopeorg.theme.content
+    from zopeorg.theme import permissions
+    listOfTypes=listTypes(PROJECTNAME)
+    (content_types, constructors, ftis)=process_types(listOfTypes, PROJECTNAME)
+    allTypes = zip(content_types, constructors)
+    for atype, constructor in allTypes:
+        kind = "%s: %s" % (PROJECTNAME, atype.archetype_name)
+        ContentInit(
+            kind,
+            content_types      = (atype,),
+            # Add permissions look like perms.Add{meta_type}
+            permission         = getattr(permissions, "Add%s" % atype.meta_type),
+            extra_constructors = (constructor,),
+            fti                = ftis,
+            ).initialize(context) 
+

Added: zopeorg.theme/trunk/zopeorg/theme/config.py
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/config.py	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/config.py	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,3 @@
+
+PROJECTNAME = "zopeorg.theme"
+


Property changes on: zopeorg.theme/trunk/zopeorg/theme/config.py
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zopeorg.theme/trunk/zopeorg/theme/configure.zcml
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/configure.zcml	2008-01-19 18:57:24 UTC (rev 82955)
+++ zopeorg.theme/trunk/zopeorg/theme/configure.zcml	2008-01-19 20:33:47 UTC (rev 82956)
@@ -3,7 +3,7 @@
     xmlns:five="http://namespaces.zope.org/five"
     i18n_domain="zopeorg.theme">
 
-   <five:registerPackage package="." />
+   <five:registerPackage package="." initialize=".initialize" />
 
    <include package=".browser" />
 


Property changes on: zopeorg.theme/trunk/zopeorg/theme/content
___________________________________________________________________
Name: svn:ignore
   + *.pyc


Added: zopeorg.theme/trunk/zopeorg/theme/content/__init__.py
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/content/__init__.py	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/content/__init__.py	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1 @@
+from zopeorg.theme.content.feature import Feature


Property changes on: zopeorg.theme/trunk/zopeorg/theme/content/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zopeorg.theme/trunk/zopeorg/theme/content/feature.py
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/content/feature.py	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/content/feature.py	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,97 @@
+from Products.Archetypes.public import Schema
+from Products.Archetypes.public import ImageWidget
+from Products.Archetypes.public import RichWidget
+from Products.Archetypes.public import ImageField
+from Products.Archetypes.public import TextField
+from Products.Archetypes.public import AnnotationStorage
+from Products.validation import V_REQUIRED
+from Products.ATContentTypes.content.document import ATDocument
+from Products.ATContentTypes.content.document import ATDocumentSchema
+from Products.ATContentTypes.content.base import registerATCT
+from Products.ATContentTypes.configuration import zconf
+from zopeorg.theme import MessageFactory as _
+from zopeorg.theme.config import PROJECTNAME
+
+FeatureSchema = ATDocumentSchema.copy() + Schema((
+    TextField("blurb",
+              required=True,
+              searchable=True,
+              primary=False,
+              storage = AnnotationStorage(migrate=True),
+              validators = ("isTidyHtmlWithCleanup",),
+              default_output_type = "text/x-html-safe",
+              widget = RichWidget(
+                        label = _(u"label_blurb", default=u"Blurb"),
+                        description = _(u"help_blurb",
+                            default=u"The blurb text is displayed at the top "
+                                    u"of the feature page."),
+                        rows = 5,
+                        allow_file_upload = False),
+    ),
+    ImageField("image",
+        required = False,
+        storage = AnnotationStorage(migrate=True),
+        languageIndependent = True,
+        max_size = zconf.ATNewsItem.max_image_dimension,
+        sizes= {"large"   : (768, 768),
+                "preview" : (400, 400),
+                "mini"    : (200, 200),
+                "thumb"   : (128, 128),
+                "tile"    :  (64, 64),
+                "icon"    :  (32, 32),
+                "listing" :  (16, 16),
+               },
+        validators = (("isNonEmptyFile", V_REQUIRED),
+                             ("checkNewsImageMaxSize", V_REQUIRED)),
+        widget = ImageWidget(
+            label= _(u"label_feature_image",
+                default=u"Image"),
+            description = _(u"help_feature_image",
+                default=u"Will be shown next to the blurb."),
+            show_content_type = False)
+    ),
+    TextField("divider",
+              required=False,
+              searchable=False,
+              primary=False,
+              storage = AnnotationStorage(migrate=True),
+              validators = ("isTidyHtmlWithCleanup",),
+              default_output_type = "text/x-html-safe",
+              widget = RichWidget(
+                        label = _(u"label_divider",
+                            default=u"Divider line"),
+                        description = _(u"help_divider",
+                            default=u"The divider is shown in a bar between "
+                                    u"the blurb and the main context."),
+                        rows = 5,
+                        allow_file_upload = False),
+    ),
+    ))
+
+FeatureSchema.moveField("blurb", after="description")
+FeatureSchema.moveField("image", after="blurb")
+
+
+class Feature(ATDocument):
+    schema = FeatureSchema
+
+    def __bobo_traverse__(self, REQUEST, name):
+        """Transparent access to image scales. Copied from ATNewsItem.
+        """
+        if name.startswith("image"):
+            field = self.getField("image")
+            image = None
+            if name == "image":
+                image = field.getScale(self)
+            else:
+                scalename = name[len("image_"):]
+                if scalename in field.getAvailableSizes(self):
+                    image = field.getScale(self, scale=scalename)
+            if image is not None and not isinstance(image, basestring):
+                # image might be None or "" for empty images
+                return image
+
+        return ATDocument.__bobo_traverse__(self, REQUEST, name)
+
+registerATCT(Feature, PROJECTNAME)
+


Property changes on: zopeorg.theme/trunk/zopeorg/theme/content/feature.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zopeorg.theme/trunk/zopeorg/theme/permissions.py
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/permissions.py	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/permissions.py	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,5 @@
+from Products.CMFCore.permissions import setDefaultRoles
+
+AddFeature = "zopeorg.theme: Add Bla"
+
+setDefaultRoles(AddFeature, ("Manager", "Owner"))


Property changes on: zopeorg.theme/trunk/zopeorg/theme/permissions.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zopeorg.theme/trunk/zopeorg/theme/profiles/default/factorytool.xml
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/profiles/default/factorytool.xml	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/profiles/default/factorytool.xml	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<object name="portal_factory">
+ <factorytypes>
+  <type portal_type="Feature" />
+ </factorytypes>
+</object>


Property changes on: zopeorg.theme/trunk/zopeorg/theme/profiles/default/factorytool.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/Feature.xml
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/Feature.xml	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/Feature.xml	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<object name="Feature"
+   meta_type="Factory-based Type Information with dynamic views"
+   i18n:domain="zopeorg.theme" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title" i18n:translate="">Feature</property>
+ <property name="description"
+      i18n:translate="">A feature, describing a specific feature of Zope.</property>
+ <property name="content_icon">document_icon.gif</property>
+ <property name="content_meta_type">Feature</property>
+ <property name="product">zopeorg.theme</property>
+ <property name="factory">addFeature</property>
+ <property name="immediate_view">document_view</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">document_view</property>
+ <property name="view_methods">
+  <element value="document_view"/>
+ </property>
+ <alias from="(Default)" to="(dynamic view)"/>
+ <alias from="edit" to="atct_edit"/>
+ <alias from="sharing" to="@@sharing"/>
+ <alias from="view" to="(selected layout)"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True" i18n:attributes="title">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr="not:object/@@plone_lock_info/is_locked_for_current_user|python:True"
+    url_expr="string:${object_url}/edit" visible="True" i18n:attributes="title">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True"
+    i18n:attributes="title">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="History" action_id="history" category="object"
+    condition_expr="" url_expr="string:${object_url}/atct_history"
+    visible="False" i18n:attributes="title">
+  <permission value="ATContentTypes: View history"/>
+ </action>
+ <action title="External Edit" action_id="external_edit" category="object"
+    condition_expr="object/externalEditorEnabled"
+    url_expr="string:${object_url}/external_edit" visible="False"
+    i18n:attributes="title">
+  <permission value="Modify portal content"/>
+ </action>
+</object>


Property changes on: zopeorg.theme/trunk/zopeorg/theme/profiles/default/types/Feature.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zopeorg.theme/trunk/zopeorg/theme/profiles/default/types.xml
===================================================================
--- zopeorg.theme/trunk/zopeorg/theme/profiles/default/types.xml	                        (rev 0)
+++ zopeorg.theme/trunk/zopeorg/theme/profiles/default/types.xml	2008-01-19 20:33:47 UTC (rev 82956)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<object name="portal_types">
+ <object name="Feature"
+   meta_type="Factory-based Type Information with dynamic views"/>
+</object>


Property changes on: zopeorg.theme/trunk/zopeorg/theme/profiles/default/types.xml
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list