Add canonical URL to discussion list (#1814)

This commit is contained in:
David Sevilla Martín 2019-08-07 18:01:25 -04:00 committed by Franz Liedke
parent 2fc2cd5863
commit b3019e72fe

View File

@ -14,6 +14,8 @@ namespace Flarum\Forum\Content;
use Flarum\Api\Client; use Flarum\Api\Client;
use Flarum\Api\Controller\ListDiscussionsController; use Flarum\Api\Controller\ListDiscussionsController;
use Flarum\Frontend\Document; use Flarum\Frontend\Document;
use Flarum\Http\UrlGenerator;
use Flarum\Settings\SettingsRepositoryInterface;
use Flarum\User\User; use Flarum\User\User;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
@ -31,14 +33,28 @@ class Index
*/ */
protected $view; protected $view;
/**
* @var SettingsRepositoryInterface
*/
protected $settings;
/**
* @var UrlGenerator
*/
protected $url;
/** /**
* @param Client $api * @param Client $api
* @param Factory $view * @param Factory $view
* @param SettingsRepositoryInterface $settings
* @param UrlGenerator $url
*/ */
public function __construct(Client $api, Factory $view) public function __construct(Client $api, Factory $view, SettingsRepositoryInterface $settings, UrlGenerator $url)
{ {
$this->api = $api; $this->api = $api;
$this->view = $view; $this->view = $view;
$this->settings = $settings;
$this->url = $url;
} }
public function __invoke(Document $document, Request $request) public function __invoke(Document $document, Request $request)
@ -58,9 +74,11 @@ class Index
]; ];
$apiDocument = $this->getApiDocument($request->getAttribute('actor'), $params); $apiDocument = $this->getApiDocument($request->getAttribute('actor'), $params);
$defaultRoute = $this->settings->get('default_route');
$document->content = $this->view->make('flarum.forum::frontend.content.index', compact('apiDocument', 'page')); $document->content = $this->view->make('flarum.forum::frontend.content.index', compact('apiDocument', 'page'));
$document->payload['apiDocument'] = $apiDocument; $document->payload['apiDocument'] = $apiDocument;
$document->canonicalUrl = $defaultRoute === '/all' ? $this->url->to('forum')->base() : $request->getUri()->withQuery('');
return $document; return $document;
} }