mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Merge branch 'dev-BetterCreditTranslation' into 'dev'
Fixing Credit PAge See merge request crafty-controller/crafty-commander!189
This commit is contained in:
commit
cc52fdeb83
@ -862,4 +862,13 @@ class Helpers:
|
||||
return text[len(prefix):]
|
||||
return text
|
||||
|
||||
@staticmethod
|
||||
def getLangPage(text):
|
||||
lang = text.split("_")[0]
|
||||
region = text.split("_")[1]
|
||||
if region == 'EN':
|
||||
return 'en'
|
||||
else:
|
||||
return lang+"-"+region
|
||||
|
||||
helper = Helpers()
|
||||
|
@ -251,6 +251,7 @@ class PanelHandler(BaseHandler):
|
||||
'error': error,
|
||||
'time': formatted_time,
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"]),
|
||||
'lang_page': helper.getLangPage(self.controller.users.get_user_lang_by_id(exec_user["user_id"])),
|
||||
'super_user': superuser,
|
||||
'api_key': {
|
||||
'name': api_key.name,
|
||||
@ -375,8 +376,6 @@ class PanelHandler(BaseHandler):
|
||||
user_order.remove(server_id)
|
||||
page_data['servers'] = page_servers
|
||||
|
||||
|
||||
|
||||
#num players is set to zero here. If we poll all servers while dashboard is loading it takes FOREVER. We leave this to the
|
||||
#async polling once dashboard is served.
|
||||
page_data['num_players'] = 0
|
||||
@ -1596,7 +1595,8 @@ class PanelHandler(BaseHandler):
|
||||
user_id = self.controller.users.add_user(username, password=password0, email=email, enabled=enabled, superuser=superuser)
|
||||
user_data = {
|
||||
"roles": roles,
|
||||
'lang': lang
|
||||
'lang': lang,
|
||||
'lang_page': helper.getLangPage(lang),
|
||||
}
|
||||
user_crafty_data = {
|
||||
"permissions_mask": permissions_mask,
|
||||
@ -1682,7 +1682,10 @@ class PanelHandler(BaseHandler):
|
||||
|
||||
else:
|
||||
self.set_status(404)
|
||||
page_data = {'lang': helper.get_setting('language')}
|
||||
page_data = {
|
||||
'lang': helper.get_setting('language'),
|
||||
'lang_page': helper.getLangPage(helper.get_setting('language')),
|
||||
}
|
||||
self.render(
|
||||
"public/404.html",
|
||||
translate=self.translator.translate,
|
||||
@ -1704,7 +1707,8 @@ class PanelHandler(BaseHandler):
|
||||
'user_data': exec_user,
|
||||
'hosts_data': self.controller.management.get_latest_hosts_stats(),
|
||||
'show_contribute': helper.get_setting("show_contribute_link", True),
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"])
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"]),
|
||||
'lang_page': helper.getLangPage(self.controller.users.get_user_lang_by_id(exec_user["user_id"])),
|
||||
}
|
||||
|
||||
if page == "remove_apikey":
|
||||
|
@ -39,7 +39,11 @@ class PublicHandler(BaseHandler):
|
||||
error = bleach.clean(self.get_argument('error', "Invalid Login!"))
|
||||
error_msg = bleach.clean(self.get_argument('error_msg', ''))
|
||||
|
||||
page_data = {'version': helper.get_version_string(), 'error': error, 'lang': helper.get_setting('language')}
|
||||
page_data = {
|
||||
'version': helper.get_version_string(),
|
||||
'error': error, 'lang': helper.get_setting('language'),
|
||||
'lang_page': helper.getLangPage(helper.get_setting('language'))
|
||||
}
|
||||
|
||||
# sensible defaults
|
||||
template = "public/404.html"
|
||||
|
@ -75,6 +75,7 @@ class ServerHandler(BaseHandler):
|
||||
'menu_servers': defined_servers,
|
||||
'show_contribute': helper.get_setting("show_contribute_link", True),
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"]),
|
||||
'lang_page': helper.getLangPage(self.controller.users.get_user_lang_by_id(exec_user["user_id"])),
|
||||
'api_key': {
|
||||
'name': api_key.name,
|
||||
'created': api_key.created,
|
||||
@ -84,6 +85,7 @@ class ServerHandler(BaseHandler):
|
||||
} if api_key is not None else None,
|
||||
'superuser': superuser
|
||||
}
|
||||
|
||||
if helper.get_setting("allow_nsfw_profile_pictures"):
|
||||
rating = "x"
|
||||
else:
|
||||
@ -139,7 +141,8 @@ class ServerHandler(BaseHandler):
|
||||
'version_data': "version_data_here", # TODO
|
||||
'user_data': exec_user,
|
||||
'show_contribute': helper.get_setting("show_contribute_link", True),
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"])
|
||||
'lang': self.controller.users.get_user_lang_by_id(exec_user["user_id"]),
|
||||
'lang_page': helper.getLangPage(self.controller.users.get_user_lang_by_id(exec_user["user_id"]))
|
||||
}
|
||||
|
||||
if page == "command":
|
||||
|
@ -9,6 +9,7 @@ class StatusHandler(BaseHandler):
|
||||
def get(self):
|
||||
page_data = {}
|
||||
page_data['lang'] = helper.get_setting('language')
|
||||
page_data['lang_page'] = helper.getLangPage(helper.get_setting('language'))
|
||||
page_data['servers'] = self.controller.servers.get_all_servers_stats()
|
||||
for srv in page_data['servers']:
|
||||
server_data = srv.get('server_data', False)
|
||||
|
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!-- Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z" style="fill: #b9c0d3;"/></svg>
|
After Width: | Height: | Size: 594 B |
@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="{{ data['lang_page'] }}">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
|
@ -3,18 +3,18 @@
|
||||
{% block meta %}
|
||||
{% end %}
|
||||
|
||||
{% block title %}Crafty Controller - Credits{% end %}
|
||||
{% block title %}Crafty Controller - {{ translate('credits', 'pageTitle', data['lang']) }}{% end %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="content-wrapper">
|
||||
|
||||
<!-- Page Title Header Starts-->
|
||||
<!-- Page Title Header Starts-->
|
||||
<div class="row page-title-header">
|
||||
<div class="col-12">
|
||||
<div class="page-header">
|
||||
<h4 class="page-title">Credits
|
||||
<small>Without these people, you wouldn't have Crafty</small>
|
||||
<h4 class="page-title">{{ translate('credits', 'pageTitle', data['lang']) }}
|
||||
<small>{{ translate('credits', 'pageDescription', data['lang']) }}</small>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
@ -22,309 +22,326 @@
|
||||
</div>
|
||||
<!-- Page Title Header Ends-->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 grid-margin">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="far fa-code"></i> Development Team</h4>
|
||||
</div>
|
||||
<div class="row">
|
||||
{% for person in data['staff']['development'] %}
|
||||
<div class="col-md-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
|
||||
<div class="user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}"
|
||||
alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>Crafty's {{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
|
||||
</div> <!-- end of user row -->
|
||||
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="fa fa-book"></i> Support and Documentation Team</h4>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
{% for person in data['staff']['support'] %}
|
||||
<div class="col-md-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
|
||||
<div class="user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}"
|
||||
alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>{{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
|
||||
</div> <!-- end user row-->
|
||||
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="far fa-server"></i> Retired Staff</h4>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
{% for person in data['staff']['retired'] %}
|
||||
<div class="col-md-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
|
||||
<div class="user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}"
|
||||
alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>{{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
|
||||
</div> <!-- end user row-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="far fa-code"></i> {{ translate('credits', 'developmentTeam', data['lang']) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
{% for person in data['staff']['development'] %}
|
||||
<div class="col-lg-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-md-4" style="max-width: fit-content;">
|
||||
|
||||
<div class="col-lg-6 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">Patreon Supporters</h4>
|
||||
<p class="card-description"> A huge <code>thank you</code> to our Patreon supporters! | <span style="color: #9365B8">Last Update: {{ data["lastUpdate"] }}</span></p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Level</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for pat in data["patrons"] %}
|
||||
<tr>
|
||||
<td>{{ pat["name"] }}</td>
|
||||
<td>
|
||||
{% if pat["level"] == "Crafty Sustainer" %}
|
||||
<span class="btn btn-sm btn-info mr-2">Sustainer</span>
|
||||
{% elif pat["level"] == "Crafty Advocate" %}
|
||||
<span class="btn btn-sm btn-primary mr-2">Advocate</span>
|
||||
{% elif pat["level"] == "Crafty Supporter" %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">Supporter</span>
|
||||
<div class="user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}" alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-secondary mr-2">Other</span>
|
||||
<div alt="profil image" class="profile-img img-lg rounded-circle">
|
||||
<img src="/static/assets/images/credits/user-circle-solid.svg" alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
</div>
|
||||
{% end %}
|
||||
</td>
|
||||
</tr>
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">Language Translation</h4>
|
||||
<p class="card-description"> A huge <code>thank you</code> to our community who translate! </p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for person in data['translations'] %}
|
||||
<tr>
|
||||
<td>{{ person }}</td>
|
||||
<td>
|
||||
{% for language in data['translations'][person] %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ language }}</span>
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
</td>
|
||||
</tr>
|
||||
{% end %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>Crafty's {{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div> <!-- end of user row -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- content-wrapper ends -->
|
||||
|
||||
{% end %}
|
||||
<br />
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
<div class="card">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="fa fa-book"></i> {{ translate('credits', 'supportTeam', data['lang'])
|
||||
}}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
{% for person in data['staff']['support'] %}
|
||||
<div class="col-lg-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
|
||||
$( document ).ready(function() {
|
||||
console.log('ready for JS!')
|
||||
<div class="row">
|
||||
<div class="col-md-4" style="max-width: fit-content;">
|
||||
|
||||
});
|
||||
</script>
|
||||
<div class="user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}" alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% else %}
|
||||
<div alt="profil image" class="profile-img img-lg rounded-circle">
|
||||
<img src="/static/assets/images/credits/user-circle-solid.svg" alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
{% end %}
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>{{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
</div> <!-- end user row-->
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="far fa-server"></i> {{ translate('credits', 'retiredStaff', data['lang']) }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
{% for person in data['staff']['retired'] %}
|
||||
<div class="col-lg-6 mb-5">
|
||||
<div class="card rounded shadow-none">
|
||||
<div class="row">
|
||||
<div class="col-md-4" style="max-width: fit-content;">
|
||||
<div class="card-img-top user-avatar mb-auto">
|
||||
{% if person['pic'] %}
|
||||
<img src="{{ person['pic'] }}" alt="profile image" class="profile-img img-lg rounded-circle">
|
||||
{% else %}
|
||||
<div alt="profil image" class="profile-img img-lg rounded-circle">
|
||||
<img src="/static/assets/images/credits/user-circle-solid.svg" alt="profile image">
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="wrapper d-flex align-items-center">
|
||||
<h4 class="mb-0 font-weight-medium">{{ person['name'] }}</h4>
|
||||
</div>
|
||||
|
||||
<div class="wrapper d-flex align-items-center font-weight-medium text-muted">
|
||||
{% if person['loc'] %}
|
||||
<i class="mdi mdi-map-marker-outline mr-2"></i>
|
||||
<p class="mb-0 text-muted">{{ person['loc'] }}</p>
|
||||
{% end %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<div class="wrapper d-flex align-items-start">
|
||||
{% if person['tags'][0] %}
|
||||
<span class="btn btn-sm btn-info mr-2">{{ person['tags'][0] }}</span>
|
||||
{% end %}
|
||||
{% if person['tags'][1] %}
|
||||
{% if type(person['tags'][1]) is list %}
|
||||
<a href="{{ person['tags'][1][1] }}" class="btn btn-sm btn-primary mr-2">{{ person['tags'][1][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-primary mr-2">{{ person['tags'][1] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
{% if person['tags'][2] %}
|
||||
{% if type(person['tags'][2]) is list %}
|
||||
<a href="{{ person['tags'][2][1] }}" class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2][0] }}</a>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">{{ person['tags'][2] }}</span>
|
||||
{% end %}
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<div class="wrapper align-items-start pt-3">
|
||||
{% if person['title'] %}
|
||||
<h5><strong>{{ person['title'] }}</strong></h5>
|
||||
{% end %}
|
||||
<p>{{ person['blurb'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
</div> <!-- end user row-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-6 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="fab fa-patreon"></i> {{ translate('credits', 'patreonSupporter',
|
||||
data['lang'])
|
||||
}}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="card-description"> {{ translate('credits', 'hugeDesc', data['lang']) }}
|
||||
<code>{{ translate('credits', 'thankYou', data['lang']) }}</code> {{ translate('credits', 'patreonDesc', data['lang']) }} | <span style="color: #9365B8">{{ translate('credits', 'patreonUpdate', data['lang']) }} {{ data["lastUpdate"] }}</span>
|
||||
</p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ translate('credits', 'patreonName', data['lang']) }}</th>
|
||||
<th>{{ translate('credits', 'patreonLevel', data['lang']) }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for pat in data["patrons"] %}
|
||||
<tr>
|
||||
<td>{{ pat["name"] }}</td>
|
||||
<td>
|
||||
{% if pat["level"] == "Crafty Sustainer" %}
|
||||
<span class="btn btn-sm btn-info mr-2">Sustainer</span>
|
||||
{% elif pat["level"] == "Crafty Advocate" %}
|
||||
<span class="btn btn-sm btn-primary mr-2">Advocate</span>
|
||||
{% elif pat["level"] == "Crafty Supporter" %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2">Supporter</span>
|
||||
{% else %}
|
||||
<span class="btn btn-sm btn-secondary mr-2">{{ translate('credits', 'patreonOther', data['lang']) }}</span>
|
||||
{% end %}
|
||||
</td>
|
||||
</tr>
|
||||
{% end %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-header header-sm d-flex justify-content-between align-items-center">
|
||||
<h4 class="card-title"><i class="far fa-language"></i> {{ translate('credits', 'translationTitle', data['lang']) }}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="card-text"> {{ translate('credits', 'hugeDesc', data['lang']) }}
|
||||
<code>{{ translate('credits', 'thankYou', data['lang']) }}</code> {{ translate('credits', 'translationDesc', data['lang']) }}
|
||||
</p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ translate('credits', 'translationName', data['lang']) }}</th>
|
||||
<th>{{ translate('credits', 'translator', data['lang']) }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for person in data['translations'] %}
|
||||
<tr>
|
||||
<td>{{ person }}</td>
|
||||
<td class="pb-0">
|
||||
<div class="row">
|
||||
{% for language in data['translations'][person] %}
|
||||
<span class="btn btn-sm btn-inverse-success mr-2" style="margin-bottom: 12px;">{{ language }}</span>
|
||||
{% end %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% end %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- content-wrapper ends -->
|
||||
|
||||
{% end %}
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
|
||||
$(document).ready(function () {
|
||||
console.log('ready for JS!')
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
{% end %}
|
@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="{{ data['lang_page'] }}">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
|
@ -510,6 +510,24 @@
|
||||
"superUser": "Super User",
|
||||
"deleteKeyConfirmation": "Do you want to delete this API key? This cannot be undone.",
|
||||
"deleteKeyConfirmationTitle": "Remove API key ${keyId}?"
|
||||
},
|
||||
"credits": {
|
||||
"pageTitle": "Credits",
|
||||
"pageDescription": "Without these people, you wouldn't have Crafty",
|
||||
"developmentTeam": "Development Team",
|
||||
"supportTeam": "Support and Documentation Team",
|
||||
"retiredStaff": "Retired Staff",
|
||||
"hugeDesc": "A huge",
|
||||
"thankYou": "THANK YOU",
|
||||
"patreonSupporter": "Patreon Supporters",
|
||||
"patreonDesc": "to our Patreon supporters!",
|
||||
"patreonUpdate": "Last Update:",
|
||||
"patreonName": "Name",
|
||||
"patreonLevel": "Level",
|
||||
"patreonOther": "Other",
|
||||
"translationTitle": "Language Translation",
|
||||
"translationDesc": "to our community who translate!",
|
||||
"translationName": "Name",
|
||||
"translator": "Translators"
|
||||
}
|
||||
|
||||
}
|
@ -89,7 +89,7 @@
|
||||
"allServers": "Tous les Serverus",
|
||||
"server": "Serveur",
|
||||
"actions": "Actions",
|
||||
"world": "Monde",
|
||||
"size": "Taille du Serveur",
|
||||
"motd": "MOTD",
|
||||
"version": "Version",
|
||||
"status": "Statut",
|
||||
@ -240,7 +240,7 @@
|
||||
"options": "Options",
|
||||
"restoring": "Restauration de la sauvegarde. Cela peut prendre un peu de temps. S'il vous plaît soyez patient.",
|
||||
"restore": "Restaurer",
|
||||
"confirmRestore": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde. Tous les fichiers du serveur actuel passeront à l'état de sauvegarde et seront irrécupérables.",,
|
||||
"confirmRestore": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde. Tous les fichiers du serveur actuel passeront à l'état de sauvegarde et seront irrécupérables.",
|
||||
"excludedBackups": "Dossiers Exclus : ",
|
||||
"excludedChoose": "Choisir les dossiers à exclure de la sauvegarde",
|
||||
"clickExclude": "Cliquer pour sélectionner les Exclusions",
|
||||
@ -510,5 +510,24 @@
|
||||
"superUser": "Super Utilisateur",
|
||||
"deleteKeyConfirmation": "Es-tu sûr de vouloir supprimer cette clé API? Tu ne pourras plus revenir en arrière.",
|
||||
"deleteKeyConfirmationTitle": "Supprimer la clé API ${keyId}?"
|
||||
},
|
||||
"credits": {
|
||||
"pageTitle": "Crédits",
|
||||
"pageDescription": "Sans ces personnes, vous n'auriez pas Crafty",
|
||||
"developmentTeam": "Equipe de Développement",
|
||||
"supportTeam": "Equipe de Support et de Documentation",
|
||||
"retiredStaff": "Retraités de Crafty",
|
||||
"hugeDesc": "Un Enorme",
|
||||
"thankYou": "MERCI",
|
||||
"patreonSupporter": "Soutiens Patreon",
|
||||
"patreonDesc": "à nos Soutiens Patreon !",
|
||||
"patreonUpdate": "Dernière mise à Jour :",
|
||||
"patreonName": "Nom",
|
||||
"patreonLevel": "Niveau",
|
||||
"patreonOther": "Autre",
|
||||
"translationTitle": "Traductions",
|
||||
"translationDesc": "à notre communauté qui traduit Crafty !",
|
||||
"translationName": "Langue",
|
||||
"translator": "Traducteurs"
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user