123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- {% extends "sora/layout.html" %}
- {% load i18n %}
- {% load url from future %}
- {% import "_forms.html" as form_theme with context %}
- {% import "sora/editor.html" as editor with context %}
- {% import "sora/macros.html" as macros with context %}
- {% block title %}{{ macros.page_title(title=thread.name,parent=forum.name,page=pagination['page']) }}{% endblock %}
- {% block breadcrumb %}{{ super() }} <span class="divider">/</span></li>
- {% for parent in parents %}
- <li><a href="{{ parent.type|url(forum=forum.pk, slug=forum.slug) }}">{{ parent.name }}</a> <span class="divider">/</span></li>
- {% endfor %}
- <li class="active">{{ thread.name }}
- {%- endblock %}
- {% block content %}
- <div class="page-header">
- <ul class="breadcrumb">
- {{ self.breadcrumb() }}</li>
- </ul>
- <h1>{{ thread.name }}</h1>
- <ul class="unstyled thread-info">
- {% if thread.moderated %}<li><i class="icon-eye-close"></i> {% trans %}Not Reviewed{% endtrans %}</li>{% endif %}
- <li><i class="icon-time"></i> {{ thread.last|reltimesince }}</li>
- <li><i class="icon-user"></i> {% if thread.start_poster_id %}<a href="{% url 'user' user=thread.start_poster_id, username=thread.start_poster_slug %}">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}</li>
- <li><i class="icon-comment"></i> {% if thread.replies > 0 -%}
- {% trans count=thread.replies, replies=thread.replies|intcomma %}One reply{% pluralize %}{{ replies }} replies{% endtrans %}
- {%- else -%}
- {% trans %}No replies{% endtrans %}
- {%- endif %}</li>
- </ul>
- </div>
- {% if message %}{{ macros.draw_message(message) }}{% endif %}
- <div class="list-nav">
- {{ pager() }}
- {% if user.is_authenticated() %}
- <ul class="nav nav-pills pull-right">
- <li class="info"><a href="{% url 'thread_new' forum=forum.pk, slug=forum.slug %}"><i class="icon-ok"></i> {% trans %}Watch Thread{% endtrans %}</a></li>{% if acl.threads.can_reply(forum, thread) %}
- <li class="primary"><a href="{% url 'thread_reply' thread=thread.pk, slug=thread.slug %}"><i class="icon-plus"></i> {% trans %}Reply{% endtrans %}</a></li>{% endif %}
- </ul>
- {% endif %}
- </div>
- <div class="posts-list">
- {% for post in posts %}
- {% if post.message %}{{ macros.draw_message(post.message) }}{% endif %}
- {% if post.deleted and not acl.threads.can_see_deleted_posts(forum) %}
- <div id="post-{{ post.pk }}" class="well well-post well-post-deleted{% if post.user and post.user.rank and post.user.rank.style %} {{ post.user.rank.style }}{% endif %}">
- <div class="post-author">
- <div class="post-bit">
- {% if post.user_id %}
- <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}" class="lead">{{ post.user.username }}</a>
- {% else %}
- <span class="lead">{{ post.user_name }}</span>
- {% endif %}
- </div>
- </div>
- <div class="post-extra">
- <a href="{% if pagination['page'] > 1 -%}
- {% url 'thread' thread=thread.pk, slug=thread.slug, page=pagination['page'] %}
- {%- else -%}
- {% url 'thread' thread=thread.pk, slug=thread.slug %}
- {%- endif %}#post-{{ post.pk }}" class="post-perma pull-right tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index }}</a>
- </div>
- <div class="post-content">
- {% trans user=edit_user(post), date=post.edit_date|reltimesince|low %}{{ user }} has deleted this reply {{ date }}{% endtrans %}
- </div>
- </div>
- {% else %}
- <div id="post-{{ post.pk }}" class="well well-post{% if post.user and post.user.rank and post.user.rank.style %} {{ post.user.rank.style }}{% endif %}">
- <div class="post-author">
- <img src="{% if post.user_id %}{{ post.user.get_avatar(80) }}{% else %}{{ macros.avatar_guest(80) }}{% endif %}" alt="" class="avatar-normal">
- <div class="post-bit">
- {% if post.user_id %}
- <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}" class="lead">{{ post.user.username }}</a>
- {% if post.user.get_title() %}<p class="user-title">{{ _(post.user.get_title()) }}</p>{% endif %}
- {% else %}
- <span class="lead">{{ post.user_name }}</span>
- <p class="user-title">{% trans %}Unregistered{% endtrans %}</p>
- {% endif %}
- <p class="post-date">{{ post.date|reltimesince|low }}</p>
- </div>
- </div>
- <div class="post-extra">
- {% if user.is_authenticated() and posts_form %}
- <label class="checkbox post-checkbox"><input form="posts_form" name="{{ posts_form['list_items']['html_name'] }}" type="checkbox" class="checkbox-member" value="{{ post.pk }}"{% if posts_form['list_items']['has_value'] and ('' ~ post.pk) in posts_form['list_items']['value'] %} checked="checked"{% endif %}></label>
- {% endif %}
- <a href="{% if pagination['page'] > 1 -%}
- {% url 'thread' thread=thread.pk, slug=thread.slug, page=pagination['page'] %}
- {%- else -%}
- {% url 'thread' thread=thread.pk, slug=thread.slug %}
- {%- endif %}#post-{{ post.pk }}" class="post-perma pull-right tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index }}</a>
- {% if not post.is_read %}
- <span class="label label-warning pull-right">
- {% trans %}New{% endtrans %}
- </span>
- {% endif %}
- {% if post.moderated %}
- <span class="label label-purple pull-right">
- {% trans %}Unreviewed{% endtrans %}
- </span>
- {% endif %}
- {% if post.reported %}
- <span class="label label-important pull-right">
- {% trans %}Reported{% endtrans %}
- </span>
- {% endif %}
- {% if post.deleted %}
- <span class="label label-inverse pull-right">
- {% trans %}Deleted{% endtrans %}
- </span>
- {% endif %}
- {% if post.protected and acl.threads.can_protect(forum) %}
- <span class="label label-info pull-right">
- {% trans %}Protected{% endtrans %}
- </span>
- {% endif %}
- </div>
- <div class="post-content">
- <div class="markdown">
- {{ post.post_preparsed|safe }}
- </div>
- {% if post.user.signature %}
- <div class="post-foot">
- {# <p class='lead'><a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}" class="lead">{{ post.user.username }}</a>, {{ post.date|reltimesince|low }}</p> #}
- {% if post.user.signature %}
- <div class="signature">
- <div class="markdown">
- {{ post.user.signature_preparsed|safe }}
- </div>
- </div>
- {% endif %}
- </div>
- {% endif %}
- </div>
- <div class="post-nav">
- {% if post.edits %}
- {% if acl.threads.can_see_changelog(user, forum, post) %}
- <a href="{% url 'changelog' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="changelog tooltip-bottom" title="{% trans %}Show changelog{% endtrans %}">{% trans count=post.edits %}One edit{% pluralize %}{{ count }} edits{% endtrans %}</a>
- {% else %}
- <span class="changelog">{% trans count=post.edits %}One edit{% pluralize %}{{ count }} edits{% endtrans %}</span>
- {% endif %}
- {% endif %}
- {% if user.is_authenticated() %}
- <ul class="nav nav-pills pull-right">
- {% if 1 == 2 %}
- <li><a href="#"><i class="icon-info-sign"></i> {% trans %}Info{% endtrans %}</a></li>
- {% endif %}
- {% if post.pk == thread.start_post_id %}
- {% if acl.threads.can_delete_thread(user, forum, thread, post) == 2 -%}
- <li class="tooltip-top" title="{% trans %}Delete this thread for good{% endtrans %}"><form action="{% url 'thread_delete' thread=thread.pk, slug=thread.slug %}" method="post"><button type="submit" class="btn danger"><i class="icon-remove"></i></button><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"></form></li>{% endif %}
- {% if not post.deleted and acl.threads.can_delete_thread(user, forum, thread, post) -%}
- <li><form action="{% url 'thread_hide' thread=thread.pk, slug=thread.slug %}" method="post"><button type="submit" class="btn danger"><i class="icon-trash"></i> {% trans %}Delete{% endtrans %}</button><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"></form></li>{% endif %}
- {% elif post.pk != thread.start_post_id and acl.threads.can_delete_post(user, forum, thread, post) %}
- {% if acl.threads.can_delete_post(user, forum, thread, post) == 2 -%}
- <li class="tooltip-top" title="{% trans %}Delete this reply for good{% endtrans %}"><form action="{% url 'post_delete' thread=thread.pk, slug=thread.slug, post=post.pk %}" method="post"><button type="submit" class="btn danger"><i class="icon-remove"></i></button><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"></form></li>{% endif %}
- {% if not post.deleted and acl.threads.can_delete_post(user, forum, thread, post) -%}
- <li><form action="{% url 'post_hide' thread=thread.pk, slug=thread.slug, post=post.pk %}" method="post"><button type="submit" class="btn danger"><i class="icon-trash"></i> {% trans %}Delete{% endtrans %}</button><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"></form></li>{% endif %}
- {% endif %}
- {% if acl.threads.can_edit_thread(user, forum, thread, post) and thread.start_post_id == post.pk -%}
- <li><a href="{% url 'thread_edit' thread=thread.pk, slug=thread.slug %}"><i class="icon-edit"></i> {% trans %}Edit{% endtrans %}</a></li>
- {% elif acl.threads.can_edit_reply(user, forum, thread, post) %}
- <li><a href="{% url 'post_edit' thread=thread.pk, slug=thread.slug, post=post.pk %}"><i class="icon-edit"></i> {% trans %}Edit{% endtrans %}</a></li>
- {%- endif %}
- {% if acl.threads.can_reply(forum, thread) %}<li><a href="{% url 'thread_reply' thread=thread.pk, slug=thread.slug, quote=post.pk %}"><i class="icon-comment"></i> {% trans %}Reply{% endtrans %}</a></li>{% endif %}
- </ul>
- {% endif %}
- </div>
- </div>
- {% endif %}
- {% if post.checkpoint_set.all() %}
- <div class="post-checkpoints">
- {% for checkpoint in post.checkpoint_set.all() %}
- <div class="checkpoint">
- <hr>
- <span>
- {%- if checkpoint.action == 'limit' -%}
- <i class="icon-lock"></i> {% trans %}This thread has reached its post limit and has been closed.{% endtrans %}
- {%- elif checkpoint.action == 'accepted' -%}
- <i class="icon-ok"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} accepted this thread {{ date }}{% endtrans %}
- {%- elif checkpoint.action == 'closed' -%}
- <i class="icon-lock"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} closed this thread {{ date }}{% endtrans %}
- {%- elif checkpoint.action == 'opened' -%}
- <i class="icon-lock"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} opened this thread {{ date }}{% endtrans %}
- {%- elif checkpoint.action == 'deleted' -%}
- <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} deleted this thread {{ date }}{% endtrans %}
- {%- elif checkpoint.action == 'undeleted' -%}
- <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} restored this thread {{ date }}{% endtrans %}
- {%- endif -%}
- </span>
- </div>
- {% endfor %}
- </div>
- {% endif %}
- {% endfor %}
- </div>
- {% if user.is_authenticated() and (thread_form or posts_form) %}
- <div class="form-actions table-footer mod-actions">
- {% if thread_form%}
- <form id="thread_form" class="form-inline pull-left" action="{% url 'thread' slug=thread.slug, thread=thread.id, page=pagination['page'] %}" method="POST">
- <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
- <input type="hidden" name="origin" value="thread_form">
- {{ form_theme.input_select(thread_form['thread_action'],width=3) }}
- <button type="submit" class="btn btn-primary">{% trans %}Go{% endtrans %}</button>
- </form>
- {% endif %}
- {% if posts_form%}
- <form id="posts_form" class="form-inline pull-right" action="{% url 'thread' slug=thread.slug, thread=thread.id, page=pagination['page'] %}" method="POST">
- <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
- <input type="hidden" name="origin" value="posts_form">
- {{ form_theme.input_select(posts_form['list_action'],width=3) }}
- <button type="submit" class="btn btn-primary">{% trans %}Go{% endtrans %}</button>
- </form>
- {% endif %}
- </div>
- {% endif %}
- <div class="list-nav last">
- {{ pager(false) }}
- {% if user.is_authenticated() and acl.threads.can_reply(forum, thread) %}
- <ul class="nav nav-pills pull-right">
- <li class="primary"><a href="{% url 'thread_reply' thread=thread.pk, slug=thread.slug %}"><i class="icon-plus"></i> {% trans %}Reply{% endtrans %}</a></li>
- </ul>
- {% endif %}
- </div>
- {% if user.is_authenticated() and acl.threads.can_reply(forum, thread) %}
- <div class="quick-reply">
- <form action="{% url 'thread_reply' thread=thread.pk, slug=thread.slug %}" method="post">
- <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
- <input type="hidden" name="quick_reply" value="1">
- <img src="{{ user.get_avatar() }}" alt="{% trans %}Your Avatar{% endtrans %}" class="avatar-big">
- <div class="arrow"></div>
- {{ editor.editor(quick_reply.post, _('Post Reply')) }}
- </form>
- </div>
- {% endif %}
- {% endblock %}
- {% macro pager(extra=true) %}
- <ul class="pager pull-left">
- {%- if pagination['prev'] > 1 %}<li><a href="{% url 'thread' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first page{% endtrans %}"><i class="icon-chevron-left"></i> {% trans %}First{% endtrans %}</a></li>{% endif -%}
- {%- if pagination['prev'] > 0 %}<li><a href="{%- if pagination['prev'] > 1 %}{% url 'thread' slug=thread.slug, thread=thread.id, page=pagination['prev'] %}{% else %}{% url 'thread' slug=thread.slug, thread=thread.id %}{% endif %}" class="tooltip-top" title="{% trans %}Older Posts{% endtrans %}"><i class="icon-chevron-left"></i></a></li>{% endif -%}
- {%- if pagination['next'] > 0 %}<li><a href="{% url 'thread' slug=thread.slug, thread=thread.id, page=pagination['next'] %}" class="tooltip-top" title="{% trans %}Newest Posts{% endtrans %}"><i class="icon-chevron-right"></i></a></li>{% endif -%}
- {%- if pagination['next'] > 0 and pagination['next'] < pagination['total'] %}<li><a href="{% url 'thread' slug=thread.slug, thread=thread.id, page=pagination['total'] %}" class="tooltip-top" title="{% trans %}Go to last page{% endtrans %}">{% trans %}Last{% endtrans %} <i class="icon-chevron-right"></i></a></li>{% endif -%}
- <li class="count">
- {%- trans current_page=pagination['page'], pages=pagination['total'] -%}
- Page {{ current_page }} of {{ pages }}
- {%- endtrans -%}
- </li>
- {% if extra and user.is_authenticated() %}
- {% if not is_read %}<li class="unread"><a href="{% url 'thread_new' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first unread{% endtrans %}"><i class="icon-star"></i> {% trans %}First Unread{% endtrans %}</a></li>{% endif %}
- {% if thread.replies_moderated > 0 and acl.threads.can_approve(forum) %}<li class="moderated"><a href="{% url 'thread_moderated' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first post awaiting review{% endtrans %}"><i class="icon-eye-close"></i> {% trans %}First Unreviewed{% endtrans %}</a></li>{% endif %}
- {% if thread.replies_reported > 0 and acl.threads.can_mod_posts(thread) %}<li class="reported"><a href="{% url 'thread_reported' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first reported post{% endtrans %}"><i class="icon-fire"></i> {% trans %}First Reported{% endtrans %}</a></li>{% endif %}
- {% endif %}
- </ul>
- {% endmacro %}
- {% macro checkpoint_user(checkpoint) -%}
- {%- if checkpoint.user_id -%}
- {{ ('<a href="' ~ 'user'|url(user=checkpoint.user_id, username=checkpoint.user_slug) ~ '">')|safe ~ (checkpoint.user_name) ~ ("</a>")|safe }}
- {%- else -%}
- <strong>{{ checkpoint.user_name }}</strong>
- {%- endif -%}
- {%- endmacro %}
- {% macro edit_user(post) -%}
- {%- if post.edit_user_id -%}
- {{ ('<a href="' ~ 'user'|url(user=post.edit_user_id, username=post.edit_user_slug) ~ '">')|safe ~ (post.edit_user_name) ~ ("</a>")|safe }}
- {%- else -%}
- <strong>{{ post.edit_user_name }}</strong>
- {%- endif -%}
- {%- endmacro %}
- {% block javascripts -%}
- {{ super() }}
- {%- if user.is_authenticated() and acl.threads.can_start_threads(forum) %}
- <script type="text/javascript">
- $(function () {
- $('#thread_form').submit(function() {
- if ($('#id_thread_action').val() == 'hard') {
- var decision = confirm("{% trans %}Are you sure you want to delete this thread? This action is not reversible!{% endtrans %}");
- return decision;
- }
- return true;
- });
- $('#posts_form').submit(function() {
- if ($('.post-checkbox[]:checked').length == 0) {
- alert("{% trans %}You have to select at least one post.{% endtrans %}");
- return false;
- }
- if ($('#id_list_action').val() == 'merge') {
- if ($('.post-checkbox[]:checked').length < 2) {
- alert("{% trans %}You have to select at least two posts you want to merge.{% endtrans %}");
- return false;
- }
- var decision = confirm("{% trans %}Are you sure you want to merge selected posts? This action is not reversible!{% endtrans %}");
- return decision;
- }
- if ($('#id_list_action').val() == 'hard') {
- var decision = confirm("{% trans %}Are you sure you want to delete selected posts? This action is not reversible!{% endtrans %}");
- return decision;
- }
- return true;
- });
- });
- </script>{% endif %}
- {%- endblock %}
|