|
@@ -7,7 +7,7 @@
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block content %}
|
|
|
-{% from theme('macros.html') import render_pagination, form_field %}
|
|
|
+{% from theme('macros.html') import render_pagination, form_field, generate_post_id, generate_post_url %}
|
|
|
|
|
|
<ol class="breadcrumb flaskbb-breadcrumb">
|
|
|
<li><a href="{{ url_for('forum.index') }}">{% trans %}Forum{% endtrans %}</a></li>
|
|
@@ -26,132 +26,114 @@
|
|
|
</div>
|
|
|
<div class="panel-body topic-body">
|
|
|
{% for post, user in posts.items %}
|
|
|
- <tr>
|
|
|
- <td >
|
|
|
- <span class="pull-right">
|
|
|
- <strong>#{%- if posts.page == 1 -%} {{ loop.index }} {%- else -%} {{ loop.index + (posts.page - 1) * flaskbb_config["POSTS_PER_PAGE"] }} {%- endif -%}</strong>
|
|
|
- </span>
|
|
|
- <span class="pull-left">
|
|
|
- <a href="
|
|
|
- {%- if posts.page > 1 -%}
|
|
|
- {{ topic.url }}?page={{ posts.page }}#pid{{ post.id }}
|
|
|
- {%- else -%}
|
|
|
- {{ topic.url }}#pid{{ post.id }}
|
|
|
- {%- endif -%}
|
|
|
- ">{{ post.date_created|format_date('%d %B %Y') }}</a>
|
|
|
- {% if post.user_id and post.date_modified %}
|
|
|
- <small>
|
|
|
- ({% trans %}Last modified{% endtrans %}: {{ post.date_modified|format_date }} {% trans %}by{% endtrans %}
|
|
|
- <a href="{{ url_for('user.profile', username=post.modified_by) }}">
|
|
|
- {{ post.modified_by }}
|
|
|
- </a>.)
|
|
|
- </small>
|
|
|
- {% endif %}
|
|
|
- </span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <table class="table table-borderless">
|
|
|
- <tr>
|
|
|
+ <div id="{{ post.id }}" class="row post-row clearfix">
|
|
|
+
|
|
|
+ <div class="post-author col-md-2 col-sm-2 col-xs-12">
|
|
|
+ <!-- Registered User -->
|
|
|
{% if post.user_id %}
|
|
|
- {% if user.avatar %}
|
|
|
- <td width="1">
|
|
|
- <img src="{{ user.avatar }}" alt="Avatar" height="100" width="100">
|
|
|
- </td>
|
|
|
+ <div class="author-name"><h4><a href="{{ user.url }}">{{ user.username }}</a></h4></div>
|
|
|
+ <div class="author-{%- if user|is_online -%}online{%- else -%}offline{%- endif -%}"></div>
|
|
|
+
|
|
|
+ <div class="author-title"><h5>{{ user.primary_group.name }}</h5></div>
|
|
|
+
|
|
|
+ {% if user.avatar %}
|
|
|
+ <div class="author-avatar"><img src="{{ user.avatar }}" width="100" height="100" alt=""></div>
|
|
|
+ {% endif %}
|
|
|
+
|
|
|
+ <div class="author-field author-registered">{% trans %}Joined{% endtrans %}: {{ user.date_joined|format_date('%b %d %Y') }}</div>
|
|
|
+ <div class="author-field author-posts">{% trans %}Posts{% endtrans %}: {{ user.post_count }}</div>
|
|
|
+ <div class="author-field author-email">
|
|
|
+ {% if current_user.is_authenticated() and post.user_id %}
|
|
|
+ <a href="{{ url_for('message.new_conversation') }}?to_user={{ user.username }}">{% trans %}PM{% endtrans %}</a>
|
|
|
{% endif %}
|
|
|
- <td>
|
|
|
- <a href="{{ user.url }}">
|
|
|
- <span style="font-weight:bold">{{ user.username }}</span> <!-- TODO: Implement userstyles -->
|
|
|
- </a>
|
|
|
- {%- if user|is_online %}
|
|
|
- <span class="label label-success">Online</span>
|
|
|
- {%- else %}
|
|
|
- <span class="label label-default">Offline</span>
|
|
|
- {%- endif %}
|
|
|
- <div class="profile primary-group">
|
|
|
- {{ user.primary_group.name }}
|
|
|
- </div>
|
|
|
- </td>
|
|
|
-
|
|
|
- <td class="pull-right">
|
|
|
- {% trans %}Posts{% endtrans %}: {{ user.post_count }}<br />
|
|
|
- {% trans %}Registered since{% endtrans %}: {{ user.date_joined|format_date('%b %d %Y') }}<br />
|
|
|
- </td>
|
|
|
+ </div>
|
|
|
+ {% if user.website %}
|
|
|
+ <div class="author-field author-website"><a href="{{ user.website }}" rel="nofollow">{% trans %}Website{% endtrans %}</a></div>
|
|
|
+ {% endif %}
|
|
|
+
|
|
|
{% else %}
|
|
|
- <td>
|
|
|
- <strong>{{ post.username }}</strong>
|
|
|
- <br />
|
|
|
- {% trans %}Guest{% endtrans %}
|
|
|
- </td>
|
|
|
+ <div class="author-name"><h4><a href="{{ user.url }}">{{ post.username }}</a></h4></div>
|
|
|
+ <div class="author-title"><h5>{% trans %}Guest{% endtrans %}</h5></div>
|
|
|
{% endif %}
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
-
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <div class="post_body" id="pid{{ post.id }}">
|
|
|
- {% autoescape false %}
|
|
|
- {{ post.content|markup }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="post-box col-md-10 col-sm-10 col-xs-12">
|
|
|
+ <div class="post-meta clearfix">
|
|
|
+ <div class="pull-left">
|
|
|
+ <!-- Creation date / Date modified -->
|
|
|
+ <a href="{{ generate_post_url(topic, post, posts.page) }}">
|
|
|
+ {{ post.date_created|format_date('%d %B %Y') }}
|
|
|
+ </a>
|
|
|
+ {% if post.user_id and post.date_modified %}
|
|
|
+ <small>
|
|
|
+ (Last modified: {{ post.date_modified|format_date }} by
|
|
|
+ <a href="{{ url_for('user.profile', username=post.modified_by) }}">{{ post.modified_by }}</a>.)
|
|
|
+ </small>
|
|
|
+ {% endif %}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- Post number -->
|
|
|
+ <div class="pull-right">
|
|
|
+ #{{ generate_post_id(posts, loop.index, flaskbb_config["POSTS_PER_PAGE"]) }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="post-content post_body clearfix" id="pid{{ post.id }}">
|
|
|
+ {{ post.content|markup|safe }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="post-footer clearfix">
|
|
|
+
|
|
|
<!-- Signature Begin -->
|
|
|
{% if post.user_id and user.signature %}
|
|
|
- <div class="signature">
|
|
|
- <hr>
|
|
|
- {{ user.signature|markup }}
|
|
|
+ <div class="post-signature col-md-12 col-md-12 col-xs-12">
|
|
|
+ {{ user.signature|markup|safe }}
|
|
|
</div>
|
|
|
{% endif %}
|
|
|
<!-- Signature End -->
|
|
|
- {% endautoescape %}
|
|
|
- </div>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>
|
|
|
- <span class="pull-left">
|
|
|
- {% if current_user.is_authenticated() and post.user_id and post.user_id != current_user.id %}
|
|
|
- <a href="{{ url_for('message.new_conversation', to_user=post.user.username) }}">{% trans %}PM{% endtrans %}</a>
|
|
|
- {% endif %}
|
|
|
- {% if user.website %}
|
|
|
- {% if current_user.is_authenticated() %}| {% endif %}<a href="{{ user.website }}">{% trans %}Website{% endtrans %}</a>
|
|
|
- {% endif %}
|
|
|
- </span>
|
|
|
|
|
|
- <span class="pull-right">
|
|
|
- {% if current_user.is_authenticated() %}
|
|
|
- <a href="{{ url_for('forum.report_post', post_id=post.id) }}" onclick="window.open(this.href, 'wio_window','width=500,height=500'); return false;">
|
|
|
- {% trans %}Report{% endtrans %}
|
|
|
- </a> |
|
|
|
+ <!-- Report/Edit/Delete/Quote Post-->
|
|
|
+ <div class="post-controls col-md-12 col-sm-12 col-xs-12">
|
|
|
+
|
|
|
+ {% if current_user|post_reply(topic) %}
|
|
|
+ <!-- Quick quote -->
|
|
|
+ <a href="#" class="btn btn-link fa fa-reply quote_btn" data-placement="top" data-post-id="{{ post.id }}" title="" data-original-title="Quote this post"></a>
|
|
|
+ <!-- Full quote/reply -->
|
|
|
+ <a href="{{ url_for('forum.reply_post', topic_id=topic.id, post_id=post.id) }}" class="btn btn-link fa fa-reply-all" data-placement="top" title="" data-original-title="Full Reply"></a>
|
|
|
{% endif %}
|
|
|
+
|
|
|
{% if current_user|edit_post(post) %}
|
|
|
- <a href="{{ url_for('forum.edit_post', post_id=post.id) }}">{% trans %}Edit{% endtrans %}</a> |
|
|
|
+ <!-- Edit Post -->
|
|
|
+ <a href="{{ url_for('forum.edit_post', post_id=post.id) }}" class="btn btn-link fa fa-pencil" data-placement="top" title="" data-original-title="Edit this post"></a>
|
|
|
{% endif %}
|
|
|
{% if topic.first_post_id == post.id %}
|
|
|
{% if current_user|delete_topic(topic) %}
|
|
|
<form class="inline-form" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
|
|
- <button class="btn btn-link">{% trans %}Delete{% endtrans %}</button> |
|
|
|
+ <button class="btn btn-link fa fa-trash" data-placement="top" title="" data-original-title="Delete this topic"></button>
|
|
|
</form>
|
|
|
{% endif %}
|
|
|
{% else %}
|
|
|
{% if current_user|delete_post(post) %}
|
|
|
+ <!-- Delete Post -->
|
|
|
<form class="inline-form" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
|
|
- <button class="btn btn-link">{% trans %}Delete{% endtrans %}</button> |
|
|
|
+ <button class="btn btn-link fa fa-trash post-delete" data-placement="top" title="" data-original-title="Delete this post"></button>
|
|
|
</form>
|
|
|
{% endif %}
|
|
|
+
|
|
|
{% endif %}
|
|
|
- {% if current_user|post_reply(topic) %}
|
|
|
- <!-- Quick quote -->
|
|
|
- <a href="#" class="quote_btn" data-post-id="{{ post.id }}">{% trans %}Quote{% endtrans %}</a> |
|
|
|
- <!-- Full quote/reply -->
|
|
|
- <a href="{{ url_for('forum.reply_post', topic_id=topic.id, post_id=post.id) }}">{% trans %}Reply{% endtrans %}</a>
|
|
|
+
|
|
|
+ {% if current_user.is_authenticated() %}
|
|
|
+ <!-- Report post -->
|
|
|
+ <a href="{{ url_for('forum.report_post', post_id=post.id) }}" onclick="window.open(this.href, 'wio_window','width=500,height=500'); return false;" class="btn btn-link fa fa-flag" data-placement="top" title="Report this post" data-original-title="Report this post"></a>
|
|
|
{% endif %}
|
|
|
- </span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
{% endfor %}
|
|
|
|
|
|
</div>
|
|
@@ -159,26 +141,27 @@
|
|
|
|
|
|
{% include theme('forum/topic_controls.html') %}
|
|
|
{% from theme("macros.html") import render_field, render_quickreply, render_submit_field %}
|
|
|
-{% if form %}
|
|
|
+ {% if form %}
|
|
|
|
|
|
- <form class="form" action="#" method="post">
|
|
|
- {{ form.hidden_tag() }}
|
|
|
+ <form class="form" action="#" method="post">
|
|
|
+ {{ form.hidden_tag() }}
|
|
|
|
|
|
- <div id="quickpost" class="post post-bg">
|
|
|
- <div class="post-quickreply col-md-12 col-sm-12 col-xs-12">
|
|
|
- {{ render_quickreply(form.content, div_class="new-message", rows=7, cols=75, placeholder="", **{'data-provide': 'markdown', 'data-autofocus': 'false', 'id': 'quickreply-editor'}) }}
|
|
|
- </div>
|
|
|
- <div class="new-post-submit">
|
|
|
- <div class="post-options pull-left">
|
|
|
- <span class="label label-info">Markdown</span>
|
|
|
- <a class="label label-success" href="#">help</a> <!-- TODO: add markdown cheat sheet -->
|
|
|
- <a class="label label-success" href="#">emojis</a> <!-- TODO: add emoji cheat sheet -->
|
|
|
+ <div id="quickpost">
|
|
|
+ <div class="editor col-md-12 col-sm-12 col-xs-12">
|
|
|
+ {{ render_quickreply(form.content, div_class="new-message", rows=7, cols=75, placeholder="", **{'data-provide': 'markdown', 'data-autofocus': 'false', 'id': 'quickreply-editor'}) }}
|
|
|
+ </div>
|
|
|
+ <div class="new-post-submit">
|
|
|
+ <div class="post-options pull-left">
|
|
|
+ <span class="label label-info">Markdown</span>
|
|
|
+ <a class="label label-success" href="#">help</a> <!-- TODO: add markdown cheat sheet -->
|
|
|
+ <a class="label label-success" href="#">emojis</a> <!-- TODO: add emoji cheat sheet -->
|
|
|
+ </div>
|
|
|
+ {{ render_submit_field(form.submit, input_class="btn btn-success pull-right") }}
|
|
|
</div>
|
|
|
- {{ render_submit_field(form.submit, input_class="btn btn-success pull-right") }}
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </form>
|
|
|
-{% endif %}
|
|
|
+ </form>
|
|
|
+ {% endif %}
|
|
|
+
|
|
|
</div>
|
|
|
{% endblock %}
|
|
|
|