add insertable tag to generate link to node inside content
This commit is contained in:
parent
92887b029e
commit
34ac2280c8
|
@ -80,7 +80,9 @@
|
|||
"No action": "Aucune action"
|
||||
"Alias element": "Élement alias"
|
||||
"This element is an alias so the next configuration is ignored.": "Cet élement est un alias donc cette configuration sera ignorée"
|
||||
"Route name: <code>%routeName%</code>": "Nom de la route : <code>%routeName%</code>"
|
||||
"Route name": "Nom de la route"
|
||||
"Tag to insert in content": "Tag à insérer dans le contenu"
|
||||
"Technical information": "Informations techniques"
|
||||
"Content": "Contenu"
|
||||
"Routing": "Routage"
|
||||
"Attributs": "Attributs"
|
||||
|
|
|
@ -170,8 +170,34 @@
|
|||
|
||||
{{ form_row(form.url) }}
|
||||
|
||||
<div class="pb-1">
|
||||
{{ 'Route name: <code>%routeName%</code>'|trans({'%routeName%': entity.routeName})|raw }}
|
||||
<div class="pb-3">
|
||||
<details>
|
||||
<summary>
|
||||
{{ 'Technical information'|trans }}
|
||||
</summary>
|
||||
<p class="pt-2">
|
||||
{% set code = 'url://' ~ entity.routeName %}
|
||||
{% if entity.parameters|length %}
|
||||
{% set code = code ~ '?' %}
|
||||
{% for param in entity.parameters %}
|
||||
{% set code = code ~ param.name ~ '=&' %}
|
||||
{% endfor %}
|
||||
{% set code = code|trim('&') %}
|
||||
{% endif %}
|
||||
{% set code = '{{' ~ code ~ '}}' %}
|
||||
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">
|
||||
<div>{{ 'Route name'|trans }}</div>
|
||||
<code>{{ entity.routeName }}</code>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<div>{{ 'Tag to insert in content'|trans }}</div>
|
||||
<code>{{ code }}</code>
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
{{ form_row(form.disableUrl) }}
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
<li class="list-group-item">
|
||||
<a href="{{ url }}" target="_blank">{{ url }}</a>
|
||||
</li>
|
||||
{% else %}
|
||||
{{ 'No result'|trans }}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
49
core/Twig/Extension/BlockExtension.php
Normal file
49
core/Twig/Extension/BlockExtension.php
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace App\Core\Twig\Extension;
|
||||
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFilter;
|
||||
|
||||
class BlockExtension extends AbstractExtension
|
||||
{
|
||||
protected UrlGeneratorInterface $urlGenerator;
|
||||
|
||||
public function __construct(UrlGeneratorInterface $urlGenerator)
|
||||
{
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getFilters()
|
||||
{
|
||||
return [
|
||||
new TwigFilter('murph_url', [$this, 'replaceUrl']),
|
||||
];
|
||||
}
|
||||
|
||||
public function replaceUrl($content)
|
||||
{
|
||||
preg_match_all('#\{\{\s*url://(?P<route>[a-z_]+)(\?(?P<params>.*))?\s*\}\}#isU', $content, $match, PREG_SET_ORDER);
|
||||
|
||||
foreach ($match as $block) {
|
||||
$url = null;
|
||||
|
||||
try {
|
||||
$block['params'] = str_replace(['&', ' '], ['&', '%20'], $block['params']);
|
||||
$route = $block['route'];
|
||||
parse_str($block['params'], $params);
|
||||
|
||||
$url = $this->urlGenerator->generate($route, $params, UrlGeneratorInterface::ABSOLUTE_URL);
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
|
||||
$content = str_replace($match[0], $url, $content);
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue