diff --git a/bt5/erp5_commerce/ExtensionTemplateItem/Ecommerce.py b/bt5/erp5_commerce/ExtensionTemplateItem/Ecommerce.py
new file mode 100644
index 0000000000000000000000000000000000000000..faab585ce188466be37777320b365600f6a30045
--- /dev/null
+++ b/bt5/erp5_commerce/ExtensionTemplateItem/Ecommerce.py
@@ -0,0 +1,5 @@
+from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod
+
+def getProductPrice(product):
+    getPrice = UnrestrictedMethod(product.getPrice)
+    return getPrice()
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/ERP5Site_unrestrictedGetPrice.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/ERP5Site_unrestrictedGetPrice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b4f73b9430737634fe17c9783c192bfd239e972
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/ERP5Site_unrestrictedGetPrice.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_function</string> </key>
+            <value> <string>getProductPrice</string> </value>
+        </item>
+        <item>
+            <key> <string>_module</string> </key>
+            <value> <string>Ecommerce</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ERP5Site_unrestrictedGetPrice</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Unrestricted getPrice</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencyCode.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencyCode.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cb1869567940751ba61c2ba19e7a67b395cf568
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencyCode.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>""" \n
+  Return default currency used in shopping_cart.\n
+  Please update accordingly relative path. \n
+  XXX: there must be an way to do this better?\n
+"""\n
+return context.getPortalObject().SaleOrder_getShoppingCartDefaultCurrency().getReference()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>_proxy_roles</string> </key>
+            <value>
+              <tuple>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>0</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SaleOrder_getShoppingCartDefaultCurrencyCode</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Get default currency symbole for shop</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencySymbole.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencySymbole.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c86b33ae67e777f31710b384d6a66583f2c57b79
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce/SaleOrder_getShoppingCartDefaultCurrencySymbole.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>""" \n
+  Return default currency used in shopping_cart.\n
+  Please update accordingly relative path. \n
+  XXX: there must be an way to do this better?\n
+"""\n
+return context.getPortalObject().SaleOrder_getShoppingCartDefaultCurrency().getShortTitle()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>_proxy_roles</string> </key>
+            <value>
+              <tuple>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>0</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SaleOrder_getShoppingCartDefaultCurrencySymbole</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Get default currency symbole for shop</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54HTML.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54HTML.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b200532a7d46ecbc1f4d99399d2fd131c267c12d
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54HTML.xml
@@ -0,0 +1,177 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<tal:block\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
+  tal:define="field_id here/getId;\n
+              form_id python: here.getForm().id;\n
+              selection_name here/getSelectionName;\n
+              selection here/getSelection;\n
+              portal_url_string here/getPortalUrlString;\n
+              real_context here/getContext;\n
+              context_url real_context/absolute_url;\n
+              md5_string here/getMD5Checksum;\n
+              line_list here/query;\n
+              is_domain_tree_mode here/isDomainTreeMode;\n
+              is_report_tree_mode here/isReportTreeMode;\n
+              is_domain_tree_supported here/isDomainTreeSupported;\n
+              is_report_tree_supported here/isReportTreeSupported;\n
+              show_select_column here/showSelectColumn;\n
+              show_anchor_column here/showAnchorColumn;\n
+              show_search_line here/showSearchLine;\n
+              is_web_mode request/is_web_mode | nothing;\n
+              list_style python:request.get(\'list_style\', is_web_mode and \'table\' or None);\n
+              is_gadget_mode request/is_gadget_mode | nothing;\n
+              ">\n
+  <!-- ListBox starts here.  -->\n
+  <input type="hidden" name="list_selection_name" value="default" tal:attributes="value selection_name" />\n
+  <input type="hidden" name="list_selection_name" value="default"\n
+                       tal:attributes="value selection_name;\n
+                                       name string:${field_id}_list_selection_name" />\n
+  <input tal:condition="md5_string" type="hidden" name="md5_object_uid_list" value="checksum" tal:attributes="value md5_string" />\n
+  \n
+  <tal:block tal:condition="is_gadget_mode">\n
+    <tal:block tal:define="global box_relative_url python: request.get(\'box_relative_url\', \'\');\n
+               global box python: real_context.restrictedTraverse(box_relative_url); \n
+               global box_id python: \'visual_%s\' %box_relative_url.split(\'/\')[-1];\n
+               global dom_id python: request.get(\'dom_id\',None) or box_id;">\n
+      <input tal:condition="python:form_id" \n
+            type="hidden" name="gadget_form_id"\n
+            tal:attributes="value form_id" />\n
+    </tal:block>\n
+  </tal:block>\n
+\n
+  <tal:replace tal:content="nothing">\n
+    Because TAL cannot accept unbalanced tags, the support for a domain tree is realized by a macro.\n
+    The macro ListBoxContainer is a no-op, if not in domain tree mode. Otherwise, the macro constructs\n
+    a domain tree and extracts the body in an extra table.\n
+  </tal:replace>\n
+\n
+  <tal:block tal:define="expand python: 0">\n
+    <tal:block metal:define-macro="ListBoxContainer">\n
+      <tal:block tal:condition="expand">\n
+        <table tal:condition="is_domain_tree_mode"\n
+          style="width: 100%;" cellpadding="0" cellspacing="0"\n
+          summary="This table contains the domain tree with the switch button"\n
+          tal:define="selected_domain_path here/getSelectedDomainPath">\n
+          <tr>\n
+            <td valign="top">\n
+              <select name="domain_root_url"\n
+                tal:attributes="onChange string:submitAction(this.form, \'${context_url}/setDomainRoot\')">\n
+                <tal:block tal:repeat="c here/getDomainRootList">\n
+                  <option value="base_domain"\n
+                    tal:define="path python: c[0]; title python: c[1]"\n
+                    tal:attributes="selected python: path == selected_domain_path; value path"\n
+                    tal:content="title"\n
+                    i18n:translate="" i18n:domain="ui">Base Domain</option>\n
+                </tal:block>\n
+              </select>\n
+              <table id="listbox_domain_tree_table" cellpadding="0"\n
+                summary="This table contains the domain tree"\n
+                class="listbox_domain_tree_table"\n
+                tal:attributes="id string:${field_id}_domain_tree_table"\n
+                tal:define="report_tree_list python: here.makeReportTreeList(report_path = selected_domain_path, unfolded_list = selection.getDomainList(), is_report_opened = False);\n
+                            total_depth python: max([report_tree.depth for report_tree in report_tree_list] + [-1])">\n
+                <tr tal:repeat="report_tree report_tree_list">\n
+                  <tal:block tal:repeat="i python: range(report_tree.depth)">\n
+                    <td width="12" nowrap="nowrap">&nbsp;</td>\n
+                  </tal:block>\n
+\t\t              <td colspan="1" style="text-align: left; vertical-align: top; white-space: nowrap;"\n
+                    tal:attributes="colspan python: total_depth - report_tree.depth + 1">\n
+                    <a href="method" class="tree_open"\n
+                      tal:condition="report_tree/is_open"\n
+                      tal:attributes="href string:foldDomain?domain_url=${report_tree/domain_url}&form_id=${form_id}&list_selection_name=${selection_name}&domain_depth:int=${report_tree/depth}">\n
+                      <b tal:content="report_tree/obj/getTranslatedTitleOrId">Domain</b></a>\n
+                    <a href="method" class="tree_closed"\n
+                      tal:condition="not: report_tree/is_open"\n
+                      tal:attributes="href string:unfoldDomain?domain_url=${report_tree/domain_url}&form_id=${form_id}&list_selection_name=${selection_name}&domain_depth:int=${report_tree/depth}">\n
+                      <tal:block tal:content="report_tree/obj/getTranslatedTitleOrId">Domain</tal:block></a>\n
+                  </td>\n
+                </tr>\n
+              </table>\n
+            </td>\n
+            <td style="vertical-align: top">\n
+              <tal:block metal:define-slot="ListBoxBody" />\n
+            </td>\n
+          </tr>\n
+        </table>\n
+        <tal:block tal:condition="not: is_domain_tree_mode">\n
+          <tal:block metal:define-slot="ListBoxBody" />\n
+        </tal:block>\n
+      </tal:block>\n
+    </tal:block>\n
+  </tal:block>\n
+  <tal:block tal:condition="python: list_style == \'search\'">\n
+    <span metal:use-macro="real_context/ListBox_asSearchStyleHTML/macros/main"/>\n
+  </tal:block>\n
+  <tal:block tal:condition="python: list_style == \'table\'">\n
+    <span metal:use-macro="real_context/ListBox_asMf54TableStyleHTML/macros/main"/>\n
+  </tal:block>\n
+  <tal:block tal:condition="python: list_style not in (\'search\', \'table\')">\n
+    <span metal:use-macro="real_context/ListBox_asStandardHTML/macros/main"/>\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>ListBox_asMf54HTML</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54TableStyleHTML.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54TableStyleHTML.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ef42736160059bfca61ed1c57d6dc5e451094e4
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/ListBox_asMf54TableStyleHTML.xml
@@ -0,0 +1,332 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<tal:block metal:define-macro="main"\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
+  <!-- ListBox (table mode) starts here -->\n
+\n
+  <input tal:replace="nothing" type="hidden" name="form_id" tal:attributes="value form_id" tal:condition="form_id"/>\n
+\n
+  <!--<input type="hidden" name="selection_name" tal:attributes="value selection_name" tal:condition="selection_name"/>\n
+  <input type="hidden" name="selection_index" tal:attributes="value selection_index" tal:condition="selection_index"/>-->\n
+  \n
+  <!--<input type="hidden" name="listbox_uid:list" value="" tal:attributes="name string:${field_id}_uid:list"/>\n
+  <input type="hidden" name="total_size" value="" tal:attributes="value here/total_size"/> -->\n
+  <input id="listbox_select" tal:attributes="id string:${field_id}_select"\n
+         title="Filter" alt="Filter" name="Base_doSelect:method"\n
+         type="submit" style="display: none"/>\n
+\n
+  <tal:block tal:define="expand python: 1;\n
+             table_form_id request/current_form_id | form_id;\n
+             your_search_text python:here.getParamDict().get(\'your_search_text\', None)">\n
+    <tal:block metal:use-macro="template/macros/ListBoxContainer">\n
+      <tal:block metal:fill-slot="ListBoxBody">\n
+\n
+          <input tal:condition="python:is_gadget_mode" type="hidden" name="dom_id" tal:attributes="value dom_id" />\n
+\n
+          <table class="listbox table">\n
+          \n
+            <caption>\n
+                <span class="left">\n
+                  <button tal:condition="is_gadget_mode"\n
+                          tal:define = "params python: {\'list_style\':\'search\'}"\n
+                          type="button"\n
+                          title="Search mode"\n
+                          tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);"\n
+                          i18n:domain="ui" i18n:attributes="title">\n
+                    <img id="style_toggle_icon"\n
+                         alt="Search mode"\n
+                         src="erp5/images/table_style_icon.png"\n
+                         height="16"/></button>\n
+                  <a tal:attributes="id string:${field_id}_title; href string:${context_url}?reset=1"\n
+                     tal:condition="python: here.field.get_value(\'list_action\')">\n
+                    <em i18n:translate="" \n
+                        i18n:domain="ui" tal:content="python: \'Reset search\'"/>\n
+                  </a>\n
+                  <tal:block tal:condition="python: not here.field.get_value(\'list_action\')">\n
+                    <em i18n:translate="" \n
+                        i18n:domain="ui" tal:content="here/getTitle" tal:condition="here/getTitle"/>\n
+                  </tal:block>\n
+                  <!-- supporting domain tree mode for gadget mode (disabled)-->\n
+                  <!--\n
+                  <br tal:condition="is_gadget_mode"/>\n
+                  <button tal:condition="python: is_gadget_mode and (is_domain_tree_supported or is_report_tree_supported)"\n
+                          tal:define = "params python: {\'setFlatListMode:method\':1}"\n
+                          id="listbox_flat_list_mode"\n
+                          type="button"\n
+                          title="Flat List"\n
+                          alt="Flat List"\n
+                          tal:attributes="id string:${field_id}_flat_list_mode;\n
+                                          onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);"\n
+                          i18n:domain="ui" i18n:attributes="title">\n
+                    <img src="text_block.png"\n
+                         tal:attributes="src string:${portal_url_string}/images/text_block.png;"/></button>\n
+\n
+                  <button tal:condition="python: is_gadget_mode and is_report_tree_supported"\n
+                          tal:define = "params python: {\'setReportTreeMode:method\':1}"\n
+                          style="cursor:pointer;" id="listbox_report_tree_mode"\n
+                          type="button"\n
+                          title="Report Tree"\n
+                          alt="Report Tree"\n
+                          tal:attributes="id string:${field_id}_report_tree_mode;\n
+                                          onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);"\n
+                          i18n:domain="ui" i18n:attributes="title">\n
+                    <img src="view_tree.png"\n
+                         tal:attributes="src string:${portal_url_string}/images/view_tree.png;"/></button>\n
+\n
+                  <button tal:condition="python: is_gadget_mode and is_domain_tree_supported"\n
+                          tal:define = "params python: {\'setDomainTreeMode:method\':\'1\'}"\n
+                          style="cursor:pointer;" id="listbox_domain_tree_mode"\n
+                          type="button"\n
+                          title="Domain Tree"\n
+                          alt="Domain Tree"\n
+                          tal:attributes="id string:${field_id}_domain_tree_mode;\n
+                                          onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);"\n
+                          i18n:domain="ui" i18n:attributes="title">\n
+                    <img src="view_choose.png"\n
+                         tal:attributes="src string:${portal_url_string}/images/view_choose.png;"/></button>\n
+                  -->\n
+                </span>\n
+\n
+                <span class="right"\n
+                  tal:define="listbox_max_lines  python: int(here.getMaxLineNumber());\n
+                              total_line         python: int(here.total_size);\n
+                              current_page       python: int(here.current_page) + 1;\n
+                              current_page_max   python: listbox_max_lines * current_page;\n
+                              current_page_start python: (listbox_max_lines * (current_page - 1)) + 1;\n
+                              current_page_stop  python: (total_line < current_page_max) and total_line or current_page_max;">\n
+                                <tal:block condition="python: total_line > 0"\n
+                                  tal:replace="structure python: real_context.Base_translateString(\'Results <em>${start} - ${stop}</em> of <em>${total}</em>.\', mapping=dict(start=current_page_start, stop=current_page_stop, total=total_line))"/>\n
+                  <span class="warning" tal:condition="python: here.total_size >= 1000"> - </span><span tal:condition="python: here.total_size >= 1000" class="warning" i18n:translate="" i18n:domain="ui">There is too much result for your search, please specify what you want.</span>\n
+                  <span tal:condition="python: total_line == 0" class="warning" i18n:translate="" i18n:domain="ui">No result !</span>\n
+                </span>\n
+            </caption>\n
+\n
+              <tr class ="thead thead_top">\n
+                <td tal:condition="python:not is_gadget_mode and show_select_column"\n
+                    class="td_check_all Data" style="width: 50px; text-align: center; vertical-align: middle;float:left;">\n
+                  <input id="listbox_check_all" type="image"\n
+                         name="checkAll:method" value="1"\n
+                         src="checkall.png" alt="Check All" title="Check All"\n
+                         tal:attributes="id string:${field_id}_check_all;\n
+                                         name string:${field_id}_checkAll:method;\n
+                                         src string:${portal_url_string}/images/checkall.png"\n
+                         i18n:domain="ui" i18n:attributes="title" />&nbsp;<input id="listbox_uncheck_all"\n
+                                    type="image" name="uncheckAll:method" value="1"\n
+                                    src="%(portal_url_string)s/images/decheckall.png"\n
+                                    style="border: 0" alt="Uncheck All" title="Uncheck All"\n
+                                    tal:attributes="id string:${field_id}_uncheck_all;\n
+                                                    src string:${portal_url_string}/images/decheckall.png;\n
+                                                    name string:${field_id}_uncheckAll:method;"\n
+                                    i18n:domain="ui" i18n:attributes="title" />\n
+              </td>\n
+\n
+                <tal:block tal:repeat="value here/getLabelValueList">\n
+                  <tal:block tal:define="sql        python: value[0];\n
+                                         title      python: value[1];\n
+                                         sort_order python: value[2]">\n
+                    <th tal:condition="sql">\n
+\n
+                      <button tal:condition="not:is_gadget_mode" type="submit"  class="sort_button"\n
+                        name="setSelectionQuickSortOrder:method"\n
+                        tal:attributes="title string:${title}; \n
+                                        value string:${field_id}.${sql}"\n
+                        i18n:domain="ui" i18n:attributes="title">\n
+                          <span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>\n
+                      </button>\n
+                      \n
+                      <!-- Sort for gadget mode -->\n
+                      <button tal:condition="is_gadget_mode" \n
+                             tal:define ="params python: {\'setSelectionQuickSortOrder:method\':field_id+\'.\'+sql};"\n
+                             type="button"  \n
+                             class="sort_button"\n
+                             tal:attributes="title string:${title}; \n
+                                             onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);"\n
+                                             i18n:domain="ui" i18n:attributes="title">\n
+                        <span tal:content="title" i18n:domain="ui" i18n:translate="">ID</span>\n
+                      </button>\n
+\n
+                      <img tal:condition="python: sort_order == \'ascending\'"\n
+                        src="1bottomarrow.png" alt="Ascending Display" title="Ascending Display"\n
+                        tal:attributes="src string:${portal_url_string}/images/1bottomarrow.png"\n
+                        style="float:left"\n
+                        i18n:domain="ui" i18n:attributes="title"/>\n
+                      <img tal:condition="python: sort_order == \'descending\'"\n
+                        src="1toparrow.png" alt="Descending Display" title="Descending Display"\n
+                        tal:attributes="src string:${portal_url_string}/images/1toparrow.png"\n
+                        style="float:left"\n
+                        i18n:domain="ui" i18n:attributes="title"/>\n
+                    </th>\n
+                    <th tal:condition="not: sql" tal:content="title" i18n:domain="ui" i18n:translate=""/>\n
+                  </tal:block>\n
+                </tal:block>\n
+              </tr>\n
+              <tr class="thead thead_bottom" tal:condition="show_search_line">\n
+                <td tal:condition="python: show_select_column and show_search_line and not is_gadget_mode"\n
+                    class="Data" style="width: 50px; text-align: center; vertical-align: middle">\n
+                  <input id="listbox_select" type="image" src="exec16.png"\n
+                         title="Action" alt="Action" name="Base_doSelect:method"\n
+                         tal:attributes="id string:${field_id}_select;\n
+                         src string:${portal_url_string}/images/exec16.png"\n
+                         i18n:domain="ui" i18n:attributes="title" />\n
+\n
+              </td>\n
+                <td tal:repeat="value here/getSearchValueList">\n
+                  <tal:block tal:define="alias        python: value[0];\n
+                                         param        python: value[1];\n
+                                         search_field python: value[2]"\n
+                             tal:condition="alias">\n
+                    <tal:block\n
+                      tal:condition="python: search_field is not None"\n
+                      tal:replace="structure python: search_field.render(value=param, key=alias)"/>\n
+                    \n
+                    <input tal:condition="python: not is_gadget_mode and search_field is None" \n
+                           name="id" size="5" value=""\n
+                           type="text" tal:attributes="name alias; value param"\n
+                           onkeypress="submitFormOnEnter(event, this.form, \'Base_doSelect\');"/>\n
+\n
+                    <!-- Search for gadget mode -->\n
+                    <input tal:condition="python: is_gadget_mode and search_field is None" \n
+                           tal:define ="params python: {alias:\'this.value\'};"\n
+                           size="8"\n
+                           type="textarea" \n
+                           tal:attributes=\'value python: selection.getParams().get(alias,"");\n
+                           onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,dom_id,params).replace("\\"this.value\\"","this.value")+ "return false;;}"\'/>\n
+\n
+                  </tal:block>\n
+                </td>\n
+              </tr>\n
+\n
+            <tal:replace tal:content="nothing">\n
+              TODO: Move pagination pre-calcultion higher in that code.\n
+            </tal:replace>\n
+              <tr class="tbody" tal:condition="line_list"\n
+                tal:repeat="line line_list" tal:define="checked_uid_set here/getCheckedUidSet">\n
+                <td tal:condition="python: show_select_column and not is_gadget_mode"\n
+                    class="DataA" style="width: 50px; text-align: center; vertical-align: middle"\n
+                    >\n
+                  <input tal:condition="python: not line.isSummary() and line.getObject() is not None"\n
+                         type="checkbox" value="checked" id="listbox_cb_1" name="uids:list"\n
+                         tal:attributes="checked python: line.getUid() in checked_uid_set;\n
+                         value line/getUid;\n
+                         id string:${field_id}_cb_${line/getUid}" />\n
+                  <tal:block tal:condition="python: line.isSummary() or line.getObject() is None"></tal:block>\n
+                </td>\n
+                \n
+                <tal:block tal:repeat="value line/render">\n
+                  <td tal:define="html               python: value[0];\n
+                                  original_value     python: value[1];\n
+                                  error              python: value[2];\n
+                                  editable_field     python: value[3];\n
+                                  editable_field_css python: editable_field != None and editable_field.get_value(\'css_class\');\n
+                                  empty              python: original_value in (\'\', None) and not request.get(\'editable_mode\')"\n
+                      tal:attributes="class python: empty and \'emptyCell\' or nothing">\n
+                    <tal:block tal:condition="empty"><span tal:attributes="class editable_field_css">-</span></tal:block>\n
+                    <input tal:condition="not: repeat/value/index"\n
+                           type="hidden" value="1" name="listbox_uid:list"\n
+                           tal:attributes="value python: line.getUid() or \'\';\n
+                                      name string:${field_id}_uid:list" />\n
+                    <tal:block tal:condition="not: empty" tal:replace="structure html">value</tal:block>\n
+                  </td>\n
+                </tal:block>\n
+              </tr>\n
+              <tr tal:condition="python: int(here.total_size) > int(here.getMaxLineNumber())"\n
+                class="tfoot">\n
+                <td class="pageNavigation" style="text-align: right; vertical-align:middle;"\n
+                    tal:attributes="colspan python: len(here.getSelectedColumnList()) + bool(show_select_column)">\n
+                    <tal:block metal:use-macro="real_context/page_navigation_render/macros/page_navigation" />\n
+                </td>\n
+              </tr>\n
+          </table>\n
+\n
+          <!-- Advanced Search footer -->\n
+          <div class="centeredInner extendedSearchBar"\n
+               tal:condition="python:not is_gadget_mode and show_search_line and your_search_text is not None">\n
+            <input name="bottom_your_search_text" size="40" value=""\n
+                   type="text" tal:attributes="value your_search_text"\n
+                   onkeypress="submitFormOnEnter(event, this.form, \'ERP5Site_processAdvancedSearchBottom\');"/>\n
+            <input class="button" value="Search" name="ERP5Site_processAdvancedSearchBottom:method" type="submit" />\n
+          </div>\n
+\n
+          <!-- Copy / Paste buttons -->\n
+          <div class="bottom_actions" \n
+               tal:condition="python:not is_gadget_mode and show_select_column">\n
+\n
+            <button type="submit" class="compare_button" title="Compare"\n
+                    name="Folder_compare:method"\n
+                    i18n:attributes="title" i18n:domain="ui">\n
+              <span class="image"></span>\n
+              <span class="description" i18n:translate="" i18n:domain="ui">Compare</span>\n
+            </button>\n
+          </div>\n
+      </tal:block>\n
+    </tal:block>\n
+  </tal:block>\n
+  <!-- ListBox ends here -->\n
+\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>ListBox_asMf54TableStyleHTML</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Listbox as tables renderer</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout.xml
index cabe47ef770a0fb43c287bab1ea21bac1e4f98e0..330daa3ed58ca2d7bca48e603a4b020622233d38 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout.xml
@@ -66,10 +66,12 @@
                 <string>header header-bottom</string>
                 <string>navbar navbar-left</string>
                 <string>headline</string>
+                <string>product_list (Product List)</string>
                 <string>footer</string>
                 <string>subcontent subcontent-box loginbox (My Account)</string>
                 <string>subcontent subcontent-box cartbox (My Cart)</string>
                 <string>subcontent subcontent-box sidemenu1 (Subsections)</string>
+                <string>hidden</string>
               </list>
             </value>
         </item>
@@ -110,7 +112,15 @@
                     <value>
                       <list>
                         <string>page_title_box</string>
-                        <string>selected_product_box</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list>
+                        <string>product_list_thumbnail</string>
+                        <string>product_list_decoratedPrice</string>
                       </list>
                     </value>
                 </item>
@@ -122,6 +132,14 @@
                       </list>
                     </value>
                 </item>
+                <item>
+                    <key> <string>product_list (Product List)</string> </key>
+                    <value>
+                      <list>
+                        <string>product_list</string>
+                      </list>
+                    </value>
+                </item>
                 <item>
                     <key> <string>subcontent subcontent-box cartbox (My Cart)</string> </key>
                     <value>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f867e3b27db970c2d79ae3d89616ea46c7143b63
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list.xml
@@ -0,0 +1,576 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ListBox" module="Products.ERP5Form.ListBox"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>product_list</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>all_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>anchor</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>count_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default_params</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>domain_root_list</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>domain_tree</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>global_attributes</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>list_action</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>list_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>meta_types</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>page_template</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_types</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>report_root_list</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>report_tree</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>row_css_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>search</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>search_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>select</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>selection_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>sort</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>sort_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>stat_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>stat_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>untranslatable_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>url_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>all_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>anchor</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>count_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default_params</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>domain_root_list</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>domain_tree</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>global_attributes</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>list_action</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>list_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>meta_types</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>page_template</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_types</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>report_root_list</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>report_tree</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>row_css_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>search</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>search_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>select</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>selection_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>sort</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>sort_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>stat_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>stat_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>untranslatable_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>url_columns</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>all_columns</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>anchor</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>thumbnail</string>
+                          <string>Thumbnail</string>
+                        </tuple>
+                        <tuple>
+                          <string>title</string>
+                          <string>Title</string>
+                        </tuple>
+                        <tuple>
+                          <string>decoratedPrice</string>
+                          <string>Price</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>count_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string>hiddenLabel</string> </value>
+                </item>
+                <item>
+                    <key> <string>default_params</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>domain_root_list</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>domain_tree</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable_columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>thumbnail</string>
+                          <string>Thumbnail</string>
+                        </tuple>
+                        <tuple>
+                          <string>decoratedPrice</string>
+                          <string>Price</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>global_attributes</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>lines</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>list_action</string> </key>
+                    <value> <string>list</string> </value>
+                </item>
+                <item>
+                    <key> <string>list_method</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>meta_types</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>page_template</string> </key>
+                    <value> <string>ListBox_asMf54HTML</string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_types</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>Product</string>
+                          <string>Product</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>report_root_list</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>report_tree</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>row_css_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>search</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>search_columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>title</string>
+                          <string>Title</string>
+                        </tuple>
+                        <tuple>
+                          <string>decoratedPrice</string>
+                          <string>Price</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>select</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>selection_name</string> </key>
+                    <value> <string>product_selection</string> </value>
+                </item>
+                <item>
+                    <key> <string>sort</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>sort_columns</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>title</string>
+                          <string>Title</string>
+                        </tuple>
+                        <tuple>
+                          <string>decoratedPrice</string>
+                          <string>Price</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>stat_columns</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>stat_method</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>product_list</string> </value>
+                </item>
+                <item>
+                    <key> <string>untranslatable_columns</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>url_columns</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Method" module="Products.Formulator.MethodField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>method_name</string> </key>
+            <value> <string>WebSection_getProductList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_decoratedPrice.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_decoratedPrice.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e74ab3880ab2abb081613f5458a3d060d67b2e47
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_decoratedPrice.xml
@@ -0,0 +1,299 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="StringField" module="Products.Formulator.StandardFields"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>product_list_decoratedPrice</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>Too much input was given.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Product List Decorated Price</string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: \'%s %s\' % (here.ERP5Site_unrestrictedGetPrice(cell), cell.SaleOrder_getShoppingCartDefaultCurrencyCode())</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>cell/getPrice</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/selected_product_box.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_thumbnail.xml
similarity index 68%
rename from bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/selected_product_box.xml
rename to bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_thumbnail.xml
index 21b46268d0b4ca9429f1cde5f1c3c2c8c75b009e..acdb7b495721a32520709acdee70067e5cbdaf41 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/selected_product_box.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/erp5_web_multiflex5_commerce_layout/product_list_thumbnail.xml
@@ -13,19 +13,16 @@
             <key> <string>delegated_list</string> </key>
             <value>
               <list>
-                <string>title</string>
                 <string>default</string>
-                <string>width</string>
-                <string>height</string>
-                <string>text_editor</string>
                 <string>enabled</string>
-                <string>whitespace_preserve</string>
+                <string>image_display</string>
+                <string>image_resolution</string>
               </list>
             </value>
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>selected_product_box</string> </value>
+            <value> <string>product_list_thumbnail</string> </value>
         </item>
         <item>
             <key> <string>message_values</string> </key>
@@ -69,7 +66,9 @@
                 </item>
                 <item>
                     <key> <string>enabled</string> </key>
-                    <value> <string></string> </value>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
                 </item>
                 <item>
                     <key> <string>field_id</string> </key>
@@ -80,27 +79,15 @@
                     <value> <string></string> </value>
                 </item>
                 <item>
-                    <key> <string>height</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>target</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>text_editor</string> </key>
+                    <key> <string>image_display</string> </key>
                     <value> <string></string> </value>
                 </item>
                 <item>
-                    <key> <string>title</string> </key>
+                    <key> <string>image_resolution</string> </key>
                     <value> <string></string> </value>
                 </item>
                 <item>
-                    <key> <string>whitespace_preserve</string> </key>
-                    <value> <string></string> </value>
-                </item>
-                <item>
-                    <key> <string>width</string> </key>
+                    <key> <string>target</string> </key>
                     <value> <string></string> </value>
                 </item>
               </dictionary>
@@ -120,35 +107,23 @@
                 </item>
                 <item>
                     <key> <string>field_id</string> </key>
-                    <value> <string>my_text_content</string> </value>
+                    <value> <string>listbox_thumbnail</string> </value>
                 </item>
                 <item>
                     <key> <string>form_id</string> </key>
-                    <value> <string>Base_viewFieldLibrary</string> </value>
-                </item>
-                <item>
-                    <key> <string>height</string> </key>
-                    <value> <int>5</int> </value>
-                </item>
-                <item>
-                    <key> <string>target</string> </key>
-                    <value> <string>Click to edit the target</string> </value>
-                </item>
-                <item>
-                    <key> <string>text_editor</string> </key>
-                    <value> <string>text_area</string> </value>
+                    <value> <string>DocumentModule_viewFieldLibrary</string> </value>
                 </item>
                 <item>
-                    <key> <string>title</string> </key>
-                    <value> <string>selected_product_box</string> </value>
+                    <key> <string>image_display</string> </key>
+                    <value> <string>micro</string> </value>
                 </item>
                 <item>
-                    <key> <string>whitespace_preserve</string> </key>
-                    <value> <int>0</int> </value>
+                    <key> <string>image_resolution</string> </key>
+                    <value> <int>75</int> </value>
                 </item>
                 <item>
-                    <key> <string>width</string> </key>
-                    <value> <int>40</int> </value>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
                 </item>
               </dictionary>
             </value>
@@ -167,7 +142,23 @@
       <dictionary>
         <item>
             <key> <string>_text</string> </key>
-            <value> <string>here/WebSection_viewSelectedProductWidget</string> </value>
+            <value> <string>python: cell.getDefaultImageValue().getData() and cell.getDefaultImageAbsoluteUrl()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: (cell.getPortalType() == \'Product\') and cell.getDefaultImageValue() is not None and cell.getDefaultImageValue().getData() is not None</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/mf54_commerce.css.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/mf54_commerce.css.xml
index 9bfaf31d4f910db4716772b4abb0ca81be68e825..c663d7dc0adb91b78655af15bde04403cd8afad9 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/mf54_commerce.css.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/mf54_commerce.css.xml
@@ -52,6 +52,7 @@
   secondary_color python:here.getLayoutProperty(\'layout_secondary_color\', \'rgb(225,225,225)\');\n
   header_color python:here.getLayoutProperty(\'layout_header_color\', \'rgb(218,218,218)\');\n
   menu_color python:here.getLayoutProperty(\'layout_menu_color\', \'rgb(235,235,235)\');\n
+  font_list python:here.getLayoutProperty(\'layout_font_list\', \'Century Gothic, verdana, arial, sans-serif\');\n
   container_width python:here.getLayoutProperty(\'layout_container_width\', 978);\n
   border_width python:here.getLayoutProperty(\'layout_border_width\', 10);\n
   main_width python:container_width - 2 * border_width;\n
@@ -96,10 +97,10 @@ div.subcontent-box.cartbox fieldset.widget div.field table tr td.cart_bottom div
 \n
 div.selected-product {height : 110px; width:<tal:block tal:replace="main_content_width"/>px; padding-left:25px; margin-bottom:10px;}\n
 div.selected-product div {float:left; width:100px; height:100px; text-align:center; padding-right: 25px;}\n
-div.selected-product img {border:solid 1px #000; padding:0px; margin-left:10px; margin-right:10px; margin-top:5px; margin-bottom:2px;}\n
-div.selected-product img:hover {border:solid 1px #000; padding:0px; margin:0px; margin-left:10px; margin-right:10px;}\n
+div.selected-product img {border:solid 1px <tal:block tal:replace="primary_color"/>; padding:0px; margin-left:10px; margin-right:10px; margin-top:5px; margin-bottom:2px;}\n
+div.selected-product img:hover {border:solid 2px <tal:block tal:replace="primary_color"/>; padding:0px; margin-top:4px; margin-left:9px; margin-right:9px; margin-bottom:1px;}\n
 .cart_item_name {width:180px;}\n
-.headline     {float:left; width:<tal:block tal:replace="main_content_width"/>px;}\n
+.headline     {float:left; width:<tal:block tal:replace="main_width"/>px;}\n
 \n
 \n
 .resource_left {float:left; width:<tal:block tal:replace="python: (main_content_width / 3) * 2"/>px;}\n
@@ -108,17 +109,17 @@ div.selected-product img:hover {border:solid 1px #000; padding:0px; margin:0px;
 div.resource_image {float:left;}\n
 div.resource_image img {border:none; margin-left:5px;}\n
 fieldset.resource_left div.hiddenLabel label {display:none;}\n
-fieldset.resource_left div.hiddenLabel div.input {float:left; width:<tal:block tal:replace="python: main_content_width / 3"/>px}\n
+fieldset.resource_left div.hiddenLabel div.input {float:left; width:<tal:block tal:replace="python: main_content_width / 3"/>px; padding:0px}\n
 fieldset.resource_left div.hiddenLabel div.input span.hiddenLabel {font: 20px bold Verdana,sans-serif; padding-top:10px;}\n
 div.resource_image label {display:none;}\n
 .resource_right div.hidden label {display:none;}\n
 .resource_right div.field label a {display:none;}\n
-.resource_right div.field label {height:20px; width:100px; float:left;}\n
-.resource_right div.field div.input {height:20px; width:100px; float:right;}\n
+.resource_right div.field label {height:20px; width:100px; float:left; padding:0px;}\n
+.resource_right div.field div.input {height:20px; width:100px; float:right; padding:0px}\n
 .resource_right div.field {margin:5px}\n
 .resource_center div.hiddenLabel div.input input {}\n
 .resource_center div.field label a {display:none;}\n
-.resource_center div.hiddenLabel label {margin-left:15px;}\n
+.resource_center div.hiddenLabel label {margin-left:15px;padding:0px;}\n
 .product_description_header {margin: 5px; margin-left:15px;}\n
 .product_description {display:none;}\n
 .product_description_close {margin: 5px; margin-left:15px;}\n
@@ -133,6 +134,8 @@ div.resource_image label {display:none;}\n
 .product_list:hover {border-top: 1px solid <tal:block tal:replace="primary_color"/>; border-bottom: 1px solid <tal:block tal:replace="primary_color"/>; background-color:<tal:block tal:replace="secondary_color"/>;}\n
 .product_list_bis:hover {border-top: 1px solid <tal:block tal:replace="primary_color"/>;border-bottom: 1px solid <tal:block tal:replace="primary_color"/>; background-color:<tal:block tal:replace="secondary_color"/>;}\n
 \n
+div.shopping_cart_renderer div.input {padding:0px;}\n
+\n
 .shopping_cart_renderer_title {float:left; margin-top:8px;}\n
 .shopping_cart_renderer_remove {float:right; margin-top:3px;}\n
 .shopping_cart_renderer_remove a img {border:none;}\n
@@ -141,13 +144,34 @@ div.resource_image label {display:none;}\n
 .shopping_cart_renderer_shipping label a {display:none;}\n
 .shopping_cart_renderer_submit label a {display:none;}\n
 \n
-div.shopping_cart_renderer_shipping {width: <tal:block tal:replace="python: main_content_width - 40"/>px; height:20px; margin-bottom:20px; margin-top:20px; padding-left:20px; padding-right:20px; padding-top:3px;background-color:<tal:block tal:replace="body_color"/>;}\n
-.shopping_cart_renderer_shipping label {float:left; width: <tal:block tal:replace="python: main_content_width / 4"/>px; height:20px;}\n
-.shopping_cart_renderer_shipping div {float:right; height:20px;}\n
-div.shopping_cart_renderer_submit {width: <tal:block tal:replace="python: main_content_width - 40"/>px; height:20px; margin-bottom:20px; padding-left:20px; padding-right:20px; padding-top:3px; background-color:<tal:block tal:replace="body_color"/>;}\n
-.shopping_cart_renderer_submit label {float:left; width: <tal:block tal:replace="python: main_content_width / 8"/>px; height:20px;}\n
-.shopping_cart_renderer_submit div {float:right; height:20px;}\n
+div.shopping_cart_renderer_shipping {width: <tal:block tal:replace="python: main_content_width - 40"/>px; height:20px; margin-bottom:20px; margin-top:20px; padding-left:20px; padding-right:20px; padding-top:3px; padding-bottom:3px; background-color:<tal:block tal:replace="body_color"/>;}\n
+.shopping_cart_renderer_shipping label {float:left; width: <tal:block tal:replace="python: main_content_width / 4"/>px; height:20px;padding:0px;}\n
+.shopping_cart_renderer_shipping div {float:right; height:20px; padding:0px}\n
+div.shopping_cart_renderer_submit {width: <tal:block tal:replace="python: main_content_width - 40"/>px; height:20px; margin-bottom:20px; padding-left:20px; padding-right:20px; padding-top:3px;  padding-bottom:3px; background-color:<tal:block tal:replace="body_color"/>;}\n
+.shopping_cart_renderer_submit label {float:left; width: <tal:block tal:replace="python: main_content_width / 8"/>px; height:20px;padding:0px;}\n
+.shopping_cart_renderer_submit div {float:right; height:20px; padding:0px}\n
+\n
+.mf_commerce_text {font: 12px <tal:block tal:replace="python: \',\'.join(font_list)"/>}\n
+.mf_commerce_text_bold {font: bold 12px <tal:block tal:replace="python: \',\'.join(font_list)"/>;}\n
+.mf_commerce_text_small {font: 8px <tal:block tal:replace="python: \',\'.join(font_list)"/>;}\n
+.mf_commerce_text_description {font: 10px <tal:block tal:replace="python: \',\'.join(font_list)"/>;}\n
+\n
+div.hiddenLabel label {display:none;}\n
+fieldset.editable div.input {padding:0px;}\n
 \n
+.main_content table {border-top: solid 1px <tal:block tal:replace="primary_color"/>;}\n
+.main_content table th {border:none; background-color:<tal:block tal:replace="body_color"/>;}\n
+.main_content table tr {border:none; border-bottom:dashed 1px <tal:block tal:replace="menu_color"/>; background-color:#FFF;}\n
+.main_content table td {border:none; background-color:#FFF;}\n
+.main_content table tr.thead_bottom {border:none; background-color:<tal:block tal:replace="menu_color"/>;}\n
+.main_content table tr.thead_top {border:none; background-color:<tal:block tal:replace="secondary_color"/>;}\n
+.main_content table tr.thead_bottom td {border: solid 1px <tal:block tal:replace="primary_color"/>;border-width: 1px 0px 1px 0px;}\n
+.main_content table tr.tfoot {border:none;}\n
+.main_content table caption {margin-top:10px; text-align:center; padding-bottom:10px;}\n
+.main_content button.sort_button {float:left;}\n
+.main_content th img {clear:none; border:none; margin-left:5px;}\n
+.main_content .pageNavigation input {vertical-align:middle;}\n
+.main_content table td.td_check_all {background-color:<tal:block tal:replace="body_color"/>;}\n
 </tal:block>
 
 ]]></string> </value>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/multiflex5_large_box_renderer.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/multiflex5_large_box_renderer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..18dca81897119770849c565b3d0a6707d2a74cb9
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/multiflex5_large_box_renderer.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<tal:block metal:define-macro="large_widget">\n
+        <a id="anchor-sidemenu-4" tal:attributes="id gid"></a>\n
+        <div class="corner-content-1col-top" tal:condition="python:len(field_list)"></div>\n
+        <div tal:attributes="class python: gid.lstrip(aggregate_name) + \' content-1col-nobox\';"\n
+             tal:condition="python:len(field_list)">\n
+          <h1 class="group_title" i18n:translate="" i18n:domain="ui" tal:content="python: gtitle">4-01a. Side menu 1</h1>\n
+          <fieldset class="widget">\n
+            <!-- <legend i18n:translate="" i18n:domain="ui" tal:content="python: gtitle" class="group_title"/> -->\n
+            <tal:block tal:repeat="field field_list">\n
+              <tal:block metal:use-macro="here/field_render/macros/field_render"/>\n
+            </tal:block>\n
+          </fieldset>\n
+        </div>\n
+        <div class="corner-content-1col-bottom" tal:condition="python:len(field_list)"></div>\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>multiflex5_large_box_renderer</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/template_erp5_multiflex5_commerce.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/template_erp5_multiflex5_commerce.xml
index c1d1aee5dc2887695eb66e29707a0b47bc3ffb82..e019f4b1844024ee64f84085c7d22547ca5af7c1 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/template_erp5_multiflex5_commerce.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_multiflex_layout/template_erp5_multiflex5_commerce.xml
@@ -89,12 +89,13 @@
                            dummy python: request.set(\'dialog_mode\', dialog_mode);\n
                            dummy python: request.set(\'list_mode\', list_mode);\n
                            aggregate python: has_no_layout or layout_form.Form_getGroupList(\n
-                                             [\'header\', \'navbar\', \'headline\', \'subcontent\', \'footer\']);\n
+                                             [\'header\', \'navbar\', \'headline\', \'subcontent\', \'product_list\', \'footer\']);\n
                            aggregate python: ((aggregate is not has_no_layout) and dict(aggregate)) or {};\n
                            header_area python:aggregate.get(\'header\', []);\n
                            navbar_area python:aggregate.get(\'navbar\', []);\n
                            headline_area python:aggregate.get(\'headline\', []);\n
                            subcontent_area python:aggregate.get(\'subcontent\', []);\n
+                           product_list_area python:aggregate.get(\'product_list\', []);\n
                            footer_area python:aggregate.get(\'footer\', []);\n
                            global css_list_template python:[\n
                                   \'%s/mf54_reset.css\' % portal_path,\n
@@ -139,17 +140,10 @@
       <div class="headline">\n
       <!-- Layout form rendering -->\n
       <tal:block tal:condition="python: layout_form is not None">\n
-        <tal:block tal:repeat="aggregate python: [(\'headlibe\', headline_area)]">\n
+        <tal:block tal:repeat="aggregate python: [(\'headline\', headline_area)]">\n
            <tal:block metal:use-macro="here/aggregate_render/macros/aggregate_render"/>\n
         </tal:block>\n
-      </tal:block> \n
-        <div class="main_content">\n
-          <div class="corner-content-1col-top"></div>                        \n
-          <div class="content-1col-nobox">\n
-            <tal:block tal:content="structure here/WebSection_viewSelectedProductWidget"/>\n
-          </div>\n
-          <div class="corner-content-1col-bottom"></div>                       \n
-        </div>\n
+      </tal:block>\n
       </div>\n
 \n
       <!-- SUBCONTENT -->\n
@@ -167,22 +161,32 @@
 \n
       <!-- CONTENT -->\n
       <div class="main_content">\n
+        <div class="main_content">\n
+          <div class="corner-content-1col-top"></div>                        \n
+          <div class="content-1col-nobox">\n
+            <tal:block tal:content="structure here/WebSection_viewSelectedProductWidget"/>\n
+          </div>\n
+          <div class="corner-content-1col-bottom"></div>                       \n
+        </div>\n
+      <tal:block tal:condition="python: here.REQUEST.get(\'current_form_id\') != \'WebPage_viewAsWeb\' and here.REQUEST.get(\'current_form_id\') != \'WebSection_viewAsWeb\'">\n
+        <div class="main_content">\n
         <div class="corner-content-1col-top"></div>                        \n
         <div class="content-1col-nobox">\n
           <tal:block metal:define-slot="main"/>\n
         </div>\n
-        <div class="corner-content-1col-bottom"></div>                       \n
-      </div>\n
-\n
+        <div class="corner-content-1col-bottom"></div>\n
+      </tal:block>\n
       <tal:block tal:condition="python: here.REQUEST.get(\'current_form_id\') == \'WebPage_viewAsWeb\' or here.REQUEST.get(\'current_form_id\') == \'WebSection_viewAsWeb\'">\n
         <div class="main_content">\n
-          <div class="corner-content-1col-top"></div>                        \n
-          <div class="content-1col-nobox">\n
-            <tal:block tal:content="structure here/WebSection_viewProductList"/>\n
-          </div>\n
-          <div class="corner-content-1col-bottom"></div>                       \n
+          <tal:block tal:condition="python: layout_form is not None"\n
+                     tal:define="widget_renderer here/multiflex5_large_box_renderer/macros/large_widget">\n
+            <tal:block tal:repeat="aggregate python: [(\'product_list\', product_list_area)]">\n
+              <tal:block metal:use-macro="here/aggregate_render/macros/aggregate_render"/>\n
+            </tal:block>\n
+          </tal:block>                     \n
         </div>\n
-      </tal:block>              \n
+      </tal:block>                       \n
+      </div>            \n
     </div>   \n
       \n
     <!-- FOOTER -->      \n
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWeb/shopping_cart.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWeb/shopping_cart.xml
index 3f1e5677e6b0cef902d878fe214e2f397e013a91..28ba444459b1237cfcc137d4a265dc77adabb71d 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWeb/shopping_cart.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWeb/shopping_cart.xml
@@ -3,11 +3,8 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <tuple>
-          <string>Products.ERP5Form.EditorField</string>
-          <string>EditorField</string>
-        </tuple>
-        <none/>
+        <global name="EditorField" module="Products.ERP5Form.EditorField"/>
+        <tuple/>
       </tuple>
     </pickle>
     <pickle>
@@ -213,7 +210,7 @@
                 </item>
                 <item>
                     <key> <string>css_class</string> </key>
-                    <value> <string>hiddenLabel</string> </value>
+                    <value> <string>hiddenLabel shopping_cart_renderer</string> </value>
                 </item>
                 <item>
                     <key> <string>default</string> </key>
@@ -263,6 +260,10 @@
                     <key> <string>required</string> </key>
                     <value> <int>0</int> </value>
                 </item>
+                <item>
+                    <key> <string>text_editor</string> </key>
+                    <value> <string>text_area</string> </value>
+                </item>
                 <item>
                     <key> <string>title</string> </key>
                     <value> <string>Shopping Cart</string> </value>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWebConfirm/submit.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWebConfirm/submit.xml
index 52bdb30cd00c426b4e9e2c2785d4ca6960af8668..3337fe814d456af9b26ab320e8635428e24c25c3 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWebConfirm/submit.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewAsWebConfirm/submit.xml
@@ -3,11 +3,8 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <tuple>
-          <string>Products.Formulator.StandardFields</string>
-          <string>LabelField</string>
-        </tuple>
-        <none/>
+        <global name="LabelField" module="Products.Formulator.StandardFields"/>
+        <tuple/>
       </tuple>
     </pickle>
     <pickle>
@@ -122,7 +119,7 @@
                 </item>
                 <item>
                     <key> <string>editable</string> </key>
-                    <value> <int>1</int> </value>
+                    <value> <int>0</int> </value>
                 </item>
                 <item>
                     <key> <string>enabled</string> </key>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartRenderer.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartRenderer.xml
index 6141152336c57ced43e0a1b6f8e7b5ed4b630083..094c0463f18ffff4a1145bd6c58531dd66686436 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartRenderer.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartRenderer.xml
@@ -65,7 +65,7 @@
                       quantity python: int(order_line.getQuantity());\n
                       price    python: resource.getPrice();\n
                       order_line_id python: order_line.getId();\n
-                      currency python: here.restrictedTraverse(shopping_cart.getPriceCurrency());\n
+                      currency python: here.SaleOrder_getShoppingCartDefaultCurrency();\n
                       currency_title python: currency.getTitle(); \n
                       currency_symbole python: currency.getShortTitle();">\n
          <td>\n
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartWidgetRenderer.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartWidgetRenderer.xml
index c9167c0f6be280fa25a5401b3d6471f6c842a37f..53e3c83be4152dfc705a7a533bd4705f9d3b3fef 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartWidgetRenderer.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/SaleOrder_viewShoppingCartWidgetRenderer.xml
@@ -51,7 +51,7 @@
     <td tal:define="resource python: website.restrictedTraverse(order_line.getResource());\n
                     quantity python: int(order_line.getQuantity());\n
                     price    python: resource.getPrice();\n
-                    currency python: shopping_cart.getPriceCurrencyTitle();\n
+                    currency python: shopping_cart.SaleOrder_getShoppingCartDefaultCurrency();\n
                     currency_symbole python: context.getPortalObject().restrictedTraverse(shopping_cart.getPriceCurrency()).getShortTitle();"\n
                     class="cart_top"> \n
 \n
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_getProductList.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_getProductList.xml
index 8edaae792b0a03ad7d3644147d6c96233464b211..ff402ec6b22a1b64c3a8d465a908b6058ae9e6d8 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_getProductList.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_getProductList.xml
@@ -56,17 +56,19 @@
             <value> <string>#TODO : USE CACHE\n
 #the goal of this script is to get all the related product of this section\n
 \n
-current_web_section = context.REQUEST.get(\'current_web_section\')\n
-product_list = []\n
-if limit != 0:\n
-  product_list = current_web_section.WebSection_getDocumentValueListBase(all_versions=1,\n
-                                                                         all_languages=1,\n
-                                                                         limit=limit,\n
-                                                                         )\n
+if (context.getPortalType() != \'Web Section\'):\n
+  current_web_section = context.REQUEST.get(\'current_web_section\')\n
 else:\n
-  product_list = current_web_section.WebSection_getDocumentValueListBase(all_versions=1,\n
-                                                                         all_languages=1,\n
-                                                                         )  \n
+  current_web_section = context\n
+product_list = []\n
+kw[\'portal_type\'] = \'Product\'\n
+kw[\'limit\'] = limit\n
+product_list = current_web_section.WebSection_getDocumentValueListBase(all_versions=1,\n
+                                                                       all_languages=1,\n
+                                                                       **kw\n
+                                                                      )\n
+  \n
+#raise \'\'.join([x.getObject() for x in product_list])\n
 product_list = [x.getObject() for x in product_list if x.getPortalType() == \'Product\']\n
 \n
 # this step will be remove after have find a good way to improve WebSection_getDocumentValueListBase\n
@@ -83,7 +85,24 @@ return product_list\n
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>limit=0</string> </value>
+            <value> <string>limit=1000, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>_proxy_roles</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Authenticated</string>
+                <string>Author</string>
+                <string>Manager</string>
+                <string>Member</string>
+                <string>Owner</string>
+                <string>Reviewer</string>
+              </tuple>
+            </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -110,10 +129,13 @@ return product_list\n
                         <value>
                           <tuple>
                             <string>limit</string>
+                            <string>kw</string>
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>current_web_section</string>
                             <string>product_list</string>
+                            <string>_write_</string>
+                            <string>_apply_</string>
                             <string>append</string>
                             <string>$append0</string>
                             <string>_getiter_</string>
@@ -130,7 +152,7 @@ return product_list\n
             <key> <string>func_defaults</string> </key>
             <value>
               <tuple>
-                <int>0</int>
+                <int>1000</int>
               </tuple>
             </value>
         </item>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewProductListTemplate.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewProductListTemplate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fe05370d78b857df0a33c1f04519aba597d4a870
--- /dev/null
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewProductListTemplate.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<div tal:repeat="product python: here.WebSection_getProductList()">\n
+  <div tal:condition="python: product is not None"\n
+       tal:define="shopping_cart    here/SaleOrder_getShoppingCart;\n
+                   site_url         python:here.getWebSiteValue().absolute_url();\n
+                   product_href     python: \'%s/product_module/%s/%s\' % (site_url, product.getId(), \'Resource_viewAsShop\');\n
+                   currency_symbole python: context.SaleOrder_getShoppingCartDefaultCurrency().getShortTitle();"\n
+       tal:attributes="class python: repeat[\'product\'].index % 2 and \'product_list_bis\' or \'product_list\'">\n
+    <div class="product_list_left">\n
+      <a tal:attributes="href product_href">\n
+        <img  tal:attributes="src python: product.getDefaultImageAbsoluteUrl() + \'?display=thumbnail\'" width="75" height="75">\n
+      </a>\n
+      <p tal:content="python: product.getTranslatedTitle()">Title of the product</p>\n
+      <p tal:content="python: \'%s ...\' % product.getDescription()[0:80]">Description of the product</p>\n
+    </div>\n
+    <div class="product_list_right">\n
+      <tal:block tal:define="price product/getPrice">\n
+        <tal:block tal:condition="python: price is not None">\n
+          <span>Price : </span><span tal:content="python: \'%s %s\' % (product.getPrice(), currency_symbole)">0 euros</span><br />\n
+        </tal:block>\n
+        <tal:block tal:condition="python: price is None">\n
+          <span>The price is not setted yet.</span><br />\n
+        </tal:block>\n
+      </tal:block>\n
+        <a tal:attributes="href product_href">More informations</a>\n
+    </div>\n
+  </div>\n
+</div>
+
+]]></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>WebSection_viewProductListTemplate</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewSelectedProductWidget.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewSelectedProductWidget.xml
index cdcff4513de9a19f383736efc18d6ff64b7a1e2b..da456a4d3d5780eeeb82a7c4742a149acbc34516 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewSelectedProductWidget.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSection_viewSelectedProductWidget.xml
@@ -57,12 +57,12 @@
 <div tal:define="site_url python:here.getWebSiteValue().absolute_url();\n
                  current_web_section python:request.get(\'current_web_section\', here);\n
                  shopping_cart       here/SaleOrder_getShoppingCart;\n
-                 currency_symbole    python: context.getPortalObject().restrictedTraverse(shopping_cart.getPriceCurrency()).getShortTitle();"\n
+                 currency_symbole    python: shopping_cart.SaleOrder_getShoppingCartDefaultCurrencySymbole();"\n
      i18n:translate="" i18n:domain="ui" i18n:attributes="title"\n
      title="Sections accessible from here." class="selected-product">\n
-  <tal:block tal:repeat="product python: here.WebSection_getProductList()">\n
+  <tal:block tal:repeat="product python: here.WebSection_getProductList(limit=5)">\n
     <div tal:define="product_href python: \'%s/product_module/%s/%s\' % (site_url, product.getId(), \'Resource_viewAsShop\');\n
-                     price product/getPrice">\n
+                     price python: here.ERP5Site_unrestrictedGetPrice(product)">\n
      <a href="#" tal:attributes="href product_href">\n
        <img tal:condition="python: product.getDefaultImage() is not None"\n
             tal:attributes="src python: product.getDefaultImageAbsoluteUrl() + \'?display=thumbnail\'" width="75" height="75"/>\n
diff --git a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_viewStandardLoginWidgetRenderer.xml b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_viewStandardLoginWidgetRenderer.xml
index 457c1b37288ca8abdca98a0a939c206723490e59..ddd8ee2933ac80a288fe9b3128c68e79e6064aa1 100644
--- a/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_viewStandardLoginWidgetRenderer.xml
+++ b/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_viewStandardLoginWidgetRenderer.xml
@@ -69,7 +69,8 @@
    </tal:block>\n
 \n
   <tal:block tal:condition="not: isAnon"\n
-             tal:define="customer here/SaleOrder_getShoppingCartCustomer;\n
+             tal:define="shopping_cart here/SaleOrder_getShoppingCart;\n
+                         customer shopping_cart/SaleOrder_getShoppingCartCustomer;\n
                          website here/getWebSiteValue">\n
 \n
     <p class="article">\n
diff --git a/bt5/erp5_commerce/bt/revision b/bt5/erp5_commerce/bt/revision
index afbe847262c0a530b87f33d06d3526a72dd1d9a4..b854a292176003137b48b2f2eb6267c6c3085c9b 100644
--- a/bt5/erp5_commerce/bt/revision
+++ b/bt5/erp5_commerce/bt/revision
@@ -1 +1 @@
-126
\ No newline at end of file
+128
\ No newline at end of file
diff --git a/bt5/erp5_commerce/bt/template_extension_id_list b/bt5/erp5_commerce/bt/template_extension_id_list
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ff67809d341ec1503fdae440209e7e6e0c543d2f 100644
--- a/bt5/erp5_commerce/bt/template_extension_id_list
+++ b/bt5/erp5_commerce/bt/template_extension_id_list
@@ -0,0 +1 @@
+Ecommerce
\ No newline at end of file
diff --git a/bt5/erp5_commerce/bt/template_local_role_list b/bt5/erp5_commerce/bt/template_local_role_list
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/bt5/erp5_commerce/bt/template_portal_type_role_list b/bt5/erp5_commerce/bt/template_portal_type_role_list
new file mode 100644
index 0000000000000000000000000000000000000000..cd6830ca6efcd98f27d7827565d5058a05d1558f
--- /dev/null
+++ b/bt5/erp5_commerce/bt/template_portal_type_role_list
@@ -0,0 +1,2 @@
+Person Module
+Sale Order Module
\ No newline at end of file