diff options
80 files changed, 212 insertions, 1 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index cc31430b0..6d25493cf 100644 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -503,4 +503,20 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { Minz_Request::good(_t('feedback.conf.updated'), [ 'c' => 'configure', 'a' => 'system' ]); } } + + public function privacyAction(): void { + if (!FreshRSS_Auth::hasAccess('admin')) { + Minz_Error::error(403); + } + + if (Minz_Request::isPost()) { + FreshRSS_Context::userConf()->retrieve_extension_list = Minz_Request::paramBoolean('retrieve_extension_list'); + FreshRSS_Context::userConf()->save(); + invalidateHttpCache(); + + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'privacy')); + } + + FreshRSS_View::prependTitle(_t('conf.privacy') . ' · '); + } } diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php index bf1f01c59..42538153d 100644 --- a/app/Controllers/extensionController.php +++ b/app/Controllers/extensionController.php @@ -44,7 +44,18 @@ class FreshRSS_extension_Controller extends FreshRSS_ActionController { */ protected function getAvailableExtensionList(): array { $extensionListUrl = 'https://raw.githubusercontent.com/FreshRSS/Extensions/master/extensions.json'; - $json = httpGet($extensionListUrl, CACHE_PATH . '/extension_list.json', 'json'); + + $cacheFile = CACHE_PATH . '/extension_list.json'; + if (FreshRSS_Context::userConf()->retrieve_extension_list === true) { + if (!file_exists($cacheFile) || (time() - (filemtime($cacheFile) ?: 0) > 86400)) { + $json = httpGet($extensionListUrl, $cacheFile, 'json'); + } else { + $json = @file_get_contents($cacheFile) ?: ''; + } + } else { + Minz_Log::warning('The extension list retrieval is disabled in privacy configuration'); + return []; + } // we ran into problems, simply ignore them if ($json === '') { diff --git a/app/Models/UserConfiguration.php b/app/Models/UserConfiguration.php index b46df4d78..8c08d0bd7 100644 --- a/app/Models/UserConfiguration.php +++ b/app/Models/UserConfiguration.php @@ -73,6 +73,7 @@ declare(strict_types=1); * @property string $view_mode * @property array<string,bool|int|string> $volatile * @property array<string,array<string,mixed>> $extensions + * @property bool $retrieve_extension_list */ final class FreshRSS_UserConfiguration extends Minz_Configuration { use FreshRSS_FilterActionsTrait; diff --git a/app/i18n/cs/admin.php b/app/i18n/cs/admin.php index c62e37697..911957ed8 100644 --- a/app/i18n/cs/admin.php +++ b/app/i18n/cs/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Popis', 'disabled' => 'Zakázáno', 'empty_list' => 'Nejsou naistalována žádná rozšíření', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Povoleno', 'latest' => 'Nainstalováno', 'name' => 'Název', diff --git a/app/i18n/cs/conf.php b/app/i18n/cs/conf.php index 158259374..ff856cb28 100644 --- a/app/i18n/cs/conf.php +++ b/app/i18n/cs/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Předchozí', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Správa profilu', 'api' => 'Správa API', diff --git a/app/i18n/cs/gen.php b/app/i18n/cs/gen.php index bea67222d..aab07bd1b 100644 --- a/app/i18n/cs/gen.php +++ b/app/i18n/cs/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Zobrazení', 'extensions' => 'Rozšíření', 'logs' => 'Protokoly', + 'privacy' => 'Privacy', // TODO 'queries' => 'Uživatelské dotazy', 'reading' => 'Čtení', 'search' => 'Hledat slova nebo #štítky', diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php index 314be6ef7..c6669845f 100644 --- a/app/i18n/de/admin.php +++ b/app/i18n/de/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Beschreibungen', 'disabled' => 'Deaktiviert', 'empty_list' => 'Es gibt keine installierte Erweiterung.', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Aktiviert', 'latest' => 'Installiert', 'name' => 'Name', // IGNORE diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 4743fd4ad..2fc75a964 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Vorherige', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profil-Verwaltung', 'api' => 'API-Verwaltung', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index e56851652..548c60a20 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Anzeige', 'extensions' => 'Erweiterungen', 'logs' => 'Protokolle', + 'privacy' => 'Privacy', // TODO 'queries' => 'Benutzerabfragen', 'reading' => 'Lesen', 'search' => 'Suche Worte oder #Tags', diff --git a/app/i18n/el/admin.php b/app/i18n/el/admin.php index 0c5f490e5..59098f09f 100644 --- a/app/i18n/el/admin.php +++ b/app/i18n/el/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Περιγραφή', 'disabled' => 'Απενεργοποιημένες', 'empty_list' => 'Δεν υπάρχουν εγκατεστημένες επεκτάσεις', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Ενεργοποιημένες', 'latest' => 'Εγκατεστημένες', 'name' => 'Όνομα', diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php index 843884970..a9fbad830 100644 --- a/app/i18n/el/conf.php +++ b/app/i18n/el/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Previous', // TODO ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profile management', // TODO 'api' => 'API management', // TODO diff --git a/app/i18n/el/gen.php b/app/i18n/el/gen.php index db6716680..973856c12 100644 --- a/app/i18n/el/gen.php +++ b/app/i18n/el/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Display', // TODO 'extensions' => 'Extensions', // TODO 'logs' => 'Logs', // TODO + 'privacy' => 'Privacy', // TODO 'queries' => 'User queries', // TODO 'reading' => 'Reading', // TODO 'search' => 'Search words or #tags', // TODO diff --git a/app/i18n/en-us/admin.php b/app/i18n/en-us/admin.php index 9671b71d3..5f3bb2546 100644 --- a/app/i18n/en-us/admin.php +++ b/app/i18n/en-us/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Description', // IGNORE 'disabled' => 'Disabled', // IGNORE 'empty_list' => 'There are no installed extensions', // IGNORE + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Enabled', // IGNORE 'latest' => 'Installed', // IGNORE 'name' => 'Name', // IGNORE diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php index f241163ba..89464482d 100644 --- a/app/i18n/en-us/conf.php +++ b/app/i18n/en-us/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Previous', // IGNORE ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profile management', // IGNORE 'api' => 'API management', // IGNORE diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index da7ce15d4..3b8e0cfd9 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Display', // IGNORE 'extensions' => 'Extensions', // IGNORE 'logs' => 'Logs', // IGNORE + 'privacy' => 'Privacy', // IGNORE 'queries' => 'User queries', // IGNORE 'reading' => 'Reading', // IGNORE 'search' => 'Search words or #tags', // IGNORE diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index cae4837d5..81d4ff09e 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Description', 'disabled' => 'Disabled', 'empty_list' => 'There are no installed extensions', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Enabled', 'latest' => 'Installed', 'name' => 'Name', diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 72d7ad4fe..0fde3d3ac 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Previous', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profile management', 'api' => 'API management', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index e331284f6..e8d276349 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Display', 'extensions' => 'Extensions', 'logs' => 'Logs', + 'privacy' => 'Privacy', // TODO 'queries' => 'User queries', 'reading' => 'Reading', 'search' => 'Search words or #tags', diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php index 85dfd928f..7e522d6a1 100644 --- a/app/i18n/es/admin.php +++ b/app/i18n/es/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Descripción', 'disabled' => 'Desactivado', 'empty_list' => 'No hay extensiones instaladas', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Activado', 'latest' => 'Instalado', 'name' => 'Nombre', diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php index 0a4dc635b..f5d95eec1 100644 --- a/app/i18n/es/conf.php +++ b/app/i18n/es/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Anterior', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Administración de perfiles', 'api' => 'Administración de API', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 856fb7133..e05a23235 100644 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Visualización', 'extensions' => 'Extensiones', 'logs' => 'Registros', + 'privacy' => 'Privacy', // TODO 'queries' => 'Peticiones de usuario', 'reading' => 'Lectura', 'search' => 'Buscar palabras o #etiquetas', diff --git a/app/i18n/fa/admin.php b/app/i18n/fa/admin.php index 6c6f6cd3c..e35f513f3 100644 --- a/app/i18n/fa/admin.php +++ b/app/i18n/fa/admin.php @@ -116,6 +116,7 @@ return array( 'description' => ' توضیحات', 'disabled' => ' معلول', 'empty_list' => ' هیچ برنامه افزودنی نصب شده ای وجود ندارد', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => ' فعال است', 'latest' => ' نصب شده است', 'name' => ' نام', diff --git a/app/i18n/fa/conf.php b/app/i18n/fa/conf.php index 0c2be1a34..614ad6e00 100644 --- a/app/i18n/fa/conf.php +++ b/app/i18n/fa/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => ' قبلی', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => ' مدیریت پروفایل', 'api' => ' مدیریت API', diff --git a/app/i18n/fa/gen.php b/app/i18n/fa/gen.php index a0f74c2c1..460934d87 100644 --- a/app/i18n/fa/gen.php +++ b/app/i18n/fa/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'نمایش', 'extensions' => ' برنامه های افزودنی', 'logs' => ' سیاهههای مربوط', + 'privacy' => 'Privacy', // TODO 'queries' => ' پرس و جوهای کاربر', 'reading' => ' خواندن', 'search' => ' کلمات یا #برچسب ها را جستجو کنید', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 29b1142c3..2a9f139e6 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Description', // IGNORE 'disabled' => 'Désactivée', 'empty_list' => 'Aucune extension installée', + 'empty_list_help' => 'Vérifiez les logs pour déterminer pourquoi la liste des extensions est vide.', 'enabled' => 'Activée', 'latest' => 'Installée', 'name' => 'Nom', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 129bbde43..46166a637 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Précédent', ), ), + 'privacy' => array( + '_' => 'Vie privée', + 'retrieve_extension_list' => 'Récupération de la liste des extensions', + ), 'profile' => array( '_' => 'Gestion du profil', 'api' => 'Gestion de l’API', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 2468e7127..f62c73a5e 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Affichage', 'extensions' => 'Extensions', // IGNORE 'logs' => 'Logs', // IGNORE + 'privacy' => 'Vie privée', 'queries' => 'Filtres utilisateurs', 'reading' => 'Lecture', 'search' => 'Rechercher des mots ou des #tags', diff --git a/app/i18n/he/admin.php b/app/i18n/he/admin.php index 37694ca22..cd79ca0db 100644 --- a/app/i18n/he/admin.php +++ b/app/i18n/he/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Description', // TODO 'disabled' => 'Disabled', // TODO 'empty_list' => 'There is no installed extension', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Enabled', // TODO 'latest' => 'Installed', // TODO 'name' => 'Name', // TODO diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php index cb2f5b152..bb88da752 100644 --- a/app/i18n/he/conf.php +++ b/app/i18n/he/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'הקודם', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profile management', // TODO 'api' => 'API management', // TODO diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index df5f12272..853e614f0 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'תצוגה', 'extensions' => 'Extensions', // TODO 'logs' => 'לוגים', + 'privacy' => 'Privacy', // TODO 'queries' => 'שאילתות', 'reading' => 'קריאה', 'search' => 'חיפוש מילים או #תגים', diff --git a/app/i18n/hu/admin.php b/app/i18n/hu/admin.php index 9307f2090..ded0094ba 100644 --- a/app/i18n/hu/admin.php +++ b/app/i18n/hu/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Leírás', 'disabled' => 'Kikapcsolva', 'empty_list' => 'Nincsenek telepített kiegészítők', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Bekapcsolva', 'latest' => 'Telepítve', 'name' => 'Név', diff --git a/app/i18n/hu/conf.php b/app/i18n/hu/conf.php index df34c9bea..6c3a62545 100644 --- a/app/i18n/hu/conf.php +++ b/app/i18n/hu/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Előző', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profil kezelés', 'api' => 'API menedzsment', diff --git a/app/i18n/hu/gen.php b/app/i18n/hu/gen.php index 8ceed27a6..95e56c480 100644 --- a/app/i18n/hu/gen.php +++ b/app/i18n/hu/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Megjelenítés', 'extensions' => 'Kiegészítők', 'logs' => 'Log-ok', + 'privacy' => 'Privacy', // TODO 'queries' => 'Felhasználói lekérdezések', 'reading' => 'Olvasás', 'search' => 'Szavak vagy #címkék keresése', diff --git a/app/i18n/id/admin.php b/app/i18n/id/admin.php index ca8afdb1d..545adc0a7 100644 --- a/app/i18n/id/admin.php +++ b/app/i18n/id/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Keterangan', 'disabled' => 'Dinonaktifkan', 'empty_list' => 'Tidak ada ekstensi terpasang', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Diaktifkan', 'latest' => 'Terinstal', 'name' => 'Nama', diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php index e3dc3e390..61296316e 100644 --- a/app/i18n/id/conf.php +++ b/app/i18n/id/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Sebelumnya', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Manajemen Profil', 'api' => 'Manajemen API', diff --git a/app/i18n/id/gen.php b/app/i18n/id/gen.php index 426089b5b..c012a445f 100644 --- a/app/i18n/id/gen.php +++ b/app/i18n/id/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Display', // TODO 'extensions' => 'Extensions', // TODO 'logs' => 'Logs', // TODO + 'privacy' => 'Privacy', // TODO 'queries' => 'User queries', // TODO 'reading' => 'Reading', // TODO 'search' => 'Search words or #tags', // TODO diff --git a/app/i18n/it/admin.php b/app/i18n/it/admin.php index 2012e1db5..4a22fcaa4 100644 --- a/app/i18n/it/admin.php +++ b/app/i18n/it/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Descrizione', 'disabled' => 'Disabilitata', 'empty_list' => 'Non ci sono estensioni installate', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Abilitata', 'latest' => 'Installato', 'name' => 'Nome', diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php index c55d87147..791958c9a 100644 --- a/app/i18n/it/conf.php +++ b/app/i18n/it/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Precedente', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Gestione profili', 'api' => 'Gestione API', diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index bfa0ca56e..fa04ecae0 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Visualizzazione', 'extensions' => 'Estensioni', 'logs' => 'Log', + 'privacy' => 'Privacy', // TODO 'queries' => 'Ricerche personali', 'reading' => 'Lettura', 'search' => 'Ricerca parole o #tags', diff --git a/app/i18n/ja/admin.php b/app/i18n/ja/admin.php index 7b6d06d3f..800ad8b69 100644 --- a/app/i18n/ja/admin.php +++ b/app/i18n/ja/admin.php @@ -116,6 +116,7 @@ return array( 'description' => '説明', 'disabled' => '無効', 'empty_list' => 'インストールされている拡張機能はありません', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => '有効', 'latest' => 'インストール済み', 'name' => '名前', diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php index 38cd74655..89530d12e 100644 --- a/app/i18n/ja/conf.php +++ b/app/i18n/ja/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => '前へ', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'プロフィール', 'api' => 'API管理', diff --git a/app/i18n/ja/gen.php b/app/i18n/ja/gen.php index 2822e0f57..9bcce07ba 100644 --- a/app/i18n/ja/gen.php +++ b/app/i18n/ja/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'ディスプレイ', 'extensions' => '拡張機能', 'logs' => 'ログ', + 'privacy' => 'Privacy', // TODO 'queries' => 'ユーザークエリ', 'reading' => 'リーディング', 'search' => '単語で検索するかハッシュタグで検索する', diff --git a/app/i18n/ko/admin.php b/app/i18n/ko/admin.php index 06076af7a..4c7ef8a7a 100644 --- a/app/i18n/ko/admin.php +++ b/app/i18n/ko/admin.php @@ -116,6 +116,7 @@ return array( 'description' => '설명', 'disabled' => '비활성화됨', 'empty_list' => '설치된 확장 기능이 없습니다', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => '활성화됨', 'latest' => '설치됨', 'name' => '이름', diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php index 66f690f71..29c39186b 100644 --- a/app/i18n/ko/conf.php +++ b/app/i18n/ko/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => '이전', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => '프로필 관리', 'api' => 'API 관리', diff --git a/app/i18n/ko/gen.php b/app/i18n/ko/gen.php index 3dccb3189..ffd3f8db1 100644 --- a/app/i18n/ko/gen.php +++ b/app/i18n/ko/gen.php @@ -183,6 +183,7 @@ return array( 'display' => '표시', 'extensions' => '확장 기능', 'logs' => '로그', + 'privacy' => 'Privacy', // TODO 'queries' => '사용자 쿼리', 'reading' => '읽기', 'search' => '단어 또는 #태그 검색', diff --git a/app/i18n/lv/admin.php b/app/i18n/lv/admin.php index b2d9b8a3f..f501f0f14 100644 --- a/app/i18n/lv/admin.php +++ b/app/i18n/lv/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Apraksts', 'disabled' => 'Atspējots', 'empty_list' => 'Nav instalētu paplašinājumu', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Ieslēgts', 'latest' => 'Instalēts', 'name' => 'Vārds', diff --git a/app/i18n/lv/conf.php b/app/i18n/lv/conf.php index 30de855c6..b56f6e37a 100644 --- a/app/i18n/lv/conf.php +++ b/app/i18n/lv/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Iepriekšējais', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profila pārvalde', 'api' => 'API pārvalde', diff --git a/app/i18n/lv/gen.php b/app/i18n/lv/gen.php index 6330f8d85..c4f78962d 100644 --- a/app/i18n/lv/gen.php +++ b/app/i18n/lv/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Display', // TODO 'extensions' => 'Paplašinājumi', 'logs' => 'Žurnāls', + 'privacy' => 'Privacy', // TODO 'queries' => 'Lietotāja pieprasījumi', 'reading' => 'Lasīšana', 'search' => 'Meklēt vārdus vai #birkas', diff --git a/app/i18n/nl/admin.php b/app/i18n/nl/admin.php index daeabdfdc..f3f33771d 100644 --- a/app/i18n/nl/admin.php +++ b/app/i18n/nl/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Beschrijving', 'disabled' => 'Uitgeschakeld', 'empty_list' => 'Er zijn geïnstalleerde uitbreidingen', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Ingeschakeld', 'latest' => 'Geïnstalleerd', 'name' => 'Naam', diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php index 46115fc39..f2bf351ab 100644 --- a/app/i18n/nl/conf.php +++ b/app/i18n/nl/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Vorige', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profielbeheer', 'api' => 'API-beheer', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index a63d50cfb..df106c866 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Opmaak', 'extensions' => 'Uitbreidingen', 'logs' => 'Log boeken', + 'privacy' => 'Privacy', // TODO 'queries' => 'Gebruikers informatie', 'reading' => 'Lezen', 'search' => 'Zoek woorden of #labels', diff --git a/app/i18n/oc/admin.php b/app/i18n/oc/admin.php index 9cbd2a9ab..c74e4dcc1 100644 --- a/app/i18n/oc/admin.php +++ b/app/i18n/oc/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Descripcion', 'disabled' => 'Desactivada', 'empty_list' => 'Cap d’extensions pas installadas', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Activada', 'latest' => 'Installada', 'name' => 'Nom', diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php index 30e9eeef0..134c51e64 100644 --- a/app/i18n/oc/conf.php +++ b/app/i18n/oc/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Precedent', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Gestion del perfil', 'api' => 'Gestion API', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index f3d11ba02..29468c587 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Afichatge', 'extensions' => 'Extensions', // IGNORE 'logs' => 'Jornals d’audit', // IGNORE + 'privacy' => 'Privacy', // TODO 'queries' => 'Filtres utilizaire', 'reading' => 'Lectura', 'search' => 'Recercar de mots o d’#etiquetas', diff --git a/app/i18n/pl/admin.php b/app/i18n/pl/admin.php index c22671a38..68ddd8b55 100644 --- a/app/i18n/pl/admin.php +++ b/app/i18n/pl/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Opis', 'disabled' => 'Wyłączone', 'empty_list' => 'Brak zainstalowanych rozszerzeń', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Włączone', 'latest' => 'Zainstalowane', 'name' => 'Nazwa', diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php index 071eef8b3..1ec98a61a 100644 --- a/app/i18n/pl/conf.php +++ b/app/i18n/pl/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Poprzednie', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Zarządzanie profilem', 'api' => 'Zarządzanie API', diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 0f67641be..bdd0d172f 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Wyświetlanie', 'extensions' => 'Rozszerzenia', 'logs' => 'Dziennik', + 'privacy' => 'Privacy', // TODO 'queries' => 'Zapisane zapytania', 'reading' => 'Czytanie', 'search' => 'Wyszukaj wyrazy lub #tagi', diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php index eb509b545..f10a30fc9 100644 --- a/app/i18n/pt-br/admin.php +++ b/app/i18n/pt-br/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Descrição', 'disabled' => 'Desabilitado', 'empty_list' => 'Não há extensões instaladas', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Habilitada', 'latest' => 'Instalado', 'name' => 'Nome', diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php index 0bfc5cf6c..1dd98d627 100644 --- a/app/i18n/pt-br/conf.php +++ b/app/i18n/pt-br/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Anterior', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Gerenciamento de perfil', 'api' => 'Administração da API', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index cc96ccb85..d2abe1351 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Visualização', 'extensions' => 'Extensões', 'logs' => 'Logs', // IGNORE + 'privacy' => 'Privacy', // TODO 'queries' => 'Queries de usuário', 'reading' => 'Leitura', 'search' => 'Procurar por palavras ou #tags', diff --git a/app/i18n/ru/admin.php b/app/i18n/ru/admin.php index 0951a0725..71c1a4bb2 100644 --- a/app/i18n/ru/admin.php +++ b/app/i18n/ru/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Описание', 'disabled' => 'Отключены', 'empty_list' => 'Нет установленных расширений', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Включены', 'latest' => 'Установлено', 'name' => 'Название', diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php index 7b5b49f8b..246bb0b88 100644 --- a/app/i18n/ru/conf.php +++ b/app/i18n/ru/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Предыдущая', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Настройки профиля', 'api' => 'Настройки API', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 188703457..f3ab54dbe 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Отображение', 'extensions' => 'Расширения', 'logs' => 'Журнал', + 'privacy' => 'Privacy', // TODO 'queries' => 'Пользовательские запросы', 'reading' => 'Чтение', 'search' => 'Искать слова или #теги', diff --git a/app/i18n/sk/admin.php b/app/i18n/sk/admin.php index 98860b971..962a54457 100644 --- a/app/i18n/sk/admin.php +++ b/app/i18n/sk/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Popis', 'disabled' => 'Zakázané', 'empty_list' => 'Žiadne nainštalované rozšírenia', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Povolené', 'latest' => 'Nainštalované', 'name' => 'Názov', diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php index 193c3bb88..255916e58 100644 --- a/app/i18n/sk/conf.php +++ b/app/i18n/sk/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Predošlý', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Správca profilu', 'api' => 'Správa API', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index e0c94fb0e..a6f84ed3f 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Zobrazenie', 'extensions' => 'Rozšírenia', 'logs' => 'Záznamy', + 'privacy' => 'Privacy', // TODO 'queries' => 'Používateľské dopyty', 'reading' => 'Čítanie', 'search' => 'Hľadajte slová alebo #značky', diff --git a/app/i18n/tr/admin.php b/app/i18n/tr/admin.php index fc3d3edda..906146d69 100644 --- a/app/i18n/tr/admin.php +++ b/app/i18n/tr/admin.php @@ -116,6 +116,7 @@ return array( 'description' => 'Açıklama', 'disabled' => 'Pasif', 'empty_list' => 'Yüklenmiş eklenti bulunmamaktadır', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => 'Aktif', 'latest' => 'Kuruldu', 'name' => 'İsim', diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php index 0825551f3..87f709350 100644 --- a/app/i18n/tr/conf.php +++ b/app/i18n/tr/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => 'Önceki', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => 'Profil yönetimi', 'api' => 'API yönetimi', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index 34e136096..e430f6376 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -183,6 +183,7 @@ return array( 'display' => 'Görünüm', 'extensions' => 'Eklentiler', 'logs' => 'Log kayıtları', + 'privacy' => 'Privacy', // TODO 'queries' => 'Kullanıcı sorguları', 'reading' => 'Okuma', 'search' => 'Kelime veya #etiket ara', diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php index dca56f65f..2006c6829 100644 --- a/app/i18n/zh-cn/admin.php +++ b/app/i18n/zh-cn/admin.php @@ -116,6 +116,7 @@ return array( 'description' => '描述', 'disabled' => '已禁用', 'empty_list' => '没有已安装的扩展', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => '已启用', 'latest' => '已安装', 'name' => '名称', diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index a39024ffb..e2931dc47 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => '上一页', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => '账户管理', 'api' => 'API 管理', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 3377cb6f6..7b9d5a27d 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -183,6 +183,7 @@ return array( 'display' => '显示', 'extensions' => '扩展', 'logs' => '日志', + 'privacy' => 'Privacy', // TODO 'queries' => '自定义查询', 'reading' => '阅读', 'search' => '搜索内容或#文章标签', diff --git a/app/i18n/zh-tw/admin.php b/app/i18n/zh-tw/admin.php index 4c63f9bf6..f35fa4b5c 100644 --- a/app/i18n/zh-tw/admin.php +++ b/app/i18n/zh-tw/admin.php @@ -116,6 +116,7 @@ return array( 'description' => '描述', 'disabled' => '已禁用', 'empty_list' => '沒有已安裝的擴充功能', + 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO 'enabled' => '已啟用', 'latest' => '已安裝', 'name' => '名稱', diff --git a/app/i18n/zh-tw/conf.php b/app/i18n/zh-tw/conf.php index d75755373..90a1ab910 100644 --- a/app/i18n/zh-tw/conf.php +++ b/app/i18n/zh-tw/conf.php @@ -99,6 +99,10 @@ return array( 'previous' => '上一頁', ), ), + 'privacy' => array( + '_' => 'Privacy', // TODO + 'retrieve_extension_list' => 'Retrieve extension list', // TODO + ), 'profile' => array( '_' => '個人資料管理', 'api' => 'API 管理', diff --git a/app/i18n/zh-tw/gen.php b/app/i18n/zh-tw/gen.php index dcc82edba..b2b1fc67e 100644 --- a/app/i18n/zh-tw/gen.php +++ b/app/i18n/zh-tw/gen.php @@ -183,6 +183,7 @@ return array( 'display' => '顯示', 'extensions' => '擴充功能', 'logs' => '日誌', + 'privacy' => 'Privacy', // TODO 'queries' => '自定義查詢', 'reading' => '閱讀', 'search' => '搜尋內容或#標簽', diff --git a/app/layout/aside_configure.phtml b/app/layout/aside_configure.phtml index 06c5efa83..af366005c 100644 --- a/app/layout/aside_configure.phtml +++ b/app/layout/aside_configure.phtml @@ -43,6 +43,9 @@ <li class="item<?= Minz_Request::controllerName() === 'extension' ? ' active' : '' ?>"> <a href="<?= _url('extension', 'index') ?>"><?= _t('gen.menu.extensions') ?></a> </li> + <li class="item<?= Minz_Request::controllerName() === 'privacy' ? ' active' : '' ?>"> + <a href="<?= _url('configure', 'privacy') ?>"><?= _t('gen.menu.privacy') ?></a> + </li> <?php if (!FreshRSS_Auth::hasAccess('admin')) { ?> <li class="item<?= Minz_Request::actionName() === 'logs' ? ' active' : '' ?>"> <a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a> diff --git a/app/layout/header.phtml b/app/layout/header.phtml index 2e884add5..ad0a5e8e2 100644 --- a/app/layout/header.phtml +++ b/app/layout/header.phtml @@ -79,6 +79,7 @@ <li class="item"><a href="<?= _url('configure', 'shortcut') ?>"><?= _t('gen.menu.shortcuts') ?></a></li> <li class="item"><a href="<?= _url('configure', 'queries') ?>"><?= _t('gen.menu.queries') ?></a></li> <li class="item"><a href="<?= _url('extension', 'index') ?>"><?= _t('gen.menu.extensions') ?></a></li> + <li class="item"><a href="<?= _url('configure', 'privacy') ?>"><?= _t('gen.menu.privacy') ?></a></li> <?= Minz_ExtensionManager::callHookString('menu_configuration_entry') ?> </ul> </li> diff --git a/app/views/configure/privacy.phtml b/app/views/configure/privacy.phtml new file mode 100644 index 000000000..d64358382 --- /dev/null +++ b/app/views/configure/privacy.phtml @@ -0,0 +1,32 @@ +<?php + /** @var FreshRSS_View $this */ + $this->partial('aside_configure'); +?> + +<main class="post"> + <div class="link-back-wrapper"> + <a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a> + </div> + + <h1><?= _t('conf.privacy') ?></h1> + + <form method="post" action="<?= _url('configure', 'privacy') ?>"> + <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" /> + + <div class="form-group"> + <label class="group-name" for="retrieve_extension_list"><?= _t('conf.privacy.retrieve_extension_list') ?></label> + <div class="group-controls"> + <input type="checkbox" id="retrieve_extension_list" name="retrieve_extension_list" value="1"<?= + FreshRSS_Context::userConf()->retrieve_extension_list !== false ? ' checked="checked"' : '' ?> + data-leave-validation="<?= FreshRSS_Context::userConf()->retrieve_extension_list !== false ? 1 : 0 ?>"/> + </div> + </div> + + <div class="form-group form-actions"> + <div class="group-controls"> + <button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button> + <button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button> + </div> + </div> + </form> +</main> diff --git a/app/views/extension/index.phtml b/app/views/extension/index.phtml index 328b4bdd5..9f5bf821b 100644 --- a/app/views/extension/index.phtml +++ b/app/views/extension/index.phtml @@ -76,6 +76,8 @@ <?php } ?> </table> </div> + <?php } else { ?> + <p class="alert alert-warn"><?= _t('admin.extensions.empty_list_help') ?></p> <?php } ?> </main> diff --git a/config-user.default.php b/config-user.default.php index af48f61b8..964ef8860 100644 --- a/config-user.default.php +++ b/config-user.default.php @@ -124,6 +124,7 @@ return array ( 'show_nav_buttons' => true, # List of enabled FreshRSS extensions. 'extensions_enabled' => [], + 'retrieve_extension_list' => true, # Extensions configurations 'extensions' => [], ); |
