[Erp5-report] r38122 ivan - in /erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style: SkinTe...

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Sep 2 12:42:10 CEST 2010


Author: ivan
Date: Thu Sep  2 12:42:10 2010
New Revision: 38122

URL: http://svn.erp5.org?rev=38122&view=rev
Log:
Make universal Listbox_asHTML rendering which uses heavily CSS.

Added:
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml
Modified:
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/change_log
    erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/revision

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml?rev=38122&r1=38121&r2=38122&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml [utf8] Thu Sep  2 12:42:10 2010
@@ -2,10 +2,7 @@
 <ZopeData>
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
-      <tuple>
-        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
-        <tuple/>
-      </tuple>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
     </pickle>
     <pickle>
       <dictionary>
@@ -47,114 +44,475 @@
               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
+              global portal_url_string here/getPortalUrlString;\n
               context_url real_context/absolute_url;\n
               md5_string here/getMD5Checksum;\n
               hide_rows_on_no_search_criterion here/isHideRowsOnNoSearchCriterion;\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
+              global is_domain_tree_supported here/isDomainTreeSupported;\n
+              global is_report_tree_supported here/isReportTreeSupported;\n
+              global is_gadget_mode request/is_gadget_mode | nothing;\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
+              is_web_mode real_context/isWebMode | nothing;\n
               is_dialog_mode request/dialog_mode | nothing;\n
