topic.html 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. {% extends theme("layout.html") %}
  2. {% set page_title = _("%(title)s - Topic", title=topic.title) %}
  3. {% set active_forum_nav=True %}
  4. {% block css %}
  5. {{ super() }}
  6. <link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap-markdown.min.css') }}">
  7. {% endblock %}
  8. {% block content %}
  9. {% from theme('macros.html') import render_pagination, form_field %}
  10. <ol class="breadcrumb">
  11. <li><a href="{{ url_for('forum.index') }}">{% trans %}Forum{% endtrans %}</a></li>
  12. <li><a href="{{ topic.forum.category.url }}">{{ topic.forum.category.title }}</a></li>
  13. <li><a href="{{ topic.forum.url }}">{{ topic.forum.title }}</a></li>
  14. <li class="active">{{ topic.title }}</li>
  15. </ol>
  16. {% include 'forum/topic_controls.html' %}
  17. <table class="table table-bordered">
  18. <tbody>
  19. {% for post, user in posts.items %}
  20. <tr>
  21. <td >
  22. <span class="pull-right">
  23. <strong>#{%- if posts.page == 1 -%} {{ loop.index }} {%- else -%} {{ loop.index + (posts.page - 1) * flaskbb_config["POSTS_PER_PAGE"] }} {%- endif -%}</strong>
  24. </span>
  25. <span class="pull-left">
  26. <a href="
  27. {%- if posts.page > 1 -%}
  28. {{ topic.url }}?page={{ posts.page }}#pid{{ post.id }}
  29. {%- else -%}
  30. {{ topic.url }}#pid{{ post.id }}
  31. {%- endif -%}
  32. ">{{ post.date_created|format_date('%d %B %Y') }}</a>
  33. {% if post.user_id and post.date_modified %}
  34. <small>
  35. ({% trans %}Last modified{% endtrans %}: {{ post.date_modified|format_date }} {% trans %}by{% endtrans %}
  36. <a href="{{ url_for('user.profile', username=post.modified_by) }}">
  37. {{ post.modified_by }}
  38. </a>.)
  39. </small>
  40. {% endif %}
  41. </span>
  42. </td>
  43. </tr>
  44. <tr>
  45. <td>
  46. <table class="table table-borderless">
  47. <tr>
  48. {% if post.user_id %}
  49. {% if user.avatar %}
  50. <td width="1">
  51. <img src="{{ user.avatar }}" alt="Avatar" height="100" width="100">
  52. </td>
  53. {% endif %}
  54. <td>
  55. <a href="{{ user.url }}">
  56. <span style="font-weight:bold">{{ user.username }}</span> <!-- TODO: Implement userstyles -->
  57. </a>
  58. {%- if user|is_online %}
  59. <span class="label label-success">Online</span>
  60. {%- else %}
  61. <span class="label label-default">Offline</span>
  62. {%- endif %}
  63. <div class="profile primary-group">
  64. {{ user.primary_group.name }}
  65. </div>
  66. </td>
  67. <td class="pull-right">
  68. {% trans %}Posts{% endtrans %}: {{ user.post_count }}<br />
  69. {% trans %}Registered since{% endtrans %}: {{ user.date_joined|format_date('%b %d %Y') }}<br />
  70. </td>
  71. {% else %}
  72. <td>
  73. <strong>{{ post.username }}</strong>
  74. <br />
  75. {% trans %}Guest{% endtrans %}
  76. </td>
  77. {% endif %}
  78. </tr>
  79. </table>
  80. </td>
  81. </tr>
  82. <tr>
  83. <td>
  84. <div class="post_body" id="pid{{ post.id }}">
  85. {% autoescape false %}
  86. {{ post.content|markup }}
  87. <!-- Signature Begin -->
  88. {% if post.user_id and user.signature %}
  89. <div class="signature">
  90. <hr>
  91. {{ user.signature|markup }}
  92. </div>
  93. {% endif %}
  94. <!-- Signature End -->
  95. {% endautoescape %}
  96. </div>
  97. </td>
  98. </tr>
  99. <tr>
  100. <td>
  101. <span class="pull-left">
  102. {% if current_user.is_authenticated() and post.user_id and post.user_id != current_user.id %}
  103. <a href="{{ url_for('user.new_message', to_user=post.user.username) }}">{% trans %}PM{% endtrans %}</a>
  104. {% endif %}
  105. {% if user.website %}
  106. {% if current_user.is_authenticated() %}| {% endif %}<a href="{{ user.website }}">{% trans %}Website{% endtrans %}</a>
  107. {% endif %}
  108. </span>
  109. <span class="pull-right">
  110. {% if current_user.is_authenticated() %}
  111. <a href="{{ url_for('forum.report_post', post_id=post.id) }}" onclick="window.open(this.href, 'wio_window','width=500,height=500'); return false;">
  112. {% trans %}Report{% endtrans %}
  113. </a> |
  114. {% endif %}
  115. {% if current_user|edit_post(post) %}
  116. <a href="{{ url_for('forum.edit_post', post_id=post.id) }}">{% trans %}Edit{% endtrans %}</a> |
  117. {% endif %}
  118. {% if topic.first_post_id == post.id %}
  119. {% if current_user|delete_topic(topic) %}
  120. <form class="inline-form" method="post" action="{{ url_for('forum.delete_topic', topic_id=topic.id, slug=topic.slug) }}">
  121. <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  122. <button class="btn btn-link">{% trans %}Delete{% endtrans %}</button> |
  123. </form>
  124. {% endif %}
  125. {% else %}
  126. {% if current_user|delete_post(post) %}
  127. <form class="inline-form" method="post" action="{{ url_for('forum.delete_post', post_id=post.id) }}">
  128. <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  129. <button class="btn btn-link">{% trans %}Delete{% endtrans %}</button> |
  130. </form>
  131. {% endif %}
  132. {% endif %}
  133. {% if current_user|post_reply(topic) %}
  134. <!-- Quick quote -->
  135. <a href="#" class="quote_btn" data-post-id="{{ post.id }}">{% trans %}Quote{% endtrans %}</a> |
  136. <!-- Full quote/reply -->
  137. <a href="{{ url_for('forum.reply_post', topic_id=topic.id, post_id=post.id) }}">{% trans %}Reply{% endtrans %}</a>
  138. {% endif %}
  139. </span>
  140. </td>
  141. </tr>
  142. {% endfor %}
  143. </tbody>
  144. </table>
  145. {% include 'forum/topic_controls.html' %}
  146. {% if form %}
  147. {% from "macros.html" import render_field, render_submit_field %}
  148. <form class="form" action="#" method="post">
  149. {{ form.hidden_tag() }}
  150. {{ render_field(form.content, div_class="col-sm-12", rows="10", placeholder="", **{'data-provide': 'markdown', 'data-autofocus': 'true', 'id': 'quickreply-editor'}) }}
  151. <div class="col-sm-12" style="padding-top: 5px">
  152. {{ render_submit_field(form.submit) }}
  153. </div>
  154. </form>
  155. {% endif %}
  156. {% endblock %}
  157. {% block scripts %}
  158. <script type="text/javascript" src="{{ url_for('static', filename='js/topic.js') }}"></script>
  159. <script type="text/javascript" src="{{ url_for('static', filename='js/marked.js') }}"></script>
  160. <script type="text/javascript" src="{{ url_for('static', filename='js/bootstrap-markdown.js') }}"></script>
  161. {% endblock %}