diff --git a/core/Resources/translations/messages.fr.yaml b/core/Resources/translations/messages.fr.yaml index 9e2ef24..e886b76 100644 --- a/core/Resources/translations/messages.fr.yaml +++ b/core/Resources/translations/messages.fr.yaml @@ -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: %routeName%": "Nom de la route : %routeName%" +"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" diff --git a/core/Resources/views/site/node_admin/_form.html.twig b/core/Resources/views/site/node_admin/_form.html.twig index 34c5d2c..736f6c8 100644 --- a/core/Resources/views/site/node_admin/_form.html.twig +++ b/core/Resources/views/site/node_admin/_form.html.twig @@ -170,8 +170,34 @@ {{ form_row(form.url) }} -
- {{ 'Route name: %routeName%'|trans({'%routeName%': entity.routeName})|raw }} +
+
+ + {{ 'Technical information'|trans }} + +

+ {% 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 ~ '}}' %} + +

    +
  • +
    {{ 'Route name'|trans }}
    + {{ entity.routeName }} +
  • +
  • +
    {{ 'Tag to insert in content'|trans }}
    + {{ code }} +
  • +
+

+
{{ form_row(form.disableUrl) }} diff --git a/core/Resources/views/site/node_admin/urls.html.twig b/core/Resources/views/site/node_admin/urls.html.twig index 814986d..2d262eb 100644 --- a/core/Resources/views/site/node_admin/urls.html.twig +++ b/core/Resources/views/site/node_admin/urls.html.twig @@ -14,6 +14,8 @@
  • {{ url }}
  • + {% else %} + {{ 'No result'|trans }} {% endfor %}
    diff --git a/core/Twig/Extension/BlockExtension.php b/core/Twig/Extension/BlockExtension.php new file mode 100644 index 0000000..d2753ae --- /dev/null +++ b/core/Twig/Extension/BlockExtension.php @@ -0,0 +1,49 @@ +urlGenerator = $urlGenerator; + } + + /** + * {@inheritdoc} + */ + public function getFilters() + { + return [ + new TwigFilter('murph_url', [$this, 'replaceUrl']), + ]; + } + + public function replaceUrl($content) + { + preg_match_all('#\{\{\s*url://(?P[a-z_]+)(\?(?P.*))?\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; + } +}