French translation of templates files

This commit is contained in:
emy 2018-09-16 20:01:52 +02:00
parent e313fa5c24
commit eae73e2163
8 changed files with 571 additions and 1 deletions

View File

@ -13,4 +13,3 @@ Si vous avez des questions, envoyez-nous un e-mail : {{your_email}}
--
{{your_name}}

View File

@ -0,0 +1,166 @@
{% extends "layout.html" %}
{% block title %}
<title>Gestion des dons</title>
{% endblock %}
{% block body %}
<div class="well">
<div class="container">
<p class="pull-right">
<a class="btn btn-primary" href="#" data-toggle="modal" data-target="#donation-button-modal">
Obtenir un bouton de donation
</a>
<a class="btn btn-default" href="logout">Se déconnecter</a>
</p>
<h1>Gestion des dons</h1>
<p>Utilisez cette page en plus du <a href="https://dashboard.stripe.com">panneau de contrôle Stripe</a> pour davantage d'informations.</p>
</div>
</div>
<div class="container">
{% if first %}
<div class="well">
<p>
You're set up and ready to go! This is your admin panel. Next steps:
</p>
<ol>
<li>
<strong>Set up a cron job to handle monthly donations.</strong>
<a href="https://github.com/SirCmpwn/fosspay/wiki/Recurring-donations-cronjob">
Relevant documentation
</a>.
</li>
<li>
Add some projects. Donors can tell you which project they want to support
when they donate.
</li>
<li>
Customize the look &amp; feel. Look at the contents of the <code>templates</code>
directory - you can copy and paste any of these templates into the
<code>overrides</code> directory and change it to suit your needs.
</li>
<li>
<a href="https://drewdevault.com/donate?project=fosspay">Donate to fosspay upstream</a>?
</li>
<li>
<a href="https://github.com/SirCmpwn/fosspay">Contribute code to fosspay upstream</a>?
</li>
</ol>
</div>
{% endif %}
<h2>Projets</h2>
<div class="row">
<div class="col-md-9">
<table class="table">
<thead>
<tr>
<th style="width: 10%"></th>
<th>Projets</th>
<th>Uniques</th>
<th>Récurrents (actifs)</th>
<th>Récurrents (somme totale)</th>
</tr>
</thead>
<tbody>
{% for project in projects %}
<tr>
<td><button type="button" class="close">&times;</button></td>
<td>{{ project.name }}</td>
<td>{{ "{:.2f}".format(one_times(project) / 100) }}€</td>
<td>{{ "{:.2f}".format(recurring(project) / 100) }}€</td>
<td>{{ "{:.2f}".format(recurring_ever(project) / 100) }}€</td>
</tr>
{% endfor %}
<tr>
<td></td>
<td>(non précisé)</td>
<td>{{ "{:.2f}".format(unspecified_one_times / 100) }}€</td>
<td>{{ "{:.2f}".format(unspecified_recurring / 100) }}€</td>
<td>{{ "{:.2f}".format(unspecified_recurring_ever / 100) }}€</td>
</tr>
<tr>
<td></td>
<td><strong>Total</strong></td>
<td>{{ "{:.2f}".format(total_one_time / 100) }}€</td>
<td>{{ "{:.2f}".format(total_recurring / 100) }}€</td>
<td>{{ "{:.2f}".format(total_recurring_ever / 100) }}€</td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-3 well">
<h4>Ajouter un projet</h4>
<p>Les donateurices ne pourront pas choisir de projet avant que vous en ayez ajouté au moins deux.</p>
<form method="POST" action="{{root}}/create-project">
<div class="form-group">
<input class="form-control" type="text" placeholder="Nom du projet" name="name" />
</div>
<input type="submit" value="Valider" class="btn btn-default pull-right" />
</form>
</div>
</div>
<h2>Dons récents <small>(50 derniers)</small></h2>
<table class="table">
<thead>
<tr>
<th style="min-width: 10rem">Date</th>
<th>Email</th>
<th>Projet</th>
<th>Commentaire</th>
<th>Montant</th>
<th>Type</th>
<th>Payments</th>
</tr>
</thead>
<tbody>
{% for donation in donations %}
<tr>
<td>{{ donation.created.strftime("%d-%m-%Y") }}</td>
<td><a href="mailto:{{ donation.user.email }}">{{ donation.user.email }}</a></td>
<td>{{ donation.project.name if donation.project else "" }}</td>
<td title="{{ donation.comment }}">{{ donation.comment if donation.comment else "" }}</td>
<td>{{ "{:.2f}".format(donation.amount / 100) }}€</td>
<td>
{{ "Unique" if str(donation.type) == "DonationType.one_time" else "Mensuel" }}
{{ "(cancelled)" if not donation.active else "" }}
</td>
<td>
{{donation.payments}}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="modal fade" id="donation-button-modal" tabindex="-1" role="dialog" aria-labelledby="donation-modal-label">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="donation-modal-label">Boutons de donation</h4>
</div>
<div class="modal-body">
<p>
Vous pouvez ajouter un bouton de donation sur vos pages.<br>
Voici à quoi il ressemble :
<a href="{{root}}">
<img src="{{root}}/static/donate-with-fosspay.png" />
</a>
</p>
<p>Si vous ajoutez <code>?project=1</code> à votre URL, cela préselectionnera ce projet
(où <code>1</code> est le 1er projet dans la liste sur cette page) lorsque les utilisateurices arriveront sur la page de don.</p>
<p><strong>Markdown</strong></p>
<pre>[![Donate with fosspay]({{root}}/static/donate-with-fosspay.png)]({{root}})</pre>
<p><strong>HTML</strong></p>
<pre>&lt;a href="{{root}}"&gt;&lt;img src="{{root}}/static/donate-with-fosspay.png" alt="Donate with fosspay" /&gt;&lt;/a&gt;</pre>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
Fermer
</button>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,97 @@
{% if _cfg("public-income") == "yes" %}
<div class="container" style="padding-top: 5rem">
<div class="row">
<div class="col-md-8 col-md-offset-2">
{% set total_sum = recurring_sum + patreon_sum + lp_sum %}
{% set total_count = recurring_count + patreon_count + lp_count %}
{% if _cfg("goal") %}
{% set goal = int(_cfg("goal")) %}
{% if goal < total_sum %}
{# Make the graph still make sense if we exceeded the goal #}
{% set adjusted_goal = total_sum %}
{% else %}
{% set adjusted_goal = goal %}
{% endif %}
{% set recurring_progress = recurring_sum / adjusted_goal %}
{% set patreon_progress = patreon_sum / adjusted_goal %}
{% set lp_progress = lp_sum / adjusted_goal %}
{% set progress = total_sum / goal %}
<div class="progress" style="height: 3rem">
<div
class="progress-bar progress-bar-primary"
style="width: {{ recurring_progress * 100 }}%; line-height: 2.5"
>
<span>{{ "{:.0f}".format(recurring_sum / 100) }}€</span>
</div>
<div
class="progress-bar progress-bar-info"
style="width: {{ patreon_progress * 100 }}%; line-height: 2.5"
>
<span>{{ "{:.0f}".format(patreon_sum / 100) }}€</span>
</div>
<div
class="progress-bar progress-bar-warning"
style="width: {{ lp_progress * 100 }}%; line-height: 2.5"
>
<span>{{ "{:.0f}".format(lp_sum / 100) }}€</span>
</div>
</div>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% if patreon_count or lp_count %}
<p>
{{ "{:.2f}".format(recurring_sum / 100) }}€ par mois
via <strong class="text-primary">{{ domain }}</strong>
({{ recurring_count }} donateurice{{ "s" if recurring_count != 1 else "" }})
</p>
{% if patreon_count %}
<p>
{{ "{:.2f}".format(patreon_sum / 100) }}€ par mois
via
<strong><a
href="https://patreon.com/{{ _cfg("patreon-campaign") }}"
style="color: #51acc7">
Patreon <i class="glyphicon glyphicon-share"></i>
</a></strong> ({{ patreon_count }} donateurice{{ "s" if patreon_count != 1 else "" }})
</p>
{% endif %}
{% if lp_count %}
<p>
{{ "{:.2f}".format(lp_sum / 100) }}€ par mois
via
<strong><a
class="text-warning"
href="https://liberapay.com/{{ _cfg("liberapay-campaign") }}">
Liberapay <i class="glyphicon glyphicon-share"></i></a></strong>
({{ lp_count }} donateurice{{ "s" if lp_count != 1 else "" }})
</p>
{% endif %}
{% endif %}
{% if goal %}
<p class="{{ "text-center" if not patreon_sum else "" }}">
{{ "{:.2f}".format(total_sum / 100)}}€ par mois
sur l'objectif de
{{ "{:.2f}".format(goal / 100) }}€.
</p>
{% else %}
<p>
Supported with ${{ "{:.2f}".format(total_sum / 100) }}
from {{ total_count }} supporters!
</p>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
{% include "goal-summary.html" %}
</div>
</div>
</div>
{% endif %}

