ó
ZËTc           @   s¥   d  Z  d d l Z d d l m Z m Z d d l m Z e e ƒ Z d d l	 m
 Z
 m Z m Z d d l m Z d e f d „  ƒ  YZ e ƒ  Z d	 „  Z d
 „  Z d S(   sL   
Flash messaging system for sending info to the user in a non-obtrusive way
iÿÿÿÿN(   t   responset   request(   t	   getLogger(   t   unicode_textt	   url_quotet   url_unquote(   t   escape_silentt   TGFlashc           B   s’   e  Z d  Z d Z d Z d Z d d d „ Z d d „ Z d „  Z	 d	 „  Z
 e d
 „ Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z RS(   s   
    Flash Message Creator
    sq   <div id="%(container_id)s"><script type="text/javascript">//<![CDATA[
%(js_code)s%(js_call)s
//]]></script></div>sJ   <div id="%(container_id)s"><div class="%(status)s">%(message)s</div></div>s
  if(!window.webflash){webflash=(function(){var j=document;var k=j.cookie;var f=null;var e=false;var g=null;var c=/msie|MSIE/.test(navigator.userAgent);var a=function(m){return j.createTextNode(m.message)};var l=function(n,m){};var b=function(o,m){var n=m;if(typeof(o)=="string"){n=window[o]}else{if(o){n=o}}return n};var h=function(){var p=k.indexOf(f+"=");if(p<0){return null}var o=p+f.length+1;var m=k.indexOf(";",o);if(m==-1){m=k.length}var n=k.substring(o,m);j.cookie=f+"=; expires=Fri, 02-Jan-1970 00:00:00 GMT; path=/";return webflash.lj(unescape(n))};var i=function(){if(e){return}e=true;var p=h();if(p!==null){var m=j.getElementById(g);var n=j.createElement("div");if(p.status){n.setAttribute(c?"className":"class",p.status)}var o=a(p);n.appendChild(o);m.style.display="block";if(p.delay){setTimeout(function(){m.style.display="none"},p.delay)}m.appendChild(n);l(p,m)}};var d=function(){if(!c){var m="DOMContentLoaded";j.addEventListener(m,function(){j.removeEventListener(m,arguments.callee,false);i()},false);window.addEventListener("load",i,false)}else{if(c){var m="onreadystatechange";j.attachEvent(m,function(){j.detachEvent(m,arguments.callee);i()});if(j.documentElement.doScroll&&!frameElement){(function(){if(e){return}try{j.documentElement.doScroll("left")}catch(n){setTimeout(arguments.callee,0);return}i()})()}window.attachEvent("load",i)}}};return function(m){f=m.name||"webflash";g=m.id||"webflash";l=b(m.on_display,l);a=b(m.create_node,a);return{payload:h,render:d}}})();webflash.lj=function(s){var r;eval("r="+s);return r}};t   webflasht   okc         C   s   | |  _  | |  _ d  S(   N(   t   default_statust   cookie_name(   t   selfR   R
   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt   __init__3   s    	c         K   s—   t  | ƒ } |  j d | d | p' |  j |  } t d  k	 rL | t j d <n  t j ƒ  } | j |  j	 | ƒ t
 | j d ƒ d k r“ t d ƒ ‚ n  d  S(   Nt   messaget   statuss   webflash.payloads
   Set-Cookiei   s-   Flash value is too long (cookie would be >4k)(   R   t   prepare_payloadR
   R   t   Nonet   environR    t   _current_objt
   set_cookieR   t   lent   headerst
   ValueError(   R   R   R   t   extra_payloadt   payloadt   resp(    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt   __call__7   s    	c         K   s   t  t j | ƒ ƒ S(   N(   R   t   jsont   dumps(   R   t   data(    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR   I   s    c         C   s)   d i t  j i | d 6|  j d 6ƒ d 6S(   Ns   webflash(%(options)s).render();t   idt   namet   options(   R   R   R   (   R   t   container_id(    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt   js_callL   s    c         C   s$   | r |  j  | ƒ S|  j | ƒ Sd  S(   N(   t   _render_js_versiont   _render_static_version(   R   R"   t   use_js(    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt   renderP   s    c         C   sG   |  j  ƒ  } | s d St | j d d ƒ ƒ | d <| | d <|  j | S(   Nt    R   R"   (   t   pop_payloadt   escapet   gett   static_template(   R   R"   R   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR%   V   s    
c         C   s,   |  j  i | d 6|  j d 6|  j | ƒ d 6S(   NR"   t   js_codeR#   (   t   templateR-   R#   (   R   R"   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR$   ^   s    
c         C   s™   t  j ƒ  } | j j d i  ƒ } | sB | j j |  j i  ƒ } n  | r t j t | ƒ ƒ } d | j k r t	 j
 |  j ƒ t | j d <q n  | p˜ i  S(   Ns   webflash.payloads   webflash.deleted_cookies   webflash.delete_cookie(   R   R   R   R+   t   cookiesR   R   t   loadsR   R    t   delete_cookiet   True(   R   t   reqR   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR)   c   s    c         C   s   |  j  ƒ  j d ƒ S(   NR   (   R)   R+   (   R   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR   q   s    c         C   s   |  j  ƒ  j d ƒ p |  j S(   NR   (   R)   R+   R
   (   R   (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR   u   s    N(   t   __name__t
   __module__t   __doc__R.   R,   R-   R   R   R   R   R#   R2   R'   R%   R$   R)   t   propertyR   R   (    (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyR      s   						c           C   s   t  j S(   si   Get the message previously set by calling flash().

    Additionally removes the old flash message.

    (   t   flashR   (    (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt	   get_flash~   s    c           C   s   t  j S(   sg   Get the status of the last flash message.

    Additionally removes the old flash message status.

    (   R8   R   (    (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt
   get_status‡   s    (   R6   R   t   tgR    R   t   loggingR   R4   t   logt
   tg._compatR   R   R   t
   markupsafeR   R*   t   objectR   R8   R9   R:   (    (    (    sf   /afs/athena.mit.edu/user/x/a/xavid/lib/python2.7/site-packages/TurboGears2-2.3.3-py2.7.egg/tg/flash.pyt   <module>   s   j			