Bartek Gorny
2010-07-01 10:35:50 UTC
The problem I see with the way status messages are sent to a user is
that the message is passed as GET parameter while redirecting - which
is a bit crude way and has many obvious limitations. I'd suggest to
add to in another option - to record messages in the user's selection
and erase while reading. Then, for backward compatibility, we can add
to it the standard portal_status_message and display a list of
messages. The advantange is that by doing this we can generate a
message on any stage of request processing - list method, interaction
workflow, wherever - and the message will eventually be delivered.
With a bit of extra coding we'd probably be able to produce this kind
of message from activities, if we want.
Here is the complete code:
SCRIPT: ERP5Site_sendUserMessage:
parameters: msg, translate=True
if translate:
msg = context.Base_translateString(msg)
sname = 'user_message_selection'
params = context.portal_selections.getSelectionParamsFor(sname)
message_queue = params.get('message_queue', [])
message_queue.append(msg)
params['message_queue'] = message_queue
context.portal_selections.setSelectionParamsFor(sname, params)
SCRIPT: ERP5Site_getUserMessageList:
sname = 'user_message_selection'
params = context.portal_selections.getSelectionParamsFor(sname)
message_queue = params.get('message_queue', []) or []
params['message_queue'] = []
context.portal_selections.setSelectionParamsFor(sname, params)
return message_queue
SCRIPT: ERP5Site_getMessageList:
message_list = []
psm = context.REQUEST.get('portal_status_message', '')
if psm:
message_list.append(psm)
r = context.ERP5Site_getUserMessageList()
message_list.extend(r)
return message_list
SCRIPT:ERP5Site_renderMessageList
message_list = context.ERP5Site_getMessageList()
if not message_list:
return ''
if len(message_list) == 1:
return message_list[0]
return context.render_message_list(message_list=message_list)
ZPT:render_message_list
<ul>
<li tal:repeat="message options/message_list">
<span tal:replace="message"></span>
</li>
</ul>
And we can put into template_erp5_xhtml_style:
<tal:block tal:define="message here/ERP5Site_renderMessageList">
<div tal:condition="message">
<div tal:content="structure message"
id="transition_message" />
</div>
</tal:block>
Bartek
that the message is passed as GET parameter while redirecting - which
is a bit crude way and has many obvious limitations. I'd suggest to
add to in another option - to record messages in the user's selection
and erase while reading. Then, for backward compatibility, we can add
to it the standard portal_status_message and display a list of
messages. The advantange is that by doing this we can generate a
message on any stage of request processing - list method, interaction
workflow, wherever - and the message will eventually be delivered.
With a bit of extra coding we'd probably be able to produce this kind
of message from activities, if we want.
Here is the complete code:
SCRIPT: ERP5Site_sendUserMessage:
parameters: msg, translate=True
if translate:
msg = context.Base_translateString(msg)
sname = 'user_message_selection'
params = context.portal_selections.getSelectionParamsFor(sname)
message_queue = params.get('message_queue', [])
message_queue.append(msg)
params['message_queue'] = message_queue
context.portal_selections.setSelectionParamsFor(sname, params)
SCRIPT: ERP5Site_getUserMessageList:
sname = 'user_message_selection'
params = context.portal_selections.getSelectionParamsFor(sname)
message_queue = params.get('message_queue', []) or []
params['message_queue'] = []
context.portal_selections.setSelectionParamsFor(sname, params)
return message_queue
SCRIPT: ERP5Site_getMessageList:
message_list = []
psm = context.REQUEST.get('portal_status_message', '')
if psm:
message_list.append(psm)
r = context.ERP5Site_getUserMessageList()
message_list.extend(r)
return message_list
SCRIPT:ERP5Site_renderMessageList
message_list = context.ERP5Site_getMessageList()
if not message_list:
return ''
if len(message_list) == 1:
return message_list[0]
return context.render_message_list(message_list=message_list)
ZPT:render_message_list
<ul>
<li tal:repeat="message options/message_list">
<span tal:replace="message"></span>
</li>
</ul>
And we can put into template_erp5_xhtml_style:
<tal:block tal:define="message here/ERP5Site_renderMessageList">
<div tal:condition="message">
<div tal:content="structure message"
id="transition_message" />
</div>
</tal:block>
Bartek
--
"CPU stepping is when you tile your front porch with extra CPU like
celeron 1ghz units.
typically you spread a thin layer of mortar the cpu's are laid and
then joints filled.
that's it cpu steps all done!"
(dragonsprayer at www.tomshardware.co.uk)
"CPU stepping is when you tile your front porch with extra CPU like
celeron 1ghz units.
typically you spread a thin layer of mortar the cpu's are laid and
then joints filled.
that's it cpu steps all done!"
(dragonsprayer at www.tomshardware.co.uk)