[Erp5-report] r25255 - /erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jan 22 13:30:13 CET 2009


Author: jp
Date: Thu Jan 22 13:30:12 2009
New Revision: 25255

URL: http://svn.erp5.org?rev=25255&view=rev
Log:
The goal of this script is to create a universal and configurable way to generate all sorts of tree structures in a Web Site rather than spend our time rewriting the same code everywhere.

Added:
    erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getSiteMapTree.xml

Added: erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getSiteMapTree.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getSiteMapTree.xml?rev=25255&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getSiteMapTree.xml (added)
+++ erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getSiteMapTree.xml [utf8] Thu Jan 22 13:30:12 2009
@@ -1,0 +1,223 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+"""\n
+  The goal of this script is provide a unified API to generate\n
+  the different lists and trees which are used in a Web Site. This includes\n
+  lists of subsections, lists of pages, site maps, navigation menus.\n
+\n
+  If a mapping is provided, the tree structure is mapped \n
+  with object properties defined in the mapping and the result\n
+  can be cached. If no mapping is provided, ZODB documents are provided\n
+  in the tree structure and the result can not be cached.\n
+\n
+  The script a representation in the form of a hierarchical site map.\n
+  The structure is provided as a tree so that it is easy to implement\n
+  recursive call with TAL/METAL:\n
+\n
+  {\n
+    \'url\'      : \'/erp5/web_site_module/mysite/mysection\',\n
+    \'level\'    : 1,\n
+    \'section\'  : <some section>,\n
+    \'document\' : None,\n
+    \'subsection\' : (\n
+                    {\n
+                      \'url\'      : \'/erp5/web_site_module/mysite/mysection/some-reference\',\n
+                      \'level\'    : 2,\n
+                      \'section\'  : None,\n
+                      \'document\' : <some document>,\n
+                      \'subsection\' : (),\n
+                    },\n
+                    {\n
+                      \'url\'      : \'/erp5/web_site_module/mysite/mysection/subsection\',\n
+                      \'level\'    : 2,\n
+                      \'section\'  : <some subsection>,\n
+                      \'document\' : None,\n
+                      \'subsection\' : (),\n
+                    }, \n
+                   ),\n
+  }\n
+                   \n
+  TODO:\n
+    - provide an option to exclude default pages from document list \n
+"""\n
+\n
+def mapObject(property_dict):\n
+  result = {}\n
+  my_object = property_dict.get(\'section\', None)\n
+  if my_object is None: my_object = property_dict.get(\'document\', None)\n
+  if my_object is not None:\n
+    for key in property_mapping:\n
+      result[key] = my_object.getProperty(key)\n
+  result[\'url\'] = property_dict[\'url\']\n
+  result[\'level\'] = property_dict[\'level\']\n
+  result[\'subsection\'] = property_dict[\'subsection\']\n
+  return result\n
+\n
+def getSiteMapItemTree(section, depth=0, level=None):   \n
+  result = []\n
+  if not depth: return result\n
+  if level is None: level = 1\n
+  if include_document or (include_document is None and section.isSiteMapDocumentParent()):\n
+    for document in section.getDocumentValueList():\n
+      result.append({\n
+                      \'url\'      : section.getPermanentURL(document),\n
+                      \'level\'    : level,\n
+                      \'section\'  : None,\n
+                      \'document\' : document,\n
+                      \'subsection\' : None,\n
+                    })\n
+  if include_subsection or (include_subsection is None and section.isSiteMapSectionParent()):\n
+    for subsection in section.contentValues(portal_type=\'Web Section\',\n
+                                            sort_on=\'int_index\',\n
+                                            checked_permission=\'View\'):\n
+      if subsection.isVisible():\n
+        subsection_result = getSiteMapItemTree(subsection, depth=depth - 1, level=level + 1)\n
+        if not subsection_result: subsection_result = None\n
+        result.append({\n
+                        \'url\'      : subsection.absolute_url(),\n
+                        \'level\'    : level,\n
+                        \'section\'  : subsection,\n
+                        \'document\' : None,\n
+                        \'subsection\'  : subsection_result,\n
+                      })\n
+  if property_mapping:\n
+    return map(mapObject, result)\n
+  return result\n
+\n
+return getSiteMapItemTree(context, depth=depth)\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>depth=1, include_subsection=None, include_document=None, property_mapping=(\'translated_title\',)</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>4</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>depth</string>
+                            <string>include_subsection</string>
+                            <string>include_document</string>
+                            <string>property_mapping</string>
+                            <string>mapObject</string>
+                            <string>None</string>
+                            <string>getSiteMapItemTree</string>
+                            <string>context</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <tuple>
+                <int>1</int>
+                <none/>
+                <none/>
+                <tuple>
+                  <string>translated_title</string>
+                </tuple>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSection_getSiteMapTree</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>




More information about the Erp5-report mailing list