diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml index b691a8e04151ab40acebfcfa9f75499b9e40b3df..5e05d9512b7d41e3517ac216f6b52b99b26e5bff 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTML.xml @@ -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"> </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"> </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"> </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 + \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 \'&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)"> \n + <a href="?selection_name=default&selection_index=0&report_depth:int=0"\n + tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&report_depth:int=${i};\n + class python: test(i==report_depth, \'selected\', \'\');"\n + tal:content="i"/>\n + </tal:block> - \n + <a \n + href="?selection_name=default&selection_index=0&is_report_opened:int=0"\n + tal:attributes="href string:${url}?selection_name=${requested_selection_name}${index}&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"> </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}&form_id=${form_id}&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" > </td>\n + <td class="listbox-table-anchor-cell" tal:condition="show_anchor_column"> </td>\n + <td class="listbox-table-select-cell" tal:condition="show_select_column"> </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> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1ea196a8b3255fa83078dac7bb8c5ea2418068d --- /dev/null +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ListBox_asHTMLLibrary.xml @@ -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> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml new file mode 100644 index 0000000000000000000000000000000000000000..7533b5536a0cdb9876977982fc983189b27615c9 --- /dev/null +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5_listbox.css.xml @@ -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@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> diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml index e4e76fa827ff59734f6725a3a153056a90470e37..548280753443667d5ebd5d2070c171e9726f4ecf 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml +++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/global_definitions.xml @@ -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 diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log b/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log index f464146b2549782ebaa246fb114b41dd67257f1d..670f7fa8d0e777521ce3c96ed45182a9aafa5ebb 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log +++ b/product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log @@ -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. diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision index 37944e4094bd76b4ad8dfcfa678a7200f201a5be..6f17eede7bafc502753cdda33eb711f901ecfa43 100644 --- a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision +++ b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision @@ -1 +1 @@ -981 \ No newline at end of file +985 \ No newline at end of file