aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Inverle <inverle@proton.me> 2025-12-04 08:48:03 +0100
committerGravatar GitHub <noreply@github.com> 2025-12-04 08:48:03 +0100
commitd55f017ccd941c135055d7c3a85007b8e7e02449 (patch)
treead893132bae1c1e44ba49e7f28ed551aa3e48654 /app
parent60cf5ea297a17db861e73cd65d7b7862bd6bcc24 (diff)
Implement button for toggling sidebar on all views (#8201)
* Implement button for toggling sidebar on all views Closes https://github.com/FreshRSS/FreshRSS/issues/7673, https://github.com/FreshRSS/FreshRSS/issues/7100, https://github.com/FreshRSS/FreshRSS/issues/6119, https://github.com/FreshRSS/FreshRSS/issues/5338, https://github.com/FreshRSS/FreshRSS/issues/2792, https://github.com/FreshRSS/FreshRSS/issues/4224, https://github.com/FreshRSS/FreshRSS/issues/4136 https://github.com/user-attachments/assets/0629e465-6450-440e-b38b-430e9ff73ef9 Keyboard shortcut for doing the same: <kbd>t</kbd> * Partially fix other views Repartition page looks broken on Swage * Correction `close-aside` wasn't meant to be removed * i18n(conf): fr Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * make fix-all * Fix settings slider not opening in reader view * make readme --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Diffstat (limited to 'app')
-rw-r--r--app/i18n/cs/conf.php1
-rw-r--r--app/i18n/de/conf.php1
-rw-r--r--app/i18n/el/conf.php1
-rw-r--r--app/i18n/en-US/conf.php1
-rw-r--r--app/i18n/en/conf.php1
-rw-r--r--app/i18n/es/conf.php1
-rw-r--r--app/i18n/fa/conf.php1
-rw-r--r--app/i18n/fi/conf.php1
-rw-r--r--app/i18n/fr/conf.php1
-rw-r--r--app/i18n/he/conf.php1
-rw-r--r--app/i18n/hu/conf.php1
-rw-r--r--app/i18n/id/conf.php1
-rw-r--r--app/i18n/it/conf.php1
-rw-r--r--app/i18n/ja/conf.php1
-rw-r--r--app/i18n/ko/conf.php1
-rw-r--r--app/i18n/lv/conf.php1
-rw-r--r--app/i18n/nl/conf.php1
-rw-r--r--app/i18n/oc/conf.php1
-rw-r--r--app/i18n/pl/conf.php1
-rw-r--r--app/i18n/pt-BR/conf.php1
-rw-r--r--app/i18n/pt-PT/conf.php1
-rw-r--r--app/i18n/ru/conf.php1
-rw-r--r--app/i18n/sk/conf.php1
-rw-r--r--app/i18n/tr/conf.php1
-rw-r--r--app/i18n/uk/conf.php1
-rw-r--r--app/i18n/zh-CN/conf.php1
-rw-r--r--app/i18n/zh-TW/conf.php1
-rw-r--r--app/layout/aside_configure.phtml7
-rw-r--r--app/layout/aside_subscription.phtml6
-rw-r--r--app/layout/nav_menu.phtml4
-rw-r--r--app/views/configure/shortcut.phtml7
-rw-r--r--app/views/helpers/javascript_vars.phtml1
-rw-r--r--app/views/index/reader.phtml10
-rw-r--r--app/views/stats/repartition.phtml7
34 files changed, 65 insertions, 4 deletions
diff --git a/app/i18n/cs/conf.php b/app/i18n/cs/conf.php
index 9662e0108..73fb94220 100644
--- a/app/i18n/cs/conf.php
+++ b/app/i18n/cs/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Zaměřit na další bez otevření',
'skip_previous_article' => 'Zaměřit na předchozí bez otevření',
'title' => 'Zkratky',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Přehrát/pozastavit médium',
'user_filter' => 'Přístup k uživatelským dotazům',
'user_filter_help' => 'Pokud je pouze jeden uživatelský dotaz, je použit. Jinak jsou dotazy dostupné podle jejich čísla.',
diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php
index 9c3e22f75..2099513c9 100644
--- a/app/i18n/de/conf.php
+++ b/app/i18n/de/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Nächsten markieren ohne zu öffnen',
'skip_previous_article' => 'Vorherigen markieren ohne zu öffnen',
'title' => 'Tastenkombination',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Medien abspielen/anhalten',
'user_filter' => 'Auf Benutzerfilter zugreifen',
'user_filter_help' => 'Wenn es nur einen Benutzerfilter gibt, wird dieser verwendet. Ansonsten sind die Filter über ihre Nummer erreichbar.',
diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php
index d254c1853..8b0a4236d 100644
--- a/app/i18n/el/conf.php
+++ b/app/i18n/el/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focus next without opening', // TODO
'skip_previous_article' => 'Focus previous without opening', // TODO
'title' => 'Shortcuts', // TODO
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Play/pause media', // TODO
'user_filter' => 'Access user queries', // TODO
'user_filter_help' => 'If there is only one user query, it is used. Otherwise, queries are accessible by their number.', // TODO
diff --git a/app/i18n/en-US/conf.php b/app/i18n/en-US/conf.php
index 34d93b7d0..ba9b55b24 100644
--- a/app/i18n/en-US/conf.php
+++ b/app/i18n/en-US/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focus next without opening', // IGNORE
'skip_previous_article' => 'Focus previous without opening', // IGNORE
'title' => 'Shortcuts', // IGNORE
+ 'toggle_aside' => 'Toggle sidebar', // IGNORE
'toggle_media' => 'Play/pause media', // IGNORE
'user_filter' => 'Access user queries', // IGNORE
'user_filter_help' => 'If there is only one user query, it is used. Otherwise, queries are accessible by their number.', // IGNORE
diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php
index 0b69aede1..2e4c20d32 100644
--- a/app/i18n/en/conf.php
+++ b/app/i18n/en/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focus next without opening',
'skip_previous_article' => 'Focus previous without opening',
'title' => 'Shortcuts',
+ 'toggle_aside' => 'Toggle sidebar',
'toggle_media' => 'Play/pause media',
'user_filter' => 'Access user queries',
'user_filter_help' => 'If there is only one user query, it is used. Otherwise, queries are accessible by their number.',
diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php
index 6655852e6..f43b1079f 100644
--- a/app/i18n/es/conf.php
+++ b/app/i18n/es/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Enfoque siguiente sin abrir',
'skip_previous_article' => 'Enfoque anterior sin abrir',
'title' => 'Atajos de teclado',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Jugar/pausar medios',
'user_filter' => 'Acceso a filtros de usuario',
'user_filter_help' => 'Si solo hay un filtro de usuario, ese será el que se use. En caso contrario, los filtros están accesibles por su numeración.',
diff --git a/app/i18n/fa/conf.php b/app/i18n/fa/conf.php
index 9bf8b7501..870b49dc8 100644
--- a/app/i18n/fa/conf.php
+++ b/app/i18n/fa/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => ' فوکوس بعدی بدون باز کردن',
'skip_previous_article' => ' فوکوس قبلی بدون باز کردن',
'title' => ' میانبرها',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => ' پخش/مکث رسانه',
'user_filter' => ' به درخواست های کاربر دسترسی پیدا کنید',
'user_filter_help' => ' اگر فقط یک درخواست کاربر وجود داشته باشد',
diff --git a/app/i18n/fi/conf.php b/app/i18n/fi/conf.php
index 196137e76..7261d270f 100644
--- a/app/i18n/fi/conf.php
+++ b/app/i18n/fi/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Siirry seuraavaan, mutta älä avaa',
'skip_previous_article' => 'Siirry edelliseen, mutta älä avaa',
'title' => 'Pikanäppäimet',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Toista/keskeytä media',
'user_filter' => 'Siirry käyttäjän kyselyihin',
'user_filter_help' => 'Jos kyselyitä on vain yksi, sitä käytetään automaattisesti. Muussa tapauksessa kyselyn voi valita numerolla.',
diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php
index befd951f0..27950983c 100644
--- a/app/i18n/fr/conf.php
+++ b/app/i18n/fr/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Passer au suivant sans ouvrir',
'skip_previous_article' => 'Passer au précédent sans ouvrir',
'title' => 'Raccourcis',
+ 'toggle_aside' => 'Afficher/masquer la barre latérale',
'toggle_media' => 'Lire/arrêter le média',
'user_filter' => 'Accéder aux filtres utilisateur',
'user_filter_help' => 'S’il n’y a qu’un filtre utilisateur, celui-ci est utilisé automatiquement. Sinon ils sont accessibles par leur numéro.',
diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php
index 65014e92c..f7018c582 100644
--- a/app/i18n/he/conf.php
+++ b/app/i18n/he/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focus next without opening', // TODO
'skip_previous_article' => 'Focus previous without opening', // TODO
'title' => 'קיצורי דרך',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Play/pause media', // TODO
'user_filter' => 'גישה למססנים',
'user_filter_help' => 'אם יש רק מזנן אחד הוא יהיה בשימוש. אחרת המסננים ישמשו על בסיס המספר שלהם.',
diff --git a/app/i18n/hu/conf.php b/app/i18n/hu/conf.php
index 261895d17..d6a362324 100644
--- a/app/i18n/hu/conf.php
+++ b/app/i18n/hu/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Ugrás a következőre megnyitás nélkül',
'skip_previous_article' => 'Ugrás az előzőre megnyitás nélkül',
'title' => 'Gyorsgombok',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Média indítás/megállítás',
'user_filter' => 'Felhasználói lekérdezések elfogadása',
'user_filter_help' => 'Ha csak egy felhasználói lekérdezés van, akkor az kerül felhasználásra. Ellenkező esetben a lekérdezések a számuk alapján érhetőek el.',
diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php
index 26f3fc5fa..9163067f9 100644
--- a/app/i18n/id/conf.php
+++ b/app/i18n/id/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Fokus berikutnya tanpa membuka',
'skip_previous_article' => 'Fokus sebelumnya tanpa membuka',
'title' => 'Pintasan',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Putar/jeda media',
'user_filter' => 'Akses pencarian pengguna',
'user_filter_help' => 'Jika hanya ada satu pencarian pengguna, maka itu akan digunakan. Jika tidak, pencarian dapat diakses dengan nomornya',
diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php
index efd4bf2b4..60f9c451c 100644
--- a/app/i18n/it/conf.php
+++ b/app/i18n/it/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Evidenzia il prossimo senza aprire',
'skip_previous_article' => 'Evidenzia il precedente senza aprire',
'title' => 'Comandi da tastiera',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Riproduci/Metti in pausa i media',
'user_filter' => 'Accedi alle ricerche personali',
'user_filter_help' => 'Se è presente una sola ricerca personale verrà usata quella, altrimenti usare anche il numero associato.',
diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php
index bf1b58413..9340bfaef 100644
--- a/app/i18n/ja/conf.php
+++ b/app/i18n/ja/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => '次の記事を開かずにフォーカスする',
'skip_previous_article' => '前の記事を開かずにフォーカスする',
'title' => 'ショートカット',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'メディアの 再生/停止',
'user_filter' => 'ユーザークエリにアクセスする',
'user_filter_help' => 'ユーザークエリが一つしかなければ、それを使う。そうではなければ、番号でクエリを選択する。',
diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php
index 82da8dd53..9ad972740 100644
--- a/app/i18n/ko/conf.php
+++ b/app/i18n/ko/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => '다음 글로 커서 이동',
'skip_previous_article' => '이전 글로 커서 이동',
'title' => '단축키',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => '미디어 재생/일시정지',
'user_filter' => '사용자 필터 사용하기',
'user_filter_help' => '사용자 필터가 하나만 설정되어 있다면 해당 필터를 사용하고, 그렇지 않다면 필터를 번호로 선택할 수 있습니다.',
diff --git a/app/i18n/lv/conf.php b/app/i18n/lv/conf.php
index 929826f3f..a9eced70b 100644
--- a/app/i18n/lv/conf.php
+++ b/app/i18n/lv/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Fokusēt nākamo bez atvēršanas',
'skip_previous_article' => 'Fokusēt iepriekšējo bez atvēršanas',
'title' => 'Saīsnes',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Mēdiju atskaņošana/pauze',
'user_filter' => 'Piekļuve lietotāju pieprasījumiem',
'user_filter_help' => 'Ja ir tikai viens lietotāja pieprasījums, tiek izmantots tas. Pretējā gadījumā pieprasījumi ir pieejami pēc to numura.',
diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php
index 47690b475..245100b6e 100644
--- a/app/i18n/nl/conf.php
+++ b/app/i18n/nl/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Volgend artikel focusen zonder openen',
'skip_previous_article' => 'Vorig artikel focusen zonder openen',
'title' => 'Verwijzingen',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Media afspelen/pauzeren',
'user_filter' => 'Toegang gebruikers filters',
'user_filter_help' => 'Als er slechts één gebruikersfilter is, dan wordt die gebruikt. Anders zijn ze toegankelijk met hun nummer.',
diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php
index 6d02a97c9..77317d612 100644
--- a/app/i18n/oc/conf.php
+++ b/app/i18n/oc/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Centrar sul seguent sens lo dobrir',
'skip_previous_article' => 'Centrar sul precedent sens lo dobrir',
'title' => 'Acorchis',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Legir/arrestar mèdia',
'user_filter' => 'Accedir als filtres utilizaire',
'user_filter_help' => 'S’i a pas qu’un filtre utilizaire, aquel serà utilizat. Autrament los filtres son accessibles per lor numèro.',
diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php
index feb726fc7..d99faeb84 100644
--- a/app/i18n/pl/conf.php
+++ b/app/i18n/pl/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Przejdź do następnej wiadomości bez otwierania',
'skip_previous_article' => 'Przejdź do poprzedniej wiadomości bez otwierania',
'title' => 'Skróty klawiszowe',
+ 'toggle_aside' => 'Pokaż/ukryj pasek boczny',
'toggle_media' => 'Odtwarzanie/pauza mediów',
'user_filter' => 'Przejdź do zapisanych zapytań',
'user_filter_help' => 'Gdy zapisane jest tylko jedno zapytanie jest ono od razu wykorzystywane. W przeciwnym przypadku zapytania są dostępne przez wybranie ich numeru.',
diff --git a/app/i18n/pt-BR/conf.php b/app/i18n/pt-BR/conf.php
index 39d6ec077..0dbf44201 100644
--- a/app/i18n/pt-BR/conf.php
+++ b/app/i18n/pt-BR/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focar o próximo sem abri-lo',
'skip_previous_article' => 'Focar o anterior sem abri-lo',
'title' => 'Atalhos',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Reproduzir/pausar mídia',
'user_filter' => 'Acesse filtros de usuário',
'user_filter_help' => 'Se há apenas um filtro, ele é utilizado. Caso contrário, os filtros serão acessíveis pelos seus números.',
diff --git a/app/i18n/pt-PT/conf.php b/app/i18n/pt-PT/conf.php
index c7a310156..ce3c66760 100644
--- a/app/i18n/pt-PT/conf.php
+++ b/app/i18n/pt-PT/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Focar o próximo sem abri-lo',
'skip_previous_article' => 'Focar o anterior sem abri-lo',
'title' => 'Atalhos',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Reproduzir/pausar mídia',
'user_filter' => 'Acesse filtros de utilizador',
'user_filter_help' => 'Se há apenas um filtro, ele é utilizado. Caso contrário, os filtros serão acessíveis pelos seus números.',
diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php
index e90f5d7cd..351f29a1a 100644
--- a/app/i18n/ru/conf.php
+++ b/app/i18n/ru/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Перейти к следующей, не раскрывая',
'skip_previous_article' => 'Перейти к предыдущей, не раскрывая',
'title' => 'Горячие клавиши',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Играть/приостановить медиаконтент',
'user_filter' => 'К пользовательским запросам',
'user_filter_help' => 'Если запрос единственный, он будет вызван. Иначе запросы доступны по их номеру.',
diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php
index d848d8f0d..93fc8681d 100644
--- a/app/i18n/sk/conf.php
+++ b/app/i18n/sk/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Prejde na ďalší bez otvorenia',
'skip_previous_article' => 'Prejde na predošlý bez otvorenia',
'title' => 'Skratky',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Spustiť/zastaviť médium',
'user_filter' => 'Použiť používateľské filtre',
'user_filter_help' => 'Ak je nastavený iba jeden spôsob zdieľania, použije sa. Inak si spôsoby zdieľania vyberá používateľ podľa čísla.',
diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php
index 7c1fae419..9d62dc975 100644
--- a/app/i18n/tr/conf.php
+++ b/app/i18n/tr/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Açmadan sonrakine odaklan',
'skip_previous_article' => 'Açmadan öncesine odaklan',
'title' => 'Kısayollar',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Medyayı oynat/duraklat',
'user_filter' => 'Kullanıcı sorgularına eriş',
'user_filter_help' => 'Eğer yalnızca bir kullanıcı sorgusu varsa, o kullanılır. Aksi takdirde, sorgular numaralarıyla erişilebilir.',
diff --git a/app/i18n/uk/conf.php b/app/i18n/uk/conf.php
index 9a46c2e15..afcf26c98 100644
--- a/app/i18n/uk/conf.php
+++ b/app/i18n/uk/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => 'Сфокусувати наступну не відкриваючи',
'skip_previous_article' => 'Сфокусувати попередню не відкриваючи',
'title' => 'Клавіші',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => 'Почати/зупинити відтворення',
'user_filter' => 'Користувацькі запити',
'user_filter_help' => 'Якщо користувацький запит лише один, використовується одразу він. Інакше обирайте запити їхніми номерами.',
diff --git a/app/i18n/zh-CN/conf.php b/app/i18n/zh-CN/conf.php
index 6b188e5ff..452688b00 100644
--- a/app/i18n/zh-CN/conf.php
+++ b/app/i18n/zh-CN/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => '跳转到下一篇文章而不打开',
'skip_previous_article' => '跳转到上一篇文章而不打开',
'title' => '快捷键',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => '播放/暂停媒体',
'user_filter' => '显示自定义查询',
'user_filter_help' => '如果有多个自定义过滤器,则会按照它们的序号依次访问。',
diff --git a/app/i18n/zh-TW/conf.php b/app/i18n/zh-TW/conf.php
index 6057f46b0..0e5249683 100644
--- a/app/i18n/zh-TW/conf.php
+++ b/app/i18n/zh-TW/conf.php
@@ -359,6 +359,7 @@ return array(
'skip_next_article' => '跳轉到下一篇文章而不打開',
'skip_previous_article' => '跳轉到上一篇文章而不打開',
'title' => '快捷鍵',
+ 'toggle_aside' => 'Toggle sidebar', // TODO
'toggle_media' => '播放/暫停媒體',
'user_filter' => '顯示自定義查詢',
'user_filter_help' => '如果有多個自定義過濾器,則會按照它們的序號依次訪問。',
diff --git a/app/layout/aside_configure.phtml b/app/layout/aside_configure.phtml
index 6ebf232e2..e4c8741dc 100644
--- a/app/layout/aside_configure.phtml
+++ b/app/layout/aside_configure.phtml
@@ -109,6 +109,11 @@
</ul>
</nav>
<a class="close-aside" href="#close">❌</a>
+
<nav class="nav_menu nav_mobile">
- <a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
+ <div id="nav_menu_toggle_aside" class="group">
+ <button class="btn" title="<?= _t('conf.shortcut.toggle_aside') ?>">
+ <?= _i('category') ?>
+ </button>
+ </div>
</nav>
diff --git a/app/layout/aside_subscription.phtml b/app/layout/aside_subscription.phtml
index f7ed09213..6493f59c8 100644
--- a/app/layout/aside_subscription.phtml
+++ b/app/layout/aside_subscription.phtml
@@ -61,6 +61,10 @@
<?php if (Minz_Request::actionName() !== 'repartition') { ?>
<a class="close-aside" href="#close">❌</a>
<nav class="nav_menu nav_mobile">
- <a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
+ <div id="nav_menu_toggle_aside">
+ <button class="btn">
+ <?= _i('category') ?>
+ </button>
+ </div>
</nav>
<?php } ?>
diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml
index 4529d0df3..cc158a674 100644
--- a/app/layout/nav_menu.phtml
+++ b/app/layout/nav_menu.phtml
@@ -5,7 +5,9 @@
<nav class="nav_menu">
<?php if ($actual_view === 'normal' || $actual_view === 'reader') { ?>
<div id="nav_menu_toggle_aside" class="group">
- <a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
+ <button class="btn<?= $actual_view === 'normal' ? ' active' : '' ?>" title="<?= _t('conf.shortcut.toggle_aside') ?>">
+ <?= _i('category') ?>
+ </button>
</div>
<?php } ?>
diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml
index 3f7f84759..37847e39a 100644
--- a/app/views/configure/shortcut.phtml
+++ b/app/views/configure/shortcut.phtml
@@ -170,6 +170,13 @@
<legend><?= _t('conf.shortcut.other_action') ?></legend>
<div class="form-group">
+ <label class="group-name" for="toggle_aside"><?= _t('conf.shortcut.toggle_aside') ?></label>
+ <div class="group-controls">
+ <input type="text" id="toggle_aside" name="shortcuts[toggle_aside]" list="keys" value="<?= $s['toggle_aside'] ?>" />
+ </div>
+ </div>
+
+ <div class="form-group">
<label class="group-name" for="actualize"><?= _t('gen.action.actualize') ?></label>
<div class="group-controls">
<input type="text" id="actualize" name="shortcuts[actualize]" list="keys" value="<?= $s['actualize'] ?>" />
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml
index 96275d51b..73e047e11 100644
--- a/app/views/helpers/javascript_vars.phtml
+++ b/app/views/helpers/javascript_vars.phtml
@@ -65,6 +65,7 @@ echo json_encode([
'reading_view' => $s['reading_view'] ?? '',
'rss_view' => $s['rss_view'] ?? '',
'toggle_media' => $s['toggle_media'] ?? '',
+ 'toggle_aside' => $s['toggle_aside'] ?? '',
],
'urls' => [
'index' => _url('index', 'index'),
diff --git a/app/views/index/reader.phtml b/app/views/index/reader.phtml
index d76af2dc7..648b046ed 100644
--- a/app/views/index/reader.phtml
+++ b/app/views/index/reader.phtml
@@ -59,3 +59,13 @@ $useKeepUnreadImportant = !FreshRSS_Context::isImportant() && !FreshRSS_Context:
</div>
</main>
<?php endif; ?>
+
+<?php $class = $this->displaySlider ? ' active' : ''; ?>
+<aside id="slider" class="<?= $class ?>">
+ <a class="toggle_aside" href="#close"><?= _i('close') ?></a>
+ <div id="slider-content">
+ </div>
+</aside>
+<a href="#" id="close-slider" class="<?= $class ?>">
+ <?= _i('close') ?>
+</a>
diff --git a/app/views/stats/repartition.phtml b/app/views/stats/repartition.phtml
index d7515a789..34edd1ab1 100644
--- a/app/views/stats/repartition.phtml
+++ b/app/views/stats/repartition.phtml
@@ -6,7 +6,12 @@
?>
<nav class="nav_menu">
- <a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
+ <div id="nav_menu_toggle_aside" class="nav_mobile">
+ <button class="btn">
+ <?= _i('category') ?>
+ </button>
+ </div>
+
<select id="feed_select" class="select-change">
<option data-url="<?= _url('stats', 'repartition') ?>"><?= _t('admin.stats.all_feeds') ?></option>