Ë
    c]j  ã                   ó  — d Z ddlmZ ddl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 ddlmZmZmZ ddlZ G d„ dej>                  «      Z  G d„ de ejB                  «      Z"d„ Z#d„ Z$d„ Z%y)zˆ
This TinyMCE widget was copied and extended from this code by John D'Agostino:
http://code.djangoproject.com/wiki/CustomWidgetsTinyMCE
é    )ÚOrderedDictN)ÚPath)Úforms)Úsettings)Úwidgets)ÚDjangoJSONEncoder)Úflatatt)Úreverse)Úescape)Ú	mark_safe)Úget_languageÚgettextÚ	to_localec                   óN   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zdd„Zd„ Z e	e«      Z
ˆ xZS )	ÚTinyMCEa¥  
    TinyMCE widget. Set settings.TINYMCE_JS_URL to set the location of the
    javascript file. Default is "STATIC_URL + 'tinymce/tinymce.min.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' and 'directionality' parameters by default.
    The first is derived from the current Django language, the second from the
    'content_language' parameter.
    c                 ój   •— t         ‰| �  |«       |xs i }|| _        d| j                  d<   || _        y )Né   Ústrict_loading_mode)ÚsuperÚ__init__Ú	mce_attrsÚcontent_language)Úselfr   Úattrsr   Ú	__class__s       €úF/var/www/zogu/zoguvenv/lib/python3.12/site-packages/tinymce/widgets.pyr   zTinyMCE.__init__+   s7   ø€ Ü‰Ñ˜ÔØ’O ˆ	Ø"ˆŒØ01ˆ�‰Ð,Ñ-Ø 0ˆÕó    c                  ó   — y)NF© )r   Úargss     r   Úuse_required_attributezTinyMCE.use_required_attribute2   s   € àr   c                 óÎ  — t         j                  j                  j                  «       }d|vrt	        «       |d<   |d   dk(  r|d= nt        |d   «      |d<   |j                  t        | j                  xs |j                  dd«      «      «       t         j                  j                  rd|d<   |j                  | j                  «       |j                  d«      sd|d   › �|d<   |S )NÚlanguageÚen_USÚdjangoFileBrowserÚfile_picker_callbackÚselectorú#Úid)Útinymcer   ÚDEFAULT_CONFIGÚcopyÚget_language_from_djangoÚmatch_language_with_tinymceÚupdateÚget_language_configr   ÚgetÚUSE_FILEBROWSERr   )r   r   Ú
mce_configs      r   Úget_mce_configzTinyMCE.get_mce_config6   sÜ   € Ü×%Ñ%×4Ñ4×9Ñ9Ó;ˆ
Ø˜ZÑ'Ü%=Ó%?ˆJ�zÑ"Ø�jÑ! WÒ,Ø˜:Ñ&ä%@ÀÈJÑAWÓ%XˆJ�zÑ"Ø×ÑÜ × 5Ñ 5Ò \¸¿¹È
ÐT[Ó9\Ó]ô	
ô ×Ñ×+Ò+Ø1DˆJÐ-Ñ.Ø×Ñ˜$Ÿ.™.Ô)à�~‰~˜jÔ)Ø'(¨¨t©¨Ð%6ˆJ�zÑ"ØÐr   c                 óˆ  — |€d}| j                  | j                  |«      }||d<   |j                  dd «      €d|d<   n*dj                  |d   j	                  d«      dgz   «      |d<   d|v sJ d«       ‚| j                  |«      }t        j                  |t        ¬«      }t        j                  j                  rP|j                  d	d«      |j                  d
d«      |j                  dd«      dddœ}t        j                  |«      |d<   ||d<   dt        |«      › dt        |«      › d�g}	t        dj                  |	«      «      S )NÚ ÚnameÚclassr*   ú r)   z+TinyMCE widget attributes must contain 'id')ÚclsÚpluginsÚthemeÚadvancedr#   TF)r;   ÚthemesÚ	languagesÚ	diskcacheÚdebugzdata-mce-gz-confzdata-mce-confz	<textareaú>z</textarea>ú
)Úbuild_attrsr   r1   ÚjoinÚsplitr4   ÚjsonÚdumpsr   r*   r   ÚUSE_COMPRESSORr	   r   r   )
r   r7   Úvaluer   ÚrendererÚfinal_attrsr3   Úmce_jsonÚcompressor_configÚhtmls
             r   ÚrenderzTinyMCE.renderI   sB  € Øˆ=ØˆEØ×&Ñ& t§z¡z°5Ó9ˆØ"ˆ�FÑØ�?‰?˜7 DÓ)Ð1Ø#,ˆK˜Ò à#&§8¡8¨K¸Ñ,@×,FÑ,FÀsÓ,KÈyÈkÑ,YÓ#ZˆK˜Ñ Ø�{Ñ"ÐQÐ$QÓQÐ"Ø×(Ñ(¨Ó5ˆ
