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="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
\074tal:block metal:define-macro="master"\076\n
\074span id="jump" class="jump" metal:define-macro="jump"\076\n
\074select name="select_jump"\n
onChange="submitAction(this.form,\'Base_doJump\')"\076\n
\074option selected="selected" value=""\n
i18n:translate="" i18n:domain="ui"\076Jump...\074/option\076\n
\074/select\076\n
\074button type="submit" name="Base_doJump:method" title="Jump"\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"\076Jump\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="action" class="action" metal:define-macro="action"\076\n
\074select name="select_action"\n
onChange="submitAction(this.form,\'Base_doAction\')"\076\n
\074option selected="selected" value=""\n
i18n:translate="" i18n:domain="ui"\076Action...\074/option\076\n
\074!-- \074tal:block tal:repeat="content_id here/getVisibleAllowedContentTypeList | nothing"\076\n
\074option tal:attributes="value string:add $content_id"\n
i18n:translate="" i18n:domain="ui"\076Add \074tal:block tal:content="content_id"\n
i18n:name="portal_type" i18n:translate="" i18n:domain="ui" /\076\074/option\076\n
\074/tal:block\076\n
\074tal:block tal:define="document_template_list here/getDocumentTemplateList | nothing"\n
tal:condition="document_template_list"\076\n
\074option disabled="disabled"\076-- \074tal:block i18n:translate="" i18n:domain="ui"\076Templates\074/tal:block\076 --\074/option\076\n
\074tal:block tal:repeat="document_template document_template_list"\076\n
\074option tal:attributes="value string:template ${document_template/getRelativeUrl}"\n
i18n:translate="" i18n:domain="ui"\076Add \074tal:block tal:content="document_template/getTitle"\n
i18n:name="document_template" /\076\074/option\076\n
\074/tal:block\076\n
\074/tal:block\076\n
\n
\074option disabled="disabled"\076-- \074tal:block i18n:translate="" i18n:domain="ui"\076Workflows\074/tal:block\076 --\074/option\076\n
\074tal:block tal:repeat="action actions/workflow"\076\n
\074option tal:content="action/name"\n
tal:attributes="value string:workflow ${action/url}"\n
i18n:translate="" i18n:domain="ui" /\076\n
\074/tal:block\076\n
\074option disabled="disabled"\076-- \074tal:block i18n:translate="" i18n:domain="ui"\076Object\074/tal:block\076 --\074/option\076\n
\074tal:block tal:repeat="action actions/object_action | nothing"\076\n
\074option tal:content="action/name"\n
tal:attributes="value string:object ${action/url}"\n
i18n:translate="" i18n:domain="ui" /\076\n
\074/tal:block\076\n
\074tal:block tal:define="object_view_list actions/object_view|nothing;\n
module_view_list python:[i for i in object_view_list if i[\'id\']==\'module_view\']"\n
tal:condition="module_view_list"\076\n
\074tal:block tal:repeat="action module_view_list"\076\n
\074option tal:content="action/name"\n
tal:attributes="value string:object ${action/url}"\n
i18n:translate="" i18n:domain="ui" /\076\n
\074/tal:block\076\n
\074/tal:block\076--\076\n
\074tal:block tal:replace=\'nothing\'\076\n
\074!-- XXX folder actions is inherited from CMF, but not used in ERP5 (for now) --\076\n
\074!-- \074option disabled="disabled"\076-- \074tal:block i18n:translate="" i18n:domain="ui"\076Folder\074/tal:block\076 --\074/option\076\n
\074tal:block tal:repeat="action actions/folder"\076\n
\074option tal:content="action/name"\n
tal:attributes="value string:folder ${action/url}"\n
i18n:translate="" i18n:domain="ui" /\076\n
\074/tal:block\076--\076\n
\074/tal:block\076\n
\074/select\076\n
\074button type="submit" name="Base_doAction:method" title="Action"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description"\076Action\074/span\076\n
\074/button\076\n
\074/span\076\n
\n
\n
\074span class="tool_buttons" metal:define-macro="tool_buttons"\076\n
\n
\074!-- XXX: exchange_actions seems to be bad condition --\076\n
\074span class="first"\n
tal:define="search_actions actions/object_search | nothing;\n
exchange_actions actions/object_exchange | nothing;\n
report_actions actions/object_report | nothing;\n
button_actions actions/object_button | nothing;\n
fast_input_actions actions/object_fast_input | nothing;\n
sort_actions actions/object_sort | nothing;\n
ui_actions actions/object_ui | nothing;\n
print_actions actions/object_print | nothing;\n
list_mode list_mode | nothing;\n
can_modify_portal_content python: portal.portal_membership.checkPermission(\'Modify portal content\', here)"\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074tal:block tal:condition="list_mode"\076\n
\074button class="cut" type="submit" name="Folder_cut:method" title="Cut"\n
i18n:attributes="title" i18n:domain="ui"\n
tal:condition="can_modify_portal_content"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Cut\074/span\076\n
\074/button\076\n
\074button class="copy" type="submit" name="Folder_copy:method" title="Copy"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Copy\074/span\076\n
\074/button\076\n
\074button class="paste" type="submit" name="Folder_paste:method" title="Paste"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Paste\074/span\076\n
\074/button\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074/tal:block\076\n
\074button tal:condition="print_actions" class="print" type="submit" name="Folder_print:method" title="Print"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Print\074/span\076\n
\074/button\076\n
\074button class="new" type="submit" title="New"\n
tal:attributes="name python: list_mode and \'Folder_create:method\' or \'Base_createNewDocument:method\'"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076New\074/span\076\n
\074/button\076\n
\074button class="clone" type="submit" title="Clone"\n
name="Base_createCloneDocument:method"\n
tal:condition="not: list_mode"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Clone\074/span\076\n
\074/button\076\n
\074button tal:condition="list_mode" class="delete" type="submit" name="Folder_deleteObjectList:method" title="Delete"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Delete\074/span\076\n
\074/button\076\n
\074tal:block tal:condition="not: list_mode"\076\n
\074tal:block tal:condition="request/selection_index | nothing"\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074a class="jump_first" title="First"\n
tal:attributes="href string:portal_selections/viewFirst?$http_parameters"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076First\074/span\076\n
\074/a\076\n
\074a class="jump_previous" title="Previous"\n
tal:attributes="href string:portal_selections/viewPrevious?$http_parameters"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Previous\074/span\076\n
\074/a\076\n
\074a class="list_mode" title="List Mode" tal:attributes="href python: here.portal_selections.getSelectionListUrlFor(request.get(\'selection_name\', None))"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076List Mode\074/span\076\n
\074/a\076\n
\074a class="jump_next" title="Next"\n
tal:attributes="href string:portal_selections/viewNext?$http_parameters"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Next\074/span\076\n
\074/a\076\n
\074a class="jump_last" title="Last"\n
tal:attributes="href string:portal_selections/viewLast?$http_parameters"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Last\074/span\076\n
\074/a\076\n
\074/tal:block\076\n
\074/tal:block\076\n
\074tal:block tal:condition="list_mode"\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074a tal:condition="search_actions" class="find" title="Find"\n
tal:attributes="href python: portal.ERP5Site_renderCustomLink(search_actions[0][\'url\'], http_parameter_list, dialog_category=\'object_search\')"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Find\074/span\076\n
\074/a\076\n
\074button class="show_all" type="submit" name="Folder_show:method" title="Show All"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Show All\074/span\076\n
\074/button\076\n
\074button type="submit" name="Folder_filter:method" title="Filter"\n
tal:attributes="class python: here.portal_selections.getSelectionInvertModeFor(request.get(\'selection_name\', None)) and \'filter_on\' or \'filter\';"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Filter\074/span\076\n
\074/button\076\n
\074a tal:condition="sort_actions" class="sort" title="Sort"\n
tal:attributes="href python: portal.ERP5Site_renderCustomLink(sort_actions[0][\'url\'], http_parameter_list, dialog_category=\'object_sort\')"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Sort\074/span\076\n
\074/a\076\n
\074/tal:block\076\n
\074span tal:condition="exchange_actions | report_actions"\n
class="separator"\076\074!--separator--\076\074/span\076\n
\074button tal:condition="exchange_actions" class="import_export"\n
type="submit" name="Base_doExchange:method" title="Import / Export"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Import / Export\074/span\076\n
\074/button\076\n
\074button tal:condition="report_actions" class="report" type="submit" name="Base_doReport:method" title="Report"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Report\074/span\076\n
\074/button\076\n
\074a tal:condition="fast_input_actions" class="fast_input" title="Fast Input"\n
tal:attributes="href python: portal.ERP5Site_renderCustomLink(fast_input_actions[0][\'url\'], http_parameter_list, dialog_category=\'object_fast_input\')"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Fast Input\074/span\076\n
\074/a\076\n
\074tal:block tal:condition="button_actions"\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074tal:block tal:repeat="button_action button_actions"\076\n
\074a tal:attributes="href python: \'%s%s%s\' % (button_action[\'url\'], \'?\' in button_action[\'url\'] and \'\046amp;\' or \'?\', http_parameters)"\076\n
\074img i18n:attributes="title" i18n:domain="ui"\n
tal:attributes="src button_action/icon;\n
title button_action/name;\n
alt button_action/name" /\076\n
\074/a\076\n
\074/tal:block\076\n
\074/tal:block\076\n
\074tal:block tal:condition="list_mode"\076\n
\074tal:block tal:condition="ui_actions"\076\n
\074span class="separator"\076\074!--separator--\076\074/span\076\n
\074a class="configure" title="Configure"\n
tal:attributes="href python: portal.ERP5Site_renderCustomLink(ui_actions[0][\'url\'], http_parameter_list, dialog_category=\'object_ui\')"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Configure\074/span\076\n
\074/a\076\n
\074/tal:block\076\n
\074/tal:block\076\n
\074/span\076\n
\n
\074span class="second"\076\n
\074a tal:condition="preferred_html_style_contextual_help"\n
class="jump_help" title="Help"\n
tal:attributes="href python: portal.ERP5Site_getHelpUrl(current_action=current_action, current_form_id=current_form_id, workflow_action=request.get(\'workflow_action\'))"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Help\074/span\076\n
\074/a\076\n
\074a tal:condition="preferred_html_style_developper_mode"\n
class="inspect_object" title="Inspect object" href="Base_viewInspectionReport"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Inspect Object\074/span\076\n
\074/a\076\n
\074a tal:condition="here/hasActivity | nothing" class="activity_pending"\n
title="Activity Pending"\n
tal:attributes="href python: portal.portal_membership.checkPermission(\'View management screens\', portal.portal_activities) and \'%s/portal_activities/manageActivities\' % (portal.portal_url()) or \'#\'"\n
i18n:attributes="title" i18n:domain="ui"\076\n
\074span class="image"\076\074/span\076\n
\074span class="description" i18n:translate="" i18n:domain="ui"\076Activity Pending\074/span\076\n
\074/a\076\n
\074/span\076\n
\074/span\076\n
\074p class="clear"\076\074/p\076\n
\n
\074script type="text/javascript"\076\n
//\074![CDATA[\n
gadget = RenderJs.getSelfGadget();\n
gadget.render = ERP5UI.updateContextBox;\n
gadget.render();\n
//]]\076\n
\074/script\076\n
\n
\074/tal:block\076\n
\074/tal:block\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_contextBox</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>
<?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