web/views/basecomponents.py
branchstable
changeset 7430 ef5165fa99e0
parent 7428 5338d895b891
child 7437 a1f48d7c8a03
equal deleted inserted replaced
7428:5338d895b891 7430:ef5165fa99e0
    27 
    27 
    28 from logilab.mtconverter import xml_escape
    28 from logilab.mtconverter import xml_escape
    29 from logilab.common.deprecation import class_renamed
    29 from logilab.common.deprecation import class_renamed
    30 from rql import parse
    30 from rql import parse
    31 
    31 
    32 from cubicweb.selectors import (yes, no_cnx, match_form_params, match_context,
    32 from cubicweb.selectors import (yes, match_form_params, match_context,
    33                                 multi_etypes_rset, configuration_values,
    33                                 multi_etypes_rset, configuration_values,
    34                                 anonymous_user, authenticated_user)
    34                                 anonymous_user, authenticated_user)
    35 from cubicweb.schema import display_name
    35 from cubicweb.schema import display_name
    36 from cubicweb.utils import wrap_on_write
    36 from cubicweb.utils import wrap_on_write
    37 from cubicweb.uilib import toggle_action
    37 from cubicweb.uilib import toggle_action
   179 
   179 
   180 class ApplicationMessage(component.Component):
   180 class ApplicationMessage(component.Component):
   181     """display messages given using the __message parameter into a special div
   181     """display messages given using the __message parameter into a special div
   182     section
   182     section
   183     """
   183     """
   184     __select__ = ~no_cnx()
   184     __select__ = yes()
   185     __regid__ = 'applmessages'
   185     __regid__ = 'applmessages'
   186     # don't want user to hide this component using an cwproperty
   186     # don't want user to hide this component using an cwproperty
   187     cw_property_defs = {}
   187     cw_property_defs = {}
   188 
   188 
   189     def call(self):
   189     def call(self, msg=None):
   190         msgs = [msg for msg in (self._cw.get_shared_data('sources_error', pop=True),
   190         if msg is None:
   191                                 self._cw.message) if msg]
   191             msgs = []
       
   192             if self._cw.cnx:
       
   193                 srcmsg = self._cw.get_shared_data('sources_error', pop=True)
       
   194                 msgs.append(srcmsg)
       
   195             reqmsg = self._cw.message # XXX don't call self._cw.message twice
       
   196             if reqmsg:
       
   197                 msgs.append(reqmsg)
       
   198         else:
       
   199             msgs = [msg]
   192         self.w(u'<div id="appMsg" onclick="%s" class="%s">\n' %
   200         self.w(u'<div id="appMsg" onclick="%s" class="%s">\n' %
   193                (toggle_action('appMsg'), (msgs and ' ' or 'hidden')))
   201                (toggle_action('appMsg'), (msgs and ' ' or 'hidden')))
   194         for msg in msgs:
   202         for msg in msgs:
   195             self.w(u'<div class="message" id="%s">%s</div>' % (self.domid, msg))
   203             self.w(u'<div class="message" id="%s">%s</div>' % (self.domid, msg))
   196         self.w(u'</div>')
   204         self.w(u'</div>')