Ü—:‘:˜jÔ.?Ô@ˆÜ×Ñ×*Ò*à%Ÿ>™>¨)°RÓ8Ø$Ÿ.™.¨°*Ó=Ø'Ÿ^™^¨J¸Ó;Ø!Øñ!Ðô /3¯j©jÐ9JÓ.KˆKÐ*Ñ+Ø'/ˆ�OÑ$ØœG KÓ0Ð1°´6¸%³=°/ÀÐMÐNˆÜ˜Ÿ™ 4›Ó)Ð)r   c                 óh  — d }t         j                  j                  rt        d«      g}nt         j                  j	                  «       g}t         j                  j
                  r|j                  t        d«      «       t         j                  j                  rudt         j                  j                  v r |t         j                  j                  d   z  }dt         j                  j                  v rt         j                  j                  d   }|j                  d«       t        j                  ||¬«      S )Nztinymce-compressorztinymce-filebrowserÚjsÚcsszdjango_tinymce/init_tinymce.js)rS   rR   )
r*   r   rI   r
   Ú
get_js_urlr2   ÚappendÚUSE_EXTRA_MEDIAr   ÚMedia)r   rS   rR   s      r   Ú_mediazTinyMCE._mediab   sâ   € ØˆÜ×Ñ×*Ò*ÜÐ.Ó/Ð0‰Bä×"Ñ"×-Ñ-Ó/Ð0ˆBÜ×Ñ×+Ò+Ø�I‰I”gÐ3Ó4Ô5Ü×Ñ×+Ò+Ø”w×'Ñ'×7Ñ7Ñ7Ø”g×&Ñ&×6Ñ6°tÑ<Ñ<�àœ×(Ñ(×8Ñ8Ñ8Ü×&Ñ&×6Ñ6°uÑ=�Ø
�	‰	Ð2Ô3Ü�{‰{˜s rÔ*Ð*r   )NNN)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r4   rP   rX   ÚpropertyÚmediaÚ__classcell__©r   s   @r   r   r      s-   ø„ ñõ 1òòó&*ò2+ñ" �VÓ„Er   r   c                   ó.   ‡ — e Zd Zˆ fd„Z ee«      Zˆ xZS )ÚAdminTinyMCEc                 óP   •— ddgi}t        j                  |¬«      t        ‰| �  z   S )NÚallz django_tinymce/admin_tinymce.css)rS   )r   rW   r   r^   )r   rS   r   s     €r   rX   zAdminTinyMCE._mediaw   s-   ø€ àÐ6Ð7ð
ˆô �{‰{˜sÔ#¤e¡g¡mÑ3Ð3r   )rY   rZ   r[   rX   r]   r^   r_   r`   s   @r   rb   rb   v   s   ø„ ô4ñ �VÓ„Er   rb   c                  ó<   — t        «       } | �t        | «      } | S d} | S )Nr$   )r   r   )r#   s    r   r-   r-   €   s+   € Ü‹~€HØ&.Ð&:Œy˜Ó"€HØ€Oð AH€HØ€Or   c                 ó”  — | j                  d«      r| S t        t        «      j                  dz  dz  dz  }|j	                  «       D �cg c]  }|j
                  dk(  sŒ|j                  ‘Œ  }}| |v r| S | dd |v r| dd S |D �ci c]  }|dd |“Œ
 }}| dd |v r|| dd    S t        j                  d| › d	�t        «       y
