1
0
mirror of https://github.com/flarum/core.git synced 2025-08-04 07:27:39 +02:00

Use URL generator for mention href

This commit is contained in:
Toby Zerner
2015-12-30 15:28:22 +10:30
parent 9af74f89d7
commit 37ff7fdf1d
2 changed files with 36 additions and 5 deletions

View File

@@ -12,16 +12,32 @@ namespace Flarum\Mentions\Listener;
use Flarum\Core\Post\CommentPost; use Flarum\Core\Post\CommentPost;
use Flarum\Event\ConfigureFormatter; use Flarum\Event\ConfigureFormatter;
use Flarum\Event\ConfigureFormatterRenderer;
use Flarum\Forum\UrlGenerator;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
class FormatPostMentions class FormatPostMentions
{ {
/**
* @var UrlGenerator
*/
protected $url;
/**
* @param UrlGenerator $url
*/
public function __construct(UrlGenerator $url)
{
$this->url = $url;
}
/** /**
* @param Dispatcher $events * @param Dispatcher $events
*/ */
public function subscribe(Dispatcher $events) public function subscribe(Dispatcher $events)
{ {
$events->listen(ConfigureFormatter::class, [$this, 'configure']); $events->listen(ConfigureFormatter::class, [$this, 'configure']);
$events->listen(ConfigureFormatterRenderer::class, [$this, 'render']);
} }
/** /**
@@ -42,7 +58,7 @@ class FormatPostMentions
$tag->attributes['number']->required = false; $tag->attributes['number']->required = false;
$tag->attributes['discussionid']->required = false; $tag->attributes['discussionid']->required = false;
$tag->template = '<a href="/d/{@discussionid}/{@number}" class="PostMention" data-id="{@id}"><xsl:value-of select="@username"/></a>'; $tag->template = '<a href="{$DISCUSSION_URL}{@discussionid}/{@number}" class="PostMention" data-id="{@id}"><xsl:value-of select="@username"/></a>';
$tag->filterChain $tag->filterChain
->prepend([static::class, 'addId']) ->prepend([static::class, 'addId'])
@@ -51,6 +67,14 @@ class FormatPostMentions
$configurator->Preg->match('/\B@(?<username>[a-z0-9_-]+)#(?<id>\d+)/i', $tagName); $configurator->Preg->match('/\B@(?<username>[a-z0-9_-]+)#(?<id>\d+)/i', $tagName);
} }
/**
* @param ConfigureFormatterRenderer $event
*/
public function render(ConfigureFormatterRenderer $event)
{
$event->renderer->setParameter('DISCUSSION_URL', $this->url->toRoute('discussion', ['id' => '']));
}
/** /**
* @param $tag * @param $tag
* @return bool * @return bool

View File

@@ -14,6 +14,7 @@ use Flarum\Core\Repository\UserRepository;
use Flarum\Event\ConfigureFormatter; use Flarum\Event\ConfigureFormatter;
use Flarum\Event\ConfigureFormatterParser; use Flarum\Event\ConfigureFormatterParser;
use Flarum\Event\ConfigureFormatterRenderer; use Flarum\Event\ConfigureFormatterRenderer;
use Flarum\Forum\UrlGenerator;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
class FormatUserMentions class FormatUserMentions
@@ -24,11 +25,18 @@ class FormatUserMentions
protected $users; protected $users;
/** /**
* @param UserRepository $users * @var UrlGenerator
*/ */
public function __construct(UserRepository $users) protected $url;
/**
* @param UserRepository $users
* @param UrlGenerator $url
*/
public function __construct(UserRepository $users, UrlGenerator $url)
{ {
$this->users = $users; $this->users = $users;
$this->url = $url;
} }
/** /**
@@ -76,8 +84,7 @@ class FormatUserMentions
*/ */
public function render(ConfigureFormatterRenderer $event) public function render(ConfigureFormatterRenderer $event)
{ {
// TODO: use URL generator $event->renderer->setParameter('PROFILE_URL', $this->url->toRoute('user', ['username' => '']));
$event->renderer->setParameter('PROFILE_URL', '/u/');
} }
/** /**