1
0
mirror of https://github.com/flarum/core.git synced 2025-10-12 07:24:27 +02:00

Finish client action refactoring. closes flarum/core#126

This commit is contained in:
Toby Zerner
2015-07-07 19:23:13 +09:30
parent 8a54b362c7
commit 38c2ff0306
9 changed files with 518 additions and 170 deletions

View File

@@ -1,134 +1,16 @@
<?php namespace Flarum\Forum\Actions;
use Flarum\Api\Client;
use Flarum\Assets\AssetManager;
use Flarum\Assets\JsCompiler;
use Flarum\Assets\LessCompiler;
use Flarum\Core;
use Flarum\Core\Users\User;
use Flarum\Forum\Events\RenderView;
use Flarum\Locale\JsCompiler as LocaleJsCompiler;
use Flarum\Locale\LocaleManager;
use Flarum\Support\ClientView;
use Flarum\Support\HtmlAction;
use Illuminate\Database\ConnectionInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Flarum\Support\ClientAction as BaseClientAction;
abstract class ClientAction extends HtmlAction
abstract class ClientAction extends BaseClientAction
{
/**
* @var Client
* {@inheritdoc}
*/
protected $apiClient;
protected $locales;
protected $clientName = 'forum';
/**
* @param Client $apiClient
* @param LocaleManager $locales
* {@inheritdoc}
*/
public function __construct(Client $apiClient, LocaleManager $locales)
{
$this->apiClient = $apiClient;
$this->locales = $locales;
}
/**
* @param Request $request
* @param array $routeParams
* @return \Flarum\Support\ClientView
*/
public function render(Request $request, array $routeParams = [])
{
$actor = app('flarum.actor');
$assets = $this->getAssets();
$locale = $this->getLocaleCompiler($actor);
$layout = 'flarum.forum::forum';
$view = new ClientView(
$request,
$actor,
$this->apiClient,
$layout,
$assets,
$locale
);
return $view;
}
protected function getAssets()
{
$public = $this->getAssetDirectory();
$assets = new AssetManager(
new JsCompiler($public, 'forum.js'),
new LessCompiler($public, 'forum.css')
);
$root = __DIR__.'/../../..';
$assets->addFile($root.'/js/forum/dist/app.js');
$assets->addFile($root.'/less/forum/app.less');
foreach ($this->getLessVariables() as $name => $value) {
$assets->addLess("@$name: $value;");
}
$assets->addLess(Core::config('custom_less'));
return $assets;
}
protected function getLessVariables()
{
return [
'fl-primary-color' => Core::config('theme_primary_color', '#000'),
'fl-secondary-color' => Core::config('theme_secondary_color', '#000'),
'fl-dark-mode' => Core::config('theme_dark_mode') ? 'true' : 'false',
'fl-colored-header' => Core::config('theme_colored_header') ? 'true' : 'false'
];
}
protected function getLocaleCompiler(User $actor)
{
$locale = $actor->locale ?: Core::config('locale', 'en');
// $translations = $this->locales->getTranslations($locale);
$jsFiles = $this->locales->getJsFiles($locale);
$compiler = new LocaleJsCompiler($this->getAssetDirectory(), 'locale-'.$locale.'.js');
// $compiler->setTranslations(static::filterTranslations($translations));
array_walk($jsFiles, [$compiler, 'addFile']);
return $compiler;
}
protected function getAssetDirectory()
{
return public_path().'/assets';
}
/**
* @param $translations
* @return array
*/
// protected static function filterTranslations($translations)
// {
// $filtered = [];
//
// foreach (static::$translations as $key) {
// $parts = explode('.', $key);
// $level = &$filtered;
//
// foreach ($parts as $part) {
// $level = &$level[$part];
// }
//
// $level = array_get($translations, $key);
// }
//
// return $filtered;
// }
protected $layout = 'flarum.forum::forum';
}