From 12c240803f42f4b25d74299f9d4256588cbe284d Mon Sep 17 00:00:00 2001 From: gfbdrgng Date: Mon, 6 Jan 2025 06:35:39 +0000 Subject: [PATCH 01/33] Translated using Weblate (Russian) Currently translated at 96.8% (1732 of 1788 strings) --- plinth/locale/ru/LC_MESSAGES/django.po | 185 ++++++++----------------- 1 file changed, 57 insertions(+), 128 deletions(-) diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index cb5c46c32..794dbd3fc 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-12-30 20:05-0500\n" -"PO-Revision-Date: 2024-12-06 03:13+0000\n" -"Last-Translator: Sunil Mohan Adapa \n" +"PO-Revision-Date: 2025-01-06 07:11+0000\n" +"Last-Translator: gfbdrgng \n" "Language-Team: Russian \n" "Language: ru\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.9-dev\n" +"X-Generator: Weblate 5.10-dev\n" #: config.py:103 #, python-brace-format @@ -138,22 +138,17 @@ msgstr "" "позже." #: middleware.py:147 -#, fuzzy, python-brace-format -#| msgid "Page not found - %(box_name)s" +#, python-brace-format msgid "Page not found: {url}" -msgstr "Страница не найдена - %(box_name)s" +msgstr "Страница не найдена: {url}" #: middleware.py:150 -#, fuzzy -#| msgid "Error During Backup" msgid "Error running operation." -msgstr "Ошибка во время резервного копирования" +msgstr "Ошибка при выполнении операции." #: middleware.py:152 -#, fuzzy -#| msgid "Error During Backup" msgid "Error loading page." -msgstr "Ошибка во время резервного копирования" +msgstr "Ошибка при загрузке страницы." #: modules/apache/__init__.py:32 msgid "Apache HTTP Server" @@ -205,15 +200,16 @@ msgstr "Домен локальной сети" #: modules/avahi/manifest.py:14 msgid "Auto-discovery" -msgstr "" +msgstr "Автоматическое обнаружение" #: modules/avahi/manifest.py:14 modules/backups/manifest.py:17 msgid "Local" -msgstr "" +msgstr "Местный" #: modules/avahi/manifest.py:14 +#, fuzzy msgid "mDNS" -msgstr "" +msgstr "mDNS" #: modules/backups/__init__.py:24 msgid "Backups allows creating and managing backup archives." @@ -485,28 +481,20 @@ msgid "Restore" msgstr "Восстановить" #: modules/backups/manifest.py:15 -#, fuzzy -#| msgid "Encryption" msgid "Encrypted" -msgstr "Шифрование" +msgstr "Зашифрованно" #: modules/backups/manifest.py:16 -#, fuzzy -#| msgid "Schedule" msgid "Schedules" msgstr "Расписание" #: modules/backups/manifest.py:18 -#, fuzzy -#| msgid "Remove" msgid "Remote" -msgstr "Удалить" +msgstr "Удаленный" #: modules/backups/manifest.py:19 -#, fuzzy -#| msgid "App updated" msgid "App data" -msgstr "Приложение обновлено" +msgstr "Данные приложения" #: modules/backups/manifest.py:20 #: modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -516,8 +504,9 @@ msgid "Configuration" msgstr "Конфигурация" #: modules/backups/manifest.py:21 +#, fuzzy msgid "Borg" -msgstr "" +msgstr "Borg" #: modules/backups/privileged.py:31 msgid "" @@ -550,18 +539,16 @@ msgstr "" "копий." #: modules/backups/privileged.py:74 -#, fuzzy -#| msgid "A share with this name already exists." msgid "An archive with given name already exists in the repository." -msgstr "Общий ресурс с таким именем уже существует." +msgstr "Архив с заданным именем уже существует в хранилище." #: modules/backups/privileged.py:81 msgid "Archive with given name was not found in the repository." -msgstr "" +msgstr "Архив с указанным именем не найден в хранилище." #: modules/backups/privileged.py:87 msgid "Backup system is busy with another operation." -msgstr "" +msgstr "Резервная система занята другой операцией." #: modules/backups/repository.py:94 msgid "Existing repository is not encrypted." @@ -806,10 +793,8 @@ msgid "Upload and restore a backup" msgstr "Загрузить и восстановить резервную копию" #: modules/backups/views.py:218 -#, fuzzy -#| msgid "Logged out successfully." msgid "Upload successful." -msgstr "Выход выполнен успешно." +msgstr "Загрузка прошла успешно." #: modules/backups/views.py:256 msgid "No backup file found." @@ -832,10 +817,8 @@ msgid "Create backup repository" msgstr "Создать репозиторий резервных копий" #: modules/backups/views.py:352 -#, fuzzy -#| msgid "Added new remote SSH repository." msgid "Added new repository." -msgstr "Добавлен новый удалённый SSH-репозиторий." +msgstr "Добавлен новый репозиторий." #: modules/backups/views.py:366 msgid "Create remote backup repository" @@ -1121,7 +1104,7 @@ msgstr "" #, fuzzy #| msgid "Enable DNSSEC" msgid "DNS" -msgstr "DNSSEC" +msgstr "DNS" #: modules/bind/manifest.py:17 modules/mumble/manifest.py:67 #: modules/radicale/manifest.py:91 modules/shadowsocks/forms.py:24 @@ -1129,10 +1112,8 @@ msgid "Server" msgstr "Сервер" #: modules/bind/manifest.py:18 -#, fuzzy -#| msgid "Resolver Status" msgid "Resolver" -msgstr "Состояние резольвера" +msgstr "Резолвер" #: modules/bind/templates/bind.html:11 msgid "Serving Domains" @@ -1355,16 +1336,12 @@ msgid "Cockpit" msgstr "Cockpit" #: modules/cockpit/manifest.py:23 -#, fuzzy -#| msgid "Administration" msgid "Advanced administration" -msgstr "Администрирование" +msgstr "Расширенное администрирование" #: modules/cockpit/manifest.py:24 -#, fuzzy -#| msgid "Web sharing" msgid "Web terminal" -msgstr "Совместное использование веб-страниц" +msgstr "Веб-терминал" #: modules/cockpit/manifest.py:25 modules/storage/__init__.py:47 #: modules/storage/__init__.py:319 modules/storage/__init__.py:350 @@ -1373,10 +1350,8 @@ msgid "Storage" msgstr "Хранилище" #: modules/cockpit/manifest.py:26 -#, fuzzy -#| msgid "Networks" msgid "Networking" -msgstr "Сети" +msgstr "Сеть" #: modules/cockpit/manifest.py:27 modules/names/templates/names.html:20 msgid "Services" @@ -1384,7 +1359,7 @@ msgstr "Службы" #: modules/cockpit/manifest.py:28 msgid "Logs" -msgstr "" +msgstr "Журналы" #: modules/cockpit/manifest.py:29 modules/performance/__init__.py:16 #: modules/performance/__init__.py:40 @@ -1481,13 +1456,11 @@ msgstr "Домашняя страница" #: modules/config/manifest.py:8 msgid "Logging" -msgstr "" +msgstr "Журнал" #: modules/config/manifest.py:8 -#, fuzzy -#| msgid "Advanced" msgid "Advanced apps" -msgstr "Дополнительные" +msgstr "Расширенные приложения" #: modules/config/views.py:41 #, python-brace-format @@ -1600,14 +1573,10 @@ msgid "-- no time zone set --" msgstr "-- не выбран часовой пояс --" #: modules/datetime/manifest.py:15 -#, fuzzy -#| msgid "Network drive" msgid "Network time" -msgstr "Сетевой диск" +msgstr "Время сети" #: modules/datetime/manifest.py:15 -#, fuzzy -#| msgid "Time Zone" msgid "Timezone" msgstr "Часовой пояс" @@ -1768,7 +1737,7 @@ msgstr "Если проблемы обнаружены, попробуйте у #: modules/diagnostics/manifest.py:10 msgid "Detect problems" -msgstr "" +msgstr "Обнаружение проблем" #: modules/diagnostics/manifest.py:10 msgid "Repair" @@ -1776,7 +1745,7 @@ msgstr "Исправление" #: modules/diagnostics/manifest.py:10 msgid "Daily" -msgstr "" +msgstr "Ежедневно" #: modules/diagnostics/templates/diagnostics.html:11 msgid "Diagnostics Run" @@ -2034,13 +2003,11 @@ msgstr "Домен" #: modules/dynamicdns/manifest.py:17 msgid "Free" -msgstr "" +msgstr "Бесплатно" #: modules/dynamicdns/manifest.py:17 -#, fuzzy -#| msgid "Server public key:" msgid "Needs public IP" -msgstr "Открытый ключ сервера:" +msgstr "Нужен публичный IP" #: modules/dynamicdns/templates/dynamicdns.html:11 #: modules/ejabberd/templates/ejabberd.html:13 modules/firewall/manifest.py:10 @@ -2719,10 +2686,8 @@ msgid "Ports" msgstr "Порты" #: modules/firewall/manifest.py:10 -#, fuzzy -#| msgid "Blocked" msgid "Blocking" -msgstr "Заблокировано" +msgstr "Блокировка" #: modules/firewall/manifest.py:10 modules/networks/forms.py:319 #: modules/upgrades/manifest.py:10 @@ -3085,10 +3050,8 @@ msgid "About" msgstr "О проекте" #: modules/help/templates/help_about.html:25 templates/messages.html:23 -#, fuzzy -#| msgid "Success" msgid "Success:" -msgstr "Успешно" +msgstr "Успех:" #: modules/help/templates/help_about.html:29 #: modules/upgrades/templates/upgrades_configure.html:26 @@ -3421,16 +3384,12 @@ msgstr "" "прикрепите этот журнал состояния к отчету об ошибке." #: modules/help/templates/statuslog.html:27 -#, fuzzy -#| msgid "" -#| "Please remove any passwords or other personal information from the log " -#| "before submitting the bug report." msgid "" "Please remove any personal information from the log before submitting the " "bug report." msgstr "" -"Удалите любые пароли или другую личную информацию из журнала перед отправкой " -"отчета об ошибке." +"Перед отправкой сообщения об ошибке удалите из журнала любую личную " +"информацию." #: modules/help/views.py:29 msgid "Documentation and FAQ" @@ -3843,10 +3802,8 @@ msgid "HTTPS" msgstr "HTTPS" #: modules/letsencrypt/manifest.py:11 -#, fuzzy -#| msgid "Website Security" msgid "Web security" -msgstr "Безопасность Веб-сайта" +msgstr "Веб-безопасность" #: modules/letsencrypt/templates/letsencrypt.html:25 msgid "Certificate Status" @@ -4052,24 +4009,13 @@ msgstr "" "domainname." #: modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 -#, fuzzy -#| msgid "" -#| "\n" -#| " Warning! Changing the domain name after this step " -#| "will\n" -#| " require uninstalling and reinstalling the app which will wipe app's " -#| "data.\n" -#| " " msgid "" "Warning! Changing the domain name after this step will " "require uninstalling and reinstalling the app which will wipe app's data." msgstr "" -"\n" -" Предупреждение! Изменение доменного имени после этого " -"шага\n" -" потребуется удалить и переустановить приложение, что приведет к " -"стиранию данных приложения.\n" -" " +"Предупреждение! Изменение доменного имени после этого шага " +"потребует удаления и переустановки приложения, что приведет к стиранию " +"данных приложения." #: modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 #, python-format @@ -4788,10 +4734,8 @@ msgid "Domains" msgstr "Домены" #: modules/names/manifest.py:13 -#, fuzzy -#| msgid "Evolution" msgid "DNS Resolution" -msgstr "Evolution" +msgstr "Разрешение DNS" #: modules/names/resolved.py:91 modules/names/resolved.py:101 #: modules/networks/forms.py:28 @@ -5363,7 +5307,7 @@ msgstr "Локальная сеть" #: modules/networks/manifest.py:8 msgid "Topology" -msgstr "" +msgstr "Топология" #: modules/networks/templates/connection_show.html:27 #, python-format @@ -5532,7 +5476,7 @@ msgstr "Зона Брандмауэра" #: modules/networks/templates/connection_show.html:338 #: templates/internal-zone.html:13 templates/messages.html:20 msgid "Info:" -msgstr "" +msgstr "Информация:" #: modules/networks/templates/connection_show.html:292 msgid "" @@ -5615,10 +5559,8 @@ msgstr "Редактирование подключения" #: modules/networks/templates/connections_fields.html:13 #: templates/messages.html:14 -#, fuzzy -#| msgid "Error" msgid "Error:" -msgstr "Ошибка" +msgstr "Ошибка:" #: modules/networks/templates/connections_fields.html:20 #: modules/users/templates/users_update.html:46 templates/messages.html:30 @@ -6455,13 +6397,11 @@ msgstr "Эта служба уже существует" #: modules/pagekite/manifest.py:16 msgid "Reachability" -msgstr "" +msgstr "Достигаемость" #: modules/pagekite/manifest.py:18 -#, fuzzy -#| msgid "Tunnelblick" msgid "Tunneling" -msgstr "Tunnelblick" +msgstr "Туннели" #: modules/pagekite/templates/pagekite_configure.html:13 msgid "Custom Services" @@ -6487,19 +6427,14 @@ msgid "Add custom PageKite service" msgstr "Добавить собственный сервис PageKite" #: modules/pagekite/templates/pagekite_custom_services.html:19 -#, fuzzy -#| msgid "" -#| "Warning:
Your PageKite frontend server may not support all the " -#| "protocol/port combinations that you are able to define here. For example, " -#| "HTTPS on ports other than 443 is known to cause problems." msgid "" "Your PageKite frontend server may not support all the protocol/port " "combinations that you are able to define here. For example, HTTPS on ports " "other than 443 is known to cause problems." msgstr "" -"Предупреждение:
Ваш PageKite frontend сервер может поддерживать не " -"все комбинации протокол/порт, которые вы можете здесь задать. Например, " -"HTTPS на портах, отличных от 443, может вызывать проблемы." +"Ваш внешний сервер PageKite может поддерживать не все комбинации протоколов/" +"портов, которые вы можете задать здесь. Например, известно, что HTTPS на " +"портах, отличных от 443, может вызывать проблемы." #: modules/pagekite/utils.py:45 msgid "Web Server (HTTP)" @@ -6551,14 +6486,12 @@ msgstr "" "просмотрены с помощью приложения Cockpit." #: modules/performance/manifest.py:18 -#, fuzzy -#| msgid "System Monitoring" msgid "Monitoring" -msgstr "Системный мониторинг" +msgstr "Контроль" #: modules/performance/manifest.py:18 msgid "Resource utilization" -msgstr "" +msgstr "Использование ресурсов" #: modules/power/__init__.py:14 msgid "Restart or shut down the system." @@ -6570,13 +6503,11 @@ msgstr "Питание" #: modules/power/manifest.py:10 msgid "Reboot" -msgstr "" +msgstr "Перезагрузка" #: modules/power/manifest.py:10 -#, fuzzy -#| msgid "Shut down" msgid "Shutdown" -msgstr "Завершить работу" +msgstr "Выключить" #: modules/power/templates/power.html:15 templates/base.html:180 #: templates/base.html:181 @@ -6674,13 +6605,11 @@ msgstr "" #: modules/privacy/manifest.py:10 msgid "Usage reporting" -msgstr "" +msgstr "Отчетность об использовании" #: modules/privacy/manifest.py:10 -#, fuzzy -#| msgid "Fallback DNS Servers" msgid "Fallback DNS" -msgstr "Резервные серверы DNS" +msgstr "Падение DNS" #: modules/privoxy/__init__.py:25 msgid "" From dba6c1f4a9a7ea2d2b413a111bc6928ebddd7790 Mon Sep 17 00:00:00 2001 From: gfbdrgng Date: Mon, 6 Jan 2025 07:49:02 +0000 Subject: [PATCH 02/33] Translated using Weblate (Russian) Currently translated at 97.8% (1750 of 1788 strings) --- plinth/locale/ru/LC_MESSAGES/django.po | 70 +++++++++----------------- 1 file changed, 23 insertions(+), 47 deletions(-) diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 794dbd3fc..0edb07380 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-12-30 20:05-0500\n" -"PO-Revision-Date: 2025-01-06 07:11+0000\n" +"PO-Revision-Date: 2025-01-07 08:01+0000\n" "Last-Translator: gfbdrgng \n" "Language-Team: Russian \n" @@ -7190,16 +7190,12 @@ msgstr "" "сервера и других включенных защищенных паролем интернет-служб." #: modules/security/manifest.py:10 -#, fuzzy -#| msgid "Automatic" msgid "Automatic bans" -msgstr "Автоматически" +msgstr "Автоматические запреты" #: modules/security/manifest.py:10 -#, fuzzy -#| msgid "Ports" msgid "Reports" -msgstr "Порты" +msgstr "Отчёты" #: modules/security/templates/security.html:12 #: modules/security/templates/security.html:14 @@ -7685,15 +7681,16 @@ msgstr "" #: modules/snapshot/manifest.py:14 msgid "Periodic" -msgstr "" +msgstr "Периодические" #: modules/snapshot/manifest.py:14 msgid "Known good state" -msgstr "" +msgstr "Заведомо исправное состояние" #: modules/snapshot/manifest.py:14 +#, fuzzy msgid "Btrfs" -msgstr "" +msgstr "Btrfs" #: modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" @@ -7827,10 +7824,8 @@ msgstr "" "другие службы с использованием таких соединений." #: modules/ssh/__init__.py:42 -#, fuzzy -#| msgid "Secure Shell (SSH) Server" msgid "Secure Shell Server" -msgstr "Secure Shell (SSH) сервер" +msgstr "Сервер защищенной оболочки" #: modules/ssh/__init__.py:75 msgid "Remotely login using Secure Shell (SSH)" @@ -7868,19 +7863,15 @@ msgstr "" #, fuzzy #| msgid "SSH" msgid "SSH" -msgstr "RSS" +msgstr "SSH" #: modules/ssh/manifest.py:22 -#, fuzzy -#| msgid "Remove Location" msgid "Remote terminal" -msgstr "Удаление местоположения" +msgstr "Удаленный терминал" #: modules/ssh/manifest.py:22 -#, fuzzy -#| msgid "Fingerprint" msgid "Fingerprints" -msgstr "Отпечаток" +msgstr "Отпечатки" #: modules/ssh/templates/ssh.html:11 msgid "Server Fingerprints" @@ -8097,26 +8088,20 @@ msgid "Other directory (specify below)" msgstr "Другой каталог (укажите ниже)" #: modules/storage/manifest.py:9 -#, fuzzy -#| msgid "Disk" msgid "Disks" -msgstr "Диск" +msgstr "Диски" #: modules/storage/manifest.py:9 msgid "Usage" -msgstr "" +msgstr "Использование" #: modules/storage/manifest.py:9 -#, fuzzy -#| msgid "Automatic" msgid "Auto-mount" -msgstr "Автоматически" +msgstr "Автоматическое монтирование" #: modules/storage/manifest.py:9 -#, fuzzy -#| msgid "Expand Root Partition" msgid "Expand partition" -msgstr "Расширить корневой раздел" +msgstr "Расширение раздела" #: modules/storage/templates/storage.html:17 msgid "The following storage devices are in use:" @@ -8754,13 +8739,11 @@ msgstr "Активировать частые обновления функци #: modules/upgrades/manifest.py:10 msgid "Reboots" -msgstr "" +msgstr "Перезагрузка" #: modules/upgrades/manifest.py:10 -#, fuzzy -#| msgid "Backups" msgid "New features" -msgstr "Резервные копии" +msgstr "Новые функции" #: modules/upgrades/templates/backports-firstboot.html:26 msgid "" @@ -8864,13 +8847,12 @@ msgid "Test Distribution Upgrade" msgstr "Модернизация тестового распределения" #: modules/upgrades/templates/upgrades_configure.html:146 -#, fuzzy msgid "" "This will attempt to upgrade the system from stable to testing. It " "is meant only for development use." msgstr "" -"This will attempt to upgrade the system from stable to testing. It " -"is meant only for development use." +"Это позволит обновить систему со стабильной до тестовой. Это " +"предназначено только для использования в разработке." #: modules/upgrades/templates/upgrades_configure.html:156 msgid "Test distribution upgrade now" @@ -9071,16 +9053,12 @@ msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" #: modules/users/manifest.py:8 -#, fuzzy -#| msgid "Manage Snapshots" msgid "Manage accounts" -msgstr "Управление снапшотами" +msgstr "Управление аккаунтами" #: modules/users/manifest.py:8 -#, fuzzy -#| msgid "Permissions" msgid "App permissions" -msgstr "Разрешения" +msgstr "Разрешения приложения" #: modules/users/templates/users_change_password.html:11 #, python-format @@ -9892,10 +9870,8 @@ msgid "Search with tags" msgstr "Поиск по тегам" #: templates/apps.html:42 -#, fuzzy -#| msgid "Search with tags" msgid "Clear all tags" -msgstr "Поиск по тегам" +msgstr "Очистить все теги" #: templates/base.html:31 msgid "" @@ -10158,7 +10134,7 @@ msgstr "" #: views.py:85 msgid "Here" -msgstr "" +msgstr "Вот здесь" #: views.py:374 msgid "Setting unchanged" From f568d75539a92474ef480cd8a5a98b3a38a61a57 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 1 Jan 2025 14:00:18 -0800 Subject: [PATCH 03/33] ui: Update section header style to increase size, remove underline - Currently, there is a bug with section header with Bootstrap 5 migration in stable. It causes the section headers not to have underline in Debian stable but only in Debian testing. This is due to the variable --bs-secondar-border-subtle being defined only in Bootstrap 5.3 (testing) but not in Bootstrap 5.2 (stable). - The removal of the border is actually reducing visual noise. So, commit to it by removing the border even on testing. To Increase contrast to the section headers, increase their font size (but reduce font weight). Tests: - In testing and stable VMs, the style is same and as expected. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- static/themes/default/css/main.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index 3c6ccfa6a..ddedfa723 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -586,10 +586,9 @@ footer { .card-section-title, .system-section-title { display: flex; - font-weight: 800; - font-size: 1.25rem; + font-weight: 600; + font-size: 1.5rem; margin: 1.25rem 0; - border-bottom: var(--bs-secondary-border-subtle) solid 2px; } .card { From 9b8b0cd2547f1a990c87d452b5575a35285d576e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 1 Jan 2025 14:40:08 -0800 Subject: [PATCH 04/33] ui: Fix missing variables in Bootstrap 5.2/Debian stable - Most notable of the problems is the missing hover color on cards. Tests: - Cards have a gray hover color. - Forms with errors have input boxes with red borders and help text with red color. - Select all button in created backup has a border. - UI is consistent across stable and testing for tested cases. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- static/themes/default/css/main.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index ddedfa723..9559e1fa7 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -8,6 +8,12 @@ --progress-color: #3498db; /* Blue */ --freedombox-form-disabled-bg-color: #e9ecef; /* Grey */ --freedombox-navbar-color: white; + + /* Missing variables in Bootstrap 5.2 copied from Bootstrap 5.3 */ + --bs-secondary-bg: #e9ecef; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; + --bs-secondary-border-subtle: #c4c8cb; } @font-face { From 2f0ec1a1cdcba4b22c48dd952b774220772e43e5 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 4 Jan 2025 16:46:21 -0800 Subject: [PATCH 05/33] web_framework: Disable caching templates files in development mode - When a template page is updated, we are having to restart service in order for the new changes to reflect. This is due to caching of template files starting Django 4.1[1]. Disable this behavior in development mode to allow reload the browser page to see changes reflected. Links: https://docs.djangoproject.com/en/5.0/releases/4.1/#templates Tests: - Change a template file and reload the page without restarting service. The changes should reflect immediately. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- plinth/web_framework.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plinth/web_framework.py b/plinth/web_framework.py index 691b0228a..6ca815061 100644 --- a/plinth/web_framework.py +++ b/plinth/web_framework.py @@ -45,6 +45,14 @@ def init(): settings.STATIC_URL = '/'.join([cfg.server_dir, 'static/']).replace('//', '/') settings.USE_X_FORWARDED_HOST = cfg.use_x_forwarded_host + if cfg.develop: + # Disable template caching in development so that page updates don't + # require service restart. + del settings.TEMPLATES[0]['APP_DIRS'] + settings.TEMPLATES[0]['OPTIONS']['loaders'] = [ + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ] kwargs = {} for setting in dir(settings): From ddd2d5b4a33e80933ae316ea456b61dbe13b16f2 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 4 Jan 2025 17:01:29 -0800 Subject: [PATCH 06/33] ui: Drop remnants of already removed background images - Due to their fixed widths they were causing the drop down navigation bar to placed incorrectly in mobile view. Tests: - In mobile view in home, apps, system, and help pages the navbar dropdown button is placed correctly. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- static/themes/default/css/main.css | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index 9559e1fa7..c39c4ab79 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -692,23 +692,6 @@ footer { min-height: 1.125rem; } -/* Button table - Tables with a list of actions as buttons on top */ -.index-page .card-list:before, -.apps-page .card-list:before, -.system-page .system-section-title:first-child:before { - position: relative; - width: 25rem; - height: 25rem; - margin-left: -25rem; - margin-bottom: -25rem; - left: 18.75rem; - top: -1.25rem; - content: " "; - background-size: 100%; - background-repeat: no-repeat; - z-index: -1; -} - .names-table { table-layout: fixed; overflow-wrap: break-word; From c45bdf56dd80940b28f2b6b6ffe05f5111d2b0eb Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 4 Jan 2025 17:35:45 -0800 Subject: [PATCH 07/33] ui: js: Load all JS files in deferred mode to speed up page load - This improves page rendering time. If JS files are not loaded in deferred or async mode, they will halt the page rendering until JS files are loaded from network. - 'defer' mode guarantees that the load order is same as the order in which JS files appeared in the HTML page. Tests: - Run at least one function of each affected JS file and ensure that is works. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- plinth/modules/dynamicdns/templates/dynamicdns.html | 9 +++++---- plinth/modules/ejabberd/templates/ejabberd.html | 10 +++++----- .../matrixsynapse/templates/matrix-synapse.html | 10 +++++----- plinth/modules/mediawiki/templates/mediawiki.html | 3 ++- .../modules/networks/templates/connections_edit.html | 11 +++++------ .../modules/sharing/templates/sharing_add_edit.html | 9 +++++---- .../modules/snapshot/templates/snapshot_manage.html | 10 +++++----- plinth/modules/tor/templates/tor.html | 9 +++++---- plinth/modules/torproxy/templates/torproxy.html | 3 ++- plinth/modules/users/templates/users_update.html | 9 +++++---- plinth/templates/apps.html | 8 ++++---- 11 files changed, 48 insertions(+), 43 deletions(-) diff --git a/plinth/modules/dynamicdns/templates/dynamicdns.html b/plinth/modules/dynamicdns/templates/dynamicdns.html index 052f697a5..0a517321f 100644 --- a/plinth/modules/dynamicdns/templates/dynamicdns.html +++ b/plinth/modules/dynamicdns/templates/dynamicdns.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block extra_content %}

