Update to Bootstrap v5
This commit is contained in:
parent
14fd30c4f4
commit
b652cfd857
|
@ -145,7 +145,7 @@ class User(db.Model, UserMixin):
|
||||||
github_access_token = db.Column(db.String(50), nullable=True, server_default=None)
|
github_access_token = db.Column(db.String(50), nullable=True, server_default=None)
|
||||||
|
|
||||||
# User email information
|
# User email information
|
||||||
email = db.Column(db.String(255), nullable=True, unique=True)
|
email = db.Column(db.String(320), nullable=True, unique=True)
|
||||||
email_confirmed_at = db.Column(db.DateTime(), nullable=True, server_default=None)
|
email_confirmed_at = db.Column(db.DateTime(), nullable=True, server_default=None)
|
||||||
|
|
||||||
locale = db.Column(db.String(10), nullable=True, default=None)
|
locale = db.Column(db.String(10), nullable=True, default=None)
|
||||||
|
@ -291,7 +291,7 @@ class User(db.Model, UserMixin):
|
||||||
class UserEmailVerification(db.Model):
|
class UserEmailVerification(db.Model):
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
|
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
|
||||||
email = db.Column(db.String(100), nullable=False)
|
email = db.Column(db.String(320), nullable=False)
|
||||||
token = db.Column(db.String(32), nullable=True)
|
token = db.Column(db.String(32), nullable=True)
|
||||||
user = db.relationship("User", foreign_keys=[user_id], back_populates="email_verifications")
|
user = db.relationship("User", foreign_keys=[user_id], back_populates="email_verifications")
|
||||||
is_password_reset = db.Column(db.Boolean, nullable=False, default=False)
|
is_password_reset = db.Column(db.Boolean, nullable=False, default=False)
|
||||||
|
@ -300,7 +300,7 @@ class UserEmailVerification(db.Model):
|
||||||
|
|
||||||
class EmailSubscription(db.Model):
|
class EmailSubscription(db.Model):
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
email = db.Column(db.String(100), nullable=False, unique=True)
|
email = db.Column(db.String(320), nullable=False, unique=True)
|
||||||
blacklisted = db.Column(db.Boolean, nullable=False, default=False)
|
blacklisted = db.Column(db.Boolean, nullable=False, default=False)
|
||||||
token = db.Column(db.String(32), nullable=True, default=None)
|
token = db.Column(db.String(32), nullable=True, default=None)
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -7,7 +7,7 @@ document.querySelectorAll(".video-embed").forEach(ele => {
|
||||||
ele.addEventListener("click", () => {
|
ele.addEventListener("click", () => {
|
||||||
ele.parentNode.classList.add("d-block");
|
ele.parentNode.classList.add("d-block");
|
||||||
ele.classList.add("embed-responsive");
|
ele.classList.add("embed-responsive");
|
||||||
ele.classList.add("embed-responsive-16by9");
|
ele.classList.add("embed-responsive-16x9");
|
||||||
ele.innerHTML = `
|
ele.innerHTML = `
|
||||||
<iframe title="YouTube video player" frameborder="0"
|
<iframe title="YouTube video player" frameborder="0"
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||||
|
|
|
@ -272,3 +272,7 @@ blockquote {
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 1rem !important;
|
||||||
|
}
|
||||||
|
|
|
@ -78,3 +78,15 @@
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0 0.75em;
|
margin: 0 0.75em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jumbotron {
|
||||||
|
padding: 4rem 2rem;
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
|
||||||
|
padding: 2rem 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
background-color: #303030;
|
||||||
|
border-radius: .3rem;
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if entry.url %}
|
{% if entry.url %}
|
||||||
<a class="float-right btn btn-primary" href="{{ entry.url }}">View</a>
|
<a class="float-end btn btn-primary" href="{{ entry.url }}">View</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h1>{{ entry.title }}</h1>
|
<h1>{{ entry.title }}</h1>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_license') }}">New License</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_license') }}">New License</a>
|
||||||
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.license_list') }}">Back to list</a>
|
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.license_list') }}">Back to list</a>
|
||||||
|
|
||||||
{% from "macros/forms.html" import render_field, render_checkbox_field, render_submit_field %}
|
{% from "macros/forms.html" import render_field, render_checkbox_field, render_submit_field %}
|
||||||
|
|
|
@ -5,7 +5,7 @@ Licenses
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_license') }}">{{ _("New License") }}</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_license') }}">{{ _("New License") }}</a>
|
||||||
|
|
||||||
<h1>{{ _("Licenses") }}</h1>
|
<h1>{{ _("Licenses") }}</h1>
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Licenses
|
||||||
{% for l in licenses %}
|
{% for l in licenses %}
|
||||||
<a class="list-group-item list-group-item-action"
|
<a class="list-group-item list-group-item-action"
|
||||||
href="{{ url_for('admin.create_edit_license', name=l.name) }}">
|
href="{{ url_for('admin.create_edit_license', name=l.name) }}">
|
||||||
<span class="float-right badge {% if l.is_foss %}badge-primary{% else %}badge-warning{% endif %} badge-pill">
|
<span class="float-end badge {% if l.is_foss %}bg-primary{% else %}bg-warning{% endif %} rounded-pill">
|
||||||
{{ l.is_foss and "Free" or "Non-free"}}
|
{{ l.is_foss and "Free" or "Non-free"}}
|
||||||
</span>
|
</span>
|
||||||
{{ l.name }}
|
{{ l.name }}
|
||||||
|
|
|
@ -26,14 +26,14 @@
|
||||||
<form method="post" action="" class="card-body">
|
<form method="post" action="" class="card-body">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<div class="row px-3">
|
<div class="row px-3">
|
||||||
<select name="action" class="custom-select col">
|
<select name="action" class="form-select col">
|
||||||
{% for id, action in actions.items() %}
|
{% for id, action in actions.items() %}
|
||||||
<option value="{{ id }}" {% if loop.first %}selected{% endif %}>
|
<option value="{{ id }}" {% if loop.first %}selected{% endif %}>
|
||||||
{{ action["title"] }}
|
{{ action["title"] }}
|
||||||
</option>
|
</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<input type="submit" value="Perform" class="col-sm-auto btn btn-primary ml-2" />
|
<input type="submit" value="Perform" class="col-sm-auto btn btn-primary ms-2" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -45,12 +45,12 @@
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="hidden" name="action" value="restore" />
|
<input type="hidden" name="action" value="restore" />
|
||||||
<div class="row px-3">
|
<div class="row px-3">
|
||||||
<select name="package" class="custom-select col">
|
<select name="package" class="form-select col">
|
||||||
{% for p in deleted_packages %}
|
{% for p in deleted_packages %}
|
||||||
<option value={{ p.id }}>{{ p.id}}) {{ p.title }} by {{ p.author.display_name }}</option>
|
<option value={{ p.id }}>{{ p.id}}) {{ p.title }} by {{ p.author.display_name }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<input type="submit" value="Restore" class="col-sm-auto btn btn-primary ml-2" />
|
<input type="submit" value="Restore" class="col-sm-auto btn btn-primary ms-2" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<form method="post" action="" class="card-body">
|
<form method="post" action="" class="card-body">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<div class="">
|
<div class="">
|
||||||
<select name="package" class="custom-select px-3" required>
|
<select name="package" class="form-select px-3" required>
|
||||||
<option disabled selected>-- please select --</option>
|
<option disabled selected>-- please select --</option>
|
||||||
{% for p in deleted_packages %}
|
{% for p in deleted_packages %}
|
||||||
<option value="{{ p.id }}">
|
<option value="{{ p.id }}">
|
||||||
|
@ -21,8 +21,8 @@
|
||||||
</select>
|
</select>
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
<input type="submit" name="submit" value="To Draft" class="col-sm-auto btn btn-warning" />
|
<input type="submit" name="submit" value="To Draft" class="col-sm-auto btn btn-warning" />
|
||||||
<input type="submit" name="submit" value="To Changes Needed" class="col-sm-auto btn btn-danger ml-2" />
|
<input type="submit" name="submit" value="To Changes Needed" class="col-sm-auto btn btn-danger ms-2" />
|
||||||
<input type="submit" name="submit" value="To Ready for Review" class="col-sm-auto btn btn-success ml-2" />
|
<input type="submit" name="submit" value="To Ready for Review" class="col-sm-auto btn btn-success ms-2" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_tag') }}">New Tag</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_tag') }}">New Tag</a>
|
||||||
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.tag_list') }}">Back to list</a>
|
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.tag_list') }}">Back to list</a>
|
||||||
|
|
||||||
{% from "macros/forms.html" import render_field, render_submit_field, render_checkbox_field %}
|
{% from "macros/forms.html" import render_field, render_submit_field, render_checkbox_field %}
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_tag') }}">{{ _("New Tag") }}</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_tag') }}">{{ _("New Tag") }}</a>
|
||||||
|
|
||||||
<h1>{{ _("Tags") }}</h1>
|
<h1>{{ _("Tags") }}</h1>
|
||||||
|
|
||||||
<p class="float-right">
|
<p class="float-end">
|
||||||
Sort by:
|
Sort by:
|
||||||
<a href="{{ url_set_query(sort='name') }}">Name</a> |
|
<a href="{{ url_set_query(sort='name') }}">Name</a> |
|
||||||
<a href="{{ url_set_query(sort='views') }}">Views</a>
|
<a href="{{ url_set_query(sort='views') }}">Views</a>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_version') }}">New Version</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_version') }}">New Version</a>
|
||||||
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.version_list') }}">Back to list</a>
|
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.version_list') }}">Back to list</a>
|
||||||
|
|
||||||
{% from "macros/forms.html" import render_field, render_submit_field %}
|
{% from "macros/forms.html" import render_field, render_submit_field %}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_version') }}">{{ _("New Version") }}</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_version') }}">{{ _("New Version") }}</a>
|
||||||
|
|
||||||
<h1>{{ _("Minetest Versions") }}</h1>
|
<h1>{{ _("Minetest Versions") }}</h1>
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_warning') }}">New Warning</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_warning') }}">New Warning</a>
|
||||||
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.warning_list') }}">Back to list</a>
|
<a class="btn btn-secondary mb-4" href="{{ url_for('admin.warning_list') }}">Back to list</a>
|
||||||
|
|
||||||
{% from "macros/forms.html" import render_field, render_submit_field %}
|
{% from "macros/forms.html" import render_field, render_submit_field %}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('admin.create_edit_warning') }}">{{ _("New Warning") }}</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('admin.create_edit_warning') }}">{{ _("New Warning") }}</a>
|
||||||
|
|
||||||
<h1>{{ _("Warnings") }}</h1>
|
<h1>{{ _("Warnings") }}</h1>
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if token %}
|
{% if token %}
|
||||||
<form class="float-right" method="POST" action="{{ url_for('api.delete_token', username=token.owner.username, id=token.id) }}">
|
<form class="float-end" method="POST" action="{{ url_for('api.delete_token', username=token.owner.username, id=token.id) }}">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||||
<input class="btn btn-danger" type="submit" value="{{ _('Delete') }}">
|
<input class="btn btn-danger" type="submit" value="{{ _('Delete') }}">
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block pane %}
|
{% block pane %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('api.create_edit_token', username=user.username) }}">{{ _("Create") }}</a>
|
<a class="btn btn-primary float-end" href="{{ url_for('api.create_edit_token', username=user.username) }}">{{ _("Create") }}</a>
|
||||||
<a class="btn btn-secondary mr-2 float-right" href="/help/api/">{{ _("API Documentation") }}</a>
|
<a class="btn btn-secondary me-2 float-end" href="/help/api/">{{ _("API Documentation") }}</a>
|
||||||
<h2 class="mt-0">{{ _("API Tokens") }}</h2>
|
<h2 class="mt-0">{{ _("API Tokens") }}</h2>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>{% block title %}title{% endblock %} - {{ config.USER_APP_NAME }}</title>
|
<title>{% block title %}title{% endblock %} - {{ config.USER_APP_NAME }}</title>
|
||||||
<link rel="stylesheet" type="text/css" href="/static/libs/bootstrap.min.css">
|
<link rel="stylesheet" type="text/css" href="/static/libs/bootstrap.min.css?v=2">
|
||||||
<link rel="stylesheet" type="text/css" href="/static/custom.css?v=34">
|
<link rel="stylesheet" type="text/css" href="/static/custom.css?v=35">
|
||||||
<link rel="search" type="application/opensearchdescription+xml" href="/static/opensearch.xml" title="ContentDB" />
|
<link rel="search" type="application/opensearchdescription+xml" href="/static/opensearch.xml" title="ContentDB" />
|
||||||
<link rel="shortcut icon" href="/favicon-16.png" sizes="16x16">
|
<link rel="shortcut icon" href="/favicon-16.png" sizes="16x16">
|
||||||
<link rel="icon" href="/favicon-128.png" sizes="128x128">
|
<link rel="icon" href="/favicon-128.png" sizes="128x128">
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarColor01">
|
<div class="collapse navbar-collapse" id="navbarColor01">
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav me-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{ url_for('packages.list_all', type='mod') }}">{{ _("Mods") }}</a>
|
<a class="nav-link" href="{{ url_for('packages.list_all', type='mod') }}">{{ _("Mods") }}</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -42,18 +42,14 @@
|
||||||
<a class="nav-link" href="{{ url_for('threads.list_all') }}">{{ _("Threads") }}</a>
|
<a class="nav-link" href="{{ url_for('threads.list_all') }}">{{ _("Threads") }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="form-inline my-2 my-lg-0" method="GET" action="/packages/">
|
<form class="d-flex my-2 my-lg-0" method="GET" action="/packages/">
|
||||||
{% if type %}<input type="hidden" name="type" value="{{ type }}" />{% endif %}
|
{% if type %}<input type="hidden" name="type" value="{{ type }}" />{% endif %}
|
||||||
<input class="form-control" name="q" type="text"
|
<input class="form-control me-1" name="q" type="text"
|
||||||
placeholder="{% if query_hint %}{{ _('Search %(type)s', type=query_hint | lower) }}{% else %}{{ _('Search all packages') }}{% endif %}"
|
placeholder="{% if query_hint %}{{ _('Search %(type)s', type=query_hint | lower) }}{% else %}{{ _('Search all packages') }}{% endif %}"
|
||||||
value="{{ query or ''}}">
|
value="{{ query or ''}}">
|
||||||
<input class="btn btn-secondary my-2 my-sm-0 mr-sm-2" type="submit" value="{{ _('Search') }}" />
|
<input class="btn btn-secondary" type="submit" value="{{ _('Search') }}" />
|
||||||
<!-- <input class="btn btn-secondary my-2 my-sm-0"
|
|
||||||
data-toggle="tooltip" data-placement="bottom"
|
|
||||||
title="Go to the first found result for this query."
|
|
||||||
type="submit" name="lucky" value="First" /> -->
|
|
||||||
</form>
|
</form>
|
||||||
<ul class="navbar-nav ml-auto">
|
<ul class="navbar-nav ms-auto">
|
||||||
{% if current_user.is_authenticated %}
|
{% if current_user.is_authenticated %}
|
||||||
{% if todo_list_count is not none %}
|
{% if todo_list_count is not none %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
@ -62,7 +58,7 @@
|
||||||
title="{{ _('Work Queue') }}">
|
title="{{ _('Work Queue') }}">
|
||||||
{% if todo_list_count > 0 %}
|
{% if todo_list_count > 0 %}
|
||||||
<i class="fas fa-inbox"></i>
|
<i class="fas fa-inbox"></i>
|
||||||
<span class="badge badge-pill badge-notify">{{ todo_list_count }}</span>
|
<span class="badge rounded-pill badge-notify">{{ todo_list_count }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-inbox" ></i>
|
<i class="fas fa-inbox" ></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -86,11 +82,11 @@
|
||||||
<i class="fas fa-bell"></i>
|
<i class="fas fa-bell"></i>
|
||||||
{% set num_notifs = current_user.notifications | length %}
|
{% set num_notifs = current_user.notifications | length %}
|
||||||
{% if num_notifs > 60 %}
|
{% if num_notifs > 60 %}
|
||||||
<span class="badge badge-pill badge-notify badge-emoji">
|
<span class="badge rounded-pill badge-notify badge-emoji">
|
||||||
😢
|
😢
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge badge-pill badge-notify">
|
<span class="badge rounded-pill badge-notify">
|
||||||
{{ num_notifs }}
|
{{ num_notifs }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div style="font-family: 'Arial', 'sans-serif'; max-width: 700px; margin: auto; padding: 0;">
|
<div style="font-family: 'Arial', 'sans-serif'; max-width: 700px; margin: auto; padding: 0;">
|
||||||
<div style="background: #2C3E50; padding: 1.2rem 1.2rem 1.2rem 2em; color: white;">
|
<div style="background: #2C3E50; padding: 1.2rem 1.2rem 1.2rem 2em; color: white;">
|
||||||
<h1 style="margin: 0; font-size: 120%; font-weight: normal;">ContentDB</h1>
|
<h1 style="margin: 0; font-size: 120%;" class="m-0 fw-normal">ContentDB</h1>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding: 2em; background: white;">
|
<div style="padding: 2em; background: white;">
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
{% set tags = package.tags | sort(attribute="views", reverse=True) %}
|
{% set tags = package.tags | sort(attribute="views", reverse=True) %}
|
||||||
<div class="carousel-item {% if loop.index == 1 %}active{% endif %}">
|
<div class="carousel-item {% if loop.index == 1 %}active{% endif %}">
|
||||||
<a href="{{ package.getURL("packages.view") }}">
|
<a href="{{ package.getURL("packages.view") }}">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16x9">
|
||||||
<img class="embed-responsive-item" src="{{ cover_image }}"
|
<img class="embed-responsive-item" src="{{ cover_image }}"
|
||||||
alt="{{ _('%(title)s by %(author)s', title=package.title, author=package.author.display_name) }}">
|
alt="{{ _('%(title)s by %(author)s', title=package.title, author=package.author.display_name) }}">
|
||||||
</div>
|
</div>
|
||||||
|
@ -50,18 +50,18 @@
|
||||||
</p>
|
</p>
|
||||||
{% if package.author %}
|
{% if package.author %}
|
||||||
<div class="d-none d-md-block">
|
<div class="d-none d-md-block">
|
||||||
<span class="mr-2">
|
<span class="me-2">
|
||||||
{{ package.type.text }}
|
{{ package.type.text }}
|
||||||
</span>
|
</span>
|
||||||
{% for warning in package.content_warnings %}
|
{% for warning in package.content_warnings %}
|
||||||
<span class="badge badge-warning" title="{{ warning.description }}">
|
<span class="badge bg-warning" title="{{ warning.description }}">
|
||||||
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
||||||
{{ warning.title }}
|
{{ warning.title }}
|
||||||
</span>
|
</span>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for t in tags[:3] %}
|
{% for t in tags[:3] %}
|
||||||
{% if t.name != "featured" %}
|
{% if t.name != "featured" %}
|
||||||
<span class="badge badge-primary" title="{{ t.description or '' }}">
|
<span class="badge bg-primary" title="{{ t.description or '' }}">
|
||||||
{{ t.title }}
|
{{ t.title }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -90,42 +90,42 @@
|
||||||
<span class="sr-only">{{ _("Next") }}</span>
|
<span class="sr-only">{{ _("Next") }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-right mb-5 text-muted" style="opacity: 0.4;">
|
<div class="text-end mb-5 text-muted" style="opacity: 0.4;">
|
||||||
<a href="/help/featured/" class="btn">
|
<a href="/help/featured/" class="btn">
|
||||||
<i class="fas fa-question-circle mr-1"></i>
|
<i class="fas fa-question-circle me-1"></i>
|
||||||
{{ _("Featured") }}
|
{{ _("Featured") }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', sort='approved_at', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', sort='approved_at', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Recently Added") }}</h2>
|
<h2 class="my-3">{{ _("Recently Added") }}</h2>
|
||||||
{{ render_pkggrid(new) }}
|
{{ render_pkggrid(new) }}
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', sort='last_release', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', sort='last_release', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Recently Updated") }}</h2>
|
<h2 class="my-3">{{ _("Recently Updated") }}</h2>
|
||||||
{{ render_pkggrid(updated) }}
|
{{ render_pkggrid(updated) }}
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', type='game', sort='score', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', type='game', sort='score', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Top Games") }}</h2>
|
<h2 class="my-3">{{ _("Top Games") }}</h2>
|
||||||
{{ render_pkggrid(pop_gam) }}
|
{{ render_pkggrid(pop_gam) }}
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', type='mod', sort='score', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', type='mod', sort='score', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Top Mods") }}</h2>
|
<h2 class="my-3">{{ _("Top Mods") }}</h2>
|
||||||
{{ render_pkggrid(pop_mod) }}
|
{{ render_pkggrid(pop_mod) }}
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', type='txp', sort='score', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', type='txp', sort='score', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Top Texture Packs") }}</h2>
|
<h2 class="my-3">{{ _("Top Texture Packs") }}</h2>
|
||||||
|
@ -141,20 +141,20 @@
|
||||||
title="{{ tag.description or '' }}"
|
title="{{ tag.description or '' }}"
|
||||||
href="{{ url_for('packages.list_all', tag=tag.name) }}">
|
href="{{ url_for('packages.list_all', tag=tag.name) }}">
|
||||||
{{ tag.title }}
|
{{ tag.title }}
|
||||||
<span class="badge badge-pill badge-light ml-1">{{ count }}</span>
|
<span class="badge rounded-pill bg-light ms-1">{{ count }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<div class="clearfix mb-4"></div>
|
<div class="clearfix mb-4"></div>
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_all', sort='reviews', order='desc') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_all', sort='reviews', order='desc') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Highest Reviewed") }}</h2>
|
<h2 class="my-3">{{ _("Highest Reviewed") }}</h2>
|
||||||
{{ render_pkggrid(high_reviewed) }}
|
{{ render_pkggrid(high_reviewed) }}
|
||||||
|
|
||||||
|
|
||||||
<a href="{{ url_for('packages.list_reviews') }}" class="btn btn-secondary float-right">
|
<a href="{{ url_for('packages.list_reviews') }}" class="btn btn-secondary float-end">
|
||||||
{{ _("See more") }}
|
{{ _("See more") }}
|
||||||
</a>
|
</a>
|
||||||
<h2 class="my-3">{{ _("Recent Positive Reviews") }}</h2>
|
<h2 class="my-3">{{ _("Recent Positive Reviews") }}</h2>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
style="max-height: 22px;"
|
style="max-height: 22px;"
|
||||||
src="{{ entry.causer.getProfilePicURL() }}" />
|
src="{{ entry.causer.getProfilePicURL() }}" />
|
||||||
|
|
||||||
<span class="pl-2">{{ entry.causer.username }}</span>
|
<span class="ps-2">{{ entry.causer.username }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i>{{ _("Deleted User") }}</i>
|
<i>{{ _("Deleted User") }}</i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -37,13 +37,13 @@
|
||||||
{{ entry.title}}
|
{{ entry.title}}
|
||||||
|
|
||||||
{% if entry.description %}
|
{% if entry.description %}
|
||||||
<i class="fas fa-paperclip ml-3"></i>
|
<i class="fas fa-paperclip ms-3"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if entry.package %}
|
{% if entry.package %}
|
||||||
<div class="col-sm-auto text-muted">
|
<div class="col-sm-auto text-muted">
|
||||||
<span class="pr-2">
|
<span class="pe-2">
|
||||||
{{ entry.package.title }}
|
{{ entry.package.title }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
||||||
{% if field.type != 'HiddenField' %}
|
{% if field.type != 'HiddenField' %}
|
||||||
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
||||||
{% if label %}<label for="{{ field.id }}" {% if not label_visible %}class="sr-only"{% endif %}>{{ label|safe }}</label>{% endif %}
|
{% if label %}<label for="{{ field.id }}" {% if not label_visible %}class="sr-only"{% else %}class="form-label"{% endif %}>{{ label|safe }}</label>{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
||||||
{% if hint %}
|
{% if hint %}
|
||||||
|
@ -22,13 +22,11 @@
|
||||||
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
||||||
{% if field.type != 'HiddenField' and label_visible %}
|
{% if field.type != 'HiddenField' and label_visible %}
|
||||||
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
||||||
{% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %}
|
{% if label %}<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
<span class="input-group-text" id="{{ field.name }}">{{ prefix }}</span>
|
||||||
<span class="input-group-text" id="basic-addon1">{{ prefix }}</span>
|
|
||||||
</div>
|
|
||||||
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -40,13 +38,11 @@
|
||||||
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
||||||
{% if field.type != 'HiddenField' and label_visible %}
|
{% if field.type != 'HiddenField' and label_visible %}
|
||||||
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
|
||||||
{% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %}
|
{% if label %}<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-prepend">
|
|
||||||
<span class="input-group-text" id="basic-addon1">{{ prefix }}</span>
|
<span class="input-group-text" id="basic-addon1">{{ prefix }}</span>
|
||||||
</div>
|
|
||||||
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
|
||||||
<a class="btn btn-secondary" id="{{ field.name }}-button">
|
<a class="btn btn-secondary" id="{{ field.name }}-button">
|
||||||
{{ _("View") }}
|
{{ _("View") }}
|
||||||
|
@ -101,7 +97,7 @@
|
||||||
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
|
||||||
{% if field.type != 'HiddenField' and label_visible %}
|
{% if field.type != 'HiddenField' and label_visible %}
|
||||||
{% if not label %}{% set label=field.label.text %}{% endif %}
|
{% if not label %}{% set label=field.label.text %}{% endif %}
|
||||||
<label for="{{ field.id }}">{{ label|safe }}</label>
|
<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="multichoice_selector bulletselector form-control">
|
<div class="multichoice_selector bulletselector form-control">
|
||||||
<input type="text" placeholder="{{ _('Start typing to see suggestions') }}">
|
<input type="text" placeholder="{{ _('Start typing to see suggestions') }}">
|
||||||
|
@ -115,9 +111,10 @@
|
||||||
|
|
||||||
{% macro render_checkbox_field(field, label=None) -%}
|
{% macro render_checkbox_field(field, label=None) -%}
|
||||||
{% if not label %}{% set label=field.label.text %}{% endif %}
|
{% if not label %}{% set label=field.label.text %}{% endif %}
|
||||||
<div class="checkbox {{ kwargs.pop('class_', '') }}">
|
<div class="form-sheck {{ kwargs.pop('class_', '') }}">
|
||||||
<label>
|
{{ field(type='checkbox', class_="form-check-input", **kwargs) }}
|
||||||
{{ field(type='checkbox', **kwargs) }} {{ label }}
|
<label class="form-check-label" for="{{ field.id }}">
|
||||||
|
{{ label }}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
@ -149,7 +146,7 @@
|
||||||
<label class="btn btn-primary{% if checked %} active{% endif %}">
|
<label class="btn btn-primary{% if checked %} active{% endif %}">
|
||||||
{% set icon = icons[value] %}
|
{% set icon = icons[value] %}
|
||||||
{% if icon %}
|
{% if icon %}
|
||||||
<i class="fas {{ icon }} mr-2"></i>
|
<i class="fas {{ icon }} me-2"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<input type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}" autocomplete="off" {% if checked %} checked{% endif %}>
|
<input type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}" autocomplete="off" {% if checked %} checked{% endif %}>
|
||||||
{{ label }}
|
{{ label }}
|
||||||
|
|
|
@ -18,11 +18,11 @@
|
||||||
{% set message %}
|
{% set message %}
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<a class="btn btn-sm btn-warning float-right" href="{{ package.getURL("packages.create_release") }}">
|
<a class="btn btn-sm btn-warning float-end" href="{{ package.getURL("packages.create_release") }}">
|
||||||
{{ _("Create first release") }}
|
{{ _("Create first release") }}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-sm btn-warning float-right" href="{{ package.getURL("packages.setup_releases") }}">
|
<a class="btn btn-sm btn-warning float-end" href="{{ package.getURL("packages.setup_releases") }}">
|
||||||
{{ _("Set up releases") }}
|
{{ _("Set up releases") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -90,7 +90,7 @@
|
||||||
|
|
||||||
{% if conflicting_modnames %}
|
{% if conflicting_modnames %}
|
||||||
<div class="alert alert-warning">
|
<div class="alert alert-warning">
|
||||||
<a class="float-right btn btn-sm btn-warning" href="{{ package.getURL('packages.similar') }}">
|
<a class="float-end btn btn-sm btn-warning" href="{{ package.getURL('packages.similar') }}">
|
||||||
More info
|
More info
|
||||||
</a>
|
</a>
|
||||||
{% if conflicting_modnames | length > 4 %}
|
{% if conflicting_modnames | length > 4 %}
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
|
|
||||||
{% if not package.review_thread and (package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW")) %}
|
{% if not package.review_thread and (package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW")) %}
|
||||||
<div class="alert alert-secondary">
|
<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') }}">
|
<a class="float-end btn btn-sm btn-secondary" href="{{ url_for('threads.new', pid=package.id, title='Package approval comments') }}">
|
||||||
{{ _("Open Thread") }}
|
{{ _("Open Thread") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<small>{{ package.author.display_name }}</small>
|
<small>{{ package.author.display_name }}</small>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not package.approved %}
|
{% if not package.approved %}
|
||||||
<span class="badge ml-1 {% if package.state == package.state.CHANGES_NEEDED %}bg-danger{% else %}bg-warning{% endif %}">
|
<span class="badge ms-1 {% if package.state == package.state.CHANGES_NEEDED %}bg-danger{% else %}bg-warning{% endif %}">
|
||||||
{{ package.state.value }}
|
{{ package.state.value }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{% for rel in releases %}
|
{% for rel in releases %}
|
||||||
<a class="list-group-item list-group-item-action" href="{{ rel.getEditURL() }}">
|
<a class="list-group-item list-group-item-action" href="{{ rel.getEditURL() }}">
|
||||||
{{ rel.title }}
|
{{ rel.title }}
|
||||||
<span class="text-muted ml-1">
|
<span class="text-muted ms-1">
|
||||||
{% if rel.min_rel and rel.max_rel %}
|
{% if rel.min_rel and rel.max_rel %}
|
||||||
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
||||||
{% elif rel.min_rel %}
|
{% elif rel.min_rel %}
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
{% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE") %}
|
{% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE") %}
|
||||||
<a class="list-group-item list-group-item-action" href="{{ rel.getDownloadURL() }}">
|
<a class="list-group-item list-group-item-action" href="{{ rel.getDownloadURL() }}">
|
||||||
{{ rel.title }}
|
{{ rel.title }}
|
||||||
<span class="text-muted ml-1">
|
<span class="text-muted ms-1">
|
||||||
{% if rel.min_rel and rel.max_rel %}
|
{% if rel.min_rel and rel.max_rel %}
|
||||||
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
||||||
{% elif rel.min_rel %}
|
{% elif rel.min_rel %}
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
{% macro render_releases(releases, package, current_user) -%}
|
{% macro render_releases(releases, package, current_user) -%}
|
||||||
{% for rel in releases %}
|
{% for rel in releases %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
<a class="btn btn-sm btn-primary float-right" href="{{ rel.getEditURL() }}">
|
<a class="btn btn-sm btn-primary float-end" href="{{ rel.getEditURL() }}">
|
||||||
{% if not rel.task_id and not rel.approved and rel.checkPerm(current_user, "APPROVE_RELEASE") %}
|
{% if not rel.task_id and not rel.approved and rel.checkPerm(current_user, "APPROVE_RELEASE") %}
|
||||||
{{ _("Edit / Approve") }}
|
{{ _("Edit / Approve") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
{{ rel.title }}
|
{{ rel.title }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<span class="text-muted ml-1">
|
<span class="text-muted ms-1">
|
||||||
{% if rel.min_rel and rel.max_rel %}
|
{% if rel.min_rel and rel.max_rel %}
|
||||||
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
[MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
|
||||||
{% elif rel.min_rel %}
|
{% elif rel.min_rel %}
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
<button class="btn {% if is_positive == true %}btn-primary{% else %}btn-secondary{% endif %}" name="is_positive" value="yes">
|
<button class="btn {% if is_positive == true %}btn-primary{% else %}btn-secondary{% endif %}" name="is_positive" value="yes">
|
||||||
{{ _("Helpful") }}
|
{{ _("Helpful") }}
|
||||||
{% if positive > 0 %}
|
{% if positive > 0 %}
|
||||||
<span class="badge badge-light ml-1">{{ positive }}</span>
|
<span class="badge bg-light ms-1">{{ positive }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn {% if is_positive == false %}btn-primary{% else %}btn-secondary{% endif %}" name="is_positive" value="no">
|
<button class="btn {% if is_positive == false %}btn-primary{% else %}btn-secondary{% endif %}" name="is_positive" value="no">
|
||||||
{{ _("Unhelpful") }}
|
{{ _("Unhelpful") }}
|
||||||
{% if negative > 0 %}
|
{% if negative > 0 %}
|
||||||
<span class="badge badge-light ml-1">{{ negative }}</span>
|
<span class="badge bg-light ms-1">{{ negative }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ review.author.getProfilePicURL() }}">
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ review.author.getProfilePicURL() }}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-auto pl-1 pr-3 pt-2 text-center" style=" font-size: 200%;">
|
<div class="col-md-auto ps-1 pe-3 pt-2 text-center" style=" font-size: 200%;">
|
||||||
{% if review.recommends %}
|
{% if review.recommends %}
|
||||||
<i class="fas fa-thumbs-up" style="color:#6f6;"></i>
|
<i class="fas fa-thumbs-up" style="color:#6f6;"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
</div>
|
</div>
|
||||||
{% if review.thread %}
|
{% if review.thread %}
|
||||||
{% set reply = review.thread.replies[0] %}
|
{% set reply = review.thread.replies[0] %}
|
||||||
<div class="col pr-0">
|
<div class="col pe-0">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<a class="author {{ review.author.rank.name }}"
|
<a class="author {{ review.author.rank.name }}"
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
{{ review.author.display_name }}
|
{{ review.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a name="reply-{{ reply.id }}" class="text-muted float-right"
|
<a name="reply-{{ reply.id }}" class="text-muted float-end"
|
||||||
href="{{ url_for('threads.view', id=review.thread.id) }}#reply-{{ reply.id }}">
|
href="{{ url_for('threads.view', id=review.thread.id) }}#reply-{{ reply.id }}">
|
||||||
{{ review.created_at | datetime }}
|
{{ review.created_at | datetime }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
|
|
||||||
<div class="card-body markdown">
|
<div class="card-body markdown">
|
||||||
{% if current_user == review.author %}
|
{% if current_user == review.author %}
|
||||||
<a class="btn btn-primary btn-sm ml-1 float-right"
|
<a class="btn btn-primary btn-sm ms-1 float-end"
|
||||||
href="{{ review.package.getURL("packages.review") }}">
|
href="{{ review.package.getURL("packages.review") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
|
@ -69,16 +69,16 @@
|
||||||
|
|
||||||
<div class="btn-toolbar mt-2 mb-0">
|
<div class="btn-toolbar mt-2 mb-0">
|
||||||
{% if show_package_link %}
|
{% if show_package_link %}
|
||||||
<a class="btn btn-primary mr-1" href="{{ review.package.getURL("packages.view") }}">
|
<a class="btn btn-primary me-1" href="{{ review.package.getURL("packages.view") }}">
|
||||||
{{ _("%(title)s by %(author)s",
|
{{ _("%(title)s by %(author)s",
|
||||||
title="<b>" | safe + review.package.title + "</b>" | safe,
|
title="<b>" | safe + review.package.title + "</b>" | safe,
|
||||||
author=review.package.author.display_name) }}
|
author=review.package.author.display_name) }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn {% if review.thread.replies.count() > 1 %} btn-primary {% else %} btn-secondary {% endif %} mr-1"
|
<a class="btn {% if review.thread.replies.count() > 1 %} btn-primary {% else %} btn-secondary {% endif %} me-1"
|
||||||
href="{{ url_for('threads.view', id=review.thread.id) }}">
|
href="{{ url_for('threads.view', id=review.thread.id) }}">
|
||||||
<i class="fas fa-comments mr-2"></i>
|
<i class="fas fa-comments me-2"></i>
|
||||||
{{ _("%(num)d comments", num=review.thread.replies.count() - 1) }}
|
{{ _("%(num)d comments", num=review.thread.replies.count() - 1) }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@ -111,11 +111,11 @@
|
||||||
|
|
||||||
<div class="btn-group btn-group-toggle" data-toggle="buttons">
|
<div class="btn-group btn-group-toggle" data-toggle="buttons">
|
||||||
<label class="btn btn-primary">
|
<label class="btn btn-primary">
|
||||||
<i class="fas fa-thumbs-up mr-2"></i>
|
<i class="fas fa-thumbs-up me-2"></i>
|
||||||
<input type="radio" name="recommends" value="yes" autocomplete="off"> {{ _("Yes") }}
|
<input type="radio" name="recommends" value="yes" autocomplete="off"> {{ _("Yes") }}
|
||||||
</label>
|
</label>
|
||||||
<label class="btn btn-primary">
|
<label class="btn btn-primary">
|
||||||
<i class="fas fa-thumbs-down mr-2"></i>
|
<i class="fas fa-thumbs-down me-2"></i>
|
||||||
<input type="radio" name="recommends" value="no" autocomplete="off"> {{ _("No") }}
|
<input type="radio" name="recommends" value="no" autocomplete="off"> {{ _("No") }}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
@ -150,11 +150,11 @@
|
||||||
|
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button class="btn btn-primary" name="recommends" value="yes">
|
<button class="btn btn-primary" name="recommends" value="yes">
|
||||||
<i class="fas fa-thumbs-up mr-2"></i>
|
<i class="fas fa-thumbs-up me-2"></i>
|
||||||
{{ _("Yes") }}
|
{{ _("Yes") }}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-primary" name="recommends" value="no">
|
<button class="btn btn-primary" name="recommends" value="no">
|
||||||
<i class="fas fa-thumbs-down mr-2"></i>
|
<i class="fas fa-thumbs-down me-2"></i>
|
||||||
{{ _("No") }}
|
{{ _("No") }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,32 +10,32 @@
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ r.author.getProfilePicURL() }}">
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ r.author.getProfilePicURL() }}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col pr-0">
|
<div class="col pe-0">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<a class="author {{ r.author.rank.name }} mr-3"
|
<a class="author {{ r.author.rank.name }} me-3"
|
||||||
href="{{ url_for('users.profile', username=r.author.username) }}">
|
href="{{ url_for('users.profile', username=r.author.username) }}">
|
||||||
{{ r.author.display_name }}
|
{{ r.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if r.author.username != r.author.display_name %}
|
{% if r.author.username != r.author.display_name %}
|
||||||
<span class="text-muted small mr-2">
|
<span class="text-muted small me-2">
|
||||||
({{ r.author.username }})
|
({{ r.author.username }})
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if r.author in thread.package.maintainers %}
|
{% if r.author in thread.package.maintainers %}
|
||||||
<span class="badge badge-dark">
|
<span class="badge bg-dark">
|
||||||
{{ _("Maintainer") }}
|
{{ _("Maintainer") }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if r.author.rank == r.author.rank.BOT %}
|
{% if r.author.rank == r.author.rank.BOT %}
|
||||||
<span class="badge badge-dark">
|
<span class="badge bg-dark">
|
||||||
{{ r.author.rank.getTitle() }}
|
{{ r.author.rank.getTitle() }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a name="reply-{{ r.id }}" class="text-muted float-right"
|
<a name="reply-{{ r.id }}" class="text-muted float-end"
|
||||||
href="{{ r.get_url() }}">
|
href="{{ r.get_url() }}">
|
||||||
{{ r.created_at | datetime }}
|
{{ r.created_at | datetime }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -43,26 +43,26 @@
|
||||||
|
|
||||||
<div class="card-body markdown">
|
<div class="card-body markdown">
|
||||||
{% if r.checkPerm(current_user, "DELETE_REPLY") %}
|
{% if r.checkPerm(current_user, "DELETE_REPLY") %}
|
||||||
<a class="float-right btn btn-secondary btn-sm ml-2"
|
<a class="float-end btn btn-secondary btn-sm ms-2"
|
||||||
href="{{ url_for('threads.delete_reply', id=thread.id, reply=r.id) }}">
|
href="{{ url_for('threads.delete_reply', id=thread.id, reply=r.id) }}">
|
||||||
<i class="fas fa-trash"></i>
|
<i class="fas fa-trash"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if current_user != r.author %}
|
{% if current_user != r.author %}
|
||||||
<a class="float-right btn-secondary btn-sm ml-2"
|
<a class="float-end btn-secondary btn-sm ms-2"
|
||||||
title="{{ _('Report') }}"
|
title="{{ _('Report') }}"
|
||||||
href="{{ url_for('report.report', url=r.get_url()) }}">
|
href="{{ url_for('report.report', url=r.get_url()) }}">
|
||||||
<i class="fas fa-flag mr-1"></i>
|
<i class="fas fa-flag me-1"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user == thread.author and thread.review and thread.replies[0] == r %}
|
{% if current_user == thread.author and thread.review and thread.replies[0] == r %}
|
||||||
<a class="float-right btn btn-primary btn-sm ml-2"
|
<a class="float-end btn btn-primary btn-sm ms-2"
|
||||||
href="{{ thread.review.package.getURL('packages.review') }}">
|
href="{{ thread.review.package.getURL('packages.review') }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
{% elif r.checkPerm(current_user, "EDIT_REPLY") %}
|
{% elif r.checkPerm(current_user, "EDIT_REPLY") %}
|
||||||
<a class="float-right btn btn-primary btn-sm ml-2"
|
<a class="float-end btn btn-primary btn-sm ms-2"
|
||||||
href="{{ url_for('threads.edit_reply', id=thread.id, reply=r.id) }}">
|
href="{{ url_for('threads.edit_reply', id=thread.id, reply=r.id) }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
|
|
||||||
{% if thread.locked %}
|
{% if thread.locked %}
|
||||||
<p class="my-0 py-4 text-center">
|
<p class="my-0 py-4 text-center">
|
||||||
<i class="fas fa-lock mr-3"></i>
|
<i class="fas fa-lock me-3"></i>
|
||||||
{{ _("This thread has been locked by a moderator.") }}
|
{{ _("This thread has been locked by a moderator.") }}
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
||||||
src="{{ current_user.getProfilePicURL() }}">
|
src="{{ current_user.getProfilePicURL() }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="col pr-0">
|
<div class="col pe-0">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header {{ current_user.rank.name }}">
|
<div class="card-header {{ current_user.rank.name }}">
|
||||||
{{ current_user.display_name }}
|
{{ current_user.display_name }}
|
||||||
|
@ -171,13 +171,13 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-thumbs-down" style="color:#f66;"></i>
|
<i class="fas fa-thumbs-down" style="color:#f66;"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<strong class="ml-1">
|
<strong class="ms-1">
|
||||||
{{ t.title }}
|
{{ t.title }}
|
||||||
</strong><br />
|
</strong><br />
|
||||||
<span>
|
<span>
|
||||||
{{ t.author.display_name }}
|
{{ t.author.display_name }}
|
||||||
</span>
|
</span>
|
||||||
<span class="text-muted ml-3">
|
<span class="text-muted ms-3">
|
||||||
{{ t.created_at | datetime }}
|
{{ t.created_at | datetime }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -185,7 +185,7 @@
|
||||||
{% if replies > 0 %}
|
{% if replies > 0 %}
|
||||||
<span class="col-md-auto text-muted">
|
<span class="col-md-auto text-muted">
|
||||||
{{ replies }}
|
{{ replies }}
|
||||||
<i class="fas fa-comment ml-1"></i>
|
<i class="fas fa-comment ms-1"></i>
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -202,13 +202,13 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if t.package %}
|
{% if t.package %}
|
||||||
<div class="col-md-2 text-muted text-right">
|
<div class="col-md-2 text-muted text-end">
|
||||||
<img
|
<img
|
||||||
class="img-fluid"
|
class="img-fluid"
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ t.package.getThumbnailOrPlaceholder() }}" /><br />
|
src="{{ t.package.getThumbnailOrPlaceholder() }}" /><br />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ t.package.title }}
|
{{ t.package.title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -32,21 +32,21 @@
|
||||||
<div class="col-sm-auto">
|
<div class="col-sm-auto">
|
||||||
{% if not show_config %}
|
{% if not show_config %}
|
||||||
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-sm btn-primary mr-2" href="{{ config.get_create_release_url() }}">
|
<a class="btn btn-sm btn-primary me-2" href="{{ config.get_create_release_url() }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Release") }}
|
{{ _("Release") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn btn-sm btn-secondary mr-2" href="{{ package.repo }}">
|
<a class="btn btn-sm btn-secondary me-2" href="{{ package.repo }}">
|
||||||
<i class="fas fa-code-branch mr-1"></i>
|
<i class="fas fa-code-branch me-1"></i>
|
||||||
{{ _("Repo") }}
|
{{ _("Repo") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
<a class="btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog me-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if current_user.notifications %}
|
{% if current_user.notifications %}
|
||||||
<form method="post" action="{{ url_for('notifications.clear') }}" class="float-right">
|
<form method="post" action="{{ url_for('notifications.clear') }}" class="float-end">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="submit" class="btn btn-primary" value="Clear All" />
|
<input type="submit" class="btn btn-primary" value="Clear All" />
|
||||||
</form>
|
</form>
|
||||||
<a href="{{ url_for('users.email_notifications', username=current_user.username) }}" class="btn btn-secondary float-right mr-3">
|
<a href="{{ url_for('users.email_notifications', username=current_user.username) }}" class="btn btn-secondary float-end me-3">
|
||||||
{{ _("Edit email notification settings") }}
|
{{ _("Edit email notification settings") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ n.package.getThumbnailOrPlaceholder() }}" />
|
src="{{ n.package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ n.package.title }}
|
{{ n.package.title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,8 +48,8 @@
|
||||||
{{ n.title}}
|
{{ n.title}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-auto text-muted text-right">
|
<div class="col-sm-auto text-muted text-end">
|
||||||
<span class="pr-2">{{ n.causer.display_name }}</span>
|
<span class="pe-2">{{ n.causer.display_name }}</span>
|
||||||
<img
|
<img
|
||||||
class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
||||||
style="max-height: 22px;"
|
style="max-height: 22px;"
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ n.package.getThumbnailOrPlaceholder() }}" />
|
src="{{ n.package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ n.package.title }}
|
{{ n.package.title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -86,8 +86,8 @@
|
||||||
{{ n.title}}
|
{{ n.title}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-sm-auto text-muted text-right">
|
<div class="col-sm-auto text-muted text-end">
|
||||||
<span class="pr-2">{{ n.causer.display_name }}</span>
|
<span class="pe-2">{{ n.causer.display_name }}</span>
|
||||||
<img
|
<img
|
||||||
class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
||||||
style="max-height: 22px;"
|
style="max-height: 22px;"
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ package.getURL("packages.alias_create_edit") }}">
|
<a class="btn btn-primary float-end" href="{{ package.getURL("packages.alias_create_edit") }}">
|
||||||
{{ _("Create") }}
|
{{ _("Create") }}
|
||||||
</a>
|
</a>
|
||||||
<h1>{{ _("Aliases for %(title)s by %(author)s", title=self.link(), author=package.author.display_name) }}</h1>
|
<h1>{{ _("Aliases for %(title)s by %(author)s", title=self.link(), author=package.author.display_name) }}</h1>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-secondary float-right" href="/help/update_config/">{{ _("Help") }}</a>
|
<a class="btn btn-secondary float-end" href="/help/update_config/">{{ _("Help") }}</a>
|
||||||
<h1 class="mb-5">{{ self.title() }}</h1>
|
<h1 class="mb-5">{{ self.title() }}</h1>
|
||||||
<h2>{{ _("Packages with Update Settings") }}</h2>
|
<h2>{{ _("Packages with Update Settings") }}</h2>
|
||||||
|
|
||||||
|
|
|
@ -38,13 +38,13 @@
|
||||||
|
|
||||||
{% if not package %}
|
{% if not package %}
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<a class="float-right btn btn-sm btn-default" href="{{ url_for('flatpage', path='policy_and_guidance') }}">{{ _("View") }}</a>
|
<a class="float-end btn btn-sm btn-default" href="{{ url_for('flatpage', path='policy_and_guidance') }}">{{ _("View") }}</a>
|
||||||
|
|
||||||
{{ _("Have you read the Package Inclusion Policy and Guidance yet?") }}
|
{{ _("Have you read the Package Inclusion Policy and Guidance yet?") }}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="alert alert-secondary">
|
<div class="alert alert-secondary">
|
||||||
<a class="float-right btn btn-sm btn-default" href="/help/package_config/#cdbjson">{{ _("Read more") }}</a>
|
<a class="float-end btn btn-sm btn-default" href="/help/package_config/#cdbjson">{{ _("Read more") }}</a>
|
||||||
|
|
||||||
{{ _("You can include a .cdb.json file in your %(type)s to update these details automatically.", type=package.type.text.lower()) }}
|
{{ _("You can include a .cdb.json file in your %(type)s to update these details automatically.", type=package.type.text.lower()) }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -81,11 +81,8 @@
|
||||||
{{ render_multiselect_field(form.content_warnings, class_="pkg_meta") }}
|
{{ render_multiselect_field(form.content_warnings, class_="pkg_meta") }}
|
||||||
<div class="pkg_meta row">
|
<div class="pkg_meta row">
|
||||||
{{ render_field(form.license, class_="not_txp col-sm-6") }}
|
{{ render_field(form.license, class_="not_txp col-sm-6") }}
|
||||||
{{ render_field(form.media_license, class_="col-sm-6") }}
|
{{ render_field(form.media_license, class_="col-sm-6",
|
||||||
</div>
|
hint=_("If there is no media, set the Media License to the same as the License.")) }}
|
||||||
<div class="pkg_meta row">
|
|
||||||
<div class="not_txp col-sm-6"></div>
|
|
||||||
<div class="not_txp col-sm-6">{{ _("If there is no media, set the Media License to the same as the License.") }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
{{ render_field(form.desc, class_="pkg_meta", fieldclass="form-control markdown") }}
|
{{ render_field(form.desc, class_="pkg_meta", fieldclass="form-control markdown") }}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -34,14 +34,14 @@
|
||||||
title="{{ tag.description or '' }}"
|
title="{{ tag.description or '' }}"
|
||||||
href="{{ url_set_query(page=1, _remove={ 'tag': tag.name }) }}">
|
href="{{ url_set_query(page=1, _remove={ 'tag': tag.name }) }}">
|
||||||
{{ tag.title }}
|
{{ tag.title }}
|
||||||
<span class="badge badge-pill badge-light ml-1">{{ count }}</span>
|
<span class="badge rounded-pill bg-light ms-1">{{ count }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-sm btn-secondary m-1" rel="nofollow"
|
<a class="btn btn-sm btn-secondary m-1" rel="nofollow"
|
||||||
title="{{ tag.description or '' }}"
|
title="{{ tag.description or '' }}"
|
||||||
href="{{ url_set_query(page=1, _add={ 'tag': tag.name }) }}">
|
href="{{ url_set_query(page=1, _add={ 'tag': tag.name }) }}">
|
||||||
{{ tag.title }}
|
{{ tag.title }}
|
||||||
<span class="badge badge-pill badge-light ml-1">{{ count }}</span>
|
<span class="badge rounded-pill bg-light ms-1">{{ count }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
||||||
src="{{ package.getThumbnailOrPlaceholder(1) }}" alt="{{ _('Thumbnail') }}" style="max-height: 20px;">
|
src="{{ package.getThumbnailOrPlaceholder(1) }}" alt="{{ _('Thumbnail') }}" style="max-height: 20px;">
|
||||||
</span>
|
</span>
|
||||||
<span class="col m-0 p-0 pl-2">
|
<span class="col m-0 p-0 ps-2">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -32,8 +32,6 @@
|
||||||
<p class="mt-3">
|
<p class="mt-3">
|
||||||
{{ _("Note: Min and max versions will be used to hide the package on
|
{{ _("Note: Min and max versions will be used to hide the package on
|
||||||
platforms not within the range.") }}
|
platforms not within the range.") }}
|
||||||
{{ _("You cannot select the oldest version for min or the newest version
|
|
||||||
for max as this does not make sense - you can't predict the future.") }}
|
|
||||||
<br />
|
<br />
|
||||||
{{ _("Leave both as None if in doubt.") }}
|
{{ _("Leave both as None if in doubt.") }}
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -62,11 +62,6 @@
|
||||||
|
|
||||||
{{ _("You can <a href='/help/package_config/'>set this automatically</a> in the .conf of your package.") }}
|
{{ _("You can <a href='/help/package_config/'>set this automatically</a> in the .conf of your package.") }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
{{ _("You cannot select the oldest version for min or the newest version
|
|
||||||
for max as this does not make sense - you can't predict the future.") }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="mt-5">
|
<p class="mt-5">
|
||||||
{{ render_submit_field(form.submit) }}
|
{{ render_submit_field(form.submit) }}
|
||||||
</p>
|
</p>
|
||||||
|
@ -77,7 +72,7 @@
|
||||||
{% if release.checkPerm(current_user, "DELETE_RELEASE") %}
|
{% if release.checkPerm(current_user, "DELETE_RELEASE") %}
|
||||||
<form method="POST" action="{{ release.getDeleteURL() }}" class="alert alert-secondary mb-5">
|
<form method="POST" action="{{ release.getDeleteURL() }}" class="alert alert-secondary mb-5">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input class="btn btn-sm btn-danger float-right" type="submit" value="{{ _('Delete') }}">
|
<input class="btn btn-sm btn-danger float-end" type="submit" value="{{ _('Delete') }}">
|
||||||
<b>{{ _("This is permanent.") }}</b>
|
<b>{{ _("This is permanent.") }}</b>
|
||||||
{{ _("Any associated uploads will not be deleted immediately, but the release will no longer be listed.") }}
|
{{ _("Any associated uploads will not be deleted immediately, but the release will no longer be listed.") }}
|
||||||
<div style="clear:both;"></div>
|
<div style="clear:both;"></div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<p class="alert alert-secondary mb-4">
|
<p class="alert alert-secondary mb-4">
|
||||||
<a class="float-right btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">{{ _("Settings") }}</a>
|
<a class="float-end btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">{{ _("Settings") }}</a>
|
||||||
{% if package.update_config.make_release %}
|
{% if package.update_config.make_release %}
|
||||||
{{ _("You have automatic releases enabled.") }}
|
{{ _("You have automatic releases enabled.") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -20,13 +20,13 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="alert alert-info mb-4">
|
<p class="alert alert-info mb-4">
|
||||||
{% if package.repo %}
|
{% if package.repo %}
|
||||||
<a class="float-right btn btn-sm btn-info" href="{{ package.getURL("packages.setup_releases") }}">{{ _("Set up") }}</a>
|
<a class="float-end btn btn-sm btn-info" href="{{ package.getURL("packages.setup_releases") }}">{{ _("Set up") }}</a>
|
||||||
<i class="fas fa-info mr-2"></i>
|
<i class="fas fa-info me-2"></i>
|
||||||
|
|
||||||
{{ _("You can create releases automatically when you push commits or tags to your repository.") }}
|
{{ _("You can create releases automatically when you push commits or tags to your repository.") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="float-right btn btn-sm btn-info" href="{{ package.getURL("packages.create_edit") }}">{{ _("Add Git repo") }}</a>
|
<a class="float-end btn btn-sm btn-info" href="{{ package.getURL("packages.create_edit") }}">{{ _("Add Git repo") }}</a>
|
||||||
<i class="fas fa-info mr-2"></i>
|
<i class="fas fa-info me-2"></i>
|
||||||
|
|
||||||
{{ _("Using Git would allow you to create releases automatically when you push code or tags.") }}
|
{{ _("Using Git would allow you to create releases automatically when you push code or tags.") }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<i class="fas fa-exclamation-circle mr-2"></i>
|
<i class="fas fa-exclamation-circle me-2"></i>
|
||||||
{{ _("The .conf of your package can <a href='/help/package_config/'>set this automatically</a>,
|
{{ _("The .conf of your package can <a href='/help/package_config/'>set this automatically</a>,
|
||||||
which will override your selection.") }}
|
which will override your selection.") }}
|
||||||
</p>
|
</p>
|
||||||
|
@ -82,10 +82,6 @@
|
||||||
<br />
|
<br />
|
||||||
{{ _("Leave both as None if in doubt.") }}
|
{{ _("Leave both as None if in doubt.") }}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
{{ _("You cannot select the oldest version for min or the newest version
|
|
||||||
for max as this does not make sense - you can't predict the future.") }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="mt-5">
|
<p class="mt-5">
|
||||||
{{ render_submit_field(form.submit) }}
|
{{ render_submit_field(form.submit) }}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-secondary float-right" href="{{ package.getURL("packages.view") }}">
|
<a class="btn btn-secondary float-end" href="{{ package.getURL("packages.view") }}">
|
||||||
{{ _("Later") }}
|
{{ _("Later") }}
|
||||||
</a>
|
</a>
|
||||||
<h1>{{ self.title() }}</h1>
|
<h1>{{ self.title() }}</h1>
|
||||||
|
@ -33,10 +33,10 @@
|
||||||
<a class="btn btn-primary" href="{{ package.getURL("packages.update_config", trigger="commit") }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.update_config", trigger="commit") }}">
|
||||||
{{ _("Rolling Release") }}
|
{{ _("Rolling Release") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-primary ml-2" href="{{ package.getURL("packages.update_config", trigger="tag") }}">
|
<a class="btn btn-primary ms-2" href="{{ package.getURL("packages.update_config", trigger="tag") }}">
|
||||||
{{ _("On Git Tag") }}
|
{{ _("On Git Tag") }}
|
||||||
</a>
|
</a>
|
||||||
{# <a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.update_config") }}">#}
|
{# <a class="btn btn-secondary ms-2" href="{{ package.getURL("packages.update_config") }}">#}
|
||||||
{# {{ _("Advanced") }}#}
|
{# {{ _("Advanced") }}#}
|
||||||
{# </a>#}
|
{# </a>#}
|
||||||
</p>
|
</p>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config", action="notification") }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config", action="notification") }}">
|
||||||
{{ _("With reminders") }}
|
{{ _("With reminders") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.create_release") }}">
|
<a class="btn btn-secondary ms-2" href="{{ package.getURL("packages.create_release") }}">
|
||||||
{{ _("No reminders") }}
|
{{ _("No reminders") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -68,10 +68,10 @@
|
||||||
<a class="btn btn-primary" href="{{ package.getURL("packages.create_edit") }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.create_edit") }}">
|
||||||
{{ _("Add Git repo") }}
|
{{ _("Add Git repo") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.create_release") }}">
|
<a class="btn btn-secondary ms-2" href="{{ package.getURL("packages.create_release") }}">
|
||||||
{{ _("Create releases manually") }}
|
{{ _("Create releases manually") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.view") }}">
|
<a class="btn btn-secondary ms-2" href="{{ package.getURL("packages.view") }}">
|
||||||
{{ _("Later") }}
|
{{ _("Later") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -6,26 +6,26 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<p class="float-right">
|
<p class="float-end">
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog me-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
{% elif package.repo %}
|
{% elif package.repo %}
|
||||||
<a class="btn btn-secondary" href="{{ package.getURL("packages.setup_releases") }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.setup_releases") }}">
|
||||||
<i class="fas fa-hat-wizard mr-1"></i>
|
<i class="fas fa-hat-wizard me-1"></i>
|
||||||
{{ _("Set up automatic releases") }}
|
{{ _("Set up automatic releases") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn btn-secondary ml-1" href="{{ package.getURL("packages.bulk_change_release") }}">
|
<a class="btn btn-secondary ms-1" href="{{ package.getURL("packages.bulk_change_release") }}">
|
||||||
<i class="fas fa-wrench mr-1"></i>
|
<i class="fas fa-wrench me-1"></i>
|
||||||
{{ _("Bulk update") }}
|
{{ _("Bulk update") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="btn btn-primary ml-1" href="{{ package.getURL("packages.create_release") }}">
|
<a class="btn btn-primary ms-1" href="{{ package.getURL("packages.create_release") }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Create") }}
|
{{ _("Create") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -24,16 +24,16 @@ Remove {{ package.title }}
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="reason">{{ _("Reason") }}</label>
|
<label for="reason" class="form-label">{{ _("Reason") }}</label>
|
||||||
<input id="reason" class="form-control" type="text" name="reason" required minlength="5">
|
<input id="reason" class="form-control" type="text" name="reason" required minlength="5">
|
||||||
<small class="form-text text-muted">
|
<small class="form-text text-muted">
|
||||||
{{ _("Reason for unapproval / deletion, this is shown in the audit log") }}
|
{{ _("Reason for unapproval / deletion, this is shown in the audit log") }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right" href="{{ package.getURL("packages.view") }}">{{ _("Cancel") }}</a>
|
<a class="btn btn-secondary float-end" href="{{ package.getURL("packages.view") }}">{{ _("Cancel") }}</a>
|
||||||
|
|
||||||
<input type="submit" name="delete" value="Remove" class="btn btn-danger mr-2" />
|
<input type="submit" name="delete" value="Remove" class="btn btn-danger me-2" />
|
||||||
|
|
||||||
{% if package.approved %}
|
{% if package.approved %}
|
||||||
<input type="submit" name="unapprove" value="Unapprove" class="btn btn-warning" />
|
<input type="submit" name="unapprove" value="Unapprove" class="btn btn-warning" />
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
{% if review %}
|
{% if review %}
|
||||||
<form method="POST" action="{{ review.getDeleteURL() }}" class="alert alert-secondary my-5">
|
<form method="POST" action="{{ review.getDeleteURL() }}" class="alert alert-secondary my-5">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input class="btn btn-sm btn-danger float-right" type="submit" value="{{ _('Delete') }}">
|
<input class="btn btn-sm btn-danger float-end" type="submit" value="{{ _('Delete') }}">
|
||||||
<b>{{ _("Delete review.") }}</b>
|
<b>{{ _("Delete review.") }}</b>
|
||||||
{{ _("This will convert the review into a thread, keeping the comments but removing its effect on the package's rating.") }}
|
{{ _("This will convert the review into a thread, keeping the comments but removing its effect on the package's rating.") }}
|
||||||
<div style="clear:both;"></div>
|
<div style="clear:both;"></div>
|
||||||
|
|
|
@ -55,9 +55,9 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2">
|
<th colspan="2">
|
||||||
{% if review.recommends %}
|
{% if review.recommends %}
|
||||||
<i class="fas fa-thumbs-up text-success mr-2"></i>
|
<i class="fas fa-thumbs-up text-success me-2"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-thumbs-down text-danger mr-2"></i>
|
<i class="fas fa-thumbs-down text-danger me-2"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{{ review.thread.getViewURL() }}">
|
<a href="{{ review.thread.getViewURL() }}">
|
||||||
{{ review.thread.title }}
|
{{ review.thread.title }}
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
<td>
|
<td>
|
||||||
{% for vote in review.votes %}
|
{% for vote in review.votes %}
|
||||||
{% if vote.is_positive %}
|
{% if vote.is_positive %}
|
||||||
<a href="{{ url_for('users.profile', username=vote.user.username) }}" class="badge badge-secondary">
|
<a href="{{ url_for('users.profile', username=vote.user.username) }}" class="badge bg-secondary">
|
||||||
{{ vote.user.username }}
|
{{ vote.user.username }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
<td>
|
<td>
|
||||||
{% for vote in review.votes %}
|
{% for vote in review.votes %}
|
||||||
{% if not vote.is_positive %}
|
{% if not vote.is_positive %}
|
||||||
<a href="{{ url_for('users.profile', username=vote.user.username) }}" class="badge badge-secondary">
|
<a href="{{ url_for('users.profile', username=vote.user.username) }}" class="badge bg-secondary">
|
||||||
{{ vote.user.username }}
|
{{ vote.user.username }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
{{ render_submit_field(form.submit) }}
|
{{ render_submit_field(form.submit) }}
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<a href="{{ screenshot.url }}" class="col-md-4 text-right">
|
<a href="{{ screenshot.url }}" class="col-md-4 text-end">
|
||||||
<img src="{{ screenshot.getThumbnailURL() }}" alt="{{ screenshot.title }}" />
|
<img src="{{ screenshot.getThumbnailURL() }}" alt="{{ screenshot.title }}" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
<a href="{{ package.getURL('packages.create_screenshot') }}" class="btn btn-primary float-right">
|
<a href="{{ package.getURL('packages.create_screenshot') }}" class="btn btn-primary float-end">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Add Image") }}
|
{{ _("Add Image") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
{% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
<li class="list-group-item" data-id="{{ ss.id }}">
|
<li class="list-group-item" data-id="{{ ss.id }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto text-muted pr-2">
|
<div class="col-auto text-muted pe-2">
|
||||||
<i class="fas fa-bars"></i>
|
<i class="fas fa-bars"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
@ -35,32 +35,32 @@
|
||||||
{{ ss.width }} x {{ ss.height }}
|
{{ ss.width }} x {{ ss.height }}
|
||||||
{% if ss.is_low_res() %}
|
{% if ss.is_low_res() %}
|
||||||
{% if ss.is_very_small() %}
|
{% if ss.is_very_small() %}
|
||||||
<span class="badge badge-danger ml-3">
|
<span class="badge bg-danger ms-3">
|
||||||
{{ _("Way too small") }}
|
{{ _("Way too small") }}
|
||||||
</span>
|
</span>
|
||||||
{% elif ss.is_too_small() %}
|
{% elif ss.is_too_small() %}
|
||||||
<span class="badge badge-warning ml-3">
|
<span class="badge bg-warning ms-3">
|
||||||
{{ _("Too small") }}
|
{{ _("Too small") }}
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge badge-secondary ml-3">
|
<span class="badge bg-secondary ms-3">
|
||||||
{{ _("Not HD") }}
|
{{ _("Not HD") }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not ss.approved %}
|
{% if not ss.approved %}
|
||||||
<span class="ml-3">
|
<span class="ms-3">
|
||||||
{{ _("Awaiting approval") }}
|
{{ _("Awaiting approval") }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<form action="{{ ss.getDeleteURL() }}" method="POST" class="col-auto text-right" role="form">
|
<form action="{{ ss.getDeleteURL() }}" method="POST" class="col-auto text-end" role="form">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<a class="btn btn-sm btn-primary" href="{{ ss.getEditURL() }}">
|
<a class="btn btn-sm btn-primary" href="{{ ss.getEditURL() }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
<button type="submit" class="btn btn-sm btn-danger ml-2">
|
<button type="submit" class="btn btn-sm btn-danger ms-2">
|
||||||
<i class="fas fa-trash"></i>
|
<i class="fas fa-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-secondary float-right" href="/help/update_config/">{{ _("Help") }}</a>
|
<a class="btn btn-secondary float-end" href="/help/update_config/">{{ _("Help") }}</a>
|
||||||
<h1>{{ _("Configure Git Update Detection") }}</h1>
|
<h1>{{ _("Configure Git Update Detection") }}</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
<p class="mt-5 pt-4">
|
<p class="mt-5 pt-4">
|
||||||
{{ render_submit_field(form.submit) }}
|
{{ render_submit_field(form.submit) }}
|
||||||
{{ render_submit_field(form.disable, class_="btn btn-secondary ml-2") }}
|
{{ render_submit_field(form.disable, class_="btn btn-secondary ms-2") }}
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
{% block download_btn %}
|
{% block download_btn %}
|
||||||
{% if release %}
|
{% if release %}
|
||||||
<a class="btn btn-block btn-download" rel="nofollow" download="{{ release.getDownloadFileName() }}"
|
<a class="btn w-100 btn-download btn-lg" rel="nofollow" download="{{ release.getDownloadFileName() }}"
|
||||||
href="{{ package.getURL('packages.download') }}">
|
href="{{ package.getURL('packages.download') }}">
|
||||||
<div>
|
<div>
|
||||||
{{ _("Download") }}
|
{{ _("Download") }}
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
<p class="text-center mt-1 mb-4">
|
<p class="text-center mt-1 mb-4">
|
||||||
<a href="{{ installing_url }}">
|
<a href="{{ installing_url }}">
|
||||||
<small>
|
<small>
|
||||||
<i class="fas fa-question-circle mr-1"></i>
|
<i class="fas fa-question-circle me-1"></i>
|
||||||
{{ _("How do I install this?") }}
|
{{ _("How do I install this?") }}
|
||||||
</small>
|
</small>
|
||||||
</a>
|
</a>
|
||||||
|
@ -91,22 +91,22 @@
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center;">
|
background-position: center;">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="btn-group float-right mb-4">
|
<div class="btn-group float-end mb-4">
|
||||||
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
||||||
<a class="btn btn-primary" href="{{ package.getURL('packages.create_edit') }}">
|
<a class="btn btn-primary" href="{{ package.getURL('packages.create_edit') }}">
|
||||||
<i class="fas fa-pen mr-1"></i>
|
<i class="fas fa-pen me-1"></i>
|
||||||
{{ _("Edit") }}
|
{{ _("Edit") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-primary" href="{{ package.getURL('packages.create_release') }}">
|
<a class="btn btn-primary" href="{{ package.getURL('packages.create_release') }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Release") }}
|
{{ _("Release") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package.checkPerm(current_user, "DELETE_PACKAGE") or package.checkPerm(current_user, "UNAPPROVE_PACKAGE") %}
|
{% if package.checkPerm(current_user, "DELETE_PACKAGE") or package.checkPerm(current_user, "UNAPPROVE_PACKAGE") %}
|
||||||
<a class="btn btn-danger" href="{{ package.getURL('packages.remove') }}">
|
<a class="btn btn-danger" href="{{ package.getURL('packages.remove') }}">
|
||||||
<i class="fas fa-trash mr-1"></i>
|
<i class="fas fa-trash me-1"></i>
|
||||||
{{ _("Remove") }}
|
{{ _("Remove") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -122,32 +122,32 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{% if package.dev_state.name == "LOOKING_FOR_MAINTAINER" or package.dev_state.name == "DEPRECATED" %}
|
{% if package.dev_state.name == "LOOKING_FOR_MAINTAINER" or package.dev_state.name == "DEPRECATED" %}
|
||||||
<span class="badge badge-warning" title="{{ package.dev_state.get_desc() }}">
|
<span class="badge bg-warning" title="{{ package.dev_state.get_desc() }}">
|
||||||
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
||||||
{{ package.dev_state.value }}
|
{{ package.dev_state.value }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package_warning %}
|
{% if package_warning %}
|
||||||
<a class="badge badge-danger" href="/help/non_free/">
|
<a class="badge bg-danger" href="/help/non_free/">
|
||||||
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
||||||
{{ package_warning }}
|
{{ package_warning }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% for warning in package.content_warnings %}
|
{% for warning in package.content_warnings %}
|
||||||
<a class="badge badge-warning" rel="nofollow" href="/help/content_flags/"
|
<a class="badge bg-warning" rel="nofollow" href="/help/content_flags/"
|
||||||
title="{{ warning.description }}">
|
title="{{ warning.description }}">
|
||||||
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
<i class="fas fa-exclamation-circle" style="margin-right: 0.3em;"></i>
|
||||||
{{ warning.title }}
|
{{ warning.title }}
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if package.dev_state.name == "WIP" %}
|
{% if package.dev_state.name == "WIP" %}
|
||||||
<span class="badge badge-info" title="{{ package.dev_state.get_desc() }}">
|
<span class="badge bg-info" title="{{ package.dev_state.get_desc() }}">
|
||||||
<i class="fas fa-tools" style="margin-right: 0.3em;"></i>
|
<i class="fas fa-tools" style="margin-right: 0.3em;"></i>
|
||||||
{{ _("Work in Progress") }}
|
{{ _("Work in Progress") }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% for t in package.tags %}
|
{% for t in package.tags %}
|
||||||
<a class="badge badge-primary" rel="nofollow"
|
<a class="badge bg-primary" rel="nofollow"
|
||||||
title="{{ t.description or '' }}"
|
title="{{ t.description or '' }}"
|
||||||
href="{{ url_for('packages.list_all', tag=t.name) }}">
|
href="{{ url_for('packages.list_all', tag=t.name) }}">
|
||||||
{{ t.title }}
|
{{ t.title }}
|
||||||
|
@ -242,8 +242,8 @@
|
||||||
{% set screenshots = package.screenshots.all() %}
|
{% set screenshots = package.screenshots.all() %}
|
||||||
|
|
||||||
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
<a href="{{ package.getURL('packages.screenshots') }}" class="btn btn-primary float-right">
|
<a href="{{ package.getURL('packages.screenshots') }}" class="btn btn-primary float-end">
|
||||||
<i class="fas fa-images mr-1"></i>
|
<i class="fas fa-images me-1"></i>
|
||||||
{{ _("Edit") }}
|
{{ _("Edit") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -268,7 +268,7 @@
|
||||||
<a href="{{ ss.url }}" class="gallery-image">
|
<a href="{{ ss.url }}" class="gallery-image">
|
||||||
<img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" />
|
<img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" />
|
||||||
{% if not ss.approved %}
|
{% if not ss.approved %}
|
||||||
<span class="badge bg-dark badge-tr">{{ _("Awaiting review") }}</span>
|
<span class="badge bg-dark badge-topright">{{ _("Awaiting review") }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -339,16 +339,16 @@
|
||||||
{{ config.get_message() }}
|
{{ config.get_message() }}
|
||||||
</p>
|
</p>
|
||||||
<p class="mt-0 my-1" style="font-size: 80%; opacity: 85%;">
|
<p class="mt-0 my-1" style="font-size: 80%; opacity: 85%;">
|
||||||
<i class="fas fa-lock mr-1"></i>
|
<i class="fas fa-lock me-1"></i>
|
||||||
{{ _("Only visible to the author and Editors.") }}
|
{{ _("Only visible to the author and Editors.") }}
|
||||||
</p>
|
</p>
|
||||||
<div class="btn-group btn-group-sm my-0">
|
<div class="btn-group btn-group-sm my-0">
|
||||||
<a class="btn btn-warning" href="{{ config.get_create_release_url() }}">
|
<a class="btn btn-warning" href="{{ config.get_create_release_url() }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Release") }}
|
{{ _("Release") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-warning" href="{{ package.getURL("packages.update_config") }}">
|
<a class="btn btn-warning" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog me-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -356,7 +356,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package_warning %}
|
{% if package_warning %}
|
||||||
<p class="alert alert-danger">
|
<p class="alert alert-danger">
|
||||||
<a href="/help/non_free/" class="float-right">Info</a>
|
<a href="/help/non_free/" class="float-end">Info</a>
|
||||||
<b>{{ _("Warning") }}:</b> {{ package_warning }}
|
<b>{{ _("Warning") }}:</b> {{ package_warning }}
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -365,7 +365,7 @@
|
||||||
<div class="alert alert-secondary mb-4">
|
<div class="alert alert-secondary mb-4">
|
||||||
<p>{{ _("Like this package? Help support its development by making a donation", display_name=package.author.display_name) }}</p>
|
<p>{{ _("Like this package? Help support its development by making a donation", display_name=package.author.display_name) }}</p>
|
||||||
<a class="btn btn-block btn-primary" href="{{ package.author.donate_url }}" rel="nofollow">
|
<a class="btn btn-block btn-primary" href="{{ package.author.donate_url }}" rel="nofollow">
|
||||||
<i class="fas fa-heart mr-2"></i>
|
<i class="fas fa-heart me-2"></i>
|
||||||
{{ _("Donate now") }}
|
{{ _("Donate now") }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -378,13 +378,13 @@
|
||||||
<dd>
|
<dd>
|
||||||
{% for dep in package.getSortedHardDependencies() %}
|
{% for dep in package.getSortedHardDependencies() %}
|
||||||
{%- if dep.package %}
|
{%- if dep.package %}
|
||||||
<a class="badge badge-primary"
|
<a class="badge bg-primary"
|
||||||
href="{{ dep.package.getURL("packages.view") }}">
|
href="{{ dep.package.getURL("packages.view") }}">
|
||||||
{{ _("%(title)s by %(display_name)s",
|
{{ _("%(title)s by %(display_name)s",
|
||||||
title=dep.package.title, display_name=dep.package.author.display_name) }}
|
title=dep.package.title, display_name=dep.package.author.display_name) }}
|
||||||
</a>
|
</a>
|
||||||
{% elif dep.meta_package %}
|
{% elif dep.meta_package %}
|
||||||
<a class="badge badge-primary"
|
<a class="badge bg-primary"
|
||||||
href="{{ url_for('metapackages.view', name=dep.meta_package.name) }}">
|
href="{{ url_for('metapackages.view', name=dep.meta_package.name) }}">
|
||||||
{{ dep.meta_package.name }}
|
{{ dep.meta_package.name }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -402,12 +402,12 @@
|
||||||
<dd>
|
<dd>
|
||||||
{% for dep in optional_deps %}
|
{% for dep in optional_deps %}
|
||||||
{%- if dep.package %}
|
{%- if dep.package %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge bg-secondary"
|
||||||
href="{{ dep.package.getURL("packages.view") }}">
|
href="{{ dep.package.getURL("packages.view") }}">
|
||||||
{{ _("%(title)s by %(display_name)s",
|
{{ _("%(title)s by %(display_name)s",
|
||||||
title=dep.package.title, display_name=dep.package.author.display_name) }}
|
title=dep.package.title, display_name=dep.package.author.display_name) }}
|
||||||
{% elif dep.meta_package %}
|
{% elif dep.meta_package %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge bg-secondary"
|
||||||
href="{{ url_for('metapackages.view', name=dep.meta_package.name) }}">
|
href="{{ url_for('metapackages.view', name=dep.meta_package.name) }}">
|
||||||
{{ dep.meta_package.name }}
|
{{ dep.meta_package.name }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -450,7 +450,7 @@
|
||||||
<dt>{{ _("Maintainers") }}</dt>
|
<dt>{{ _("Maintainers") }}</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% for user in package.maintainers %}
|
{% for user in package.maintainers %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge bg-secondary"
|
||||||
href="{{ url_for('users.profile', username=user.username) }}">
|
href="{{ url_for('users.profile', username=user.username) }}">
|
||||||
{{ user.display_name }}
|
{{ user.display_name }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -466,7 +466,7 @@
|
||||||
{% if package.provides %}
|
{% if package.provides %}
|
||||||
<dt>{{ _("Provides") }}</dt>
|
<dt>{{ _("Provides") }}</dt>
|
||||||
<dd>{% for meta in package.provides %}
|
<dd>{% for meta in package.provides %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge bg-secondary"
|
||||||
href="{{ url_for('metapackages.view', name=meta.name) }}">{{ meta.name }}</a>
|
href="{{ url_for('metapackages.view', name=meta.name) }}">{{ meta.name }}</a>
|
||||||
{% endfor %}</dd>
|
{% endfor %}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -474,7 +474,7 @@
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-primary btn-sm float-right" href="{{ package.getURL("packages.create_release") }}"><i class="fas fa-plus"></i></a>
|
<a class="btn btn-primary btn-sm float-end" href="{{ package.getURL("packages.create_release") }}"><i class="fas fa-plus"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _("Releases") }}
|
{{ _("Releases") }}
|
||||||
</h3>
|
</h3>
|
||||||
|
@ -492,7 +492,7 @@
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
{% if package.approved and package.checkPerm(current_user, "CREATE_THREAD") %}
|
{% if package.approved and package.checkPerm(current_user, "CREATE_THREAD") %}
|
||||||
<div class="btn-group float-right">
|
<div class="btn-group float-end">
|
||||||
<a class="btn btn-primary btn-sm mx-1" href="{{ url_for('threads.new', pid=package.id) }}"><i class="fas fa-plus"></i></a>
|
<a class="btn btn-primary btn-sm mx-1" href="{{ url_for('threads.new', pid=package.id) }}"><i class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
<p class="mt-3">
|
<p class="mt-3">
|
||||||
{% if package.approved and current_user != package.author %}
|
{% if package.approved and current_user != package.author %}
|
||||||
<a href="{{ url_for('report.report', url=url_current()) }}">
|
<a href="{{ url_for('report.report', url=url_current()) }}">
|
||||||
<i class="fas fa-flag mr-1"></i>
|
<i class="fas fa-flag me-1"></i>
|
||||||
{{ _("Report") }}
|
{{ _("Report") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>{{ _("Deleting is permanent") }}</p>
|
<p>{{ _("Deleting is permanent") }}</p>
|
||||||
|
|
||||||
<a class="btn btn-secondary mr-3" href="{{ thread.getViewURL() }}">{{ _("Cancel") }}</a>
|
<a class="btn btn-secondary me-3" href="{{ thread.getViewURL() }}">{{ _("Cancel") }}</a>
|
||||||
<input type="submit" value="{{ _('Delete') }}" class="btn btn-danger" />
|
<input type="submit" value="{{ _('Delete') }}" class="btn btn-danger" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>{{ _("Deleting is permanent") }}</p>
|
<p>{{ _("Deleting is permanent") }}</p>
|
||||||
|
|
||||||
<a class="btn btn-secondary mr-3" href="{{ thread.getViewURL() }}">{{ _("Cancel") }}</a>
|
<a class="btn btn-secondary me-3" href="{{ thread.getViewURL() }}">{{ _("Cancel") }}</a>
|
||||||
<input type="submit" value="{{ _('Delete') }}" class="btn btn-danger" />
|
<input type="submit" value="{{ _('Delete') }}" class="btn btn-danger" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -21,33 +21,33 @@
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ r.author.getProfilePicURL() }}">
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ r.author.getProfilePicURL() }}">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col pr-0">
|
<div class="col pe-0">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
|
||||||
<a class="author {{ r.author.rank.name }} mr-3"
|
<a class="author {{ r.author.rank.name }} me-3"
|
||||||
href="{{ url_for('users.profile', username=r.author.username) }}">
|
href="{{ url_for('users.profile', username=r.author.username) }}">
|
||||||
{{ r.author.display_name }}
|
{{ r.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if r.author.username != r.author.display_name %}
|
{% if r.author.username != r.author.display_name %}
|
||||||
<span class="text-muted small mr-2">
|
<span class="text-muted small me-2">
|
||||||
({{ r.author.username }})
|
({{ r.author.username }})
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if r == r.thread.replies[0] %}
|
{% if r == r.thread.replies[0] %}
|
||||||
<a class="badge badge-primary" href="{{ r.thread.getViewURL() }}">
|
<a class="badge bg-primary" href="{{ r.thread.getViewURL() }}">
|
||||||
{{ r.thread.title }}
|
{{ r.thread.title }}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-reply mr-2"></i>
|
<i class="fas fa-reply me-2"></i>
|
||||||
<a class="badge badge-dark" href="{{ r.thread.getViewURL() }}">
|
<a class="badge bg-dark" href="{{ r.thread.getViewURL() }}">
|
||||||
{{ _("Reply to <b>%(title)s</b>", title=r.thread.title) }}
|
{{ _("Reply to <b>%(title)s</b>", title=r.thread.title) }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a name="reply-{{ r.id }}" class="text-muted float-right"
|
<a name="reply-{{ r.id }}" class="text-muted float-end"
|
||||||
href="{{ url_for('threads.view', id=r.thread.id) }}#reply-{{ r.id }}">
|
href="{{ url_for('threads.view', id=r.thread.id) }}#reply-{{ r.id }}">
|
||||||
{{ r.created_at | datetime }}
|
{{ r.created_at | datetime }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -26,27 +26,27 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if current_user.is_authenticated %}
|
{% if current_user.is_authenticated %}
|
||||||
{% if current_user in thread.watchers %}
|
{% if current_user in thread.watchers %}
|
||||||
<form method="post" action="{{ thread.getUnsubscribeURL() }}" class="float-right">
|
<form method="post" action="{{ thread.getUnsubscribeURL() }}" class="float-end">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="submit" class="btn btn-primary" value="{{ _('Unsubscribe') }}" />
|
<input type="submit" class="btn btn-primary" value="{{ _('Unsubscribe') }}" />
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form method="post" action="{{ thread.getSubscribeURL() }}" class="float-right">
|
<form method="post" action="{{ thread.getSubscribeURL() }}" class="float-end">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="submit" class="btn btn-primary" value="{{ _('Subscribe') }}" />
|
<input type="submit" class="btn btn-primary" value="{{ _('Subscribe') }}" />
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if thread and thread.checkPerm(current_user, "DELETE_THREAD") %}
|
{% if thread and thread.checkPerm(current_user, "DELETE_THREAD") %}
|
||||||
<a href="{{ url_for('threads.delete_thread', id=thread.id) }}" class="float-right mr-2 btn btn-danger">{{ _('Delete') }}</a>
|
<a href="{{ url_for('threads.delete_thread', id=thread.id) }}" class="float-end me-2 btn btn-danger">{{ _('Delete') }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if thread and thread.checkPerm(current_user, "LOCK_THREAD") %}
|
{% if thread and thread.checkPerm(current_user, "LOCK_THREAD") %}
|
||||||
{% if thread.locked %}
|
{% if thread.locked %}
|
||||||
<form method="post" action="{{ url_for('threads.set_lock', id=thread.id, lock=0) }}" class="float-right mr-2">
|
<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="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="submit" class="btn btn-secondary" value="{{ _('Unlock') }}" />
|
<input type="submit" class="btn btn-secondary" value="{{ _('Unlock') }}" />
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form method="post" action="{{ url_for('threads.set_lock', id=thread.id, lock=1) }}" class="float-right mr-2">
|
<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="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="submit" class="btn btn-secondary" value="{{ _('Lock') }}" />
|
<input type="submit" class="btn btn-secondary" value="{{ _('Lock') }}" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user == thread.author and thread.review %}
|
{% if current_user == thread.author and thread.review %}
|
||||||
<a class="btn btn-primary ml-1 float-right mr-2"
|
<a class="btn btn-primary ms-1 float-end me-2"
|
||||||
href="{{ thread.review.package.getURL("packages.review") }}">
|
href="{{ thread.review.package.getURL("packages.review") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
{{ _("Edit Review") }}
|
{{ _("Edit Review") }}
|
||||||
|
@ -65,9 +65,9 @@
|
||||||
<h1>
|
<h1>
|
||||||
{% if thread.review %}
|
{% if thread.review %}
|
||||||
{% if thread.review.recommends %}
|
{% if thread.review.recommends %}
|
||||||
<i class="fas fa-thumbs-up mr-2" style="color:#6f6;"></i>
|
<i class="fas fa-thumbs-up me-2" style="color:#6f6;"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-thumbs-down mr-2" style="color:#f66;"></i>
|
<i class="fas fa-thumbs-down me-2" style="color:#f66;"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if thread.private %}🔒 {% endif %}{{ thread.title }}
|
{% if thread.private %}🔒 {% endif %}{{ thread.title }}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{% if canApproveScn and screenshots %}
|
{% if canApproveScn and screenshots %}
|
||||||
<div class="card my-4">
|
<div class="card my-4">
|
||||||
<h3 class="card-header">{{ _("Screenshots") }}
|
<h3 class="card-header">{{ _("Screenshots") }}
|
||||||
<form class="float-right" method="post" action="{{ url_for('todo.view_editor') }}">
|
<form class="float-end" method="post" action="{{ url_for('todo.view_editor') }}">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input type="hidden" name="action" value="screenshots_approve_all" />
|
<input type="hidden" name="action" value="screenshots_approve_all" />
|
||||||
<input class="btn btn-sm btn-primary" type="submit" value="{{ _('Approve All') }}" />
|
<input class="btn btn-sm btn-primary" type="submit" value="{{ _('Approve All') }}" />
|
||||||
|
@ -47,16 +47,16 @@
|
||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for p in packages %}
|
{% for p in packages %}
|
||||||
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
||||||
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
<span class="float-end" title="Created {{ p.created_at | datetime }}">
|
||||||
<small>
|
<small>
|
||||||
{{ p.created_at | timedelta }} ago
|
{{ p.created_at | timedelta }} ago
|
||||||
</small>
|
</small>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{% if "Other" in p.license.name or "Other" in p.media_license.name %}
|
{% if "Other" in p.license.name or "Other" in p.media_license.name %}
|
||||||
<span class="mr-2 badge badge-info">License</span>
|
<span class="me-2 badge bg-info">License</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="mr-2 badge badge-success">Ready</span>
|
<span class="me-2 badge bg-success">Ready</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ p.title }} by {{ p.author.display_name }}
|
{{ p.title }} by {{ p.author.display_name }}
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
{% for r in releases %}
|
{% for r in releases %}
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
{% if r.task_id %}
|
{% if r.task_id %}
|
||||||
<span class="mr-2 badge badge-warning">{{ _("Importing") }}</span>
|
<span class="me-2 badge bg-warning">{{ _("Importing") }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
||||||
on
|
on
|
||||||
|
@ -108,13 +108,13 @@
|
||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for p in license_needed %}
|
{% for p in license_needed %}
|
||||||
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
||||||
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
<span class="float-end" title="Created {{ p.created_at | datetime }}">
|
||||||
<small>
|
<small>
|
||||||
{{ p.created_at | timedelta }} ago
|
{{ p.created_at | timedelta }} ago
|
||||||
</small>
|
</small>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="mr-2 badge badge-{{ p.state.color }}">{{ p.state.value }}</span>
|
<span class="me-2 badge bg-{{ p.state.color }}">{{ p.state.value }}</span>
|
||||||
|
|
||||||
{{ p.title }} by {{ p.author.display_name }}
|
{{ p.title }} by {{ p.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
|
|
||||||
{% if unfulfilled_meta_packages %}
|
{% if unfulfilled_meta_packages %}
|
||||||
<h2 class="mt-5">
|
<h2 class="mt-5">
|
||||||
<span class="fas fa-exclamation-triangle pr-2" style="color: orange;"></span>
|
<span class="fas fa-exclamation-triangle pe-2" style="color: orange;"></span>
|
||||||
{{ unfulfilled_meta_packages }}
|
{{ unfulfilled_meta_packages }}
|
||||||
{{ _("Unfulfilled Dependencies") }}
|
{{ _("Unfulfilled Dependencies") }}
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -165,16 +165,16 @@
|
||||||
<div class="list-group list-group-flush" style="max-height: 300px; overflow: hidden auto;">
|
<div class="list-group list-group-flush" style="max-height: 300px; overflow: hidden auto;">
|
||||||
{% for p in wip_packages %}
|
{% for p in wip_packages %}
|
||||||
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
||||||
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
<span class="float-end" title="Created {{ p.created_at | datetime }}">
|
||||||
<small>
|
<small>
|
||||||
{{ p.created_at | timedelta }} ago
|
{{ p.created_at | timedelta }} ago
|
||||||
</small>
|
</small>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{% if p.state == p.state.WIP %}
|
{% if p.state == p.state.WIP %}
|
||||||
<span class="mr-2 badge badge-warning">{{ _("WIP") }}</span>
|
<span class="me-2 badge bg-warning">{{ _("WIP") }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="mr-2 badge badge-danger">{{ p.state.value }}</span>
|
<span class="me-2 badge bg-danger">{{ p.state.value }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ p.title }} by {{ p.author.display_name }}
|
{{ p.title }} by {{ p.author.display_name }}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="btn-toolbar float-right">
|
<div class="btn-toolbar float-end">
|
||||||
<div class="btn-group btn-group-sm mr-2">
|
<div class="btn-group btn-group-sm me-2">
|
||||||
{% if is_mtm_only %}
|
{% if is_mtm_only %}
|
||||||
<a class="btn btn-sm btn-primary active" href="{{ url_set_query(mtm=0) }}">
|
<a class="btn btn-sm btn-primary active" href="{{ url_set_query(mtm=0) }}">
|
||||||
{{ _("Minetest-Mods org only") }}
|
{{ _("Minetest-Mods org only") }}
|
||||||
|
|
|
@ -11,13 +11,11 @@
|
||||||
<label for="q" class="sr-only">{{ _('Search all packages') }}</label>
|
<label for="q" class="sr-only">{{ _('Search all packages') }}</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input class="form-control" id="q" name="q" type="text" placeholder="{{ _('Search all packages') }}">
|
<input class="form-control" id="q" name="q" type="text" placeholder="{{ _('Search all packages') }}">
|
||||||
<div class="input-group-append">
|
|
||||||
<input class="btn btn-primary" type="submit" value="{{ _('Search') }}">
|
<input class="btn btn-primary" type="submit" value="{{ _('Search') }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 text-right">
|
<div class="col-md-6 text-end">
|
||||||
{% if only_no_tags %}
|
{% if only_no_tags %}
|
||||||
<a class="btn btn-primary" href="{{ url_set_query(no_tags=0) }}">
|
<a class="btn btn-primary" href="{{ url_set_query(no_tags=0) }}">
|
||||||
{{ _("Missing tags only") }}
|
{{ _("Missing tags only") }}
|
||||||
|
@ -28,7 +26,7 @@
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if check_global_perm(current_user, "EDIT_TAGS") %}
|
{% if check_global_perm(current_user, "EDIT_TAGS") %}
|
||||||
<a class="btn btn-secondary ml-2" href="{{ url_for('admin.tag_list') }}">{{ _("Edit Tags") }}</a>
|
<a class="btn btn-secondary ms-2" href="{{ url_for('admin.tag_list') }}">{{ _("Edit Tags") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -57,12 +55,12 @@
|
||||||
</td>
|
</td>
|
||||||
<td class="tags">
|
<td class="tags">
|
||||||
{% for tag in package.tags %}
|
{% for tag in package.tags %}
|
||||||
<a class="badge badge-primary mr-1"
|
<a class="badge bg-primary me-1"
|
||||||
href="{{ url_set_query(_add={ 'tag': tag.name }) }}">
|
href="{{ url_set_query(_add={ 'tag': tag.name }) }}">
|
||||||
{{ tag.title }}
|
{{ tag.title }}
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<!-- <a class="badge badge-secondary add-btn px-2" href="#">
|
<!-- <a class="badge bg-secondary add-btn px-2" href="#">
|
||||||
<i class="fas fa-plus"></i>
|
<i class="fas fa-plus"></i>
|
||||||
</a> -->
|
</a> -->
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -5,8 +5,8 @@ Topics to be Added
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="float-right">
|
<div class="float-end">
|
||||||
<div class="btn-group btn-group-sm mr-2">
|
<div class="btn-group btn-group-sm me-2">
|
||||||
<a class="btn btn-secondary {% if sort_by=='date' %}active{% endif %}"
|
<a class="btn btn-secondary {% if sort_by=='date' %}active{% endif %}"
|
||||||
href="{{ url_for('todo.topics', q=query, show_discarded=show_discarded, n=n, sort='date') }}">
|
href="{{ url_for('todo.topics', q=query, show_discarded=show_discarded, n=n, sort='date') }}">
|
||||||
{{ _("Sort by date") }}
|
{{ _("Sort by date") }}
|
||||||
|
@ -69,7 +69,7 @@ Topics to be Added
|
||||||
<input type="hidden" name="n" value={{ n }} />
|
<input type="hidden" name="n" value={{ n }} />
|
||||||
<input type="hidden" name="sort" value={{ sort_by or "date" }} />
|
<input type="hidden" name="sort" value={{ sort_by or "date" }} />
|
||||||
<input name="q" type="text" placeholder="Search topics" value="{{ query or ''}}">
|
<input name="q" type="text" placeholder="Search topics" value="{{ query or ''}}">
|
||||||
<input class="btn btn-secondary my-2 my-sm-0 mr-sm-2" type="submit" value="Search" />
|
<input class="btn btn-secondary my-2 my-sm-0 me-sm-2" type="submit" value="Search" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% from "macros/topics.html" import render_topics_table %}
|
{% from "macros/topics.html" import render_topics_table %}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -41,14 +41,14 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right" href="/help/update_config/">
|
<a class="btn btn-secondary float-end" href="/help/update_config/">
|
||||||
{{ _("Help") }}
|
{{ _("Help") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary float-right mr-2" href="{{ url_for('packages.bulk_update_config', username=user.username) }}">
|
<a class="btn btn-secondary float-end me-2" href="{{ url_for('packages.bulk_update_config', username=user.username) }}">
|
||||||
{{ _("See all Update Settings") }}
|
{{ _("See all Update Settings") }}
|
||||||
</a>
|
</a>
|
||||||
{% if outdated_packages %}
|
{% if outdated_packages %}
|
||||||
<form class="float-right mr-2" method="post" action="{{ url_for('todo.apply_all_updates', username=user.username) }}">
|
<form class="float-end me-2" method="post" action="{{ url_for('todo.apply_all_updates', username=user.username) }}">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input class="btn btn-primary" type="submit" value="{{ _("Create All Releases") }}" />
|
<input class="btn btn-primary" type="submit" value="{{ _("Create All Releases") }}" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -73,13 +73,13 @@
|
||||||
{{ _("The recommended resolution is 1920x1080, and screenshots must be at least %(width)dx%(height)d.",
|
{{ _("The recommended resolution is 1920x1080, and screenshots must be at least %(width)dx%(height)d.",
|
||||||
width=920, height=517) }}
|
width=920, height=517) }}
|
||||||
|
|
||||||
<span class="badge badge-danger ml-3">
|
<span class="badge bg-danger ms-3">
|
||||||
{{ _("Way too small") }}
|
{{ _("Way too small") }}
|
||||||
</span>
|
</span>
|
||||||
<span class="badge badge-warning">
|
<span class="badge bg-warning">
|
||||||
{{ _("Too small") }}
|
{{ _("Too small") }}
|
||||||
</span>
|
</span>
|
||||||
<span class="badge badge-secondary">
|
<span class="badge bg-secondary">
|
||||||
{{ _("Not HD") }}
|
{{ _("Not HD") }}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -103,13 +103,13 @@
|
||||||
{% for ss in package.screenshots %}
|
{% for ss in package.screenshots %}
|
||||||
{% if ss.is_low_res() %}
|
{% if ss.is_low_res() %}
|
||||||
{% if ss.is_very_small() %}
|
{% if ss.is_very_small() %}
|
||||||
{% set badge_color = "badge-danger" %}
|
{% set badge_color = "bg-danger" %}
|
||||||
{% elif ss.is_too_small() %}
|
{% elif ss.is_too_small() %}
|
||||||
{% set badge_color = "badge-warning" %}
|
{% set badge_color = "bg-warning" %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set badge_color = "badge-secondary" %}
|
{% set badge_color = "bg-secondary" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class="badge {{ badge_color }} ml-2" title="{{ ss.title }}">
|
<span class="badge {{ badge_color }} ms-2" title="{{ ss.title }}">
|
||||||
{{ ss.width }} x {{ ss.height }}
|
{{ ss.width }} x {{ ss.height }}
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -123,7 +123,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right" href="{{ url_for('todo.tags', author=user.username) }}">
|
<a class="btn btn-secondary float-end" href="{{ url_for('todo.tags', author=user.username) }}">
|
||||||
{{_ ("See All") }}</a>
|
{{_ ("See All") }}</a>
|
||||||
<h2>{{ _("Packages Without Tags") }}</h2>
|
<h2>{{ _("Packages Without Tags") }}</h2>
|
||||||
<p>
|
<p>
|
||||||
|
@ -137,7 +137,7 @@
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
src="{{ package.getThumbnailOrPlaceholder() }}" />
|
||||||
|
|
||||||
<span class="pl-2">
|
<span class="ps-2">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if user == current_user %}
|
{% if user == current_user %}
|
||||||
<a class="btn btn-secondary ml-2" href="{{ url_for('github.view_permissions') }}">
|
<a class="btn btn-secondary ms-2" href="{{ url_for('github.view_permissions') }}">
|
||||||
{{ _("View ContentDB's GitHub Permissions") }}
|
{{ _("View ContentDB's GitHub Permissions") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{% if current_user.rank.atLeast(current_user.rank.MODERATOR) %}
|
{% if current_user.rank.atLeast(current_user.rank.MODERATOR) %}
|
||||||
<a class="btn btn-secondary float-right" href="{{ url_for('admin.audit', username=user.username) }}">
|
<a class="btn btn-secondary float-end" href="{{ url_for('admin.audit', username=user.username) }}">
|
||||||
{{ _("View All") }}
|
{{ _("View All") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -18,10 +18,10 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="mt-5">
|
<p class="mt-5">
|
||||||
<a class="btn btn-primary mr-3" href="{{ url_for('users.claim_forums') }}">
|
<a class="btn btn-primary me-3" href="{{ url_for('users.claim_forums') }}">
|
||||||
{{ _("<b>Yes</b>, I have a forums account") }}
|
{{ _("<b>Yes</b>, I have a forums account") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-primary mr-3" href="{{ url_for('users.register') }}">
|
<a class="btn btn-primary me-3" href="{{ url_for('users.register') }}">
|
||||||
{{ _("<b>No</b>, I don't have one") }}
|
{{ _("<b>No</b>, I don't have one") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary" href="https://forum.minetest.net/ucp.php?mode=register">
|
<a class="btn btn-secondary" href="https://forum.minetest.net/ucp.php?mode=register">
|
||||||
|
|
|
@ -23,7 +23,7 @@ Create Account from Forums User
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span class="badge badge-pill badge-dark mr-2">{{ _("Option 1") }}</span>
|
<span class="badge rounded-pill bg-dark me-2">{{ _("Option 1") }}</span>
|
||||||
{{ _("Use GitHub field in forum profile") }}
|
{{ _("Use GitHub field in forum profile") }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Create Account from Forums User
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span class="badge badge-pill badge-dark mr-2">{{ _("Option 2") }}</span>
|
<span class="badge rounded-pill bg-dark me-2">{{ _("Option 2") }}</span>
|
||||||
{{ _("Verification token") }}
|
{{ _("Verification token") }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn btn-secondary mr-3" href="{{ url_for('users.account', username=user.username) }}">
|
<a class="btn btn-secondary me-3" href="{{ url_for('users.account', username=user.username) }}">
|
||||||
{{ _("Cancel") }}
|
{{ _("Cancel") }}
|
||||||
</a>
|
</a>
|
||||||
<input type="submit"
|
<input type="submit"
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
class="btn btn-danger" />
|
class="btn btn-danger" />
|
||||||
{% if not can_delete and current_user.rank.atLeast(current_user.rank.ADMIN) %}
|
{% if not can_delete and current_user.rank.atLeast(current_user.rank.ADMIN) %}
|
||||||
<input type="submit" name="delete" value="{{ _('Delete Anyway') }}" class="btn btn-danger ml-3" />
|
<input type="submit" name="delete" value="{{ _('Delete Anyway') }}" class="btn btn-danger ms-3" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -33,17 +33,17 @@
|
||||||
<div class="col-sm-2 {{ user.rank }}"
|
<div class="col-sm-2 {{ user.rank }}"
|
||||||
title="{{ _('Rank: %(rank)s.', rank=user.rank.getTitle()) }}">
|
title="{{ _('Rank: %(rank)s.', rank=user.rank.getTitle()) }}">
|
||||||
{% if user.rank == user.rank.ADMIN %}
|
{% if user.rank == user.rank.ADMIN %}
|
||||||
<i class="fas fa-user-cog mr-2"></i>
|
<i class="fas fa-user-cog me-2"></i>
|
||||||
{% elif user.rank == user.rank.MODERATOR %}
|
{% elif user.rank == user.rank.MODERATOR %}
|
||||||
<i class="fas fa-user-shield mr-2"></i>
|
<i class="fas fa-user-shield me-2"></i>
|
||||||
{% elif user.rank == user.rank.EDITOR %}
|
{% elif user.rank == user.rank.EDITOR %}
|
||||||
<i class="fas fa-user-edit mr-2"></i>
|
<i class="fas fa-user-edit me-2"></i>
|
||||||
{% elif user.rank == user.rank.APPROVER %}
|
{% elif user.rank == user.rank.APPROVER %}
|
||||||
<i class="fas fa-user-check mr-2"></i>
|
<i class="fas fa-user-check me-2"></i>
|
||||||
{% elif user.rank == user.rank.BOT %}
|
{% elif user.rank == user.rank.BOT %}
|
||||||
<i class="fas fa-robot mr-2"></i>
|
<i class="fas fa-robot me-2"></i>
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="fas fa-user mr-2"></i>
|
<i class="fas fa-user me-2"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ user.rank.getTitle() }}
|
{{ user.rank.getTitle() }}
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
<span class="col-sm {{ user.rank }}">
|
<span class="col-sm {{ user.rank }}">
|
||||||
{{ user.display_name }}
|
{{ user.display_name }}
|
||||||
{% if user.username != user.display_name %}
|
{% if user.username != user.display_name %}
|
||||||
<span class="text-muted small ml-2">
|
<span class="text-muted small ms-2">
|
||||||
({{ user.username }})
|
({{ user.username }})
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<form class="signin" method="POST">
|
<form class="signin" method="POST">
|
||||||
{{ form.hidden_tag() }}
|
{{ form.hidden_tag() }}
|
||||||
|
|
||||||
<h1 class="h3 mb-4 font-weight-normal">{{ self.title() }}</h1>
|
<h1 class="h3 mb-4 fw-normal">{{ self.title() }}</h1>
|
||||||
|
|
||||||
{{ render_field(form.username, tabindex=110, label_visible=False, placeholder=_("Username or email")) }}
|
{{ render_field(form.username, tabindex=110, label_visible=False, placeholder=_("Username or email")) }}
|
||||||
{{ render_field(form.password, tabindex=120, label_visible=False, placeholder=_("Password")) }}
|
{{ render_field(form.password, tabindex=120, label_visible=False, placeholder=_("Password")) }}
|
||||||
|
@ -25,12 +25,12 @@
|
||||||
<hr class="my-5" />
|
<hr class="my-5" />
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-secondary mr-3" href="{{ url_for('github.start') }}">
|
<a class="btn btn-secondary me-3" href="{{ url_for('github.start') }}">
|
||||||
<i class="fab fa-github mr-1"></i>
|
<i class="fab fa-github me-1"></i>
|
||||||
{{ _("GitHub") }}
|
{{ _("GitHub") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary" href="{{ url_for('users.claim') }}">
|
<a class="btn btn-secondary" href="{{ url_for('users.claim') }}">
|
||||||
<i class="fas fa-user-plus mr-1"></i>
|
<i class="fas fa-user-plus me-1"></i>
|
||||||
{{ _("Register") }}
|
{{ _("Register") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -12,41 +12,41 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{% if user.can_see_edit_profile(current_user) %}
|
{% if user.can_see_edit_profile(current_user) %}
|
||||||
<a class="btn btn-primary float-right" href="{{ url_for('users.profile_edit', username=user.username) }}">
|
<a class="btn btn-primary float-end" href="{{ url_for('users.profile_edit', username=user.username) }}">
|
||||||
<i class="fas fa-pen mr-1"></i>
|
<i class="fas fa-pen me-1"></i>
|
||||||
{{ _("Edit Profile") }}
|
{{ _("Edit Profile") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right mr-3" href="{{ url_for('todo.view_user', username=user.username) }}">
|
<a class="btn btn-secondary float-end me-3" href="{{ url_for('todo.view_user', username=user.username) }}">
|
||||||
<i class="fas fa-tasks mr-1"></i>
|
<i class="fas fa-tasks me-1"></i>
|
||||||
{{ _("To Do List") }}
|
{{ _("To Do List") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right mr-3" href="{{ url_for('report.report', url=url_current()) }}">
|
<a class="btn btn-secondary float-end me-3" href="{{ url_for('report.report', url=url_current()) }}">
|
||||||
<i class="fas fa-flag mr-1"></i>
|
<i class="fas fa-flag me-1"></i>
|
||||||
{{ _("Report") }}
|
{{ _("Report") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.MODERATOR) %}
|
{% if current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.MODERATOR) %}
|
||||||
{% if not user.rank.atLeast(current_user.rank) %}
|
{% if not user.rank.atLeast(current_user.rank) %}
|
||||||
<a class="btn btn-secondary float-right mr-3" href="{{ url_for('users.modtools', username=user.username) }}">
|
<a class="btn btn-secondary float-end me-3" href="{{ url_for('users.modtools', username=user.username) }}">
|
||||||
<i class="fas fa-user-shield mr-1"></i>
|
<i class="fas fa-user-shield me-1"></i>
|
||||||
{{ _("Moderator Tools") }}
|
{{ _("Moderator Tools") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user.email %}
|
{% if user.email %}
|
||||||
<a class="btn btn-secondary float-right mr-3" href="{{ url_for('admin.send_single_email', username=user.username) }}">
|
<a class="btn btn-secondary float-end me-3" href="{{ url_for('admin.send_single_email', username=user.username) }}">
|
||||||
<i class="fas fa-envelope mr-1"></i>
|
<i class="fas fa-envelope me-1"></i>
|
||||||
{{ _("Send Email") }}
|
{{ _("Send Email") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h1 class="ml-3 my-0 {{ user.rank.name }}">
|
<h1 class="ms-3 my-0 {{ user.rank.name }}">
|
||||||
{{ user.display_name }}
|
{{ user.display_name }}
|
||||||
{% if user.username != user.display_name %}
|
{% if user.username != user.display_name %}
|
||||||
<span class="text-muted small ml-2">
|
<span class="text-muted small ms-2">
|
||||||
({{ user.username }})
|
({{ user.username }})
|
||||||
</span>
|
</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -129,7 +129,7 @@
|
||||||
|
|
||||||
{% if not current_user.is_authenticated and user.rank == user.rank.NOT_JOINED and user.forums_username %}
|
{% if not current_user.is_authenticated and user.rank == user.rank.NOT_JOINED and user.forums_username %}
|
||||||
<div class="alert alert-secondary mb-5">
|
<div class="alert alert-secondary mb-5">
|
||||||
<a class="float-right btn btn-default btn-sm"
|
<a class="float-end btn btn-default btn-sm"
|
||||||
href="{{ url_for('users.claim_forums', username=user.forums_username) }}">{{ _("Claim") }}</a>
|
href="{{ url_for('users.claim_forums', username=user.forums_username) }}">{{ _("Claim") }}</a>
|
||||||
|
|
||||||
{{ _("Is this you? Claim your account now!") }}
|
{{ _("Is this you? Claim your account now!") }}
|
||||||
|
@ -139,10 +139,10 @@
|
||||||
{% for medal in medals_unlocked %}
|
{% for medal in medals_unlocked %}
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<div class="card-body media align-items-center">
|
<div class="card-body d-flex align-items-center">
|
||||||
<i class="fas {{ medal.icon }} ml-2 mr-4 text-size"
|
<i class="flex-shrink-0 fas {{ medal.icon }} ms-2 me-4 text-size"
|
||||||
style="font-size: 45px; color: {{ medal.color }};"></i>
|
style="font-size: 45px; color: {{ medal.color }};"></i>
|
||||||
<div class="media-body">
|
<div class="flex-grow-1 ms-3">
|
||||||
<h5 class="mt-0">
|
<h5 class="mt-0">
|
||||||
{{ medal.title }}
|
{{ medal.title }}
|
||||||
</h5>
|
</h5>
|
||||||
|
@ -176,14 +176,14 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if current_user == user or user.checkPerm(current_user, "CHANGE_AUTHOR") %}
|
{% if current_user == user or user.checkPerm(current_user, "CHANGE_AUTHOR") %}
|
||||||
<a class="float-right btn btn-sm btn-primary"
|
<a class="float-end btn btn-sm btn-primary"
|
||||||
href="{{ url_for('packages.create_edit', author=user.username) }}">
|
href="{{ url_for('packages.create_edit', author=user.username) }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus me-1"></i>
|
||||||
{{ _("Create package") }}
|
{{ _("Create package") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if current_user == user or (current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.EDITOR)) %}
|
{% if current_user == user or (current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.EDITOR)) %}
|
||||||
<a class="float-right btn btn-sm btn-secondary mr-2"
|
<a class="float-end btn btn-sm btn-secondary me-2"
|
||||||
href="{{ url_for('todo.tags', author=user.username) }}">
|
href="{{ url_for('todo.tags', author=user.username) }}">
|
||||||
{{ _("View list of tags") }}
|
{{ _("View list of tags") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% from "macros/forms.html" import render_field, render_checkbox_field, render_submit_field %}
|
{% from "macros/forms.html" import render_field, render_checkbox_field, render_submit_field %}
|
||||||
|
|
||||||
<div class="card w-50 text-left" style="margin: 2em auto;">
|
<div class="card w-50 text-start" style="margin: 2em auto;">
|
||||||
<h2 class="card-header">{{ self.title() }}</h2>
|
<h2 class="card-header">{{ self.title() }}</h2>
|
||||||
|
|
||||||
<form action="" method="POST" class="form card-body" role="form">
|
<form action="" method="POST" class="form card-body" role="form">
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<span class="col-auto m-0 p-0">
|
<span class="col-auto m-0 p-0">
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ user.getProfilePicURL() }}" alt="Profile picture" style="max-height: 20px;">
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1" src="{{ user.getProfilePicURL() }}" alt="Profile picture" style="max-height: 20px;">
|
||||||
</span>
|
</span>
|
||||||
<span class="col m-0 p-0 pl-2">
|
<span class="col m-0 p-0 ps-2">
|
||||||
{{ user.display_name }}
|
{{ user.display_name }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
|
|
||||||
<div class="button-group mt-4">
|
<div class="button-group mt-4">
|
||||||
{% if user %}
|
{% if user %}
|
||||||
<a class="btn btn-primary mr-3" href="{{ url_for('users.email_notifications', username=user.username) }}">
|
<a class="btn btn-primary me-3" href="{{ url_for('users.email_notifications', username=user.username) }}">
|
||||||
{{ _("Edit Notification Preferences") }}
|
{{ _("Edit Notification Preferences") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Reference in New Issue