aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapp/Controllers/configureController.php6
-rw-r--r--app/i18n/cz/conf.php1
-rw-r--r--app/i18n/de/conf.php1
-rw-r--r--app/i18n/en-us/conf.php1
-rw-r--r--app/i18n/en/conf.php1
-rwxr-xr-xapp/i18n/es/conf.php1
-rw-r--r--app/i18n/fr/conf.php1
-rw-r--r--app/i18n/he/conf.php1
-rw-r--r--app/i18n/it/conf.php1
-rw-r--r--app/i18n/kr/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/ru/conf.php1
-rw-r--r--app/i18n/sk/conf.php1
-rw-r--r--app/i18n/tr/conf.php1
-rw-r--r--app/i18n/zh-cn/conf.php1
-rw-r--r--app/views/configure/shortcut.phtml8
-rw-r--r--app/views/helpers/javascript_vars.phtml2
-rw-r--r--cli/i18n/ignore/en-us.php1
-rw-r--r--lib/lib_rss.php35
22 files changed, 38 insertions, 31 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 31619bf80..7415546e6 100755
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -177,15 +177,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$shortcuts = Minz_Request::param('shortcuts');
if (false !== Minz_Request::param('load_default_shortcuts')) {
$default = Minz_Configuration::load(FRESHRSS_PATH . '/config-user.default.php');
- $shortcuts = $data['shortcuts'];
+ $shortcuts = $default['shortcuts'];
}
- FreshRSS_Context::$user_conf->shortcuts = validateShortcutList($shortcuts);
+ FreshRSS_Context::$user_conf->shortcuts = array_map('trim', $shortcuts);
FreshRSS_Context::$user_conf->save();
invalidateHttpCache();
Minz_Request::good(_t('feedback.conf.shortcuts_updated'), array('c' => 'configure', 'a' => 'shortcut'));
- } else {
- FreshRSS_Context::$user_conf->shortcuts = validateShortcutList(FreshRSS_Context::$user_conf->shortcuts);
}
Minz_View::prependTitle(_t('conf.shortcut.title') . ' · ');
diff --git a/app/i18n/cz/conf.php b/app/i18n/cz/conf.php
index b537cf158..8a68357b8 100644
--- a/app/i18n/cz/conf.php
+++ b/app/i18n/cz/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Pomocí přepínače <kbd>⇧ Shift</kbd> fungují navigační zkratky v rámci kanálů.<br/>Pomocí přepínače <kbd>Alt ⎇</kbd> fungují v rámci kategorií.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'Skočit na další článek',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'Ostatní akce',
'previous_article' => 'Skočit na předchozí článek',
diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php
index c34bcdb55..bca5c6c91 100644
--- a/app/i18n/de/conf.php
+++ b/app/i18n/de/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Mit der <kbd>⇧ Umschalttaste</kbd> finden die Tastenkombination auf Feeds Anwendung.<br/>Mit der <kbd>Alt ⎇</kbd>-Taste finden die Tastenkombination auf Kategorien Anwendung.',
'navigation_no_mod_help' => 'Die folgenden Navigationsverknüpfungen unterstützen keine Modifikatoren.',
'next_article' => 'Zum nächsten Artikel springen',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Wechsle zur normalen Ansicht',
'other_action' => 'Andere Aktionen',
'previous_article' => 'Zum vorherigen Artikel springen',
diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php
index da9ce753a..a7b8bdbbe 100644
--- a/app/i18n/en-us/conf.php
+++ b/app/i18n/en-us/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'With the <kbd>⇧ Shift</kbd> modifier, navigation shortcuts apply on feeds.<br/>With the <kbd>Alt ⎇</kbd> modifier, navigation shortcuts apply on categories.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.',
'next_article' => 'Open the next article',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.',
'normal_view' => 'Switch to normal view',
'other_action' => 'Other actions',
'previous_article' => 'Open the previous article',
diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php
index 1d8544810..55c2fc7f9 100644
--- a/app/i18n/en/conf.php
+++ b/app/i18n/en/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'With the <kbd>⇧ Shift</kbd> modifier, navigation shortcuts apply on feeds.<br/>With the <kbd>Alt ⎇</kbd> modifier, navigation shortcuts apply on categories.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.',
'next_article' => 'Open the next article',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.',
'normal_view' => 'Switch to normal view',
'other_action' => 'Other actions',
'previous_article' => 'Open the previous article',
diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php
index 9149ed09b..985f06331 100755
--- a/app/i18n/es/conf.php
+++ b/app/i18n/es/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Con el modificador <kbd>⇧ Mayúsculas</kbd> es posible usar los atajos de teclado en las fuentes.<br/>Con el modificador <kbd>Alt ⎇</kbd> es posible aplicar los atajos de teclado en las categorías.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'Saltar al siguiente artículo',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'Otras acciones',
'previous_article' => 'Saltar al artículo anterior',
diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php
index 3a2d299ec..0c7260e89 100644
--- a/app/i18n/fr/conf.php
+++ b/app/i18n/fr/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Avec le modificateur <kbd>⇧ Maj</kbd>, les raccourcis de navigation s’appliquent aux flux.<br/>Avec le modificateur <kbd>Alt ⎇</kbd>, les raccourcis de navigation s’appliquent aux catégories.',
'navigation_no_mod_help' => 'Les raccourcis suivant ne supportent pas les modificateurs.',
'next_article' => 'Passer à l’article suivant',
+ 'non_standard' => 'Certains raccourcis (<kbd>%s</kbd>) peuvent ne pas fonctionner.',
'normal_view' => 'Basculer vers la vue normale',
'other_action' => 'Autres actions',
'previous_article' => 'Passer à l’article précédent',
diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php
index bafd4391b..ae78eb03e 100644
--- a/app/i18n/he/conf.php
+++ b/app/i18n/he/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'בעזרת מקש השיפט קיצורי דרך חלים על הזנות .<br/>עם מקש האלט הם חלים על קטגוריות.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'דילוג למאמר הבא',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'פעולות אחרות',
'previous_article' => 'דילוג למאמר הקודם',
diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php
index d6bf69ae6..fa8ce1846 100644
--- a/app/i18n/it/conf.php
+++ b/app/i18n/it/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Con il tasto <kbd>⇧ Shift</kbd> i comandi di navigazione verranno applicati ai feeds.<br/>Con il tasto <kbd>Alt ⎇</kbd> i comandi di navigazione verranno applicati alle categorie.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'Salta al contenuto successivo',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'Altre azioni',
'previous_article' => 'Salta al contenuto precedente',
diff --git a/app/i18n/kr/conf.php b/app/i18n/kr/conf.php
index 7072126b7..8bf38c8ba 100644
--- a/app/i18n/kr/conf.php
+++ b/app/i18n/kr/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => '<kbd>⇧ Shift</kbd> 키를 누른 상태에선 탐색 단축키가 피드에 적용됩니다.<br/><kbd>Alt ⎇</kbd> 키를 누른 상태에선 탐색 단축키가 카테고리에 적용됩니다.',
'navigation_no_mod_help' => '아래 탐색 단축키에는 "Shift"와 "Alt" 키가 적용되지 않습니다.',
'next_article' => '다음 글 보기',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => '일반 모드로 전환',
'other_action' => '다른 동작',
'previous_article' => '이전 글 보기',
diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php
index 8c25349c2..525ef2ad5 100644
--- a/app/i18n/nl/conf.php
+++ b/app/i18n/nl/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Met de <kbd>⇧ Shift</kbd> toets worden navigatieverwijzingen op feeds toegepast.<br/>Met de <kbd>Alt ⎇</kbd> toets worden navigatieverwijzingen op categorieën toegepast.',
'navigation_no_mod_help' => 'De volgende navigatiesnelkoppelingen ondersteunen geen toetsencombinaties.',
'next_article' => 'Spring naar volgende artikel',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Schakel naar gewoon aanzicht',
'other_action' => 'Andere acties',
'previous_article' => 'Spring naar vorige artikel',
diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php
index 60c972080..a6784f0b3 100644
--- a/app/i18n/oc/conf.php
+++ b/app/i18n/oc/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Amb lo modificador <kbd>⇧ Shift</kbd>, los acorchis de navigacion s’aplican als fluxes.<br/>Amb lo modificador <kbd>Alt ⎇</kbd>, los acorchis de navigacion s’aplican a las categorias.',
'navigation_no_mod_help' => 'Los acorchis clavièrs de navigacion son pas compatibles amb los modificadors.',
'next_article' => 'Passar a l’article seguent',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Passar a la vista normala',
'other_action' => 'Autras accions',
'previous_article' => 'Passar a l’article precedent',
diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php
index 45b41341e..d69853a6f 100644
--- a/app/i18n/pl/conf.php
+++ b/app/i18n/pl/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Z wykorzystaniem modyfikatora <kbd>⇧ Shift</kbd> skróty nawigacyjne stosowane są dla kanałów.<br/>Z wykorzystaniem modyfikatora <kbd>Alt ⎇</kbd> skróty nawigacyjne stosowane są dla kategorii.',
'navigation_no_mod_help' => 'Pozostałe skróty nawigacyjne nie wspierają modyfikatorów.',
'next_article' => 'Otworzenie następnej wiadomości',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Przełączenie na widok normalny',
'other_action' => 'Inne akcje',
'previous_article' => 'Otworzenie poprzedniej wiadomości',
diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php
index 876fb1afe..ab9099dfb 100644
--- a/app/i18n/pt-br/conf.php
+++ b/app/i18n/pt-br/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Com o modificador <kbd>⇧ Shift</kbd>, atalhos de navegação aplicam aos feeds.<br/>Com o <kbd>Alt ⎇</kbd> modificador, atalhos de navegação aplicam as categorias.',
'navigation_no_mod_help' => 'Os seguintes atalhos de navegação não suportam modificadores.',
'next_article' => 'Pule para o próximo artigo',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Mudar para a visualização normal',
'other_action' => 'Outras ações',
'previous_article' => 'Pule para o artigo anterior',
diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php
index 1e63347a1..81a63d156 100644
--- a/app/i18n/ru/conf.php
+++ b/app/i18n/ru/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'With the <kbd>⇧ Shift</kbd> modifier, navigation shortcuts apply on feeds.<br/>With the <kbd>Alt ⎇</kbd> modifier, navigation shortcuts apply on categories.', // TODO - Translation
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'Skip to the next article',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'Other actions', // TODO - Translation
'previous_article' => 'Skip to the previous article',
diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php
index e7aa4cc9c..d1f13b8eb 100644
--- a/app/i18n/sk/conf.php
+++ b/app/i18n/sk/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => 'Po stlačení skratky s klávesou <kbd>⇧ Shift</kbd>, sa skratky navigácie vzťahujú na kanály.<br/>Po stlačení skratky s klávesou <kbd>Alt ⎇</kbd>, sa skratky navigácie vzťahujú na kategórie.',
'navigation_no_mod_help' => 'Tieto skratky navigácie nepodporujú klávesy "Shift" a "Alt".',
'next_article' => 'Otvorí ďalší článok',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Prepne do základného zobrazenia',
'other_action' => 'Ostatné akcie',
'previous_article' => 'Otvorí predošlý článok',
diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php
index 27c766b83..bb8867025 100644
--- a/app/i18n/tr/conf.php
+++ b/app/i18n/tr/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => '<kbd>⇧ Shift</kbd> tuşu ile kısayollar akışlar için geçerli olur.<br/><kbd>Alt ⎇</kbd> tuşu ile kısayollar kategoriler için geçerli olur.',
'navigation_no_mod_help' => 'The following navigation shortcuts do not support modifiers.', // TODO - Translation
'next_article' => 'Sonraki makaleye geç',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => 'Switch to normal view', // TODO - Translation
'other_action' => 'Diğer eylemler',
'previous_article' => 'Önceki makaleye geç',
diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php
index 7c9a21102..0c61b28d7 100644
--- a/app/i18n/zh-cn/conf.php
+++ b/app/i18n/zh-cn/conf.php
@@ -191,6 +191,7 @@ return array(
'navigation_help' => '组合 <kbd>⇧ Shift</kbd> 键,浏览快捷键将生效于订阅源。<br/>组合 <kbd>Alt ⎇</kbd> 键,浏览快捷键将生效于分类。',
'navigation_no_mod_help' => '以下快捷键不支持组合键(Shift 或 Alt)',
'next_article' => '打开下一篇文章',
+ 'non_standard' => 'Some keys (<kbd>%s</kbd>) may not work as shortcuts.', // TODO - Translation
'normal_view' => '切换到普通视图',
'other_action' => '其他操作',
'previous_article' => '打开上一篇文章',
diff --git a/app/views/configure/shortcut.phtml b/app/views/configure/shortcut.phtml
index 2194457ee..719fb4713 100644
--- a/app/views/configure/shortcut.phtml
+++ b/app/views/configure/shortcut.phtml
@@ -11,9 +11,15 @@
<?php $s = FreshRSS_Context::$user_conf->shortcuts; ?>
+ <legend><?= _t('conf.shortcut') ?></legend>
+ <?php if ([] !== $nonStandard = getNonStandardShortcuts($s)): ?>
+ <p class="alert alert-error">
+ <?= _t('conf.shortcut.non_standard', implode('</kbd>, <kbd>', $nonStandard)) ?>
+ </p>
+ <?php endif; ?>
+
<form method="post" action="<?= _url('configure', 'shortcut') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
- <legend><?= _t('conf.shortcut') ?></legend>
<noscript><p class="alert alert-error"><?= _t('conf.shortcut.javascript') ?></p></noscript>
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml
index 089175f7d..c6600a9a8 100644
--- a/app/views/helpers/javascript_vars.phtml
+++ b/app/views/helpers/javascript_vars.phtml
@@ -1,6 +1,6 @@
<?php
$mark = FreshRSS_Context::$user_conf->mark_when;
-$s = validateShortcutList(FreshRSS_Context::$user_conf->shortcuts);
+$s = FreshRSS_Context::$user_conf->shortcuts;
$extData = Minz_ExtensionManager::callHook('js_vars', []);
echo htmlspecialchars(json_encode(array(
'context' => array(
diff --git a/cli/i18n/ignore/en-us.php b/cli/i18n/ignore/en-us.php
index 2365bd17e..e03e30000 100644
--- a/cli/i18n/ignore/en-us.php
+++ b/cli/i18n/ignore/en-us.php
@@ -288,6 +288,7 @@ return array(
'conf.shortcut.navigation_help',
'conf.shortcut.navigation_no_mod_help',
'conf.shortcut.next_article',
+ 'conf.shortcut.non_standard',
'conf.shortcut.normal_view',
'conf.shortcut.other_action',
'conf.shortcut.previous_article',
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index 0181d30de..9521a62c4 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -534,32 +534,17 @@ const SHORTCUT_KEYS = [
'End', 'Enter', 'Escape', 'Home', 'Insert', 'PageDown', 'PageUp', 'Space', 'Tab',
];
-function validateShortcutList($shortcuts) {
- $legacy = array(
- 'down' => 'ArrowDown', 'left' => 'ArrowLeft', 'page_down' => 'PageDown', 'page_up' => 'PageUp',
- 'right' => 'ArrowRight', 'up' => 'ArrowUp',
- );
- $upper = null;
- $shortcuts_ok = array();
-
- foreach ($shortcuts as $key => $value) {
- if ('' === $value) {
- $shortcuts_ok[$key] = $value;
- } elseif (in_array($value, SHORTCUT_KEYS)) {
- $shortcuts_ok[$key] = $value;
- } elseif (isset($legacy[$value])) {
- $shortcuts_ok[$key] = $legacy[$value];
- } else { //Case-insensitive search
- if ($upper === null) {
- $upper = array_map('strtoupper', SHORTCUT_KEYS);
- }
- $i = array_search(strtoupper($value), $upper);
- if ($i !== false) {
- $shortcuts_ok[$key] = SHORTCUT_KEYS[$i];
- }
+function getNonStandardShortcuts($shortcuts) {
+ $standard = strtolower(implode(' ', SHORTCUT_KEYS));
+
+ $nonStandard = array_filter($shortcuts, function ($shortcut) use ($standard) {
+ if (false !== strpos($shortcut, ' ')) {
+ return true;
}
- }
- return $shortcuts_ok;
+ return !preg_match("/${shortcut}/i", $standard);
+ });
+
+ return $nonStandard;
}
function errorMessage($errorTitle, $error = '') {