From b806dc3db2b7e41f2c1335caf9a62c9ca2bcd474 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Wed, 29 Nov 2017 22:25:57 +1030 Subject: [PATCH] Move view logic into middleware --- src/Http/Middleware/HandleErrors.php | 39 ++++++++++++++++++++++++++-- views/error/404.blade.php | 2 +- views/error/default.blade.php | 17 +----------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/Http/Middleware/HandleErrors.php b/src/Http/Middleware/HandleErrors.php index 45b087b03..d72b6ed81 100644 --- a/src/Http/Middleware/HandleErrors.php +++ b/src/Http/Middleware/HandleErrors.php @@ -12,11 +12,13 @@ namespace Flarum\Http\Middleware; use Exception; +use Flarum\Settings\SettingsRepositoryInterface; use Franzl\Middleware\Whoops\ErrorMiddleware as WhoopsMiddleware; use Illuminate\Contracts\View\Factory as ViewFactory; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; +use Symfony\Component\Translation\TranslatorInterface; use Zend\Diactoros\Response\HtmlResponse; class HandleErrors @@ -31,6 +33,16 @@ class HandleErrors */ protected $logger; + /** + * @var TranslatorInterface + */ + protected $translator; + + /** + * @var SettingsRepositoryInterface + */ + protected $settings; + /** * @var bool */ @@ -41,10 +53,12 @@ class HandleErrors * @param LoggerInterface $logger * @param bool $debug */ - public function __construct(ViewFactory $view, LoggerInterface $logger, $debug = false) + public function __construct(ViewFactory $view, LoggerInterface $logger, TranslatorInterface $translator, SettingsRepositoryInterface $settings, $debug = false) { $this->view = $view; $this->logger = $logger; + $this->translator = $translator; + $this->settings = $settings; $this->debug = $debug; } @@ -89,8 +103,29 @@ class HandleErrors $name = 'flarum::error.default'; } - $view = $this->view->make($name)->with('error', $error); + $view = $this->view->make($name) + ->with('error', $error) + ->with('message', $this->getMessage($status)); return new HtmlResponse($view->render(), $status); } + + private function getMessage($status) + { + if (! $translation = $this->getTranslationIfExists($status)) { + if (! $translation = $this->getTranslationIfExists(500)) { + $translation = 'An error occurred while trying to load this page.'; + } + } + + return $translation; + } + + private function getTranslationIfExists($status) + { + $key = 'core.views.error.'.$status.'_message'; + $translation = $this->translator->trans($key, ['{forum}' => $this->settings->get('forum_title')]); + + return $translation === $key ? false : $translation; + } } diff --git a/views/error/404.blade.php b/views/error/404.blade.php index e54955574..928b4a8a3 100644 --- a/views/error/404.blade.php +++ b/views/error/404.blade.php @@ -2,7 +2,7 @@ @section('content')

- {{ $translator->trans('core.views.error.404_message') }} + {{ $message }}

diff --git a/views/error/default.blade.php b/views/error/default.blade.php index c7fca235c..a5fbc351e 100644 --- a/views/error/default.blade.php +++ b/views/error/default.blade.php @@ -2,21 +2,6 @@ @section('content')

- {{-- TODO: Change below to @php when Laravel is upgraded --}} - trans($key, ['{forum}' => $settings->get('forum_title')]); - - return $translation === $key ? false : $translation; - }; - - if (! $translation = $getTranslationIfExists($error->getCode())) { - if (! $translation = $getTranslationIfExists(500)) { - $translation = 'An error occurred while trying to load this page.'; - } - } - ?> - {{ $translation }} + {{ $message }}

@endsection