From eb3cb389af237a428b6d657af6eb52755f23e40e Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Tue, 1 Sep 2009 13:25:37 +0000
Subject: [PATCH] make subsection widget configurable. make sitemap depth
 configurable.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@28724 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 ...WebSection_viewMultiflex5Configuration.xml |  34 +++--
 .../my_layout_font_list.xml                   |   5 +-
 .../my_layout_sitemap_depth.xml               | 104 +++++++++++++
 .../my_layout_subsection.xml                  | 141 ++++++++++++++++++
 .../my_layout_subsection_depth.xml            | 104 +++++++++++++
 .../my_layout_subsection_style.xml            | 141 ++++++++++++++++++
 .../WebSection_viewSiteMapWidget.xml          |  29 +---
 .../WebSection_viewSubsectionWidget.xml       |  24 +--
 .../erp5_web_multiflex5_demo_layout.xml       |  18 +--
 .../subsection_list.xml                       |  35 ++++-
 .../erp5_web_multiflex5_layout.xml            |   4 +-
 .../sitemap_renderer.xml                      |  84 +++++++++++
 bt5/erp5_web_multiflex5_theme/bt/revision     |   2 +-
 13 files changed, 645 insertions(+), 80 deletions(-)
 create mode 100644 bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_sitemap_depth.xml
 create mode 100644 bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection.xml
 create mode 100644 bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_depth.xml
 create mode 100644 bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_style.xml
 create mode 100644 bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/sitemap_renderer.xml

diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration.xml
index 61a94788d1..ebc6ce42e3 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration.xml
@@ -64,9 +64,9 @@
               <list>
                 <string>left (Color)</string>
                 <string>right (Size)</string>
-                <string>left (Fonts)</string>
-                <string>right (Images)</string>
-                <string>center (Sections)</string>
+                <string>left (Fonts and Images)</string>
+                <string>right (Widgets)</string>
+                <string>center (Information)</string>
               </list>
             </value>
         </item>
@@ -75,15 +75,12 @@
             <value>
               <dictionary>
                 <item>
-                    <key> <string>center (Sections)</string> </key>
+                    <key> <string>center (Information)</string> </key>
                     <value>
                       <list>
                         <string>my_layout_header_title</string>
                         <string>my_layout_header_motto</string>
                         <string>my_layout_copyright_message</string>
-                        <string>my_layout_search_area_section_id</string>
-                        <string>my_layout_news_area_section_id</string>
-                        <string>my_layout_sitemap_section_id</string>
                       </list>
                     </value>
                 </item>
@@ -102,17 +99,10 @@
                     </value>
                 </item>
                 <item>
-                    <key> <string>left (Fonts)</string> </key>
+                    <key> <string>left (Fonts and Images)</string> </key>
                     <value>
                       <list>
                         <string>my_layout_font_list</string>
-                      </list>
-                    </value>
-                </item>
-                <item>
-                    <key> <string>right (Images)</string> </key>
-                    <value>
-                      <list>
                         <string>my_layout_site_logo</string>
                         <string>my_layout_header_background_image</string>
                         <string>my_layout_page_top_background_image</string>
@@ -137,6 +127,20 @@
                       </list>
                     </value>
                 </item>
+                <item>
+                    <key> <string>right (Widgets)</string> </key>
+                    <value>
+                      <list>
+                        <string>my_layout_subsection</string>
+                        <string>my_layout_subsection_depth</string>
+                        <string>my_layout_subsection_style</string>
+                        <string>my_layout_search_area_section_id</string>
+                        <string>my_layout_news_area_section_id</string>
+                        <string>my_layout_sitemap_section_id</string>
+                        <string>my_layout_sitemap_depth</string>
+                      </list>
+                    </value>
+                </item>
               </dictionary>
             </value>
         </item>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_font_list.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_font_list.xml
