mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2025-12-23 21:47:44 -05:00
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>
This commit is contained in:
@@ -236,9 +236,9 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
|
||||
| Suomi (fi) | ■■■■■■■■■・ 96% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Français (fr) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| עברית (he) | ■■■■・・・・・・ 43% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 93% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 91% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 85% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■・・・ 79% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
@@ -247,7 +247,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
|
||||
| Polski (pl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 84% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 84% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 85% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 92% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 95% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
@@ -132,9 +132,9 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
|
||||
| Suomi (fi) | ■■■■■■■■■・ 96% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Français (fr) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| עברית (he) | ■■■■・・・・・・ 43% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Magyar (hu) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Bahasa Indonesia (id) | ■■■■■■■■■・ 93% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Italiano (it) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 日本語 (ja) | ■■■■■■■■■・ 91% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| 한국어 (ko) | ■■■■■■■■・・ 85% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Latviešu (lv) | ■■■■■■■・・・ 79% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
@@ -143,7 +143,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
|
||||
| Polski (pl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpl+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Brasil) (pt-BR) | ■■■■■■■■・・ 84% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-BR+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Português (Portugal) (pt-PT) | ■■■■■■■■・・ 84% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fpt-PT+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Русский (ru) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fru+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Slovenčina (sk) | ■■■■■■■■・・ 85% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fsk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Türkçe (tr) | ■■■■■■■■■・ 92% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ftr+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
| Українська (uk) | ■■■■■■■■■・ 95% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fuk+%2F%28TODO%7CDIRTY%29%24%2F) |
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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' => ' اگر فقط یک درخواست کاربر وجود داشته باشد',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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' => 'אם יש רק מזנן אחד הוא יהיה בשימוש. אחרת המסננים ישמשו על בסיס המספר שלהם.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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' => 'ユーザークエリが一つしかなければ、それを使う。そうではなければ、番号でクエリを選択する。',
|
||||
|
||||
@@ -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' => '사용자 필터가 하나만 설정되어 있다면 해당 필터를 사용하고, 그렇지 않다면 필터를 번호로 선택할 수 있습니다.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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' => 'Если запрос единственный, он будет вызван. Иначе запросы доступны по их номеру.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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.',
|
||||
|
||||
@@ -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' => 'Якщо користувацький запит лише один, використовується одразу він. Інакше обирайте запити їхніми номерами.',
|
||||
|
||||
@@ -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' => '如果有多个自定义过滤器,则会按照它们的序号依次访问。',
|
||||
|
||||
@@ -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' => '如果有多個自定義過濾器,則會按照它們的序號依次訪問。',
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 } ?>
|
||||
|
||||
@@ -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 } ?>
|
||||
|
||||
|
||||
@@ -169,6 +169,13 @@
|
||||
<fieldset>
|
||||
<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">
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -96,6 +96,7 @@ return array (
|
||||
'global_view' => '2',
|
||||
'reading_view' => '3',
|
||||
'toggle_media' => 'v',
|
||||
'toggle_aside' => 't',
|
||||
),
|
||||
|
||||
# Disabling favicons and using emojis instead of icons improves performance for users with many feeds
|
||||
|
||||
@@ -922,6 +922,64 @@ function init_posts() {
|
||||
}
|
||||
}
|
||||
|
||||
function toggle_aside_click(manual = true) {
|
||||
const aside = document.querySelector('.aside');
|
||||
const toggle_aside = document.querySelector('#nav_menu_toggle_aside button');
|
||||
if (!toggle_aside) {
|
||||
return;
|
||||
}
|
||||
|
||||
const active = toggle_aside.classList.contains('active');
|
||||
if (active) {
|
||||
toggle_aside.classList.remove('active');
|
||||
aside.classList.remove('visible');
|
||||
aside.style.display = 'none';
|
||||
} else {
|
||||
toggle_aside.classList.add('active');
|
||||
aside.classList.add('visible');
|
||||
aside.style.display = '';
|
||||
}
|
||||
|
||||
if (manual && ['normal', 'reader'].includes(context.current_view)) {
|
||||
sessionStorage.setItem(`FreshRSS_aside-toggled_${context.current_view}`, !active ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
function init_nav_menu() {
|
||||
const aside = document.querySelector('.aside');
|
||||
const toggle_aside = document.querySelector('#nav_menu_toggle_aside button');
|
||||
if (!toggle_aside) {
|
||||
return;
|
||||
}
|
||||
|
||||
function sync(e) {
|
||||
const active = toggle_aside.classList.contains('active');
|
||||
if ((e.matches && active) || (!e.matches && !active)) {
|
||||
toggle_aside_click(false);
|
||||
}
|
||||
}
|
||||
|
||||
const media = window.matchMedia('(max-width: 840px)');
|
||||
media.onchange = sync;
|
||||
|
||||
const state = sessionStorage.getItem(`FreshRSS_aside-toggled_${context.current_view}`);
|
||||
if (state !== null) {
|
||||
const active = toggle_aside.classList.contains('active');
|
||||
if (state != active) toggle_aside_click(false);
|
||||
}
|
||||
if (getComputedStyle(aside).display !== 'none') {
|
||||
if (context.current_view === 'normal') aside.classList.add('visible');
|
||||
sync(media);
|
||||
}
|
||||
const close_aside = [
|
||||
document.querySelector('.aside a.toggle_aside'),
|
||||
document.querySelector('a.close-aside'), // background of aside (#close)
|
||||
];
|
||||
|
||||
toggle_aside.addEventListener('click', toggle_aside_click);
|
||||
close_aside.forEach(close => close.addEventListener('click', toggle_aside_click));
|
||||
}
|
||||
|
||||
function rememberOpenCategory(category_id, isOpen) {
|
||||
if (context.display_categories === 'remember') {
|
||||
const open_categories = JSON.parse(localStorage.getItem('FreshRSS_open_categories') || '{}');
|
||||
@@ -1204,6 +1262,7 @@ function init_shortcuts() {
|
||||
if (k === s.reading_view) { delayedClick(document.querySelector('#nav_menu_views .view-reader')); ev.preventDefault(); return; }
|
||||
if (k === s.global_view) { delayedClick(document.querySelector('#nav_menu_views .view-global')); ev.preventDefault(); return; }
|
||||
if (k === s.toggle_media) { toggle_media(); ev.preventDefault(); }
|
||||
if (k === s.toggle_aside) { toggle_aside_click(); ev.preventDefault(); }
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2226,6 +2285,7 @@ function init_main_afterDOM() {
|
||||
init_notifications();
|
||||
init_csp_alert();
|
||||
init_confirm_action();
|
||||
init_nav_menu();
|
||||
const stream = document.getElementById('stream');
|
||||
if (stream) {
|
||||
init_load_more(stream);
|
||||
|
||||
@@ -981,6 +981,10 @@ main.post .drop-section li.item.feed a:hover .icon {
|
||||
filter: brightness(1);
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
}
|
||||
|
||||
.flux {
|
||||
|
||||
@@ -981,6 +981,10 @@ main.post .drop-section li.item.feed a:hover .icon {
|
||||
filter: brightness(1);
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
}
|
||||
|
||||
.flux {
|
||||
|
||||
@@ -1913,6 +1913,10 @@ a.website:hover .favicon {
|
||||
z-index: 50;
|
||||
}
|
||||
|
||||
.aside:not(.visible) ~ #nav_entries {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#nav_entries button {
|
||||
background-color: transparent;
|
||||
display: table-cell;
|
||||
@@ -2356,7 +2360,6 @@ html.slider-active {
|
||||
.nav-login,
|
||||
.aside .toggle_aside,
|
||||
#slider .toggle_aside,
|
||||
.nav_menu .toggle_aside,
|
||||
.configure .dropdown-header-close {
|
||||
display: none;
|
||||
}
|
||||
@@ -2372,30 +2375,15 @@ html.slider-active {
|
||||
|
||||
/*=== READER */
|
||||
/*===========*/
|
||||
.reader .nav_menu .toggle_aside {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.reader .aside .toggle_aside {
|
||||
padding: 1rem 0px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.reader .aside {
|
||||
display: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.reader .aside:target {
|
||||
.reader .aside.visible {
|
||||
display: table-cell;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.reader .aside_feed .configure-feeds {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.reader .flux {
|
||||
padding: 1rem 0 2rem;
|
||||
}
|
||||
@@ -2478,7 +2466,7 @@ html.slider-active {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aside:target {
|
||||
.aside.visible {
|
||||
box-shadow: 3px 3px 5px var(--frss-box-shadow-color-transparent);
|
||||
}
|
||||
|
||||
@@ -2668,7 +2656,7 @@ html.slider-active {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.aside:target + .close-aside,
|
||||
.aside.visible + .close-aside,
|
||||
.configure .dropdown-target:target ~ .dropdown-close {
|
||||
background-color: var(--frss-modal-background-color-transparent);
|
||||
display: block;
|
||||
@@ -2682,10 +2670,14 @@ html.slider-active {
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.nav_mobile {
|
||||
.nav_menu.nav_mobile {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.nav_mobile {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
.aside {
|
||||
position: fixed;
|
||||
top: 0; bottom: 0;
|
||||
@@ -2695,8 +2687,8 @@ html.slider-active {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.aside:target,
|
||||
.reader .aside:target {
|
||||
.aside.visible,
|
||||
.reader .aside.visible {
|
||||
width: 90%;
|
||||
height: 100vh;
|
||||
}
|
||||
@@ -2743,6 +2735,7 @@ html.slider-active {
|
||||
}
|
||||
|
||||
#nav_entries {
|
||||
display: table !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
@@ -1913,6 +1913,10 @@ a.website:hover .favicon {
|
||||
z-index: 50;
|
||||
}
|
||||
|
||||
.aside:not(.visible) ~ #nav_entries {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#nav_entries button {
|
||||
background-color: transparent;
|
||||
display: table-cell;
|
||||
@@ -2356,7 +2360,6 @@ html.slider-active {
|
||||
.nav-login,
|
||||
.aside .toggle_aside,
|
||||
#slider .toggle_aside,
|
||||
.nav_menu .toggle_aside,
|
||||
.configure .dropdown-header-close {
|
||||
display: none;
|
||||
}
|
||||
@@ -2372,30 +2375,15 @@ html.slider-active {
|
||||
|
||||
/*=== READER */
|
||||
/*===========*/
|
||||
.reader .nav_menu .toggle_aside {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.reader .aside .toggle_aside {
|
||||
padding: 1rem 0px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.reader .aside {
|
||||
display: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.reader .aside:target {
|
||||
.reader .aside.visible {
|
||||
display: table-cell;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.reader .aside_feed .configure-feeds {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.reader .flux {
|
||||
padding: 1rem 0 2rem;
|
||||
}
|
||||
@@ -2478,7 +2466,7 @@ html.slider-active {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aside:target {
|
||||
.aside.visible {
|
||||
box-shadow: -3px 3px 5px var(--frss-box-shadow-color-transparent);
|
||||
}
|
||||
|
||||
@@ -2668,7 +2656,7 @@ html.slider-active {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.aside:target + .close-aside,
|
||||
.aside.visible + .close-aside,
|
||||
.configure .dropdown-target:target ~ .dropdown-close {
|
||||
background-color: var(--frss-modal-background-color-transparent);
|
||||
display: block;
|
||||
@@ -2682,10 +2670,14 @@ html.slider-active {
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.nav_mobile {
|
||||
.nav_menu.nav_mobile {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.nav_mobile {
|
||||
display: initial;
|
||||
}
|
||||
|
||||
.aside {
|
||||
position: fixed;
|
||||
top: 0; bottom: 0;
|
||||
@@ -2695,8 +2687,8 @@ html.slider-active {
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.aside:target,
|
||||
.reader .aside:target {
|
||||
.aside.visible,
|
||||
.reader .aside.visible {
|
||||
width: 90%;
|
||||
height: 100vh;
|
||||
}
|
||||
@@ -2743,6 +2735,7 @@ html.slider-active {
|
||||
}
|
||||
|
||||
#nav_entries {
|
||||
display: table !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user