From 00a76cef8ec9db763d1dbde5631c1807e8199324 Mon Sep 17 00:00:00 2001 From: Ivan Tyagov <ivan@nexedi.com> Date: Mon, 29 Nov 2010 15:08:49 +0000 Subject: [PATCH] Initial work on making switching between gadgets in an asynchronous calls (no page refresh). Work in progress. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@40878 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../Base_viewKnowledgePadMacroLibrary.xml | 7 +- .../KnowledgePad_viewColumnWidget.xml | 7 +- .../KnowledgePad_viewDashboardWidget.xml | 4 +- .../KnowledgePag_getPadAsHTML.xml | 141 ++++++++++++++++++ .../erp5_knowledge_box.js.xml | 20 ++- bt5/erp5_knowledge_pad/bt/revision | 2 +- 6 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePag_getPadAsHTML.xml diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadMacroLibrary.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadMacroLibrary.xml index 3695424251..0e6dc9131c 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadMacroLibrary.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadMacroLibrary.xml @@ -226,8 +226,13 @@ <a tal:attributes="href python:\n \'ERP5Site_toggleActiveKnowledgePad?knowledge_pad_url=%s&mode=%s\'\n %(knowledge_pad.getRelativeUrl(), mode)">\n - <span tal:content="knowledge_pad/getTitle"/>\n + <span tal:content="knowledge_pad/getTitle"/>\n </a>\n +<!-- XXX: instant switch\n + <span tal:attributes="onclick string:loadPadFromServer(\'${knowledge_pad.getRelativeUrl()}\', \'page_wrapper\', \'${mode}\')" \n + tal:content="knowledge_pad/getTitle"/>\n +-->\n +\n </li>\n </tal:block>\n </tal:block>\n diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewColumnWidget.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewColumnWidget.xml index 6190b8234c..2169626e98 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewColumnWidget.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewColumnWidget.xml @@ -36,7 +36,7 @@ <key> <string>_text</string> </key> <value> <unicode encoding="cdata"><![CDATA[ -<tal:block \n +<tal:block\n tal:repeat="box_id python: options[\'section_layout\']"\n tal:define="real_context python: options.get(\'real_context\', None);\n cancel_url python: options.get(\'cancel_url\', None);">\n @@ -55,6 +55,7 @@ view_form_id gadget/getViewFormId;\n render_type gadget/getRenderType;\n is_asynchronous_gadget python: render_type == \'asynchronous\';\n + force_synchronous_gadget_rendering python: request.get(\'force_synchronous_gadget_rendering\', False);\n current_web_section python: context.REQUEST.get(\'current_web_section\',\n here);\n current_web_section python: \n @@ -177,13 +178,13 @@ tal:define="view_form_object python: getattr(real_context, view_form_id);">\n \n <!-- Synchronous Gadget -->\n - <div tal:condition="not: is_asynchronous_gadget"\n + <div tal:condition="python: not is_asynchronous_gadget or force_synchronous_gadget_rendering"\n tal:attributes="id view_form_dom_id"\n class="box_inner_content" \n tal:content="structure python: view_form_object(box=box)"/>\n \n <!-- Asynchronous Gadget -->\n - <tal:block tal:condition="is_asynchronous_gadget">\n + <tal:block tal:condition="python: is_asynchronous_gadget and not force_synchronous_gadget_rendering">\n <div tal:attributes="id view_form_dom_id" \n class="box_inner_content"\n i18n:translate="" \n diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewDashboardWidget.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewDashboardWidget.xml index f6c818276e..dac70f6dc2 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewDashboardWidget.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePad_viewDashboardWidget.xml @@ -41,7 +41,9 @@ real_context python: options.get(\'real_context\', None);\n cancel_url python: options.get(\'cancel_url\', None);\n is_tab_empty python: (len(layout)==1 and len(layout[0])==0) or\n - (len(layout)==3 and len(layout[0]+layout[1]+layout[2])==0) ">\n + (len(layout)==3 and len(layout[0]+layout[1]+layout[2])==0);\n + page_wrapper_id python: options.get(\'page_wrapper_id\', \'page_wrapper\');"\n + tal:attributes="id page_wrapper_id">\n <div tal:condition="is_tab_empty">\n <h3 i18n:translate="" \n i18n:domain="ui"> \n diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePag_getPadAsHTML.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePag_getPadAsHTML.xml new file mode 100644 index 0000000000..52d2e6013a --- /dev/null +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/KnowledgePag_getPadAsHTML.xml @@ -0,0 +1,141 @@ +<?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>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>"""\n + Render an entire PAD plus navigation (XXX)\n + Used to in AJAX calls for instan PAD switching.\n +"""\n +pad = context.restrictedTraverse(pad_relative_url)\n +context.REQUEST.set(\'force_synchronous_gadget_rendering\', 1)\n +html = pad.WebSection_viewDashboardWidget(real_context=context, page_wrapper_id=\'\')\n +#WebSection_viewDashboardWidget\n +#KnowledgePad_viewDashboardWidget\n +# XXX: merge both to KnowledgePad_viewDashboardWidget !\n +# toggle new active pad \n +context.ERP5Site_toggleActiveKnowledgePad(pad_relative_url, mode, redirect=False)\n +context.REQUEST.RESPONSE.setHeader(\'Content-Type\', \'text/html;; charset=utf-8\')\n +\n +print html\n +return printed\n +</string> </value> + </item> + <item> + <key> <string>_code</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>pad_relative_url, mode</string> </value> + </item> + <item> + <key> <string>errors</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>func_code</string> </key> + <value> + <object> + <klass> + <global name="FuncCode" module="Shared.DC.Scripts.Signature"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>co_argcount</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>co_varnames</string> </key> + <value> + <tuple> + <string>pad_relative_url</string> + <string>mode</string> + <string>_print_</string> + <string>_print</string> + <string>_getattr_</string> + <string>context</string> + <string>pad</string> + <string>html</string> + <string>False</string> + </tuple> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>func_defaults</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>KnowledgePag_getPadAsHTML</string> </value> + </item> + <item> + <key> <string>warnings</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/erp5_knowledge_box.js.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/erp5_knowledge_box.js.xml index 0587a73ace..87d371db9d 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/erp5_knowledge_box.js.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/erp5_knowledge_box.js.xml @@ -12,7 +12,7 @@ </item> <item> <key> <string>_EtagSupport__etag</string> </key> - <value> <string>ts91031570.14</string> </value> + <value> <string>ts91040808.94</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -259,6 +259,22 @@ function showAddNewPadPopup(popup_id, input_id){\n // MochiKit.DOM.getElement(\'new_pad_title\').focus();\n }\n \n +function loadPadFromServer(pad_relative_url, wrapper_dom_id, mode){\n + /* Load Pad from server */\n + d = MochiKit.Async.doSimpleXMLHttpRequest(\'A\', \n + {\'pad_relative_url\':pad_relative_url,\n + \'mode\':mode});\n + d.addCallback(handleServerSuccess);\n + function handleServerSuccess(res){\n + response = res.responseText;\n +// removeElement(wrapper_dom_id);\n +// div = document.createElement("div")\n + dom = getElement(wrapper_dom_id);\n + dom.innerHTML = response;\n +// alert(div);\n + }\n +}\n +\n function addPadOnServerOnEnter(event, create_url, mode, cancel_url){\n /* Catch and submit form when ENTER is pressed */\n if(event.keyCode == 13){\n @@ -417,7 +433,7 @@ MochiKit.DOM.addLoadEvent(initialize);\n </item> <item> <key> <string>size</string> </key> - <value> <int>15402</int> </value> + <value> <int>15973</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_knowledge_pad/bt/revision b/bt5/erp5_knowledge_pad/bt/revision index 236c7c706d..823aeb4b44 100644 --- a/bt5/erp5_knowledge_pad/bt/revision +++ b/bt5/erp5_knowledge_pad/bt/revision @@ -1 +1 @@ -623 \ No newline at end of file +624 \ No newline at end of file -- 2.30.9