Skip to content

Commit

Permalink
Enh #6879: Better UX for the maintenance mode administration form
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-farre committed Apr 2, 2024
1 parent c1015fa commit 5574bd7
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 59 deletions.
1 change: 1 addition & 0 deletions CHANGELOG-DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,4 @@ HumHub Changelog
- Enh #6892: Implement new method `getCommentUrl` for comment permanent URL
- Enh #6904: Content Search: Add Tests regarding `state`
- Fix #6908: Fix default mentioning URL
- Enh #6879: Better UX for the maintenance mode administration form
14 changes: 10 additions & 4 deletions protected/humhub/modules/admin/models/forms/BasicSettingsForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace humhub\modules\admin\models\forms;

use DateTimeZone;
use Yii;
use humhub\libs\DynamicConfig;
use humhub\modules\space\models\Space;
use humhub\modules\stream\actions\Stream;
use humhub\libs\TimezoneHelper;
use humhub\modules\ui\icon\widgets\Icon;
use Yii;
use yii\base\Model;
use yii\bootstrap\Alert;

/**
* BasicSettingsForm
Expand Down Expand Up @@ -80,6 +80,7 @@ public function attributeLabels()
'enableFriendshipModule' => Yii::t('AdminModule.settings', 'Enable user friendship system'),
'defaultStreamSort' => Yii::t('AdminModule.settings', 'Default stream content order'),
'maintenanceMode' => Yii::t('AdminModule.settings', 'Enable maintenance mode'),
'maintenanceModeInfo' => Yii::t('AdminModule.settings', 'Add custom info text for maintenance mode. Displayed on the login page.'),
];
}

Expand All @@ -104,7 +105,12 @@ public function attributeHints()
]
),
'baseUrl' => Yii::t('AdminModule.settings', 'E.g. http://example.com/humhub'),
'maintenanceModeInfo' => Yii::t('AdminModule.settings', 'Add custom info text for maintenance mode. Displayed on the login page.'),
'maintenanceMode' => Alert::widget([
'options' => ['class' => 'alert-danger'],
'body' =>
Icon::get('exclamation-triangle') . ' ' .
Yii::t('AdminModule.settings', 'Maintenance mode restricts access to the platform and immediately logs out all users except Admins.')
]),
];
}

Expand Down
10 changes: 0 additions & 10 deletions protected/humhub/modules/admin/resources/js/humhub.admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,6 @@ humhub.module('admin', function (module, require, $) {
}
};

var changeMaintenanceMode = function (evt) {
evt.$trigger.prop('checked', !evt.$trigger.prop('checked'));
// Switch modal window text to another mode
evt.$trigger.data('action-confirm', module.text('maintenanceMode.question.' + (evt.$trigger.prop('checked') ? 'disable' : 'enable')));
evt.$trigger.data('action-confirm-text', module.text('maintenanceMode.button.' + (evt.$trigger.prop('checked') ? 'disable' : 'enable')));
// Disable/Enable maintenance mode info input:
$('input[name="BasicSettingsForm[maintenanceModeInfo]"]').prop('disabled', !evt.$trigger.prop('checked'));
};

var changeIndividualProfilePermissions = function (evt) {
evt.finish();
evt.$trigger.prop('checked', !evt.$trigger.prop('checked'));
Expand Down Expand Up @@ -161,7 +152,6 @@ humhub.module('admin', function (module, require, $) {
changeLogo: changeLogo,
deletePageIcon: deletePageIcon,
changeIcon: changeIcon,
changeMaintenanceMode: changeMaintenanceMode,
changeIndividualProfilePermissions: changeIndividualProfilePermissions,
moduleSetAsDefault: moduleSetAsDefault,
});
Expand Down
64 changes: 19 additions & 45 deletions protected/humhub/modules/admin/views/setting/basic.php
Original file line number Diff line number Diff line change
@@ -1,76 +1,50 @@
<?php

use humhub\libs\TimezoneHelper;
use humhub\modules\admin\assets\AdminAsset;
use humhub\modules\admin\models\forms\BasicSettingsForm;
use humhub\modules\ui\form\widgets\ActiveForm;
use humhub\widgets\DataSaved;
use yii\helpers\Html;

/* @var BasicSettingsForm $model */

$this->registerJsConfig('admin', $adminSettingsJsConfig = ['text' => [
'maintenanceMode.header' => Yii::t('AdminModule.settings', '<strong>Maintenance</strong> Mode'),
'maintenanceMode.question.enable' => Yii::t(
'AdminModule.settings',
'Activate maintenance mode and disable access to the platform for non-admin users?<br><br>'
) .
'<div class="alert alert-danger">' .
Yii::t('AdminModule.settings', '<strong>Warning:</strong> All users will be immediately logged out, except admins.') .
'</div>',
'maintenanceMode.button.enable' => Yii::t('AdminModule.settings', 'Enable'),
'maintenanceMode.question.disable' => Yii::t('AdminModule.settings', 'Deactivate maintenance mode and enable all users to access the platform again?'),
'maintenanceMode.button.disable' => Yii::t('AdminModule.settings', 'Disable'),
]]);

