mirror of
https://github.com/flarum/framework.git
synced 2024-12-01 22:43:41 +08:00
Add index page title, add mechanism to clear title from defaultRoute. (#2047)
* Add "All Descriptions title to index * Added system to clear custom title if we're on the default route
This commit is contained in:
parent
d6de442b8a
commit
2f9beccf2a
|
@ -237,7 +237,10 @@ export default class Application {
|
|||
}
|
||||
|
||||
updateTitle() {
|
||||
document.title = (this.titleCount ? `(${this.titleCount}) ` : '') + (this.title ? this.title + ' - ' : '') + this.forum.attribute('title');
|
||||
const count = this.titleCount ? `(${this.titleCount}) ` : '';
|
||||
const pageTitleWithSeparator = this.title && m.route() !== '/' ? this.title + ' - ' : '';
|
||||
const title = this.forum.attribute('title');
|
||||
document.title = count + pageTitleWithSeparator + title;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -79,7 +79,7 @@ export default class IndexPage extends Page {
|
|||
|
||||
extend(context, 'onunload', () => $('#app').css('min-height', ''));
|
||||
|
||||
app.setTitle('');
|
||||
app.setTitle(app.translator.trans('core.forum.index.meta_title_text'));
|
||||
app.setTitleCount(0);
|
||||
|
||||
// Work out the difference between the height of this hero and that of the
|
||||
|
|
|
@ -15,6 +15,7 @@ use Flarum\Frontend\Document;
|
|||
use Flarum\Http\UrlGenerator;
|
||||
use Flarum\Settings\SettingsRepositoryInterface;
|
||||
use Flarum\User\User;
|
||||
use Illuminate\Contracts\Translation\Translator;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Support\Arr;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
@ -46,13 +47,15 @@ class Index
|
|||
* @param Factory $view
|
||||
* @param SettingsRepositoryInterface $settings
|
||||
* @param UrlGenerator $url
|
||||
* @param Translator $translator
|
||||
*/
|
||||
public function __construct(Client $api, Factory $view, SettingsRepositoryInterface $settings, UrlGenerator $url)
|
||||
public function __construct(Client $api, Factory $view, SettingsRepositoryInterface $settings, UrlGenerator $url, Translator $translator)
|
||||
{
|
||||
$this->api = $api;
|
||||
$this->view = $view;
|
||||
$this->settings = $settings;
|
||||
$this->url = $url;
|
||||
$this->translator = $translator;
|
||||
}
|
||||
|
||||
public function __invoke(Document $document, Request $request)
|
||||
|
@ -74,6 +77,7 @@ class Index
|
|||
$apiDocument = $this->getApiDocument($request->getAttribute('actor'), $params);
|
||||
$defaultRoute = $this->settings->get('default_route');
|
||||
|
||||
$document->title = $this->translator->trans('core.forum.index.meta_title_text');
|
||||
$document->content = $this->view->make('flarum.forum::frontend.content.index', compact('apiDocument', 'page'));
|
||||
$document->payload['apiDocument'] = $apiDocument;
|
||||
$document->canonicalUrl = $defaultRoute === '/all' ? $this->url->to('forum')->base() : $request->getUri()->withQuery('');
|
||||
|
|
|
@ -13,6 +13,7 @@ use Illuminate\Contracts\Support\Renderable;
|
|||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Support\Arr;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
||||
/**
|
||||
* A view which renders a HTML skeleton for Flarum's frontend app.
|
||||
|
@ -131,14 +132,20 @@ class Document implements Renderable
|
|||
*/
|
||||
protected $forumApiDocument;
|
||||
|
||||
/**
|
||||
* @var Request
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* @param Factory $view
|
||||
* @param array $forumApiDocument
|
||||
*/
|
||||
public function __construct(Factory $view, array $forumApiDocument)
|
||||
public function __construct(Factory $view, array $forumApiDocument, Request $request)
|
||||
{
|
||||
$this->view = $view;
|
||||
$this->forumApiDocument = $forumApiDocument;
|
||||
$this->request = $request;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -173,7 +180,9 @@ class Document implements Renderable
|
|||
*/
|
||||
protected function makeTitle(): string
|
||||
{
|
||||
return ($this->title ? $this->title.' - ' : '').Arr::get($this->forumApiDocument, 'data.attributes.title');
|
||||
$onHomePage = rtrim($this->request->getUri()->getPath(), '/') === '';
|
||||
|
||||
return ($this->title && ! $onHomePage ? $this->title.' - ' : '').Arr::get($this->forumApiDocument, 'data.attributes.title');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -50,7 +50,7 @@ class Frontend
|
|||
{
|
||||
$forumDocument = $this->getForumDocument($request);
|
||||
|
||||
$document = new Document($this->view, $forumDocument);
|
||||
$document = new Document($this->view, $forumDocument, $request);
|
||||
|
||||
$this->populate($document, $request);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user