From f4561d66c2c6c57c9d09d58a4420d75c2bd4c4f3 Mon Sep 17 00:00:00 2001
From: Christophe Dumez <christophe@nexedi.com>
Date: Mon, 26 Jun 2006 11:06:16 +0000
Subject: [PATCH] 2006-06-26 vincent * Rename page templates to follow a
 consistent naming scheme. * Add another layer to unify web mode handling.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@8165 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 ..._list_ui.xml => configure_list_dialog.xml} |  28 +-
 ...context_bar.xml => context_box_render.xml} |  10 +-
 ...uts.xml => developper_shortcut_render.xml} |  14 +-
 .../portal_skins/erp5_xhtml_style/dialog.xml  | 137 --------
 ...list_dialog_master.xml => dialog_main.xml} |  48 ++-
 .../erp5_xhtml_style/document.xml             | 133 --------
 ...on_view.xml => documentation_template.xml} |   2 +-
 .../portal_skins/erp5_xhtml_style/erp5.js.xml |   7 -
 .../erp5_xhtml_style/field_render.xml         |   6 +-
 .../erp5_xhtml_style/form_dialog.xml          |   4 +-
 .../erp5_xhtml_style/form_folder_delete.xml   | 106 ------
 .../erp5_xhtml_style/form_list_relation.xml   | 102 ------
 .../{form.xml => form_render.xml}             |  36 ++-
 .../erp5_xhtml_style/form_view.xml            |   4 +-
 .../erp5_xhtml_style/form_view_dialog.xml     | 104 ------
 .../erp5_xhtml_style/index_html.xml           |   2 +-
 .../{form_list.xml => list_main.xml}          |   6 +-
 .../erp5_xhtml_style/login_form.js.xml        |  73 +++++
 .../erp5_xhtml_style/login_form.xml           |  10 +-
 .../erp5_xhtml_style/main_template.xml        | 217 +------------
 .../erp5_xhtml_style/quad_form_view.xml       |   4 +-
 .../erp5_xhtml_style/report_view.xml          |  10 +-
 .../{form_sort.xml => sort_list_dialog.xml}   |  11 +-
 .../template_erp5_xhtml_style.xml             | 305 ++++++++++++++++++
 .../{view_master.xml => view_main.xml}        |  34 +-
 bt5/erp5_xhtml_style/bt/change_log            |  14 +-
 26 files changed, 548 insertions(+), 879 deletions(-)
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{form_list_ui.xml => configure_list_dialog.xml} (89%)
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{context_bar.xml => context_box_render.xml} (96%)
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{developper_shortcuts.xml => developper_shortcut_render.xml} (91%)
 delete mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{list_dialog_master.xml => dialog_main.xml} (66%)
 delete mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/document.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{documentation_view.xml => documentation_template.xml} (99%)
 delete mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_folder_delete.xml
 delete mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_relation.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{form.xml => form_render.xml} (85%)
 delete mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view_dialog.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{form_list.xml => list_main.xml} (94%)
 create mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.js.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{form_sort.xml => sort_list_dialog.xml} (92%)
 create mode 100644 bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/template_erp5_xhtml_style.xml
 rename bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/{view_master.xml => view_main.xml} (70%)

diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_ui.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/configure_list_dialog.xml
similarity index 89%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_ui.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/configure_list_dialog.xml
index 089dba16e2..bdf733f38a 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_ui.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/configure_list_dialog.xml
@@ -75,9 +75,11 @@ XXX: uses hardcoded indices values to access fields\n
 -->\n
 </tal:block>\n
 <tal:block metal:define-macro="master">\n
-  <tal:block metal:use-macro="here/dialog/macros/master">\n
+  <tal:block metal:use-macro="here/dialog_main/macros/master">\n
     <tal:block metal:fill-slot="main">\n