View File

@ -0,0 +1,147 @@
{% extends "layout.html" %}
{% block scripts %}
<script>
window.stripe_key = "{{ _cfg("stripe-publish") }}";
window.avatar = "{{ avatar }}";
window.your_name = "{{ _cfg("your-name") }}";
window.default_amount = {{ _cfg("default-amount") }};
window.default_type = "{{ _cfg("default-type") }}";
{% if user %}
window.email = "{{user.email}}";
{% endif %}
</script>
<script src="//checkout.stripe.com/checkout.js"></script>
<script src="static/index.js"></script>
{% endblock %}
{% block body %}
<div class="well">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<img
class="pull-right"
src="https://xn--transposes-i7a.eu/_media/wiki:logo.png"
style="border-radius: 5px; margin-left: 1rem"
width="" height="128" />
<h1>Soutenir le {{ _cfg("your-name") }}</h1>
{% include "summary.html" %}
</div>
</div>
</div>
</div>
<noscript>
<div class="container">
<div class="alert alert-danger">
<p>Cette page requiert Javascript. C'est nécessaire afin d'envoyer vos informations de payement directement à
<a href="https://stripe.com/">Stripe</a> plutôt que de faire confiance à cette plateforme pour les stocker.</p>
</div>
</div>
</noscript>
<div class="container text-center hidden" id="thanks">
{% include "post-donation-message.html" %}
<form id="new-donor-password" class="hidden" action="{{root}}/password-reset" method="POST">
<p>Si vous voulez gérer vos dons plus tard, vous pouvez créer un compte en renseignent un mot de passe dans le champ ci-contre :</p>
<input type="password" placeholder="Mot de passe" name="password" />
<input type="hidden" name="token" id="reset-token" />
<button class="btn btn-primary btn-sm">Valider</button>
</form>
</div>
<div class="container text-center" id="donation-stuff">
<h3>Choississez votre montant :</h3>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="btn-group btn-group-justified amounts" role="group" aria-label="...">
{% for amt in _cfg("default-amounts").split(" ") %}
<div class="btn-group" role="group">
<button data-amount="{{ amt }}" type="button"
class="btn btn-default {{"active" if _cfg("default-amount") == amt else ""}}"
>{{ amt }}€</button>
</div>
{% endfor %}
<div class="btn-group" role="group">
<button data-amount="custom" type="button" class="btn btn-default">Personnalisé</button>
</div>
</div>
</div>
</div>
<div class="row hidden" id="custom-amount" style="margin-top: 20px;">
<div class="col-md-4 col-md-offset-4">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"></span>
<input id="custom-amount-text" type="text" value="13.12"
class="form-control" placeholder="Montant" />
</div>
</div>
</div>
</div>
<h3>Donner :</h3>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="form-group">
<div class="btn-group btn-group-justified frequencies" role="group" aria-label="...">
<div class="btn-group" role="group">
<button data-frequency="once" type="button"
class="btn btn-default {{"active" if _cfg("default-type")=="once" else ""}}"
>Une fois</button>
</div>
<div class="btn-group" role="group">
<button data-frequency="monthly" type="button"
class="btn btn-default {{"active" if _cfg("default-type")=="monthly" else ""}}"
>Tous les mois</button>
</div>
</div>
</div>
</div>
</div>
{% if len(projects) > 1 %}
<h3>Pour quel projet ?</h3>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="form-group">
<select id="project" name="project" class="form-control">
<option value="null"
{{ "selected" if selected_project == None else "" }}>Aucun en particulier</option>
{% for project in projects %}
<option value="{{ project.id }}"
{{ "selected" if selected_project == project.id else "" }}>{{ project.name }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
{% endif %}
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="form-group">
<input type="text" id="comments" class="form-control" placeholder="Ajouter un commentaire ?" maxlength="512" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="alert alert-danger hidden" id="errors">
<p></p>
</div>
<button class="btn btn-block btn-success" id="donate-button">Valider</button>
</div>
</div>
</div>
{% include "goal.html" %}
<hr />
<div class="container text-center">
{% if not user %}
<p>
<small class="text-muted">
Si vous nous avez déjà fait au moins un don, vous pouvez <a href="login">vous connecter</a> pour voir
votre historique ou éditer vos dons récurrents. :)
</small>
</p>
{% endif %}
<p>
<small class="text-muted">
Powered by <a href="https://github.com/SirCmpwn/fosspay">fosspay</a>.
</small>
</p>
</div>
{% endblock %}