{% trans "Status" %}

@@ -52,7 +57,3 @@ {% trans "No status available." %} {% endif %} {% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/ejabberd/templates/ejabberd.html b/plinth/modules/ejabberd/templates/ejabberd.html index 4e9c6333b..6e2c02f65 100644 --- a/plinth/modules/ejabberd/templates/ejabberd.html +++ b/plinth/modules/ejabberd/templates/ejabberd.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block status %} {{ block.super }} @@ -30,8 +35,3 @@

{% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/matrixsynapse/templates/matrix-synapse.html b/plinth/modules/matrixsynapse/templates/matrix-synapse.html index f2b3134d6..42b4dc67e 100644 --- a/plinth/modules/matrixsynapse/templates/matrix-synapse.html +++ b/plinth/modules/matrixsynapse/templates/matrix-synapse.html @@ -6,6 +6,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block status %} {{ block.super }} @@ -87,8 +92,3 @@ {% endif %} {% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/mediawiki/templates/mediawiki.html b/plinth/modules/mediawiki/templates/mediawiki.html index 0e39685c8..843c29470 100644 --- a/plinth/modules/mediawiki/templates/mediawiki.html +++ b/plinth/modules/mediawiki/templates/mediawiki.html @@ -7,5 +7,6 @@ {% load static %} {% block page_js %} - + {% endblock %} diff --git a/plinth/modules/networks/templates/connections_edit.html b/plinth/modules/networks/templates/connections_edit.html index 4a3725592..59bb64073 100644 --- a/plinth/modules/networks/templates/connections_edit.html +++ b/plinth/modules/networks/templates/connections_edit.html @@ -6,6 +6,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block content %}

