+{% macro render_banners(package, current_user, topic_error, topic_error_lvl, similar_topics) -%}
+
+<div class="row mb-4">
+ <span class="col">
+ State: <strong>{{ package.state.value }}</strong>
+ </span>
+
+ {% for state in package.getNextStates(current_user) %}
+ <form class="col-auto" method="post" action="{{ package.getSetStateURL(state) }}">
+ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+ <input class="btn btn-sm btn-secondary" type="submit" value="{{ state.verb() }}" />
+ </form>
+ {% endfor %}
+</div>
+
+{% set level = "warning" %}
+{% if package.releases.count() == 0 %}
+ {% set message %}
+ <h4 class="alert-heading">Release Required</h4>
+ {% if package.checkPerm(current_user, "MAKE_RELEASE") %}
+ <p>You need to create a release before this package can be approved.</p>
+ <p>
+ A release is a single downloadable version of your {{ package.type.value | lower }}.
+ You need to create releases even if you use a rolling release development cycle,
+ as Minetest needs them to check for updates.
+ </p>
+ <a class="btn" href="{{ package.getCreateReleaseURL() }}">Create Release</a>
+ {% else %}
+ A release is required before this package can be approved.
+ {% endif %}
+ {% endset %}
+{% elif (package.type == package.type.GAME or package.type == package.type.TXP) and package.screenshots.count() == 0 %}
+ {% set message = "You need to add at least one screenshot." %}
+
+{% elif topic_error_lvl == "danger" %}
+{% elif package.state == package.state.READY_FOR_REVIEW and ("Other" in package.license.name or "Other" in package.media_license.name) %}
+ {% set message = "Please wait for the license to be added to CDB." %}
+
+{% else %}
+ {% set level = "info" %}
+ {% set message %}
+ {% if package.screenshots.count() == 0 %}
+ <b>You should add at least one screenshot, but this isn't required.</b><br />
+ {% endif %}
+
+ {% if package.state == package.state.READY_FOR_REVIEW %}
+ {% if not package.getDownloadRelease() %}
+ Please wait for the release to be approved.
+ {% elif package.checkPerm(current_user, "APPROVE_NEW") %}
+ You can now approve this package if you're ready.
+ {% else %}
+ Please wait for the package to be approved.
+ {% endif %}
+ {% else %}
+ {% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
+ You can now submit this package for approval if you're ready.
+ {% else %}
+ This package can be submitted for approval when ready.
+ {% endif %}
+ {% endif %}
+ {% endset %}
+{% endif %}
+
+{% if message %}
+ <div class="alert alert-{{ level }}">
+ <span class="icon_message"></span>
+
+ {{ message | safe }}
+
+ <div style="clear: both;"></div>
+ </div>
+{% endif %}
+
+{% if topic_error %}
+ <div class="alert alert-{{ topic_error_lvl }}">
+ <span class="icon_message"></span>
+ {{ topic_error | safe }}
+ <div style="clear: both;"></div>
+ </div>
+{% endif %}
+
+{% if similar_topics %}
+ <div class="alert alert-warning">
+ Please make sure that this package has the right to
+ the name '{{ package.name }}'.
+ See the
+ <a href="/policy_and_guidance/">Inclusion Policy</a>
+ for more info.
+ </div>
+{% endif %}
+
+{% if not package.review_thread and (package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW")) %}
+ <div class="alert alert-secondary">
+ <a class="float-right btn btn-sm btn-secondary" href="{{ url_for('threads.new', pid=package.id, title='Package approval comments') }}">Open Thread</a>
+
+ Privately ask a question or give feedback
+ <div style="clear:both;"></div>
+ </div>
+{% endif %}
+
+{% endmacro %}