mirror of
https://github.com/flarum/core.git
synced 2025-07-22 17:21:27 +02:00
Implement basic settings page
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Flarum\Core\Groups\Group;
|
||||
use Tobscure\JsonApi\Document;
|
||||
|
||||
class ShowAction extends SerializeResourceAction
|
||||
@@ -14,7 +15,9 @@ class ShowAction extends SerializeResourceAction
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public $include = [];
|
||||
public $include = [
|
||||
'groups' => true
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
@@ -51,6 +54,10 @@ class ShowAction extends SerializeResourceAction
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
return app('flarum.forum');
|
||||
$forum = app('flarum.forum');
|
||||
|
||||
$forum->groups = Group::all();
|
||||
|
||||
return $forum;
|
||||
}
|
||||
}
|
||||
|
53
framework/core/src/Api/Actions/Forum/UpdateAction.php
Normal file
53
framework/core/src/Api/Actions/Forum/UpdateAction.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php namespace Flarum\Api\Actions\Forum;
|
||||
|
||||
use Flarum\Core\Exceptions\PermissionDeniedException;
|
||||
use Flarum\Core\Settings\SettingsRepository;
|
||||
use Flarum\Api\Actions\SerializeResourceAction;
|
||||
use Flarum\Api\JsonApiRequest;
|
||||
use Tobscure\JsonApi\Document;
|
||||
|
||||
class UpdateAction extends SerializeResourceAction
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public $serializer = 'Flarum\Api\Serializers\ForumSerializer';
|
||||
|
||||
/**
|
||||
* @var SettingsRepository
|
||||
*/
|
||||
protected $settings;
|
||||
|
||||
/**
|
||||
* @param SettingsRepository $settings
|
||||
*/
|
||||
public function __construct(SettingsRepository $settings)
|
||||
{
|
||||
$this->settings = $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the forum, ready to be serialized and assigned to the JsonApi
|
||||
* response.
|
||||
*
|
||||
* @param JsonApiRequest $request
|
||||
* @param Document $document
|
||||
* @return \Flarum\Core\Forum
|
||||
*/
|
||||
protected function data(JsonApiRequest $request, Document $document)
|
||||
{
|
||||
if (! $request->actor->isAdmin()) {
|
||||
throw new PermissionDeniedException;
|
||||
}
|
||||
|
||||
$config = $request->get('data.attributes.config');
|
||||
|
||||
if (is_array($config)) {
|
||||
foreach ($config as $k => $v) {
|
||||
$this->settings->set($k, $v);
|
||||
}
|
||||
}
|
||||
|
||||
return app('flarum.forum');
|
||||
}
|
||||
}
|
@@ -94,6 +94,13 @@ class ApiServiceProvider extends ServiceProvider
|
||||
$this->action('Flarum\Api\Actions\Forum\ShowAction')
|
||||
);
|
||||
|
||||
// Save forum information
|
||||
$routes->patch(
|
||||
'/forum',
|
||||
'flarum.api.forum.update',
|
||||
$this->action('Flarum\Api\Actions\Forum\UpdateAction')
|
||||
);
|
||||
|
||||
// Retrieve authentication token
|
||||
$routes->post(
|
||||
'/token',
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?php namespace Flarum\Api\Serializers;
|
||||
|
||||
use Flarum\Core;
|
||||
use Flarum\Core\Groups\Permission;
|
||||
|
||||
class ForumSerializer extends Serializer
|
||||
{
|
||||
@@ -22,13 +23,29 @@ class ForumSerializer extends Serializer
|
||||
*/
|
||||
protected function getDefaultAttributes($forum)
|
||||
{
|
||||
return [
|
||||
'title' => $forum->title,
|
||||
$attributes = [
|
||||
'title' => Core::config('forum_title'),
|
||||
'baseUrl' => Core::config('base_url'),
|
||||
'apiUrl' => Core::config('api_url'),
|
||||
'welcomeTitle' => Core::config('welcome_title'),
|
||||
'welcomeMessage' => Core::config('welcome_message'),
|
||||
'themePrimaryColor' => Core::config('theme_primary_color')
|
||||
];
|
||||
|
||||
if ($this->actor->isAdmin()) {
|
||||
$attributes['config'] = app('Flarum\Core\Settings\SettingsRepository')->all();
|
||||
$attributes['availableLocales'] = app('flarum.localeManager')->getLocales();
|
||||
$attributes['permissions'] = Permission::map();
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return callable
|
||||
*/
|
||||
protected function groups()
|
||||
{
|
||||
return $this->hasMany('Flarum\Api\Serializers\GroupSerializer');
|
||||
}
|
||||
}
|
||||
|
@@ -2,12 +2,24 @@
|
||||
|
||||
class LocaleManager
|
||||
{
|
||||
protected $locales = [];
|
||||
|
||||
protected $translations = [];
|
||||
|
||||
protected $js = [];
|
||||
|
||||
protected $config = [];
|
||||
|
||||
public function addLocale($locale, $name)
|
||||
{
|
||||
$this->locales[$locale] = $name;
|
||||
}
|
||||
|
||||
public function getLocales()
|
||||
{
|
||||
return $this->locales;
|
||||
}
|
||||
|
||||
public function addTranslations($locale, $translations)
|
||||
{
|
||||
if (! isset($this->translations[$locale])) {
|
||||
|
@@ -14,15 +14,16 @@ class LocaleServiceProvider extends ServiceProvider
|
||||
{
|
||||
$manager = $this->app->make('flarum.localeManager');
|
||||
|
||||
$this->registerLocale($manager, 'en');
|
||||
$this->registerLocale($manager, 'en', 'English');
|
||||
|
||||
event(new RegisterLocales($manager));
|
||||
}
|
||||
|
||||
public function registerLocale(LocaleManager $manager, $locale)
|
||||
public function registerLocale(LocaleManager $manager, $locale, $title)
|
||||
{
|
||||
$path = __DIR__.'/../../locale/'.$locale;
|
||||
|
||||
$manager->addLocale($locale, $title);
|
||||
$manager->addTranslations($locale, $path.'.yml');
|
||||
$manager->addConfig($locale, $path.'.php');
|
||||
$manager->addJsFile($locale, $path.'.js');
|
||||
|
Reference in New Issue
Block a user