-      <tal:block metal:use-macro="here/developper_shortcuts/macros/form" />\n
+      <tal:block tal:define="template python: here.developper_shortcut_render">\n
+        <tal:block metal:use-macro="template/macros/form" />\n
+      </tal:block>\n
       <table tal:define="base_form python: getattr(here,form_id);\n
                          groups base_form/get_groups;\n
                          default_columns python: base_form.get_fields_in_group(groups[0])[0].get_value(\'columns\');\n
@@ -87,9 +89,10 @@ XXX: uses hardcoded indices values to access fields\n
                          global row_keys python: [\'None\'];\n
                          global stats python: [\' \',\'count\',\'sum\',\'max\',\'min\',\'avg\'];\n
                          all_columns python: base_form.get_fields_in_group(groups[0])[0].get_value(\'all_columns\')">\n
-        <tr tal:repeat="item columns">\n
-          <tal:block tal:define="global row_index python:row_index+1;\n
-                                 dummy python:row_keys.append(item[0])">\n
+        <tal:block tal:repeat="item columns">\n
+          <tr tal:define="global row_index python:row_index+1;\n
+                          dummy python:row_keys.append(item[0])"\n
+              tal:attributes="id string:column_${row_index}">\n
             <td>\n
               <tal:block i18n:translate="" i18n:domain="ui">Column</tal:block>\n
               <tal:block tal:replace="row_index" />\n
@@ -114,11 +117,12 @@ XXX: uses hardcoded indices values to access fields\n
                 </tal:block>\n
               </select>\n
             </td>\n
-          </tal:block>\n
-        </tr>\n
-        <tr tal:repeat="item all_columns">\n
+          </tr>\n
+        </tal:block>\n
+        <tal:block tal:repeat="item all_columns">\n
           <tal:block tal:condition="python: item[0] not in row_keys">\n
-            <tal:block tal:define="global row_index python:row_index+1">\n
+            <tr tal:define="global row_index python:row_index+1"\n
+                tal:attributes="id string:column_${row_index}">\n
               <td>\n
                 <tal:block i18n:translate="" i18n:domain="ui">Column</tal:block>\n
                 <tal:block tal:replace="row_index" />\n
@@ -146,9 +150,9 @@ XXX: uses hardcoded indices values to access fields\n
                   </tal:block>\n
                 </select>\n
               </td>\n
-            </tal:block>\n
+            </tr>\n
           </tal:block>\n
-        </tr>\n
+        </tal:block>\n
       </table>\n
     </tal:block>\n
   </tal:block>\n
@@ -166,7 +170,7 @@ XXX: uses hardcoded indices values to access fields\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>form_list_ui</string> </value>
+            <value> <string>configure_list_dialog</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_bar.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_box_render.xml
similarity index 96%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_bar.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_box_render.xml
index 8bc2b3af49..1b2b5e96c9 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_bar.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/context_box_render.xml
@@ -86,12 +86,12 @@ XXX: Folder_filter accesses selection directly\n
       </tal:block>\n
       <tal:block tal:condition="python: here.getPortalType() in here.portal_types.objectIds() and here.portal_types[here.getPortalType()].Base_getSourceVisibility()">\n
         <option tal:attributes="value python: \'%s/manage_workspace\' % (here.portal_types[here.getPortalType()].absolute_url(),)"\n
-                tal:content="python: \'Edit Portal Type \\\'%s\\\'\' % (context.getPortalType(),)"\n
+                tal:content="python: \'Edit Portal Type \\\'%s\\\'\' % (here.getPortalType(),)"\n
                 i18n:translate="" i18n:domain="ui"></option>\n
       </tal:block>\n
-      <tal:block tal:condition="context/portal_workflow/Base_getSourceVisibility">\n
+      <tal:block tal:condition="here/portal_workflow/Base_getSourceVisibility">\n
         <option value="1" disabled="disabled" i18n:translate="" i18n:domain="ui">-- Workflows --</option>\n
-        <tal:block tal:repeat="workflow python: context.portal_workflow.getWorkflowsFor(context)">\n
+        <tal:block tal:repeat="workflow python: here.portal_workflow.getWorkflowsFor(here)">\n
           <option tal:attributes="value python: \'%s/manage_properties\' % (workflow.absolute_url(), )" tal:content="workflow/title"></option>\n
         </tal:block>\n
       </tal:block>\n
@@ -287,7 +287,7 @@ XXX: Folder_filter accesses selection directly\n
       </a>\n
       <a tal:condition="here/hasActivity | nothing" class="activity_pending"\n
          title="Activity Pending"\n
-         tal:attributes="href python: context.portal_membership.checkPermission(\'View management screens\', context.portal_activities) and \'%s%s/manageActivities\' % (here.REQUEST[\'SERVER_URL\'],here.portal_activities.getUrl(), ) or \'#\'">\n
+         tal:attributes="href python: here.portal_membership.checkPermission(\'View management screens\', here.portal_activities) and \'%s%s/manageActivities\' % (here.REQUEST[\'SERVER_URL\'],here.portal_activities.getUrl(), ) or \'#\'">\n
         <span class="image"></span>\n
         <span class="description" i18n:translate="" i18n:domain="ui">Activity Pending</span>\n
       </a>\n
@@ -308,7 +308,7 @@ XXX: Folder_filter accesses selection directly\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>context_bar</string> </value>
+            <value> <string>context_box_render</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcuts.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcut_render.xml
similarity index 91%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcuts.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcut_render.xml
index eedc93ff61..9bda03048c 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcuts.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/developper_shortcut_render.xml
@@ -89,19 +89,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
                          info python: \'Edit this form\';\n
                          object python: form;\n
                          manage python: \'manage\'">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/edit_link"/>\n
+    <tal:block metal:use-macro="template/macros/edit_link"/>\n
   </tal:block>\n
   <tal:block tal:define="image python: \'editformrenderer.png\';\n
                          info python: \'Edit this form\\\'s renderer\';\n
                          object python: getattr(here, form.pt, None);\n
                          manage python: \'manage_main\'">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/edit_link"/>\n
+    <tal:block metal:use-macro="template/macros/edit_link"/>\n
   </tal:block>\n
   <tal:block tal:define="image python: \'editformaction.png\';\n
                          info python: \'Edit this form\\\'s action\';\n
                          object python: getattr(here, form.action, None);\n
                          manage python: \'manage_main\'">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/edit_link"/>\n
+    <tal:block metal:use-macro="template/macros/edit_link"/>\n
   </tal:block>\n
 </tal:block>\n
 <tal:block metal:define-macro="field">\n
@@ -109,19 +109,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
                          info python: \'Edit this field\';\n
                          object python: field;\n
                          manage python: \'manage_main\'">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/edit_link"/>\n
+    <tal:block metal:use-macro="template/macros/edit_link"/>\n
   </tal:block>\n
   <tal:block tal:define="info python: \'Translate this field title\';\n
                          message python: field[\'title\'];\n
                          image python: \'translate.png\'">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/translate_link"/>\n
+    <tal:block metal:use-macro="template/macros/translate_link"/>\n
   </tal:block>\n
   <tal:block tal:define="desc python: here.Base_getFieldDescription(field)">\n
     <tal:block tal:condition="python: desc not in (None, \'\')">\n
       <tal:block tal:define="info python: \'Translate this field description\';\n
                              message desc;\n
                              image python: \'translate_tooltip.png\'">\n
-        <tal:block metal:use-macro="here/developper_shortcuts/macros/translate_link"/>\n
+        <tal:block metal:use-macro="template/macros/translate_link"/>\n
       </tal:block>\n
     </tal:block>\n
   </tal:block>\n
@@ -139,7 +139,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>developper_shortcuts</string> </value>
+            <value> <string>developper_shortcut_render</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog.xml
deleted file mode 100644
index 058de32151..0000000000
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <tuple>
-          <string>Products.PageTemplates.ZopePageTemplate</string>
-          <string>ZopePageTemplate</string>
-        </tuple>
-        <none/>
-      </tuple>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>__ac_local_roles__</string> </key>
-            <value>
-              <none/>
-            </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_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 tal:replace="nothing"\n
-           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
-           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
-           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
-<!--\n
-Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
-                   Vincent Pelletier <vincent@nexedi.com>\n
-                   Christophe Dumez <christophe@nexedi.com>\n
-\n
-This program is Free Software; you can redistribute it and/or\n
-modify it under the terms of the GNU General Public License\n
-as published by the Free Software Foundation; either version 2\n
-of the License, or (at your option) any later version.\n
-\n
-This program is distributed in the hope that it will be useful,\n
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
-GNU General Public License for more details.\n
-\n
-You should have received a copy of the GNU General Public License\n
-along with this program; if not, write to the Free Software\n
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
--->\n
-</tal:block>\n
-<tal:block metal:define-macro="master">\n
-  <tal:block tal:define="dialog_type dialog_type | string:">\n
-    <tal:block metal:use-macro="here/list_dialog_master/macros/master">\n
-      <tal:block metal:fill-slot="main">\n
-        <div class="dialog_box">\n
-          <tal:block tal:define="actions python: actions.get(dialog_category, [])">\n
-            <div tal:condition="python: len(actions) > 1"\n
-                class="dialog_selector">\n
-              <label for="dialog_selector"\n
-                    tal:content="python:{\'object_exchange\':\'Exchange Select:\',\n
-                                          \'object_print\':\'Print Select:\',\n
-                                          \'object_search\':\'Search Select:\',\n
-                                          \'object_report\':\'Report Select:\',\n
-                                        }.get(dialog_category, \'Select:\')"\n
-                    i18n:translate="" i18n:domain="ui"></label>\n
-              <select name="dialog_select" id="dialog_selector"\n
-                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doDialog\')">\n
-                <tal:block tal:repeat="action actions">\n
-                  <option tal:attributes="value action/url;\n
-                                          selected python: action is current_action and \'selected\' or None"\n
-                          tal:content="action/name"\n
-                          i18n:translate="" i18n:domain="ui"></option>\n
-                </tal:block>\n
-              </select>\n
-              <button type="submit" name="Base_doDialog:method">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Go</span>\n
-              </button>\n
-            </div>\n
-          </tal:block>\n
-          <div class="content">\n
-            <tal:block metal:define-slot="main" />\n
-            <hr class="clear" />\n
-          </div>\n
-        </div>\n
-      </tal:block>\n
-    </tal:block>\n
-  </tal:block>\n
-</tal:block>
-
-]]></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>dialog</string> </value>
-        </item>
-        <item>
-            <key> <string>title</string> </key>
-            <value> <string></string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_dialog_master.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog_main.xml
similarity index 66%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_dialog_master.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog_main.xml
index 648660b969..49006fb295 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_dialog_master.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/dialog_main.xml
@@ -73,15 +73,42 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
 <tal:block metal:define-macro="master">\n
-  <tal:block tal:define="ignore_layout request/ignore_layout | nothing;\n
-                         layout_form_id here/getApplicableLayout | nothing;\n
-                         layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None;\n
-                         page_template python:(layout_form and not(ignore_layout)) and getattr(layout_form, \'pt\', None) or \'main_template\';\n
-                         dialog_type dialog_type | string:List">\n
-    <tal:block metal:use-macro="python: getattr(here, page_template).macros[\'master\']">\n
+  <tal:block tal:define="form_action string:Base_callDialogMethod">\n
+    <tal:block metal:use-macro="here/main_template/macros/master">\n
       <tal:block metal:fill-slot="main">\n
         <div class="list_dialog">\n
-          <tal:block metal:define-slot="main" />\n
+          <div class="dialog_box">\n
+            <tal:block tal:define="actions python: actions.get(dialog_category, [])">\n
+              <div tal:condition="python: len(actions) > 1"\n
+                  class="dialog_selector">\n
+                <label for="dialog_selector"\n
+                      tal:content="python:{\'object_exchange\':\'Exchange Select:\',\n
+                                            \'object_print\':\'Print Select:\',\n
+                                            \'object_search\':\'Search Select:\',\n
+                                            \'object_report\':\'Report Select:\',\n
+                                          }.get(dialog_category, \'Select:\')"\n
+                      i18n:translate="" i18n:domain="ui"></label>\n
+                <select name="dialog_select" id="dialog_selector"\n
+                        tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doDialog\')">\n
+                  <tal:block tal:repeat="action actions">\n
+                    <option tal:attributes="value action/url;\n
+                                            selected python: action is current_action and \'selected\' or None"\n
+                            tal:content="action/name"\n
+                            i18n:translate="" i18n:domain="ui"></option>\n
+                  </tal:block>\n
+                </select>\n
+                <button type="submit" name="Base_doDialog:method">\n
+                  <span class="image"></span>\n
+                  <span class="description"\n
+                        i18n:translate="" i18n:domain="ui">Go</span>\n
+                </button>\n
+              </div>\n
+            </tal:block>\n
+            <div class="content">\n
+              <tal:block metal:define-slot="main" />\n
+              <hr class="clear" />\n
+            </div>\n
+          </div>\n
         </div>\n
         <button type="submit" name="Base_cancel:method">\n
           <span class="image"></span>\n
@@ -95,7 +122,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
                 i18n:translate="" i18n:domain="ui">Update</span>\n
         </button>\n
         <button type="submit"\n
-                tal:attributes="name python: \'Base_call%sDialogMethod:method\' % (dialog_type,)">\n
+                tal:attributes="name python: \'%s:method\' % (form_action, )">\n
           <span class="image"></span>\n
           <span class="description"\n
                 tal:content="python: here.Base_getFormViewDialogActionButtonTitle(form)"\n
@@ -104,7 +131,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
       </tal:block>\n
     </tal:block>\n
   </tal:block>\n
-</tal:block>
+</tal:block>\n
+
 
 ]]></string> </value>
         </item>
@@ -118,7 +146,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>list_dialog_master</string> </value>
+            <value> <string>dialog_main</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/document.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/document.xml
deleted file mode 100644
index 26c8cd833c..0000000000
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/document.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <tuple>
-          <string>Products.PageTemplates.ZopePageTemplate</string>
-          <string>ZopePageTemplate</string>
-        </tuple>
-        <none/>
-      </tuple>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>__ac_local_roles__</string> </key>
-            <value>
-              <none/>
-            </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_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 tal:replace="nothing"\n
-           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
-           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
-           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
-<!--\n
-Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
-                   Vincent Pelletier <vincent@nexedi.com>\n
-                   Christophe Dumez <christophe@nexedi.com>\n
-\n
-This program is Free Software; you can redistribute it and/or\n
-modify it under the terms of the GNU General Public License\n
-as published by the Free Software Foundation; either version 2\n
-of the License, or (at your option) any later version.\n
-\n
-This program is distributed in the hope that it will be useful,\n
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
-GNU General Public License for more details.\n
-\n
-You should have received a copy of the GNU General Public License\n
-along with this program; if not, write to the Free Software\n
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
--->\n
-</tal:block>\n
-<tal:block metal:define-macro="master">\n
-  <tal:block tal:define="ignore_layout request/ignore_layout | nothing;\n
-                         layout_form_id here/getApplicableLayout | nothing;\n
-                         layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None;\n
-                         page_template python:(layout_form and not(ignore_layout)) and getattr(layout_form, \'pt\', None) or \'main_template\';">\n
-    <tal:block metal:use-macro="python: getattr(here, page_template).macros[\'master\']">\n
-      <tal:block metal:fill-slot="context_bar">\n
-        <tal:block metal:use-macro="here/context_bar/macros/master" />\n
-      </tal:block>\n
-      <tal:block metal:fill-slot="main">\n
-        <div class="document"\n
-              tal:define="actions actions/object_view | python: []">\n
-          <div class="actions">\n
-            <tal:block tal:condition="editable_mode | python: 1">\n
-              <button tal:condition="python: here.portal_membership.checkPermission(\'Modify portal content\', here)"\n
-                      type="submit" name="Base_edit:method" class="save">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Save</span>\n
-              </button>\n
-            </tal:block>\n
-            <ul tal:condition="python: len(actions)">\n
-              <tal:block tal:repeat="action actions">\n
-                <li tal:attributes="class python: action == current_action and \'selected\' or \'not_selected\'">\n
-                  <a tal:attributes="href python: here.ERP5Site_renderLink(action[\'url\'], http_parameters)"\n
-                     tal:content="action/name"></a>\n
-                </li>\n
-              </tal:block>\n
-            </ul>\n
-          </div>\n
-          <div class="content"><tal:block metal:define-slot="main" /></div>\n
-        </div>\n
-      </tal:block>\n
-    </tal:block>\n
-  </tal:block>\n
-</tal:block>
-
-]]></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>document</string> </value>
-        </item>
-        <item>
-            <key> <string>title</string> </key>
-            <value> <string></string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_view.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_template.xml
similarity index 99%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_view.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_template.xml
index c7aa11f0a3..548658a9b4 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_view.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/documentation_template.xml
@@ -393,7 +393,7 @@ div.listbox_dataline:hover {\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>documentation_view</string> </value>
+            <value> <string>documentation_template</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
index 5de7cd57cb..97a80b0684 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
@@ -57,13 +57,6 @@ function submitAction(form,act) {\n
   form.action = act;\n
   form.submit();\n
 }\n
-\n
-function setFocus(name) {\n
-  element = document.getElementsByName(name)[0];\n
-  if (element) { \n
-    element.focus();\n
-  }\n
-}\n
 </string> </value>
         </item>
         <item>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.xml
index 48e85aef32..0ac6feb59d 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/field_render.xml
@@ -81,11 +81,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
                                                 1: {0: \'error\', 1: \'reqerror\'}}[field_errors.has_key(field.id)][field.is_required()]">\n
             <tal:block tal:content="structure python: html_tuple[0]"\n
                        i18n:translate="" i18n:domain="ui" />\n
-            <tal:block metal:use-macro="context/developper_shortcuts/macros/field" />\n
+            <tal:block tal:define="template python: here.developper_shortcut_render">\n
+              <tal:block metal:use-macro="template/macros/field" />\n
+            </tal:block>\n
           </label>\n
           <div class="input"\n
                tal:content="structure python: html_tuple[1]"></div>\n
-          <tal:block tal:define="tooltip python:context.Localizer.translate(\'erp5_ui\', context.Base_getFieldDescription(field))">\n
+          <tal:block tal:define="tooltip python: here.Localizer.translate(\'erp5_ui\', here.Base_getFieldDescription(field))">\n
             <span tal:condition="tooltip"\n
                   tal:content="tooltip"\n
                   class="description"\n
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_dialog.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_dialog.xml
index 84d25d0422..76d8030db8 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_dialog.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_dialog.xml
@@ -72,9 +72,9 @@ along with this program; if not, write to the Free Software\n
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
-<tal:block metal:use-macro="here/dialog/macros/master">\n
+<tal:block metal:use-macro="here/dialog_main/macros/master">\n
   <tal:block metal:fill-slot="main">\n
-    <tal:block metal:use-macro="here/form/macros/master" />\n
+    <tal:block metal:use-macro="here/form_render/macros/master" />\n
   </tal:block>\n
 </tal:block>\n
 
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_folder_delete.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_folder_delete.xml
deleted file mode 100644
index 4f996d741e..0000000000
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_folder_delete.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <tuple>
-          <string>Products.PageTemplates.ZopePageTemplate</string>
-          <string>ZopePageTemplate</string>
-        </tuple>
-        <none/>
-      </tuple>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>__ac_local_roles__</string> </key>
-            <value>
-              <none/>
-            </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_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 tal:replace="nothing"\n
-           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
-           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
-           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
-<!--\n
-Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
-                   Vincent Pelletier <vincent@nexedi.com>\n
-                   Christophe Dumez <christophe@nexedi.com>\n
-\n
-This program is Free Software; you can redistribute it and/or\n
-modify it under the terms of the GNU General Public License\n
-as published by the Free Software Foundation; either version 2\n
-of the License, or (at your option) any later version.\n
-\n
-This program is distributed in the hope that it will be useful,\n
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
-GNU General Public License for more details.\n
-\n
-You should have received a copy of the GNU General Public License\n
-along with this program; if not, write to the Free Software\n
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
-\n
-Breaks strict compatibility :\n
-Rename groups in forms, remove empty groups, move items not in first group to hidden group.\n
--->\n
-</tal:block>\n
-<tal:block metal:use-macro="here/list_dialog_master/macros/master">\n
-  <tal:block metal:fill-slot="main">\n
-    <tal:block metal:use-macro="here/form/macros/master" />\n
-  </tal:block>\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>form_folder_delete</string> </value>
-        </item>
-        <item>
-            <key> <string>title</string> </key>
-            <value> <string></string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_relation.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_relation.xml
deleted file mode 100644
index 09be94deb2..0000000000
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list_relation.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <tuple>
-          <string>Products.PageTemplates.ZopePageTemplate</string>
-          <string>ZopePageTemplate</string>
-        </tuple>
-        <none/>
-      </tuple>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>__ac_local_roles__</string> </key>
-            <value>
-              <none/>
-            </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_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 tal:replace="nothing"\n
-           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
-           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
-           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
-<!--\n
-       Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
-            Vincent Pelletier <vincent@nexedi.com>\n
-            Christophe Dumez <christophe@nexedi.com>\n
-        \n
-        This program is Free Software; you can redistribute it and/or\n
-        modify it under the terms of the GNU General Public License\n
-        as published by the Free Software Foundation; either version 2\n
-        of the License, or (at your option) any later version.\n
-        \n
-        This program is distributed in the hope that it will be useful,\n
-        but WITHOUT ANY WARRANTY; without even the implied warranty of\n
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
-        GNU General Public License for more details.\n
-        \n
-        You should have received a copy of the GNU General Public License\n
-        along with this program; if not, write to the Free Software\n
-        Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
--->\n
-</tal:block>\n
-<tal:block metal:use-macro="here/list_dialog_master/macros/master">\n
-  <tal:block metal:fill-slot="main">\n
-    <tal:block metal:use-macro="here/form/macros/master" />\n
-  </tal:block>\n
-</tal:block>
-
-]]></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>form_list_relation</string> </value>
-        </item>
-        <item>
-            <key> <string>title</string> </key>
-            <value> <string></string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_render.xml
similarity index 85%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_render.xml
index de00d28a89..bf7f0e5085 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_render.xml
@@ -99,7 +99,9 @@ Groups names becomes "left_group", "right_group", "left1_group", "right1_group",
                          right_group python: form.get_fields_in_group(\'right\');\n
                          center_group python: form.get_fields_in_group(\'center\');\n
                          bottom_group python: form.get_fields_in_group(\'bottom\');">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/form" />\n
+    <tal:block tal:define="template python: here.developper_shortcut_render">\n
+      <tal:block metal:use-macro="template/macros/form" />\n
+    </tal:block>\n
     <div tal:condition="python: len(left_group) > 0 or len(right_group) > 0"\n
          class="top_group">\n
       <div tal:condition="python: len(left_group) > 0"\n
@@ -125,7 +127,9 @@ Groups names becomes "left_group", "right_group", "left1_group", "right1_group",
     <div tal:condition="python: len(bottom_group) > 0"\n
          class="bottom">\n
       <tal:block tal:repeat="field bottom_group">\n
-        <tal:block metal:use-macro="here/developper_shortcuts/macros/field" />\n
+        <tal:block tal:define="template python: here.developper_shortcut_render">\n
+          <tal:block metal:use-macro="template/macros/field" />\n
+        </tal:block>\n
         <tal:block tal:define="value python:request.get(field.id, None)"\n
                    tal:replace="structure python:field.render(value, request)" />\n
       </tal:block>\n
@@ -137,10 +141,12 @@ Groups names becomes "left_group", "right_group", "left1_group", "right1_group",
                          dummy python: request.set(\'here\', here);\n
                          left_group python: form.get_fields_in_group(\'left\');\n
                          right_group python: form.get_fields_in_group(\'right\');\n
-                         left1_group python: form.get_fields_in_group(\'left 1\');\n
-                         right1_group python: form.get_fields_in_group(\'right 1\');\n
-                         center_group python: form.get_fields_in_group(\'center\');">\n
-    <tal:block metal:use-macro="here/developper_shortcuts/macros/form" />\n
+                         center_left_group python: form.get_fields_in_group(\'center_left\');\n
+                         center_right_group python: form.get_fields_in_group(\'center_right\');\n
+                         bottom_group python: form.get_fields_in_group(\'bottom\');">\n
+    <tal:block tal:define="template python: here.developper_shortcut_render">\n
+      <tal:block metal:use-macro="template/macros/form" />\n
+    </tal:block>\n
     <div tal:condition="python: len(left_group) > 0 or len(right_group) > 0"\n
          class="top_group">\n
       <div tal:condition="python: len(left_group) > 0"\n
@@ -157,26 +163,26 @@ Groups names becomes "left_group", "right_group", "left1_group", "right1_group",
       </div>\n
       <hr class="clear" />\n
     </div>\n
-    <div tal:condition="python: len(left1_group) > 0 or len(right1_group) > 0"\n
+    <div tal:condition="python: len(center_left_group) > 0 or len(center_right_group) > 0"\n
          class="top_group">\n
-      <div tal:condition="python: len(left1_group) > 0"\n
+      <div tal:condition="python: len(center_left_group) > 0"\n
            class="left">\n
-        <tal:block tal:repeat="field left1_group">\n
+        <tal:block tal:repeat="field center_left_group">\n
           <tal:block metal:use-macro="here/field_render/macros/field_render" />\n
         </tal:block>\n
       </div>\n
-      <div tal:condition="python: len(right1_group) > 0"\n
+      <div tal:condition="python: len(center_right_group) > 0"\n
            class="right">\n
-        <tal:block tal:repeat="field right1_group">\n
+        <tal:block tal:repeat="field center_right_group">\n
           <tal:block metal:use-macro="here/field_render/macros/field_render" />\n
         </tal:block>\n
       </div>\n
       <hr class="clear" />\n
     </div>\n
-    <div tal:condition="python: len(center_group) > 0"\n
+    <div tal:condition="python: len(bottom_group) > 0"\n
          class="bottom">\n
-      <tal:block tal:repeat="field center_group">\n
-        <tal:block metal:use-macro="here/field_render/macros/field_render" />\n
+      <tal:block tal:repeat="field python: form.get_fields_in_group(\'bottom\')">\n
+          <tal:block metal:use-macro="here/field_render/macros/field_render" />\n
       </tal:block>\n
     </div>\n
   </tal:block>\n
@@ -194,7 +200,7 @@ Groups names becomes "left_group", "right_group", "left1_group", "right1_group",
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>form</string> </value>
+            <value> <string>form_render</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view.xml
index 60ee385d04..8fa0ba3266 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view.xml
@@ -73,9 +73,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
 <tal:block metal:define-macro="master">\n
-  <tal:block metal:use-macro="here/document/macros/master">\n
+  <tal:block metal:use-macro="here/view_main/macros/master">\n
     <tal:block metal:fill-slot="main">\n
-      <tal:block metal:use-macro="here/form/macros/master" />\n
+      <tal:block metal:use-macro="here/form_render/macros/master" />\n
     </tal:block>\n
   </tal:block>\n
 </tal:block>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view_dialog.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view_dialog.xml
deleted file mode 100644
index 968cbd5108..0000000000
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_view_dialog.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <tuple>
-          <string>Products.PageTemplates.ZopePageTemplate</string>
-          <string>ZopePageTemplate</string>
-        </tuple>
-        <none/>
-      </tuple>
-    </pickle>
-    <pickle>
-      <dictionary>
-        <item>
-            <key> <string>__ac_local_roles__</string> </key>
-            <value>
-              <none/>
-            </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_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 tal:replace="nothing"\n
-           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
-           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
-           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
-<!--\n
-Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
-                   Vincent Pelletier <vincent@nexedi.com>\n
-                   Christophe Dumez <christophe@nexedi.com>\n
-\n
-This program is Free Software; you can redistribute it and/or\n
-modify it under the terms of the GNU General Public License\n
-as published by the Free Software Foundation; either version 2\n
-of the License, or (at your option) any later version.\n
-\n
-This program is distributed in the hope that it will be useful,\n
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
-GNU General Public License for more details.\n
-\n
-You should have received a copy of the GNU General Public License\n
-along with this program; if not, write to the Free Software\n
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
--->\n
-</tal:block>\n
-<tal:block tal:define="dialog_type string:View">\n
-  <tal:block metal:use-macro="here/dialog/macros/master">\n
-    <tal:block metal:fill-slot="main">\n
-      <tal:block metal:use-macro="here/form/macros/master" />\n
-    </tal:block>\n
-  </tal:block>\n
-</tal:block>
-
-]]></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>form_view_dialog</string> </value>
-        </item>
-        <item>
-            <key> <string>title</string> </key>
-            <value> <string></string> </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/index_html.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/index_html.xml
index a21c0e1ebf..e0122930f9 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/index_html.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/index_html.xml
@@ -75,7 +75,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 <tal:block metal:use-macro="here/main_template/macros/master">\n
   <tal:block metal:fill-slot="main">\n
     <tal:block tal:condition="here/portal_membership/isAnonymousUser">\n
-      <tal:block tal:define="dummy python: request.RESPONSE.redirect(\'%s/login_form\' % url)" />\n
+        <tal:block tal:define="dummy python: request.RESPONSE.redirect(\'%s/login_form\' % url)" />\n
     </tal:block>\n
     <div tal:condition="python: not here.portal_membership.isAnonymousUser()"\n
          class="index_html">\n
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_main.xml
similarity index 94%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_main.xml
index 91ca81bfe2..fb12c4908b 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_list.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/list_main.xml
@@ -74,10 +74,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 </tal:block>\n
 <tal:block metal:use-macro="here/main_template/macros/master">\n
   <tal:block metal:fill-slot="context_bar">\n
-    <tal:block metal:use-macro="here/context_bar/macros/master" />\n
+    <tal:block metal:use-macro="here/context_box_render/macros/master" />\n
   </tal:block>\n
   <tal:block metal:fill-slot="main">\n
-    <tal:block metal:use-macro="here/form/macros/master" />\n
+    <tal:block metal:use-macro="here/form_render/macros/master" />\n
   </tal:block>\n
 </tal:block>\n
 
@@ -94,7 +94,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>form_list</string> </value>
+            <value> <string>list_main</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.js.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.js.xml
new file mode 100644
index 0000000000..3f5f132be1
--- /dev/null
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.js.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>OFS.DTMLDocument</string>
+          <string>DTMLDocument</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>login_form.js</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>raw</string> </key>
+            <value> <string>/*\n
+Copyright (c) 20xx-2006 Nexedi SARL and Contributors. All Rights Reserved.\n
+\n
+This program is Free Software; you can redistribute it and/or\n
+modify it under the terms of the GNU General Public License\n
+as published by the Free Software Foundation; either version 2\n
+of the License, or (at your option) any later version.\n
+\n
+This program is distributed in the hope that it will be useful,\n
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
+GNU General Public License for more details.\n
+\n
+You should have received a copy of the GNU General Public License\n
+along with this program; if not, write to the Free Software\n
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
+*/\n
+\n
+function setFocus() {\n
+  login = document.getElementById(\'name\');\n
+  password = document.getElementById(\'password\');\n
+  if (login.value != \'\')\n
+    password.focus();\n
+  else\n
+    login.focus();\n
+}</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.xml
index 9910ae331a..09a41ab2e8 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/login_form.xml
@@ -78,12 +78,9 @@ along with this program; if not, write to the Free Software\n
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
-<tal:block tal:define="global form_action string:index_html;\n
-                       ignore_layout request/ignore_layout | nothing;\n
-                       layout_form_id here/getApplicableLayout | nothing;\n
-                       layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None;\n
-                       page_template python:(layout_form_id and not(ignore_layout)) and getattr(layout_form, \'pt\', None) or \'main_template\';">\n
-<tal:block metal:use-macro="python: getattr(here, page_template).macros[\'master\']">\n
+<tal:block tal:define="form_action string:index_html;\n
+                       js_list python: [\'%s/login_form.js\' % (here.portal_url.getPortalPath(), )]">\n
+<tal:block metal:use-macro="here/main_template/macros/master">\n
   <tal:block metal:fill-slot="main">\n
     <div class="login">\n
       <tal:block tal:condition="python: request.get(\'came_from\', None) is not None">\n
@@ -130,6 +127,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
           </div>\n
         </div>\n
       </div>\n
+      <script type="text/javascript">setFocus()</script>\n
       <hr class="clear" />\n
       <input type="submit" name="submit" value="Login" class="submit"\n
              i18n:attributes="value" i18n:domain="ui" />\n
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/main_template.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/main_template.xml
index 2cc9a7b13f..de894840dd 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/main_template.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/main_template.xml
@@ -76,212 +76,19 @@ IDEAS:\n
 -->\n
 </tal:block>\n
 <tal:block metal:define-macro="master">\n
-<tal:block tal:condition="python: \'login_form\' not in request.get(\'URL\') and request.has_key(\'came_from\')">\n
-  <tal:block tal:define="dummy python: request.RESPONSE.redirect(request.get(\'came_from\'))" />\n
-</tal:block>\n
-<tal:block tal:condition="form/pt | nothing">\n
-  <tal:block tal:define="global list_mode python: form[\'pt\'] == \'form_list\';\n
-                         global listmode_default_listbox python: here.ERP5Site_getListbox(form=form)" />\n
-</tal:block>\n
-<tal:block tal:define="global actions python:here.getPortalObject().portal_actions.listFilteredActionsFor(here);\n
-                       global form_id request/form_id | form/id | nothing;\n
-                       global dialog_id form/id | template/id;\n
-                       global field_errors python: request.get(\'field_errors\',{});\n
-\n
-                       global cancel_url request/cancel_url | request/HTTP_REFERER;\n
-                       global form_action form_action | form/action | form/id | nothing;\n
-                       global dialog_category request/dialog_category | nothing;\n
-                       global url python: \'%s%s\' % (request[\'SERVER_URL\'], here.getPath(), );\n
-                       global ignore_layout request/ignore_layout | python: 0;\n
-\n
-                       global selection_name request/selection_name | listmode_default_listbox/selection_name | nothing;\n
-                       dummy python: selection_name and request.set(\'selection_name\', selection_name);\n
-                       global selection_index request/selection_index | nothing;\n
-                       global selection_url python: selection_name and here.portal_selections.getSelectionListUrlFor(selection_name,REQUEST=request) or None;\n
-\n
-                       current_url python: dialog_id and \'%s/%s\' % (url, dialog_id) or None;\n
-                       global current_action python: current_url and here.ERP5Site_getCurrentAction(current_url, actions) or None;\n
-                       form_pickle request/form_pickle | nothing;\n
-                       form_signature request/form_signature | nothing;\n
-                       field_id request/field_id | nothing;\n
-                       object_uid here/getUid | nothing;\n
-                       object_path here/getPath | nothing;\n
-                       dummy python: request.set(\'here\',here);\n
-\n
-                       global http_parameter_list python: here.ERP5Site_getHTTPParameterList(request=request, form_id=form_id, dialog_id=dialog_id, selection_name=selection_name, selection_index=selection_index, selection_url=selection_url, cancel_url=cancel_url, form_action=form_action, dialog_method=form_action, dialog_category=dialog_category, form_pickle=form_pickle, form_signature=form_signature, field_id=field_id, object_uid=object_uid, object_path=object_path);\n
-                       global http_parameters python: here.ERP5Site_renderHTTPParameterList(http_parameter_list);\n
-\n
-                       global css_list css_list | python: [];\n
-                       dummy python: css_list.append(\'%s/erp5.css\' % (here.portal_url.getPortalPath(), ));\n
-                       global js_list js_list | python: [];\n
-                       dummy python: js_list.append(\'%s/erp5.js\' % (here.portal_url.getPortalPath(), ));\n
-                       " />\n
-<tal:block tal:condition="form/pt | nothing">\n
-  <tal:block tal:define="global list_mode python: form[\'pt\'] == \'form_list\';\n
-                         global listmode_default_listbox python: here.ERP5Site_getListbox(form=form)" />\n
-</tal:block>\n
-<?xml version="1.0" encoding="UTF-8"?>\n
-<!DOCTYPE html\n
-     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n
-<html xmlns="http://www.w3.org/1999/xhtml"\n
-      xml:lang="en"\n
-      lang="en">\n
-  <head tal:define="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/html;; charset=utf-8\')">\n
-    <base tal:attributes="href python: \'%s/\' % (url, )" />\n
-    <meta name="description" content="Generated by ERP5" />\n
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n
-    <title tal:content="template/title_or_id"\n
-           i18n:translate="" i18n:domain="ui"></title>\n
-    <tal:block tal:repeat="css css_list">\n
-      <link tal:attributes="href css"\n
-            type="text/css"\n
-            rel="stylesheet" />\n
-    </tal:block>\n
-    <tal:block tal:repeat="js js_list">\n
-      <script tal:attributes="src js"\n
-              type="text/javascript"></script>\n
-    </tal:block>\n
-  </head>\n
-  <body>\n
-    <form id="main_form"\n
-          tal:attributes="enctype form/enctype | nothing;\n
-                          action url;\n
-                          method form/method | string:post">\n
-      <div id="bars">\n
-        <!-- Hidden button as explained in http://ppewww.ph.gla.ac.uk/~flavell/www/formquestion.html -->\n
-        <!-- We should probably call the default method instead -->\n
-        <input tal:condition="form_action | nothing"\n
-               id="hidden_button" type="submit" value="dummy"\n
-               tal:attributes="name python: \'%s:method\' % (form_action, )" />\n
-        <!-- Generic way of specifying http parameters -->\n
-        <tal:block tal:repeat="parameter http_parameter_list/items">\n
-          <input tal:condition="python: parameter[1] is not None"\n
-                 tal:attributes="name python: parameter[0];\n
-                                 value python: parameter[1];" type="hidden" />\n
-        </tal:block>\n
-        <div id="main_bar">\n
-          <span class="first">\n
-            <span id="favourites">\n
-              <select name="favorite_select"\n
-                      tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions[\'global\']);\n
-                                  user_actions actions/user;"\n
-                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doFavorite\')">\n
-                <option selected="selected" value=""\n
-                        i18n:translate="" i18n:domain="ui">My favourites</option>\n
-                <tal:block tal:condition="ordered_global_actions">\n
-                  <tal:block tal:repeat="action ordered_global_actions">\n
-                    <option tal:condition="action/disabled"\n
-                            disabled="disabled">-- <tal:block tal:content="action/title" i18n:translate="" i18n:domain="ui" /> --</option>\n
-                    <tal:block tal:condition="not:action/disabled"\n
-                              tal:define="name python: action.get(\'name\', \'\');\n
-                                          index python: name.find(\' (\');">\n
-                      <option tal:condition="python: index >= 0"\n
-                              tal:attributes="value action/url"><tal:block tal:content="python: name[:index]" i18n:translate="" i18n:domain="ui"></tal:block><tal:block tal:replace="python: name[index:]" /></option>\n
-                      <option tal:condition="python: index < 0"\n
-                              tal:attributes="value action/url"\n
-                              tal:content="action/name"\n
-                              i18n:translate="" i18n:domain="ui"></option>\n
-                    </tal:block>\n
-                  </tal:block>\n
-                </tal:block>\n
-                <tal:block tal:condition="user_actions">\n
-                  <option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">User</tal:block> --</option>\n
-                  <option tal:repeat="action user_actions"\n
-                          tal:content="action/name"\n
-                          tal:attributes="value action/url"\n
-                          i18n:translate="" i18n:domain="ui"></option>\n
-                </tal:block>\n
-              </select>\n
-              <button type="submit" name="Base_doFavorite:method">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Select Favorite</span>\n
-              </button>\n
-            </span>\n
-            <span id="modules">\n
-              <select name="module_select"\n
-                      tal:define="module_list here/ERP5Site_getModuleItemList;"\n
-                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doModule\')">\n
-                <option selected="selected" value=""\n
-                        i18n:translate="" i18n:domain="ui">ERP5 Modules</option>\n
-                <tal:block tal:repeat="module module_list">\n
-                  <option value="something"\n
-                          tal:attributes="value python: module[1]"\n
-                          tal:content="python: module[0]" />\n
-                </tal:block>\n
-              </select>\n
-              <button type="submit" name="Base_doModule:method">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Select module</span>\n
-              </button>\n
-            </span>\n
-          </span>\n
-          <span class="second">\n
-            <span id="language">\n
-              <select name="language_select"\n
-                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doLanguage\')">\n
-                <option selected="selected" value=""\n
-                        i18n:translate="" i18n:domain="ui">My language</option>\n
-                <tal:block tal:repeat="language python: here.Localizer.get_languages_map()">\n
-                  <option tal:attributes="value language/id;\n
-                                          selected python: language[\'selected\'] and \'selected\' or nothing;"\n
-                          tal:content="python: here.Localizer.erp5_ui.gettext(language[\'title\'], lang=language[\'id\'])"></option>\n
-                </tal:block>\n
-              </select>\n
-              <button type="submit" name="Base_doLanguage:method">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Select language</span>\n
-              </button>\n
-            </span>\n
-            <span id="search">\n
-              <input type="text" name="SearchableText" />\n
-              <button type="submit" name="Base_viewSearchResultList:method">\n
-                <span class="image"></span>\n
-                <span class="description"\n
-                      i18n:translate="" i18n:domain="ui">Search</span>\n
-              </button>\n
-            </span>\n
-          </span>\n
-          <hr class="clear" />\n
-        </div>\n
-        <div id="context_bar">\n
-          <tal:block metal:define-slot="context_bar" />\n
-        </div>\n
-      </div>\n
-      <div id="status">\n
-        <div id="breadcrumb">\n
-          <tal:block tal:repeat="item here/breadcrumbs">\n
-            <tal:block tal:condition="python: repeat[\'item\'].index < 2">\n
-              <a tal:attributes="href item/url"\n
-                 tal:content="item/title"\n
-                 i18n:translate="" i18n:domain="ui"></a>\n
-            </tal:block>\n
-            <tal:block tal:condition="python: repeat[\'item\'].index >= 2">\n
-              <a tal:attributes="href item/url"\n
-                 tal:content="item/title"></a>\n
-            </tal:block>\n
-            /\n
-          </tal:block>\n
-        </div>\n
-        <div id="logged_in_as">\n
-          <tal:block tal:condition="not: here/portal_membership/isAnonymousUser">\n
-            <tal:block i18n:translate="" i18n:domain="ui">Logged In as </tal:block> :\n
-            <tal:block tal:replace="python:here.portal_membership.getAuthenticatedMember().getUserName()" />\n
-          </tal:block>\n
-        </div>\n
-        <hr class="clear" />\n
-        <div tal:content="structure here/REQUEST/portal_status_message | nothing"\n
-             id="transition_message"></div>\n
-      </div>\n
-      <div id="master">\n
+  <tal:block tal:define="ignore_layout request/ignore_layout | nothing;\n
+                         layout_form_id here/getApplicableLayout | nothing;\n
+                         layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None;\n
+                         page_template python:(layout_form and not(ignore_layout)) and getattr(layout_form, \'pt\', None) or \'template_erp5_xhtml_style\';">\n
+    <tal:block metal:use-macro="python: getattr(here, page_template).macros[\'master\']">\n
+      <tal:block metal:fill-slot="context_bar">\n
+        <tal:block metal:define-slot="context_bar" />\n
+      </tal:block>\n
+      <tal:block metal:fill-slot="main">\n
         <tal:block metal:define-slot="main" />\n
-      </div>\n
-    </form>\n
-  </body>\n
-</html>\n
+      </tal:block>\n
+    </tal:block>\n
+  </tal:block>\n
 </tal:block>
 
 ]]></string> </value>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/quad_form_view.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/quad_form_view.xml
index fe83d159a9..8c209168ca 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/quad_form_view.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/quad_form_view.xml
@@ -72,9 +72,9 @@ along with this program; if not, write to the Free Software\n
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
-<tal:block metal:use-macro="here/document/macros/master">\n
+<tal:block metal:use-macro="here/view_main/macros/master">\n
   <tal:block metal:fill-slot="main">\n
-    <tal:block metal:use-macro="here/form/macros/quad_form" />\n
+    <tal:block metal:use-macro="here/form_render/macros/quad_form" />\n
   </tal:block>\n
 </tal:block>
 
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/report_view.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/report_view.xml
index bf25ef07ce..7e6c620eca 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/report_view.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/report_view.xml
@@ -72,18 +72,18 @@ along with this program; if not, write to the Free Software\n
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
-<tal:block  metal:use-macro="here/document/macros/master">\n
+<tal:block  metal:use-macro="here/view_main/macros/master">\n
   <tal:block metal:fill-slot="main">\n
     <tal:block tal:define="portal_object here/getPortalObject">\n
       <tal:block tal:repeat="report_item report_method">\n
-        <tal:block tal:define="here python:report_item.getObject(portal_object);\n
-                                dummy python:report_item.pushReport(portal_object)">\n
+        <tal:block tal:define="here python: report_item.getObject(portal_object);\n
+                               dummy python: report_item.pushReport(portal_object)">\n
           <tal:block tal:condition="report_item/getFormId">\n
             <tal:block tal:define="form python:getattr(here,report_item.getFormId())" >\n
-              <tal:block metal:use-macro="here/form/macros/master" />\n
+              <tal:block metal:use-macro="here/form_render/macros/master" />\n
             </tal:block>\n
           </tal:block>\n
-          <tal:block tal:define="dummy python:report_item.popReport(portal_object)"/>\n
+          <tal:block tal:define="dummy python:report_item.popReport(portal_object)" />\n
         </tal:block>\n
       </tal:block>\n
     </tal:block>\n
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_sort.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/sort_list_dialog.xml
similarity index 92%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_sort.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/sort_list_dialog.xml
index 812773e0bf..e99539e948 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/form_sort.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/sort_list_dialog.xml
@@ -72,8 +72,11 @@ along with this program; if not, write to the Free Software\n
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
-<tal:block metal:use-macro="here/dialog/macros/master">\n
+<tal:block metal:use-macro="here/dialog_main/macros/master">\n
   <tal:block metal:fill-slot="main">\n
+    <tal:block tal:define="template python: here.developper_shortcut_render">\n
+      <tal:block metal:use-macro="template/macros/form" />\n
+    </tal:block>\n
     <div class="content"\n
          tal:define="items python:here.portal_selections.getSelectionSortOrder(selection_name, REQUEST=request);\n
                      base_form python:getattr(here,form_id);\n
@@ -88,7 +91,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
           <tal:block i18n:translate="" i18n:domain="ui">Sort</tal:block>\n
           <tal:block tal:replace="row_index" />\n
         </label>\n
-        <div class="input">\n
+        <div class="input" tal:attributes="id string:sort_${row_index}">\n
           <select name="field_sort_on">\n
             <tal:block tal:repeat="option all_columns">\n
               <option tal:content="python:option[1]"\n
@@ -108,7 +111,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
             <tal:block i18n:translate="" i18n:domain="ui">Sort</tal:block>\n
             <tal:block tal:replace="row_index" />\n
           </label>\n
-          <div class="input">\n
+          <div class="input" tal:attributes="id string:sort_${row_index}">\n
             <select name="field_sort_on">\n
               <option selected="selected" value="None">None</option>\n
               <option tal:repeat="option columns"\n
@@ -138,7 +141,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>form_sort</string> </value>
+            <value> <string>sort_list_dialog</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/template_erp5_xhtml_style.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/template_erp5_xhtml_style.xml
new file mode 100644
index 0000000000..95e26b3f67
--- /dev/null
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/template_erp5_xhtml_style.xml
@@ -0,0 +1,305 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Products.PageTemplates.ZopePageTemplate</string>
+          <string>ZopePageTemplate</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </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_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 tal:replace="nothing"\n
+           xmlns:tal="http://xml.zope.org/namespaces/tal"\n
+           xmlns:metal="http://xml.zope.org/namespaces/metal"\n
+           xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
+<!--\n
+Copyright (c) 2006 Nexedi SARL and Contributors. All Rights Reserved.\n
+                   Vincent Pelletier <vincent@nexedi.com>\n
+                   Christophe Dumez <christophe@nexedi.com>\n
+\n
+This program is Free Software; you can redistribute it and/or\n
+modify it under the terms of the GNU General Public License\n
+as published by the Free Software Foundation; either version 2\n
+of the License, or (at your option) any later version.\n
+\n
+This program is distributed in the hope that it will be useful,\n
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
+GNU General Public License for more details.\n
+\n
+You should have received a copy of the GNU General Public License\n
+along with this program; if not, write to the Free Software\n
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
+\n
+IDEAS:\n
+ - Add callbacks to ERP5Form object (selection ?) to gather needed fields -> put them in http_parameter_list.\n
+-->\n
+</tal:block>\n
+<tal:block metal:define-macro="master">\n
+<tal:block tal:condition="python: \'login_form\' not in request.get(\'URL\') and request.has_key(\'came_from\')">\n
+  <tal:block tal:define="dummy python: request.RESPONSE.redirect(request.get(\'came_from\'))" />\n
+</tal:block>\n
+<tal:block tal:condition="form/pt | nothing">\n
+  <tal:block tal:define="global list_mode python: form[\'pt\'] == \'list_main\';\n
+                         global listmode_default_listbox python: here.ERP5Site_getListbox(form=form)" />\n
+</tal:block>\n
+<tal:block tal:define="global actions python:here.getPortalObject().portal_actions.listFilteredActionsFor(here);\n
+                       global dialog_id form/id | template/id;\n
+                       global form_id request/form_id | dialog_id;\n
+                       global field_errors python: request.get(\'field_errors\',{});\n
+                       global cancel_url request/cancel_url | request/ACTUAL_URL;\n
+                       global dialog_method form/action | form_id;\n
+                       global form_action form_action | dialog_method;\n
+                       global dialog_category request/dialog_category | nothing;\n
+                       global url python: \'%s%s\' % (request[\'SERVER_URL\'], here.getPath(), );\n
+                       global ignore_layout request/ignore_layout | python: 0;\n
+\n
+                       global selection_name request/selection_name | listmode_default_listbox/selection_name | nothing;\n
+                       dummy python: selection_name and request.set(\'selection_name\', selection_name);\n
+                       global selection_index request/selection_index | nothing;\n
+                       global selection_url python: selection_name and here.portal_selections.getSelectionListUrlFor(selection_name,REQUEST=request) or None;\n
+\n
+                       global current_url python: \'%s/%s\' % (url, dialog_id);\n
+                       global current_action python: here.ERP5Site_getCurrentAction(current_url, actions);\n
+                       form_pickle request/form_pickle | nothing;\n
+                       form_signature request/form_signature | nothing;\n
+                       field_id request/field_id | nothing;\n
+                       object_uid here/getUid | nothing;\n
+                       object_path here/getPath | nothing;\n
+                       dummy python: request.set(\'here\',here);\n
+\n
+                       global http_parameter_list python: here.ERP5Site_getHTTPParameterList(request=request, form_id=form_id, dialog_id=dialog_id, selection_name=selection_name, selection_index=selection_index, selection_url=selection_url, cancel_url=cancel_url, form_action=form_action, dialog_method=dialog_method, dialog_category=dialog_category, form_pickle=form_pickle, form_signature=form_signature, field_id=field_id, object_uid=object_uid, object_path=object_path);\n
+                       global http_parameters python: here.ERP5Site_renderHTTPParameterList(http_parameter_list);\n
+\n
+                       global css_list css_list | python: [];\n
+                       dummy python: css_list.append(\'%s/erp5.css\' % (here.portal_url.getPortalPath(), ));\n
+                       global js_list js_list | python: [];\n
+                       dummy python: js_list.append(\'%s/erp5.js\' % (here.portal_url.getPortalPath(), ));\n
+                       " />\n
+<?xml version="1.0" encoding="UTF-8"?>\n
+<!DOCTYPE html\n
+     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n
+<html xmlns="http://www.w3.org/1999/xhtml"\n
+      xml:lang="en"\n
+      lang="en">\n
+  <head tal:define="dummy python:request.RESPONSE.setHeader(\'Content-Type\', \'text/html;; charset=utf-8\')">\n
+    <base tal:attributes="href python: \'%s/\' % (url, )" />\n
+    <meta name="description" content="Generated by ERP5" />\n
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n
+    <title tal:content="template/title_or_id"\n
+           i18n:translate="" i18n:domain="ui"></title>\n
+    <tal:block tal:repeat="css css_list">\n
+      <link tal:attributes="href css"\n
+            type="text/css"\n
+            rel="stylesheet" />\n
+    </tal:block>\n
+    <tal:block tal:repeat="js js_list">\n
+      <script tal:attributes="src js"\n
+              type="text/javascript"></script>\n
+    </tal:block>\n
+  </head>\n
+  <body>\n
+<!--     <tal:block tal:replace="structure request" /> -->\n
+    <form id="main_form"\n
+          tal:attributes="enctype form/enctype | nothing;\n
+                          action url;\n
+                          method form/method | string:post">\n
+      <div id="bars">\n
+        <!-- Hidden button as explained in http://ppewww.ph.gla.ac.uk/~flavell/www/formquestion.html -->\n
+        <!-- We should probably call the default method instead -->\n
+        <input tal:condition="form_action"\n
+               id="hidden_button" type="submit" value="dummy"\n
+               tal:attributes="name python: \'%s:method\' % (form_action, )" />\n
+        <!-- Generic way of specifying http parameters -->\n
+        <tal:block tal:repeat="parameter http_parameter_list/items">\n
+          <input tal:condition="python: parameter[1] is not None"\n
+                 tal:attributes="name python: parameter[0];\n
+                                 value python: parameter[1];" type="hidden" />\n
+        </tal:block>\n
+        <div id="main_bar">\n
+          <span class="first">\n
+            <span id="favourites">\n
+              <select name="favorite_select"\n
+                      tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions[\'global\']);\n
+                                  user_actions actions/user;"\n
+                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doFavorite\')">\n
+                <option selected="selected" value=""\n
+                        i18n:translate="" i18n:domain="ui">My favourites</option>\n
+                <tal:block tal:condition="ordered_global_actions">\n
+                  <tal:block tal:repeat="action ordered_global_actions">\n
+                    <option tal:condition="action/disabled"\n
+                            disabled="disabled">-- <tal:block tal:content="action/title" i18n:translate="" i18n:domain="ui" /> --</option>\n
+                    <tal:block tal:condition="not:action/disabled"\n
+                              tal:define="name python: action.get(\'name\', \'\');\n
+                                          index python: name.find(\' (\');">\n
+                      <option tal:condition="python: index >= 0"\n
+                              tal:attributes="value action/url"><tal:block tal:content="python: name[:index]" i18n:translate="" i18n:domain="ui"></tal:block><tal:block tal:replace="python: name[index:]" /></option>\n
+                      <option tal:condition="python: index < 0"\n
+                              tal:attributes="value action/url"\n
+                              tal:content="action/name"\n
+                              i18n:translate="" i18n:domain="ui"></option>\n
+                    </tal:block>\n
+                  </tal:block>\n
+                </tal:block>\n
+                <tal:block tal:condition="user_actions">\n
+                  <option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">User</tal:block> --</option>\n
+                  <option tal:repeat="action user_actions"\n
+                          tal:content="action/name"\n
+                          tal:attributes="value action/url"\n
+                          i18n:translate="" i18n:domain="ui"></option>\n
+                </tal:block>\n
+              </select>\n
+              <button type="submit" name="Base_doFavorite:method">\n
+                <span class="image"></span>\n
+                <span class="description"\n
+                      i18n:translate="" i18n:domain="ui">Select Favorite</span>\n
+              </button>\n
+            </span>\n
+            <span id="modules">\n
+              <select name="module_select"\n
+                      tal:define="module_list here/ERP5Site_getModuleItemList;"\n
+                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doModule\')">\n
+                <option selected="selected" value=""\n
+                        i18n:translate="" i18n:domain="ui">ERP5 Modules</option>\n
+                <tal:block tal:repeat="module module_list">\n
+                  <option value="something"\n
+                          tal:attributes="value python: module[1]"\n
+                          tal:content="python: module[0]" />\n
+                </tal:block>\n
+              </select>\n
+              <button type="submit" name="Base_doModule:method">\n
+                <span class="image"></span>\n
+                <span class="description"\n
+                      i18n:translate="" i18n:domain="ui">Select module</span>\n
+              </button>\n
+            </span>\n
+          </span>\n
+          <span class="second">\n
+            <span id="language">\n
+              <select name="language_select"\n
+                      tal:attributes="onChange string:submitAction(this.form,\'${url}/Base_doLanguage\')">\n
+                <option selected="selected" value=""\n
+                        i18n:translate="" i18n:domain="ui">My language</option>\n
+                <tal:block tal:repeat="language python: here.Localizer.get_languages_map()">\n
+                  <option tal:attributes="value language/id;\n
+                                          selected python: language[\'selected\'] and \'selected\' or nothing;"\n
+                          tal:content="python: here.Localizer.erp5_ui.gettext(language[\'title\'], lang=language[\'id\'])"></option>\n
+                </tal:block>\n
+              </select>\n
+              <button type="submit" name="Base_doLanguage:method">\n
+                <span class="image"></span>\n
+                <span class="description"\n
+                      i18n:translate="" i18n:domain="ui">Select language</span>\n
+              </button>\n
+            </span>\n
+            <span id="search">\n
+              <input type="text" name="SearchableText" />\n
+              <button type="submit" name="Base_viewSearchResultList:method">\n
+                <span class="image"></span>\n
+                <span class="description"\n
+                      i18n:translate="" i18n:domain="ui">Search</span>\n
+              </button>\n
+            </span>\n
+          </span>\n
+          <hr class="clear" />\n
+        </div>\n
+        <div id="context_bar">\n
+          <tal:block metal:define-slot="context_bar" />\n
+        </div>\n
+      </div>\n
+      <div id="status">\n
+        <div id="breadcrumb">\n
+          <tal:block tal:repeat="item here/breadcrumbs">\n
+            <tal:block tal:condition="python: repeat[\'item\'].index < 2">\n
+              <a tal:attributes="href item/url"\n
+                 tal:content="item/title"\n
+                 i18n:translate="" i18n:domain="ui"></a>\n
+            </tal:block>\n
+            <tal:block tal:condition="python: repeat[\'item\'].index >= 2">\n
+              <a tal:attributes="href item/url"\n
+                 tal:content="item/title"></a>\n
+            </tal:block>\n
+            /\n
+          </tal:block>\n
+        </div>\n
+        <div id="logged_in_as">\n
+          <tal:block tal:condition="not: here/portal_membership/isAnonymousUser">\n
+            <tal:block i18n:translate="" i18n:domain="ui">Logged In as </tal:block> :\n
+            <tal:block tal:replace="python:here.portal_membership.getAuthenticatedMember().getUserName()" />\n
+          </tal:block>\n
+        </div>\n
+        <hr class="clear" />\n
+        <div tal:content="structure here/REQUEST/portal_status_message | nothing"\n
+             id="transition_message"></div>\n
+      </div>\n
+      <div id="master">\n
+        <tal:block metal:define-slot="main" />\n
+      </div>\n
+    </form>\n
+  </body>\n
+</html>\n
+</tal:block>
+
+]]></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>template_erp5_xhtml_style</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_master.xml b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_main.xml
similarity index 70%
rename from bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_master.xml
rename to bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_main.xml
index 5aad4e5be8..bfd1bbb792 100644
--- a/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_master.xml
+++ b/bt5/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/view_main.xml
@@ -73,13 +73,37 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
 -->\n
 </tal:block>\n
 <tal:block metal:define-macro="master">\n
-  <tal:block metal:use-macro="here/document/macros/master">\n
+  <tal:block metal:use-macro="here/main_template/macros/master">\n
+    <tal:block metal:fill-slot="context_bar">\n
+      <tal:block metal:use-macro="here/context_box_render/macros/master" />\n
+    </tal:block>\n
     <tal:block metal:fill-slot="main">\n
-      <tal:block metal:define-slot="main">\n
-      </tal:block>\n
+      <div class="document"\n
+            tal:define="actions actions/object_view | python: []">\n
+        <div class="actions">\n
+          <tal:block tal:condition="editable_mode | python: 1">\n
+            <button tal:condition="python: here.portal_membership.checkPermission(\'Modify portal content\', here)"\n
+                    type="submit" name="Base_edit:method" class="save">\n
+              <span class="image"></span>\n
+              <span class="description"\n
+                    i18n:translate="" i18n:domain="ui">Save</span>\n
+            </button>\n
+          </tal:block>\n
+          <ul tal:condition="python: len(actions)">\n
+            <tal:block tal:repeat="action actions">\n
+              <li tal:attributes="class python: action == current_action and \'selected\' or \'not_selected\'">\n
+                <a tal:attributes="href python: here.ERP5Site_renderLink(action[\'url\'], http_parameters)"\n
+                    tal:content="action/name"></a>\n
+              </li>\n
+            </tal:block>\n
+          </ul>\n
+        </div>\n
+        <div class="content"><tal:block metal:define-slot="main" /></div>\n
+      </div>\n
     </tal:block>\n
   </tal:block>\n
-</tal:block>
+</tal:block>\n
+
 
 ]]></string> </value>
         </item>
@@ -93,7 +117,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>view_master</string> </value>
+            <value> <string>view_main</string> </value>
         </item>
         <item>
             <key> <string>title</string> </key>
diff --git a/bt5/erp5_xhtml_style/bt/change_log b/bt5/erp5_xhtml_style/bt/change_log
index 9918b66254..7a7260c43b 100644
--- a/bt5/erp5_xhtml_style/bt/change_log
+++ b/bt5/erp5_xhtml_style/bt/change_log
@@ -1,6 +1,14 @@
+2006-06-26 vincent
+* Rename page templates to follow a consistent naming scheme.
+* Add another layer to unify web mode handling.
+
+2006-06-23 yo
+* Put id on each div in form_sort. Otherwise, functional testing is too difficult.
+* Likewise, put id on each tr in form_list_ui.
+
 2006-06-20 Vincent
-Correct form button values when in a dialog.
+* Correct form button values when in a dialog.
 
 2006-06-15 Vincent
-Initial commit.
-Valid XHTML1.0 Strict + CSS 2.0.
\ No newline at end of file
+* Initial commit.
+* Valid XHTML1.0 Strict + CSS 2.0.
\ No newline at end of file
-- 
2.30.9