2017-11-20 06:10:04 +01:00
{{ define "base" }}
<!DOCTYPE html>
2021-05-31 22:19:37 +02:00
< html lang = "{{ replace .language " _ " " - " } } " >
2017-11-20 06:10:04 +01:00
< head >
< meta charset = "utf-8" >
2018-07-19 07:30:05 +02:00
< title > {{template "title" .}} - Miniflux< / title >
2017-12-16 06:28:54 +01:00
2018-07-19 07:30:05 +02:00
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
2022-08-22 06:33:32 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2017-12-16 06:28:54 +01:00
< meta name = "mobile-web-app-capable" content = "yes" >
< meta name = "apple-mobile-web-app-title" content = "Miniflux" >
2023-11-08 20:01:15 +01:00
< link rel = "manifest" href = "{{ route " webManifest " } } " crossorigin = "use-credentials" >
2017-12-16 06:28:54 +01:00
2017-11-20 06:10:04 +01:00
< meta name = "robots" content = "noindex,nofollow" >
< meta name = "referrer" content = "no-referrer" >
2019-10-30 07:06:25 +01:00
< meta name = "google" content = "notranslate" >
2017-12-16 06:28:54 +01:00
2018-07-19 06:30:54 +02:00
<!-- Favicons -->
< link rel = "icon" type = "image/png" sizes = "16x16" href = "{{ route " appIcon " " filename " " favicon-16 . png " } } " >
< link rel = "icon" type = "image/png" sizes = "32x32" href = "{{ route " appIcon " " filename " " favicon-32 . png " } } " >
<!-- Android icons -->
< link rel = "icon" type = "image/png" sizes = "128x128" href = "{{ route " appIcon " " filename " " icon-128 . png " } } " >
< link rel = "icon" type = "image/png" sizes = "192x192" href = "{{ route " appIcon " " filename " " icon-192 . png " } } " >
<!-- iOS icons -->
< link rel = "apple-touch-icon" sizes = "120x120" href = "{{ route " appIcon " " filename " " icon-120 . png " } } " >
< link rel = "apple-touch-icon" sizes = "152x152" href = "{{ route " appIcon " " filename " " icon-152 . png " } } " >
< link rel = "apple-touch-icon" sizes = "167x167" href = "{{ route " appIcon " " filename " " icon-167 . png " } } " >
< link rel = "apple-touch-icon" sizes = "180x180" href = "{{ route " appIcon " " filename " " icon-180 . png " } } " >
2017-12-16 06:28:54 +01:00
2021-11-28 16:20:51 +01:00
< meta name = "theme-color" content = "{{ theme_color .theme " light " } } " media = "(prefers-color-scheme: light)" >
< meta name = "theme-color" content = "{{ theme_color .theme " dark " } } " media = "(prefers-color-scheme: dark)" >
2021-06-03 04:02:38 +02:00
< link rel = "stylesheet" type = "text/css" href = "{{ route " stylesheet " " name " . theme " checksum " . theme_checksum } } " >
2021-05-31 23:16:50 +02:00
2020-12-22 06:14:10 +01:00
{{ if and .user .user.Stylesheet }}
2021-05-31 23:16:50 +02:00
{{ $stylesheetNonce := nonce }}
2021-06-02 00:07:09 +02:00
< meta http-equiv = "Content-Security-Policy" content = "default-src 'self'; img-src * data:; media-src *; frame-src *; style-src 'self' 'nonce-{{ $stylesheetNonce }}'" >
2021-05-31 23:16:50 +02:00
< style nonce = "{{ $stylesheetNonce }}" > { { . u s e r . S t y l e s h e e t | s a f e C S S } } < / style >
{{ else }}
< meta http-equiv = "Content-Security-Policy" content = "default-src 'self'; img-src * data:; media-src *; frame-src *" >
2020-12-22 06:14:10 +01:00
{{ end }}
2018-07-16 06:51:09 +02:00
2021-06-03 04:02:38 +02:00
< script src = "{{ route " javascript " " name " " app " " checksum " . app_js_checksum } } " defer > < / script >
< script src = "{{ route " javascript " " name " " service-worker " " checksum " . sw_js_checksum } } " defer id = "service-worker-script" > < / script >
2017-11-20 06:10:04 +01:00
< / head >
2019-04-29 03:20:46 +02:00
< body
2021-05-31 22:44:34 +02:00
{{ if .csrf }}data-csrf-token="{{ .csrf }}"{{ end }}
2022-02-28 03:33:53 +01:00
data-add-subscription-url="{{ route "addSubscription" }}"
2019-04-29 03:20:46 +02:00
data-entries-status-url="{{ route "updateEntriesStatus" }}"
2020-05-27 06:35:44 +02:00
data-refresh-all-feeds-url="{{ route "refreshAllFeeds" }}"
2023-11-05 18:57:35 +01:00
{{ if .webAuthnEnabled }}
data-webauthn-register-begin-url="{{ route "webauthnRegisterBegin" }}"
data-webauthn-register-finish-url="{{ route "webauthnRegisterFinish" }}"
data-webauthn-login-begin-url="{{ route "webauthnLoginBegin" }}"
data-webauthn-login-finish-url="{{ route "webauthnLoginFinish" }}"
data-webauthn-delete-all-url="{{ route "webauthnDeleteAll" }}"
{{ end }}
2019-04-29 03:20:46 +02:00
{{ if .user }}{{ if not .user.KeyboardShortcuts }}data-disable-keyboard-shortcuts="true"{{ end }}{{ end }}>
2021-03-07 20:55:43 +01:00
2017-11-20 06:10:04 +01:00
{{ if .user }}
2024-01-24 08:00:20 +01:00
2024-02-04 21:51:04 +01:00
< a class = "skip-to-content-link" href = "#main" > {{ t "skip_to_content" }}< / a >
2024-01-27 09:25:55 +01:00
< header class = "header" >
2017-11-20 06:10:04 +01:00
< nav >
2024-02-07 09:54:11 +01:00
< div class = "logo" data-toggle-button-label = "{{ t " menu . title " } } " >
2024-01-25 09:36:10 +01:00
< a aria-label = "{{ t " menu . home_page " } } " href = "{{ route .user.DefaultHomePage }}" >
Mini< span > flux< / span >
< / a >
2024-02-07 09:54:11 +01:00
< svg aria-hidden = "true" xmlns = "http://www.w3.org/2000/svg" width = "12" height = "12" fill = "currentColor" class = "bi bi-chevron-down" viewBox = "0 0 16 16" >
< path fill-rule = "evenodd" d = "M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708" / >
< / svg >
2024-01-25 09:36:10 +01:00
< / div >
< ul id = "header-menu" >
< li { { if eq . menu " unread " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g u " } } " >
2024-02-02 09:30:45 +01:00
< a href = "{{ route " unread " } } "
data-page="unread"
{{ if gt .countUnread 0 }}
2024-02-04 21:51:04 +01:00
aria-label="{{ t "menu.unread" }}, {{ plural "page.unread_entry_count" .countUnread .countUnread }}"
2024-02-02 09:30:45 +01:00
{{ end }}
>
{{ t "menu.unread" }}
{{ if gt .countUnread 0 }}
< span class = "unread-counter-wrapper" aria-hidden = "true" > (< span class = "unread-counter" > {{ .countUnread }}< / span > )< / span >
{{ end }}
2024-01-25 09:36:10 +01:00
< / a >
< / li >
< li { { if eq . menu " starred " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g b " } } " >
< a href = "{{ route " starred " } } " data-page = "starred" > {{ t "menu.starred" }}< / a >
< / li >
< li { { if eq . menu " history " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g h " } } " >
< a href = "{{ route " history " } } " data-page = "history" > {{ t "menu.history" }}< / a >
< / li >
< li { { if eq . menu " feeds " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g f " } } " >
< a href = "{{ route " feeds " } } " data-page = "feeds" > {{ t "menu.feeds" }}
{{ if gt .countErrorFeeds 0 }}
< span class = "error-feeds-counter-wrapper" > (< span class = "error-feeds-counter" > {{ .countErrorFeeds }}< / span > )< / span >
{{ end }}
< / a >
2024-02-02 09:30:45 +01:00
< a href = "{{ route " addSubscription " } } " title = "{{ t " tooltip . keyboard_shortcuts " " + " } } " aria-label = "{{ t " menu . add_feed " } } " >
2024-01-25 09:36:10 +01:00
(+)
< / a >
< / li >
< li { { if eq . menu " categories " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g c " } } " >
< a href = "{{ route " categories " } } " data-page = "categories" > {{ t "menu.categories" }}< / a >
< / li >
< li { { if eq . menu " settings " } } class = "active" { { end } } title = "{{ t " tooltip . keyboard_shortcuts " " g s " } } " >
< a href = "{{ route " settings " } } " data-page = "settings" > {{ t "menu.settings" }}< / a >
< / li >
{{ if not hasAuthProxy }}
< li >
< a href = "{{ route " logout " } } " title = "{{ t " tooltip . logged_user " . user . Username } } " > {{ t "menu.logout" }}< / a >
2024-01-25 05:44:37 +01:00
< / li >
2024-01-25 09:36:10 +01:00
{{ end }}
< / ul >
2017-11-20 06:10:04 +01:00
< / nav >
2024-01-25 05:44:37 +01:00
< search role = "search" class = "search" >
2024-02-14 10:07:56 +01:00
< details class = "search-details" { { if $ . searchQuery } } open { { end } } >
< summary class = "search-summary" >
2024-01-25 12:19:02 +01:00
< span > {{ t "search.label" }}< / span >
2024-02-14 10:07:56 +01:00
< svg class = "bi bi-chevron-down search-summary-icon" aria-hidden = "true" xmlns = "http://www.w3.org/2000/svg" width = "12" height = "12" fill = "currentColor" viewBox = "0 0 16 16" >
2024-01-25 12:25:17 +01:00
< path fill-rule = "evenodd" d = "M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708" / >
< / svg >
2024-01-25 09:36:10 +01:00
< / summary >
2024-01-25 05:44:37 +01:00
< form action = "{{ route " searchEntries " } } " aria-labelledby = "search-input-label" >
2024-02-04 22:15:06 +01:00
< input type = "search" name = "q" id = "search-input" aria-label = "{{ t " search . label " } } " placeholder = "{{ t " search . placeholder " } } " { { if $ . searchQuery } } value = "{{ .searchQuery }}" { { end } } required >
< button type = "submit" class = "button button-primary" data-label-loading = "{{ t " form . submit . loading " } } " > {{ t "search.submit" }}< / button >
2024-01-25 05:44:37 +01:00
< / form >
< / details >
< / search >
2024-01-27 09:25:55 +01:00
< / header >
2017-11-20 06:10:04 +01:00
{{ end }}
2017-12-17 03:07:53 +01:00
{{ if .flashMessage }}
2024-02-05 07:20:05 +01:00
< div role = "alert" class = "flash-message alert alert-success" > {{ .flashMessage }}< / div >
2017-12-17 03:07:53 +01:00
{{ end }}
{{ if .flashErrorMessage }}
2024-02-05 07:20:05 +01:00
< div role = "alert" class = "flash-error-message alert alert-error" > {{ .flashErrorMessage }}< / div >
2017-12-17 03:07:53 +01:00
{{ end }}
2024-01-25 07:22:18 +01:00
2024-01-27 09:25:55 +01:00
{{template "page_header" .}}
2024-01-25 07:22:18 +01:00
2024-01-24 08:00:20 +01:00
< main id = "main" >
2017-11-20 06:10:04 +01:00
{{template "content" .}}
2017-12-03 02:04:01 +01:00
< / main >
2017-12-29 01:27:54 +01:00
< template id = "keyboard-shortcuts" >
< div id = "modal-left" >
2023-07-02 22:28:02 +02:00
< button class = "btn-close-modal" aria-label = "Close" > x< / button >
< h3 tabindex = "-1" id = "dialog-title" > {{ t "page.keyboard_shortcuts.title" }}< / h3 >
2017-12-29 01:27:54 +01:00
< div class = "keyboard-shortcuts" >
2018-09-22 03:53:29 +02:00
< p > {{ t "page.keyboard_shortcuts.subtitle.sections" }}< / p >
2017-12-29 01:27:54 +01:00
< ul >
2018-09-22 03:53:29 +02:00
< li > {{ t "page.keyboard_shortcuts.go_to_unread" }} = < strong > g + u< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_starred" }} = < strong > g + b< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_history" }} = < strong > g + h< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_feeds" }} = < strong > g + f< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_categories" }} = < strong > g + c< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_settings" }} = < strong > g + s< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.show_keyboard_shortcuts" }} = < strong > ?< / strong > < / li >
2022-02-28 03:33:53 +01:00
< li > {{ t "menu.add_feed" }} = < strong > +< / strong > < / li >
2017-12-29 01:27:54 +01:00
< / ul >
2018-09-22 03:53:29 +02:00
< p > {{ t "page.keyboard_shortcuts.subtitle.items" }}< / p >
2017-12-29 01:27:54 +01:00
< ul >
2023-05-11 04:55:13 +02:00
< li > {{ t "page.keyboard_shortcuts.go_to_previous_item" }} = < strong > p< / strong > , < strong > k< / strong > , < strong > ⏴ < / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_next_item" }} = < strong > n< / strong > , < strong > j< / strong > , < strong > ⏵ < / strong > < / li >
2020-10-07 03:06:12 +02:00
< li > {{ t "page.keyboard_shortcuts.go_to_feed" }} = < strong > F< / strong > < / li >
2017-12-29 01:27:54 +01:00
< / ul >
2018-09-22 03:53:29 +02:00
< p > {{ t "page.keyboard_shortcuts.subtitle.pages" }}< / p >
2017-12-29 01:27:54 +01:00
< ul >
2018-09-22 03:53:29 +02:00
< li > {{ t "page.keyboard_shortcuts.go_to_previous_page" }} = < strong > h< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.go_to_next_page" }} = < strong > l< / strong > < / li >
2017-12-29 01:27:54 +01:00
< / ul >
2018-09-22 03:53:29 +02:00
< p > {{ t "page.keyboard_shortcuts.subtitle.actions" }}< / p >
2017-12-29 01:27:54 +01:00
< ul >
2018-09-22 03:53:29 +02:00
< li > {{ t "page.keyboard_shortcuts.open_item" }} = < strong > o< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.open_original" }} = < strong > v< / strong > < / li >
2019-11-29 22:48:56 +01:00
< li > {{ t "page.keyboard_shortcuts.open_original_same_window" }} = < strong > V< / strong > < / li >
2020-01-07 07:02:02 +01:00
< li > {{ t "page.keyboard_shortcuts.open_comments" }} = < strong > c< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.open_comments_same_window" }} = < strong > C< / strong > < / li >
2022-01-29 22:53:10 +01:00
< li > {{ t "page.keyboard_shortcuts.toggle_read_status_next" }} = < strong > m< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.toggle_read_status_prev" }} = < strong > M< / strong > < / li >
2018-09-22 03:53:29 +02:00
< li > {{ t "page.keyboard_shortcuts.mark_page_as_read" }} = < strong > A< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.download_content" }} = < strong > d< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.toggle_bookmark_status" }} = < strong > f< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.save_article" }} = < strong > s< / strong > < / li >
2023-02-06 05:51:51 +01:00
< li > {{ t "page.keyboard_shortcuts.toggle_entry_attachments" }} = < strong > a< / strong > < / li >
2020-10-17 00:44:03 +02:00
< li > {{ t "page.keyboard_shortcuts.scroll_item_to_top" }} = < strong > z + t< / strong > < / li >
2020-05-27 06:35:44 +02:00
< li > {{ t "page.keyboard_shortcuts.refresh_all_feeds" }} = < strong > R< / strong > < / li >
2018-10-14 00:43:09 +02:00
< li > {{ t "page.keyboard_shortcuts.remove_feed" }} = < strong > #< / strong > < / li >
2018-09-22 03:53:29 +02:00
< li > {{ t "page.keyboard_shortcuts.go_to_search" }} = < strong > /< / strong > < / li >
< li > {{ t "page.keyboard_shortcuts.close_modal" }} = < strong > Esc< / strong > < / li >
2017-12-29 01:27:54 +01:00
< / ul >
< / div >
< / div >
< / template >
2021-03-07 20:55:43 +01:00
< template id = "icon-read" > {{ icon "read" }}< / template >
< template id = "icon-unread" > {{ icon "unread" }}< / template >
< template id = "icon-star" > {{ icon "star" }}< / template >
< template id = "icon-unstar" > {{ icon "unstar" }}< / template >
< template id = "icon-save" > {{ icon "save" }}< / template >
< div id = "toast-wrapper" role = "alert" aria-live = "assertive" aria-atomic = "true" >
< span id = "toast-msg" > < / span >
< / div >
2017-11-20 06:10:04 +01:00
< / body >
< / html >
2018-01-18 00:57:30 +01:00
{{ end }}