diff options
Diffstat (limited to 'apps')
7 files changed, 93 insertions, 6 deletions
diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php index e72fde4b7bd..e7a1a71ccd4 100644 --- a/apps/dashboard/lib/Controller/DashboardController.php +++ b/apps/dashboard/lib/Controller/DashboardController.php @@ -10,6 +10,7 @@ declare(strict_types=1); * @author Morris Jobke <hey@morrisjobke.de> * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Kate Döen <kate.doeen@nextcloud.com> + * @author Eduardo Morales <eduardo.morales@nextcloud.com> * * @license GNU AGPL version 3 or any later version * @@ -42,6 +43,7 @@ use OCP\Dashboard\IWidget; use OCP\Dashboard\RegisterWidgetEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; +use OCP\IL10N; use OCP\IRequest; #[IgnoreOpenAPI] @@ -55,6 +57,8 @@ class DashboardController extends Controller { private $dashboardManager; /** @var IConfig */ private $config; + /** @var IL10N */ + private $l10n; /** @var string */ private $userId; @@ -65,6 +69,7 @@ class DashboardController extends Controller { IEventDispatcher $eventDispatcher, IManager $dashboardManager, IConfig $config, + IL10N $l10n, $userId ) { parent::__construct($appName, $request); @@ -73,6 +78,7 @@ class DashboardController extends Controller { $this->eventDispatcher = $eventDispatcher; $this->dashboardManager = $dashboardManager; $this->config = $config; + $this->l10n = $l10n; $this->userId = $userId; } @@ -117,6 +123,7 @@ class DashboardController extends Controller { $response = new TemplateResponse('dashboard', 'index', [ 'id-app-content' => '#app-dashboard', 'id-app-navigation' => null, + 'pageTitle' => $this->l10n->t('Dashboard'), ]); // For the weather widget we should allow the geolocation diff --git a/apps/dav/lib/CalDAV/Reminder/Notifier.php b/apps/dav/lib/CalDAV/Reminder/Notifier.php index 657714d0247..e8f0405f3ce 100644 --- a/apps/dav/lib/CalDAV/Reminder/Notifier.php +++ b/apps/dav/lib/CalDAV/Reminder/Notifier.php @@ -170,7 +170,7 @@ class Notifier implements INotifier { $components[] = $this->l10n->n('%n minute', '%n minutes', $diff->i); } - if (!$this->hasPhpDatetimeDiffBug()) { + if (count($components) > 0 && !$this->hasPhpDatetimeDiffBug()) { // Limiting to the first three components to prevent // the string from getting too long $firstThreeComponents = array_slice($components, 0, 2); diff --git a/apps/files_sharing/src/views/SharingDetailsTab.vue b/apps/files_sharing/src/views/SharingDetailsTab.vue index d882aac9b87..8c0bb32f84d 100644 --- a/apps/files_sharing/src/views/SharingDetailsTab.vue +++ b/apps/files_sharing/src/views/SharingDetailsTab.vue @@ -105,10 +105,10 @@ <NcCheckboxRadioSwitch :checked.sync="isPasswordProtected" :disabled="isPasswordEnforced"> {{ t('files_sharing', 'Set password') }} </NcCheckboxRadioSwitch> - <NcInputField v-if="isPasswordProtected" - :type="hasUnsavedPassword ? 'text' : 'password'" - :value="hasUnsavedPassword ? share.newPassword : '***************'" + <NcPasswordField v-if="isPasswordProtected" + :value="hasUnsavedPassword ? share.newPassword : ''" :error="passwordError" + :helper-text="errorPasswordLabel" :required="isPasswordEnforced" :label="t('files_sharing', 'Password')" @update:value="onPasswordChange" /> @@ -219,8 +219,8 @@ import { getLanguage } from '@nextcloud/l10n' import NcButton from '@nextcloud/vue/dist/Components/NcButton.js' import NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js' +import NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js' import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js' -import NcDateTimePicker from '@nextcloud/vue/dist/Components/NcDateTimePicker.js' import NcDateTimePickerNative from '@nextcloud/vue/dist/Components/NcDateTimePickerNative.js' import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' @@ -256,7 +256,7 @@ export default { NcAvatar, NcButton, NcInputField, - NcDateTimePicker, + NcPasswordField, NcDateTimePickerNative, NcCheckboxRadioSwitch, NcLoadingIcon, @@ -646,6 +646,12 @@ export default { advancedControlExpandedValue() { return this.advancedSectionAccordionExpanded ? 'true' : 'false' }, + errorPasswordLabel() { + if (this.passwordError) { + return t('files_sharing', "Password field can't be empty") + } + return undefined + }, }, watch: { setCustomPermissions(isChecked) { diff --git a/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php index 835cec75cd2..687a97fe767 100644 --- a/apps/settings/composer/composer/autoload_classmap.php +++ b/apps/settings/composer/composer/autoload_classmap.php @@ -87,6 +87,7 @@ return array( 'OCA\\Settings\\SetupChecks\\ForwardedForHeaders' => $baseDir . '/../lib/SetupChecks/ForwardedForHeaders.php', 'OCA\\Settings\\SetupChecks\\InternetConnectivity' => $baseDir . '/../lib/SetupChecks/InternetConnectivity.php', 'OCA\\Settings\\SetupChecks\\LegacySSEKeyFormat' => $baseDir . '/../lib/SetupChecks/LegacySSEKeyFormat.php', + 'OCA\\Settings\\SetupChecks\\MaintenanceWindowStart' => $baseDir . '/../lib/SetupChecks/MaintenanceWindowStart.php', 'OCA\\Settings\\SetupChecks\\MemcacheConfigured' => $baseDir . '/../lib/SetupChecks/MemcacheConfigured.php', 'OCA\\Settings\\SetupChecks\\PhpDefaultCharset' => $baseDir . '/../lib/SetupChecks/PhpDefaultCharset.php', 'OCA\\Settings\\SetupChecks\\PhpFreetypeSupport' => $baseDir . '/../lib/SetupChecks/PhpFreetypeSupport.php', diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php index 649690a5dad..3308b4a7eea 100644 --- a/apps/settings/composer/composer/autoload_static.php +++ b/apps/settings/composer/composer/autoload_static.php @@ -102,6 +102,7 @@ class ComposerStaticInitSettings 'OCA\\Settings\\SetupChecks\\ForwardedForHeaders' => __DIR__ . '/..' . '/../lib/SetupChecks/ForwardedForHeaders.php', 'OCA\\Settings\\SetupChecks\\InternetConnectivity' => __DIR__ . '/..' . '/../lib/SetupChecks/InternetConnectivity.php', 'OCA\\Settings\\SetupChecks\\LegacySSEKeyFormat' => __DIR__ . '/..' . '/../lib/SetupChecks/LegacySSEKeyFormat.php', + 'OCA\\Settings\\SetupChecks\\MaintenanceWindowStart' => __DIR__ . '/..' . '/../lib/SetupChecks/MaintenanceWindowStart.php', 'OCA\\Settings\\SetupChecks\\MemcacheConfigured' => __DIR__ . '/..' . '/../lib/SetupChecks/MemcacheConfigured.php', 'OCA\\Settings\\SetupChecks\\PhpDefaultCharset' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpDefaultCharset.php', 'OCA\\Settings\\SetupChecks\\PhpFreetypeSupport' => __DIR__ . '/..' . '/../lib/SetupChecks/PhpFreetypeSupport.php', diff --git a/apps/settings/lib/AppInfo/Application.php b/apps/settings/lib/AppInfo/Application.php index d96715a9eca..12660f42ecc 100644 --- a/apps/settings/lib/AppInfo/Application.php +++ b/apps/settings/lib/AppInfo/Application.php @@ -59,6 +59,7 @@ use OCA\Settings\SetupChecks\FileLocking; use OCA\Settings\SetupChecks\ForwardedForHeaders; use OCA\Settings\SetupChecks\InternetConnectivity; use OCA\Settings\SetupChecks\LegacySSEKeyFormat; +use OCA\Settings\SetupChecks\MaintenanceWindowStart; use OCA\Settings\SetupChecks\MemcacheConfigured; use OCA\Settings\SetupChecks\PhpDefaultCharset; use OCA\Settings\SetupChecks\PhpFreetypeSupport; @@ -172,6 +173,7 @@ class Application extends App implements IBootstrap { $context->registerSetupCheck(ForwardedForHeaders::class); $context->registerSetupCheck(InternetConnectivity::class); $context->registerSetupCheck(LegacySSEKeyFormat::class); + $context->registerSetupCheck(MaintenanceWindowStart::class); $context->registerSetupCheck(MemcacheConfigured::class); $context->registerSetupCheck(PhpDefaultCharset::class); $context->registerSetupCheck(PhpFreetypeSupport::class); diff --git a/apps/settings/lib/SetupChecks/MaintenanceWindowStart.php b/apps/settings/lib/SetupChecks/MaintenanceWindowStart.php new file mode 100644 index 00000000000..bc7b58b74a9 --- /dev/null +++ b/apps/settings/lib/SetupChecks/MaintenanceWindowStart.php @@ -0,0 +1,70 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Settings\SetupChecks; + +use OCP\IConfig; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\SetupCheck\ISetupCheck; +use OCP\SetupCheck\SetupResult; + +class MaintenanceWindowStart implements ISetupCheck { + public function __construct( + private IL10N $l10n, + private IURLGenerator $urlGenerator, + private IConfig $config, + ) { + } + + public function getCategory(): string { + return 'system'; + } + + public function getName(): string { + return $this->l10n->t('Maintenance window start'); + } + + public function run(): SetupResult { + $configValue = $this->config->getSystemValue('maintenance_window_start', null); + if ($configValue === null) { + return SetupResult::warning( + $this->l10n->t('Server has no maintenance window start time configured. This means resource intensive daily background jobs will also be executed during your main usage time. We recommend to set it to a time of low usage, so users are less impacted by the load caused from these heavy tasks.'), + $this->urlGenerator->linkToDocs('admin-background-jobs') + ); + } + + $startValue = (int) $configValue; + $endValue = ($startValue + 6) % 24; + return SetupResult::success( + str_replace( + ['{start}', '{end}'], + [$startValue, $endValue], + $this->l10n->t('Maintenance window to execute heavy background jobs is between {start}:00 UTC and {end}:00 UTC') + ) + ); + } +} |