{{ title }}

@@ -20,9 +25,3 @@ {% endblock %} - -{% block page_js %} - - - -{% endblock %} diff --git a/plinth/modules/sharing/templates/sharing_add_edit.html b/plinth/modules/sharing/templates/sharing_add_edit.html index e48a265bb..e38fffc39 100644 --- a/plinth/modules/sharing/templates/sharing_add_edit.html +++ b/plinth/modules/sharing/templates/sharing_add_edit.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block content %}

{{ title }}

@@ -21,7 +26,3 @@ {% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/snapshot/templates/snapshot_manage.html b/plinth/modules/snapshot/templates/snapshot_manage.html index ab7a5c670..24be26f8a 100644 --- a/plinth/modules/snapshot/templates/snapshot_manage.html +++ b/plinth/modules/snapshot/templates/snapshot_manage.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block configuration %}
@@ -71,8 +76,3 @@
{% endblock %} - -{% block page_js %} - -{% endblock %} - diff --git a/plinth/modules/tor/templates/tor.html b/plinth/modules/tor/templates/tor.html index 812cf7c6a..ece5c5f5f 100644 --- a/plinth/modules/tor/templates/tor.html +++ b/plinth/modules/tor/templates/tor.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block status %} {{ block.super }} @@ -37,7 +42,3 @@ {% block internal_zone %} {{ block.super }} {% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/modules/torproxy/templates/torproxy.html b/plinth/modules/torproxy/templates/torproxy.html index fdfb9fde3..4466771ba 100644 --- a/plinth/modules/torproxy/templates/torproxy.html +++ b/plinth/modules/torproxy/templates/torproxy.html @@ -6,5 +6,6 @@ {% load static %} {% block page_js %} - + {% endblock %} diff --git a/plinth/modules/users/templates/users_update.html b/plinth/modules/users/templates/users_update.html index 1600f843d..2eb84bb85 100644 --- a/plinth/modules/users/templates/users_update.html +++ b/plinth/modules/users/templates/users_update.html @@ -7,6 +7,11 @@ {% load i18n %} {% load static %} +{% block page_js %} + +{% endblock %} + {% block content %}

{% blocktrans trimmed with username=object.username %} @@ -67,7 +72,3 @@ {% endblock %} - -{% block page_js %} - -{% endblock %} diff --git a/plinth/templates/apps.html b/plinth/templates/apps.html index d4f5106d8..098be288b 100644 --- a/plinth/templates/apps.html +++ b/plinth/templates/apps.html @@ -6,6 +6,10 @@ {% load static %} {% load i18n %} +{% block page_js %} + +{% endblock %} + {% block body_class %}apps-page{% endblock %} {% block tags %} @@ -46,7 +50,3 @@ {% endif %} {% endblock %} - -{% block page_js %} - -{% endblock %} From 78cba1e217e5ee43a5cbb040cd37c5be1c292f61 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 4 Jan 2025 17:40:27 -0800 Subject: [PATCH 08/33] ui: Don't place JS file at the bottom of the page - They should only be present in the . Since all files are loaded with 'defer' attribute, it is no longer needed to place the JS files at the bottom of the page. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- plinth/templates/base.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plinth/templates/base.html b/plinth/templates/base.html index 813a476e5..c32e8f0fd 100644 --- a/plinth/templates/base.html +++ b/plinth/templates/base.html @@ -64,6 +64,8 @@ + {% block app_js %}{% endblock %} + {% block page_js %}{% endblock %} {% if refresh_page_sec is not None %}