ó
¹9—^c           @  sA  d  Z  d d l m Z d d l m Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z m Z y d d l m Z Wn! e k
 rï d d l m Z n Xd d l Z d e j f d „  ƒ  YZ  d e  e j! f d „  ƒ  YZ" d d „ Z$ d S(   uˆ   
This TinyMCE widget was copied and extended from this code by John D'Agostino:
http://code.djangoproject.com/wiki/CustomWidgetsTinyMCE
iÿÿÿÿ(   t   unicode_literals(   t   OrderedDictN(   t   forms(   t   settings(   t   widgets(   t   flatatt(   t
   force_text(   t   escape(   t	   mark_safe(   t   get_languaget   ugettext(   t   reverset   TinyMCEc           B  sV   e  Z d  Z d d d d „ Z d „  Z d „  Z d d d „ Z d „  Z e	 e ƒ Z
 RS(   uÃ  
    TinyMCE widget. Set settings.TINYMCE_JS_URL to set the location of the
    javascript file. Default is "MEDIA_URL + 'js/tiny_mce/tiny_mce.js'".
    You can customize the configuration with the mce_attrs argument to the
    constructor.

    In addition to the standard configuration you can set the
    'content_language' parameter. It takes the value of the 'language'
    parameter by default.

    In addition to the default settings from settings.TINYMCE_DEFAULT_CONFIG,
    this widget sets the 'language', 'directionality' and
    'spellchecker_languages' parameters by default. The first is derived from
    the current Django language, the others from the 'content_language'
    parameter.
    c         C  s…   t  t |  ƒ j | ƒ | p i  } | |  _ d |  j k rJ d |  j d <n  d |  j d <| d  k rx | j d d  ƒ } n  | |  _ d  S(   Nu   modeu   exacti   u   strict_loading_modeu   language(   t   superR   t   __init__t	   mce_attrst   Nonet   gett   content_language(   t   selfR   t   attrsR   (    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyR   /   s    	c         G  s   t  S(   N(   t   False(   R   t   args(    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyt   use_required_attribute:   s    c         C  sv   t  j j j ƒ  } | j t |  j ƒ ƒ t  j j rA d | d <n  | j |  j ƒ | d d k rr | d | d <n  | S(   Nu   djangoFileBrowseru   file_browser_callbacku   modeu   exactu   idu   elements(	   t   tinymceR   t   DEFAULT_CONFIGt   copyt   updatet   get_language_configR   t   USE_FILEBROWSERR   (   R   R   t
   mce_config(    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyt   get_mce_config>   s    c   
      C  so  | d  k r d } n  t | ƒ } |  j |  j | ƒ } | | d <| j d d  ƒ d  k re d | d <n' d j | d j d ƒ d g ƒ | d <d | k s¤ t d ƒ ‚ |  j | ƒ } t	 j
 | ƒ } t j j r1i | j d d ƒ d 6| j d	 d
 ƒ d 6| j d d ƒ d 6t d 6t d 6} t	 j
 | ƒ | d <n  | | d <d j t | ƒ t | ƒ ƒ g }	 t d j |	 ƒ ƒ S(   Nu    u   nameu   classu   tinymceu    u   idu+   TinyMCE widget attributes must contain 'id'u   pluginsu   themeu   advancedu   themesu   languageu	   languagesu	   diskcacheu   debugu   data-mce-gz-confu   data-mce-confu   <textarea{!s}>{!s}</textarea>u   
(   R   R   t   build_attrsR   R   t   joint   splitt   AssertionErrorR   t   jsont   dumpsR   R   t   USE_COMPRESSORt   TrueR   t   formatR   R   R   (
   R   t   namet   valueR   t   renderert   final_attrsR   t   mce_jsont   compressor_configt   html(    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyt   renderH   s,    	
'

!c         C  sñ   d  } t j j r$ t d ƒ g } n t j j g } t j j rU | j t d ƒ ƒ n  t j j r² d t j j k rŠ | t j j d 7} n  d t j j k r² t j j d } q² n  t j j	 rÎ | j d ƒ n  | j d ƒ t
 j d | d | ƒ S(	   Nu   tinymce-compressoru   tinymce-filebrowseru   jsu   cssu"   django_tinymce/jquery-1.9.1.min.jsu   django_tinymce/init_tinymce.jst   csst   js(   R   R   R   R&   R   t   JS_URLR   t   appendt   USE_EXTRA_MEDIAt   INCLUDE_JQUERYR   t   Media(   R   R1   R2   (    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyt   _mediab   s    N(   t   __name__t
   __module__t   __doc__R   R   R   R   R0   R8   t   propertyt   media(    (    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyR      s   		
	t   AdminTinyMCEc           B  s   e  Z RS(    (   R9   R:   (    (    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyR>   w   s   c   	      C  sl  t  ƒ  } | d  k	 r | d  n d } |  r8 |  d  }  n | }  i  } | | d <t ƒ  } xS t j D]H \ } } | d  | k rŽ g  | | d  <n  | | d  j t | ƒ ƒ qa Wg  } xZ | j ƒ  D]L \ } } | |  k rá d } n d } | j d j | d j	 | ƒ | ƒ ƒ qÀ Wd j	 | ƒ | d	 <|  t j
 k r?d
 | d <n
 d | d <t j j rht d ƒ | d <n  | S(   Ni   u   enu   languageu   +u    u   {!s}{!s}={!s}u    / u   ,u   spellchecker_languagesu   rtlu   directionalityu   ltru   tinymce-spellchecku   spellchecker_rpc_url(   R	   R   R   R   t	   LANGUAGESR4   t   _t   itemsR(   R!   t   LANGUAGES_BIDIR   t   USE_SPELLCHECKERR   (	   R   t   languaget   configt
   lang_namest   langR)   t   sp_langst   namest   default(    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyR   {   s2    	
		)
(%   R;   t
   __future__R    t   collectionsR   R$   t   djangoR   t   django.confR   t   django.contrib.adminR   t   admin_widgetst   django.forms.utilsR   t   django.utils.encodingR   t   django.utils.htmlR   t   django.utils.safestringR   t   django.utils.translationR	   R
   R@   t   django.urlsR   t   ImportErrort   django.core.urlresolverst   tinymce.settingsR   t   TextareaR   t   AdminTextareaWidgetR>   R   R   (    (    (    s1   /tmp/pip-unpacked-wheel-51oq52/tinymce/widgets.pyt   <module>   s&   Y