[gen] Allow an ajax request to return a message, carried as a custom HTTP header and retrieved by appy.js to display a message.

This commit is contained in:
Gaetan Delannay 2014-11-10 13:34:52 +01:00
parent 8d03f6ca9c
commit 4a393e76af
5 changed files with 33 additions and 15 deletions

View file

@ -239,14 +239,16 @@ class ToolWrapper(AbstractWrapper):
# The message that is shown when a user triggers an action.
pxMessage = Px('''
<div var="messages=ztool.consumeMessages()" if="messages"
class=":inPopup and 'messagePopup message' or 'message'">
<div class=":inPopup and 'messagePopup message' or 'message'"
style="display:none" id="appyMessage">
<!-- The icon for closing the message -->
<img src=":url('close')" align=":dright" class="clickable"
onclick="this.parentNode.style.display='none'"/>
<!-- The message content -->
<x>::messages</x>
</div>''')
<div id="appyMessageContent"></div>
</div>
<script type="text/javascript" var="messages=ztool.consumeMessages()"
if="messages">::'showAppyMessage(%s)' % q(messages)</script>''')
# The page footer.
pxFooter = Px('''

View file

@ -632,10 +632,12 @@ class AbstractWrapper(object):
x=resp.setHeader('Content-type', ztool.xhtmlEncoding);
x=resp.setHeader('Expires', 'Thu, 11 Dec 1975 12:05:00 GMT+2');
x=resp.setHeader('Content-Language', lang);
x=resp.setHeader('CacheControl', 'no-cache')">
x=resp.setHeader('Cache-Control', 'no-cache')">
<!-- If an action is defined, execute it on p_zobj or on p_field. -->
<x if="action" var2="x=ztool.executeAjaxAction(action, obj, field)"></x>
<x if="action"
var2="msg=ztool.executeAjaxAction(action, obj, field) or '';
x=resp.setHeader('Appy-Message', msg)"></x>
<!-- Then, call the PX on p_obj or on p_field. -->
<x if="not field">:getattr(obj, px[0])</x>