o
    hx/                     @   s   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 G dd dZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZdd ZdS )    )warn)render_to_string)gettext_lazy)hooks)accepts_kwarg)RemovedInWagtail70Warningc                   @   s    e Zd ZdZdd Zdd ZdS )BaseItemz#wagtailadmin/userbar/item_base.htmlc                 C   s
   | |dS )Nselfrequest r	   r   r   U/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/userbar.pyget_context_data      
zBaseItem.get_context_datac                 C   s   t | j| ||dS )N)r   )r   templater   r	   r   r   r   render   s   zBaseItem.renderN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                       s    e Zd ZdZ fddZ  ZS )	AdminItemz$wagtailadmin/userbar/item_admin.htmlc                       |j dsdS t |S Nwagtailadmin.access_admin userhas_permsuperr   r	   	__class__r   r   r         zAdminItem.render)r   r   r   r   r   __classcell__r   r   r   r   r      s    r   c                       sh  e Zd ZdZdZdgZg ZddgigZg dZi Z	ddd	d
gdgddgZ
dddidgZededdededdededdededdededdededdededdededdededdd	Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z fd6d7Z fd8d9Z  ZS ):AccessibilityItemz3A userbar item that runs the accessibility checker.z,wagtailadmin/userbar/item_accessibility.htmlbodyfromShadowDOMzwagtail-userbar)	zbutton-namezempty-headingzempty-table-headerzframe-titlezheading-orderzinput-button-namez	link-namezp-as-headingalt-text-qualityr%   seriouszimg[alt]zbest-practicezcheck-image-alt-textT)idimpactselectortagsanyenabledpatternz%\.(avif|gif|jpg|jpeg|png|svg|webp)$|_)r'   optionszButton text is emptyz+Use meaningful text for screen reader users)
error_name	help_textzEmpty heading foundzTable header text is emptyzEmpty frame title foundz.Use a meaningful title for screen reader userszIncorrect heading hierarchyzAvoid skipping levelszInput button text is emptyzLink text is emptyzMisusing paragraphs as headingszUse proper heading tagsz(Image alt text has inappropriate patternzUse meaningful textc                 C      | j S )zEReturns a list of CSS selector(s) to test specific parts of the page.)axe_includer	   r   r   r   get_axe_include      z!AccessibilityItem.get_axe_includec                 C   s   | j | j S )zUReturns a list of CSS selector(s) to exclude specific parts of the page from testing.)axe_exclude_axe_default_excluder	   r   r   r   get_axe_exclude   s   z!AccessibilityItem.get_axe_excludec                 C   r1   )zSReturns a list of axe-core tags or a list of axe-core rule IDs (not a mix of both).)axe_run_onlyr	   r   r   r   get_axe_run_only   r4   z"AccessibilityItem.get_axe_run_onlyc                 C   r1   )zQReturns a dictionary that maps axe-core rule IDs to a dictionary of rule options.)	axe_rulesr	   r   r   r   get_axe_rules   r4   zAccessibilityItem.get_axe_rulesc                 C   r1   )z%List of rule objects per axe.run API.)axe_custom_rulesr	   r   r   r   get_axe_custom_rules   r4   z&AccessibilityItem.get_axe_custom_rulesc                 C   r1   )zAList of check objects per axe.run API, without evaluate function.)axe_custom_checksr	   r   r   r   get_axe_custom_checks   r4   z'AccessibilityItem.get_axe_custom_checksc                 C   r1   )zPReturns a dictionary that maps axe-core rule IDs to custom translatable strings.)axe_messagesr	   r   r   r   get_axe_messages   r4   z"AccessibilityItem.get_axe_messagesc                 C      |  || |dS )a  
        Returns the `context object <https://github.com/dequelabs/axe-core/blob/develop/doc/context.md>`_
        to be passed as the
        `context parameter <https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#context-parameter>`_
        for ``axe.run``.
        )includeexclude)r3   r7   r	   r   r   r   get_axe_context   s   z!AccessibilityItem.get_axe_contextc                 C   s,   |  || |d}|d s|d |S )z
        Returns the options object to be passed as the
        `options parameter <https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter>`_
        for ``axe.run``.
        )runOnlyrulesrF   )r9   r;   pop)r
   r   r.   r   r   r   get_axe_options   s   
z!AccessibilityItem.get_axe_optionsc                 C   rB   )z>Returns spec for Axe, including custom rules and custom checks)rG   checks)r=   r?   r	   r   r   r   get_axe_spec   s   zAccessibilityItem.get_axe_specc                 C   s&   |  || || || |dS )N)contextr.   messagesspec)rE   rI   rA   rK   r	   r   r   r   get_axe_configuration   s
   z'AccessibilityItem.get_axe_configurationc                    s   i t  |d| |iS )Naxe_configuration)r   r   rO   r	   r   r   r   r      s
   

z"AccessibilityItem.get_context_datac                    r   r   r   r	   r   r   r   r      r    zAccessibilityItem.render)r   r   r   __doc__r   r2   r5   r6   r8   r:   r<   r>   _r@   r3   r7   r9   r;   r=   r?   rA   rE   rI   rK   rO   r   r   r!   r   r   r   r   r"   "   sz    'r"   c                       (   e Zd ZdZdd Z fddZ  ZS )AddPageItemz'wagtailadmin/userbar/item_page_add.htmlc                 C      || _ | | _d S Npage
get_parentparent_pager
   rX   r   r   r   __init__      zAddPageItem.__init__c                    sB   | j jsdS |jdsdS | j |j}| sdS t |S Nr   r   )rX   r'   r   r   permissions_for_usercan_add_subpager   r   r
   r   permission_checkerr   r   r   r      s   zAddPageItem.renderr   r   r   r   r\   r   r!   r   r   r   r   rT          rT   c                       rS   )ExplorePageItemz+wagtailadmin/userbar/item_page_explore.htmlc                 C   rU   rV   rW   r[   r   r   r   r\      r]   zExplorePageItem.__init__c                    sJ   | j jsdS |jdsdS | j|j}| s| sdS t 	|S r^   )
rX   r'   r   r   rZ   r_   can_editcan_publish_subpager   r   ra   r   r   r   r     s   zExplorePageItem.renderrc   r   r   r   r   re      rd   re   c                       rS   )EditPageItemz(wagtailadmin/userbar/item_page_edit.htmlc                 C   s
   || _ d S rV   )rX   r[   r   r   r   r\     r   zEditPageItem.__init__c                    sl   | j jsdS z|jr|jrW dS W n	 ty   Y nw |jds#dS | j |j}| s0dS t	 
|S r^   )rX   r'   
is_preview
is_editingAttributeErrorr   r   r_   rf   r   r   ra   r   r   r   r     s   zEditPageItem.renderrc   r   r   r   r   rh     s    rh   c                 C   sT   t dD ]"}t|dr|| || qtd|j d|j dtd || | qd S )Nconstruct_wagtail_userbarrX   z_`construct_wagtail_userbar` hook functions should accept a `page` argument in third position - .z needs to be updated)category)r   	get_hooksr   r   r   r   r   )r   itemsrX   fnr   r   r   apply_userbar_hooks5  s   
rr   N)warningsr   django.template.loaderr   django.utils.translationr   rR   wagtailr   wagtail.coreutilsr   wagtail.utils.deprecationr   r   r   r"   rT   re   rh   rr   r   r   r   r   <module>   s     B