diff --git a/modules/admin/src/Module.php b/modules/admin/src/Module.php index 73387356c..45e5adfb9 100644 --- a/modules/admin/src/Module.php +++ b/modules/admin/src/Module.php @@ -129,6 +129,8 @@ final class Module extends \luya\admin\base\Module implements CoreModuleInterfac 'api-admin-proxymachine' => 'luya\admin\apis\ProxyMachineController', 'api-admin-proxybuild' => 'luya\admin\apis\ProxyBuildController', 'api-admin-proxy' => 'luya\admin\apis\ProxyController', + 'api-admin-config' => 'luya\admin\apis\ConfigController', + ]; /** @@ -258,6 +260,7 @@ public function getMenu() ->itemApi('menu_access_item_user', 'admin/user/index', 'person', 'api-admin-user') ->itemApi('menu_access_item_group', 'admin/group/index', 'group', 'api-admin-group') ->group('menu_group_system') + ->itemApi('Config', 'admin/config/index', 'label', 'api-admin-config') ->itemApi('menu_system_item_language', 'admin/lang/index', 'language', 'api-admin-lang') ->itemApi('menu_system_item_tags', 'admin/tag/index', 'view_list', 'api-admin-tag') ->itemApi('menu_system_logger', 'admin/logger/index', 'notifications', 'api-admin-logger') diff --git a/modules/admin/src/apis/ConfigController.php b/modules/admin/src/apis/ConfigController.php new file mode 100644 index 000000000..ff0626341 --- /dev/null +++ b/modules/admin/src/apis/ConfigController.php @@ -0,0 +1,16 @@ + $build]); if ($process->start()) { + // as the admin_config table is synced to, we have to restore the current active config which has been used. + Config::set(self::CONFIG_VAR_IDENTIFIER, $identifier); + Config::set(self::CONFIG_VAR_IDENTIFIER, $token); + Config::set(self::CONFIG_VAR_URL, $url); + return $this->outputSuccess('Sync process has been successfully finished.'); } } diff --git a/modules/admin/src/controllers/ConfigController.php b/modules/admin/src/controllers/ConfigController.php new file mode 100644 index 000000000..af6938777 --- /dev/null +++ b/modules/admin/src/controllers/ConfigController.php @@ -0,0 +1,16 @@ +addColumn('admin_config', 'is_system', $this->boolean()->defaultValue(true)); + } + + /** + * @inheritdoc + */ + public function safeDown() + { + $this->dropColumn('admin_config', 'is_system'); + } +} diff --git a/modules/admin/src/models/Config.php b/modules/admin/src/models/Config.php index a5adbe781..c0bc43c94 100644 --- a/modules/admin/src/models/Config.php +++ b/modules/admin/src/models/Config.php @@ -4,6 +4,7 @@ use yii\db\ActiveRecord; use luya\traits\RegistryTrait; +use luya\admin\ngrest\base\NgRestModel; /** * This is the model class for table "admin_config". @@ -14,7 +15,7 @@ * @author Basil Suter * @since 1.0.0 */ -final class Config extends ActiveRecord +final class Config extends NgRestModel { use RegistryTrait; @@ -32,6 +33,14 @@ public static function tableName() return 'admin_config'; } + /** + * @inheritdoc + */ + public static function ngRestApiEndpoint() + { + return 'api-admin-config'; + } + /** * @inheritdoc */ @@ -40,6 +49,7 @@ public function rules() return [ [['name', 'value'], 'required'], [['name'], 'unique'], + [['is_system'], 'integer'], ]; } @@ -51,6 +61,39 @@ public function attributeLabels() return [ 'name' => 'Name', 'value' => 'Value', + 'is_system' => 'System Config', + ]; + } + + /** + * @inheritdoc + */ + public function ngRestAttributeTypes() + { + return [ + 'value' => 'text', + 'name' => 'slug', + 'is_system' => ['hidden', 'value' => 0], ]; } + + /** + * @inheritdoc + */ + public function ngRestScopes() + { + return [ + [['list'], ['name', 'value']], + [['create', 'update'], ['name', 'value', 'is_system']], + [['delete'], true], + ]; + } + + /** + * @inheritdoc + */ + public static function ngRestFind() + { + return parent::ngRestFind()->where(['is_system' => false]); + } }