From 1f86aae415951b3a5c83d092765fa92337fc29ee Mon Sep 17 00:00:00 2001 From: maTh Date: Mon, 14 Nov 2022 14:54:57 +0100 Subject: fix: sharing service for mailto links for web mail services (#4680) * fix * Update main.js * Update app/i18n/fr/gen.php Co-authored-by: Alexandre Alapetite --- app/i18n/cz/gen.php | 1 + app/i18n/de/gen.php | 1 + app/i18n/en-us/gen.php | 1 + app/i18n/en/gen.php | 1 + app/i18n/es/gen.php | 1 + app/i18n/fr/gen.php | 1 + app/i18n/he/gen.php | 1 + app/i18n/it/gen.php | 1 + app/i18n/ja/gen.php | 1 + app/i18n/ko/gen.php | 1 + app/i18n/nl/gen.php | 1 + app/i18n/oc/gen.php | 1 + app/i18n/pl/gen.php | 1 + app/i18n/pt-br/gen.php | 1 + app/i18n/ru/gen.php | 1 + app/i18n/sk/gen.php | 1 + app/i18n/tr/gen.php | 1 + app/i18n/zh-cn/gen.php | 1 + app/i18n/zh-tw/gen.php | 1 + 19 files changed, 19 insertions(+) (limited to 'app/i18n') diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index 55586b24c..3c9b0ec16 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Schránka', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'E-mail', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index 59f532c74..e3cf385fd 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Zwischenablage', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'E-Mail', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index c5f92ad40..5eb409fdc 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Clipboard', // IGNORE 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 8f7065a83..2ce5871e3 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Clipboard', 'diaspora' => 'Diaspora*', 'email' => 'Email', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', 'gnusocial' => 'GNU social', 'jdh' => 'Journal du hacker', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 209a40dac..54877d3df 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Portapapeles', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 69d260063..fec2b7d4a 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Presse-papier', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Courriel', + 'email-webmail-firefox-fix' => 'Courriel (pour Webmail avec Firefox)', 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index a8df3db6b..20b93eb7e 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Clipboard', // TODO 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'דואר אלקטרוני', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index e5458866c..09844d072 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Appunti', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/ja/gen.php b/app/i18n/ja/gen.php index 69fc8f9c9..85d130e37 100644 --- a/app/i18n/ja/gen.php +++ b/app/i18n/ja/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'クリップボード', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Eメール', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/ko/gen.php b/app/i18n/ko/gen.php index 4f6b6a228..ba15726a3 100644 --- a/app/i18n/ko/gen.php +++ b/app/i18n/ko/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => '클립보드', 'diaspora' => 'Diaspora*', // IGNORE 'email' => '메일', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index abd21f460..e06e05db7 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Klembord', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 41f2c1499..a55b2c147 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Quicha-papiers.', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Corrièl', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 1a7bd69a5..56bd3c082 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Schowek', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'E-mail', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index 969056969..acf954b77 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Área de transferência', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'E-mail', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 3ed1ab1ac..9ba61ae59 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Буфер обмена', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Электронная почта', + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index 6bb5e4161..aa8f1767b 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Schránka', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'E-mail', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index 8839023e6..c65815e8e 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Kopyala', 'diaspora' => 'Diaspora*', // IGNORE 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 2b2249db5..683a38173 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => '剪贴板', 'diaspora' => 'Diaspora*', // IGNORE 'email' => '邮箱', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => '脸书', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE diff --git a/app/i18n/zh-tw/gen.php b/app/i18n/zh-tw/gen.php index 1dcd94eeb..31ef0f692 100644 --- a/app/i18n/zh-tw/gen.php +++ b/app/i18n/zh-tw/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => '剪貼板', 'diaspora' => 'Diaspora*', // IGNORE 'email' => '郵箱', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => '臉書', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE -- cgit v1.2.3 From 937ef98e4ea40cc6c68b918f48a20114384ce163 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 14 Nov 2022 15:26:00 +0100 Subject: Hotfix i18n https://github.com/FreshRSS/FreshRSS/pull/4680 --- app/i18n/el/gen.php | 1 + app/i18n/id/gen.php | 1 + 2 files changed, 2 insertions(+) (limited to 'app/i18n') diff --git a/app/i18n/el/gen.php b/app/i18n/el/gen.php index a0c95ab39..aa1051564 100644 --- a/app/i18n/el/gen.php +++ b/app/i18n/el/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Clipboard', // TODO 'diaspora' => 'Diaspora*', // TODO 'email' => 'Email', // TODO + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // TODO 'gnusocial' => 'GNU social', // TODO 'jdh' => 'Journal du hacker', // TODO diff --git a/app/i18n/id/gen.php b/app/i18n/id/gen.php index 93f8b0afe..3e791c607 100644 --- a/app/i18n/id/gen.php +++ b/app/i18n/id/gen.php @@ -196,6 +196,7 @@ return array( 'clipboard' => 'Clipboard', // TODO 'diaspora' => 'Diaspora*', // TODO 'email' => 'Email', // TODO + 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO 'facebook' => 'Facebook', // TODO 'gnusocial' => 'GNU social', // TODO 'jdh' => 'Journal du hacker', // TODO -- cgit v1.2.3 From ce5531b39a190e435a97453291f1f8a41773aaba Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Tue, 15 Nov 2022 23:06:00 +0800 Subject: Add Chinese for custom date/time format (#4853) * Translate item_timeFormat in Chinese * Update sub.php * Update sub.php --- app/i18n/zh-cn/sub.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/i18n') diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index 4ad401329..cc2b7a738 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -99,8 +99,8 @@ return array( 'help' => '例如 descendant::img/@src', ), 'item_timeFormat' => array( - '_' => 'Custom date/time format', // TODO - 'help' => 'Optional. A format supported by DateTime::createFromFormat() such as d-m-Y H:i:s', // TODO + '_' => '自定义日期、时间格式', + 'help' => '可选。一个被 DateTime::createFromFormat() 支持的日期、时间格式,例如 d-m-Y H:i:s', ), 'item_timestamp' => array( '_' => '文章日期:', -- cgit v1.2.3 From 77c214c83c487f59193ccc7d4cc0e3fb0ac0621d Mon Sep 17 00:00:00 2001 From: Myuki Date: Sun, 20 Nov 2022 21:48:27 +0800 Subject: [i18n] Improve translation: zh-cn (#4856) --- app/i18n/zh-cn/admin.php | 76 +++++++++++++++++++------------------- app/i18n/zh-cn/conf.php | 90 ++++++++++++++++++++++----------------------- app/i18n/zh-cn/feedback.php | 32 ++++++++-------- app/i18n/zh-cn/gen.php | 20 +++++----- app/i18n/zh-cn/index.php | 6 +-- app/i18n/zh-cn/install.php | 42 ++++++++++----------- app/i18n/zh-cn/sub.php | 24 ++++++------ app/i18n/zh-cn/user.php | 18 ++++----- 8 files changed, 154 insertions(+), 154 deletions(-) (limited to 'app/i18n') diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php index 46b4d190a..79bcde2e1 100644 --- a/app/i18n/zh-cn/admin.php +++ b/app/i18n/zh-cn/admin.php @@ -17,7 +17,7 @@ return array( 'api_enabled' => '允许 API 访问 (用于手机应用)', 'form' => '网页表单(传统方式, 需要 JavaScript)', 'http' => 'HTTP(面向启用 HTTPS 的高级用户)', - 'none' => '无认证(危险)', + 'none' => '无(危险)', 'title' => '认证', 'token' => '认证口令', 'token_help' => '用于不经认证访问默认用户的 RSS 输出:', @@ -26,7 +26,7 @@ return array( ), 'check_install' => array( 'cache' => array( - 'nok' => '请检查 ./data/cache 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data/cache 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'cache 目录权限正常', ), 'categories' => array( @@ -39,27 +39,27 @@ return array( ), 'ctype' => array( 'nok' => '找不到字符类型检测库(php-ctype)', - 'ok' => '已找到字符类型检测库 (php-ctype)', + 'ok' => '已找到字符类型检测库(ctype)', ), 'curl' => array( - 'nok' => '找不到 cURL 库(php-cURL)', - 'ok' => '已找到 cURL 库(php-cURL)', + 'nok' => '找不到 cURL 库(php-curl 包)', + 'ok' => '已找到 cURL 库', ), 'data' => array( - 'nok' => '请检查 ./data 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'data 目录权限正常', ), - 'database' => '数据库相关', + 'database' => '数据库安装', 'dom' => array( - 'nok' => '找不到用于浏览 DOM 的库(php-xml)', - 'ok' => '已找到用于浏览 DOM 的库(php-xml)', + 'nok' => '找不到用于浏览 DOM 的库(php-xml 包)', + 'ok' => '已找到用于浏览 DOM 的库', ), 'entries' => array( 'nok' => 'Entry 表配置错误', - 'ok' => 'Entry 表正常', + 'ok' => 'Entry 表配置正常', ), 'favicons' => array( - 'nok' => '请检查 ./data/favicons 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data/favicons 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'favicons 目录权限正常', ), 'feeds' => array( @@ -67,46 +67,46 @@ return array( 'ok' => 'Feed 表正常', ), 'fileinfo' => array( - 'nok' => '找不到 fileinfo 库(php-fileinfo)', - 'ok' => '已找到 fileinfo 库(php-fileinfo)', + 'nok' => '找不到 PHP fileinfo 库(php-fileinfo 包)', + 'ok' => '已找到 fileinfo 库', ), 'files' => '文件相关', 'json' => array( - 'nok' => '找不到 JSON 扩展(php-json )', - 'ok' => '已找到 JSON 扩展(php-json)', + 'nok' => '找不到 JSON 扩展(php-json 包)', + 'ok' => '已找到 JSON 扩展', ), 'mbstring' => array( - 'nok' => '找不到推荐的 Unicode 解析库(mbstring)', - 'ok' => '已找到推荐的 Unicode 解析库(mbstring)', + 'nok' => '找不到推荐用于 Unicode 的 mbstring 库', + 'ok' => '已找到推荐用于 Unicode 的 mbstring 库', ), 'pcre' => array( 'nok' => '找不到正则表达式解析库(php-pcre)', - 'ok' => '已找到正则表达式解析库(php-pcre)', + 'ok' => '已找到正则表达式解析库(PCRE)', ), 'pdo' => array( - 'nok' => '找不到 PDO 或支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - 'ok' => '已找到 PDO 和支持的至少一种驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', + 'nok' => '找不到 PDO 或其中一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', + 'ok' => '已找到 PDO 和至少一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', ), 'php' => array( - '_' => 'PHP 相关', + '_' => 'PHP 安装', 'nok' => '你的 PHP 版本为 %s,但 FreshRSS 最低需要 %s', 'ok' => '你的 PHP 版本为 %s,与 FreshRSS 兼容', ), 'tables' => array( 'nok' => '数据库中缺少一个或多个表', - 'ok' => '数据库中相关表存在', + 'ok' => '数据库中存在正确的表', ), 'title' => '环境检查', 'tokens' => array( - 'nok' => '请检查 ./data/tokens 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data/tokens 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'tokens 目录权限正常', ), 'users' => array( - 'nok' => '请检查 ./data/users 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data/users 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'users 目录权限正常', ), 'zip' => array( - 'nok' => '找不到 ZIP 扩展(php-zip)', + 'nok' => '找不到 ZIP 扩展(php-zip 包)', 'ok' => '已找到 ZIP 扩展', ), ), @@ -119,10 +119,10 @@ return array( 'enabled' => '已启用', 'latest' => '已安装', 'name' => '名称', - 'no_configure_view' => '此扩展不能配置。', + 'no_configure_view' => '此扩展无法配置。', 'system' => array( '_' => '系统扩展', - 'no_rights' => '系统扩展(你无权修改)', + 'no_rights' => '系统扩展(你没有所需权限)', ), 'title' => '扩展', 'update' => '更新可用', @@ -130,20 +130,20 @@ return array( 'version' => '版本', ), 'stats' => array( - '_' => '统计', + '_' => '统计数据', 'all_feeds' => '所有订阅源', 'category' => '分类', 'entry_count' => '文章数', 'entry_per_category' => '各分类文章数', - 'entry_per_day' => '近三十日每日文章数', - 'entry_per_day_of_week' => '一周各日(平均:%.2f 条消息)', - 'entry_per_hour' => '各小时(平均:%.2f 条消息)', - 'entry_per_month' => '各月(平均:%.2f 条消息)', + 'entry_per_day' => '每日文章数(近三十日)', + 'entry_per_day_of_week' => '一周中(平均:%.2f 条消息)', + 'entry_per_hour' => '各小时(平均:%.2f 条消息)', + 'entry_per_month' => '各月(平均:%.2f 条消息)', 'entry_repartition' => '文章分布', 'feed' => '订阅源', 'feed_per_category' => '各分类订阅源数', 'idle' => '长期无更新订阅源', - 'main' => '主要统计', + 'main' => '主要统计数据', 'main_stream' => '首页', 'no_idle' => '订阅源近期皆有更新!', 'number_entries' => '%d 篇文章', @@ -158,9 +158,9 @@ return array( ), 'system' => array( '_' => '系统配置', - 'auto-update-url' => '自动升级服务器地址', + 'auto-update-url' => '自动更新服务器 URL', 'cookie-duration' => array( - 'help' => '单位(秒)', + 'help' => '单位:秒', 'number' => '保持登录的时长', ), 'force_email_validation' => '强制验证邮箱地址', @@ -178,8 +178,8 @@ return array( ), ), 'status' => array( - 'disabled' => '注册表单禁用', - 'enabled' => '注册表单启用', + 'disabled' => '注册表单已禁用', + 'enabled' => '注册表单已启用', ), 'title' => '用户注册表单', ), @@ -191,7 +191,7 @@ return array( 'current_version' => '当前 FreshRSS 版本为 %s。', 'last' => '上次检查:%s', 'none' => '没有可用更新', - 'title' => '系统更新', + 'title' => '更新系统', ), 'user' => array( 'admin' => '管理员', diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index 8f8ef09ad..3a1282a12 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -13,17 +13,17 @@ return array( 'archiving' => array( '_' => '归档', - 'exception' => '高级清理策略', - 'help' => '具体选项位于各订阅源的设置', - 'keep_favourites' => '不清理已收藏的文章', - 'keep_labels' => '不清理标签', + 'exception' => '清理例外', + 'help' => '更多可用选项位于各订阅源的设置', + 'keep_favourites' => '永不删除已收藏的文章', + 'keep_labels' => '永不删除标签', 'keep_max' => '最多保留的文章数', 'keep_min_by_feed' => '至少保留的文章数', 'keep_period' => '文章最多保留', - 'keep_unreads' => '不清理未读文章', - 'maintenance' => '优化', + 'keep_unreads' => '永不删除未读文章', + 'maintenance' => '维护', 'optimize' => '优化数据库', - 'optimize_help' => '偶尔执行优化可以减少数据库大小', + 'optimize_help' => '偶尔执行可以减少数据库大小', 'policy' => '清理策略', 'policy_warning' => '如果未选择清理策略,则将保留全部文章。', 'purge_now' => '立即清除', @@ -37,7 +37,7 @@ return array( 'display_authors' => '作者', 'entry' => '文章图标', 'publication_date' => '更新日期', - 'related_tags' => '相关标签', + 'related_tags' => '文章标签', 'sharing' => '分享', 'summary' => '摘要', 'top_line' => '顶栏', @@ -52,10 +52,10 @@ return array( 'theme_not_available' => '“%s” 主题不再可用,请选择其他主题。', 'thumbnail' => array( 'label' => '缩略图', - 'landscape' => '风景', + 'landscape' => '横向', 'none' => '无', - 'portrait' => '肖像', - 'square' => '方块', + 'portrait' => '纵向', + 'square' => '方形', ), 'title' => '显示', 'width' => array( @@ -80,17 +80,17 @@ return array( ), ), 'profile' => array( - '_' => '用户管理', + '_' => '账户管理', 'api' => 'API 管理', 'delete' => array( '_' => '账户删除', - 'warn' => '将删除你的帐户以及所有相关数据!', + 'warn' => '你的帐户以及所有相关数据将被删除。', ), 'email' => '邮箱地址', 'password_api' => 'API 密码
(例如用于手机应用)', 'password_form' => '密码
(用于 Web-form 登录方式)', 'password_format' => '至少 7 个字符', - 'title' => '用户帐户', + 'title' => '账户', ), 'query' => array( '_' => '自定义查询', @@ -135,67 +135,67 @@ return array( ), 'reading' => array( '_' => '阅读', - 'after_onread' => '「全部标记为已读」后', + 'after_onread' => '“全部标记为已读”后', 'always_show_favorites' => '默认显示收藏夹中所有的文章', 'article' => array( 'authors_date' => array( '_' => '作者和日期', - 'both' => '两者都显示', - 'footer' => '仅页脚显示', - 'header' => '仅页眉显示', + 'both' => '页脚与页眉', + 'footer' => '页脚', + 'header' => '页眉', 'none' => '不显示', ), 'feed_name' => array( - 'above_title' => '在文章标题和标签上方', + 'above_title' => '在标题/标签上方', 'none' => '不显示', 'with_authors' => '与作者和日期一行', ), 'feed_title' => '订阅源标题', 'tags' => array( '_' => '文章标签', - 'both' => '两者都显示', - 'footer' => '仅页脚显示', - 'header' => '仅页眉显示', + 'both' => '页脚与页眉', + 'footer' => '页脚', + 'header' => '页眉', 'none' => '不显示', ), 'tags_max' => array( '_' => '标签最多显示个数', - 'help' => '0 标识显示所有标签', + 'help' => '0 表示:显示所有标签且不折叠', ), ), 'articles_per_page' => '每页文章数', 'auto_load_more' => '在页面底部载入更多文章', 'auto_remove_article' => '阅读后隐藏文章', - 'confirm_enabled' => '「全部标记为已读」时显示确认对话框', + 'confirm_enabled' => '“全部标记为已读”时显示确认对话框', 'display_articles_unfolded' => '默认展开显示文章', 'display_categories_unfolded' => '展开的分类', 'headline' => array( 'articles' => '文章:打开/关闭', 'articles_header_footer' => '文章: 页眉/页脚', - 'categories' => '左侧导航:分类', + 'categories' => '左侧导航栏:分类', 'mark_as_read' => '标为已读选项', 'misc' => '其它', 'view' => '浏览', ), - 'hide_read_feeds' => '隐藏没有未读文章的分类和订阅源 (启用「显示所有文章」后不生效)', + 'hide_read_feeds' => '隐藏没有未读文章的分类和订阅源(启用“显示所有文章”后不生效)', 'img_with_lazyload' => '延迟加载图片', 'jump_next' => '跳转到下一未读项(订阅源或分类)', - 'mark_updated_article_unread' => '将更新的文章设为未读', + 'mark_updated_article_unread' => '将有更新的文章设为未读', 'number_divided_when_reader' => '阅读视图中显示一半', 'read' => array( 'article_open_on_website' => '在打开原文章后', 'article_viewed' => '在文章被浏览后', 'keep_max_n_unread' => '未读最多保留 n 条', 'scroll' => '在滚动浏览后', - 'upon_gone' => '在被原订阅源移除后', + 'upon_gone' => '在被原订阅源被移除后', 'upon_reception' => '在接收文章后', 'when' => '何时将文章标记为已读', 'when_same_title' => '已存在 n 条相同标题文章', ), 'show' => array( '_' => '文章显示', - 'active_category' => '激活的分类', - 'adaptive' => '智能显示', + 'active_category' => '活跃的分类', + 'adaptive' => '自适应显示', 'all_articles' => '显示所有', 'all_categories' => '所有分类', 'no_category' => '无分类', @@ -203,13 +203,13 @@ return array( 'unread' => '只显示未读', ), 'show_fav_unread_help' => '同样适用于标签', - 'sides_close_article' => '点击文章区域外以关闭', + 'sides_close_article' => '点击文章文本区域外关闭文章', 'sort' => array( '_' => '排列顺序', 'newer_first' => '由新至旧', 'older_first' => '由旧至新', ), - 'sticky_post' => '打开文章时将其置于页首', + 'sticky_post' => '打开文章时将其置顶', 'title' => '阅读', 'view' => array( 'default' => '默认视图', @@ -222,20 +222,20 @@ return array( '_' => '分享', 'add' => '添加分享方式', 'blogotext' => 'Blogotext', // IGNORE - 'deprecated' => '这项功能已废弃并在将来版本的 FreshRSS 中移除,详情请见 说明文档.', + 'deprecated' => '此功能已被废弃并会在未来的 FreshRSS 版本中移除,详情见 说明文档.', 'diaspora' => 'Diaspora*', // IGNORE - 'email' => '邮箱', // IGNORE - 'facebook' => '脸书', // IGNORE + 'email' => 'Email', // IGNORE + 'facebook' => 'Facebook', // IGNORE 'more_information' => '更多信息', 'print' => '打印', 'raindrop' => 'Raindrop.io', // IGNORE 'remove' => '删除分享方式', 'shaarli' => 'Shaarli', // IGNORE - 'share_name' => '名称', - 'share_url' => '地址', + 'share_name' => '显示名称', + 'share_url' => '用于分享的 URL', 'title' => '分享', - 'twitter' => '推特', // IGNORE - 'wallabag' => 'Wallabag', // IGNORE + 'twitter' => 'Twitter', // IGNORE + 'wallabag' => 'wallabag', // IGNORE ), 'shortcut' => array( '_' => '快捷键', @@ -243,9 +243,9 @@ return array( 'auto_share' => '分享', 'auto_share_help' => '如果有多种分享方式,则会按照它们的序号依次访问。', 'close_dropdown' => '关闭菜单', - 'collapse_article' => '收起文章', + 'collapse_article' => '折叠文章', 'first_article' => '打开第一篇文章', - 'focus_search' => '聚焦到搜索框', + 'focus_search' => '访问搜索框', 'global_view' => '切换到全屏视图', 'help' => '显示帮助文档', 'javascript' => '若要使用快捷键,必须启用 JavaScript', @@ -254,18 +254,18 @@ return array( 'mark_favorite' => '加入收藏', 'mark_read' => '设为已读', 'navigation' => '浏览', - 'navigation_help' => '组合 ⇧ Shift 键,浏览快捷键将生效于订阅源。
组合 Alt ⎇ 键,浏览快捷键将生效于分类。', + 'navigation_help' => '组合 ⇧ Shift 键,导航快捷键将应用于订阅源。
组合 Alt ⎇ 键,导航快捷键将应用于分类。', 'navigation_no_mod_help' => '以下快捷键不支持组合键(Shift 或 Alt)', 'next_article' => '打开下一篇文章', 'next_unread_article' => '打开下一篇未读文章', - 'non_standard' => '这些键 (%s) 可能不能作为快捷键', + 'non_standard' => '这些键(%s)可能不能作为快捷键', 'normal_view' => '切换到普通视图', 'other_action' => '其他操作', 'previous_article' => '打开上一篇文章', 'reading_view' => '切换到阅读视图', 'rss_view' => '切换到 RSS 视图', 'see_on_website' => '在原网站中查看', - 'shift_for_all_read' => '组合 Alt ⎇键 将上方的文章标记为已读
组合 ⇧ Shift按键 可以将全部文章设为已读', + 'shift_for_all_read' => '+ Alt ⎇ 键将上方的文章标记为已读
+ ⇧ Shift 键将所有文章设为已读', 'skip_next_article' => '跳转到下一篇文章而不打开', 'skip_previous_article' => '跳转到上一篇文章而不打开', 'title' => '快捷键', @@ -275,7 +275,7 @@ return array( 'views' => '视图', ), 'user' => array( - 'articles_and_size' => '%s 篇文章 (%s)', + 'articles_and_size' => '%s 篇文章(%s)', 'current' => '当前用户', 'is_admin' => '该用户为管理员', 'users' => '用户', diff --git a/app/i18n/zh-cn/feedback.php b/app/i18n/zh-cn/feedback.php index 020e70918..701471f4e 100644 --- a/app/i18n/zh-cn/feedback.php +++ b/app/i18n/zh-cn/feedback.php @@ -20,8 +20,8 @@ return array( ), 'api' => array( 'password' => array( - 'failed' => '您的密码无法修改', - 'updated' => '您的密码已修改', + 'failed' => '你的密码无法修改', + 'updated' => '你的密码已修改', ), ), 'auth' => array( @@ -43,7 +43,7 @@ return array( 'already_enabled' => '%s 已启用', 'cannot_remove' => '无法删除 %s', 'disable' => array( - 'ko' => '禁用 %s 失败。检查 FreshRSS 日志 查看详情。', + 'ko' => '无法禁用 %s。检查 FreshRSS 日志 查看详情。', 'ok' => '%s 现已禁用', ), 'enable' => array( @@ -56,15 +56,15 @@ return array( 'removed' => '%s 已删除', ), 'import_export' => array( - 'export_no_zip_extension' => '服务器未启用 ZIP 扩展。请尝试逐个导出文件。', - 'feeds_imported' => '你的订阅已导入,即将刷新', + 'export_no_zip_extension' => '服务器未启用 ZIP 扩展,请尝试逐个导出文件。', + 'feeds_imported' => '你的订阅源已导入,即将刷新', 'feeds_imported_with_errors' => '你的订阅源已导入,但发生错误', 'file_cannot_be_uploaded' => '文件未能上传!', 'no_zip_extension' => '服务器未启用 ZIP 扩展。', 'zip_error' => '导入 ZIP 文件时出错', ), 'profile' => array( - 'error' => '你的帐户修改失败', + 'error' => '你的帐户无法修改', 'updated' => '你的帐户已修改', ), 'sub' => array( @@ -79,7 +79,7 @@ return array( 'emptied' => '已清空分类', 'error' => '更新分类失败', 'name_exists' => '分类名已存在', - 'no_id' => '你必须明确分类编号', + 'no_id' => '你必须指定分类 ID', 'no_name' => '分类名不能为空', 'not_delete_default' => '你不能删除默认分类!', 'not_exist' => '分类不存在!', @@ -94,21 +94,21 @@ return array( 'cache_cleared' => '%s 缓存已清理', 'deleted' => '已删除订阅源', 'error' => '订阅源更新失败', - 'internal_problem' => '订阅源添加失败。检查 FreshRSS 日志 查看详情。你可以在地址链接后附加 #force_feed 从而尝试强制添加。', - 'invalid_url' => '地址链接 %s 无效', + 'internal_problem' => '订阅源添加失败,检查 FreshRSS 日志 查看详情。你可以在 URL 后添加 #force_feed 尝试强制添加。', + 'invalid_url' => 'URL %s 无效', 'n_actualized' => '已更新 %d 个订阅源', 'n_entries_deleted' => '已删除 %d 篇文章', - 'no_refresh' => '没有可刷新的订阅源…', + 'no_refresh' => '没有可刷新的订阅源', 'not_added' => '%s 添加失败', 'not_found' => '无法找到订阅', 'over_max' => '你已达到订阅源数上限(%d)', - 'reloaded' => '%s 已重置', + 'reloaded' => '%s 已重新加载', 'selector_preview' => array( 'http_error' => '无法加载网站内容。', - 'no_entries' => '您的订阅中没有任何条目。您至少需要一个条目来创建一个预览。', + 'no_entries' => '你的订阅中没有任何条目,你至少需要一个条目来创建一个预览。', 'no_feed' => '网络错误(订阅源不存在)', - 'no_result' => '选择器没有匹配到任何东西。作为备用,原始的feed文本将被显示出来。', - 'selector_empty' => '选择器是空的。你需要一个来创建预览。', + 'no_result' => '选择器没有匹配到任何东西,回退显示原始的订阅源文本。', + 'selector_empty' => '选择器是空的,你需要一个来创建预览。', ), 'updated' => '已更新订阅源', ), @@ -122,10 +122,10 @@ return array( 'update' => array( 'can_apply' => 'FreshRSS 将更新到 版本 %s。', 'error' => '更新出错:%s', - 'file_is_nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'file_is_nok' => '请检查 %s 目录权限。HTTP 服务器必须拥有写入权限。', 'finished' => '更新完成!', 'none' => '没有可用更新', - 'server_not_found' => '找不到更新服务器 [%s]', + 'server_not_found' => '找不到更新服务器。 [%s]', ), 'user' => array( 'created' => array( diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 683a38173..0b6f1cba6 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -12,7 +12,7 @@ return array( 'action' => array( - 'actualize' => '更新提要', + 'actualize' => '更新订阅源', 'add' => '添加', 'back' => '← 返回', 'back_to_rss_feeds' => '← 返回订阅源', @@ -26,7 +26,7 @@ return array( 'export' => '导出', 'filter' => '过滤', 'import' => '导入', - 'load_default_shortcuts' => '重置快捷键', + 'load_default_shortcuts' => '加载默认快捷键', 'manage' => '管理', 'mark_read' => '标记已读', 'open_url' => '打开链接', @@ -38,7 +38,7 @@ return array( 'see_website' => '网站中查看', 'submit' => '提交', 'truncate' => '删除所有文章', - 'update' => '更新订阅', + 'update' => '更新', ), 'auth' => array( 'accept_tos' => '我接受 服务条款', @@ -127,7 +127,7 @@ return array( 'js' => array( 'category_empty' => '清空分类', 'confirm_action' => '你确定要执行此操作吗?这将不可撤销!', - 'confirm_action_feed_cat' => '你确定要执行此操作吗?你将丢失相关的收藏和自定义查询。这将不可撤销!', + 'confirm_action_feed_cat' => '你确定要执行此操作吗?你将丢失相关的收藏和自定义查询,这将不可撤销!', 'feedback' => array( 'body_new_articles' => 'FreshRSS 中有 %%d 篇文章等待阅读。', 'body_unread_articles' => '(未读: %%d)', @@ -180,7 +180,7 @@ return array( 'system' => '系统配置', 'update' => '更新', 'user_management' => '用户管理', - 'user_profile' => '用户帐户', + 'user_profile' => '帐户', ), 'period' => array( 'days' => '天', @@ -195,9 +195,9 @@ return array( 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => '剪贴板', 'diaspora' => 'Diaspora*', // IGNORE - 'email' => '邮箱', // IGNORE - 'email-webmail-firefox-fix' => 'Email (webmail - fix for Firefox)', // TODO - 'facebook' => '脸书', // IGNORE + 'email' => 'Email', // IGNORE + 'email-webmail-firefox-fix' => 'Email (webmail - 兼容 Firefox)', + 'facebook' => 'Facebook', // IGNORE 'gnusocial' => 'GNU social', // IGNORE 'jdh' => 'Journal du hacker', // IGNORE 'lemmy' => 'Lemmy', // IGNORE @@ -212,10 +212,10 @@ return array( 'raindrop' => 'Raindrop.io', // IGNORE 'reddit' => 'Reddit', // IGNORE 'shaarli' => 'Shaarli', // IGNORE - 'twitter' => '推特', // IGNORE + 'twitter' => 'Twitter', // IGNORE 'wallabag' => 'Wallabag v1', // IGNORE 'wallabagv2' => 'Wallabag v2', // IGNORE - 'web-sharing-api' => 'Web分享', + 'web-sharing-api' => '系统分享', 'whatsapp' => 'Whatsapp', // IGNORE 'xing' => 'Xing', // IGNORE ), diff --git a/app/i18n/zh-cn/index.php b/app/i18n/zh-cn/index.php index 916140107..59d9ffb87 100644 --- a/app/i18n/zh-cn/index.php +++ b/app/i18n/zh-cn/index.php @@ -17,7 +17,7 @@ return array( 'bugs_reports' => '报告错误', 'credits' => '致谢', 'credits_content' => '某些设计元素来自于 Bootstrap ,尽管 FreshRSS 并没有使用此框架。图标 来自于 GNOME 项目Open Sans 字体出自 Steve Matteson 之手。FreshRSS 基于 PHP 框架 Minz。', - 'freshrss_description' => 'FreshRSS 是一个自托管的 RSS 聚合服务,类似于 Kriss FeedLeed。 它不仅轻快又易用,而且强大又易于配置。', + 'freshrss_description' => 'FreshRSS 是一个自托管的 RSS 聚合服务,类似于 Kriss FeedLeed。 它不仅轻快易用,并且强大又易于配置。', 'github' => 'Github Issues', 'license' => '授权', 'project_website' => '项目网站', @@ -25,8 +25,8 @@ return array( 'version' => '版本', ), 'feed' => array( - 'add' => '你可以添加一些订阅源。', - 'empty' => '暂时没有文章可显示。', + 'add' => '请添加一些订阅源。', + 'empty' => '没有文章可以显示。', 'rss_of' => '%s 的订阅源', 'title' => '首页', 'title_fav' => '收藏', diff --git a/app/i18n/zh-cn/install.php b/app/i18n/zh-cn/install.php index 8927674d2..1d9d61e38 100644 --- a/app/i18n/zh-cn/install.php +++ b/app/i18n/zh-cn/install.php @@ -21,7 +21,7 @@ return array( 'auth' => array( 'form' => '网页表单(传统方式, 依赖 JavaScript)', 'http' => 'HTTP(面向启用 HTTPS 的高级用户)', - 'none' => '无认证(危险)', + 'none' => '无(危险)', 'password_form' => '密码
(用于网页表单登录方式)', 'password_format' => '至少 7 个字符', 'type' => '认证方式', @@ -30,61 +30,61 @@ return array( '_' => '数据库', 'conf' => array( '_' => '数据库配置', - 'ko' => '请验证你的数据库信息', + 'ko' => '验证你的数据库信息', 'ok' => '数据库配置已保存', ), 'host' => '主机', - 'password' => '密码', + 'password' => '数据库密码', 'prefix' => '表前缀', 'type' => '数据库类型', - 'username' => '用户名', + 'username' => '数据库用户名', ), 'check' => array( '_' => '检查', 'already_installed' => '我们检测到 FreshRSS 已经安装!', 'cache' => array( - 'nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 %s 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'cache 目录权限正常', ), 'ctype' => array( 'nok' => '找不到字符类型检测库(php-ctype)', - 'ok' => '已找到字符类型检测库', + 'ok' => '已找到字符类型检测库(ctype)', ), 'curl' => array( - 'nok' => '找不到 cURL 库(php-curl)', + 'nok' => '找不到 cURL 库(php-curl 包)', 'ok' => '已找到 cURL 库', ), 'data' => array( - 'nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 %s 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'data 目录权限正常', ), 'dom' => array( - 'nok' => '找不到用于浏览 DOM 的库(php-xml)', + 'nok' => '找不到用于浏览 DOM 的库(php-xml 包)', 'ok' => '已找到用于浏览 DOM 的库', ), 'favicons' => array( - 'nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 ./data/favicons 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'favicons 目录权限正常', ), 'fileinfo' => array( - 'nok' => '找不到 PHP fileinfo 库(php-fileinfo)', + 'nok' => '找不到 PHP fileinfo 库(fileinfo 包)', 'ok' => '已找到 fileinfo 库', ), 'json' => array( - 'nok' => '找不到推荐的 JSON 解析库', - 'ok' => '已找到推荐的 JSON 解析库', + 'nok' => '找不到 JSON 扩展(php-json 包)', + 'ok' => '已找到 JSON 扩展', ), 'mbstring' => array( - 'nok' => '找不到推荐的 Unicode 解析库(mbstring)', - 'ok' => '已找到推荐的 Unicode 解析库', + 'nok' => '找不到推荐用于 Unicode 的 mbstring 库', + 'ok' => '已找到推荐用于 Unicode 的 mbstring 库', ), 'pcre' => array( 'nok' => '找不到正则表达式解析库(php-pcre)', - 'ok' => '已找到正则表达式解析库', + 'ok' => '已找到正则表达式解析库(PCRE)', ), 'pdo' => array( - 'nok' => '找不到 PDO 或支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - 'ok' => '已找到 PDO 和支持的至少一种驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', + 'nok' => '找不到 PDO 或其中一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', + 'ok' => '已找到 PDO 和至少一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', ), 'php' => array( 'nok' => '你的 PHP 版本为 %s,但 FreshRSS 最低需要 %s', @@ -92,12 +92,12 @@ return array( ), 'reload' => '再检查一遍', 'tmp' => array( - 'nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 %s 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => '缓存目录权限正常。', ), 'unknown_process_username' => '未知', 'users' => array( - 'nok' => '请检查 %s 目录权限。HTTP 服务器必须有其写入权限。', + 'nok' => '请检查 %s 目录权限,HTTP 服务器必须拥有写入权限。', 'ok' => 'users 目录权限正常', ), 'xml' => array( @@ -114,7 +114,7 @@ return array( 'fix_errors_before' => '请在继续下一步前修复错误', 'javascript_is_better' => '启用 JavaScript 会使 FreshRSS 工作得更好', 'js' => array( - 'confirm_reinstall' => '重新安装 FreshRSS 将会重置之前的配置。你确定要继续吗?', + 'confirm_reinstall' => '重新安装 FreshRSS 将会重置之前的配置,你确定要继续吗?', ), 'language' => array( '_' => '语言', diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index cc2b7a738..2f9d17ace 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -16,9 +16,9 @@ return array( 'title' => 'API', // IGNORE ), 'bookmarklet' => array( - 'documentation' => '拖动此书签到你的书签栏或者右键选择「收藏此链接」,然后在你想要订阅的页面上点击「订阅」按钮', + 'documentation' => '拖动此书签到你的书签栏或者右键选择「收藏此链接」,然后在你想要订阅的页面上点击「订阅」按钮。', 'label' => '订阅', - 'title' => '书签应用', + 'title' => '书签', ), 'category' => array( '_' => '分类', @@ -26,18 +26,18 @@ return array( 'archiving' => '归档', 'dynamic_opml' => array( '_' => '动态订阅', - 'help' => '使用地址上的 OPML 文件 中的订阅源填充这一分类', + 'help' => '使用 URL 上的 OPML 文件 中的订阅源填充这一分类', ), 'empty' => '空分类', 'information' => '信息', - 'opml_url' => 'OPML 地址', + 'opml_url' => 'OPML URL', // IGNORE 'position' => '显示位置', 'position_help' => '控制分类排列顺序', 'title' => '标题', ), 'feed' => array( 'accept_cookies' => '接受 Cookies', - 'accept_cookies_help' => '允许提要服务器设置 Cookies(仅在请求期间存储在内存中)', + 'accept_cookies_help' => '允许订阅源服务器设置 Cookies(仅在请求期间存储在内存中)', 'add' => '添加订阅源', 'advanced' => '高级', 'archiving' => '归档', @@ -77,8 +77,8 @@ return array( 'html_xpath' => array( '_' => 'HTML + XPath (Web 抓取)', 'feed_title' => array( - '_' => '提要标题', - 'help' => '如 //title 或是静态字符串如 "My custom feed"', + '_' => '订阅源标题', + 'help' => '如 //title 或是静态字符串如: "My custom feed"', ), 'help' => 'XPath 1.0 是为资深用户准备的标准查询语言,FreshRSS 用以实现 Web 抓取.', 'item' => array( @@ -99,8 +99,8 @@ return array( 'help' => '例如 descendant::img/@src', ), 'item_timeFormat' => array( - '_' => '自定义日期、时间格式', - 'help' => '可选。一个被 DateTime::createFromFormat() 支持的日期、时间格式,例如 d-m-Y H:i:s', + '_' => '自定义日期/时间格式', + 'help' => '可选项, 格式参见 DateTime::createFromFormat() 例如 d-m-Y H:i:s', ), 'item_timestamp' => array( '_' => '文章日期:', @@ -111,7 +111,7 @@ return array( 'help' => '注意使用 XPath 轴 descendant::,例如 descendant::h2', ), 'item_uid' => array( - '_' => '文章唯一标识', + '_' => '文章唯一 ID', 'help' => '可选,例如: descendant::div/@data-uri', ), 'item_uri' => array( @@ -175,8 +175,8 @@ return array( 'export_opml' => '导出订阅源列表(OPML)', 'export_starred' => '导出你的收藏', 'feed_list' => '%s 文章列表', - 'file_to_import' => '需要导入的文件
(OPML、JSON 或 ZIP)', - 'file_to_import_no_zip' => '需要导入的文件
(OPML 或 JSON)', + 'file_to_import' => '需要导入的文件
(OPML、JSON 或 ZIP)', + 'file_to_import_no_zip' => '需要导入的文件
(OPML 或 JSON)', 'import' => '导入', 'starred_list' => '收藏文章列表', 'title' => '导入/导出', diff --git a/app/i18n/zh-cn/user.php b/app/i18n/zh-cn/user.php index 8b4d35a7f..8a096b985 100644 --- a/app/i18n/zh-cn/user.php +++ b/app/i18n/zh-cn/user.php @@ -13,21 +13,21 @@ return array( 'email' => array( 'feedback' => array( - 'invalid' => '电子邮箱地址无效', + 'invalid' => '邮箱地址无效', 'required' => '必须填写邮箱地址', ), 'validation' => array( - 'change_email' => '您可以在 用户管理 中变更您的邮箱地址', - 'email_sent_to' => '我们已通过 %s 发送验证邮件给您,请按其中指示来验证邮箱地址。', + 'change_email' => '你可以在 用户管理 中变更你的邮箱地址', + 'email_sent_to' => '我们已通过 %s 发送验证邮件给你,请按其中指示来验证邮箱地址。', 'feedback' => array( - 'email_failed' => '由于服务器配置错误,我们无法向您发送邮件。', - 'email_sent' => '邮件已发送到您的邮箱中', + 'email_failed' => '由于服务器配置错误,我们无法向你发送邮件。', + 'email_sent' => '邮件已发送到你的邮箱中', 'error' => '邮箱地址无法通过验证', 'ok' => '邮箱地址已成功通过验证', 'unnecessary' => '该邮箱地址已被验证', 'wrong_token' => '由于令牌错误,邮箱地址无法通过验证。', ), - 'need_to' => '您需要先验证邮箱地址才能使用 %s', + 'need_to' => '你需要先验证邮箱地址才能使用 %s', 'resend_email' => '重发邮件', 'title' => '验证邮箱地址', ), @@ -35,8 +35,8 @@ return array( 'mailer' => array( 'email_need_validation' => array( 'body' => '%s,欢迎', - 'title' => '您需要验证您的帐户', - 'welcome' => '您已注册 %s 现在只需点击下方链接通过邮箱验证即可完成注册:', + 'title' => '你需要验证你的帐户', + 'welcome' => '你已注册 %s 现在只需点击下方链接通过邮箱验证即可完成注册:', ), ), 'password' => array( @@ -44,7 +44,7 @@ return array( ), 'tos' => array( 'feedback' => array( - 'invalid' => '您必须接受服务条款才能注册', + 'invalid' => '你必须接受服务条款才能注册', ), ), 'username' => array( -- cgit v1.2.3 From 6261dc9cf41aaaa0eb2a05fbe81bc107ab91bbdd Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Tue, 29 Nov 2022 15:27:32 +0100 Subject: User-defined time zone (#4906) * User-defined time zone #fix https://github.com/FreshRSS/FreshRSS/issues/2754 * Update app/i18n/nl/conf.php Co-authored-by: Frans de Jonge * Timezone when creating a new user Co-authored-by: Frans de Jonge --- app/Controllers/configureController.php | 1 + app/Controllers/userController.php | 1 + app/FreshRSS.php | 3 +++ app/Models/UserConfiguration.php | 1 + app/i18n/cz/conf.php | 1 + app/i18n/de/conf.php | 1 + app/i18n/el/conf.php | 1 + app/i18n/en-us/conf.php | 1 + app/i18n/en/conf.php | 1 + app/i18n/es/conf.php | 1 + app/i18n/fr/conf.php | 1 + app/i18n/he/conf.php | 1 + app/i18n/id/conf.php | 1 + app/i18n/it/conf.php | 1 + app/i18n/ja/conf.php | 1 + app/i18n/ko/conf.php | 1 + app/i18n/nl/conf.php | 1 + app/i18n/oc/conf.php | 1 + app/i18n/pl/conf.php | 1 + app/i18n/pt-br/conf.php | 1 + app/i18n/ru/conf.php | 1 + app/i18n/sk/conf.php | 1 + app/i18n/tr/conf.php | 1 + app/i18n/zh-cn/conf.php | 1 + app/i18n/zh-tw/conf.php | 1 + app/views/auth/register.phtml | 12 ++++++++++++ app/views/configure/display.phtml | 19 +++++++++++++++++++ app/views/user/manage.phtml | 16 ++++++++++++++-- config-user.default.php | 2 ++ 29 files changed, 74 insertions(+), 2 deletions(-) (limited to 'app/i18n') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index 613bacade..926ab2272 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -42,6 +42,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { public function displayAction() { if (Minz_Request::isPost()) { FreshRSS_Context::$user_conf->language = Minz_Request::param('language', 'en'); + FreshRSS_Context::$user_conf->timezone = Minz_Request::param('timezone', ''); FreshRSS_Context::$user_conf->theme = Minz_Request::param('theme', FreshRSS_Themes::$defaultTheme); FreshRSS_Context::$user_conf->content_width = Minz_Request::param('content_width', 'thin'); FreshRSS_Context::$user_conf->topline_read = Minz_Request::param('topline_read', false); diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 06dbab9fa..55b4ca7cb 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -344,6 +344,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController { $ok = self::createUser($new_user_name, $email, $passwordPlain, array( 'language' => Minz_Request::param('new_user_language', FreshRSS_Context::$user_conf->language), + 'timezone' => Minz_Request::param('new_user_timezone', ''), 'is_admin' => Minz_Request::paramBoolean('new_user_is_admin'), 'enabled' => true, )); diff --git a/app/FreshRSS.php b/app/FreshRSS.php index 602c46658..02460af69 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -99,6 +99,9 @@ class FreshRSS extends Minz_FrontController { Minz_Session::_param('language', $language); Minz_Translate::init($language); + + $timezone = isset(FreshRSS_Context::$user_conf) ? FreshRSS_Context::$user_conf->timezone : ''; + date_default_timezone_set($timezone != '' ? $timezone : '' . ini_get('date.timezone')); } private static function getThemeFileUrl($theme_id, $filename) { diff --git a/app/Models/UserConfiguration.php b/app/Models/UserConfiguration.php index b8b023d79..157737cb8 100644 --- a/app/Models/UserConfiguration.php +++ b/app/Models/UserConfiguration.php @@ -28,6 +28,7 @@ * @property-read string $is_admin * @property int|null $keep_history_default * @property string $language + * @property string $timezone * @property bool $lazyload * @property string $mail_login * @property bool $mark_updated_article_unread diff --git a/app/i18n/cz/conf.php b/app/i18n/cz/conf.php index 7b603555c..7b0b85465 100644 --- a/app/i18n/cz/conf.php +++ b/app/i18n/cz/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Na výšku', 'square' => 'Čtverec', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Zobrazení', 'width' => array( 'content' => 'Šířka obsahu', diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 5e9cdb36e..52826353b 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Hochformat', 'square' => 'Quadrat', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Anzeige', 'width' => array( 'content' => 'Inhaltsbreite', diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php index 98f559d18..a068282ea 100644 --- a/app/i18n/el/conf.php +++ b/app/i18n/el/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', // TODO 'square' => 'Square', // TODO ), + 'timezone' => 'Time zone', // TODO 'title' => 'Display', // TODO 'width' => array( 'content' => 'Content width', // TODO diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php index 8330e4970..8a572def3 100644 --- a/app/i18n/en-us/conf.php +++ b/app/i18n/en-us/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', // IGNORE 'square' => 'Square', // IGNORE ), + 'timezone' => 'Time zone', // IGNORE 'title' => 'Display', // IGNORE 'width' => array( 'content' => 'Content width', // IGNORE diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index fe03499ea..d6633f981 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', 'square' => 'Square', ), + 'timezone' => 'Time zone', 'title' => 'Display', 'width' => array( 'content' => 'Content width', diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php index c91b0205c..8c77dcd7e 100755 --- a/app/i18n/es/conf.php +++ b/app/i18n/es/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Retrato', 'square' => 'Cuadrado', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Visualización', 'width' => array( 'content' => 'Ancho de contenido', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 61306289c..71902d96d 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', // IGNORE 'square' => 'Carrée', ), + 'timezone' => 'Fuseau horaire', 'title' => 'Affichage', 'width' => array( 'content' => 'Largeur du contenu', diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php index ad479db44..ec322fddf 100644 --- a/app/i18n/he/conf.php +++ b/app/i18n/he/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', // TODO 'square' => 'Square', // TODO ), + 'timezone' => 'Time zone', // TODO 'title' => 'תצוגה', 'width' => array( 'content' => 'רוחב התוכן', diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php index b8a5b4fc1..f46347fe2 100644 --- a/app/i18n/id/conf.php +++ b/app/i18n/id/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portrait', // TODO 'square' => 'Square', // TODO ), + 'timezone' => 'Time zone', // TODO 'title' => 'Display', // TODO 'width' => array( 'content' => 'Content width', // TODO diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php index 4597687cc..8efe6be41 100644 --- a/app/i18n/it/conf.php +++ b/app/i18n/it/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Ritratto', 'square' => 'Squadrata', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Visualizzazione', 'width' => array( 'content' => 'Larghezza contenuto', diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php index 5e9aabfa2..f84354c36 100644 --- a/app/i18n/ja/conf.php +++ b/app/i18n/ja/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'ポートレート', 'square' => '四角', ), + 'timezone' => 'Time zone', // TODO 'title' => 'ディスプレイ', 'width' => array( 'content' => 'コンテンツ幅', diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php index 279f2f4ad..95fda6969 100644 --- a/app/i18n/ko/conf.php +++ b/app/i18n/ko/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => '세로 방향', 'square' => '정사각형', ), + 'timezone' => 'Time zone', // TODO 'title' => '표시', 'width' => array( 'content' => '내용 표시 너비', diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php index 8b3d597b1..261c3aa33 100644 --- a/app/i18n/nl/conf.php +++ b/app/i18n/nl/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Staand', 'square' => 'Vierkant', ), + 'timezone' => 'Tijdzone', 'title' => 'Opmaak', 'width' => array( 'content' => 'Inhoud breedte', diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php index c1834e9aa..9f157a497 100644 --- a/app/i18n/oc/conf.php +++ b/app/i18n/oc/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Retrach', 'square' => 'Carrat', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Afichatge', 'width' => array( 'content' => 'Largor del contengut', diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php index 31b0d238c..3349bbf53 100644 --- a/app/i18n/pl/conf.php +++ b/app/i18n/pl/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portret', 'square' => 'Kwadrat', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Wyświetlanie', 'width' => array( 'content' => 'Rozmiar treści', diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php index b925aee21..bcf9fbd2f 100644 --- a/app/i18n/pt-br/conf.php +++ b/app/i18n/pt-br/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Modo retrato', 'square' => 'Modo quadrado', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Exibição', 'width' => array( 'content' => 'Largura do conteúdo', diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php index c0d25aec1..98e6f5003 100644 --- a/app/i18n/ru/conf.php +++ b/app/i18n/ru/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Вертикальный', 'square' => 'Квадратный', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Отображение', 'width' => array( 'content' => 'Ширина содержимого', diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php index 7efc3a75d..822de7b09 100644 --- a/app/i18n/sk/conf.php +++ b/app/i18n/sk/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Nastojato', 'square' => 'Štvorec', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Zobraziť', 'width' => array( 'content' => 'Šírka obsahu', diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php index 7220d6670..14eb152c3 100644 --- a/app/i18n/tr/conf.php +++ b/app/i18n/tr/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => 'Portre', 'square' => 'Kare', ), + 'timezone' => 'Time zone', // TODO 'title' => 'Görünüm', 'width' => array( 'content' => 'İçerik genişliği', diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index 3a1282a12..a4d293aeb 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => '纵向', 'square' => '方形', ), + 'timezone' => 'Time zone', // TODO 'title' => '显示', 'width' => array( 'content' => '内容宽度', diff --git a/app/i18n/zh-tw/conf.php b/app/i18n/zh-tw/conf.php index 15fabaa40..61ba44151 100644 --- a/app/i18n/zh-tw/conf.php +++ b/app/i18n/zh-tw/conf.php @@ -57,6 +57,7 @@ return array( 'portrait' => '肖像', 'square' => '方塊', ), + 'timezone' => 'Time zone', // TODO 'title' => '顯示', 'width' => array( 'content' => '內容寬度', diff --git a/app/views/auth/register.phtml b/app/views/auth/register.phtml index a56eff3ee..66c4a1ccb 100644 --- a/app/views/auth/register.phtml +++ b/app/views/auth/register.phtml @@ -15,6 +15,18 @@ +
+ + +
+
+
+ +
+ +
+
+
diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml index 0d01d33d7..22a1a4d03 100644 --- a/app/views/user/manage.phtml +++ b/app/views/user/manage.phtml @@ -15,8 +15,6 @@ - -
@@ -30,6 +28,20 @@
+
+ +
+ +
+
+
diff --git a/config-user.default.php b/config-user.default.php index f7759396a..e1f332bf2 100644 --- a/config-user.default.php +++ b/config-user.default.php @@ -7,6 +7,8 @@ return array ( 'enabled' => true, 'is_admin' => false, 'language' => 'en', + // A timezone identifier such as 'Europe/Paris' https://php.net/timezones or blank for server default + 'timezone' => '', 'archiving' => [ 'keep_period' => 'P3M', 'keep_max' => 200, -- cgit v1.2.3 From b5a418ec1618cb1a058aee3dd47baa63562c9194 Mon Sep 17 00:00:00 2001 From: maTh Date: Mon, 9 Jan 2023 10:40:38 +0100 Subject: Added: Dark mode for Origine +Origine compact themes (#4843) * first draft * fix: theme slider: properties box * improved colors * option to enable/disable dark mode * fixes * Update app/i18n/fr/conf.php Co-authored-by: Alexandre Alapetite * i18n english improved * fix dark background color for favorites + hover colors * select list: no, auto Co-authored-by: Alexandre Alapetite --- app/Controllers/configureController.php | 2 + app/Models/ConfigurationSetter.php | 7 ++ app/Models/UserConfiguration.php | 1 + app/i18n/cz/conf.php | 1 + app/i18n/de/conf.php | 1 + app/i18n/el/conf.php | 1 + app/i18n/en-us/conf.php | 1 + app/i18n/en/conf.php | 1 + app/i18n/es/conf.php | 1 + app/i18n/fr/conf.php | 1 + app/i18n/he/conf.php | 1 + app/i18n/id/conf.php | 1 + app/i18n/it/conf.php | 1 + app/i18n/ja/conf.php | 1 + app/i18n/ko/conf.php | 1 + app/i18n/nl/conf.php | 1 + app/i18n/oc/conf.php | 1 + app/i18n/pl/conf.php | 1 + app/i18n/pt-br/conf.php | 1 + app/i18n/ru/conf.php | 1 + app/i18n/sk/conf.php | 1 + app/i18n/tr/conf.php | 1 + app/i18n/zh-cn/conf.php | 1 + app/i18n/zh-tw/conf.php | 1 + app/layout/layout.phtml | 2 +- app/views/configure/display.phtml | 10 ++ config-user.default.php | 1 + p/themes/Origine-compact/origine-compact.css | 5 - p/themes/Origine-compact/origine-compact.rtl.css | 5 - p/themes/Origine/origine.css | 119 +++++++++++++++++++++-- p/themes/Origine/origine.rtl.css | 119 +++++++++++++++++++++-- 31 files changed, 265 insertions(+), 27 deletions(-) (limited to 'app/i18n') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index 926ab2272..710a927d6 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -25,6 +25,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { * The options available on the page are: * - language (default: en) * - theme (default: Origin) + * - darkMode (default: no) * - content width (default: thin) * - display of read action in header * - display of favorite action in header @@ -44,6 +45,7 @@ class FreshRSS_configure_Controller extends FreshRSS_ActionController { FreshRSS_Context::$user_conf->language = Minz_Request::param('language', 'en'); FreshRSS_Context::$user_conf->timezone = Minz_Request::param('timezone', ''); FreshRSS_Context::$user_conf->theme = Minz_Request::param('theme', FreshRSS_Themes::$defaultTheme); + FreshRSS_Context::$user_conf->darkMode = Minz_Request::param('darkMode', 'no'); FreshRSS_Context::$user_conf->content_width = Minz_Request::param('content_width', 'thin'); FreshRSS_Context::$user_conf->topline_read = Minz_Request::param('topline_read', false); FreshRSS_Context::$user_conf->topline_favorite = Minz_Request::param('topline_favorite', false); diff --git a/app/Models/ConfigurationSetter.php b/app/Models/ConfigurationSetter.php index c822bcf4d..258c2ad58 100644 --- a/app/Models/ConfigurationSetter.php +++ b/app/Models/ConfigurationSetter.php @@ -234,6 +234,13 @@ class FreshRSS_ConfigurationSetter { $data['sticky_post'] = $this->handleBool($value); } + private function _darkMode(&$data, $value) { + if (!in_array($value, [ 'no', 'auto'], true)) { + $value = 'no'; + } + $data['darkMode'] = $value; + } + private function _bottomline_date(&$data, $value) { $data['bottomline_date'] = $this->handleBool($value); } diff --git a/app/Models/UserConfiguration.php b/app/Models/UserConfiguration.php index 157737cb8..53b12cc2e 100644 --- a/app/Models/UserConfiguration.php +++ b/app/Models/UserConfiguration.php @@ -53,6 +53,7 @@ * @property bool $sides_close_article * @property bool $sticky_post * @property string $theme + * @property string $darkMode * @property string $token * @property bool $topline_date * @property bool $topline_display_authors diff --git a/app/i18n/cz/conf.php b/app/i18n/cz/conf.php index 7b0b85465..9d646be36 100644 --- a/app/i18n/cz/conf.php +++ b/app/i18n/cz/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Zobrazení', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Spodní řádek', 'display_authors' => 'Autoři', diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 52826353b..33604b618 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Anzeige', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Fußzeile', 'display_authors' => 'Autoren', diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php index a068282ea..e2629bd54 100644 --- a/app/i18n/el/conf.php +++ b/app/i18n/el/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Display', // TODO + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Bottom line', // TODO 'display_authors' => 'Authors', // TODO diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php index 8a572def3..760cbf37f 100644 --- a/app/i18n/en-us/conf.php +++ b/app/i18n/en-us/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Display', // IGNORE + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Bottom line', // IGNORE 'display_authors' => 'Authors', // IGNORE diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index d6633f981..02f95b6a8 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Display', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Bottom line', 'display_authors' => 'Authors', diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php index 8c77dcd7e..74d324c24 100755 --- a/app/i18n/es/conf.php +++ b/app/i18n/es/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Visualización', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Línea inferior', 'display_authors' => 'Autores/Autoras', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 71902d96d..88a51eee1 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Affichage', + 'darkMode' => 'Mode sombre automatique (bêta)', 'icon' => array( 'bottom_line' => 'Ligne du bas', 'display_authors' => 'Auteurs', diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php index ec322fddf..2d0eea4b9 100644 --- a/app/i18n/he/conf.php +++ b/app/i18n/he/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'תצוגה', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'שורה תחתונה', 'display_authors' => 'Authors', // TODO diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php index f46347fe2..10f649823 100644 --- a/app/i18n/id/conf.php +++ b/app/i18n/id/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Display', // TODO + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Bottom line', // TODO 'display_authors' => 'Authors', // TODO diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php index 8efe6be41..5065fe7ea 100644 --- a/app/i18n/it/conf.php +++ b/app/i18n/it/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Visualizzazione', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Barra in fondo', 'display_authors' => 'Autori', diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php index f84354c36..1247a0ce9 100644 --- a/app/i18n/ja/conf.php +++ b/app/i18n/ja/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => '表示', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => '行の下部', 'display_authors' => '著者', diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php index 95fda6969..9ee82802e 100644 --- a/app/i18n/ko/conf.php +++ b/app/i18n/ko/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => '표시', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => '하단', 'display_authors' => '저자', diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php index 261c3aa33..8a22f9e27 100644 --- a/app/i18n/nl/conf.php +++ b/app/i18n/nl/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Opmaak', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Onderaan', 'display_authors' => 'Auteurs', diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php index 9f157a497..4d1e03786 100644 --- a/app/i18n/oc/conf.php +++ b/app/i18n/oc/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Afichatge', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Linha enbàs', 'display_authors' => 'Autors', diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php index 3349bbf53..f026fe128 100644 --- a/app/i18n/pl/conf.php +++ b/app/i18n/pl/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Wyświetlanie', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Dolny margines', 'display_authors' => 'Autorzy', diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php index bcf9fbd2f..dc05a0fa0 100644 --- a/app/i18n/pt-br/conf.php +++ b/app/i18n/pt-br/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Exibição', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Linha inferior', 'display_authors' => 'Autores', diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php index 98e6f5003..4d65a9dcb 100644 --- a/app/i18n/ru/conf.php +++ b/app/i18n/ru/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Отображение', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Нижняя линия', 'display_authors' => 'Авторы', diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php index 822de7b09..ab68d07ca 100644 --- a/app/i18n/sk/conf.php +++ b/app/i18n/sk/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Zobrazenie', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Spodný riadok', 'display_authors' => 'Autori', diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php index 14eb152c3..cb72d3973 100644 --- a/app/i18n/tr/conf.php +++ b/app/i18n/tr/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => 'Görünüm', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => 'Alt çizgi', 'display_authors' => 'Yazarlar', diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index a4d293aeb..d558c025e 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => '显示', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => '底栏', 'display_authors' => '作者', diff --git a/app/i18n/zh-tw/conf.php b/app/i18n/zh-tw/conf.php index 61ba44151..3001f64c5 100644 --- a/app/i18n/zh-tw/conf.php +++ b/app/i18n/zh-tw/conf.php @@ -32,6 +32,7 @@ return array( ), 'display' => array( '_' => '顯示', + 'darkMode' => 'Automatic dark mode (beta)', // TODO 'icon' => array( 'bottom_line' => '底欄', 'display_authors' => '作者', diff --git a/app/layout/layout.phtml b/app/layout/layout.phtml index 48ada7183..1e9ce6905 100644 --- a/app/layout/layout.phtml +++ b/app/layout/layout.phtml @@ -52,7 +52,7 @@ if (_t('gen.dir') === 'rtl') { - +
+
+ +
+ +
+
+ content_width; ?>
diff --git a/config-user.default.php b/config-user.default.php index e1f332bf2..5a26841ac 100644 --- a/config-user.default.php +++ b/config-user.default.php @@ -64,6 +64,7 @@ return array ( 'site' => true, ), 'theme' => 'Origine', + 'darkMode' => 'no', 'content_width' => 'thin', 'shortcuts' => array ( 'actualize' => 'q', diff --git a/p/themes/Origine-compact/origine-compact.css b/p/themes/Origine-compact/origine-compact.css index bea5d5cf6..d94b09fb7 100644 --- a/p/themes/Origine-compact/origine-compact.css +++ b/p/themes/Origine-compact/origine-compact.css @@ -40,11 +40,6 @@ a.btn, } /*=== Dropdown */ -.item ~ .dropdown-header, -.item.separator { - border-top-color: #ddd; -} - /*=== Alerts */ /*=== Pagination */ /*=== Boxes */ diff --git a/p/themes/Origine-compact/origine-compact.rtl.css b/p/themes/Origine-compact/origine-compact.rtl.css index 8929847bb..c98c5f6da 100644 --- a/p/themes/Origine-compact/origine-compact.rtl.css +++ b/p/themes/Origine-compact/origine-compact.rtl.css @@ -40,11 +40,6 @@ a.btn, } /*=== Dropdown */ -.item ~ .dropdown-header, -.item.separator { - border-top-color: #ddd; -} - /*=== Alerts */ /*=== Pagination */ /*=== Boxes */ diff --git a/p/themes/Origine/origine.css b/p/themes/Origine/origine.css index fd119fe19..af9d3330a 100644 --- a/p/themes/Origine/origine.css +++ b/p/themes/Origine/origine.css @@ -12,8 +12,10 @@ --background-color-hover: #f6f6f6; --unread-article-background-color: #fff3ed; + --unread-article-background-color-hover: #faeee8; --unread-article-border-color: #ff5300; --favorite-article-background-color: #fff6da; + --favorite-article-background-color-hover: #fcf2d6; --favorite-article-border-color: #ffc300; --contrast-background-color: #0084cc; @@ -825,34 +827,42 @@ a:hover .icon { border-left: 2px solid var(--contrast-border-color-active); } -.flux .flux_header:hover { - background-color: var(--background-color-hover) !important; +.flux .flux_header:hover, +.flux .flux_header:hover .item { + background-color: var(--background-color-hover); } -.flux .flux_header:not(.current):hover .item.title { - background: inherit; +.flux .flux_header:not(.current):hover .flux_header, +.flux .flux_header:not(.current):hover .flux_header .item { + background-color: var(--background-color-hover); } .flux.not_read { border-left: 2px solid var(--unread-article-border-color); } -.flux.not_read .flux_header { +.flux.not_read .flux_header .item { background-color: var(--unread-article-background-color); } -.flux.not_read:not(.current):hover .item.title { - background: inherit; +.flux.not_read:not(.current):hover .flux_header, +.flux.not_read:not(.current):hover .flux_header .item { + background-color: var(--unread-article-background-color-hover); } .flux.favorite { border-left: 2px solid var(--favorite-article-border-color); } -.flux.favorite:not(.current) { +.flux.favorite:not(.current) .flux_header .item { background-color: var(--favorite-article-background-color); } +.flux.favorite:not(.current):hover .flux_header, +.flux.favorite:not(.current):hover .flux_header .item { + background-color: var(--favorite-article-background-color-hover); +} + .flux_header { font-size: 0.9rem; border-top: 1px solid var(--border-color); @@ -1188,3 +1198,96 @@ a:hover .icon { display: none; } } + +@media screen and (prefers-color-scheme: dark) { + :root .darkMode_auto { + --frss-background-color: #000; + --frss-background-color-middle: #222; + --frss-border-color: #444; + --frss-font-color-grey-dark: #999; + --frss-font-color-dark: #ddd; + --frss-modal-background-color-transparent: #000000a3; + --frss-background-color-transparent: #000000a3; + --frss-scrollbar-handle: #fff1; + --frss-scrollbar-handle-hover: #fff4; + + --background-color-light-gradient: #111; + --background-color-light: #111; + --background-color-light-shadowed: #191919; + --background-color-grey: #1f1f1f; + --background-color-hover: #09090977; + + --unread-article-background-color: #201f1e; + --unread-article-background-color-hover: #1a1918; + --unread-article-border-color: #ff5300; + --favorite-article-background-color: #24221d; + --favorite-article-background-color-hover: #1d1b17; + --favorite-article-border-color: #ffc300; + + --contrast-background-color: #0084cc; + --contrast-background-color-gradient: #0045cc; + --contrast-background-color-hover: #06c; + --contrast-background-color-active: #038; + --contrast-border-color: #0062b7; + + --contrast-background-font-color: #eee; + + --attention-background-color-gradient1: #ea4a46; + --attention-background-color-gradient2: #911811; + + --attention-background-color-gradient1-hover: #d14641; + --attention-background-color-gradient2-hover: #bd362f; + --attention-background-color-active: #bd362f; + --attention-border-color: #c44742; + + --empty-feed-color: #e67e22; + --error-feed-color: #bd362f; + + --alert-warn-background-color: #ffffe022; + --alert-warn-font-color: #ccc; + --alert-warn-border-color: #eeb; + --alert-success-background-color: #e8ffe814; + --alert-success-font-color: #96c196; + --alert-success-border-color: #cec; + --alert-error-background-color: #fdda; + --alert-error-font-color: #693a3a; + --alert-error-boder-color: #ecc; + + --notification-good-background-color: #ffe; + --notification-good-border-color: #eeb; + --notification-good-font-color: #916a37; + --notification-bad-background-color: #fdd; + --notification-bad-font-color: #643838; + --notification-bad-border-color: #ecc; + --notification-close-background-color-hover: #aaa2; + + --font-color: #ccc; + --font-color-grey: #aaa; + --font-color-light-shadowed: #555; + --font-color-light: #ccc; + + --text-shadow-color: #1c1c1c; + --text-shadow-color-dark: #666; + --box-shadow-color: #4446; + --box-shadow-color-inset: #1f1f1f; + + --font-color-link: #467eb3; + --font-color-link-hover: #0062be; + + --border-color: #222; + --border-color-shadow-side: #333; + --contrast-border-color-active: #0062be; + + --form-element-font-color-focus: #879db1; + --form-element-border-color-focus: #0062be; + --form-element-focus-box-shadow-color-inset: #110; + --form-element-border-color-invalid: #f00; + --form-element-invalid-box-shadow-color-inset: #fdd; + } + + .btn.active, + .btn:active, + .dropdown-target:target ~ .btn.dropdown-toggle { + background: var(--border-color); + } +} diff --git a/p/themes/Origine/origine.rtl.css b/p/themes/Origine/origine.rtl.css index 9127ac9e8..27c381f6a 100644 --- a/p/themes/Origine/origine.rtl.css +++ b/p/themes/Origine/origine.rtl.css @@ -12,8 +12,10 @@ --background-color-hover: #f6f6f6; --unread-article-background-color: #fff3ed; + --unread-article-background-color-hover: #faeee8; --unread-article-border-color: #ff5300; --favorite-article-background-color: #fff6da; + --favorite-article-background-color-hover: #fcf2d6; --favorite-article-border-color: #ffc300; --contrast-background-color: #0084cc; @@ -825,34 +827,42 @@ a:hover .icon { border-right: 2px solid var(--contrast-border-color-active); } -.flux .flux_header:hover { - background-color: var(--background-color-hover) !important; +.flux .flux_header:hover, +.flux .flux_header:hover .item { + background-color: var(--background-color-hover); } -.flux .flux_header:not(.current):hover .item.title { - background: inherit; +.flux .flux_header:not(.current):hover .flux_header, +.flux .flux_header:not(.current):hover .flux_header .item { + background-color: var(--background-color-hover); } .flux.not_read { border-right: 2px solid var(--unread-article-border-color); } -.flux.not_read .flux_header { +.flux.not_read .flux_header .item { background-color: var(--unread-article-background-color); } -.flux.not_read:not(.current):hover .item.title { - background: inherit; +.flux.not_read:not(.current):hover .flux_header, +.flux.not_read:not(.current):hover .flux_header .item { + background-color: var(--unread-article-background-color-hover); } .flux.favorite { border-right: 2px solid var(--favorite-article-border-color); } -.flux.favorite:not(.current) { +.flux.favorite:not(.current) .flux_header .item { background-color: var(--favorite-article-background-color); } +.flux.favorite:not(.current):hover .flux_header, +.flux.favorite:not(.current):hover .flux_header .item { + background-color: var(--favorite-article-background-color-hover); +} + .flux_header { font-size: 0.9rem; border-top: 1px solid var(--border-color); @@ -1188,3 +1198,96 @@ a:hover .icon { display: none; } } + +@media screen and (prefers-color-scheme: dark) { + :root .darkMode_auto { + --frss-background-color: #000; + --frss-background-color-middle: #222; + --frss-border-color: #444; + --frss-font-color-grey-dark: #999; + --frss-font-color-dark: #ddd; + --frss-modal-background-color-transparent: #000000a3; + --frss-background-color-transparent: #000000a3; + --frss-scrollbar-handle: #fff1; + --frss-scrollbar-handle-hover: #fff4; + + --background-color-light-gradient: #111; + --background-color-light: #111; + --background-color-light-shadowed: #191919; + --background-color-grey: #1f1f1f; + --background-color-hover: #09090977; + + --unread-article-background-color: #201f1e; + --unread-article-background-color-hover: #1a1918; + --unread-article-border-color: #ff5300; + --favorite-article-background-color: #24221d; + --favorite-article-background-color-hover: #1d1b17; + --favorite-article-border-color: #ffc300; + + --contrast-background-color: #0084cc; + --contrast-background-color-gradient: #0045cc; + --contrast-background-color-hover: #06c; + --contrast-background-color-active: #038; + --contrast-border-color: #0062b7; + + --contrast-background-font-color: #eee; + + --attention-background-color-gradient1: #ea4a46; + --attention-background-color-gradient2: #911811; + + --attention-background-color-gradient1-hover: #d14641; + --attention-background-color-gradient2-hover: #bd362f; + --attention-background-color-active: #bd362f; + --attention-border-color: #c44742; + + --empty-feed-color: #e67e22; + --error-feed-color: #bd362f; + + --alert-warn-background-color: #ffffe022; + --alert-warn-font-color: #ccc; + --alert-warn-border-color: #eeb; + --alert-success-background-color: #e8ffe814; + --alert-success-font-color: #96c196; + --alert-success-border-color: #cec; + --alert-error-background-color: #fdda; + --alert-error-font-color: #693a3a; + --alert-error-boder-color: #ecc; + + --notification-good-background-color: #ffe; + --notification-good-border-color: #eeb; + --notification-good-font-color: #916a37; + --notification-bad-background-color: #fdd; + --notification-bad-font-color: #643838; + --notification-bad-border-color: #ecc; + --notification-close-background-color-hover: #aaa2; + + --font-color: #ccc; + --font-color-grey: #aaa; + --font-color-light-shadowed: #555; + --font-color-light: #ccc; + + --text-shadow-color: #1c1c1c; + --text-shadow-color-dark: #666; + --box-shadow-color: #4446; + --box-shadow-color-inset: #1f1f1f; + + --font-color-link: #467eb3; + --font-color-link-hover: #0062be; + + --border-color: #222; + --border-color-shadow-side: #333; + --contrast-border-color-active: #0062be; + + --form-element-font-color-focus: #879db1; + --form-element-border-color-focus: #0062be; + --form-element-focus-box-shadow-color-inset: #110; + --form-element-border-color-invalid: #f00; + --form-element-invalid-box-shadow-color-inset: #fdd; + } + + .btn.active, + .btn:active, + .dropdown-target:target ~ .btn.dropdown-toggle { + background: var(--border-color); + } +} -- cgit v1.2.3 From 0ab130eb9c3df3227a70624bcd5e8133afb00ae5 Mon Sep 17 00:00:00 2001 From: maTh Date: Tue, 17 Jan 2023 15:39:55 +0100 Subject: Added: Mark theme as deprecated (#4807) * i18n + config * docs * deprecated marked themes * fix * fix markdown * i18n: fix link params * i18n: French * deprecated => no longer supported * i18n: German * Docs: deprecated => no longer supported * Docs: French * i18n: en-us * i18n German * isset() -> !empty() * i18n: fix German * i18n: English, delete // TODO --- app/i18n/cz/conf.php | 8 +++++++- app/i18n/de/conf.php | 8 +++++++- app/i18n/el/conf.php | 8 +++++++- app/i18n/en-us/conf.php | 8 +++++++- app/i18n/en/conf.php | 8 +++++++- app/i18n/es/conf.php | 8 +++++++- app/i18n/fr/conf.php | 8 +++++++- app/i18n/he/conf.php | 8 +++++++- app/i18n/id/conf.php | 8 +++++++- app/i18n/it/conf.php | 8 +++++++- app/i18n/ja/conf.php | 8 +++++++- app/i18n/ko/conf.php | 8 +++++++- app/i18n/nl/conf.php | 8 +++++++- app/i18n/oc/conf.php | 8 +++++++- app/i18n/pl/conf.php | 8 +++++++- app/i18n/pt-br/conf.php | 8 +++++++- app/i18n/ru/conf.php | 8 +++++++- app/i18n/sk/conf.php | 8 +++++++- app/i18n/tr/conf.php | 8 +++++++- app/i18n/zh-cn/conf.php | 8 +++++++- app/i18n/zh-tw/conf.php | 8 +++++++- app/views/configure/display.phtml | 14 ++++++++++++-- docs/en/users/05_Configuration.md | 27 +++++++++++++++++---------- docs/fr/users/05_Configuration.md | 27 +++++++++++++++++---------- p/themes/BlueLagoon/metadata.json | 3 ++- p/themes/Flat/metadata.json | 3 ++- p/themes/Screwdriver/metadata.json | 3 ++- p/themes/base-theme/frss.css | 7 ++++++- p/themes/base-theme/frss.rtl.css | 7 ++++++- 29 files changed, 211 insertions(+), 48 deletions(-) (limited to 'app/i18n') diff --git a/app/i18n/cz/conf.php b/app/i18n/cz/conf.php index 9d646be36..4411b5047 100644 --- a/app/i18n/cz/conf.php +++ b/app/i18n/cz/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Časový limit HTML5 oznámení', ), 'show_nav_buttons' => 'Zobrazit navigační tlačítka', - 'theme' => 'Motiv', + 'theme' => array( + '_' => 'Motiv', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Motiv „%s“ již není dostupný. Zvolte jiný motiv, prosím.', 'thumbnail' => array( 'label' => 'Náhled', diff --git a/app/i18n/de/conf.php b/app/i18n/de/conf.php index 33604b618..8962123f4 100644 --- a/app/i18n/de/conf.php +++ b/app/i18n/de/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Zeitüberschreitung für HTML5-Benachrichtigung', ), 'show_nav_buttons' => 'Zeige Navigations-Buttons', - 'theme' => 'Erscheinungsbild', + 'theme' => array( + '_' => 'Layout', + 'deprecated' => array( + '_' => 'Veraltet', + 'description' => 'Diese Layout wird nicht mehr länger aktualisiert und wir in einer zukünftigen Version von FreshRSS entfernt sein.', + ), + ), 'theme_not_available' => 'Das Erscheinungsbild „%s“ ist nicht mehr verfügbar. Bitte ein anderes auswählen.', 'thumbnail' => array( 'label' => 'Vorschaubild', diff --git a/app/i18n/el/conf.php b/app/i18n/el/conf.php index e2629bd54..daacfe684 100644 --- a/app/i18n/el/conf.php +++ b/app/i18n/el/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 notification timeout', // TODO ), 'show_nav_buttons' => 'Show the navigation buttons', // TODO - 'theme' => 'Theme', // TODO + 'theme' => array( + '_' => 'Theme', // TODO + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'The “%s” theme is not available anymore. Please choose another theme.', // TODO 'thumbnail' => array( 'label' => 'Thumbnail', // TODO diff --git a/app/i18n/en-us/conf.php b/app/i18n/en-us/conf.php index 760cbf37f..afea0299a 100644 --- a/app/i18n/en-us/conf.php +++ b/app/i18n/en-us/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 notification timeout', // IGNORE ), 'show_nav_buttons' => 'Show the navigation buttons', // IGNORE - 'theme' => 'Theme', // IGNORE + 'theme' => array( + '_' => 'Theme', // IGNORE + 'deprecated' => array( + '_' => 'Deprecated', // IGNORE + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // IGNORE + ), + ), 'theme_not_available' => 'The “%s” theme is not available anymore. Please choose another theme.', // IGNORE 'thumbnail' => array( 'label' => 'Thumbnail', // IGNORE diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 02f95b6a8..9899cf897 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 notification timeout', ), 'show_nav_buttons' => 'Show the navigation buttons', - 'theme' => 'Theme', + 'theme' => array( + '_' => 'Theme', + 'deprecated' => array( + '_' => 'Deprecated', + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', + ), + ), 'theme_not_available' => 'The “%s” theme is not available anymore. Please choose another theme.', 'thumbnail' => array( 'label' => 'Thumbnail', diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php index 74d324c24..5137ff987 100755 --- a/app/i18n/es/conf.php +++ b/app/i18n/es/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Notificación de fin de espera HTML5', ), 'show_nav_buttons' => 'Mostrar los botones de navegación', - 'theme' => 'Tema', + 'theme' => array( + '_' => 'Tema', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'El tema “%s” ya no está disponible. Por favor, elija otro tema.', 'thumbnail' => array( 'label' => 'Miniatura', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 88a51eee1..3122e3be5 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Temps d’affichage de la notification HTML5', ), 'show_nav_buttons' => 'Afficher les boutons de navigation', - 'theme' => 'Thème', + 'theme' => array( + '_' => 'Thème', + 'deprecated' => array( + '_' => 'Obsolète', + 'description' => 'Ce thème est obsolète et sera supprimé dans une future version de FreshRSS', + ), + ), 'theme_not_available' => 'Le thème %s n’est plus disponible. Veuillez choisir un autre thème.', 'thumbnail' => array( 'label' => 'Miniature', diff --git a/app/i18n/he/conf.php b/app/i18n/he/conf.php index 2d0eea4b9..c4a490a2d 100644 --- a/app/i18n/he/conf.php +++ b/app/i18n/he/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 התראה פג תוקף', ), 'show_nav_buttons' => 'Show the navigation buttons', // TODO - 'theme' => 'ערכת נושא', + 'theme' => array( + '_' => 'ערכת נושא', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'The “%s” theme is not available anymore. Please choose another theme.', // TODO 'thumbnail' => array( 'label' => 'Thumbnail', // TODO diff --git a/app/i18n/id/conf.php b/app/i18n/id/conf.php index 10f649823..8b1fa8dc6 100644 --- a/app/i18n/id/conf.php +++ b/app/i18n/id/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 notification timeout', // TODO ), 'show_nav_buttons' => 'Show the navigation buttons', // TODO - 'theme' => 'Theme', // TODO + 'theme' => array( + '_' => 'Theme', // TODO + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'The “%s” theme is not available anymore. Please choose another theme.', // TODO 'thumbnail' => array( 'label' => 'Thumbnail', // TODO diff --git a/app/i18n/it/conf.php b/app/i18n/it/conf.php index 5065fe7ea..6f3540322 100644 --- a/app/i18n/it/conf.php +++ b/app/i18n/it/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Notifica timeout HTML5', ), 'show_nav_buttons' => 'Mostra i pulsanti di navigazione', - 'theme' => 'Tema', + 'theme' => array( + '_' => 'Tema', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Il tema “%s” non è più disponibile. Si prega di selezionarne un altro.', 'thumbnail' => array( 'label' => 'Miniatura', diff --git a/app/i18n/ja/conf.php b/app/i18n/ja/conf.php index 1247a0ce9..4dd939760 100644 --- a/app/i18n/ja/conf.php +++ b/app/i18n/ja/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 の通知タイムアウト時間', ), 'show_nav_buttons' => 'ナビゲーションボタンを表示する', - 'theme' => 'テーマ', + 'theme' => array( + '_' => 'テーマ', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => '“%s”テーマはご利用いただけません。他のテーマをお選びください。', 'thumbnail' => array( 'label' => 'サムネイル', diff --git a/app/i18n/ko/conf.php b/app/i18n/ko/conf.php index 9ee82802e..a88fcf9e0 100644 --- a/app/i18n/ko/conf.php +++ b/app/i18n/ko/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 알림 타임아웃', ), 'show_nav_buttons' => '내비게이션 버튼 보이기', - 'theme' => '테마', + 'theme' => array( + '_' => '테마', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => '“%s” 테마는 더이상 사용할 수 없습니다. 다른 테마를 선택해 주세요.', 'thumbnail' => array( 'label' => '섬네일', diff --git a/app/i18n/nl/conf.php b/app/i18n/nl/conf.php index 8a22f9e27..e02ca81cc 100644 --- a/app/i18n/nl/conf.php +++ b/app/i18n/nl/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 notificatie stop', ), 'show_nav_buttons' => 'Toon navigatieknoppen', - 'theme' => 'Thema', + 'theme' => array( + '_' => 'Thema', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Het „%s” thema is niet meer beschikbaar. Kies een ander thema.', 'thumbnail' => array( 'label' => 'Miniatuur', diff --git a/app/i18n/oc/conf.php b/app/i18n/oc/conf.php index 4d1e03786..4a3b483e7 100644 --- a/app/i18n/oc/conf.php +++ b/app/i18n/oc/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Temps d’afichatge de las notificacions HTML5', ), 'show_nav_buttons' => 'Mostrar los botons de navigacion', - 'theme' => 'Tèma', + 'theme' => array( + '_' => 'Tèma', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Lo tèma « %s » es pas pus disponible. Causissètz un autre tèma.', 'thumbnail' => array( 'label' => 'Vinheta', diff --git a/app/i18n/pl/conf.php b/app/i18n/pl/conf.php index f026fe128..8700a1c13 100644 --- a/app/i18n/pl/conf.php +++ b/app/i18n/pl/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Czas wyświetlania powiadomienia HTML5', ), 'show_nav_buttons' => 'Pokaż przyciski nawigacyjne', - 'theme' => 'Motyw', + 'theme' => array( + '_' => 'Motyw', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Motyw “%s” nie jest już dostępny. Wybierz inny motyw.', 'thumbnail' => array( 'label' => 'Miniaturka', diff --git a/app/i18n/pt-br/conf.php b/app/i18n/pt-br/conf.php index dc05a0fa0..f8ad55f14 100644 --- a/app/i18n/pt-br/conf.php +++ b/app/i18n/pt-br/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Notificação em HTML5 de timeout', ), 'show_nav_buttons' => 'Mostrar botões de navegação', - 'theme' => 'Tema', + 'theme' => array( + '_' => 'Tema', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'O tema “%s” não está mais disponível. Por favor escolha outro tema.', 'thumbnail' => array( 'label' => 'Miniatura', diff --git a/app/i18n/ru/conf.php b/app/i18n/ru/conf.php index 4d65a9dcb..2c5dda544 100644 --- a/app/i18n/ru/conf.php +++ b/app/i18n/ru/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Таймаут уведомлений HTML5', ), 'show_nav_buttons' => 'Показать кнопки навигации', - 'theme' => 'Тема', + 'theme' => array( + '_' => 'Тема', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Тема “%s” больше не доступна. Пожалуйста выберите другю тему.', 'thumbnail' => array( 'label' => 'Эскиз', diff --git a/app/i18n/sk/conf.php b/app/i18n/sk/conf.php index ab68d07ca..d4714b506 100644 --- a/app/i18n/sk/conf.php +++ b/app/i18n/sk/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'Limit HTML5 oznámenia', ), 'show_nav_buttons' => 'Zobraziť tlačidlá oznámenia', - 'theme' => 'Vzhľad', + 'theme' => array( + '_' => 'Vzhľad', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => 'Vzhľad “%s” už nie je dostupný. Prosím, vyberte si iný vzhľad.', 'thumbnail' => array( 'label' => 'Miniatúra', diff --git a/app/i18n/tr/conf.php b/app/i18n/tr/conf.php index cb72d3973..41f658879 100644 --- a/app/i18n/tr/conf.php +++ b/app/i18n/tr/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 bildirim zaman aşımı', ), 'show_nav_buttons' => 'Gezinti düğmelerini göster', - 'theme' => 'Tema', + 'theme' => array( + '_' => 'Tema', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => '“%s” teması şuan uygun değilç Lütfen başka bir tema seçin.', 'thumbnail' => array( 'label' => 'Önizleme', diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php index d558c025e..0be182cfb 100644 --- a/app/i18n/zh-cn/conf.php +++ b/app/i18n/zh-cn/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 通知超时时间', ), 'show_nav_buttons' => '显示导航按钮', - 'theme' => '主题', + 'theme' => array( + '_' => '主题', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => '“%s” 主题不再可用,请选择其他主题。', 'thumbnail' => array( 'label' => '缩略图', diff --git a/app/i18n/zh-tw/conf.php b/app/i18n/zh-tw/conf.php index 3001f64c5..34439c01b 100644 --- a/app/i18n/zh-tw/conf.php +++ b/app/i18n/zh-tw/conf.php @@ -49,7 +49,13 @@ return array( 'timeout' => 'HTML5 通知超時時間', ), 'show_nav_buttons' => '顯示導航按鈕', - 'theme' => '主題', + 'theme' => array( + '_' => '主題', + 'deprecated' => array( + '_' => 'Deprecated', // TODO + 'description' => 'This theme is no longer supported and will be not available anymore in a future release of FreshRSS', // TODO + ), + ), 'theme_not_available' => '“%s” 主題不再可用,請選擇其他主題。', 'thumbnail' => array( 'label' => '縮圖', diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 8d23f6ef0..986d7dd17 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -71,8 +71,18 @@
-
-
+
+ + : + + +
+
+ +
+ + +
diff --git a/docs/en/users/05_Configuration.md b/docs/en/users/05_Configuration.md index 9ad6a58ca..1ce0e0a0d 100644 --- a/docs/en/users/05_Configuration.md +++ b/docs/en/users/05_Configuration.md @@ -13,16 +13,23 @@ Available languages are: cz, de, en, es, fr, he, it, ko, nl, oc, pt-br, ru, tr, ## Theme -There’s no accounting for tastes, which is why FreshRSS offers eight official themes: - -* *Blue Lagoon* by **Mister aiR** -* *Dark* by **AD** -* *Flat design* by **Marien Fressinaud** -* *Origine* by **Marien Fressinaud** -* *Origine-compact* by **Kevin Papst** -* *Pafat* by **Plopoyop** -* *Screwdriver* by **Mister aiR** -* *Swage* by **Patrick Crandol** +There’s no accounting for tastes, which is why FreshRSS offers 13 official themes: + +| Theme | designed by | Notes | +|:--------------|:-------------------------------------------------------|:--------------------------------------------------------------| +| Alternative Dark | Ghost | | +| Ansum | Thomas Guesnon | | +| Blue Lagoon |Mister aiR | No longer supported. Will be removed with FreshRSS V1.22.0 | +| Dark | AD | | +| Dark pink | Miicat_47 | | +| Flat design | Marien Fressinaud | No longer supported. Will be removed with FreshRSS V1.22.0 | +| Mapco | Thomas Guesnon | | +| Nord theme | joelchrono12 | | +| Origine | Marien Fressinaud | (default theme) | +| Origine-compact | Kevin Papst | | +| Pafat | Plopoyop | | +| Screwdriver | Mister aiR | No longer supported. Will be removed with FreshRSS V1.22.0 | +| Swage | Patrick Crandol | | If you can’t find any themes you like, it’s always possible to [create your own](../developers/04_Frontend/02_Design.md). diff --git a/docs/fr/users/05_Configuration.md b/docs/fr/users/05_Configuration.md index 88478a280..c64572d01 100644 --- a/docs/fr/users/05_Configuration.md +++ b/docs/fr/users/05_Configuration.md @@ -21,16 +21,23 @@ pt-br, ru, tr, zh-cn. ## Thème Les goûts et les couleurs, ça ne se discute pas. C’est pourquoi FreshRSS -propose huit thèmes officiels : - -* *Blue Lagoon* par **Mister aiR** -* *Dark* par **AD** -* *Flat design* par **Marien Fressinaud** -* *Origine* par **Marien Fressinaud** -* *Origine-compact* par **Kevin Papst** -* *Pafat* par **Plopoyop** -* *Screwdriver* par **Mister aiR** -* *Swage* par **Patrick Crandol** +propose 13 thèmes officiels : + +| Thème | Auteur | Notes | +|:--------------|:-------------------------------------------------------|:--------------------------------------------------------------| +| Alternative Dark | Ghost | | +| Ansum | Thomas Guesnon | | +| Blue Lagoon |Mister aiR | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 | +| Dark | AD | | +| Dark pink | Miicat_47 | | +| Flat design | Marien Fressinaud | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 | +| Mapco | Thomas Guesnon | | +| Nord theme | joelchrono12 | | +| Origine | Marien Fressinaud | (default theme) | +| Origine-compact | Kevin Papst | | +| Pafat | Plopoyop | | +| Screwdriver | Mister aiR | N'est plus pris en charge. Sera supprimé avec FreshRSS V1.22.0 | +| Swage | Patrick Crandol | | Si aucun de ceux proposés ne convient, il est toujours possible de [créer son propre thème](../developers/04_Frontend/02_Design.md). diff --git a/p/themes/BlueLagoon/metadata.json b/p/themes/BlueLagoon/metadata.json index 7822d7346..37750c631 100644 --- a/p/themes/BlueLagoon/metadata.json +++ b/p/themes/BlueLagoon/metadata.json @@ -3,5 +3,6 @@ "author": "Mister aiR", "description": "C’est un cocktail (bis)! C’est la version plus fresh de Screwdriver. C’est… c’est… un thème pour l’agrégateur de flux RSS FreshRSS. En toute modestie, ce thème tue du Nyan Cat.", "version": 1.0, - "files": ["_frss.css","BlueLagoon.css"] + "files": ["_frss.css","BlueLagoon.css"], + "deprecated": true } diff --git a/p/themes/Flat/metadata.json b/p/themes/Flat/metadata.json index 27a83fe83..bd7ce6157 100644 --- a/p/themes/Flat/metadata.json +++ b/p/themes/Flat/metadata.json @@ -3,5 +3,6 @@ "author": "Marien Fressinaud", "description": "Thème plat pour FreshRSS", "version": 0.2, - "files": ["_frss.css", "flat.css"] + "files": ["_frss.css", "flat.css"], + "deprecated": true } diff --git a/p/themes/Screwdriver/metadata.json b/p/themes/Screwdriver/metadata.json index 08654e51d..8da73f80c 100644 --- a/p/themes/Screwdriver/metadata.json +++ b/p/themes/Screwdriver/metadata.json @@ -3,5 +3,6 @@ "author": "Mister aiR", "description": "C’est un cocktail ! C’est chaud mais « fresh » à la fois. Ce thème tue du chaton.", "version": 1.1, - "files": ["_frss.css","screwdriver.css"] + "files": ["_frss.css","screwdriver.css"], + "deprecated" : true } diff --git a/p/themes/base-theme/frss.css b/p/themes/base-theme/frss.css index 8bd4a7e99..a24d7c32c 100644 --- a/p/themes/base-theme/frss.css +++ b/p/themes/base-theme/frss.css @@ -1809,11 +1809,16 @@ input:checked + .slide-container .properties { .item.share.error a::after, .category .title.error::before, -.item.feed.error .item-title::before { +.item.feed.error .item-title::before, +.properties .error::before { content: " ⚠ "; color: var(--frss-font-color-error); } +.deprecated { + font-weight: bold; +} + .feed.item.error.active .item-title::before { color: var(--frss-font-color-light); } diff --git a/p/themes/base-theme/frss.rtl.css b/p/themes/base-theme/frss.rtl.css index 9e5221126..4a8782c7e 100644 --- a/p/themes/base-theme/frss.rtl.css +++ b/p/themes/base-theme/frss.rtl.css @@ -1809,11 +1809,16 @@ input:checked + .slide-container .properties { .item.share.error a::after, .category .title.error::before, -.item.feed.error .item-title::before { +.item.feed.error .item-title::before, +.properties .error::before { content: " ⚠ "; color: var(--frss-font-color-error); } +.deprecated { + font-weight: bold; +} + .feed.item.error.active .item-title::before { color: var(--frss-font-color-light); } -- cgit v1.2.3 From e53ba88bb96ba1343ffc771f6170baa4342b4e39 Mon Sep 17 00:00:00 2001 From: maTh Date: Mon, 30 Jan 2023 20:32:55 +0100 Subject: Search Improved: dropdown (#4994) * first draft * fix * RTL CSS * add link to documentation * hide search button in desktop view * rename .no-desktop to .only-mobile * i18n * add ID * Theme: Swage * Theme Scewdriver * Theme Pafat * Theme flat * Theme: Adark * Theme: Dark * i18n: German * i18n en-us * fix i18n * Update app/i18n/fr/gen.php Co-authored-by: Alexandre Alapetite * Update app/layout/nav_menu.phtml Co-authored-by: Alexandre Alapetite * Update app/layout/nav_menu.phtml Co-authored-by: Alexandre Alapetite * Update app/layout/nav_menu.phtml Co-authored-by: Alexandre Alapetite * wip * mapco theme * RTL for Ansum and Mapco * fix * fix --------- Co-authored-by: Alexandre Alapetite --- app/i18n/cz/gen.php | 1 + app/i18n/de/gen.php | 1 + app/i18n/el/gen.php | 1 + app/i18n/en-us/gen.php | 1 + app/i18n/en/gen.php | 1 + app/i18n/es/gen.php | 1 + app/i18n/fr/gen.php | 1 + app/i18n/he/gen.php | 1 + app/i18n/id/gen.php | 1 + app/i18n/it/gen.php | 1 + app/i18n/ja/gen.php | 1 + app/i18n/ko/gen.php | 1 + app/i18n/nl/gen.php | 1 + app/i18n/oc/gen.php | 1 + app/i18n/pl/gen.php | 1 + app/i18n/pt-br/gen.php | 1 + app/i18n/ru/gen.php | 1 + app/i18n/sk/gen.php | 1 + app/i18n/tr/gen.php | 1 + app/i18n/zh-cn/gen.php | 1 + app/i18n/zh-tw/gen.php | 1 + app/layout/nav_menu.phtml | 72 +++++++++++++++++++------------- p/themes/Alternative-Dark/adark.css | 15 ------- p/themes/Alternative-Dark/adark.rtl.css | 15 ------- p/themes/Ansum/_components.scss | 15 ++++++- p/themes/Ansum/_layout.scss | 8 +++- p/themes/Ansum/_mobile.scss | 32 +------------- p/themes/Ansum/_sidebar.scss | 2 +- p/themes/Ansum/ansum.css | 58 ++++++++++--------------- p/themes/Ansum/ansum.rtl.css | 58 ++++++++++--------------- p/themes/Dark/dark.css | 14 ------- p/themes/Dark/dark.rtl.css | 14 ------- p/themes/Flat/flat.css | 2 +- p/themes/Flat/flat.rtl.css | 2 +- p/themes/Mapco/_components.scss | 13 +++++- p/themes/Mapco/_layout.scss | 8 +++- p/themes/Mapco/_mobile.scss | 27 +----------- p/themes/Mapco/_sidebar.scss | 2 +- p/themes/Mapco/mapco.css | 54 +++++++++++------------- p/themes/Mapco/mapco.rtl.css | 52 ++++++++++------------- p/themes/Origine/origine.css | 20 ++------- p/themes/Origine/origine.rtl.css | 20 ++------- p/themes/Pafat/pafat.css | 15 ------- p/themes/Pafat/pafat.rtl.css | 15 ------- p/themes/Screwdriver/screwdriver.css | 4 -- p/themes/Screwdriver/screwdriver.rtl.css | 4 -- p/themes/Swage/swage.css | 28 +++++++++++++ p/themes/Swage/swage.rtl.css | 28 +++++++++++++ p/themes/Swage/swage.scss | 32 ++++++++++++++ p/themes/base-theme/frss.css | 29 +++++++++++-- p/themes/base-theme/frss.rtl.css | 29 +++++++++++-- 51 files changed, 350 insertions(+), 358 deletions(-) (limited to 'app/i18n') diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index 3c9b0ec16..cf7973a3c 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Uživatelské dotazy', 'reading' => 'Čtení', 'search' => 'Hledat slova nebo #štítky', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Sdílení', 'shortcuts' => 'Zkratky', 'stats' => 'Statistika', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index e3cf385fd..e4dac4282 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Benutzerabfragen', 'reading' => 'Lesen', 'search' => 'Suche Worte oder #Tags', + 'search_help' => 'Siehe Dokumentation zu den Suchparametern', 'sharing' => 'Teilen', 'shortcuts' => 'Tastaturkürzel', 'stats' => 'Statistiken', diff --git a/app/i18n/el/gen.php b/app/i18n/el/gen.php index aa1051564..d6816a5d8 100644 --- a/app/i18n/el/gen.php +++ b/app/i18n/el/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'User queries', // TODO 'reading' => 'Reading', // TODO 'search' => 'Search words or #tags', // TODO + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Sharing', // TODO 'shortcuts' => 'Shortcuts', // TODO 'stats' => 'Statistics', // TODO diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index 5eb409fdc..52baba32b 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'User queries', // IGNORE 'reading' => 'Reading', // IGNORE 'search' => 'Search words or #tags', // IGNORE + 'search_help' => 'See documentation for advanced search parameters', // IGNORE 'sharing' => 'Sharing', // IGNORE 'shortcuts' => 'Shortcuts', // IGNORE 'stats' => 'Statistics', // IGNORE diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 2ce5871e3..a30690a25 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'User queries', 'reading' => 'Reading', 'search' => 'Search words or #tags', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Sharing', 'shortcuts' => 'Shortcuts', 'stats' => 'Statistics', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index 54877d3df..a636d407a 100755 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Peticiones de usuario', 'reading' => 'Lectura', 'search' => 'Buscar palabras o #etiquetas', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Compartir', 'shortcuts' => 'Atajos', 'stats' => 'Estadísticas', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index fec2b7d4a..4baa93d18 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Filtres utilisateurs', 'reading' => 'Lecture', 'search' => 'Rechercher des mots ou des #tags', + 'search_help' => 'Voir la documentation pour la syntaxe des recherches avancées', 'sharing' => 'Partage', 'shortcuts' => 'Raccourcis', 'stats' => 'Statistiques', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 20b93eb7e..317482a09 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'שאילתות', 'reading' => 'קריאה', 'search' => 'חיפוש מילים או #תגים', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'שיתוף', 'shortcuts' => 'קיצורי דרך', 'stats' => 'סטטיסטיקות', diff --git a/app/i18n/id/gen.php b/app/i18n/id/gen.php index 3e791c607..a2baff42f 100644 --- a/app/i18n/id/gen.php +++ b/app/i18n/id/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'User queries', // TODO 'reading' => 'Reading', // TODO 'search' => 'Search words or #tags', // TODO + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Sharing', // TODO 'shortcuts' => 'Shortcuts', // TODO 'stats' => 'Statistics', // TODO diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 09844d072..465b758c0 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Ricerche personali', 'reading' => 'Lettura', 'search' => 'Ricerca parole o #tags', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Condivisione', 'shortcuts' => 'Comandi tastiera', 'stats' => 'Statistiche', diff --git a/app/i18n/ja/gen.php b/app/i18n/ja/gen.php index 85d130e37..7ad2f2eb8 100644 --- a/app/i18n/ja/gen.php +++ b/app/i18n/ja/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'ユーザークエリ', 'reading' => 'リーディング', 'search' => '単語で検索するかハッシュタグで検索する', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => '共有', 'shortcuts' => 'ショートカット', 'stats' => '統計', diff --git a/app/i18n/ko/gen.php b/app/i18n/ko/gen.php index ba15726a3..63e3ba478 100644 --- a/app/i18n/ko/gen.php +++ b/app/i18n/ko/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => '사용자 쿼리', 'reading' => '읽기', 'search' => '단어 또는 #태그 검색', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => '공유', 'shortcuts' => '단축키', 'stats' => '통계', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index e06e05db7..0c5122643 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Gebruikers informatie', 'reading' => 'Lezen', 'search' => 'Zoek woorden of #labels', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Delen', 'shortcuts' => 'Snelle toegang', 'stats' => 'Statistieken', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index a55b2c147..281696a89 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Filtres utilizaire', 'reading' => 'Lectura', 'search' => 'Recercar de mots o d’#etiquetas', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Partatge', 'shortcuts' => 'Acorchis', 'stats' => 'Estatisticas', diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 56bd3c082..28863ff59 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Zapisane zapytania', 'reading' => 'Czytanie', 'search' => 'Wyszukaj wyrazy lub #tagi', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Podawanie dalej', 'shortcuts' => 'Skróty klawiszowe', 'stats' => 'Statystyki', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index acf954b77..0a8c56d6a 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Queries de usuário', 'reading' => 'Leitura', 'search' => 'Procurar por palavras ou #tags', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Compartilhamento', 'shortcuts' => 'Atalhos', 'stats' => 'Estatísticas', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 9ba61ae59..3fd4b9190 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Пользовательские запросы', 'reading' => 'Чтение', 'search' => 'Искать слова или #теги', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Обмен', 'shortcuts' => 'Горячие клавиши', 'stats' => 'Статистика', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index aa8f1767b..4fa7a74eb 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Používateľské dopyty', 'reading' => 'Čítanie', 'search' => 'Hľadajte slová alebo #značky', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Zdieľanie', 'shortcuts' => 'Skratky', 'stats' => 'Štatistiky', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index c65815e8e..bf1f18848 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => 'Kullanıcı sorguları', 'reading' => 'Okuma', 'search' => 'Kelime veya #etiket ara', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => 'Paylaşım', 'shortcuts' => 'Kısayollar', 'stats' => 'İstatistikler', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 0b6f1cba6..0732ae707 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => '自定义查询', 'reading' => '阅读', 'search' => '搜索内容或#标签', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => '分享', 'shortcuts' => '快捷键', 'stats' => '统计', diff --git a/app/i18n/zh-tw/gen.php b/app/i18n/zh-tw/gen.php index 31ef0f692..cf09fa3df 100644 --- a/app/i18n/zh-tw/gen.php +++ b/app/i18n/zh-tw/gen.php @@ -174,6 +174,7 @@ return array( 'queries' => '自定義查詢', 'reading' => '閱讀', 'search' => '搜尋內容或#標簽', + 'search_help' => 'See documentation for advanced search parameters', // TODO 'sharing' => '分享', 'shortcuts' => '快捷鍵', 'stats' => '統計', diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index f719538fd..848144568 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -29,10 +29,53 @@ href=""> + + - - a, + > span, + > .as-link { padding: 0 2rem; color: variables.$main-font-color; font-size: inherit; @@ -60,7 +68,10 @@ span.icon { padding: 0 0.25rem !important; } + } + > a, + > .as-link { &:not(.addItem):hover { background: variables.$main-first; color: variables.$white; @@ -86,7 +97,7 @@ } &:not(.addItem) { - a:hover, + > a:hover, button:hover { background: variables.$main-first; color: variables.$white; diff --git a/p/themes/Ansum/_layout.scss b/p/themes/Ansum/_layout.scss index cb5271dcd..78431f462 100644 --- a/p/themes/Ansum/_layout.scss +++ b/p/themes/Ansum/_layout.scss @@ -207,7 +207,7 @@ main.prompt { } } - .dropdown { + .dropdown:not(#dropdown-search-wrapper) { a.dropdown-toggle { border-left-width: 0; background-image: url(icons/more.svg); @@ -217,6 +217,12 @@ main.prompt { } } } + + #dropdown-search-wrapper.dropdown { + a.dropdown-toggle { + border-left-width: 0; + } + } } } diff --git a/p/themes/Ansum/_mobile.scss b/p/themes/Ansum/_mobile.scss index bb13a0e83..6fbca4a52 100644 --- a/p/themes/Ansum/_mobile.scss +++ b/p/themes/Ansum/_mobile.scss @@ -35,35 +35,9 @@ } .header { - display: block; - height: 8rem; - .item { &.search { - display: block; - - form { - display: inherit; - } - - .stick { - display: flex; - } - - input { - width: 90%; - height: 3.5rem; - - &:focus { - width: 100%; - - } - } - - .btn { - min-height: 49px; - padding: 0.5rem 2rem; - } + display: none; } &.configure { @@ -103,11 +77,7 @@ } .search { - display: none; - max-width: 97%; - .input { - max-width: 97%; width: 90px; diff --git a/p/themes/Ansum/_sidebar.scss b/p/themes/Ansum/_sidebar.scss index e92dd2ec4..7c21d159d 100644 --- a/p/themes/Ansum/_sidebar.scss +++ b/p/themes/Ansum/_sidebar.scss @@ -93,7 +93,7 @@ border-radius: 5px 0 0 5px; } - .btn:last-child, input:last-child, .btn + .dropdown > .btn { + .btn:last-child, input:last-child, .dropdown:last-child > .btn { border-radius: 0 5px 5px 0; } diff --git a/p/themes/Ansum/ansum.css b/p/themes/Ansum/ansum.css index 03aa67e67..709861e18 100644 --- a/p/themes/Ansum/ansum.css +++ b/p/themes/Ansum/ansum.css @@ -221,6 +221,10 @@ form th { } /*=== Dropdown */ +.dropdown .dropdown-target:target + .btn { + background-color: #e4d8cc; +} + .dropdown-menu { margin: 9px 0 0 0; padding: 0.5rem 0 1rem 0; @@ -247,20 +251,26 @@ form th { .dropdown-menu .item { transition: all 0.075s ease-in-out; } -.dropdown-menu .item a, .dropdown-menu .item .as-link { +.dropdown-menu .item > a, +.dropdown-menu .item > span, +.dropdown-menu .item > .as-link { padding: 0 2rem; color: #363330; font-size: inherit; line-height: 2.5em; } -.dropdown-menu .item a span.icon, .dropdown-menu .item .as-link span.icon { +.dropdown-menu .item > a span.icon, +.dropdown-menu .item > span span.icon, +.dropdown-menu .item > .as-link span.icon { padding: 0 0.25rem !important; } -.dropdown-menu .item a:not(.addItem):hover, .dropdown-menu .item .as-link:not(.addItem):hover { +.dropdown-menu .item > a:not(.addItem):hover, +.dropdown-menu .item > .as-link:not(.addItem):hover { background: #ca7227; color: #fff; } -.dropdown-menu .item a:not(.addItem):hover .icon, .dropdown-menu .item .as-link:not(.addItem):hover .icon { +.dropdown-menu .item > a:not(.addItem):hover .icon, +.dropdown-menu .item > .as-link:not(.addItem):hover .icon { filter: grayscale(100%) brightness(2.5); } .dropdown-menu .item.dropdown-section { @@ -272,12 +282,12 @@ form th { .dropdown-menu .item.dropdown-section .item a, .dropdown-menu .item.dropdown-section .item .as-link { padding-left: 2rem; } -.dropdown-menu .item:not(.addItem) a:hover, +.dropdown-menu .item:not(.addItem) > a:hover, .dropdown-menu .item:not(.addItem) button:hover { background: #ca7227; color: #fff; } -.dropdown-menu .item:not(.addItem) a:hover .icon, +.dropdown-menu .item:not(.addItem) > a:hover .icon, .dropdown-menu .item:not(.addItem) button:hover .icon { filter: brightness(3); } @@ -518,7 +528,7 @@ form th { .stick .btn:first-child { border-radius: 5px 0 0 5px; } -.stick .btn:last-child, .stick input:last-child, .stick .btn + .dropdown > .btn { +.stick .btn:last-child, .stick input:last-child, .stick .dropdown:last-child > .btn { border-radius: 0 5px 5px 0; } .stick .btn + .btn, @@ -819,13 +829,16 @@ main.prompt { .nav_menu .stick .btn.read_all:hover { background-color: #e4d8cc; } -.nav_menu .stick .dropdown a.dropdown-toggle { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle { border-left-width: 0; background-image: url(icons/more.svg); } -.nav_menu .stick .dropdown a.dropdown-toggle .icon { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle .icon { display: none; } +.nav_menu .stick #dropdown-search-wrapper.dropdown a.dropdown-toggle { + border-left-width: 0; +} #dropdown-query ~ .dropdown-menu .dropdown-header .icon { vertical-align: middle; @@ -1196,29 +1209,8 @@ main.prompt { #slider .toggle_aside .icon { filter: grayscale(100%) brightness(2.5); } - .header { - display: block; - height: 8rem; - } .header .item.search { - display: block; - } - .header .item.search form { - display: inherit; - } - .header .item.search .stick { - display: flex; - } - .header .item.search input { - width: 90%; - height: 3.5rem; - } - .header .item.search input:focus { - width: 100%; - } - .header .item.search .btn { - min-height: 49px; - padding: 0.5rem 2rem; + display: none; } .header .item.configure { position: absolute; @@ -1246,10 +1238,6 @@ main.prompt { .nav_menu .stick .btn.read_all { padding: 0.85rem 1.25rem; } - .nav_menu .search { - display: none; - max-width: 97%; - } .nav_menu .search .input { max-width: 97%; width: 90px; diff --git a/p/themes/Ansum/ansum.rtl.css b/p/themes/Ansum/ansum.rtl.css index b106da359..ad480c952 100644 --- a/p/themes/Ansum/ansum.rtl.css +++ b/p/themes/Ansum/ansum.rtl.css @@ -221,6 +221,10 @@ form th { } /*=== Dropdown */ +.dropdown .dropdown-target:target + .btn { + background-color: #e4d8cc; +} + .dropdown-menu { margin: 9px 0 0 0; padding: 0.5rem 0 1rem 0; @@ -247,20 +251,26 @@ form th { .dropdown-menu .item { transition: all 0.075s ease-in-out; } -.dropdown-menu .item a, .dropdown-menu .item .as-link { +.dropdown-menu .item > a, +.dropdown-menu .item > span, +.dropdown-menu .item > .as-link { padding: 0 2rem; color: #363330; font-size: inherit; line-height: 2.5em; } -.dropdown-menu .item a span.icon, .dropdown-menu .item .as-link span.icon { +.dropdown-menu .item > a span.icon, +.dropdown-menu .item > span span.icon, +.dropdown-menu .item > .as-link span.icon { padding: 0 0.25rem !important; } -.dropdown-menu .item a:not(.addItem):hover, .dropdown-menu .item .as-link:not(.addItem):hover { +.dropdown-menu .item > a:not(.addItem):hover, +.dropdown-menu .item > .as-link:not(.addItem):hover { background: #ca7227; color: #fff; } -.dropdown-menu .item a:not(.addItem):hover .icon, .dropdown-menu .item .as-link:not(.addItem):hover .icon { +.dropdown-menu .item > a:not(.addItem):hover .icon, +.dropdown-menu .item > .as-link:not(.addItem):hover .icon { filter: grayscale(100%) brightness(2.5); } .dropdown-menu .item.dropdown-section { @@ -272,12 +282,12 @@ form th { .dropdown-menu .item.dropdown-section .item a, .dropdown-menu .item.dropdown-section .item .as-link { padding-right: 2rem; } -.dropdown-menu .item:not(.addItem) a:hover, +.dropdown-menu .item:not(.addItem) > a:hover, .dropdown-menu .item:not(.addItem) button:hover { background: #ca7227; color: #fff; } -.dropdown-menu .item:not(.addItem) a:hover .icon, +.dropdown-menu .item:not(.addItem) > a:hover .icon, .dropdown-menu .item:not(.addItem) button:hover .icon { filter: brightness(3); } @@ -518,7 +528,7 @@ form th { .stick .btn:first-child { border-radius: 0 5px 5px 0; } -.stick .btn:last-child, .stick input:last-child, .stick .btn + .dropdown > .btn { +.stick .btn:last-child, .stick input:last-child, .stick .dropdown:last-child > .btn { border-radius: 5px 0 0 5px; } .stick .btn + .btn, @@ -819,13 +829,16 @@ main.prompt { .nav_menu .stick .btn.read_all:hover { background-color: #e4d8cc; } -.nav_menu .stick .dropdown a.dropdown-toggle { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle { border-right-width: 0; background-image: url(icons/more.svg); } -.nav_menu .stick .dropdown a.dropdown-toggle .icon { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle .icon { display: none; } +.nav_menu .stick #dropdown-search-wrapper.dropdown a.dropdown-toggle { + border-right-width: 0; +} #dropdown-query ~ .dropdown-menu .dropdown-header .icon { vertical-align: middle; @@ -1196,29 +1209,8 @@ main.prompt { #slider .toggle_aside .icon { filter: grayscale(100%) brightness(2.5); } - .header { - display: block; - height: 8rem; - } .header .item.search { - display: block; - } - .header .item.search form { - display: inherit; - } - .header .item.search .stick { - display: flex; - } - .header .item.search input { - width: 90%; - height: 3.5rem; - } - .header .item.search input:focus { - width: 100%; - } - .header .item.search .btn { - min-height: 49px; - padding: 0.5rem 2rem; + display: none; } .header .item.configure { position: absolute; @@ -1246,10 +1238,6 @@ main.prompt { .nav_menu .stick .btn.read_all { padding: 0.85rem 1.25rem; } - .nav_menu .search { - display: none; - max-width: 97%; - } .nav_menu .search .input { max-width: 97%; width: 90px; diff --git a/p/themes/Dark/dark.css b/p/themes/Dark/dark.css index 859397eb1..fa194bb9e 100644 --- a/p/themes/Dark/dark.css +++ b/p/themes/Dark/dark.css @@ -995,20 +995,6 @@ a.btn { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - max-width: 97%; - width: 90px; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { background-color: #1a1a1a; border-top: 1px solid #888; diff --git a/p/themes/Dark/dark.rtl.css b/p/themes/Dark/dark.rtl.css index a75552d51..2610e49d5 100644 --- a/p/themes/Dark/dark.rtl.css +++ b/p/themes/Dark/dark.rtl.css @@ -995,20 +995,6 @@ a.btn { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - max-width: 97%; - width: 90px; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { background-color: #1a1a1a; border-top: 1px solid #888; diff --git a/p/themes/Flat/flat.css b/p/themes/Flat/flat.css index aefe3d454..8fd09bb35 100644 --- a/p/themes/Flat/flat.css +++ b/p/themes/Flat/flat.css @@ -147,7 +147,7 @@ form th { .stick .btn:last-child, .stick input:last-child, -.stick .btn + .dropdown > .btn { +.stick .dropdown:last-child > .btn { border-radius: 0 5px 5px 0; } diff --git a/p/themes/Flat/flat.rtl.css b/p/themes/Flat/flat.rtl.css index 43ada0a4c..43327ddeb 100644 --- a/p/themes/Flat/flat.rtl.css +++ b/p/themes/Flat/flat.rtl.css @@ -147,7 +147,7 @@ form th { .stick .btn:last-child, .stick input:last-child, -.stick .btn + .dropdown > .btn { +.stick .dropdown:last-child > .btn { border-radius: 5px 0 0 5px; } diff --git a/p/themes/Mapco/_components.scss b/p/themes/Mapco/_components.scss index 8b60dcf0f..5f7e04e56 100644 --- a/p/themes/Mapco/_components.scss +++ b/p/themes/Mapco/_components.scss @@ -22,6 +22,12 @@ } /*=== Dropdown */ +.dropdown { + .dropdown-target:target + .btn { + background-color: variables.$grey-medium-light; + } +} + .dropdown-menu { margin: 9px 0 0 0; padding: 0.5rem 0 1rem 0; @@ -51,7 +57,9 @@ @include mixins.transition(all, 0.075s, ease-in-out); - a, .as-link { + > a, + > span, + > .as-link { padding: 0 2rem; color: variables.$main-font-color; font-size: inherit; @@ -60,7 +68,10 @@ span.icon { padding: 0 0.25rem !important; } + } + > a, + > .as-link { &:not(.addItem):hover { background: variables.$main-first; color: variables.$white; diff --git a/p/themes/Mapco/_layout.scss b/p/themes/Mapco/_layout.scss index 7be890369..b57a48fd0 100644 --- a/p/themes/Mapco/_layout.scss +++ b/p/themes/Mapco/_layout.scss @@ -226,7 +226,7 @@ main.prompt { } } - .dropdown { + .dropdown:not(#dropdown-search-wrapper) { a.dropdown-toggle { border-left-width: 0; background-image: url(icons/more.svg); @@ -236,6 +236,12 @@ main.prompt { } } } + + #dropdown-search-wrapper.dropdown { + a.dropdown-toggle { + border-left-width: 0; + } + } } } diff --git a/p/themes/Mapco/_mobile.scss b/p/themes/Mapco/_mobile.scss index 6960873bf..3faea3d7e 100644 --- a/p/themes/Mapco/_mobile.scss +++ b/p/themes/Mapco/_mobile.scss @@ -35,30 +35,9 @@ } .header { - display: block; - height: 8rem; - .item { &.search { - display: block; - - form { - display: inherit; - } - - .stick { - display: flex; - } - - input { - width: 90%; - height: 3.5rem; - - &:focus { - width: 100%; - - } - } + display: none; } &.configure { @@ -105,11 +84,7 @@ } .search { - display: none; - max-width: 97%; - .input { - max-width: 97%; width: 90px; diff --git a/p/themes/Mapco/_sidebar.scss b/p/themes/Mapco/_sidebar.scss index a71960b1d..090a69580 100644 --- a/p/themes/Mapco/_sidebar.scss +++ b/p/themes/Mapco/_sidebar.scss @@ -93,7 +93,7 @@ border-radius: 5px 0 0 5px; } - .btn:last-child, input:last-child, .btn + .dropdown > .btn { + .btn:last-child, input:last-child, .dropdown:last-child > .btn { border-radius: 0 5px 5px 0; } diff --git a/p/themes/Mapco/mapco.css b/p/themes/Mapco/mapco.css index d2978c217..967accc00 100644 --- a/p/themes/Mapco/mapco.css +++ b/p/themes/Mapco/mapco.css @@ -220,6 +220,10 @@ form th { } /*=== Dropdown */ +.dropdown .dropdown-target:target + .btn { + background-color: #d5d8db; +} + .dropdown-menu { margin: 9px 0 0 0; padding: 0.5rem 0 1rem 0; @@ -246,20 +250,26 @@ form th { .dropdown-menu .item { transition: all 0.075s ease-in-out; } -.dropdown-menu .item a, .dropdown-menu .item .as-link { +.dropdown-menu .item > a, +.dropdown-menu .item > span, +.dropdown-menu .item > .as-link { padding: 0 2rem; color: #303136; font-size: inherit; line-height: 2.5em; } -.dropdown-menu .item a span.icon, .dropdown-menu .item .as-link span.icon { +.dropdown-menu .item > a span.icon, +.dropdown-menu .item > span span.icon, +.dropdown-menu .item > .as-link span.icon { padding: 0 0.25rem !important; } -.dropdown-menu .item a:not(.addItem):hover, .dropdown-menu .item .as-link:not(.addItem):hover { +.dropdown-menu .item > a:not(.addItem):hover, +.dropdown-menu .item > .as-link:not(.addItem):hover { background: #36c; color: #fff; } -.dropdown-menu .item a:not(.addItem):hover .icon, .dropdown-menu .item .as-link:not(.addItem):hover .icon { +.dropdown-menu .item > a:not(.addItem):hover .icon, +.dropdown-menu .item > .as-link:not(.addItem):hover .icon { filter: brightness(3); } .dropdown-menu .item.dropdown-section { @@ -532,7 +542,7 @@ form th { .stick .btn:first-child { border-radius: 5px 0 0 5px; } -.stick .btn:last-child, .stick input:last-child, .stick .btn + .dropdown > .btn { +.stick .btn:last-child, .stick input:last-child, .stick .dropdown:last-child > .btn { border-radius: 0 5px 5px 0; } .stick .btn + .btn, @@ -843,13 +853,16 @@ main.prompt { .nav_menu .stick .btn.read_all:hover { background-color: #d5d8db; } -.nav_menu .stick .dropdown a.dropdown-toggle { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle { border-left-width: 0; background-image: url(icons/more.svg); } -.nav_menu .stick .dropdown a.dropdown-toggle .icon { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle .icon { display: none; } +.nav_menu .stick #dropdown-search-wrapper.dropdown a.dropdown-toggle { + border-left-width: 0; +} /*=== Content of feed articles */ .content, .content.thin { @@ -1213,25 +1226,8 @@ main.prompt { #slider .toggle_aside .icon { filter: grayscale(100%) brightness(2.5); } - .header { - display: block; - height: 8rem; - } .header .item.search { - display: block; - } - .header .item.search form { - display: inherit; - } - .header .item.search .stick { - display: flex; - } - .header .item.search input { - width: 90%; - height: 3.5rem; - } - .header .item.search input:focus { - width: 100%; + display: none; } .header .item.configure { position: absolute; @@ -1264,10 +1260,6 @@ main.prompt { .nav_menu .stick .btn.read_all { padding: 0.85rem 1.25rem; } - .nav_menu .search { - display: none; - max-width: 97%; - } .nav_menu .search .input { max-width: 97%; width: 90px; @@ -1338,4 +1330,6 @@ body.register { a, button.as-link { outline: none; color: #36c; -} \ No newline at end of file +} + +/*# sourceMappingURL=mapco.css.map */ diff --git a/p/themes/Mapco/mapco.rtl.css b/p/themes/Mapco/mapco.rtl.css index 7ed00631a..b962e5fe0 100644 --- a/p/themes/Mapco/mapco.rtl.css +++ b/p/themes/Mapco/mapco.rtl.css @@ -220,6 +220,10 @@ form th { } /*=== Dropdown */ +.dropdown .dropdown-target:target + .btn { + background-color: #d5d8db; +} + .dropdown-menu { margin: 9px 0 0 0; padding: 0.5rem 0 1rem 0; @@ -246,20 +250,26 @@ form th { .dropdown-menu .item { transition: all 0.075s ease-in-out; } -.dropdown-menu .item a, .dropdown-menu .item .as-link { +.dropdown-menu .item > a, +.dropdown-menu .item > span, +.dropdown-menu .item > .as-link { padding: 0 2rem; color: #303136; font-size: inherit; line-height: 2.5em; } -.dropdown-menu .item a span.icon, .dropdown-menu .item .as-link span.icon { +.dropdown-menu .item > a span.icon, +.dropdown-menu .item > span span.icon, +.dropdown-menu .item > .as-link span.icon { padding: 0 0.25rem !important; } -.dropdown-menu .item a:not(.addItem):hover, .dropdown-menu .item .as-link:not(.addItem):hover { +.dropdown-menu .item > a:not(.addItem):hover, +.dropdown-menu .item > .as-link:not(.addItem):hover { background: #36c; color: #fff; } -.dropdown-menu .item a:not(.addItem):hover .icon, .dropdown-menu .item .as-link:not(.addItem):hover .icon { +.dropdown-menu .item > a:not(.addItem):hover .icon, +.dropdown-menu .item > .as-link:not(.addItem):hover .icon { filter: brightness(3); } .dropdown-menu .item.dropdown-section { @@ -532,7 +542,7 @@ form th { .stick .btn:first-child { border-radius: 0 5px 5px 0; } -.stick .btn:last-child, .stick input:last-child, .stick .btn + .dropdown > .btn { +.stick .btn:last-child, .stick input:last-child, .stick .dropdown:last-child > .btn { border-radius: 5px 0 0 5px; } .stick .btn + .btn, @@ -843,13 +853,16 @@ main.prompt { .nav_menu .stick .btn.read_all:hover { background-color: #d5d8db; } -.nav_menu .stick .dropdown a.dropdown-toggle { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle { border-right-width: 0; background-image: url(icons/more.svg); } -.nav_menu .stick .dropdown a.dropdown-toggle .icon { +.nav_menu .stick .dropdown:not(#dropdown-search-wrapper) a.dropdown-toggle .icon { display: none; } +.nav_menu .stick #dropdown-search-wrapper.dropdown a.dropdown-toggle { + border-right-width: 0; +} /*=== Content of feed articles */ .content, .content.thin { @@ -1213,25 +1226,8 @@ main.prompt { #slider .toggle_aside .icon { filter: grayscale(100%) brightness(2.5); } - .header { - display: block; - height: 8rem; - } .header .item.search { - display: block; - } - .header .item.search form { - display: inherit; - } - .header .item.search .stick { - display: flex; - } - .header .item.search input { - width: 90%; - height: 3.5rem; - } - .header .item.search input:focus { - width: 100%; + display: none; } .header .item.configure { position: absolute; @@ -1264,10 +1260,6 @@ main.prompt { .nav_menu .stick .btn.read_all { padding: 0.85rem 1.25rem; } - .nav_menu .search { - display: none; - max-width: 97%; - } .nav_menu .search .input { max-width: 97%; width: 90px; @@ -1338,4 +1330,4 @@ body.register { a, button.as-link { outline: none; color: #36c; -} \ No newline at end of file +} diff --git a/p/themes/Origine/origine.css b/p/themes/Origine/origine.css index 319e6a2a4..eba455f52 100644 --- a/p/themes/Origine/origine.css +++ b/p/themes/Origine/origine.css @@ -291,6 +291,10 @@ a:hover .icon { filter: brightness(1.1); } +#toggle-search.active > .icon { + filter: invert(8%) sepia(99%) saturate(7064%) hue-rotate(248deg) brightness(99%) contrast(142%); +} + .btn.active, .btn:active, .dropdown-target:target ~ .btn.dropdown-toggle { @@ -1138,22 +1142,6 @@ a:hover .icon { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - padding: 3px 5px; - max-width: 97%; - width: 90px; - line-height: 2; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { background-color: var(--background-color-light); border-top: 1px solid var(--border-color); diff --git a/p/themes/Origine/origine.rtl.css b/p/themes/Origine/origine.rtl.css index 983b1743e..081f1814f 100644 --- a/p/themes/Origine/origine.rtl.css +++ b/p/themes/Origine/origine.rtl.css @@ -291,6 +291,10 @@ a:hover .icon { filter: brightness(1.1); } +#toggle-search.active > .icon { + filter: invert(8%) sepia(99%) saturate(7064%) hue-rotate(248deg) brightness(99%) contrast(142%); +} + .btn.active, .btn:active, .dropdown-target:target ~ .btn.dropdown-toggle { @@ -1138,22 +1142,6 @@ a:hover .icon { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - padding: 3px 5px; - max-width: 97%; - width: 90px; - line-height: 2; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { background-color: var(--background-color-light); border-top: 1px solid var(--border-color); diff --git a/p/themes/Pafat/pafat.css b/p/themes/Pafat/pafat.css index f5d418f15..4ff9d2812 100644 --- a/p/themes/Pafat/pafat.css +++ b/p/themes/Pafat/pafat.css @@ -1093,21 +1093,6 @@ a.signin { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - max-width: 97%; - width: 90px; - line-height: 2; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { border-top: 1px solid var(--border-color-grey-dark); border-left: 1px solid var(--border-color-grey-dark); diff --git a/p/themes/Pafat/pafat.rtl.css b/p/themes/Pafat/pafat.rtl.css index cc8d72da4..8a71232bb 100644 --- a/p/themes/Pafat/pafat.rtl.css +++ b/p/themes/Pafat/pafat.rtl.css @@ -1093,21 +1093,6 @@ a.signin { margin: 5px 0; } - .nav_menu .search { - display: inline-block; - max-width: 97%; - } - - .nav_menu .search input { - max-width: 97%; - width: 90px; - line-height: 2; - } - - .nav_menu .search input:focus { - width: 400px; - } - .dropdown-target:target ~ .dropdown-toggle::after { border-top: 1px solid var(--border-color-grey-dark); border-right: 1px solid var(--border-color-grey-dark); diff --git a/p/themes/Screwdriver/screwdriver.css b/p/themes/Screwdriver/screwdriver.css index e66861563..859e34f35 100644 --- a/p/themes/Screwdriver/screwdriver.css +++ b/p/themes/Screwdriver/screwdriver.css @@ -1117,10 +1117,6 @@ a.btn { margin: 5px 0; } - .nav_menu .search { - display: none; - } - .nav_menu .search input { padding: 3px 5px; max-width: 97%; diff --git a/p/themes/Screwdriver/screwdriver.rtl.css b/p/themes/Screwdriver/screwdriver.rtl.css index a823dc93d..216c84262 100644 --- a/p/themes/Screwdriver/screwdriver.rtl.css +++ b/p/themes/Screwdriver/screwdriver.rtl.css @@ -1117,10 +1117,6 @@ a.btn { margin: 5px 0; } - .nav_menu .search { - display: none; - } - .nav_menu .search input { padding: 3px 5px; max-width: 97%; diff --git a/p/themes/Swage/swage.css b/p/themes/Swage/swage.css index 02fd9471f..6478c0581 100644 --- a/p/themes/Swage/swage.css +++ b/p/themes/Swage/swage.css @@ -342,12 +342,32 @@ form th { font-weight: bold; margin: 0 0 0 -14px; } +.dropdown-menu .help a { + color: var(--color-text-light); + text-decoration: underline; + text-decoration-style: dotted; +} +.dropdown-menu .help a:hover { + text-decoration-style: solid; +} .dropdown-menu .input select, .dropdown-menu .input input { margin: 0 auto 5px; padding: 2px 5px; } +#dropdown-search-wrapper .dropdown-menu { + padding-top: 1rem; + padding-bottom: 0.25rem; +} +#dropdown-search-wrapper .dropdown-menu .stick.search { + width: 100%; +} +#dropdown-search-wrapper .dropdown-menu .stick.search input[type=search] { + width: 100%; + border: 0; +} + .labels .dropdown-menu, .tags .dropdown-menu, .share .dropdown-menu { @@ -912,6 +932,9 @@ a.signin { .dropdown { position: relative; } + .dropdown .dropdown-menu { + width: auto; + } #new-article { margin-top: 2rem; width: 100%; @@ -1151,10 +1174,15 @@ button.as-link { left: 0; right: auto; } + #nav_menu_actions ul.dropdown-menu::after { display: none; } +#nav_menu_actions .dropdown.only-mobile { + display: initial !important; +} + #nav_menu_read_all ul.dropdown-menu { right: 0; left: auto; diff --git a/p/themes/Swage/swage.rtl.css b/p/themes/Swage/swage.rtl.css index 9cee872c9..a4ba4f159 100644 --- a/p/themes/Swage/swage.rtl.css +++ b/p/themes/Swage/swage.rtl.css @@ -342,12 +342,32 @@ form th { font-weight: bold; margin: 0 -14px 0 0; } +.dropdown-menu .help a { + color: var(--color-text-light); + text-decoration: underline; + text-decoration-style: dotted; +} +.dropdown-menu .help a:hover { + text-decoration-style: solid; +} .dropdown-menu .input select, .dropdown-menu .input input { margin: 0 auto 5px; padding: 2px 5px; } +#dropdown-search-wrapper .dropdown-menu { + padding-top: 1rem; + padding-bottom: 0.25rem; +} +#dropdown-search-wrapper .dropdown-menu .stick.search { + width: 100%; +} +#dropdown-search-wrapper .dropdown-menu .stick.search input[type=search] { + width: 100%; + border: 0; +} + .labels .dropdown-menu, .tags .dropdown-menu, .share .dropdown-menu { @@ -912,6 +932,9 @@ a.signin { .dropdown { position: relative; } + .dropdown .dropdown-menu { + width: auto; + } #new-article { margin-top: 2rem; width: 100%; @@ -1151,10 +1174,15 @@ button.as-link { right: 0; left: auto; } + #nav_menu_actions ul.dropdown-menu::after { display: none; } +#nav_menu_actions .dropdown.only-mobile { + display: initial !important; +} + #nav_menu_read_all ul.dropdown-menu { left: 0; right: auto; diff --git a/p/themes/Swage/swage.scss b/p/themes/Swage/swage.scss index c3092b2e1..cc7aed10e 100644 --- a/p/themes/Swage/swage.scss +++ b/p/themes/Swage/swage.scss @@ -455,6 +455,16 @@ form { } } + .help a { + color: var(--color-text-light); + text-decoration: underline; + text-decoration-style: dotted; + + &:hover { + text-decoration-style: solid; + } + } + .input { select, input { @@ -464,6 +474,20 @@ form { } } +#dropdown-search-wrapper .dropdown-menu { + padding-top: 1rem; + padding-bottom: 0.25rem; + + .stick.search { + width: 100%; + + input[type="search"] { + width: 100%; + border: 0; + } + } +} + .labels, .tags, .share { @@ -1171,6 +1195,10 @@ a.signin { .dropdown { position: relative; + + .dropdown-menu { + width: auto; + } } #new-article { @@ -1476,6 +1504,10 @@ button.as-link { display: none; } } + + .dropdown.only-mobile { + display: initial !important; + } } #nav_menu_read_all { diff --git a/p/themes/base-theme/frss.css b/p/themes/base-theme/frss.css index a546de43a..d142308bc 100644 --- a/p/themes/base-theme/frss.css +++ b/p/themes/base-theme/frss.css @@ -115,6 +115,10 @@ h3 { display: none; } +.only-mobile { + display: none !important; +} + /*=== Paragraphs */ p { margin: 1rem 0 0.5rem; @@ -443,7 +447,7 @@ td.numeric { flex-shrink: 0; } -.stick form { +#nav_menu_read_all form { display: inline-flex; } @@ -1933,7 +1937,6 @@ input:checked + .slide-container .properties { } .nav-login, -.nav_menu .search, .aside .toggle_aside, #slider .toggle_aside, .nav_menu .toggle_aside, @@ -2008,6 +2011,10 @@ input:checked + .slide-container .properties { display: none; } + .only-mobile { + display: unset !important; + } + .header > .item { padding: 5px; } @@ -2076,6 +2083,23 @@ input:checked + .slide-container .properties { margin: 2px 0; } + .dropdown .dropdown-menu .item .stick .btn { + margin: 0; + } + + .dropdown .dropdown-menu .item form { + display: block; + text-align: center; + } + + .dropdown .dropdown-menu .item .stick.search { + width: calc(100% - 20px); + } + + .dropdown .dropdown-menu .item .stick.search input { + width: 95%; + } + .dropdown .dropdown-menu .item button.as-link, .dropdown .dropdown-menu .item button.as-link:hover, button.as-link:active { width: 100%; @@ -2138,7 +2162,6 @@ input:checked + .slide-container .properties { } .nav_menu .toggle_aside, - .nav_menu .search, #panel .close img { display: inline-block; } diff --git a/p/themes/base-theme/frss.rtl.css b/p/themes/base-theme/frss.rtl.css index 610144fcb..6353f1a39 100644 --- a/p/themes/base-theme/frss.rtl.css +++ b/p/themes/base-theme/frss.rtl.css @@ -115,6 +115,10 @@ h3 { display: none; } +.only-mobile { + display: none !important; +} + /*=== Paragraphs */ p { margin: 1rem 0 0.5rem; @@ -443,7 +447,7 @@ td.numeric { flex-shrink: 0; } -.stick form { +#nav_menu_read_all form { display: inline-flex; } @@ -1933,7 +1937,6 @@ input:checked + .slide-container .properties { } .nav-login, -.nav_menu .search, .aside .toggle_aside, #slider .toggle_aside, .nav_menu .toggle_aside, @@ -2008,6 +2011,10 @@ input:checked + .slide-container .properties { display: none; } + .only-mobile { + display: unset !important; + } + .header > .item { padding: 5px; } @@ -2076,6 +2083,23 @@ input:checked + .slide-container .properties { margin: 2px 0; } + .dropdown .dropdown-menu .item .stick .btn { + margin: 0; + } + + .dropdown .dropdown-menu .item form { + display: block; + text-align: center; + } + + .dropdown .dropdown-menu .item .stick.search { + width: calc(100% - 20px); + } + + .dropdown .dropdown-menu .item .stick.search input { + width: 95%; + } + .dropdown .dropdown-menu .item button.as-link, .dropdown .dropdown-menu .item button.as-link:hover, button.as-link:active { width: 100%; @@ -2138,7 +2162,6 @@ input:checked + .slide-container .properties { } .nav_menu .toggle_aside, - .nav_menu .search, #panel .close img { display: inline-block; } -- cgit v1.2.3 From 9b5de54a9c96110b42f71681aa635e2e2c3b8756 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 3 Feb 2023 14:34:47 +0100 Subject: Remove -x on some files not needing it (#5065) --- app/Controllers/configureController.php | 0 app/Controllers/entryController.php | 0 app/Controllers/feedController.php | 0 app/Controllers/indexController.php | 0 app/Controllers/javascriptController.php | 0 app/i18n/es/admin.php | 0 app/i18n/es/conf.php | 0 app/i18n/es/feedback.php | 0 app/i18n/es/gen.php | 0 app/i18n/es/index.php | 0 app/i18n/es/install.php | 0 app/i18n/es/sub.php | 0 lib/SimplePie/SimplePie/Registry.php | 0 p/i/index.php | 0 p/themes/icons/look.svg | 0 15 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 app/Controllers/configureController.php mode change 100755 => 100644 app/Controllers/entryController.php mode change 100755 => 100644 app/Controllers/feedController.php mode change 100755 => 100644 app/Controllers/indexController.php mode change 100755 => 100644 app/Controllers/javascriptController.php mode change 100755 => 100644 app/i18n/es/admin.php mode change 100755 => 100644 app/i18n/es/conf.php mode change 100755 => 100644 app/i18n/es/feedback.php mode change 100755 => 100644 app/i18n/es/gen.php mode change 100755 => 100644 app/i18n/es/index.php mode change 100755 => 100644 app/i18n/es/install.php mode change 100755 => 100644 app/i18n/es/sub.php mode change 100755 => 100644 lib/SimplePie/SimplePie/Registry.php mode change 100755 => 100644 p/i/index.php mode change 100755 => 100644 p/themes/icons/look.svg (limited to 'app/i18n') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php old mode 100755 new mode 100644 diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php old mode 100755 new mode 100644 diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php old mode 100755 new mode 100644 diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php old mode 100755 new mode 100644 diff --git a/app/Controllers/javascriptController.php b/app/Controllers/javascriptController.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/conf.php b/app/i18n/es/conf.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/feedback.php b/app/i18n/es/feedback.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/index.php b/app/i18n/es/index.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/install.php b/app/i18n/es/install.php old mode 100755 new mode 100644 diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php old mode 100755 new mode 100644 diff --git a/lib/SimplePie/SimplePie/Registry.php b/lib/SimplePie/SimplePie/Registry.php old mode 100755 new mode 100644 diff --git a/p/i/index.php b/p/i/index.php old mode 100755 new mode 100644 diff --git a/p/themes/icons/look.svg b/p/themes/icons/look.svg old mode 100755 new mode 100644 -- cgit v1.2.3 From 05ae1b0d2684cea4eda664c5ea1a995cb9f0c4b9 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Thu, 9 Feb 2023 13:57:20 +0100 Subject: XML+XPath (#5076) * XML+XPath #fix https://github.com/FreshRSS/FreshRSS/issues/5075 Implementation allowing to take an XML document as input using an XML parser (instead of an HTML parser for HTML+XPath) * Remove noise from another PR * Better MIME for XML * And add glob *.xml for cache cleaning * Minor syntax * Add glob json for clean cache --- app/Controllers/feedController.php | 14 ++++++++++---- app/Controllers/subscriptionController.php | 2 +- app/Models/Feed.php | 29 ++++++++++++++++++++++++----- app/Services/ExportService.php | 1 + app/Services/ImportService.php | 5 ++++- app/i18n/cz/sub.php | 1 + app/i18n/de/sub.php | 1 + app/i18n/el/sub.php | 1 + app/i18n/en-us/sub.php | 1 + app/i18n/en/sub.php | 1 + app/i18n/es/sub.php | 1 + app/i18n/fr/sub.php | 1 + app/i18n/he/sub.php | 1 + app/i18n/id/sub.php | 1 + app/i18n/it/sub.php | 1 + app/i18n/ja/sub.php | 1 + app/i18n/ko/sub.php | 1 + app/i18n/nl/sub.php | 1 + app/i18n/oc/sub.php | 1 + app/i18n/pl/sub.php | 1 + app/i18n/pt-br/sub.php | 1 + app/i18n/ru/sub.php | 1 + app/i18n/sk/sub.php | 1 + app/i18n/tr/sub.php | 1 + app/i18n/zh-cn/sub.php | 1 + app/i18n/zh-tw/sub.php | 1 + app/views/helpers/export/opml.phtml | 11 +++++++++-- app/views/helpers/feed/update.phtml | 5 +++-- app/views/subscription/add.phtml | 1 + docs/en/developers/OPML.md | 4 +++- lib/lib_rss.php | 14 ++++++++++++-- p/scripts/feed.js | 11 +++++++++-- 32 files changed, 98 insertions(+), 20 deletions(-) (limited to 'app/i18n') diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index 2bef85f0e..84f38fe5e 100644 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -81,6 +81,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController { $feed->load(true); //Throws FreshRSS_Feed_Exception, Minz_FileNotExistException break; case FreshRSS_Feed::KIND_HTML_XPATH: + case FreshRSS_Feed::KIND_XML_XPATH: $feed->_website($url); break; } @@ -201,8 +202,8 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController { $timeout = intval(Minz_Request::param('timeout', 0)); $attributes['timeout'] = $timeout > 0 ? $timeout : null; - $feed_kind = Minz_Request::param('feed_kind', FreshRSS_Feed::KIND_RSS); - if ($feed_kind == FreshRSS_Feed::KIND_HTML_XPATH) { + $feed_kind = (int)Minz_Request::param('feed_kind', FreshRSS_Feed::KIND_RSS); + if ($feed_kind === FreshRSS_Feed::KIND_HTML_XPATH || $feed_kind === FreshRSS_Feed::KIND_XML_XPATH) { $xPathSettings = []; if (Minz_Request::param('xPathFeedTitle', '') != '') $xPathSettings['feedTitle'] = Minz_Request::param('xPathFeedTitle', '', true); if (Minz_Request::param('xPathItem', '') != '') $xPathSettings['item'] = Minz_Request::param('xPathItem', '', true); @@ -385,10 +386,15 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController { if ($simplePiePush) { $simplePie = $simplePiePush; //Used by WebSub } elseif ($feed->kind() === FreshRSS_Feed::KIND_HTML_XPATH) { - $simplePie = $feed->loadHtmlXpath(false, $isNewFeed); - if ($simplePie == null) { + $simplePie = $feed->loadHtmlXpath(); + if ($simplePie === null) { throw new FreshRSS_Feed_Exception('HTML+XPath Web scraping failed for [' . $feed->url(false) . ']'); } + } elseif ($feed->kind() === FreshRSS_Feed::KIND_XML_XPATH) { + $simplePie = $feed->loadHtmlXpath(); + if ($simplePie === null) { + throw new FreshRSS_Feed_Exception('XML+XPath parsing failed for [' . $feed->url(false) . ']'); + } } else { $simplePie = $feed->load(false, $isNewFeed); } diff --git a/app/Controllers/subscriptionController.php b/app/Controllers/subscriptionController.php index b2ee046d9..f0355a82a 100644 --- a/app/Controllers/subscriptionController.php +++ b/app/Controllers/subscriptionController.php @@ -203,7 +203,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController { $feed->_filtersAction('read', preg_split('/[\n\r]+/', Minz_Request::param('filteractions_read', ''))); $feed->_kind(intval(Minz_Request::param('feed_kind', FreshRSS_Feed::KIND_RSS))); - if ($feed->kind() == FreshRSS_Feed::KIND_HTML_XPATH) { + if ($feed->kind() === FreshRSS_Feed::KIND_HTML_XPATH || $feed->kind() === FreshRSS_Feed::KIND_XML_XPATH) { $xPathSettings = []; if (Minz_Request::param('xPathItem', '') != '') $xPathSettings['item'] = Minz_Request::param('xPathItem', '', true); if (Minz_Request::param('xPathItemTitle', '') != '') $xPathSettings['itemTitle'] = Minz_Request::param('xPathItemTitle', '', true); diff --git a/app/Models/Feed.php b/app/Models/Feed.php index f7ff76768..7c46199a5 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -17,6 +17,11 @@ class FreshRSS_Feed extends Minz_Model { * @var int */ const KIND_HTML_XPATH = 10; + /** + * Normal XML with XPath scraping + * @var int + */ + const KIND_XML_XPATH = 15; /** * Normal JSON with XPath scraping * @var int @@ -586,7 +591,7 @@ class FreshRSS_Feed extends Minz_Model { /** * @return SimplePie|null */ - public function loadHtmlXpath(bool $loadDetails = false, bool $noCache = false) { + public function loadHtmlXpath() { if ($this->url == '') { return null; } @@ -614,8 +619,9 @@ class FreshRSS_Feed extends Minz_Model { return null; } - $cachePath = FreshRSS_Feed::cacheFilename($feedSourceUrl, $this->attributes(), FreshRSS_Feed::KIND_HTML_XPATH); - $html = httpGet($feedSourceUrl, $cachePath, 'html', $this->attributes()); + $cachePath = FreshRSS_Feed::cacheFilename($feedSourceUrl, $this->attributes(), $this->kind()); + $html = httpGet($feedSourceUrl, $cachePath, + $this->kind() === FreshRSS_Feed::KIND_XML_XPATH ? 'xml' : 'html', $this->attributes()); if (strlen($html) <= 0) { return null; } @@ -630,7 +636,18 @@ class FreshRSS_Feed extends Minz_Model { $doc = new DOMDocument(); $doc->recover = true; $doc->strictErrorChecking = false; - $doc->loadHTML($html, LIBXML_NONET | LIBXML_NOERROR | LIBXML_NOWARNING); + + switch ($this->kind()) { + case FreshRSS_Feed::KIND_HTML_XPATH: + $doc->loadHTML($html, LIBXML_NONET | LIBXML_NOERROR | LIBXML_NOWARNING); + break; + case FreshRSS_Feed::KIND_XML_XPATH: + $doc->loadXML($html, LIBXML_NONET | LIBXML_NOERROR | LIBXML_NOWARNING); + break; + default: + return null; + } + $xpath = new DOMXPath($doc); $view->rss_title = $xPathFeedTitle == '' ? $this->name() : htmlspecialchars(@$xpath->evaluate('normalize-space(' . $xPathFeedTitle . ')'), ENT_COMPAT, 'UTF-8'); @@ -776,8 +793,10 @@ class FreshRSS_Feed extends Minz_Model { public static function cacheFilename(string $url, array $attributes, int $kind = FreshRSS_Feed::KIND_RSS): string { $simplePie = customSimplePie($attributes); $filename = $simplePie->get_cache_filename($url); - if ($kind == FreshRSS_Feed::KIND_HTML_XPATH) { + if ($kind === FreshRSS_Feed::KIND_HTML_XPATH) { return CACHE_PATH . '/' . $filename . '.html'; + } elseif ($kind === FreshRSS_Feed::KIND_XML_XPATH) { + return CACHE_PATH . '/' . $filename . '.xml'; } else { return CACHE_PATH . '/' . $filename . '.spc'; } diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php index 2f35666a8..6b0a3f178 100644 --- a/app/Services/ExportService.php +++ b/app/Services/ExportService.php @@ -21,6 +21,7 @@ class FreshRSS_Export_Service { const FRSS_NAMESPACE = 'https://freshrss.org/opml'; const TYPE_HTML_XPATH = 'HTML+XPath'; + const TYPE_XML_XPATH = 'XML+XPath'; const TYPE_RSS_ATOM = 'rss'; /** diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index 68aa6f741..55aa28679 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -160,10 +160,13 @@ class FreshRSS_Import_Service { $feed->_website($website); $feed->_description($description); - switch ($feed_elt['type'] ?? '') { + switch (strtolower($feed_elt['type'] ?? '')) { case strtolower(FreshRSS_Export_Service::TYPE_HTML_XPATH): $feed->_kind(FreshRSS_Feed::KIND_HTML_XPATH); break; + case strtolower(FreshRSS_Export_Service::TYPE_XML_XPATH): + $feed->_kind(FreshRSS_Feed::KIND_XML_XPATH); + break; case strtolower(FreshRSS_Export_Service::TYPE_RSS_ATOM): default: $feed->_kind(FreshRSS_Feed::KIND_RSS); diff --git a/app/i18n/cz/sub.php b/app/i18n/cz/sub.php index a11a9359d..3d08c315b 100644 --- a/app/i18n/cz/sub.php +++ b/app/i18n/cz/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath pro:', ), 'rss' => 'RSS / Atom (výchozí)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Vymazat mezipaměť', diff --git a/app/i18n/de/sub.php b/app/i18n/de/sub.php index 580f7d348..b265c1b98 100644 --- a/app/i18n/de/sub.php +++ b/app/i18n/de/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath für:', ), 'rss' => 'RSS / Atom (Standard)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Zwischenspeicher leeren', diff --git a/app/i18n/el/sub.php b/app/i18n/el/sub.php index 424fafc7b..aae9ae412 100644 --- a/app/i18n/el/sub.php +++ b/app/i18n/el/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath for:', // TODO ), 'rss' => 'RSS / Atom (default)', // TODO + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Clear cache', // TODO diff --git a/app/i18n/en-us/sub.php b/app/i18n/en-us/sub.php index a6b311084..92d75b81e 100644 --- a/app/i18n/en-us/sub.php +++ b/app/i18n/en-us/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath for:', // IGNORE ), 'rss' => 'RSS / Atom (default)', // IGNORE + 'xml_xpath' => 'XML + XPath', // IGNORE ), 'maintenance' => array( 'clear_cache' => 'Clear cache', // IGNORE diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index c7e100c25..04caaff05 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath for:', ), 'rss' => 'RSS / Atom (default)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Clear cache', diff --git a/app/i18n/es/sub.php b/app/i18n/es/sub.php index 52d681067..4fd2fa393 100644 --- a/app/i18n/es/sub.php +++ b/app/i18n/es/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath para:', ), 'rss' => 'RSS / Atom (por defecto)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Borrar caché', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index f9df0dbcc..be6dc094d 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath pour :', ), 'rss' => 'RSS / Atom (par défaut)', + 'xml_xpath' => 'XML + XPath', // IGNORE ), 'maintenance' => array( 'clear_cache' => 'Vider le cache', diff --git a/app/i18n/he/sub.php b/app/i18n/he/sub.php index 25552ffa1..bae5f5177 100644 --- a/app/i18n/he/sub.php +++ b/app/i18n/he/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath for:', // TODO ), 'rss' => 'RSS / Atom (default)', // TODO + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Clear cache', // TODO diff --git a/app/i18n/id/sub.php b/app/i18n/id/sub.php index 7fdf5c024..3f9a4916a 100644 --- a/app/i18n/id/sub.php +++ b/app/i18n/id/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath for:', // TODO ), 'rss' => 'RSS / Atom (default)', // TODO + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Clear cache', // TODO diff --git a/app/i18n/it/sub.php b/app/i18n/it/sub.php index 8614caca7..7ab83cf07 100644 --- a/app/i18n/it/sub.php +++ b/app/i18n/it/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath per:', ), 'rss' => 'RSS / Atom (predefinito)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Svuota cache', diff --git a/app/i18n/ja/sub.php b/app/i18n/ja/sub.php index 80548c025..2425b21f3 100644 --- a/app/i18n/ja/sub.php +++ b/app/i18n/ja/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPathは:', ), 'rss' => 'RSS / Atom (標準)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'キャッシュのクリア', diff --git a/app/i18n/ko/sub.php b/app/i18n/ko/sub.php index e0ef5990b..f376247d5 100644 --- a/app/i18n/ko/sub.php +++ b/app/i18n/ko/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => '다음의 XPath:', ), 'rss' => 'RSS / Atom (기본값)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => '캐쉬 지우기', diff --git a/app/i18n/nl/sub.php b/app/i18n/nl/sub.php index 0fa767171..631da9477 100644 --- a/app/i18n/nl/sub.php +++ b/app/i18n/nl/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath voor:', ), 'rss' => 'RSS / Atom (standaard)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Cache leegmaken', diff --git a/app/i18n/oc/sub.php b/app/i18n/oc/sub.php index 92a73057c..008b4964d 100644 --- a/app/i18n/oc/sub.php +++ b/app/i18n/oc/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath per :', ), 'rss' => 'RSS / Atom (defaut)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Escafar lo cache', diff --git a/app/i18n/pl/sub.php b/app/i18n/pl/sub.php index b6121fcb7..565401982 100644 --- a/app/i18n/pl/sub.php +++ b/app/i18n/pl/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath dla:', ), 'rss' => 'RSS / Atom (domyślne)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Wyczyść pamięć podręczną', diff --git a/app/i18n/pt-br/sub.php b/app/i18n/pt-br/sub.php index c9755755e..4cdee8681 100644 --- a/app/i18n/pt-br/sub.php +++ b/app/i18n/pt-br/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath para:', ), 'rss' => 'RSS / Atom (padrão)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Limpar o cache', diff --git a/app/i18n/ru/sub.php b/app/i18n/ru/sub.php index 5704b53b1..d13c4c4f0 100644 --- a/app/i18n/ru/sub.php +++ b/app/i18n/ru/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath для:', ), 'rss' => 'RSS / Atom (по умолчанию)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Очистить кэш', diff --git a/app/i18n/sk/sub.php b/app/i18n/sk/sub.php index f583f6ca0..3c980d202 100644 --- a/app/i18n/sk/sub.php +++ b/app/i18n/sk/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath pre:', ), 'rss' => 'RSS / Atom (prednastavené)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Vymazať vyrovnáciu pamäť', diff --git a/app/i18n/tr/sub.php b/app/i18n/tr/sub.php index 056c059ac..3e03f667c 100644 --- a/app/i18n/tr/sub.php +++ b/app/i18n/tr/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath:', ), 'rss' => 'RSS / Atom (varsayılan)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => 'Önbelleği temizle', diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php index 2f9d17ace..5e6e570a9 100644 --- a/app/i18n/zh-cn/sub.php +++ b/app/i18n/zh-cn/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath 定位:', ), 'rss' => 'RSS / Atom (默认)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => '清理缓存', diff --git a/app/i18n/zh-tw/sub.php b/app/i18n/zh-tw/sub.php index dddcb2661..8a255645d 100644 --- a/app/i18n/zh-tw/sub.php +++ b/app/i18n/zh-tw/sub.php @@ -122,6 +122,7 @@ return array( 'xpath' => 'XPath 定位:', ), 'rss' => 'RSS / Atom (默認)', + 'xml_xpath' => 'XML + XPath', // TODO ), 'maintenance' => array( 'clear_cache' => '清理暫存', diff --git a/app/views/helpers/export/opml.phtml b/app/views/helpers/export/opml.phtml index eb6f7523b..64c83c960 100644 --- a/app/views/helpers/export/opml.phtml +++ b/app/views/helpers/export/opml.phtml @@ -18,8 +18,15 @@ function feedsToOutlines($feeds, $excludeMutedFeeds = false): array { 'description' => htmlspecialchars_decode($feed->description(), ENT_QUOTES), ]; - if ($feed->kind() === FreshRSS_Feed::KIND_HTML_XPATH) { - $outline['type'] = FreshRSS_Export_Service::TYPE_HTML_XPATH; + if ($feed->kind() === FreshRSS_Feed::KIND_HTML_XPATH || $feed->kind() === FreshRSS_Feed::KIND_XML_XPATH) { + switch ($feed->kind()) { + case FreshRSS_Feed::KIND_HTML_XPATH: + $outline['type'] = FreshRSS_Export_Service::TYPE_HTML_XPATH; + break; + case FreshRSS_Feed::KIND_XML_XPATH: + $outline['type'] = FreshRSS_Export_Service::TYPE_XML_XPATH; + break; + } /** @var array */ $xPathSettings = $feed->attributes('xpath'); $outline['frss:xPathItem'] = $xPathSettings['item'] ?? null; diff --git a/app/views/helpers/feed/update.phtml b/app/views/helpers/feed/update.phtml index 5b958451d..0cd2ec0c3 100644 --- a/app/views/helpers/feed/update.phtml +++ b/app/views/helpers/feed/update.phtml @@ -391,8 +391,9 @@
diff --git a/app/views/subscription/add.phtml b/app/views/subscription/add.phtml index 7fa59e751..4e9da877f 100644 --- a/app/views/subscription/add.phtml +++ b/app/views/subscription/add.phtml @@ -70,6 +70,7 @@
diff --git a/docs/en/developers/OPML.md b/docs/en/developers/OPML.md index 2190a1de3..f65fd2faa 100644 --- a/docs/en/developers/OPML.md +++ b/docs/en/developers/OPML.md @@ -17,12 +17,14 @@ FreshRSS uses the XML namespace to export/import ext The list of the custom FreshRSS attributes can be seen in [the source code](https://github.com/FreshRSS/FreshRSS/blob/edge/app/views/helpers/export/opml.phtml), and here is an overview: -### HTML+XPath +### HTML+XPath or XML+XPath * ` ℹ️ [XPath 1.0](https://en.wikipedia.org/wiki/XPath) is a standard query language, which FreshRSS supports to enable [Web scraping](https://en.wikipedia.org/wiki/Web_scraping). +* ` $attributes */ function httpGet(string $url, string $cachePath, string $type = 'html', array $attributes = []): string { @@ -439,9 +443,15 @@ function httpGet(string $url, string $cachePath, string $type = 'html', array $a $accept = '*/*;q=0.8'; switch ($type) { + case 'json': + $accept = 'application/json,application/javascript;q=0.9,text/javascript;q=0.8,*/*;q=0.7'; + break; case 'opml': $accept = 'text/x-opml,text/xml;q=0.9,application/xml;q=0.9,*/*;q=0.8'; break; + case 'xml': + $accept = 'application/xml,application/xhtml+xml,text/xml;q=0.9,*/*;q=0.8'; + break; case 'html': default: $accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; diff --git a/p/scripts/feed.js b/p/scripts/feed.js index 1a6833db6..29af2a3ea 100644 --- a/p/scripts/feed.js +++ b/p/scripts/feed.js @@ -88,10 +88,17 @@ function init_disable_elements_on_update(parent) { function init_select_show(parent) { const listener = (select) => { const options = select.querySelectorAll('option[data-show]'); + const shows = {}; // To allow multiple options to show the same element for (const option of options) { - const elem = document.getElementById(option.dataset.show); + if (!shows[option.dataset.show]) { + shows[option.dataset.show] = option.selected; + } + } + + for (const show in shows) { + const elem = document.getElementById(show); if (elem) { - elem.style.display = option.selected ? 'block' : 'none'; + elem.style.display = shows[show] ? 'block' : 'none'; } } }; -- cgit v1.2.3 From f3216b61b9d02531dad0d4244563c0d44cdc89ba Mon Sep 17 00:00:00 2001 From: yzqzss <30341059+yzqzss@users.noreply.github.com> Date: Thu, 23 Feb 2023 05:13:38 +0800 Subject: add archive.org as sharing service (#5096) Co-authored-by: maTh --- app/i18n/cz/gen.php | 1 + app/i18n/de/gen.php | 1 + app/i18n/el/gen.php | 1 + app/i18n/en-us/gen.php | 1 + app/i18n/en/gen.php | 1 + app/i18n/es/gen.php | 1 + app/i18n/fr/gen.php | 1 + app/i18n/he/gen.php | 1 + app/i18n/id/gen.php | 1 + app/i18n/it/gen.php | 1 + app/i18n/ja/gen.php | 1 + app/i18n/ko/gen.php | 1 + app/i18n/nl/gen.php | 1 + app/i18n/oc/gen.php | 1 + app/i18n/pl/gen.php | 1 + app/i18n/pt-br/gen.php | 1 + app/i18n/ru/gen.php | 1 + app/i18n/sk/gen.php | 1 + app/i18n/tr/gen.php | 1 + app/i18n/zh-cn/gen.php | 1 + app/i18n/zh-tw/gen.php | 1 + app/shares.php | 7 +++++++ 22 files changed, 28 insertions(+) (limited to 'app/i18n') diff --git a/app/i18n/cz/gen.php b/app/i18n/cz/gen.php index cf7973a3c..1f75033fa 100644 --- a/app/i18n/cz/gen.php +++ b/app/i18n/cz/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Známé základní stránky', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Schránka', diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index e4dac4282..fb35bc41c 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known-Seite (https://withknown.com)', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Zwischenablage', diff --git a/app/i18n/el/gen.php b/app/i18n/el/gen.php index d6816a5d8..03852a0c6 100644 --- a/app/i18n/el/gen.php +++ b/app/i18n/el/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', // TODO + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // TODO 'blogotext' => 'Blogotext', // TODO 'clipboard' => 'Clipboard', // TODO diff --git a/app/i18n/en-us/gen.php b/app/i18n/en-us/gen.php index 52baba32b..ca08ed27f 100644 --- a/app/i18n/en-us/gen.php +++ b/app/i18n/en-us/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', // IGNORE + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Clipboard', // IGNORE diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index a30690a25..d3a36995f 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', + 'archiveORG' => 'archive.org', 'archivePH' => 'archive.ph', 'blogotext' => 'Blogotext', 'clipboard' => 'Clipboard', diff --git a/app/i18n/es/gen.php b/app/i18n/es/gen.php index a636d407a..5ea2fce23 100644 --- a/app/i18n/es/gen.php +++ b/app/i18n/es/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Sitios basados en conocidos', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Portapapeles', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 4baa93d18..53e7160a2 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Sites basés sur Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Presse-papier', diff --git a/app/i18n/he/gen.php b/app/i18n/he/gen.php index 317482a09..6345e66e9 100644 --- a/app/i18n/he/gen.php +++ b/app/i18n/he/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', // TODO + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Clipboard', // TODO diff --git a/app/i18n/id/gen.php b/app/i18n/id/gen.php index a2baff42f..1fc2fa155 100644 --- a/app/i18n/id/gen.php +++ b/app/i18n/id/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', // TODO + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // TODO 'blogotext' => 'Blogotext', // TODO 'clipboard' => 'Clipboard', // TODO diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 465b758c0..f3edb57aa 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Siti basati su Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Appunti', diff --git a/app/i18n/ja/gen.php b/app/i18n/ja/gen.php index 7ad2f2eb8..f6cf2dcdf 100644 --- a/app/i18n/ja/gen.php +++ b/app/i18n/ja/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'よく使われるサイト', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'クリップボード', diff --git a/app/i18n/ko/gen.php b/app/i18n/ko/gen.php index 63e3ba478..da1f57e9c 100644 --- a/app/i18n/ko/gen.php +++ b/app/i18n/ko/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known based sites', // IGNORE + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => '클립보드', diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index 0c5122643..ad3379ece 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Known-gebaseerde sites', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Klembord', diff --git a/app/i18n/oc/gen.php b/app/i18n/oc/gen.php index 281696a89..8e852a810 100644 --- a/app/i18n/oc/gen.php +++ b/app/i18n/oc/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Sites basats sus Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Quicha-papiers.', diff --git a/app/i18n/pl/gen.php b/app/i18n/pl/gen.php index 28863ff59..fc91d8bca 100644 --- a/app/i18n/pl/gen.php +++ b/app/i18n/pl/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Strony bazujące na usłudze Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Schowek', diff --git a/app/i18n/pt-br/gen.php b/app/i18n/pt-br/gen.php index 0a8c56d6a..51c1eb327 100644 --- a/app/i18n/pt-br/gen.php +++ b/app/i18n/pt-br/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Sites no Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Área de transferência', diff --git a/app/i18n/ru/gen.php b/app/i18n/ru/gen.php index 3fd4b9190..ddfea7ca4 100644 --- a/app/i18n/ru/gen.php +++ b/app/i18n/ru/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Сайты на Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Буфер обмена', diff --git a/app/i18n/sk/gen.php b/app/i18n/sk/gen.php index 4fa7a74eb..d591266e4 100644 --- a/app/i18n/sk/gen.php +++ b/app/i18n/sk/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Stránky založené na Known', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Schránka', diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index bf1f18848..4b84d6c40 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => 'Bilinen siteler', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => 'Kopyala', diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php index 0732ae707..d4999e5b0 100644 --- a/app/i18n/zh-cn/gen.php +++ b/app/i18n/zh-cn/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => '基于 Known 的站点', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => '剪贴板', diff --git a/app/i18n/zh-tw/gen.php b/app/i18n/zh-tw/gen.php index cf09fa3df..3ef8bca44 100644 --- a/app/i18n/zh-tw/gen.php +++ b/app/i18n/zh-tw/gen.php @@ -192,6 +192,7 @@ return array( ), 'share' => array( 'Known' => '基於 Known 的站點', + 'archiveORG' => 'archive.org', // IGNORE 'archivePH' => 'archive.ph', // IGNORE 'blogotext' => 'Blogotext', // IGNORE 'clipboard' => '剪貼板', diff --git a/app/shares.php b/app/shares.php index aa88c4b6d..117cd4dce 100644 --- a/app/shares.php +++ b/app/shares.php @@ -26,6 +26,13 @@ */ return array( + 'archiveORG' => array( + 'url' => 'https://web.archive.org/save/~LINK~', + 'transform' => array(), + 'help' => 'https://web.archive.org', + 'form' => 'simple', + 'method' => 'GET', + ), 'archivePH' => array( 'url' => 'https://archive.ph/submit/?url=~LINK~', 'transform' => array(), -- cgit v1.2.3