diff --git a/src/Forum/ForumCategoriesRoutes.php b/src/Forum/ForumCategoriesRoutes.php index 0401f9da..a012a220 100644 --- a/src/Forum/ForumCategoriesRoutes.php +++ b/src/Forum/ForumCategoriesRoutes.php @@ -314,7 +314,7 @@ class ForumCategoriesRoutes implements RouteHandler, UrlSource { $topic->lastPost->colour = $this->usersCtx->getUserColour($topic->lastPost->user); } } catch(RuntimeException $ex) { - $topic->lastPost = null; + unset($topic->lastPost); } } } diff --git a/templates/forum/macros.twig b/templates/forum/macros.twig index bf1c3ee7..d79f6a45 100644 --- a/templates/forum/macros.twig +++ b/templates/forum/macros.twig @@ -1,33 +1,20 @@ -{% macro forum_category_listing(forums, title, colour, id, icon) %} +{% macro forum_category_listing(forums, title) %} {% from _self import forum_category_entry %} {% from 'macros.twig' import container_title %} - {% if forums.info is defined %} - {% set title = forums.info.name|default('Forums') %} - {% set icon = forums.info.iconForDisplay|default('fas fa-folder fa-fw') %} - {% set colour = forums.colour|default(null) %} - {% set id = forums.info.id is defined ? 'f' ~ forums.info.id : '' %} - {% set forums = forums.children %} - {% elseif forums.children is defined %} - {% set title = 'Forums' %} - {% set icon = 'fas fa-folder fa-fw' %} - {% set colour = null %} - {% set id = '' %} - {% set forums = forums.children %} - {% else %} - {% set title = title|default('Forums') %} - {% set icon = icon|default('fas fa-folder fa-fw') %} - {% set colour = colour|default(null) %} - {% set id = id|default('') %} - {% endif %} + <div class="container forum__categories" {% if forums.info.id is defined %}id="f{{ forums.info.id }}"{% endif %} + {% if forums.colour is defined and forums.colour is not null %}style="--accent-colour: {{ forums.colour }}"{% endif %}> + {{ container_title( + '<span class="' + ~ forums.info.iconForDisplay|default(forums.children is defined ? 'fas fa-folder fa-fw' : 'fas fa-folder fa-fw') + ~ '"></span> ' + ~ forums.info.name|default(title|default('Forums')) + ) }} - <div class="container forum__categories" {% if id|length > 0 %}id="{{ id }}"{% endif %} - {% if colour is not null %}style="--accent-colour: {{ colour }}"{% endif %}> - {{ container_title('<span class="' ~ icon ~ '"></span> ' ~ title) }} - - {% if forums|length > 0 %} + {% set children = forums.children is defined ? forums.children : forums %} + {% if children is iterable and children|length > 0 %} <div class="forum__categories__list"> - {% for forum in forums %} + {% for forum in children %} {{ forum_category_entry(forum) }} {% endfor %} </div> @@ -84,23 +71,15 @@ {% macro forum_category_tools(info, perms, pagination_info) %} {% from 'macros.twig' import pagination %} - {% if info.forum_id is defined %} - {% set forum_id = info.forum_id %} - {% set is_archived = info.forum_archived != 0 %} - {% else %} - {% set forum_id = info.id %} - {% set is_archived = info.archived %} - {% endif %} - - {% set is_locked = is_archived %} + {% set is_locked = info.archived %} {% set can_topic = not is_locked and perms.can_create_topic %} - {% set pag = pagination(pagination_info, 'forum-category', {'forum': forum_id}) %} + {% set pag = pagination(pagination_info, 'forum-category', {'forum': info.id}) %} {% if can_topic or pag|trim|length > 0 %} <div class="container forum__actions"> <div class="forum__actions__buttons"> {% if can_topic %} - <a href="{{ url('forum-topic-new', {'forum': forum_id}) }}" class="input__button forum__actions__button">New Topic</a> + <a href="{{ url('forum-topic-new', {'forum': info.id}) }}" class="input__button forum__actions__button">New Topic</a> {% endif %} </div> @@ -131,132 +110,75 @@ {% endif %} {% endmacro %} -{% macro forum_category_entry(forum, forum_unread, forum_icon) %} +{% macro forum_category_entry(forum) %} {% from 'macros.twig' import avatar %} - {% if forum.info is defined %} - {% set forum_id = forum.info.id %} - {% set forum_name = forum.info.name %} - {% set forum_desc = forum.info.description|default('') %} - {% set forum_is_link = forum.info.isLink %} - {% set forum_may_have_children = forum.info.mayHaveChildren %} - {% set forum_link_clicks = forum.info.linkClicks %} - {% set forum_count_topics = forum.info.topicsCount %} - {% set forum_count_posts = forum.info.postsCount %} - {% set forum_show_activity = forum.info.mayHaveTopics or forum.info.linkClicks is not null %} - {% set forum_unread = forum.unread %} - {% set forum_colour = forum.colour %} - - {% set forum_has_recent_post = forum.lastPost is defined %} - {% set children = forum.children %} - - {% if forum_has_recent_post %} - {% set forum_recent_post_id = forum.lastPost.info.id %} - {% set forum_recent_topic_title = forum.lastPost.topicInfo.title %} - {% set forum_recent_post_created = forum.lastPost.info.createdTime %} - - {% set forum_has_recent_post_user = forum_has_recent_post and forum.lastPost.user is defined %} - {% if forum_has_recent_post_user %} - {% set forum_recent_post_user_id = forum.lastPost.user.id %} - {% set forum_recent_post_user_name = forum.lastPost.user.name %} - {% set forum_recent_post_user_colour = '--user-colour: ' ~ forum.lastPost.colour %} - {% endif %} - {% endif %} - - {% if forum_icon is empty %} - {% set forum_icon = forum.info.iconForDisplay %} - {% endif %} - {% else %} - {% set forum_id = null %} - {% set forum_name = 'Forums' %} - {% set forum_desc = null %} - {% set forum_is_link = false %} - {% set forum_may_have_children = true %} - {% set forum_count_topics = 0 %} - {% set forum_count_posts = 0 %} - {% set forum_show_activity = false %} - {% set forum_unread = false %} - {% set forum_colour = null %} - {% set forum_has_recent_post = false %} - {% set children = forum %} - {% endif %} - - <div class="forum__category"{% if forum_colour is not null %} style="--accent-colour: {{ forum_colour }}"{% endif %}> - <a href="{{ url('forum-category', {'forum': forum_id}) }}" class="forum__category__link"></a> + <div class="forum__category"{% if forum.colour is not null %} style="--accent-colour: {{ forum.colour }}"{% endif %}> + <a href="{{ url('forum-category', {'forum': forum.info.id}) }}" class="forum__category__link"></a> <div class="forum__category__container"> - <div class="forum__category__icon forum__category__icon--{{ forum_unread ? 'unread' : 'read' }}"> - <span class="{{ forum_icon }}"></span> + <div class="forum__category__icon forum__category__icon--{{ forum.unread ? 'unread' : 'read' }}"> + <span class="{{ forum.info.iconForDisplay }}"></span> </div> <div class="forum__category__details"> <div class="forum__category__title"> - {{ forum_name }} + {{ forum.info.name }} </div> - {% if forum_desc is not null %} + {% if forum.info.description|length > 0 %} <div class="forum__category__description"> - {{ forum_desc|nl2br }} + {{ forum.info.description|nl2br }} </div> {% endif %} - {% if children|length > 0 %} + {% if forum.children|length > 0 %} <div class="forum__category__subforums"> - {% for child in children %} - {% if child.info is defined %} - {% set child_id = child.info.id %} - {% set child_name = child.info.name %} - {% set child_unread = child.unread %} - {% else %} - {% set child_id = child.forum_id %} - {% set child_name = child.forum_name %} - {% set child_unread = child.forum_unread %} - {% endif %} - - <a href="{{ url('forum-category', {'forum': child_id}) }}" - class="forum__category__subforum{% if child_unread %} forum__category__subforum--unread{% endif %}"> - {{ child_name }} + {% for child in forum.children %} + <a href="{{ url('forum-category', {'forum': child.info.id}) }}" + class="forum__category__subforum{% if child.unread %} forum__category__subforum--unread{% endif %}"> + {{ child.info.name }} </a> {% endfor %} </div> {% endif %} </div> - {% if forum_is_link %} - {% if forum_link_clicks is not null %} + {% if forum.info.isLink %} + {% if forum.info.linkClicks is not null %} <div class="forum__category__stats"> - <div class="forum__category__stat" title="Clicks">{{ forum_link_clicks|number_format }}</div> + <div class="forum__category__stat" title="Clicks">{{ forum.info.linkClicks|number_format }}</div> </div> {% endif %} - {% elseif forum_may_have_children %} + {% elseif forum.info.mayHaveChildren %} <div class="forum__category__stats"> - <div class="forum__category__stat" title="Topics">{{ forum_count_topics|number_format }}</div> - <div class="forum__category__stat" title="Posts">{{ forum_count_posts|number_format }}</div> + <div class="forum__category__stat" title="Topics">{{ forum.info.topicsCount|number_format }}</div> + <div class="forum__category__stat" title="Posts">{{ forum.info.postsCount|number_format }}</div> </div> {% endif %} - {% if forum_show_activity %} - <div class="forum__category__activity{% if forum_link_clicks is not null %} forum__category__activity--empty{% endif %}"> - {% if not forum_is_link %} - {% if forum_has_recent_post %} + {% if forum.info.mayHaveTopics or forum.info.linkClicks is not null %} + <div class="forum__category__activity{% if forum.info.linkClicks is not null %} forum__category__activity--empty{% endif %}"> + {% if not forum.info.isLink %} + {% if forum.lastPost is defined %} <div class="forum__category__activity__details"> <a class="forum__category__activity__post" - href="{{ url('forum-post', {'post': forum_recent_post_id, 'post_fragment': 'p' ~ forum_recent_post_id}) }}"> - {{ forum_recent_topic_title }} + href="{{ url('forum-post', {'post': forum.lastPost.info.id, 'post_fragment': 'p' ~ forum.lastPost.info.id}) }}"> + {{ forum.lastPost.topicInfo.title }} </a> <div class="forum__category__activity__info"> - {% if forum_has_recent_post_user %} - <a href="{{ url('user-profile', {'user': forum_recent_post_user_id}) }}" class="forum__category__username" - style="{{ forum_recent_post_user_colour }}">{{ forum_recent_post_user_name }}</a> + {% if forum.lastPost.user is defined %} + <a href="{{ url('user-profile', {'user': forum.lastPost.user.id}) }}" class="forum__category__username" + style="--user-colour: {{ forum.lastPost.colour }}">{{ forum.lastPost.user.name }}</a> {% endif %} - <time datetime="{{ forum_recent_post_created|date('c') }}" title="{{ forum_recent_post_created|date('r') }}">{{ forum_recent_post_created|time_format }}</time> + <time datetime="{{ forum.lastPost.info.createdTime|date('c') }}" title="{{ forum.lastPost.info.createdTime|date('r') }}">{{ forum.lastPost.info.createdTime|time_format }}</time> </div> </div> - {% if forum_has_recent_post_user %} - <a href="{{ url('user-profile', {'user': forum_recent_post_user_id}) }}" class="avatar forum__category__avatar"> - {{ avatar(forum_recent_post_user_id, 40, forum_recent_post_user_name) }} + {% if forum.lastPost.user is defined %} + <a href="{{ url('user-profile', {'user': forum.lastPost.user.id}) }}" class="avatar forum__category__avatar"> + {{ avatar(forum.lastPost.user.id, 40, forum.lastPost.user.name) }} </a> {% endif %} {% else %} @@ -331,54 +253,17 @@ </div> {% endmacro %} -{% macro forum_topic_entry(topic, topic_icon, topic_unread) %} +{% macro forum_topic_entry(topic) %} {% from 'macros.twig' import avatar %} - {% set topic_id = topic.info.id %} - {% set topic_title = topic.info.title %} - {% set topic_participated = topic.participated %} - {% set topic_count_posts = topic.info.postsCount %} - {% set topic_count_views = topic.info.viewsCount %} - {% set topic_created = topic.info.createdTime %} - {% set topic_locked = topic.info.locked %} - {% set topic_deleted = topic.info.deleted %} - {% set topic_pages = (topic.info.postsCount / 10)|round(0, 'ceil') %} - - {% set has_topic_author = topic.user is defined %} - {% if has_topic_author %} - {% set topic_author_id = topic.user.id %} - {% set topic_author_name = topic.user.name %} - {% set topic_author_colour = '--user-colour: ' ~ topic.colour %} - {% endif %} - - {% set has_reply = topic.lastPost is defined and topic.lastPost is not null %} - {% if has_reply %} - {% set reply_id = topic.lastPost.info.id %} - {% set reply_created = topic.lastPost.info.createdTime %} - - {% set has_reply_author = topic.lastPost.user is defined %} - {% if has_reply_author %} - {% set reply_author_id = topic.lastPost.user.id %} - {% set reply_author_name = topic.lastPost.user.name %} - {% set reply_author_colour = '--user-colour: ' ~ topic.lastPost.colour %} - {% endif %} - {% endif %} - - {% set topic_unread = topic.unread %} - {% set topic_important = topic.info.isImportant %} - - {% if topic_icon is null %} - {% set topic_icon = topic.info.iconForDisplay(topic.unread) %} - {% endif %} - - <div class="forum__topic{% if topic_deleted %} forum__topic--deleted{% elseif topic_locked and not topic_important %} forum__topic--locked{% endif %}"> - <a href="{{ url('forum-topic', {'topic': topic_id}) }}" class="forum__topic__link"></a> + <div class="forum__topic{% if topic.info.deleted %} forum__topic--deleted{% elseif topic.info.locked and not topic.info.isImportant %} forum__topic--locked{% endif %}"> + <a href="{{ url('forum-topic', {'topic': topic.info.id}) }}" class="forum__topic__link"></a> <div class="forum__topic__container"> - <div class="forum__topic__icon forum__topic__icon--{{ topic_unread ? 'unread' : 'read' }}"> - <i class="{{ topic_icon }} fa-fw"></i> + <div class="forum__topic__icon forum__topic__icon--{{ topic.unread ? 'unread' : 'read' }}"> + <i class="{{ topic.info.iconForDisplay(topic.unread) }} fa-fw"></i> - {% if topic_participated %} + {% if topic.participated %} <div class="forum__topic__icon__participated" title="You have posted in this topic"></div> {% endif %} </div> @@ -386,22 +271,23 @@ <div class="forum__topic__details"> <div class="forum__topic__title"> <span class="forum__topic__title__inner"> - {{ topic_title }} + {{ topic.info.title }} </span> </div> <div class="forum__topic__info"> - {% if has_topic_author %} - by <a href="{{ url('user-profile', {'user': topic_author_id}) }}" class="forum__topic__username" style="{{ topic_author_colour }}">{{ topic_author_name }}</a>, + {% if topic.user is defined %} + by <a href="{{ url('user-profile', {'user': topic.user.id}) }}" class="forum__topic__username" style="--user-colour: {{ topic.colour }}">{{ topic.user.name }}</a>, {% endif %} - <time datetime="{{ topic_created|date('c') }}" title="{{ topic_created|date('r') }}">{{ topic_created|time_format }}</time> + <time datetime="{{ topic.info.createdTime|date('c') }}" title="{{ topic.info.createdTime|date('r') }}">{{ topic.info.createdTime|time_format }}</time> </div> + {% set topic_pages = (topic.info.postsCount / 10)|round(0, 'ceil') %} {% if topic_pages|default(0) > 1 %} <div class="forum__topic__pagination"> {% set topic_pages_start_end = min(3, topic_pages) %} {% for i in 1..topic_pages_start_end %} - <a href="{{ url('forum-topic', {'topic': topic_id, 'page': i}) }}" class="forum__topic__pagination__item"> + <a href="{{ url('forum-topic', {'topic': topic.info.id, 'page': i}) }}" class="forum__topic__pagination__item"> {{ i }} </a> {% endfor %} @@ -414,7 +300,7 @@ {% set topic_pages_end_start = max(4, min(topic_pages, topic_pages - 2)) %} {% for i in topic_pages_end_start..topic_pages %} - <a href="{{ url('forum-topic', {'topic': topic_id, 'page': i}) }}" class="forum__topic__pagination__item"> + <a href="{{ url('forum-topic', {'topic': topic.info.id, 'page': i}) }}" class="forum__topic__pagination__item"> {{ i }} </a> {% endfor %} @@ -424,25 +310,25 @@ </div> <div class="forum__topic__stats"> - <div class="forum__topic__stat" title="Posts">{{ topic_count_posts|number_format }}</div> - <div class="forum__topic__stat" title="Views">{{ topic_count_views|number_format }}</div> + <div class="forum__topic__stat" title="Posts">{{ topic.info.postsCount|number_format }}</div> + <div class="forum__topic__stat" title="Views">{{ topic.info.viewsCount|number_format }}</div> </div> <div class="forum__topic__activity"> <div class="forum__topic__activity__details"> - {% if has_reply %} - {% if has_reply_author %} - <a href="{{ url('user-profile', {'user': reply_author_id}) }}" class="forum__topic__username" style="{{ reply_author_colour }}">{{ reply_author_name }}</a> + {% if topic.lastPost is defined %} + {% if topic.lastPost.user is defined %} + <a href="{{ url('user-profile', {'user': topic.lastPost.user.id}) }}" class="forum__topic__username" style="--user-colour: {{ topic.lastPost.colour }}">{{ topic.lastPost.user.name }}</a> {% endif %} - <a class="forum__topic__activity__post" href="{{ url('forum-post', {'post': reply_id, 'post_fragment': 'p' ~ reply_id}) }}"> - <time datetime="{{ reply_created|date('c') }}" title="{{ reply_created|date('r') }}">{{ reply_created|time_format }}</time> + <a class="forum__topic__activity__post" href="{{ url('forum-post', {'post': topic.lastPost.info.id, 'post_fragment': 'p' ~ topic.lastPost.info.id}) }}"> + <time datetime="{{ topic.lastPost.info.createdTime|date('c') }}" title="{{ topic.lastPost.info.createdTime|date('r') }}">{{ topic.lastPost.info.createdTime|time_format }}</time> </a> {% endif %} </div> - {% if has_reply and has_reply_author %} - <a href="{{ url('user-profile', {'user': reply_author_id}) }}" class="forum__topic__avatar"> - {{ avatar(reply_author_id, 30, reply_author_name) }} + {% if topic.lastPost is defined and topic.lastPost.user is defined %} + <a href="{{ url('user-profile', {'user': topic.lastPost.user.id}) }}" class="forum__topic__avatar"> + {{ avatar(topic.lastPost.user.id, 30, topic.lastPost.user.name) }} </a> {% endif %} </div> @@ -461,56 +347,31 @@ {% macro forum_post_entry(post, user_id, perms) %} {% from 'macros.twig' import avatar %} - {% set post_id = post.info.id %} - {% set post_created = post.info.createdTime %} - {% set post_edited = post.info.editedTime %} - {% set post_is_deleted = post.info.deleted %} - {% set post_is_op = post.isOriginalPost %} - {% set post_body = post.info.body|escape|parse_text(post.info.bodyFormat) %} - {% set post_is_markdown = post.info.isBodyMarkdown %} - {% set post_show_signature = post.info.shouldDisplaySignature %} - {% set post_can_be_deleted = post.info.canBeDeleted %} - {% set topic_id = post.info.topicId %} - - {% set has_author = post.user is defined %} - {% if has_author %} - {% set author_id = post.user.id %} - {% set author_name = post.user.name %} - {% set author_title = post.user.title %} - {% set author_colour = '--accent-colour:' ~ post.colour %} - {% set author_country = post.user.countryCode %} - {% set author_created = post.user.createdTime %} - {% set author_posts_count = post.postsCount %} - {% set author_is_op = post.isOriginalPoster %} - {% set signature_body = post.signature.body|default('')|escape|parse_text(post.signature.bodyFormat|default('')) %} - {% set signature_is_markdown = post.signature.isBodyMarkdown|default(false) %} - {% endif %} - - {% set viewer_is_author = has_author and user_id == author_id %} + {% set viewer_is_author = user_id == post.user.id|default(null) %} {% set can_edit = perms.can_edit_any_post|default(false) or (viewer_is_author and perms.can_edit_post|default(false)) %} - {% set can_delete = not post_is_op and (perms.can_delete_any_post|default(false) or (viewer_is_author and perms.can_delete_post|default(false) and post_can_be_deleted)) %} + {% set can_delete = not post.isOriginalPost and (perms.can_delete_any_post|default(false) or (viewer_is_author and perms.can_delete_post|default(false) and post.info.canBeDeleted)) %} - <div class="container forum__post{% if post_is_deleted %} forum__post--deleted{% endif %}" id="p{{ post_id }}"{% if author_colour is defined%} style="{{ author_colour }}"{% endif %}> + <div class="container forum__post{% if post.info.deleted %} forum__post--deleted{% endif %}" id="p{{ post.info.id }}"{% if post.colour is defined %} style="--accent-colour: {{ post.colour }}"{% endif %}> <div class="forum__post__info"> <div class="forum__post__info__background"></div> <div class="forum__post__info__content"> - {% if has_author %} - <a class="forum__post__avatar" href="{{ url('user-profile', {'user': author_id}) }}"> - {{ avatar(author_id, 120, author_name) }} + {% if post.user is defined %} + <a class="forum__post__avatar" href="{{ url('user-profile', {'user': post.user.id}) }}"> + {{ avatar(post.user.id, 120, post.user.name) }} </a> - <a class="forum__post__username" href="{{ url('user-profile', {'user': author_id}) }}">{{ author_name }}</a> + <a class="forum__post__username" href="{{ url('user-profile', {'user': post.user.id}) }}">{{ post.user.name }}</a> - {% if author_title|length > 0 %} - <div class="forum__post__usertitle">{{ author_title }}</div> + {% if post.user.title|length > 0 %} + <div class="forum__post__usertitle">{{ post.user.title }}</div> {% endif %} <div class="forum__post__icons"> - <div class="flag flag--{{ author_country|lower }}" title="{{ author_country|country_name }}"></div> - {% if author_posts_count is not null %}<div class="forum__post__posts-count">{{ author_posts_count|number_format }} posts</div>{% endif %} + <div class="flag flag--{{ post.user.countryCode|lower }}" title="{{ post.user.countryCode|country_name }}"></div> + {% if post.postsCount is defined %}<div class="forum__post__posts-count">{{ post.postsCount|number_format }} posts</div>{% endif %} </div> - {% if author_is_op %} + {% if post.isOriginalPoster %} <div class="forum__post__badge forum__post__badge--original-poster"> <div class="forum__post__badge__desktop">Original Poster</div> <div class="forum__post__badge__mobile">OP</div> @@ -518,7 +379,7 @@ {% endif %} <div class="forum__post__joined"> - joined <time datetime="{{ author_created|date('c') }}" title="{{ author_created|date('r') }}">{{ author_created|time_format }}</time> + joined <time datetime="{{ post.user.createdTime|date('c') }}" title="{{ post.user.createdTime|date('r') }}">{{ post.user.createdTime|time_format }}</time> </div> {% else %} <div class="forum__post__username">Deleted User</div> @@ -527,48 +388,51 @@ </div> <div class="forum__post__content"> - {% set post_link = url(post_is_op ? 'forum-topic' : 'forum-post', {'topic': topic_id, 'post': post_id, 'post_fragment': 'p%d'|format(post_id)}) %} + {% set post_link = url(post.isOriginalPost ? 'forum-topic' : 'forum-post', {'topic': post.info.topicId, 'post': post.info.id, 'post_fragment': 'p%d'|format(post.info.id)}) %} <div class="forum__post__details"> <a class="forum__post__datetime" href="{{ post_link }}"> - <time datetime="{{ post_created|date('c') }}" title="{{ post_created|date('r') }}">{{ post_created|time_format }}</time> - {% if post_edited is not null %} - (edited <time datetime="{{ post_edited|date('c') }}" title="{{ post_edited|date('r') }}">{{ post_edited|time_format }}</time>) + <time datetime="{{ post.info.createdTime|date('c') }}" title="{{ post.info.createdTime|date('r') }}">{{ post.info.createdTime|time_format }}</time> + {% if post.info.edited %} + (edited <time datetime="{{ post.info.editedTime|date('c') }}" title="{{ post.info.editedTime|date('r') }}">{{ post.info.editedTime|time_format }}</time>) {% endif %} </a> <a class="forum__post__id" href="{{ post_link }}"> - #{{ post_id }} + #{{ post.info.id }} </a> </div> - <div class="forum__post__text{% if post_is_markdown %} markdown{% endif %}"> - {{ post_body|raw }} + <div class="forum__post__text{% if post.info.isBodyMarkdown %} markdown{% endif %}"> + {{ post.info.body|escape|parse_text(post.info.bodyFormat)|raw }} </div> {% if perms.can_create_post|default(false) or can_edit or can_delete %} <div class="forum__post__actions"> - {% if post_is_deleted %} - <button class="forum__post__action forum__post__action--restore" data-method="POST" data-url="{{ url('forum-post-restore', {'post': post_id}) }}" data-refresh-on-success="1" data-with-csrf="1" data-disable-with="Restoring..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to restore this post?"><i class="fas fa-magic fa-fw"></i> <span class="js-action-text">Restore</span></button> - <button class="forum__post__action forum__post__action--nuke" data-method="POST" data-url="{{ url('forum-post-nuke', {'post': post_id}) }}" data-redirect-on-success="{{ url('forum-topic', { topic: post.info.topicId }) }}" data-with-csrf="1" data-disable-with="Nuking..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to PERMANENTLY DELETE this post?"><i class="fas fa-radiation-alt fa-fw"></i> <span class="js-action-text">Permanently Delete</span></button> + {% if post.info.deleted %} + <button class="forum__post__action forum__post__action--restore" data-method="POST" data-url="{{ url('forum-post-restore', {'post': post.info.id}) }}" data-refresh-on-success="1" data-with-csrf="1" data-disable-with="Restoring..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to restore this post?"><i class="fas fa-magic fa-fw"></i> <span class="js-action-text">Restore</span></button> + <button class="forum__post__action forum__post__action--nuke" data-method="POST" data-url="{{ url('forum-post-nuke', {'post': post.info.id}) }}" data-redirect-on-success="{{ url('forum-topic', { topic: post.info.topicId }) }}" data-with-csrf="1" data-disable-with="Nuking..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to PERMANENTLY DELETE this post?"><i class="fas fa-radiation-alt fa-fw"></i> <span class="js-action-text">Permanently Delete</span></button> {% else %} {# if perms.can_create_post|default(false) %} - <a href="{{ url('forum-post-quote', {'post': post_id}) }}" class="forum__post__action forum__post__action--quote"><i class="fas fa-quote-left fa-fw"></i> Quote</a> + <a href="{{ url('forum-post-quote', {'post': post.info.id}) }}" class="forum__post__action forum__post__action--quote"><i class="fas fa-quote-left fa-fw"></i> Quote</a> {% endif #} {% if can_edit %} - <a href="{{ url('forum-post-edit', {'post': post_id}) }}" class="forum__post__action forum__post__action--edit"><i class="fas fa-edit fa-fw"></i> Edit</a> + <a href="{{ url('forum-post-edit', {'post': post.info.id}) }}" class="forum__post__action forum__post__action--edit"><i class="fas fa-edit fa-fw"></i> Edit</a> {% endif %} {% if can_delete %} - <button class="forum__post__action forum__post__action--delete" data-method="DELETE" data-url="{{ url('forum-post-delete', {'post': post_id}) }}" data-redirect-on-success="{{ perms.can_delete_any_post ? url('forum-post', { post: post.info.id }) : url('forum-topic', { topic: post.info.topicId }) }}" data-with-csrf="1" data-disable-with="Deleting..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to delete this post?"><i class="fas fa-trash-alt fa-fw"></i> <span class="js-action-text">Delete</span></button> + <button class="forum__post__action forum__post__action--delete" data-method="DELETE" data-url="{{ url('forum-post-delete', {'post': post.info.id}) }}" data-redirect-on-success="{{ perms.can_delete_any_post ? url('forum-post', { post: post.info.id }) : url('forum-topic', { topic: post.info.topicId }) }}" data-with-csrf="1" data-disable-with="Deleting..." data-disable-with-target=".js-action-text" data-confirm="Are you sure you want to delete this post?"><i class="fas fa-trash-alt fa-fw"></i> <span class="js-action-text">Delete</span></button> {% endif %} {% endif %} </div> {% endif %} - {% if post_show_signature and signature_body is defined and signature_body|length > 0 %} - <div class="forum__post__signature{% if signature_is_markdown %} markdown{% endif %}"> - {{ signature_body|raw }} - </div> + {% if post.info.shouldDisplaySignature and post.signature is defined %} + {% set signature_body = post.signature.body|escape|parse_text(post.signature.bodyFormat|default('')) %} + {% if signature_body|trim|length > 0 %} + <div class="forum__post__signature{% if post.signature.isBodyMarkdown %} markdown{% endif %}"> + {{ signature_body|raw }} + </div> + {% endif %} {% endif %} </div> </div>