Skip to content

Commit

Permalink
add option
Browse files Browse the repository at this point in the history
  • Loading branch information
felixhahnweilheim committed Jan 31, 2025
1 parent bb36a08 commit eacd704
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 16 deletions.
22 changes: 17 additions & 5 deletions controllers/ConfigController.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,25 @@ public function actionDarkColors()
public function actionAdvanced()
{
$form = new AdvancedSettings();
$config = new Config();
$colorSettings = new ColorSettings();
$darkColorSettings = new DarkColorSettings();

if(!empty(Yii::$app->request->post())) {
$data = json_decode(Yii::$app->request->post()['AdvancedSettings']['settingsJson'], true);
if (!empty(Yii::$app->request->post())) {

$form->load(Yii::$app->request->post());

// Load settings if we should merge or do not load them if we should overwrite all
$loadSettings = ! $form->overwriteAll;

$config = new Config($loadSettings);
$colorSettings = new ColorSettings($loadSettings);
$darkColorSettings = new DarkColorSettings($loadSettings);

// Decode the imported json
$data = json_decode($form->settingsJson);

//$overWriteAll = (bool) Yii::$app->request->post()['AdvancedSettings']['overwriteAll'];
//$data = json_decode(Yii::$app->request->post()['AdvancedSettings']['settingsJson'], true);

// Load the imported data into the models
$config->load($data);
$colorSettings->load($data);
$darkColorSettings->load($data);
Expand Down
13 changes: 13 additions & 0 deletions models/AbstractColorSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ abstract class AbstractColorSettings extends \yii\base\Model
*/
public const PREFIX = '';

public bool $autoLoadSettings = true;

public $configurableColors = [];
public $hasWarnings = false;

Expand Down Expand Up @@ -53,12 +55,23 @@ abstract public function getColors(): array;

abstract protected function getColorFallback(string $color): string;

public function __construct($autoLoadSettings = true) {
$this->autoLoadSettings = $autoLoadSettings;
}

public function init()
{
parent::init();

$this->configurableColors = array_merge(static::MAIN_COLORS, static::TEXT_COLORS, static::BACKGROUND_COLORS);

if ($this->autoLoadSettings) {
$this->loadSettings();
}
}

public function loadSettings()
{
$settings = static::getSettings();
foreach($this->configurableColors as $color) {
$this->$color = $settings->get(static::PREFIX . $color);
Expand Down
9 changes: 6 additions & 3 deletions models/AdvancedSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
use humhub\modules\flexTheme\models\Config;
use humhub\modules\flexTheme\models\ColorSettings;
use humhub\modules\flexTheme\models\DarkColorSettings;

use Yii;

class AdvancedSettings extends \yii\base\Model
{
public $settingsJson;
public bool $overwriteAll = false;

public function init()
{
Expand All @@ -24,21 +24,24 @@ public function init()
public function attributeLabels()
{
$labels['settingsJson'] = 'Settings JSON';
$labels['overwriteAll'] = Yii::t('FlexThemeModule.admin', 'Overwrite all Settings');

return $labels;
}

public function attributeHints()
{
$hints['settingsJson'] = '<b>' . Yii::t('FlexThemeModule.admin', 'WARNING') . '</b>' . ': ' . Yii::t('FlexThemeModule.admin', 'Your settings will be overwritten!');

$hints['overwriteAll'] = Yii::t('FlexThemeModule.admin', 'With this option all stored settings will be deleted, only the imported settings remain.');

return $hints;
}

public function rules()
{
return [
[['settingsJson'], 'isValidJSON']
[['settingsJson'], 'isValidJSON'],
[['overwriteAll'], 'boolean'],
];
}

Expand Down
22 changes: 17 additions & 5 deletions models/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
*/
class Config extends \yii\base\Model
{
public bool $autoLoadSettings = true;

// Module settings
public const CONFIG_NAMES = ['commentLink', 'likeLink', 'likeIcon', 'likeIconFull', 'likeIconColor', 'showTopicMenu', 'showUploadAsButtons'];
public $commentLink;
Expand All @@ -26,17 +28,21 @@ class Config extends \yii\base\Model
public $showTopicMenu;
public $showUploadAsButtons;

public static function getSetting(string $setting_name): string
{
// Note: return can be empty
return Yii::$app->getModule('flex-theme')->settings->get($setting_name);
public function __construct($autoLoadSettings = true) {
$this->autoLoadSettings = $autoLoadSettings;
}

public function init()
{

parent::init();

if ($this->autoLoadSettings) {
$this->loadSettings();
}
}

public function loadSettings()
{
$settings = Yii::$app->getModule('flex-theme')->settings;

$this->commentLink = $settings->get('commentLink', 'text');
Expand All @@ -48,6 +54,12 @@ public function init()
$this->showUploadAsButtons = $settings->get('showUploadAsButtons');
}

public static function getSetting(string $setting_name): string
{
// Note: return can be empty
return Yii::$app->getModule('flex-theme')->settings->get($setting_name);
}

public function attributeLabels()
{

Expand Down
6 changes: 3 additions & 3 deletions views/config/advanced.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
<div class="panel-body">
<?php $form = ActiveForm::begin(['id' => 'configure-form']);?>

<?= $form->beginCollapsibleFields(Yii::t('FlexThemeModule.admin', 'Import/Export')); ?>
<?= $form->field($model, 'settingsJson')->textarea(['rows' => '12']); ?>
<?= $form->endCollapsibleFields(); ?>
<h2><?= Yii::t('FlexThemeModule.admin', 'Import/Export') ?></h2>
<?= $form->field($model, 'settingsJson')->textarea(['rows' => '12']); ?>
<?= $form->field($model, 'overwriteAll')->checkbox(); ?>

<div class="form-group">
<?= Html::submitButton(Yii::t('base', 'Save'), ['class' => 'btn btn-primary', 'data-ui-loader' => '']) ?>
Expand Down

0 comments on commit eacd704

Please sign in to comment.