From 3dd4138c880d30800bdb1cd31b4e8dbca4961c50 Mon Sep 17 00:00:00 2001 From: Ivan Tyagov <ivan@nexedi.com> Date: Tue, 30 Nov 2010 13:06:50 +0000 Subject: [PATCH] Use consistent API everywhere. Use some macros (whenever possible). Clean up code. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@40923 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../Base_viewKnowledgePadMacroLibrary.xml | 35 ++++++++++- .../ERP5Site_getActiveKnowledgePadForUser.xml | 59 ++++++++----------- .../ERP5Site_hasUserActivity.xml | 21 ++++--- .../ERP5Site_viewHomeAreaRenderer.xml | 56 +++++------------- .../erp5_knowledge_box.js.xml | 6 +- .../WebSection_viewKnowledgePadColumn.xml | 39 +++--------- bt5/erp5_knowledge_pad/bt/revision | 2 +- 7 files changed, 97 insertions(+), 121 deletions(-) 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 e4689811d8..7921030e38 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 @@ -277,8 +277,41 @@ Please use link (<b>Add gadgets</b>) to prepare it yourself.\n </h4>\n </div>\n +</tal:block>\n +\n +\n +<tal:block metal:define-macro="create_default_pad">\n + <!-- Create (asynch) default pad. -->\n + <div tal:condition="python: not waitForActivitiesOnServer and \n + isUserAllowedToCreateKnowledgePads and\n + createDefaultPadForUser">\n + <div class="wait_block">\n + <h2 i18n:translate="" i18n:domain="ui"> \n + Please wait until your tab is being prepared.\n + </h2>\n + <p i18n:translate="" i18n:domain="ui"> You\'ll be automatically redirected.</p>\n + <script type="text/javascript"\n + tal:content="string: createDefaultPadOnServer(5000, \'ERP5Site_createDefaultKnowledgePadListForUser\',\n + \'${default_pad_group}\', \'view\', \'${mode}\');"/>\n + </div>\n + </div>\n +</tal:block>\n \n -</tal:block> +\n +<tal:block metal:define-macro="create_default_pad_started">\n +\n + <!-- Show message that default pad is being prepared. -->\n + <div tal:condition="python: waitForActivitiesOnServer and isUserAllowedToCreateKnowledgePads">\n + <div class="wait_block">\n + <h2 i18n:translate="" i18n:domain="ui"> \n + Please wait until your home is being updated.</h2>\n + <p i18n:translate="" i18n:domain="ui"> You\'ll be automatically redirected.</p>\n + <script type="text/javascript" \n + tal:content="string: checkForActivitiesOnServer(5000, \'view\', \'${mode}\', \'\');"/>\n + </div>\n + </div>\n +</tal:block>\n + ]]></unicode> </value> </item> diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml index e5bb664462..9b59dc5468 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getActiveKnowledgePadForUser.xml @@ -52,7 +52,10 @@ <key> <string>_body</string> </key> <value> <string encoding="cdata"><![CDATA[ +MARKER = (\'\', None,)\n +visible_state_list = [\'visible\', \'public\']\n isAnon = context.portal_membership.isAnonymousUser()\n +\n if isAnon and len(knowledge_pads)>=1:\n # for anonymous we return the first one found \n return knowledge_pads[0], knowledge_pads\n @@ -61,7 +64,7 @@ if isAnon and len(knowledge_pads)>=1:\n active_pad, knowledge_pads = \\\n context.ERP5Site_getActiveKnowledgePadForUserFromRequest(knowledge_pads,\n \'active_pad_url\')\n -if active_pad is not None and active_pad.getValidationState() in (\'visible\', \'public\',):\n +if active_pad is not None and active_pad.getValidationState() in visible_state_list:\n return active_pad, knowledge_pads\n \n # use info from REQUEST\n @@ -73,47 +76,29 @@ if active_knowledge_pad is not None:\n \n # first filter if we have a custom Pad for the context\n for knowledge_pad in knowledge_pads:\n - if knowledge_pad.getPublicationSectionValue() == context and \\\n - knowledge_pad.getValidationState() in (\'visible\', \'public\',):\n - if (knowledge_pad.getPublicationSectionValue().getPortalType() == \'Web Site\' and \\\n - default_pad_group is None):\n - # return default active front page pad\n + pad_state = knowledge_pad.getValidationState()\n + publication_section = knowledge_pad.getPublicationSectionValue()\n + if publication_section == context and pad_state in visible_state_list:\n + if publication_section.getPortalType() == \'Web Site\' and default_pad_group in MARKER:\n + # ERP5 Web Site front gadget\n return knowledge_pad, knowledge_pads\n - elif (knowledge_pad.getPublicationSectionValue() == context and \\\n - knowledge_pad.getGroup() == default_pad_group):\n + elif publication_section == context and knowledge_pad.getGroup() == default_pad_group:\n # some Web Section can have a customized EXPLICILY "sticked" Pad\n return knowledge_pad, knowledge_pads\n + elif publication_section == None and default_pad_group in MARKER and pad_state in visible_state_list:\n + # ERP5 Site front gadget \n + \n + return knowledge_pad, knowledge_pads \n +\n \n # no customized version found for this context so\n # try finding pad by group\n for knowledge_pad in knowledge_pads:\n if knowledge_pad.getGroup() == default_pad_group and \\\n - knowledge_pad.getValidationState() in (\'visible\', \'public\',):\n + knowledge_pad.getValidationState() in visible_state_list:\n return knowledge_pad, knowledge_pads\n \n return None, knowledge_pads\n -\n -"""\n -# REQUEST can be used to get active pad\n -active_knowledge_pad, knowledge_pads = \\\n - context.ERP5Site_getActiveKnowledgePadForUserFromRequest(knowledge_pads,\n - \'override_catalog\')\n -if active_knowledge_pad is not None:\n - return active_knowledge_pad, knowledge_pads\n -\n -# get visible one\n -for knowledge_pad in knowledge_pads:\n - if knowledge_pad.getValidationState() in (\'visible\', \'public\',):\n - active_knowledge_pad = knowledge_pad\n - break\n -\n -# REQUEST can be used to get active pad\n -if active_knowledge_pad is None:\n - active_knowledge_pad, knowledge_pads = \\\n - context.ERP5Site_getActiveKnowledgePadForUserFromRequest(knowledge_pads,\n - \'active_pad_url\')\n -return active_knowledge_pad, knowledge_pads\n -"""\n ]]></string> </value> @@ -126,7 +111,7 @@ return active_knowledge_pad, knowledge_pads\n </item> <item> <key> <string>_params</string> </key> - <value> <string>knowledge_pads = [], default_pad_group=None</string> </value> + <value> <string>knowledge_pads = [], mode = None, default_pad_group=None</string> </value> </item> <item> <key> <string>errors</string> </key> @@ -146,14 +131,18 @@ return active_knowledge_pad, knowledge_pads\n <dictionary> <item> <key> <string>co_argcount</string> </key> - <value> <int>2</int> </value> + <value> <int>3</int> </value> </item> <item> <key> <string>co_varnames</string> </key> <value> <tuple> <string>knowledge_pads</string> + <string>mode</string> <string>default_pad_group</string> + <string>None</string> + <string>MARKER</string> + <string>visible_state_list</string> <string>_getattr_</string> <string>context</string> <string>isAnon</string> @@ -161,9 +150,10 @@ return active_knowledge_pad, knowledge_pads\n <string>_getitem_</string> <string>_getiter_</string> <string>active_pad</string> - <string>None</string> <string>active_knowledge_pad</string> <string>knowledge_pad</string> + <string>pad_state</string> + <string>publication_section</string> </tuple> </value> </item> @@ -178,6 +168,7 @@ return active_knowledge_pad, knowledge_pads\n <tuple> <list/> <none/> + <none/> </tuple> </value> </item> diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_hasUserActivity.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_hasUserActivity.xml index e98b31786a..cd5d0ca88b 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_hasUserActivity.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_hasUserActivity.xml @@ -2,10 +2,7 @@ <ZopeData> <record id="1" aka="AAAAAAAAAAE="> <pickle> - <tuple> - <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> - <tuple/> - </tuple> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> </pickle> <pickle> <dictionary> @@ -57,9 +54,11 @@ \n if active_knowledge_pad is None and js_call:\n # only for asynchronous checks\n - knowledge_pads = context.ERP5Site_getKnowledgePadListForUser(mode=mode)\n - active_knowledge_pad, knowledge_pads = \\\n - context.ERP5Site_getActiveKnowledgePadForUser(knowledge_pads)\n + kw = dict(mode=mode, \n + default_pad_group=default_pad_group)\n + knowledge_pads = context.ERP5Site_getKnowledgePadListForUser(**kw)\n + active_knowledge_pad, knowledge_pads = context.ERP5Site_getActiveKnowledgePadForUser(\n + knowledge_pads, **kw)\n \n if active_knowledge_pad is None:\n # no pad but it may be reindexed in an activity now, check by tag\n @@ -74,6 +73,7 @@ if active_knowledge_pad is None:\n \n # we have an active pad, check if it has pending activities\n is_pending_create_activities = active_knowledge_pad.hasActivity()\n +\n if js_call:\n return str(is_pending_create_activities)\n return is_pending_create_activities\n @@ -87,7 +87,7 @@ return is_pending_create_activities\n </item> <item> <key> <string>_params</string> </key> - <value> <string>active_knowledge_pad=None, mode=None, default_pad_group=\'\', js_call=0</string> </value> + <value> <string>active_knowledge_pad=None, mode=None, default_pad_group=None, js_call=0</string> </value> </item> <item> <key> <string>errors</string> </key> @@ -121,6 +121,9 @@ return is_pending_create_activities\n <string>context</string> <string>portal</string> <string>None</string> + <string>dict</string> + <string>kw</string> + <string>_apply_</string> <string>knowledge_pads</string> <string>_getiter_</string> <string>tag</string> @@ -140,7 +143,7 @@ return is_pending_create_activities\n <tuple> <none/> <none/> - <string></string> + <none/> <int>0</int> </tuple> </value> diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_viewHomeAreaRenderer.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_viewHomeAreaRenderer.xml index 52309ef458..e485e1a191 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_viewHomeAreaRenderer.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_viewHomeAreaRenderer.xml @@ -39,23 +39,18 @@ <tal:block \n tal:define="mode python: options.get(\'mode\', \'erp5_front\');\n default_pad_group python: options.get(\'default_pad_group\', \'\');\n - knowledge_pads python: here.ERP5Site_getKnowledgePadListForUser(mode=mode);\n - struct python: here.ERP5Site_getActiveKnowledgePadForUser(knowledge_pads);\n + kw python: dict(mode=mode, default_pad_group=default_pad_group);\n + knowledge_pads python: here.ERP5Site_getKnowledgePadListForUser(**kw);\n + struct python: here.ERP5Site_getActiveKnowledgePadForUser(knowledge_pads, **kw);\n global active_knowledge_pad python: struct[0];\n knowledge_pads python: struct[1];\n columns python: options.get(\'columns\', 3);\n - hasUserActivity python: here.ERP5Site_hasUserActivity(active_knowledge_pad,\n - mode=mode,\n - default_pad_group=default_pad_group);\n + hasUserActivity python: here.ERP5Site_hasUserActivity(active_knowledge_pad, **kw);\n isAnon python: here.portal_membership.isAnonymousUser();\n - createDefaultPadForUser python: len(knowledge_pads)==0 and\n - not hasUserActivity;\n - waitForActivitiesOnServer python: active_knowledge_pad is None and\n - hasUserActivity;\n - isUserAllowedToCreateKnowledgePads\n - context/Base_isUserAllowedToUseKnowledgePad;\n - isKnowledgePadTemplateUsed python:\n - request.get(\'is_knowledge_pad_template_used\', 0);\n + createDefaultPadForUser python: len(knowledge_pads)==0 and not hasUserActivity;\n + waitForActivitiesOnServer python: active_knowledge_pad is None and hasUserActivity;\n + isUserAllowedToCreateKnowledgePads context/Base_isUserAllowedToUseKnowledgePad;\n + isKnowledgePadTemplateUsed python: request.get(\'is_knowledge_pad_template_used\', 0);\n isAnonymousKnowledgePadUsed python: request.get(\'use_anonymous_knowledge_pad\', False);\n cancel_url here/absolute_url;">\n \n @@ -68,11 +63,11 @@ <!-- Pad navigation -->\n <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/navigation"/>\n \n - <tal:block tal:condition="not: isAnon"> \n - <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/knowledge_pad_security_check"/> \n - <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"/>\n - <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"/> \n - </tal:block>\n + <tal:block tal:condition="not: isAnon"> \n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/knowledge_pad_security_check"/> \n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"/>\n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"/> \n + </tal:block>\n \n <!-- Render active Knowledge pad -->\n <span tal:condition="active_knowledge_pad"\n @@ -87,31 +82,10 @@ </tal:block>\n \n <!-- Show message that default pad is being prepared. -->\n - <div tal:condition="python: waitForActivitiesOnServer and \n - isUserAllowedToCreateKnowledgePads">\n - <div class="wait_block">\n - <h2 i18n:translate="" i18n:domain="ui"> \n - Please wait until your home is being updated.</h2>\n - <p i18n:translate="" i18n:domain="ui"> You\'ll be automatically redirected.</p>\n - <script type="text/javascript" \n - tal:content="string: checkForActivitiesOnServer(5000, \'view\', \'${mode}\', \'\');"/>\n - </div>\n - </div>\n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/create_default_pad_started"/>\n \n <!-- Create (asynch) default pad. -->\n - <div tal:condition="python: not waitForActivitiesOnServer and \n - isUserAllowedToCreateKnowledgePads and\n - createDefaultPadForUser">\n - <div class="wait_block">\n - <h2 i18n:translate="" i18n:domain="ui"> \n - Please wait until your tab is being prepared.\n - </h2>\n - <p i18n:translate="" i18n:domain="ui"> You\'ll be automatically redirected.</p>\n - <script type="text/javascript"\n - tal:content="string: createDefaultPadOnServer(5000, \'ERP5Site_createDefaultKnowledgePadListForUser\',\n - \'\', \'view\', \'${mode}\');"/>\n - </div>\n - </div>\n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/create_default_pad"/>\n \n </div>\n \n 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 87d371db9d..5c5d4bdc90 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>ts91040808.94</string> </value> + <value> <string>ts91117034.62</string> </value> </item> <item> <key> <string>__name__</string> </key> @@ -151,7 +151,7 @@ function createDefaultPadOnServer(timeout, create_url,\n \'mode\': mode});\n d.addCallbacks(handleServerSuccess, handleServerError);\n function handleServerSuccess(res){\n - checkForActivitiesOnServer(timeout, return_url);};\n + checkForActivitiesOnServer(timeout, return_url, mode, default_pad_group);};\n };\n \n // This function can be used to submit gadget preferences form whenever\n @@ -433,7 +433,7 @@ MochiKit.DOM.addLoadEvent(initialize);\n </item> <item> <key> <string>size</string> </key> - <value> <int>15973</int> </value> + <value> <int>15998</int> </value> </item> <item> <key> <string>title</string> </key> diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad_web/WebSection_viewKnowledgePadColumn.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad_web/WebSection_viewKnowledgePadColumn.xml index 5c8c8ee79d..05e915c642 100644 --- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad_web/WebSection_viewKnowledgePadColumn.xml +++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad_web/WebSection_viewKnowledgePadColumn.xml @@ -39,22 +39,17 @@ <tal:block \n tal:define="mode python: options.get(\'mode\', \'web_section\');\n default_pad_group python: options.get(\'default_pad_group\', None);\n + kw python: dict(mode=mode, default_pad_group=default_pad_group);\n isAnonymousKnowledgePadUsed python: options.get(\'use_anonymous_knowledge_pad\', False);\n pad_column python: options.get(\'pad_column\', 0);\n create_default_pad python: options.get(\'create_default_pad\', False);\n make_security_check python: options.get(\'make_security_check\', False);\n dummy python: request.set(\'is_anonymous_knowledge_pad_used\', isAnonymousKnowledgePadUsed);\n - knowledge_pads python: here.ERP5Site_getKnowledgePadListForUser(\n - mode=mode,\n - default_pad_group=default_pad_group);\n - struct python: here.ERP5Site_getActiveKnowledgePadForUser(knowledge_pads, \n - default_pad_group);\n + knowledge_pads python: here.ERP5Site_getKnowledgePadListForUser(**kw);\n + struct python: here.ERP5Site_getActiveKnowledgePadForUser(knowledge_pads, **kw);\n active_knowledge_pad python: struct[0];\n knowledge_pads python: struct[1];\n - hasUserActivity python: here.ERP5Site_hasUserActivity(\n - active_knowledge_pad,\n - mode=mode,\n - default_pad_group=default_pad_group);\n + hasUserActivity python: here.ERP5Site_hasUserActivity(active_knowledge_pad, **kw);\n isAnon python: context.portal_membership.isAnonymousUser();\n createDefaultPadForUser python: len(knowledge_pads)==0 and\n not hasUserActivity and create_default_pad;\n @@ -76,7 +71,7 @@ not waitForActivitiesOnServer and\n active_knowledge_pad is not None">\n \n - <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"> Disable slot</span>\n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/disable_server_integration"/>\n \n <div class="portal-column" \n tal:attributes="class python: test(isAnon or isAnonymousKnowledgePadUsed, \n @@ -94,28 +89,8 @@ \n </tal:block>\n \n - <div tal:condition="python: not (isAnon or isAnonymousKnowledgePadUsed) and\n - createDefaultPadForUser and \n - isUserAllowedToCreateKnowledgePads">\n -\n - <div class="wait_block">\n - <h6 i18n:translate="" i18n:domain="ui"> \n - Please wait until your area is being prepared.\n - </h6>\n - <p i18n:translate="" i18n:domain="ui"> \n - You\'ll be automatically redirected in few seconds.\n - </p>\n -\n - <script type="text/javascript"\n - tal:content="structure python: \n - \'\'\'createDefaultPadOnServer(5000,\n - \'%s/ERP5Site_createDefaultKnowledgePadListForUser\', \n - \'%s\', \'%s/view\', \'%s\');\'\'\' \n - %(current_web_section_url, default_pad_group, current_web_section_url, mode)">\n - </script>\n - </div>\n -\n - </div>\n + <!-- Create (asynch) default pad. -->\n + <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/create_default_pad"/>\n \n <tal:block tal:condition="make_security_check">\n <span metal:use-macro="container/Base_viewKnowledgePadMacroLibrary/macros/knowledge_pad_security_check"/>\n diff --git a/bt5/erp5_knowledge_pad/bt/revision b/bt5/erp5_knowledge_pad/bt/revision index 0da6a13444..c5ba36b3c3 100644 --- a/bt5/erp5_knowledge_pad/bt/revision +++ b/bt5/erp5_knowledge_pad/bt/revision @@ -1 +1 @@ -630 \ No newline at end of file +632 \ No newline at end of file -- 2.30.9