{% extends "base.html" %} {% block title %} {%- if thread.package -%} {%- if thread.review -%} {%- if thread.review.rating > 3 -%} {%- set rating = "👍" -%} {%- elif thread.review.rating < 3 -%} {%- set rating = "👎" -%} {%- else -%} {%- set rating = "-" -%} {%- endif -%} {%- endif -%} {{ rating }} {{ thread.title }} - {{ thread.package.title }} {%- else -%} {{ thread.title }} {%- endif -%} {% endblock %} {% block description -%} {{ thread.get_description() }} {%- endblock %} {% block headextra %} <meta name="og:image" content="{{ thread.author.get_profile_pic_url() }}"/> {% endblock %} {% block scriptextra %} {% if current_user.is_authenticated %} <script src="/static/js/quick_review_voting.js?v=2"></script> {% endif %} {% from "macros/forms.html" import easymde_scripts %} {{ easymde_scripts() }} {% endblock %} {% block content %} {% if current_user.is_authenticated %} {% if current_user in thread.watchers %} <form method="post" action="{{ thread.get_unsubscribe_url() }}" class="float-end"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <input type="submit" class="btn btn-primary" value="{{ _('Unsubscribe') }}" /> </form> {% else %} <form method="post" action="{{ thread.get_subscribe_url() }}" class="float-end"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <input type="submit" class="btn btn-primary" value="{{ _('Subscribe') }}" /> </form> {% endif %} {% if thread.check_perm(current_user, "DELETE_THREAD") %} <a href="{{ url_for('threads.delete_thread', id=thread.id) }}" class="float-end me-2 btn btn-danger">{{ _('Delete') }}</a> {% endif %} {% if thread.review and thread.review.check_perm(current_user, "DELETE_REVIEW") and current_user.username != thread.review.author.username %} <form method="post" action="{{ thread.review.get_delete_url() }}" class="float-end me-2"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <input type="submit" class="btn btn-danger" value="{{ _('Convert to Thread') }}" /> </form> {% endif %} {% if thread.check_perm(current_user, "LOCK_THREAD") %} {% if thread.locked %} <form method="post" action="{{ url_for('threads.set_lock', id=thread.id, lock=0) }}" class="float-end me-2"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <input type="submit" class="btn btn-secondary" value="{{ _('Unlock') }}" /> </form> {% else %} <form method="post" action="{{ url_for('threads.set_lock', id=thread.id, lock=1) }}" class="float-end me-2"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <input type="submit" class="btn btn-secondary" value="{{ _('Lock') }}" /> </form> {% endif %} {% endif %} {% endif %} {% if current_user == thread.author and thread.review %} <a class="btn btn-primary ms-1 float-end me-2" href="{{ thread.review.package.get_url('packages.review') }}"> <i class="fas fa-pen"></i> {{ _("Edit Review") }} </a> {% endif %} <h1> {% if thread.review %} {% if thread.review.rating > 3 %} <i class="fas fa-thumbs-up me-2" style="color:#6f6;"></i> {% elif thread.review.rating < 3 %} <i class="fas fa-thumbs-down me-2" style="color:#f66;"></i> {% else %} <i class="fas fa-minus me-2" style="color:#999"></i> {% endif %} {% endif %} {% if thread.private %}🔒 {% endif %}{{ thread.title }} </h1> {% if thread.package %} <p> {{ _("Package") }}: <a href="{{ thread.package.get_url('packages.view') }}">{{ thread.package.title }}</a> </p> {% endif %} {% if thread.private %} <aside class="row"> <div class="col-md-9"> <i> {{ _("This thread is only visible to its creator, package maintainers, users of Approver rank or above, and @mentioned users.") }} </i> </div> <div class="col-md-3"> <div class="d-flex flex-row justify-content-end flex-wrap align-items-center" style="gap: 0.5em;"> <span class="text-muted me-2" title="{{ _('This thread is visible to the following users') }}"> {{ _("Visible to:") }} </span> {% for viewer in thread.get_visible_to() %} <a href="{{ url_for('users.profile', username=viewer.username) }}" title="{{ viewer.display_name }}"> <img style="max-height: 2em;" src="{{ viewer.get_profile_pic_url() }}" loading="lazy" alt="{{ viewer.display_name }}"> </a> {% endfor %} <a href="{{ url_for('users.list_all') }}" title="{{ _('Plus approvers and editors') }}"> + <i class="fas fa-user-check"></i> </a> </div> </div> </aside> {% endif %} {% from "macros/threads.html" import render_thread %} {{ render_thread(thread, current_user, form) }} {% endblock %}