index 36e673d847..2ecea2d17a 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_font_list.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_font_list.xml
@@ -234,7 +234,7 @@
                 </item>
                 <item>
                     <key> <string>enabled</string> </key>
-                    <value> <int>1</int> </value>
+                    <value> <int>0</int> </value>
                 </item>
                 <item>
                     <key> <string>external_validator</string> </key>
@@ -280,8 +280,7 @@
                     <key> <string>view_separator</string> </key>
                     <value> <string encoding="cdata"><![CDATA[
 
-<br />\n
-
+<br />
 
 ]]></string> </value>
                 </item>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_sitemap_depth.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_sitemap_depth.xml
new file mode 100644
index 0000000000..135dfd8f7c
--- /dev/null
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_sitemap_depth.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_layout_sitemap_depth</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_integer_value</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Sitemap Depth</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection.xml
new file mode 100644
index 0000000000..bbfd33b447
--- /dev/null
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>items</string>
+                <string>orientation</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_layout_subsection</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>orientation</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_radio_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>orientation</string> </key>
+                    <value> <string>horizontal</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Subsection</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python:((\'Acquire\', \'\'), (\'Display\', 1), (\'Hide\', 0))</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_depth.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_depth.xml
new file mode 100644
index 0000000000..04ac5949c5
--- /dev/null
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_depth.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>display_width</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_layout_subsection_depth</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_integer_value</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Subsection Depth</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_style.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_style.xml
new file mode 100644
index 0000000000..cdfe527892
--- /dev/null
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewMultiflex5Configuration/my_layout_subsection_style.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>items</string>
+                <string>orientation</string>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_layout_subsection_style</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>orientation</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_radio_field</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>items</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>orientation</string> </key>
+                    <value> <string>horizontal</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Subsection Style</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python:((\'Acquire\', \'\'), (\'Table\', \'sidemenu1\'), (\'List\', \'sidemenu3\'))</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSiteMapWidget.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSiteMapWidget.xml
index 2b12441672..a9b84fb3e6 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSiteMapWidget.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSiteMapWidget.xml
@@ -43,32 +43,9 @@
             <key> <string>_text</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-<tal:block replace="nothing">\n
-  <!--\n
-  This widget is quite similar to WebSection_viewNavigationWidget, but this does not contain\n
-  any IE6-only hack, but just uses normal unordered lists.\n
-  -->\n
-</tal:block>\n
-\n
-<tal:block tal:define="current_web_site python:request.get(\'current_web_site\', here);\n
-                       menu_item_list python:current_web_site.WebSection_getSiteMapTree(depth=3);\n
-                       web_site_url python:current_web_site.absolute_url()">\n
-  <ul>\n
-    <li tal:repeat="menu_item menu_item_list">\n
-      <tal:block tal:condition="not:nocall:menu_item/subsection"><a tal:attributes="href menu_item/url" tal:content="menu_item/translated_title">Menu</a></tal:block>\n
-      <tal:block tal:condition="nocall:menu_item/subsection">\n
-      <a tal:attributes="href menu_item/url"><tal:block tal:replace="menu_item/translated_title">Drop-down Menu</tal:block></a>\n
-      <ul metal:define-macro="generateTree">\n
-        <li tal:repeat="item menu_item/subsection">\n
-          <a href="#" tal:attributes="href item/url" tal:content="item/translated_title">Menu subitem 1</a>\n
-          <tal:recurse define="menu_item item" tal:condition="nocall:item/subsection">\n
-            <metal:call use-macro="here/WebSection_viewNavigationWidget/macros/generateTree" />\n
-          </tal:recurse>\n
-        </li>\n
-      </ul>\n
-      </tal:block>\n
-    </li>\n
-  </ul>\n
+<tal:block tal:define="sitemap_root python:request.get(\'current_web_site\', here);\n
+                       depth python:here.getLayoutProperty(\'layout_sitemap_depth\', 5)">\n
+<tal:block metal:use-macro="here/sitemap_renderer/macros/master" />\n
 </tal:block>\n
 
 
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSubsectionWidget.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSubsectionWidget.xml
index fdeb61bccf..8252215e1b 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSubsectionWidget.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/WebSection_viewSubsectionWidget.xml
@@ -43,27 +43,11 @@
             <key> <string>_text</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-<tal:block replace="nothing">\n
-  <!--\n
-  This widget displays the list of Sections contained in the current context.\n
-  \n
-  TODO:\n
-    - make sure translation is possible\n
-    - make sure URLs are correct\n
-    - use generic method (erp5_web) to retrieve the list of subsections\n
-    - make it hierarchic\n
-  -->\n
+<tal:block tal:define="sitemap_root python:request.get(\'current_web_section\', here);\n
+                       depth python:here.getLayoutProperty(\'layout_subsection_depth\', 1)">\n
+<tal:block metal:use-macro="here/sitemap_renderer/macros/master" />\n
 </tal:block>\n
-\n
-\n
-<ul tal:define="current_web_section python:request.get(\'current_web_section\', here)"\n
-    i18n:translate="" i18n:domain="ui" i18n:attributes="title"\n
-    title="Sections accessible from here.">\n
-  <li tal:repeat="subsection python:current_web_section.getSiteMapTree(depth=1)">\n
-    <a href="#" tal:content="subsection/translated_title"\n
-                tal:attributes="href subsection/url">Menu item</a>\n
-  </li>\n
-</ul>
+
 
 ]]></string> </value>
         </item>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout.xml
index e884401eec..bd5f3acb46 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout.xml
@@ -67,7 +67,7 @@
                 <string>navbar navbar-left</string>
                 <string>headline</string>
                 <string>footer</string>
-                <string>subcontent subcontent-box sidemenu1 (Subsections)</string>
+                <string>subcontent subcontent-box (Subsections)</string>
                 <string>subcontent subcontent-box sidemenu3 (News)</string>
                 <string>subcontent subcontent-box adminToolbox (Toolbox)</string>
                 <string>subcontent subcontent-box sidemenu1 (4-01a. Side menu 1)</string>
@@ -140,6 +140,14 @@
                       </list>
                     </value>
                 </item>
+                <item>
+                    <key> <string>subcontent subcontent-box (Subsections)</string> </key>
+                    <value>
+                      <list>
+                        <string>subsection_list</string>
+                      </list>
+                    </value>
+                </item>
                 <item>
                     <key> <string>subcontent subcontent-box adminToolbox (Toolbox)</string> </key>
                     <value>
@@ -252,14 +260,6 @@
                       </list>
                     </value>
                 </item>
-                <item>
-                    <key> <string>subcontent subcontent-box sidemenu1 (Subsections)</string> </key>
-                    <value>
-                      <list>
-                        <string>subsection_list</string>
-                      </list>
-                    </value>
-                </item>
                 <item>
                     <key> <string>subcontent subcontent-box sidemenu2 (4-01b. Side menu 2)</string> </key>
                     <value>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout/subsection_list.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout/subsection_list.xml
index a69771dec9..a6c4ec4cb0 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout/subsection_list.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_demo_layout/subsection_list.xml
@@ -13,6 +13,7 @@
             <key> <string>delegated_list</string> </key>
             <value>
               <list>
+                <string>css_class</string>
                 <string>default</string>
                 <string>editable</string>
                 <string>enabled</string>
@@ -59,11 +60,17 @@
             <value>
               <dictionary>
                 <item>
-                    <key> <string>default</string> </key>
+                    <key> <string>css_class</string> </key>
                     <value>
                       <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
                     </value>
                 </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
                 <item>
                     <key> <string>editable</string> </key>
                     <value> <string></string> </value>
@@ -71,7 +78,7 @@
                 <item>
                     <key> <string>enabled</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
                 <item>
@@ -97,6 +104,10 @@
             <key> <string>values</string> </key>
             <value>
               <dictionary>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
                 <item>
                     <key> <string>default</string> </key>
                     <value> <string></string> </value>
@@ -142,7 +153,7 @@
       <dictionary>
         <item>
             <key> <string>_text</string> </key>
-            <value> <string>here/WebSection_viewSubsectionWidget</string> </value>
+            <value> <string>python:here.getLayoutProperty(\'layout_subsection_style\', \'sidemenu1\')</string> </value>
         </item>
       </dictionary>
     </pickle>
@@ -158,7 +169,23 @@
       <dictionary>
         <item>
             <key> <string>_text</string> </key>
-            <value> <string>python:request.current_web_section.getPortalType() != \'Web Site\' and len(here.getSiteMapTree(depth=1, include_document=False))</string> </value>
+            <value> <string>here/WebSection_viewSubsectionWidget</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python:here.getLayoutProperty(\'layout_subsection\', True)</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_layout.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_layout.xml
index af043c75f4..a3db12af61 100644
--- a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_layout.xml
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/erp5_web_multiflex5_layout.xml
@@ -67,7 +67,7 @@
                 <string>navbar navbar-left</string>
                 <string>headline</string>
                 <string>footer</string>
-                <string>subcontent subcontent-box sidemenu1 (Subsections)</string>
+                <string>subcontent subcontent-box (Subsections)</string>
                 <string>subcontent subcontent-box sidemenu3 (News)</string>
                 <string>web-toolbar (Toolbar)</string>
               </list>
@@ -122,7 +122,7 @@
                     </value>
                 </item>
                 <item>
-                    <key> <string>subcontent subcontent-box sidemenu1 (Subsections)</string> </key>
+                    <key> <string>subcontent subcontent-box (Subsections)</string> </key>
                     <value>
                       <list>
                         <string>subsection_list</string>
diff --git a/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/sitemap_renderer.xml b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/sitemap_renderer.xml
new file mode 100644
index 0000000000..3c540b2f9f
--- /dev/null
+++ b/bt5/erp5_web_multiflex5_theme/SkinTemplateItem/portal_skins/erp5_web_multiflex5_theme/sitemap_renderer.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <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_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<tal:block metal:define-macro="master"\n
+           tal:define="menu_item_list python:sitemap_root.getSiteMapTree(depth=depth)">\n
+  <ul>\n
+    <li tal:repeat="menu_item menu_item_list">\n
+      <tal:block tal:condition="not:nocall:menu_item/subsection"><a tal:attributes="href menu_item/url" tal:content="menu_item/translated_title">Menu</a></tal:block>\n
+      <tal:block tal:condition="nocall:menu_item/subsection">\n
+      <a tal:attributes="href menu_item/url"><tal:block tal:replace="menu_item/translated_title">Drop-down Menu</tal:block></a>\n
+      <ul metal:define-macro="generateTree">\n
+        <li tal:repeat="item menu_item/subsection">\n
+          <a href="#" tal:attributes="href item/url" tal:content="item/translated_title">Menu subitem 1</a>\n
+          <tal:recurse define="menu_item item" tal:condition="nocall:item/subsection">\n
+            <metal:call use-macro="here/WebSection_viewNavigationWidget/macros/generateTree" />\n
+          </tal:recurse>\n
+        </li>\n
+      </ul>\n
+      </tal:block>\n
+    </li>\n
+  </ul>\n
+</tal:block>\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>sitemap_renderer</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_multiflex5_theme/bt/revision b/bt5/erp5_web_multiflex5_theme/bt/revision
index eafdfb06c5..b5db9c417a 100644
--- a/bt5/erp5_web_multiflex5_theme/bt/revision
+++ b/bt5/erp5_web_multiflex5_theme/bt/revision
@@ -1 +1 @@
-138
\ No newline at end of file
+139
\ No newline at end of file
-- 
2.30.9