o k`+@s ddlZddlZddlZddlTddlmZddlmZmZddl m Z m Z m Z ddl mZddlmZmZmZmZmZmZddlmZmZmZdd lmZmZmZmZmZm Z Gd d d e!Z"Gd d d e!Z#Gddde!Z$Gddde!Z%Gddde!Z&ddZ'dS)N)*)IPreferencePanelProvider)as_floatlazy) all_timezones get_timezonelocaltz)tag)_Locale deactivateget_available_localesget_locale_namemake_activable) HTTPNotFoundIRequestHandleris_valid_default_handler)ChromeINavigationContributorITemplateProvider add_noticeadd_stylesheet add_warningc@sdeZdZdZeeeeee Z ddZ ddZ ddZ dd Zd d Zd d ZddZddZdS)PreferencesModulezPDisplays the preference panels and dispatch control to the individual panelscCsdS)Nprefsselfreqrr3/usr/lib/python3/dist-packages/trac/prefs/web_ui.pyget_active_navigation_item.z,PreferencesModule.get_active_navigation_itemccs<||d}|rddtjtd|jdfVdSdS)Nrmetanavr Preferences)href) _get_panelsr ar r$r)rrpanelsrrrget_navigation_items1sz&PreferencesModule.get_navigation_itemscCs*td|j}|r|d|jd<dSdS)Nz/prefs(?:/([^/]+))?$panel_idT)rematch path_infogroupargs)rrr,rrr match_request9s zPreferencesModule.match_requestcCs|jr|jdkrd|jvr||||\}}|s!ttdg}i}i}|jD]0}||p2gD]&}t |dkrL|\}}} | | g ||fn |d}| ||||<q3q*t |ddd}|j d } | durt |d kr|ddd kr|d dn|dd} | | } | sttd | d d|ji} t|j} g}| | r|| D]"\}}||||\}}|| | |||}| |||fq| || }|d }|| || ||dt|d|S)NPOST save_prefszNo preference panels availablercSs|dpdf|ddS)Nrr)r)prrrSsz3PreferencesModule.process_request..)keyr*r)advancedz$Unknown preference panel '%(panel)s')panelsession) active_panelr'childrenzcommon/css/prefs.css)is_xhrmethodr/ _do_save_xhrr%rr panel_providersget_preference_panelslen setdefaultappendsortedgetr:renvrender_preference_panelupdaterender_fragmentr)rrr' providers child_panelsproviderr9namelabelparentr*chosen_provider session_datachromer< ctemplatecdatarenderedrespdatarrrprocess_request?sb                 z!PreferencesModule.process_requestcCsgSNrrrrrget_htdocs_dirs{r!z!PreferencesModule.get_htdocs_dirscCstddgS)Nz trac.prefs templates) pkg_resourcesresource_filenamer[rrrget_templates_dirs~sz$PreferencesModule.get_templates_dirscCsLg}i}|jD]}t||pg}|D]}|||d<q||7}q||fS)z-Return a list of available preference panels.r)r@listrA)rrr'rKrMr5r9rrrr%s  zPreferencesModule._get_panelscCs:|jD]}|dvr|j||j|<q|j|dS)N)r2r* __FORM_TOKEN)r/r:savesend_no_content)rrr7rrrr?s   zPreferencesModule._do_save_xhrN)__name__ __module__ __qualname____doc__ implementsrrrExtensionPointrr@r r(r0rYr\r`r%r?rrrrr$s < rc@s0eZdZeedZddZddZddZdS) AdvancedPreferencePanel)newsidccs|js dtdfVdSdS)Nr8Advanced)is_authenticatedr rrrrrAsz-AdvancedPreferencePanel.get_preference_panelscCs>|jdkrd|jvr||nt|||jdd|jjifS)Nr1restorezprefs_advanced.html session_id)r>r/_do_load_do_save _form_fieldsr:sidrrr9rrrrHs   z/AdvancedPreferencePanel.render_preference_panelcCs<|js|jd}|r|j|t|tddSdSdS)NloadsidzThe session has been loaded.)rnr/rFr: get_sessionrr )rroldsidrrrrqs  z AdvancedPreferencePanel._do_loadN) rerfrgrirrsrArHrqrrrrrks  rkc@(eZdZeedZddZddZdS)GeneralPreferencePanel)rNemailccsdtdfVdS)NGeneralr rrrrrAz,GeneralPreferencePanel.get_preference_panelscCs |jdkr t|||jdifS)Nr1zprefs_general.html)r>rrrsrurrrrHs z.GeneralPreferencePanel.render_preference_panelNrerfrgrirrsrArHrrrrrz  rzc@ry)LocalizationPreferencePanel)tzlc_timedateinfolanguageccdtdfVdS)N localization Localizationr}rrrrrAr~z1LocalizationPreferencePanel.get_preference_panelsc sjdkr*tr#jdjdkr#`ttfdd|jj t ||j |j dd}t |p6t}|j ddp?d}|j dd pHd }tt |||td d }trt}d d|D} tddt|| D} |j dd} t| pytd} | |d<| |d<| |d<d|d<d|fS)Nr1rcsjSrZ)localerrrrr6szELocalizationPreferencePanel.render_preference_panel..tracdefault_timezonedefault_dateinfo_formatrelativedefault_date_formatrF) timezonestimezonerdefault_time_formatrr has_babelcSsg|]}t|qSr)r parse).0rrrr szGLocalizationPreferencePanel.render_preference_panel..css|] \}}||jfVqdSrZ) display_name)rid_rrrr szFLocalizationPreferencePanel.render_preference_panel..default_languagezBrowser's languagelocales languagesTrzprefs_localization.html)r>r r/rFr:rr rrGpathrrrsconfigrrrr rEziprr ) rrr9default_timezone_idrrrrX locale_idsrrdefault_language_idrrrrrHsH   z3LocalizationPreferencePanel.render_preference_panelNrrrrrrrrc@sTeZdZeeeeZdZddZ ddZ e ddZ e dd Z ed d Zd S) UserInterfacePreferencePanel) accesskeysdefault_handlerui.auto_preview_timeoutz ui.hide_helpzui.use_symbolswiki_fullwidthccr)N userinterfacezUser Interfacer}rrrrrAr~z2UserInterfacePreferencePanel.get_preference_panelscCs2|jdkr t|||j|j|j|jd}d|fS)Nr1)project_default_handlervalid_default_handlersdefault_auto_preview_timeoutzprefs_userinterface.html)r>rrrs_project_default_handler_valid_default_handlers_auto_preview_timeout)rrr9rXrrrrH s z4UserInterfacePreferencePanel.render_preference_panelcC|jddpdS)Nrauto_preview_timeoutr)rgetfloatr[rrrrz2UserInterfacePreferencePanel._auto_preview_timeoutcCr)Nrr WikiModule)rrFr[rrrrrz5UserInterfacePreferencePanel._project_default_handlercCstdd|jDS)Ncss |] }t|r|jjVqdSrZ)r __class__re)rhandlerrrrr"s zGUserInterfacePreferencePanel._valid_default_handlers..)rE_request_handlersr[rrrr sz4UserInterfacePreferencePanel._valid_default_handlersN)rerfrgrirrjrrrsrArHpropertyrrrrrrrrrs  rcCs|D]k}|j|d}|rX|dkr5t|dd}|dus+t|s+t|s+|dkr5t|td|dq|dkrGd|j vrG|t vrG|j |=q|dkrR|j |q||j |<q||jvsd|d |jvrm||j vrm|j |=qt |td | |j|dS) Nr4r)defaultrz;Discarded invalid value "%(val)s" for auto preview timeout.)valrrl_cbz!Your preferences have been saved.)r/rFstriprmathisinfisnanrr r:r change_sidrredirectr$r)rr9 form_fieldsfieldrfvalrrrrr's.    rr)(rr^r+ trac.coretrac.prefs.apir trac.utilrrtrac.util.datefmtrrrtrac.util.htmlr trac.util.translationr r r r rr trac.web.apirrrtrac.web.chromerrrrrr Componentrrkrzrrrrrrrrs"    s9 *