c c}w c c}w )zË
    Language codes in TinyMCE are inconsistent. E.g. Hebrew is he_IL.js, while
    Danish is da.js. So we apply some heuristic to find a language code
    with an existing TinyMCE translation file.
    ÚenÚstaticr*   Úlangsz.jsNé   zNo TinyMCE language found for 'z', defaulting to 'en_US'r$   )
Ú
startswithr   Ú__file__ÚparentÚiterdirÚsuffixÚstemÚwarningsÚwarnÚRuntimeWarning)ÚlangÚtiny_lang_dirÚfile_Ú
tiny_langsÚlgÚtwo_letter_maps         r   r.   r.   †   sé   € ð ‡��tÔØˆäœ“N×)Ñ)¨HÑ4°yÑ@À7ÑJ€MØ*7×*?Ñ*?Ó*AÖ[ ÀUÇ\Á\ÐUZÓEZ�%—*“*Ð[€JÐ[ØˆzÑØˆØˆBˆQ€x�:ÑØ�B�QˆxˆØ+5Ö6 R�b˜˜!�f˜b‘jÐ6€NÐ6ØˆBˆQ€x�>Ñ!Ø˜d 2 A˜hÑ'Ð'Ü‡M�MÐ3°D°6Ð9QÐRÔTbÔcØùò \ùò
 7s   ÁC ÁC ÂCc                 óˆ  — | d d } i }t        «       }t        j                  D ]4  \  }}|d d |vrg ||d d <   ||d d    j                  t	        |«      «       Œ6 g }|j                  «       D ]6  \  }}|| k(  rd}nd}|j                  |› dj                  |«      › d|› �«       Œ8 | t        j                  v rd|d<   |S d|d<   |S )	Nrj   ú+r6   z / ú=ÚrtlÚdirectionalityÚltr)r   r   Ú	LANGUAGESrU   Ú_ÚitemsrE   ÚLANGUAGES_BIDI)r   ÚconfigÚ
lang_namesrt   r7   Úsp_langsÚnamesÚdefaults           r   r0   r0   œ   s   € Ø'¨¨Ð+Ðà€FÜ“€JÜ×(Ñ(ò -‰
ˆˆdØ��ˆ8˜:Ñ%Ø#%ˆJ�t˜B˜Q�xÑ Ø�4˜˜�8Ñ×#Ñ#¤A d£GÕ,ð-ð €HØ!×'Ñ'Ó)ò @‰ˆˆeØÐ#Ò#Ø‰GàˆGØ�‰˜7˜) E§J¡J¨uÓ$5Ð#6°a¸°vÐ>Õ?ð@ð œ8×2Ñ2Ñ2Ø#(ˆÐÑ ð €Mð $)ˆÐÑ à€Mr   )&r\   Úcollectionsr   rG   Úpathlibr   rq   Údjangor   Údjango.confr   Údjango.contrib.adminr   Úadmin_widgetsÚdjango.core.serializers.jsonr   Údjango.forms.utilsr	   Údjango.urlsr
   Údjango.utils.htmlr   Údjango.utils.safestringr   Údjango.utils.translationr   r   r�   r   Útinymce.settingsr*   ÚTextarear   ÚAdminTextareaWidgetrb   r-   r.   r0   r   r   r   ú<module>r˜      so   ðñõ $Û Ý Û å Ý  Ý 9Ý :Ý &Ý Ý $Ý -ß JÑ Jã ôYˆe�n‰nô Yôx�7˜M×=Ñ=ô òòó,r   