Commit ff628815 authored by Ivan Tyagov's avatar Ivan Tyagov

Use data provided by ERP5 backend to render client side navigation and context box.

Refactor code and use proper names.
parent 734b4cae
from Products.ERP5Form.ListBox import ListBoxHTMLRenderer
from Products.CMFCore.Expression import getExprContext
def getListBoxRenderer(self, field, REQUEST, render_prefix=None):
""" XXXX"""
return ListBoxHTMLRenderer(self, field, REQUEST, render_prefix)
def execExpression(self, expression):
"""
Allow exec <Products.CMFCore.Expression.Expression object ..> instances from
within restricted environment.
XXX: consider its security impact
"""
econtext = getExprContext(self)
return expression(econtext)
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
"""\n
Return action and modules links for ERP5\'s navigation\n
box.\n
"""\n
from json import dumps\n
\n
portal= context.getPortalObject()\n
actions = context.Base_filterDuplicateActions(portal.portal_actions.listFilteredActionsFor(context))\n
preferred_html_style_developper_mode = portal.portal_preferences.getPreferredHtmlStyleDevelopperMode()\n
\n
\n
# XXX: use client side translation!\n
translate = context.Base_translateString\n
\n
def unLazyActionList(action_list):\n
# convert to plain dict as list items are lazy calculated ActionInfo instances\n
fixed_action_list = []\n
for action in action_list:\n
d = {}\n
for k,v in action.items():\n
if k in [\'url\', \'title\']:\n
if k == \'url\':\n
# escape \'&\' as not possible use it in a JSON string\n
if type(v)!=type(\'s\'):\n
# this is a tales expression so we need to calculate it\n
v = str(context.execExpression(v))\n
d[k] = v\n
fixed_action_list.append(d)\n
return fixed_action_list\n
\n
result = {}\n
result[\'object_jump_list\'] = unLazyActionList(actions[\'object_jump\'])\n
\n
# add links to edit current portal type\n
if preferred_html_style_developper_mode:\n
type_info_list = []\n
type_info = portal.portal_types.getTypeInfo(context)\n
if type_info is not None:\n
type_info_list = [{"title": "-- %s --" %translate("Developer Mode"),\n
"url": ""},\n
{"title": "Edit Portal Type %s" %type_info.getPortalTypeName(),\n
"url": type_info.absolute_url()}]\n
result[\'type_info_list\'] = type_info_list\n
\n
# add links for workflows\n
if portal.portal_workflow.Base_getSourceVisibility():\n
workflow_list = portal.portal_workflow.getWorkflowsFor(context)\n
result[\'workflow_list\'] = []\n
if workflow_list:\n
result[\'workflow_list\'] = [{"title": "-- %s --" %translate("Workflows"),\n
"url": ""}]\n
result[\'workflow_list\'].extend([{"title": x.title,\n
"url": "%s/manage_properties" %x.absolute_url()} for x in workflow_list])\n
# allowed types to add\n
visible_allowed_content_type_list = context.getVisibleAllowedContentTypeList()\n
result[\'visible_allowed_content_type_list\'] = [{"title": "Add %s" %x,\n
"url": "add %s" %x} for x in visible_allowed_content_type_list]\n
\n
result[\'document_template_list\'] = []\n
document_template_list = context.getDocumentTemplateList()\n
if document_template_list:\n
result[\'document_template_list\'] = [{"title": "-- %s --" %translate("Templates"),\n
"url": ""}]\n
result[\'document_template_list\'].extend([{"title": "Add %s" %x,\n
"url": "template %s" %x} for x in document_template_list])\n
\n
# workflow actions\n
object_workflow_action_list = unLazyActionList(actions["workflow"])\n
if object_workflow_action_list:\n
result[\'object_workflow_action_list\'] = [{"title": "-- %s --" %translate("Workflows"),\n
"url": ""}]\n
result[\'object_workflow_action_list\'].extend([{"title": "%s" %x[\'title\'],\n
"url": "workflow %s" %x[\'url\']} for x in object_workflow_action_list])\n
\n
# object actions\n
object_action_list = unLazyActionList(actions["object_action"])\n
if object_action_list:\n
result[\'object_action_list\'] = [{"title": "-- %s --" %translate("Object"),\n
"url": ""}]\n
result[\'object_action_list\'].extend([{"title": "%s" %x[\'title\'],\n
"url": "object %s" %x[\'url\']} for x in object_action_list])\n
\n
# object_view\n
object_view_list = [i for i in actions["object_view"] if i[\'id\']==\'module_view\']\n
object_view_list = unLazyActionList(object_view_list)\n
if object_view_list:\n
result[\'object_view_list\'].extend([{"title": "%s" %x[\'title\'],\n
"url": "object %s" %x[\'url\']} for x in object_view_list])\n
\n
# folder ones\n
folder_action_list = unLazyActionList(actions["folder"])\n
if folder_action_list:\n
result[\'folder_action_list\'] = [{"title": "-- %s --" %translate("Folder"),\n
"url": ""}]\n
result[\'folder_action_list\'].extend([{"title": "%s" %x[\'title\'],\n
"url": "folder %s" %x[\'url\']} for x in object_action_list])\n
\n
return dumps(result)\n
]]></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_getContextBoxActionList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
"""\n
Return action and modules links for ERP5\'s navigation\n
box.\n
"""\n
from json import dumps\n
\n
portal= context.getPortalObject()\n
\n
def unLazyActionList(action_list):\n
# convert to plain dict as list items are lazy calculated ActionInfo instances\n
fixed_action_list = []\n
for action in action_list:\n
d = {}\n
for k,v in action.items():\n
if k in [\'url\', \'title\']:\n
if k == \'url\':\n
# escape \'&\' as not possible use it in a JSON string\n
if type(v)!=type(\'s\'):\n
# this is a tales expression so we need to calculate it\n
v = str(context.execExpression(v))\n
d[k] = v\n
fixed_action_list.append(d)\n
return fixed_action_list\n
\n
result = {}\n
module_list = portal.ERP5Site_getModuleItemList()\n
search_portal_type_list = portal.getPortalDocumentTypeList() + (\'Person\', \'Organisation\',)\n
language_list = portal.Localizer.get_languages_map()\n
actions = portal.portal_actions.listFilteredActionsFor(context)\n
ordered_global_actions = context.getOrderedGlobalActionList(actions[\'global\']);\n
user_actions = actions[\'user\']\n
\n
ordered_global_action_list = unLazyActionList(ordered_global_actions)\n
user_action_list = unLazyActionList(user_actions)\n
\n
result[\'favourite_dict\'] = {"ordered_global_action_list": ordered_global_action_list,\n
"user_action_list": user_action_list\n
}\n
result[\'module_list\'] = module_list\n
result[\'language_list\'] = language_list\n
result[\'search_portal_type_list\'] = [ [x,x] for x in search_portal_type_list]\n
\n
return dumps(result)\n
]]></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_getNavigationBoxActionList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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> <unicode>\074tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal"\n
xmlns:i18n="http://xml.zope.org/namespaces/i18n"\076\n
\074span class="first"\076\n
\074span id="favourites" class="favourites"\076\n
\n
\074select name="select_favorite"\n
onChange="submitAction(this.form,\'Base_doFavorite\')"\076\n
\074option selected="selected" value=""\n
i18n:translate="" i18n:domain="ui"\076My Favourites\074/option\076\n
\074/select\076\n
\n
\074button type="submit" name="Base_doFavorite:method" title="Select Favourite"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description"\n
i18n:translate="" i18n:domain="ui"\076Select Favourite\074/span\076\n
\074/button\076\n
\074/span\076\n
\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\n
\074span id="modules" class="modules"\076\n
\n
\074select name="select_module"\n
onChange="submitAction(this.form,\'Base_doModule\')"\076\n
\n
\074option selected="selected" value="" i18n:translate="" i18n:domain="ui"\076Modules\074/option\076\n
\074/select\076\n
\n
\074button type="submit" name="Base_doModule:method" title="Select Module"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description"\n
i18n:translate="" i18n:domain="ui"\076Select Module\074/span\076\n
\074/button\076\n
\074/span\076\n
\074/span\076\n
\n
\074span class="second"\076\n
\074span id="language" class="language"\076\n
\074select name="select_language"\n
onChange="submitAction(this.form,\'Base_doLanguage\')"\076\n
\n
\074option value=""\n
i18n:translate="" i18n:domain="ui"\076My Language\074/option\076\n
\074/select\076\n
\074button type="submit" name="Base_doLanguage:method" title="Select Language"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description"\n
i18n:translate="" i18n:domain="ui"\076Select Language\074/span\076\n
\074/button\076\n
\074/span\076\n
\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\n
\074span id="search" class="search" tal:define="search_default_text python:here.Base_translateString(\'Search\')"\076\n
\074input type="hidden" name="all_languages" value="1" /\076\n
\074input class="quick_search_field" accesskey="4" \n
type="text" name="field_your_search_text"\n
value="Search" \n
tal:attributes="value string:${search_default_text};\n
onfocus string:if (this.value==\'${search_default_text}\') this.value=\'\';"\n
onfocus="this.value=\'\';"\n
onkeypress="submitFormOnEnter(event, this.form, \'ERP5Site_processAdvancedSearch\');" /\076\n
\n
\074select size="1" class="input" name="field_your_search_portal_type"\076\n
\n
\074option value="" selected="selected" i18n:translate="" i18n:domain="ui"\076Everything\074/option\076\n
\074option value="all" i18n:translate="" i18n:domain="ui"\076All Documents\074/option\076\n
\074/select\076\n
\n
\074button type="submit" name="ERP5Site_processAdvancedSearch:method" title="Search"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description"\n
i18n:translate="" i18n:domain="ui"\076Search\074/span\076\n
\074/button\076\n
\074/span\076\n
\074/span\076\n
\074p class="clear"\076\074/p\076\n
\n
\074/tal:block\076\n
\n
\074script type="text/javascript"\076\n
//\074![CDATA[\n
gadget = RenderJs.getSelfGadget();\n
gadget.render = ERP5UI.updateNavigationBox;\n
gadget.render();\n
//]]\076\n
\074/script\076</unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_navigationBox</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>iso-8859-15</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -51,7 +51,7 @@
\n
<p class="clear"></p>\n
\n
<div data-gadget="gadgets/portal_status_message/gadget"\n
<div data-gadget="ERP5Site_renderPortalStatusMessage"\n
id="portal_status_message"></div>\n
\n
\n
......@@ -69,7 +69,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>status_gadget</string> </value>
<value> <string>ERP5Site_renderBreadcrumb</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from Products.ERP5Type.Cache import CachingMethod\n
\n
navigation_box_render = context.ERP5Site_navigationBox\n
navigation_box_render = CachingMethod(navigation_box_render,\n
("ERP5Site_renderCachedNavigationBox",\n
context.portal_membership.getAuthenticatedMember().getUserName(),\n
context.Localizer.get_selected_language(),\n
context.portal_url(),\n
),cache_factory=\'erp5_ui_short\')\n
return navigation_box_render()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_renderNavigationBox</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -90,7 +90,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget</string> </value>
<value> <string>ERP5Site_renderPortalStatusMessage</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
......
......@@ -37,7 +37,7 @@
<value> <unicode encoding="cdata"><![CDATA[
<tal:block metal:use-macro="here/global_definitions/macros/header_definitions" />\n
<tal:block metal:use-macro="here/context_box_render/macros/master" />
<tal:block metal:use-macro="here/ERP5Site_contextBox/macros/master" />
]]></unicode> </value>
</item>
......
......@@ -2,19 +2,21 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
<global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
<key> <string>_function</string> </key>
<value> <string>execExpression</string> </value>
</item>
<item>
<key> <string>_module</string> </key>
<value> <string>HTML5</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>portal_status_message</string> </value>
<value> <string>execExpression</string> </value>
</item>
<item>
<key> <string>title</string> </key>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts63249775.51</string> </value>
<value> <string>ts63852017.7</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
......@@ -76,6 +76,22 @@ var ERP5Form = ( function () {\n
}\n
});\n
},\n
\n
addOptionTagDictList: function (select_dom, item_list) {\n
/*\n
* Update select like dom element now using dict in this format:\n
* [{\'selected\': True, \'id\': \'en\', \'title\': \'English\'}, \n
* {\'selected\': False, \'id\': \'fr\', \'title\': \'French\'}]\n
*/\n
$.each(item_list, function (index, value){\n
if(value.selected===true) {\n
select_dom.append(\'<option selected value="\' + value.id + \'">\' + value.title + \'</option>\');\n
}\n
else {\n
select_dom.append(\'<option value="\' + value.id + \'">\' + value.title + \'</option>\');\n
}\n
});\n
},\n
\n
BaseInputField: function (field_id, field_dict) {\n
/* HTML based input field */\n
......@@ -451,7 +467,7 @@ var ERP5Form = ( function () {\n
</item>
<item>
<key> <string>size</string> </key>
<value> <int>20620</int> </value>
<value> <int>21463</int> </value>
</item>
<item>
<key> <string>title</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts63864401.96</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>erp5_ui.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>data</string> </key>
<value> <string encoding="cdata"><![CDATA[
// Contains ERP5 UI\'s build javascript code\n
\n
var ERP5UI = ( function () {\n
\n
function addOptionTagDict(dom, list) {\n
$.each(list, function (index,value) {\n
if (value.url!==undefined) {\n
dom.append(\'<option value="\' + value.url + \'">\' + value.title + \'</option>\');\n
}\n
else {\n
dom.append(\'<option disabled="disabled">-- \' + value.title + \' --</option>\');\n
}\n
});\n
}\n
return {\n
\n
updateNavigationBox: function () {\n
/*\n
* Used by navigation_box gadget. Added here to reduce number of .js files.\n
*/\n
$.ajax({\n
url: "ERP5Site_getNavigationBoxActionList",\n
dataType: "json",\n
success: function (data) {\n
var module_dom = $(\'select[name="select_module"]\'),\n
search_type_dom = $(\'select[name="field_your_search_portal_type"]\'),\n
language_dom = $(\'select[name="select_language"]\'),\n
favorite_dom = $(\'select[name="select_favorite"]\');\n
ERP5Form.addOptionTagList(module_dom, data.module_list, "");\n
ERP5Form.addOptionTagList(search_type_dom, data.search_portal_type_list, "");\n
ERP5Form.addOptionTagDictList(language_dom, data.language_list);\n
\n
// add global actions\n
addOptionTagDict(favorite_dom, data.favourite_dict.ordered_global_action_list);\n
// add user action\n
favorite_dom.append(\'<option disabled="disabled">-- User --</option>\');\n
addOptionTagDict(favorite_dom, data.favourite_dict.user_action_list);\n
}\n
});\n
},\n
\n
updateContextBox: function () {\n
/*\n
* Used by context_box gadget. Added here to reduce number of .js files.\n
*/\n
$.ajax({\n
url: "ERP5Site_getContextBoxActionList",\n
dataType: "json",\n
success: function (data) {\n
console.log(data.object_jump);\n
var jump_dom = $(\'select[name="select_jump"]\'),\n
action_dom = $(\'select[name="select_action"]\');\n
addOptionTagDict(jump_dom, data.object_jump_list);\n
addOptionTagDict(jump_dom, data.type_info_list);\n
addOptionTagDict(jump_dom, data.workflow_list);\n
addOptionTagDict(action_dom, data.visible_allowed_content_type_list);\n
addOptionTagDict(action_dom, data.document_template_list);\n
addOptionTagDict(action_dom, data.object_workflow_action_list);\n
addOptionTagDict(action_dom, data.object_action_list);\n
addOptionTagDict(action_dom, data.object_view_list);\n
}\n
});\n
}\n
\n
}} ());\n
\n
\n
\n
]]></string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>2922</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts63271297.53</string> </value>
<value> <string>ts63778282.19</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
......@@ -44,7 +44,7 @@ require.config({\n
}\n
});\n
\n
require(["erp5_xhtml_appearance", "erp5_knowledge_box", "erp5", "erp5_form",\n
require(["erp5_xhtml_appearance", "erp5_knowledge_box", "erp5", "erp5_form", "erp5_ui",\n
"renderjs", "jquery", "jquery-ui", "route", "url",\n
"jquery.jqGrid.src", "grid.locale-en"],\n
function(domReady) {\n
......@@ -70,7 +70,7 @@ require(["erp5_xhtml_appearance", "erp5_knowledge_box", "erp5", "erp5_form",\n
</item>
<item>
<key> <string>size</string> </key>
<value> <int>1513</int> </value>
<value> <int>1524</int> </value>
</item>
<item>
<key> <string>title</string> </key>
......
<?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> <unicode encoding="cdata"><![CDATA[
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal"\n
xmlns:i18n="http://xml.zope.org/namespaces/i18n">\n
<tal:block tal:define="portal here/getPortalObject;\n
actions python:portal.portal_actions.listFilteredActionsFor(here)">\n
<span class="first">\n
<span id="favourites" class="favourites">\n
<select name="select_favorite"\n
onChange="submitAction(this.form,\'Base_doFavorite\')"\n
tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions[\'global\']);\n
user_actions actions/user;">\n
<option selected="selected" value=""\n
i18n:translate="" i18n:domain="ui">My Favourites</option>\n
<tal:block tal:repeat="action ordered_global_actions">\n
<option tal:condition="action/disabled"\n
disabled="disabled">-- <tal:block tal:content="action/title" i18n:translate="" i18n:domain="ui" /> --</option>\n
<tal:block tal:condition="not:action/disabled"\n
tal:define="name python: action.get(\'name\', \'\');\n
index python: name.find(\' (\');">\n
<option tal:condition="python: index &gt;= 0"\n
tal:attributes="value action/url"><tal:block tal:content="python: name[:index]" i18n:translate="" i18n:domain="ui"></tal:block><tal:block tal:replace="python: name[index:]" /></option>\n
<option tal:condition="python: index &lt; 0"\n
tal:attributes="value action/url"\n
tal:content="action/name"\n
i18n:translate="" i18n:domain="ui"></option>\n
</tal:block>\n
</tal:block>\n
<tal:block tal:condition="user_actions">\n
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">User</tal:block> --</option>\n
<option tal:repeat="action user_actions"\n
tal:content="action/name"\n
tal:attributes="value action/url"\n
i18n:translate="" i18n:domain="ui"></option>\n
</tal:block>\n
</select>\n
<button type="submit" name="Base_doFavorite:method" title="Select Favourite"\n
i18n:attributes="title" i18n:domain="ui">\n
<span class="image"></span>\n
<span class="description"\n
i18n:translate="" i18n:domain="ui">Select Favourite</span>\n
</button>\n
</span>\n
<span class="separator"><!--separator--></span>\n
<span id="modules" class="modules">\n
<select name="select_module"\n
onChange="submitAction(this.form,\'Base_doModule\')"\n
tal:define="module_list here/ERP5Site_getModuleItemList;">\n
<option selected="selected" value="" i18n:translate="" i18n:domain="ui">Modules</option>\n
<option tal:repeat="module module_list"\n
tal:attributes="value python: module[1]"\n
tal:content="python: module[0]"\n
tal:omit-tag="nothing" />\n
</select>\n
<button type="submit" name="Base_doModule:method" title="Select Module"\n
i18n:attributes="title" i18n:domain="ui">\n
<span class="image"></span>\n
<span class="description"\n
i18n:translate="" i18n:domain="ui">Select Module</span>\n
</button>\n
</span>\n
</span>\n
<span class="second">\n
<span id="language" class="language">\n
<select name="select_language"\n
tal:define="language_list python:portal.portal_preferences.getPreference(\'preferred_user_interface_language_list\', None)"\n
onChange="submitAction(this.form,\'Base_doLanguage\')">\n
<option value=""\n
i18n:translate="" i18n:domain="ui">My Language</option>\n
<tal:block tal:repeat="language python:portal.Localizer.get_languages_map()">\n
<option \n
tal:condition="python:not language_list or language[\'id\'] in language_list"\n
tal:omit-tag="nothing"\n
tal:attributes="value language/id;\n
selected python: language[\'selected\'] and \'selected\' or nothing;"\n
tal:content="python: here.Localizer.erp5_ui.gettext(language[\'title\'], lang=language[\'id\'])" />\n
</tal:block>\n
</select>\n
<button type="submit" name="Base_doLanguage:method" title="Select Language"\n
i18n:attributes="title" i18n:domain="ui">\n
<span class="image"></span>\n
<span class="description"\n
i18n:translate="" i18n:domain="ui">Select Language</span>\n
</button>\n
</span>\n
<span class="separator"><!--separator--></span>\n
<span id="search" class="search" tal:define="search_default_text python:here.Base_translateString(\'Search\')">\n
<input type="hidden" name="all_languages" value="1" />\n
<input class="quick_search_field" accesskey="4" type="text" name="field_your_search_text"\n
value="Search" tal:attributes="value string:${search_default_text};\n
onfocus string:if (this.value==\'${search_default_text}\') this.value=\'\';"\n
onfocus="this.value=\'\';"\n
onkeypress="submitFormOnEnter(event, this.form, \'ERP5Site_processAdvancedSearch\');" />\n
\n
<select size="1" class="input" name="field_your_search_portal_type">\n
<option value="" selected="selected" i18n:translate="" i18n:domain="ui">Everything</option>\n
<option value="all" i18n:translate="" i18n:domain="ui">All Documents</option>\n
<option tal:repeat="ptype here/getPortalDocumentTypeList"\n
tal:attributes="value ptype"\n
tal:content="python:ptype"\n
i18n:translate="" i18n:domain="ui">Standard Type</option>\n
<option value="Person" i18n:translate="" i18n:domain="ui">Person</option>\n
<option value="Organisation" i18n:translate="" i18n:domain="ui">Organisation</option>\n
</select>\n
\n
<button type="submit" name="ERP5Site_processAdvancedSearch:method" title="Search"\n
i18n:attributes="title" i18n:domain="ui">\n
<span class="image"></span>\n
<span class="description"\n
i18n:translate="" i18n:domain="ui">Search</span>\n
</button>\n
</span>\n
</span>\n
<p class="clear"></p>\n
</tal:block>\n
</tal:block>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>navigation_box_render</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -117,7 +117,7 @@ IDEAS:\n
<div id="bars" class="bars">\n
\n
<div id="main_bar"\n
data-gadget="ERP5Site_renderCachedNavigationBox"></div>\n
data-gadget="ERP5Site_renderNavigationBox"></div>\n
\n
<div id="context_bar" class="context_bar">\n
<tal:block metal:define-slot="context_bar" />\n
......@@ -127,7 +127,7 @@ IDEAS:\n
\n
<div id="status"\n
class="status"\n
data-gadget="status_gadget"></div>\n
data-gadget="ERP5Site_renderBreadcrumb"></div>\n
\n
<div id="master" class="master">\n
<tal:block metal:define-slot="main" />\n
......
......@@ -61,7 +61,6 @@
<tal:block metal:fill-slot="main">\n
\n
<div id="content"\n
data-gadget="gadgets/content/gadget"\n
tal:attributes="data-gadget string:gadgets/tabular_gadget/gadget?object_path=${object_path}&current_form_id=${form_id}"></div>\n
\n
</tal:block>\n
......
21
\ No newline at end of file
22
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment