78 lines
3.2 KiB
Twig
78 lines
3.2 KiB
Twig
|
{% extends 'base.html.twig' %}
|
||
|
|
||
|
{% block body_id 'blog_post_show' %}
|
||
|
|
||
|
{% block main %}
|
||
|
<h1>{{ post.title }}</h1>
|
||
|
|
||
|
<p class="post-metadata">
|
||
|
<span class="metadata"><i class="fa fa-calendar"></i> {{ post.publishedAt|format_datetime('long', 'medium', '', 'UTC') }}</span>
|
||
|
<span class="metadata"><i class="fa fa-user"></i> {{ post.author.fullName }}</span>
|
||
|
</p>
|
||
|
|
||
|
{{ post.content|markdown_to_html|sanitize_html }}
|
||
|
|
||
|
{{ include('blog/_post_tags.html.twig') }}
|
||
|
|
||
|
<div id="post-add-comment" class="well">
|
||
|
{# The 'IS_AUTHENTICATED_FULLY' role ensures that the user has entered
|
||
|
their credentials (login + password) during this session. If they
|
||
|
are automatically logged via the 'Remember Me' functionality, they won't
|
||
|
be able to add a comment.
|
||
|
See https://symfony.com/doc/current/security/remember_me.html#forcing-the-user-to-re-authenticate-before-accessing-certain-resources
|
||
|
#}
|
||
|
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
|
||
|
{{ render(controller('App\\Controller\\BlogController::commentForm', {'id': post.id})) }}
|
||
|
{% else %}
|
||
|
<p>
|
||
|
<a class="btn btn-success" href="{{ path('security_login', {'redirect_to': app.request.pathInfo}) }}">
|
||
|
<i class="fa fa-sign-in" aria-hidden="true"></i> {{ 'action.sign_in'|trans }}
|
||
|
</a>
|
||
|
{{ 'post.to_publish_a_comment'|trans }}
|
||
|
</p>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
|
||
|
<h3>
|
||
|
<i class="fa fa-comments" aria-hidden="true"></i> {{ 'post.num_comments'|trans({ 'count': post.comments|length }) }}
|
||
|
</h3>
|
||
|
|
||
|
{% for comment in post.comments %}
|
||
|
<div class="row post-comment">
|
||
|
<a name="comment_{{ comment.id }}"></a>
|
||
|
<h4 class="col-sm-3">
|
||
|
<strong>{{ comment.author.fullName }}</strong> {{ 'post.commented_on'|trans }}
|
||
|
{# it's not mandatory to set the timezone in localizeddate(). This is done to
|
||
|
avoid errors when the 'intl' PHP extension is not available and the application
|
||
|
is forced to use the limited "intl polyfill", which only supports UTC and GMT #}
|
||
|
<strong>{{ comment.publishedAt|format_datetime('medium', 'short', '', 'UTC') }}</strong>
|
||
|
</h4>
|
||
|
<div class="col-sm-9">
|
||
|
{{ comment.content|markdown_to_html|sanitize_html }}
|
||
|
</div>
|
||
|
</div>
|
||
|
{% else %}
|
||
|
<div class="post-comment">
|
||
|
<p>{{ 'post.no_comments'|trans }}</p>
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
{% endblock %}
|
||
|
|
||
|
{% block sidebar %}
|
||
|
{% if is_granted('edit', post) %}
|
||
|
<div class="section">
|
||
|
<a class="btn btn-lg btn-block btn-success" href="{{ path('admin_post_edit', {id: post.id}) }}">
|
||
|
<i class="fa fa-edit" aria-hidden="true"></i> {{ 'action.edit_post'|trans }}
|
||
|
</a>
|
||
|
</div>
|
||
|
{% endif %}
|
||
|
|
||
|
{# the parent() function includes the contents defined by the parent template
|
||
|
('base.html.twig') for this block ('sidebar'). This is a very convenient way
|
||
|
to share common contents in different templates #}
|
||
|
{{ parent() }}
|
||
|
|
||
|
{{ show_source_code(_self) }}
|
||
|
{{ include('blog/_rss.html.twig') }}
|
||
|
{% endblock %}
|