AdminAsset::register($this);
?>

<div class="panel-body">
<h4><?= Yii::t('AdminModule.settings', 'General Settings'); ?></h4>
<h4><?= Yii::t('AdminModule.settings', 'General Settings') ?></h4>
<div class="help-block">
<?= Yii::t('AdminModule.settings', 'Here you can configure basic settings of your social network.'); ?>
<?= Yii::t('AdminModule.settings', 'Here you can configure basic settings of your social network.') ?>
</div>

<br>

<?php $form = ActiveForm::begin(['acknowledge' => true]); ?>

<?= $form->field($model, 'name'); ?>
<?= $form->field($model, 'baseUrl'); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'baseUrl') ?>

<?php $allowedLanguages = Yii::$app->i18n->getAllowedLanguages(); ?>
<?php if (count($allowedLanguages) > 1) : ?>
<?= $languageDropDown = $form->field($model, 'defaultLanguage')->dropDownList($allowedLanguages); ?>
<?= $languageDropDown = $form->field($model, 'defaultLanguage')->dropDownList($allowedLanguages) ?>
<?php endif; ?>
<?= $form->field($model, 'defaultTimeZone')->dropDownList(TimezoneHelper::generateList(true), ['disabled' => Yii::$app->settings->isFixed('defaultTimeZone')]); ?>
<?= $form->field($model, 'timeZone')->dropDownList(TimezoneHelper::generateList(true), ['disabled' => Yii::$app->settings->isFixed('timeZone')]); ?>
<?= $form->field($model, 'defaultTimeZone')->dropDownList(TimezoneHelper::generateList(true), ['disabled' => Yii::$app->settings->isFixed('defaultTimeZone')]) ?>
<?= $form->field($model, 'timeZone')->dropDownList(TimezoneHelper::generateList(true), ['disabled' => Yii::$app->settings->isFixed('timeZone')]) ?>

<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Dashboard')); ?>
<?= $form->field($model, 'tour')->checkbox(); ?>
<?= $form->field($model, 'dashboardShowProfilePostForm')->checkbox(); ?>
<?= $form->endCollapsibleFields(); ?>
<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Dashboard')) ?>
<?= $form->field($model, 'tour')->checkbox() ?>
<?= $form->field($model, 'dashboardShowProfilePostForm')->checkbox() ?>
<?= $form->endCollapsibleFields() ?>

<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Friendship')); ?>
<?= $form->field($model, 'enableFriendshipModule')->checkbox(); ?>
<?= $form->endCollapsibleFields(); ?>
<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Friendship')) ?>
<?= $form->field($model, 'enableFriendshipModule')->checkbox() ?>
<?= $form->endCollapsibleFields() ?>

<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Maintenance mode'), !$model->maintenanceMode); ?>
<?= $form->field($model, 'maintenanceMode')->checkbox([
'data-action-click' => 'admin.changeMaintenanceMode',
'data-action-confirm-header' => $adminSettingsJsConfig['text']['maintenanceMode.header'],
'data-action-confirm' => $adminSettingsJsConfig['text']['maintenanceMode.question.' . ($model->maintenanceMode ? 'disable' : 'enable')],
'data-action-confirm-text' => $adminSettingsJsConfig['text']['maintenanceMode.button.' . ($model->maintenanceMode ? 'disable' : 'enable')],
]); ?>
<?= $form->field($model, 'maintenanceModeInfo')->label(false)->textInput(['disabled' => !$model->maintenanceMode]); ?>
<?= $form->endCollapsibleFields(); ?>
<?= $form->beginCollapsibleFields(Yii::t('AdminModule.settings', 'Maintenance mode'), !$model->maintenanceMode) ?>
<?= $form->field($model, 'maintenanceMode')->checkbox() ?>
<?= $form->field($model, 'maintenanceModeInfo')->textInput(['placeholder' => Yii::t('AdminModule.settings', 'Add individual info text...')]) ?>
<?= $form->endCollapsibleFields() ?>

<hr>

<?= Html::submitButton(Yii::t('AdminModule.settings', 'Save'), ['class' => 'btn btn-primary', 'data-ui-loader' => ""]); ?>

<!-- show flash message after saving -->
<?php DataSaved::widget(); ?>
<?= Html::submitButton(Yii::t('AdminModule.settings', 'Save'), ['class' => 'btn btn-primary', 'data-ui-loader' => ""]) ?>

<?php ActiveForm::end(); ?>
</div>

0 comments on commit 5574bd7

Please sign in to comment.