backports murph-skeleton
This commit is contained in:
parent
3c9614786a
commit
e8cea3dce2
|
@ -80,7 +80,9 @@
|
||||||
"No action": "Aucune action"
|
"No action": "Aucune action"
|
||||||
"Alias element": "Élement alias"
|
"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"
|
"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"
|
"Content": "Contenu"
|
||||||
"Routing": "Routage"
|
"Routing": "Routage"
|
||||||
"Attributs": "Attributs"
|
"Attributs": "Attributs"
|
||||||
|
|
|
@ -170,8 +170,34 @@
|
||||||
|
|
||||||
{{ form_row(form.url) }}
|
{{ form_row(form.url) }}
|
||||||
|
|
||||||
<div class="pb-1">
|
<div class="pb-3">
|
||||||
{{ 'Route name: <code>%routeName%</code>'|trans({'%routeName%': entity.routeName})|raw }}
|
<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>
|
</div>
|
||||||
|
|
||||||
{{ form_row(form.disableUrl) }}
|
{{ form_row(form.disableUrl) }}
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<a href="{{ url }}" target="_blank">{{ url }}</a>
|
<a href="{{ url }}" target="_blank">{{ url }}</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% else %}
|
||||||
|
{{ 'No result'|trans }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</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