-              list_style python:request.get(\'list_style\', \n
-                selection.getParams().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
+              display_style_list here/getDisplayStyleList;\n
+              list_style here/getListboxDisplayStyle;\n
+              full_text_search_key here/getFullTextSearchKey;\n
+              full_text_search_key_script here/getFullTextSearchKeyScript;\n
+              show_full_text python: full_text_search_key not in (\'\', None) and full_text_search_key_script not in (\'\', None);\n
+              line_list here/query;\n
+              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
+              form_url string:${context_url}/${form_id};\n
+              need_pagination python: total_line > listbox_max_lines;\n
+              show_list_style_selection python: len(display_style_list) > 0;\n
+              show_listbox_tree_mode_selection python: not is_gadget_mode and \n
+                                                       (is_domain_tree_supported or is_report_tree_supported);\n
+              show_list_action_link python: here.field.get_value(\'list_action\');\n
+              page_navigation_mode python: request.get(\'page_navigation_mode\', here.getPageNavigationMode());\n
+              is_slider_mode python: page_navigation_mode in (\'\', \'slider\');\n
+              is_default_listbox_field python: field_id==\'listbox\';">\n
+ \n
+  <!-- Define hidden input.  -->\n
+  <input type="hidden" \n
+         name="list_selection_name" \n
+         value="default" \n
+         tal:attributes="value selection_name" />\n
+  <input type="hidden" \n
+         name="list_selection_name" \n
+         value="default"\n
+         tal:attributes="value selection_name;\n
+                         name string:${field_id}_list_selection_name" />\n
+  <input tal:condition="md5_string" \n
+         type="hidden" \n
+         name="md5_object_uid_list" \n
+         value="checksum" \n
+         tal:attributes="value md5_string" />\n
+  <input tal:condition="form_id" \n
+         type="hidden" \n
+         name="form_id" \n
+         tal:attributes="value form_id" \n
+         tal:replace="nothing"/>\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
+                           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
+             type="hidden" \n
+             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
+<div class="listbox-container">\n
+\n
+  <div class="listbox-tree">\n
+\n
+    <!-- Domain Report Tree mode -->\n
+    <div class="listbox-domain-tree-container" \n
+         tal:condition="is_domain_tree_mode">\n
+      <tal:block tal:define="selected_domain_path here/getSelectedDomainPath">\n
+\n
+        <!-- Select domain node -->\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: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, sort_on=((\'int_index\', \'ASC\'),));\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/getCompactTranslatedTitle">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/getCompactTranslatedTitle">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
+                    i18n:translate="" i18n:domain="ui"/>\n
+          </tal:block>\n
+        </select>\n
+\n
+        <!-- Domain node contents -->\n
+        <table cellpadding="0"\n
+               summary="This table contains the domain tree"\n
+               class="listbox-table-domain-tree"\n
+               tal:attributes="class string:${field_id}-table-domain-tree"\n
+               tal:define="report_tree_list python: here.makeReportTreeList(report_path = selected_domain_path, unfolded_list = selection.getDomainList(), is_report_opened = False, sort_on=((\'int_index\', \'ASC\'),));\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
+            <td colspan="1" \n
+                class="listbox-table-domain-tree-cell"\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
+                 tal:content="report_tree/obj/getCompactTranslatedTitle"/>\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:content="report_tree/obj/getCompactTranslatedTitle"/>\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_asTableStyleHTML/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
+    </div>\n
+  </div>\n
+\n
+  <div class="listbox-content"  \n
+       tal:attributes="class python: test(not is_domain_tree_mode, \'listbox-content maximal-width\', \'listbox-content auto-width\')">\n
+\n
+    <div class="listbox-head">\n
+\n
+      <div class="listbox-head-spacer"></div>\n
+\n
+      <div class="listbox-head-content">\n
+\n
+        <!-- Listbox head (in left) -->\n
+        <div class="listbox-head-title">\n
+\n
+          <!-- List tree mode choice -->\n
+          <div class="listbox-header-box"\n
+               tal:condition="python: show_listbox_tree_mode_selection and not is_web_mode">\n
+            <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/>\n
+          </div>\n
+\n
+          <!-- Listbox title -->\n
+          <div class="listbox-header-box">\n
+            <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_title"/>\n
+          </div>\n
+\n
+          <!-- Number of rows in ERP5 mode -->\n
+          <div class="listbox-header-box"\n
+               tal:condition="python: not is_web_mode">\n
+            <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>\n
+          </div>\n
+\n
+          <!-- List style display mode -->\n
+          <div class="listbox-header-box"\n
+               tal:condition="python: show_list_style_selection and not is_web_mode">\n
+            <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_display_style_selection"/>\n
+          </div>\n
+\n
+        </div>\n
+\n
+      <!-- Listbox nagivation (in right) -->\n
+      <div class="listbox-head-navigation">\n
+\n
+        <!--Show search result in web mode-->\n
+        <div class="listbox-header-box"\n
+             tal:condition="python: is_web_mode">\n
+          <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>\n
+        </div>\n
+\n
+        <!--Page navigation -->\n
+        <div class="listbox-header-box"\n
+             tal:condition="python: need_pagination and not is_web_mode">\n
+          <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"/>\n
+        </div>\n
+\n
+      </div>\n
+\n
+\n
+      </div>\n
+\n
+\n
+    </div>\n
+\n
+    <div class="listbox-body">\n
+      <table class="listbox">      \n
+        <thead>\n
+          <!--Column title -->\n
+          <tr class="listbox-label-line">  \n
+\n
+            <!--Report tree-->\n
+            <th tal:condition="is_report_tree_mode"\n
+                class="listbox-table-report-tree-selection-cell">\n
+              <select name="report_root_url"\n
+                      tal:attributes="onChange string:submitAction(this.form, \'${context_url}/setReportRoot\')">\n
+                <tal:block tal:repeat="c here/getReportRootList">\n
+                  <option value="base_domain"\n
+                          tal:define="path python: c[0]; title python: c[1]"\n
+                          tal:attributes="selected python: path == here.getSelectedReportPath(); value path"\n
+                          tal:content="title" i18n:domain="ui" i18n:translate="">Domain</option>\n
+                </tal:block>\n
+              </select>\n
+            </th>\n
+\n
+            <!-- Anchor cell -->\n
+            <th class="listbox-table-anchor-cell" tal:condition="show_anchor_column">&nbsp;</th>\n
+\n
+            <!-- Select cell -->\n
+            <th tal:condition="python: show_select_column"\n
+                class="listbox-table-select-cell">\n
+           \n
+              <input class="listbox-check-all"\n
+                     type="image"\n
+                     name="checkAll:method" value="1"\n
+                     alt="Check All" title="Check All"\n
+                     tal:attributes="name string:${field_id}_checkAll:method;\n
+                                     src string:${portal_url_string}/images/checkall.png"\n
+                     i18n:domain="ui" i18n:attributes="title" />\n
+              &nbsp;\n
+              <input class="listbox-uncheck-all"\n
+                     type="image" \n
+                     name="uncheckAll:method" value="1"\n
+                     alt="Uncheck All" title="Uncheck All"\n
+                     tal:attributes="src string:${portal_url_string}/images/decheckall.png;\n
+                                     name string:${field_id}_uncheckAll:method;"\n
+                     i18n:domain="ui" i18n:attributes="title" />         \n
+                  \n
+              </th>\n
+\n
+              <!-- Label column row -->\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
+\n
+                  <th tal:condition="sql" class="listbox-table-header-cell"\n
+                      tal:define="bt_class python:  sort_order==\'ascending\' and \'sort-button sort-button-asc\' \n
+                                                    or sort_order == \'descending\' and \'sort-button sort-button-desc\' \n
+                                                    or \'sort-button\';\n
+                                  bt_title python: sort_order==\'ascending\' and \'Ascending Display\'\n
+                                                   or sort_order==\'descending\' and \'Descending Display\'\n
+                                                   or \'Sort\';">                 \n
+                    <!-- Button in normal view -->\n
+                    <button tal:condition="not:is_gadget_mode" \n
+                            type="submit"\n
+                            name="setSelectionQuickSortOrder:method"\n
+                            tal:content="title"\n
+                            tal:attributes="title bt_title;\n
+                                            value string:${field_id}.${sql};\n
+                                            class bt_class;"\n
+                            i18n:domain="ui" i18n:attributes="title" />\n
+\n
+                    <!-- Button in gadget mode -->\n
+                    <button tal:condition="is_gadget_mode" \n
+                            tal:define ="params python: {\'setSelectionQuickSortOrder:method\':field_id+\'.\'+sql};"\n
+                            type="button"  \n
+                            tal:content="title"\n
+                            tal:attributes="title bt_title; \n
+                                            onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id,box,dom_id,params);\n
+                                            class bt_class;"\n
+                            i18n:domain="ui" i18n:attributes="title"/>\n
+                  </th>\n
+\n
+                  <th class="listbox-table-header-cell"\n
+                      tal:condition="not: sql" \n
+                      tal:content="title" \n
+                      i18n:domain="ui" i18n:translate=""/>\n
+\n
+                </tal:block>\n
+              </tal:block>\n
+            </tr>\n
+\n
+            <!--Search column input -->\n
+            <tr tal:condition="python: show_search_line or is_report_tree_mode"\n
+                class="listbox-search-line">\n
+\n
+            <!--Report Tree -->\n
+            <tal:block tal:condition="is_report_tree_mode">\n
+              <th class="listbox-table-report-tree-selection-cell"\n
+                  colspan="1"\n
+                  tal:attributes="colspan python: show_search_line and 1 or (len(here.getSelectedColumnList()) + show_select_column + show_anchor_column + 1)"\n
+                  tal:define="selection_index here/getSelectionIndex;\n
+                              index python: selection_index is not None and \'&amp;selection_index=%s\' % selection_index or \'\';\n
+                              is_report_opened python: int(not here.getSelection().isReportOpened());\n
+                              requested_selection_name here/getRequestedSelectionName;\n
+                              url here/getUrl;\n
+                              report_depth python: selection.getParams().get(\'report_depth\', request.get(\'report_depth\', 0))">\n
+                <tal:block tal:repeat="i python: range(0, 6)">&nbsp;\n
+                  <a href="?selection_name=default&amp;selection_index=0&amp;report_depth:int=0"\n
+                     tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&amp;report_depth:int=${i};\n
+                                     class python: test(i==report_depth, \'selected\', \'\');"\n
+                     tal:content="i"/>\n
+                </tal:block>&nbsp;-&nbsp;\n
+                <a \n
+                  href="?selection_name=default&amp;selection_index=0&amp;is_report_opened:int=0"\n
+                  tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&amp;is_report_opened:int=${is_report_opened}"\n
+                  tal:content="python: is_report_opened and \'Show\' or \'Hide\'"\n
+                  i18n:domain="ui" i18n:translate="">Show</a>\n
+              </th>\n
+            </tal:block>\n
+\n
+            <!--Anchor cell -->\n
+            <th class="listbox-table-anchor-cell" tal:condition="show_anchor_column">&nbsp;</th>\n
+\n
+            <!--Select cell -->\n
+            <th tal:condition="show_select_column"\n
+                class="listbox-table-select-cell">\n
+              <input id="listbox_select" type="image"\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
+            </th>\n
+\n
+            <!-- Real search columns headers -->\n
+            <th class="listbox-table-filter-cell"\n
+                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
+                <!-- Render search field -->\n
+                <tal:block tal:condition="python: search_field is not None"\n
+                           tal:replace="structure python: search_field.render(value=param, key=alias)"/>\n
+\n
+                <tal:block tal:condition="python: search_field is None">\n
+                  <input tal:condition="python: not is_gadget_mode" \n
+                         name="id" size="5" value=""\n
+                         type="text" tal:attributes="name alias; value param"/>\n
+                  <!-- Search for gadget mode -->\n
+                  <input tal:condition="python: is_gadget_mode" \n
+                         tal:define ="params python: {alias:\'this.value\'};"\n
+                         size="8"\n
+                         type="text" \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
+                </tal:block>\n
+              </tal:block>\n
+            </th>\n
+          </tr>\n
+        </thead>\n
+\n
+        <tbody>\n
+\n
+          <!-- Render listbox data-->\n
+          <tal:block tal:condition="line_list"\n
+                     tal:define="checked_uid_set here/getCheckedUidSet">\n
+            <tr tal:repeat="line line_list"  \n
+                tal:attributes="                \n
+                  class python: line.getRowCSSClassName() or \'%s %s\' %(\'%s-data-line-%s\' %(field_id, repeat[\'line\'].index) ,test(repeat[\'line\'].index % 2, \'DataB\', \'DataA\'));">\n
+              \n
+              <tal:block tal:define="render_result line/render">\n
+\n
+                  <!--Report tree column -->\n
+                  <td tal:condition="is_report_tree_mode"\n
+                      class="listbox-table-report-tree-selection-cell"                   \n
+                      tal:define="section_name python: line.getDomainTitle()">\n
+                    <a  tal:condition="section_name"\n
+                        tal:define="method_id python: line.isOpen() and \'foldReport\' or \'unfoldReport\'"\n
+                        tal:attributes="href string:${method_id}?report_url=${line/getDomainUrl}&amp;form_id=${form_id}&amp;list_selection_name=${selection_name};\n
+                                        class python:test(line.isOpen(), \'tree-open\', \'tree-closed\');\n
+                                        style python:\'white-space: nowrap;; margin-left: %spx\' % (line.getDepth() * 15)"\n
+                        tal:content="section_name"/>\n
+                  </td>\n
+\n
+                  <!--Anchor cell -->\n
+                  <td tal:condition="show_anchor_column"\n
+                      class="listbox-table-anchor-cell">\n
+                    <!--Use [0][4] ? :(-->\n
+                    <a href="#" tal:attributes="href python:render_result[0][4]">\n
+                      <img src="document_icon.gif" alt="document" \n
+                           tal:attributes="src string:${portal_url_string}/images/line_clickable.png" />\n
+                    </a>\n
+                  </td>\n
+                              \n
+                  <!--Select cell -->\n
+                  <td tal:condition="show_select_column"\n
+                      class="listbox-table-select-cell">\n
+                    <input tal:condition="python: not line.isSummary()"\n
+                          type="checkbox" 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
+                  </td>\n
+\n
+                  <!-- Data cells -->\n
+                  <tal:block tal:repeat="value render_result">\n
+                    <td class="listbox-table-data-cell"\n
+                        tal:define="html  python: value[0];">\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:replace="structure html"/>\n
+                    </td>\n
+                  </tal:block>\n
+              </tal:block>\n
+            </tr>\n
+            </tal:block>\n
+\n
+            <!-- Hide row on no search criterion-->\n
+            <tr tal:condition="hide_rows_on_no_search_criterion"\n
+                class="listbox_missing_search_criterion">\n
+              <td tal:attributes="colspan python: len(here.getSearchValueList()) + 1">\n
+                <span i18n:translate="" i18n:domain="ui">\n
+                  To display actual content, please fill in one or more search criterion.\n
+                </span>\n
+              </td>\n
+            </tr>\n
+            \n
+            <!-- No results. -->\n
+            <tr tal:condition="python: total_line == 0 and not hide_rows_on_no_search_criterion">\n
+              <td tal:attributes="colspan python: len(here.getSearchValueList()) + 1">\n
+                <span class="listbox_no_result" i18n:translate="" i18n:domain="ui">\n
+                  No result.\n
+                </span>\n
+              </td>\n
+            </tr>\n
+          </tbody>\n
+\n
+          <tfoot>\n
+            <!-- Stats -->\n
+            <tr tal:condition="python:here.showStat() and not hide_rows_on_no_search_criterion" \n
+              id="listbox_stat_line" class="listbox_stat_line"\n
+              tal:attributes="id string:${field_id}_stat_line">\n
+              <td tal:condition="is_report_tree_mode" >&nbsp;</td>\n
+              <td class="listbox-table-anchor-cell" tal:condition="show_anchor_column">&nbsp;</td>\n
+              <td class="listbox-table-select-cell" tal:condition="show_select_column">&nbsp;</td>\n
+              <tal:block tal:repeat="value here/getStatValueList">\n
+                <td align="left"\n
+                  tal:define="original_value python: value[0]; processed_value python: value[1]"\n
+                  tal:attributes="align python: isinstance(original_value, (float, int, long)) and \'right\' or \'left\'"\n
+                  tal:content="structure processed_value" />\n
+              </tal:block>\n
+            </tr>\n
+          </tfoot>\n
+\n
+      </table>\n
+    </div>\n
+\n
+    <div class="listbox-footer">\n
+      \n
+      <!-- List tree mode choice -->\n
+      <div class="listbox-footer-box"\n
+           tal:condition="python: show_listbox_tree_mode_selection and is_web_mode">\n
+        <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/>\n
+      </div>\n
+ \n
+      <!-- List style display mode -->\n
+      <div class="listbox-footer-box"\n
+           tal:condition="python: show_list_style_selection and is_web_mode">\n
+        <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_display_style_selection"/>\n
+      </div>\n
+\n
+      <!-- Full text search -->\n
+      <div class="listbox-footer-box"\n
+           tal:condition="show_full_text">\n
+        <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_full_text_search"/>\n
+      </div>\n
+\n
+      <!--Page navigation in web mode floating in right (slider) or whole width (text) -->\n
+      <div class="listbox-footer-box"\n
+           tal:condition="python: need_pagination and is_web_mode"\n
+           tal:attributes="style python: test(is_slider_mode, \'float:right\', \'width:100%\')">\n
+        <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"/>\n
+      </div>\n
+\n
+    </div>\n
+  </div>\n
+</div>\n
 \n
 </tal:block>\n
+\n
 
 
 ]]></string> </value>

Added: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml?rev=38122&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml (added)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml [utf8] Thu Sep  2 12:42:10 2010
@@ -0,0 +1,193 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </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 class="listbox-tree-mode-selection"\n
+     metal:define-macro="listbox_tree_mode_selection">\n
+\n
+  <!-- Flat List -->\n
+  <input tal:condition="python: is_domain_tree_supported or is_report_tree_supported"\n
+         type="image" \n
+         class="listbox-tree-flat-list-mode"\n
+         title="Flat List" \n
+         name="setFlatListMode:method"\n
+         value="1" \n
+         alt="Flat List"\n
+         tal:attributes="src string:${portal_url_string}/images/text_block.png;"\n
+         i18n:domain="ui" i18n:attributes="title; alt" />\n
+\n
+  <!-- Report Tree -->\n
+  <input tal:condition="python: not is_gadget_mode and is_report_tree_supported"\n
+         type="image" \n
+         class="listbox-tree-report-tree-mode"\n
+         title="Report Tree" \n
+         name="setReportTreeMode:method"\n
+         value="1" \n
+         alt="Report Tree"\n
+         tal:attributes="src string:${portal_url_string}/images/view_tree.png;"\n
+         i18n:domain="ui" i18n:attributes="title; alt" />\n
+\n
+  <!-- Domain Tree -->\n
+  <input tal:condition="python: not is_gadget_mode and is_domain_tree_supported"\n
+         type="image" \n
+         class="listbox-tree-domain-tree-mode"\n
+         title="Domain Tree" \n
+         name="setDomainTreeMode:method"\n
+         value="1" \n
+         alt="Domain Tree"\n
+         tal:attributes="src string:${portal_url_string}/images/view_choose.png;"\n
+         i18n:domain="ui" i18n:attributes="title; alt" />\n
+\n
+</div>\n
+\n
+<div class="listbox-list-style-selection"\n
+     metal:define-macro="listbox_display_style_selection">\n
+\n
+  <span i18n:translate="" i18n:domain="ui">Display:</span>\n
+\n
+  <ul>\n
+    <li tal:repeat="style display_style_list">\n
+      <a tal:condition="is_gadget_mode"\n
+         tal:content="python: style[1]"\n
+         tal:define="params python: {\'list_style\':style[0]}"\n
+         tal:attributes="class python: test(style[0]==list_style, \'selected\',\'\');\n
+                         onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+\'/\'+form_id, box, dom_id, params);"\n
+         i18n:translate="" i18n:domain="ui"/>\n
+\n
+      <a tal:condition="not: is_gadget_mode"\n
+         tal:content="python: style[1]"\n
+         tal:attributes="href python: \'%s?list_style=%s\' % (form_url, style[0]);\n
+                         class python: test(style[0]==list_style, \'selected\',\'\');"\n
+         i18n:translate="" i18n:domain="ui"/>\n
+    </li>\n
+  </ul>\n
+</div>\n
+\n
+\n
+<div class=" listbox-full-text-search"\n
+     metal:define-macro="listbox_full_text_search"\n
+     tal:define="search_text real_context/Base_getSearchText">\n
+\n
+  <tal:block tal:condition="not: is_gadget_mode">\n
+    <!-- Normal mode -->\n
+    <input type="text"\n
+           tal:attributes="value search_text;\n
+                           name full_text_search_key;\n
+                           onkeypress string: submitFormOnEnter(event, this.form, \'${full_text_search_key_script}\');"/>\n
+    <input class="button" \n
+           i18n:domain="ui" i18n:attributes="value"\n
+           value="Search"  type="submit" \n
+           tal:attributes="name string:${full_text_search_key_script}:method"/>\n
+  </tal:block>\n
+  <tal:block tal:condition="is_gadget_mode">\n
+    <!-- Gadget mode -->\n
+    <input tal:define="params python: {\'%s:method\' %full_text_search_key_script:\'\',\'%s\' %full_text_search_key:\'this.value\'};"\n
+           type="text"\n
+           tal:attributes=\'value search_text;\n
+                           name full_text_search_key;\n
+                           onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,box_id,params).replace("\\"this.value\\"","this.value")+ "return false;;}"\'/>\n
+  </tal:block>\n
+\n
+</div>\n
+\n
+<!-- Number of listbox records -->\n
+<div class="listbox-number-of-records"\n
+     metal:define-macro="listbox_number_of_records"\n
+     tal:define="is_default_listbox_field python: field_id==\'listbox\';">\n
+\n
+  <span class="listbox-current-page-start-number"\n
+        tal:content="current_page_start"/> - \n
+  <span class="listbox-current-page-stop-number"\n
+        tal:content="current_page_stop"/> \n
+  <span i18n:translate="" i18n:domain="ui">of</span>\n
+  <span class="listbox-current-page-total-number"\n
+        tal:content="total_line"\n
+        tal:attributes="class python: test(is_default_listbox_field, \'listbox-current-page-total-number\', \'listbox-current-page-total-number %s-current-page-total-number\' %field_id)" />\n
+  <span i18n:translate="" i18n:domain="ui">records</span>\n
+\n
+  <span class="listbox_item_number"\n
+        tal:attributes="class string:${field_id}_item_number"\n
+        tal:condition="show_select_column"\n
+        i18n:translate="" i18n:domain="ui"> - \n
+    <tal:block tal:replace="python: len(here.getCheckedUidList())" i18n:name="number">0</tal:block> items selected\n
+  </span>\n
+\n
+</div>\n
+\n
+<!-- Listbox title -->\n
+<div class="listbox-title"\n
+     metal:define-macro="listbox_title">\n
+\n
+  <a tal:condition="show_list_action_link"\n
+     tal:attributes="class string:${field_id}_title; \n
+                    href here/getListActionUrl">\n
+    <span i18n:translate="" \n
+          i18n:domain="ui" tal:content="here/getTitle" /></a>\n
+  <tal:block tal:condition="not: show_list_action_link">\n
+    <span i18n:translate="" \n
+          i18n:domain="ui" tal:content="here/getTitle" />\n
+  </tal:block>\n
+  <tal:block tal:condition="not: is_web_mode">:</tal:block>\n
+\n
+</div>\n
+\n
+<!-- Listbox navigation -->\n
+<div metal:define-macro="listbox_navigation"\n
+     tal:define="class python: test(is_slider_mode, \'listbox-page-navigation listbox-page-navigation-slider\',\'listbox-page-navigation listbox-page-navigation-text\');"\n
+     tal:attributes="class class">\n
+\n
+    <tal:block tal:condition="is_slider_mode">\n
+      <tal:block metal:use-macro="real_context/page_navigation_render/macros/page_navigation" />\n
+    </tal:block> \n
+     \n
+    <tal:block tal:condition="not: is_slider_mode">\n
+      <tal:block metal:use-macro="real_context/page_navigation_render/macros/text_navigation" />\n
+    </tal:block> \n
+\n
+\n
+</div>
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ListBox_asHTMLLibrary</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Added: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml?rev=38122&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml (added)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml [utf8] Thu Sep  2 12:42:10 2010
@@ -0,0 +1,769 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLDocument" module="OFS.DTMLDocument"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value> <string>http_cache</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>erp5_listbox.css</string> </value>
+        </item>
+        <item>
+            <key> <string>_local_properties</string> </key>
+            <value>
+              <tuple>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>main_border_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>context_bar_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>navigation_bar_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>font_family</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>font_size</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>font_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>dialog_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>dialog_border_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>link_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>link_hover_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>button_description_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>document_border_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>document_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>listbox_label_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>listbox_odd_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>listbox_even_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>tooltip_border_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>tooltip_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>tooltip_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>listbox_hover_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>listbox_stat_background_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>alternate_font_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>group_border_color</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>alternate_font_color</string> </key>
+            <value> <string>#596dab</string> </value>
+        </item>
+        <item>
+            <key> <string>background_color</string> </key>
+            <value> <string>#DAE6F6</string> </value>
+        </item>
+        <item>
+            <key> <string>button_description_color</string> </key>
+            <value> <string>#000</string> </value>
+        </item>
+        <item>
+            <key> <string>context_bar_background_color</string> </key>
+            <value> <string>#BDD0F0</string> </value>
+        </item>
+        <item>
+            <key> <string>dialog_background_color</string> </key>
+            <value> <string>#BDD0F0</string> </value>
+        </item>
+        <item>
+            <key> <string>dialog_border_color</string> </key>
+            <value> <string>#3D5474</string> </value>
+        </item>
+        <item>
+            <key> <string>document_background_color</string> </key>
+            <value> <string>#E3EAFA</string> </value>
+        </item>
+        <item>
+            <key> <string>document_border_color</string> </key>
+            <value> <string>#3D6474</string> </value>
+        </item>
+        <item>
+            <key> <string>font_color</string> </key>
+            <value> <string>#001730</string> </value>
+        </item>
+        <item>
+            <key> <string>font_family</string> </key>
+            <value> <string>Arial, Helvetica, sans-serif</string> </value>
+        </item>
+        <item>
+            <key> <string>font_size</string> </key>
+            <value> <string>12px</string> </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>group_border_color</string> </key>
+            <value> <string>#97B0D1</string> </value>
+        </item>
+        <item>
+            <key> <string>link_color</string> </key>
+            <value> <string>#002e3f</string> </value>
+        </item>
+        <item>
+            <key> <string>link_hover_color</string> </key>
+            <value> <string>#3D6474</string> </value>
+        </item>
+        <item>
+            <key> <string>listbox_even_background_color</string> </key>
+            <value> <string>#DAE6F6</string> </value>
+        </item>
+        <item>
+            <key> <string>listbox_hover_background_color</string> </key>
+            <value> <string>#BDD0F0</string> </value>
+        </item>
+        <item>
+            <key> <string>listbox_label_background_color</string> </key>
+            <value> <string>#C1DAEB</string> </value>
+        </item>
+        <item>
+            <key> <string>listbox_odd_background_color</string> </key>
+            <value> <string>#FFF</string> </value>
+        </item>
+        <item>
+            <key> <string>listbox_stat_background_color</string> </key>
+            <value> <string>#C1DAEB</string> </value>
+        </item>
+        <item>
+            <key> <string>main_border_color</string> </key>
+            <value> <string>#97B0D1</string> </value>
+        </item>
+        <item>
+            <key> <string>navigation_bar_background_color</string> </key>
+            <value> <string>#97B0D1</string> </value>
+        </item>
+        <item>
+            <key> <string>raw</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*\n
+Copyright (c) 2007 Nexedi SA and Contributors. All Rights Reserved.\n
+                   Ivan Tyagov <ivan at nexedi.com>\n
+\n
+This program is Free Software; you can redistribute it and/or\n
+modify it under the terms of the GNU General Public License\n
+as published by the Free Software Foundation; either version 2\n
+of the License, or (at your option) any later version.\n
+\n
+This program is distributed in the hope that it will be useful,\n
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
+GNU General Public License for more details.\n
+\n
+You should have received a copy of the GNU General Public License\n
+along with this program; if not, write to the Free Software\n
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
+*/\n
+\n
+\n
+/* \n
+============================================\n
+Listbox experiment  - IVAN\n
+*/\n
+\n
+/* Search popup fix*/\n
+div.search_popup{\n
+  left:200px;\n
+  position:absolute;\n
+  top:-120px;\n
+  width:250px;\n
+}\n
+\n
+div.listbox-container{\n
+  width: 100%;\n
+  height: auto;\n
+  float:left;\n
+  margin-bottom:5px;\n
+\n
+}\n
+div.listbox-body{\n
+  float:left;\n
+  width: 100%;\n
+}\n
+\n
+div.listbox-tree{\n
+  margin-right: 8px;\n
+  width: auto;\n
+  float: left;\n
+}\n
+\n
+\n
+div.listbox-content{\n
+  float:left;\n
+  width:100%;\n
+}\n
+\n
+div.maximal-width{\n
+  width:100%;\n
+}\n
+\n
+div.float-right{\n
+  float:right;\n
+}\n
+\n
+div.auto-width{\n
+  width:auto;\n
+}\n
+\n
+\n
+div.listbox-head{\n
+  color:#9D968D;\n
+  margin-left:-1px;\n
+}\n
+\n
+div.listbox-head-spacer{\n
+  background:transparent url("images/tab_left_selected.png") no-repeat scroll left top;\n
+  height:36px;\n
+  width:10px;\n
+  float:left;\n
+}\n
+\n
+div.listbox-head-content{\n
+  border-right:1px solid #3D6474;\n
+  border-top:1px solid #3D6474;\n
+  height:25px;\n
+  margin-left:10px;\n
+  padding-top:10px;\n
+  padding-right: 5px;\n
+  width:auto;\n
+  background-color: #e3eafa;\n
+}\n
+\n
+div.listbox-head div.listbox-head-title{\n
+  float:left;\n
+  width:auto;\n
+}\n
+\n
+div.listbox-head div.listbox-head-navigation{\n
+  float:right;\n
+  width:auto;\n
+}\n
+\n
+div.listbox-head div.listbox-head-results{\n
+  float: right; \n
+  width: auto; \n
+  clear: right;\n
+  text-align:right;\n
+}\n
+\n
+div.listbox-tree-mode-selection{\n
+  height: 22px;\n
+  width: auto;\n
+  float: left;\n
+}\n
+\n
+div.listbox-tree-mode-selection input{\n
+  width: auto;\n
+}\n
+\n
+th.listbox-table-report-tree-selection-cell{\n
+  width: 50px; \n
+}\n
+\n
+/* Listbox header */\n
+div.listbox-header-box{\n
+  width: auto;\n
+  float:left;\n
+  padding-right: 5px;\n
+}\n
+\n
+\n
+/* Listbox Footer */\n
+div.listbox-footer{\n
+  float:left;\n
+  width:100%;\n
+  text-align: center; \n
+  background-color: #BDD0F0;\n
+  margin-left:-1px;\n
+}\n
+\n
+div.listbox-footer-box{\n
+  margin-top:3px;\n
+  margin-bottom:3px;\n
+}\n
+\n
+/* Listbox Footer in gadget mode */\n
+div.block div.listbox-footer{\n
+   background-color: transparent;\n
+}\n
+\n
+div.block div.listbox-head-content{\n
+  font-size: 90%;\n
+}\n
+\n
+div.listbox-title,\n
+div.listbox-number-of-records{\n
+  padding-top: 5px;\n
+}\n
+\n
+/* List style selection */\n
+div.listbox-list-style-selection {\n
+  padding-top:1px;\n
+  padding-left: 5px;\n
+}\n
+\n
+div.listbox-list-style-selection span{\n
+  vertical-align:-4px;\n
+}\n
+\n
+div.block div.listbox-list-style-selection span{\n
+  padding-left: 0px;\n
+}\n
+div.listbox-list-style-selection ul{\n
+  display:inline;\n
+  padding-left:0;\n
+  margin: 0;\n
+  vertical-align: -4px;\n
+}\n
+div.listbox-list-style-selection li{\n
+  display: inline;\n
+  margin-left: 0.1em;\n
+}\n
+  \n
+div.listbox-list-style-selection li a{\n
+  cursor: pointer;\n
+}\n
+div.listbox-list-style-selection li a.selected,\n
+.listbox-table-report-tree-selection-cell a.selected,\n
+.listbox-table-domain-tree-cell a.selected,\n
+.listbox-page-navigation-text a.selected{\n
+  font-weight: bold;\n
+}\n
+\n
+/* Listbox full text search bar */\n
+div.listbox-full-text-search {\n
+}\n
+\n
+div.listbox-full-text-search input{\n
+  width: 250px;\n
+}\n
+\n
+div.listbox-full-text-search input.button{\n
+ background-color: #97B0D1;\n
+ border: 0 none;\n
+ color:#000;\n
+ width: auto;\n
+ padding-left: 10px;\n
+ padding-right: 10px;\n
+ cursor: pointer;\n
+\n
+}\n
+\n
+/* Listbox Navigation */\n
+div.listbox-page-navigation input.listbox_set_page, \n
+div.listbox-page-navigation button.listbox_next_page, \n
+div.listbox-page-navigation button.listbox_last_page, \n
+div.listbox-page-navigation button.listbox_first_page, \n
+div.listbox-page-navigation button.listbox_previous_page{\n
+  margin: 0em;\n
+  padding: 0em;\n
+}\n
+\n
+div.listbox-page-navigation button{\n
+  background-color:transparent;\n
+  border: none;\n
+  cursor: pointer;\n
+}\n
+div.listbox-page-navigation button span.image{\n
+  display:block;\n
+  height:22px;\n
+  width:22px;\n
+  background-repeat:no-repeat;\n
+}\n
+\n
+div.listbox-page-navigation button.listbox_first_page span.image {\n
+  background-image:url("images/2leftarrowv.png");\n
+}\n
+div.listbox-page-navigation button.listbox_previous_page span.image {\n
+  background-image:url("images/1leftarrowv.png");\n
+}\n
+\n
+div.listbox-page-navigation button.listbox_next_page span.image {\n
+  background-image:url("images/1rightarrowv.png");\n
+}\n
+\n
+div.listbox-page-navigation button.listbox_last_page span.image {\n
+  background-image:url("images/2rightarrowv.png");\n
+}\n
+\n
+div.listbox-page-navigation-slider{\n
+  width:auto;\n
+  margin:auto;\n
+  padding-right: 0.5em;\n
+  float:right;\n
+}\n
+\n
+div.listbox-page-navigation-slider input{\n
+  max-width: 30px;\n
+}\n
+\n
+div.listbox-page-navigation-text{\n
+  width:100%;\n
+  float:left;\n
+  text-align:center;\n
+}\n
+\n
+div.listbox-page-navigation-text a{\n
+  padding-right: 1px;\n
+  color: #000;\n
+  cursor: pointer;\n
+}\n
+\n
+/* Report tree */\n
+a.tree-closed {\n
+  background:transparent url(\'./images/tree_closed.png\') no-repeat scroll left center;\n
+  padding-left:15px;\n
+}\n
+\n
+a.tree-open {\n
+  background:transparent url(\'./images/tree_open.png\') no-repeat scroll left center;\n
+  padding-left:15px;\n
+  font-weight: bold;\n
+}\n
+\n
+div.listbox-tree select{\n
+/*   max-width:120px; */\n
+}\n
+\n
+/* Table Listbox elements */\n
+\n
+table.listbox{\n
+  border-collapse:collapse;\n
+  width:100%;\n
+  border-color:#3D6474;\n
+  border-style:solid;\n
+  border-width:0 1px 1px;\n
+  margin-bottom: 0em;\n
+}\n
+\n
+table.listbox th,\n
+table.listbox td {\n
+  text-align:left;\n
+  vertical-align: middle;\n
+  border-color:#3D6474;\n
+  border-style:solid;\n
+  border-width:0 1px;\n
+  padding: 0em;\n
+  padding-left:1px;\n
+  padding-right:1px;\n
+  font-weight: normal;\n
+}\n
+\n
+table.listbox tr.listbox-label-line{\n
+  background-color:#C1DAEB;\n
+  color:#001730;\n
+  border-top: 1px solid #3D6474;\n
+}\n
+\n
+table.listbox tr.listbox-search-line th{\n
+  margin: 0em;\n
+  padding: 0em;\n
+  padding-right:5px;\n
+  padding-left:1px;\n
+}\n
+\n
+/* Select columns */\n
+table.listbox tr.listbox-label-line th.listbox-table-select-cell,\n
+table.listbox tr.listbox-search-line th.listbox-table-select-cell,\n
+table.listbox tr td.listbox-table-select-cell{\n
+  width: 50px; \n
+  text-align: center; \n
+  vertical-align: middle;\n
+  padding:0;\n
+  margin:0;\n
+}\n
+\n
+table.listbox tr.listbox-search-line th.listbox-table-filter-cell input{\n
+  width: 100%;\n
+  vertical-align:middle;\n
+}\n
+table.listbox input{\n
+  float:none;\n
+}\n
+\n
+table.listbox th button{\n
+  border-width:0;\n
+  cursor:pointer;\n
+  float:left;\n
+  padding:0 6px 0 0;\n
+  background: transparent;\n
+}\n
+\n
+table.listbox th button.sort-button {\n
+  text-decoration: underline;\n
+  padding-right: 12px;\n
+}\n
+\n
+table.listbox th button.sort-button:hover{\n
+  color: #FFF;\n
+}\n
+\n
+table.listbox th button.sort-button-desc{\n
+  background: url(\'images/1toparrow.png\') no-repeat scroll 100% 50%;\n
+}\n
+\n
+table.listbox th button.sort-button-asc{\n
+  background: url(\'images/1bottomarrow.png\') no-repeat scroll 100% 50%;\n
+}\n
+\n
+\n
+/* in search mode listbox may contain top/ bottom quick search inputs */\n
+div.search-text-listbox{\n
+  text-align: center;\n
+  float:left;\n
+  height:auto; \n
+  margin-bottom:0.5em;\n
+  margin-top:0.5em;\n
+}\n
+\n
+div.search-text-listbox input{\n
+  width: auto;\n
+}
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>ERP5 Listbox CSS</string> </value>
+        </item>
+        <item>
+            <key> <string>tooltip_background_color</string> </key>
+            <value> <string>#FFD</string> </value>
+        </item>
+        <item>
+            <key> <string>tooltip_border_color</string> </key>
+            <value> <string>#000</string> </value>
+        </item>
+        <item>
+            <key> <string>tooltip_color</string> </key>
+            <value> <string>#000</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml?rev=38122&r1=38121&r2=38122&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml [utf8] Thu Sep  2 12:42:10 2010
@@ -2,10 +2,7 @@
 <ZopeData>
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
-      <tuple>
-        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
-        <tuple/>
-      </tuple>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
     </pickle>
     <pickle>
       <dictionary>
@@ -61,7 +58,8 @@
            dummy  python: request.set(\'here\', here);\n
            global css_list  css_list | python:[];\n
            dummy       python:css_list.extend([\'%s/%s\' % (portal_path, x) for x in portal.ERP5Site_getCssRelativeUrlList()]);\n
-           css_list_template css_list_template | python:[\'%s/erp5.css\' % (portal_path,)];\n
+           css_list_template css_list_template | python:[\'%s/erp5.css\' % (portal_path,)\n
+                                                          \'%s/erp5_listbox.css\' % (portal_path, ),];\n
            dummy     python:css_list.extend(css_list_template);\n
            global js_list   js_list | python:[\'%s/erp5_xhtml_appearance.js\' % portal_path];\n
            global js_list python: [\'%s/%s\' % (portal_path, x) for x in portal.ERP5Site_getJavaScriptRelativeUrlList()] + js_list;\n

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/change_log
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/change_log?rev=38122&r1=38121&r2=38122&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/change_log [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/change_log [utf8] Thu Sep  2 12:42:10 2010
@@ -1,3 +1,6 @@
+2010-09-02 ivan
+* Make universal Listbox_asHTML rendering which uses heavily CSS.
+
 2010-07-20 yo
 * Make it easier to override CSS and JavaScript. Now, you can tweak CSS and JavaScript by overriding ERP5Site_getCssRelativeUrlList and ERP5Site_getJavaScriptRelativeUrlList, respectively.
 

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/revision
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/revision?rev=38122&r1=38121&r2=38122&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/revision [utf8] (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_xhtml_style/bt/revision [utf8] Thu Sep  2 12:42:10 2010
@@ -1 +1 @@
-981
\ No newline at end of file
+985
\ No newline at end of file




More information about the Erp5-report mailing list