View File

@ -0,0 +1,24 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="static/icon.png" type="image/png" />
{% block title %}
<title>Donations pour {{_cfg("your-name")}}</title>
{% endblock %}
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
{% block styles %}{% endblock %}
</head>
<body>
{% block body %}
<div class="container">
{% block container %}
{% endblock %}
</div>
{% endblock %}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
{% block scripts %}{% endblock %}
</body>
</html>

View File

@ -0,0 +1,32 @@
{% extends "layout.html" %}
{% block body %}
<div class="well">
<div class="container">
<h1>Soutenir le {{ _cfg("your-name") }}</h1>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1>Connexion</h1>
{% if errors %}
<div class="alert alert-danger">
<p>
Identifiant ou mot de passe invalide·s.
</p>
</div>
{% endif %}
<form action="{{root}}/login" method="POST">
<div class="form-group">
<input class="form-control" type="text" name="email" placeholder="votre@email.com" />
</div>
<div class="form-group">
<input class="form-control" type="password" name="password" placeholder="Mot de passe" />
</div>
<input type="submit" value="Se connecter" class="btn btn-primary" />
<a style="margin-left: 20px" href="password-reset">Mot de passe perdu</a>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,62 @@
{% extends "layout.html" %}
{% block body %}
<div class="well">
<div class="container">
<p class="pull-right">
<a class="btn btn-primary" href="..">Donner à nouveau</a>
<a class="btn btn-default" href="logout">Se déconnecter</a>
</p>
<h1>Vos dons</h1>
</div>
</div>
<div class="container">
{% if any(recurring(user)) %}
<h2>Dons mensuels</h2>
<table class="table">
<thead>
<tr>
<th style="width: 10%"></th>
<th>Date</th>
<th>Montant</th>
<th>Projet</th>
</tr>
</thead>
<tbody>
{% for donation in recurring(user) %}
<tr>
<td>
<form method="DELETE" action="{{root}}/cancel/{{ donation.id }}">
<button type="submit" class="btn btn-danger btn-sm">Arrêter</button>
</form>
</td>
<td>{{ donation.created.strftime("%d-%m-%Y") }}</td>
<td>{{ "{:.2f}".format(donation.amount / 100) }}€</td>
<td>{{ donation.project.name if donation.project else "Non précisé" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% if any(one_times(user)) %}
<h2>Dons uniques</h2>
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Montant</th>
<th>Projet</th>
</tr>
</thead>
<tbody>
{% for donation in one_times(user) %}
<tr>
<td>{{ donation.created.strftime("%d-%m-%Y") }}</td>
<td>{{ "{:.2f}".format(donation.amount / 100) }}€</td>
<td>{{ donation.project.name if donation.project else "Non précisé" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
{% endblock %}

View File

@ -0,0 +1,43 @@
{% extends "layout.html" %}
{% block body %}
<div class="well">
<div class="container">
<h1>Soutenir le {{ _cfg("your-name") }}</h1>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1>Récupération de votre compte</h1>
{% if errors %}
<div class="alert alert-danger">
<p>
{{ errors }}
</p>
</div>
{% endif %}
{% if done %}
<p>
Un e-mail devrait arriver. En cas de souci vous pouvez nous contacter :
<a href="mailto:{{_cfg("your-email")}}">{{_cfg("your-email")}}</a>.
</p>
{% elif token %}
<form action="{{root}}/password-reset" method="POST">
<div class="form-group">
<input class="form-control" type="password" name="password" placeholder="Nouveau mot de passe" />
<input type="hidden" name="token" value="{{ token }}" />
</div>
<input type="submit" value="Valider" class="btn btn-primary" />
</form>
{% else %}
<form action="{{root}}/password-reset" method="POST">
<div class="form-group">
<input class="form-control" type="text" name="email" placeholder="votre@email.com" />
</div>
<input type="submit" value="Valider" class="btn btn-primary" />
</form>
{% endif %}
</div>
</div>
</div>
{% endblock %}