French template + Small ergnomoy improvements
This commit is contained in:
parent
07d440a4e0
commit
2a02ae829c
4
TODO
4
TODO
@ -4,16 +4,16 @@ None
|
|||||||
|
|
||||||
To fix :
|
To fix :
|
||||||
========
|
========
|
||||||
* Best way to not cache the username on index page
|
* Better way to not cache the username on index page
|
||||||
|
|
||||||
Improvements :
|
Improvements :
|
||||||
==============
|
==============
|
||||||
* French template
|
|
||||||
* User groups
|
* User groups
|
||||||
* Search invoice
|
* Search invoice
|
||||||
* JSON output => do index view
|
* JSON output => do index view
|
||||||
* API
|
* API
|
||||||
* cf TODO in files
|
* cf TODO in files
|
||||||
|
* README file
|
||||||
|
|
||||||
Manage paybacks :
|
Manage paybacks :
|
||||||
=================
|
=================
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setAmount ($amount) {
|
public function setAmount ($amount) {
|
||||||
|
$amount = str_replace(',', '.', $amount);
|
||||||
$this->amount = (int) ($amount * 100); // Amount is stored in cents
|
$this->amount = (int) ($amount * 100); // Amount is stored in cents
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setAmount($amount) {
|
public function setAmount($amount) {
|
||||||
|
$amount = str_replace(',', '.', $amount);
|
||||||
$this->amount = (int) ($amount * 100); // Amount is stored in cents
|
$this->amount = (int) ($amount * 100); // Amount is stored in cents
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{include="header"}
|
{include="header"}
|
||||||
|
|
||||||
<h1 id="title">{$instance_title} - Connexion</h1>
|
<h1 id="title">{$instance_title} - Connection</h1>
|
||||||
|
|
||||||
<form method="post" action="index.php?do=connect" id="connexion_form">
|
<form method="post" action="index.php?do=connect" id="connexion_form">
|
||||||
<p><label for="login" class="label-block">Username : </label><input type="text" name="login" id="login" value="{$user_post}"/></p>
|
<p><label for="login" class="label-block">Username : </label><input type="text" name="login" id="login" value="{$user_post}"/></p>
|
||||||
|
@ -97,8 +97,20 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>{$value->getAmount()}{$currency}</td>
|
<td>{$value->getAmount()}{$currency}</td>
|
||||||
<td>{$value->getWhat()}</td>
|
<td>{$value->getWhat()}</td>
|
||||||
<td><a href="index.php?do=edit_invoice&id={$value->getId()}">Edit</a></td>
|
<td>
|
||||||
<td><a href="index.php?do=delete_invoice&id={$value->getId()}">Delete</a></td>
|
{if condition="$value->getBuyer() == $current_user->getId() || $current_user->getAdmin()"}
|
||||||
|
<a href="index.php?do=edit_invoice&id={$value->getId()}">Edit</a>
|
||||||
|
{else}
|
||||||
|
-
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{if condition="$value->getBuyer() == $current_user->getId() || $current_user->getAdmin()"}
|
||||||
|
<a href="index.php?do=delete_invoice&id={$value->getId()}">Delete</a>
|
||||||
|
{else}
|
||||||
|
-
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/loop}
|
{/loop}
|
||||||
</table>
|
</table>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{include="header"}
|
{include="header"}
|
||||||
|
|
||||||
<h2>Add a bill</h2>
|
<h2>{if condition="$id != 0"}Edit{else}Add{/if} a bill</h2>
|
||||||
|
|
||||||
<form method="post" action="index.php?do=new_invoice" id="invoice_form">
|
<form method="post" action="index.php?do=new_invoice" id="invoice_form">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
{/loop}
|
{/loop}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<p class="center">
|
<p class="center">
|
||||||
<input type="submit" value="Add"/>
|
<input type="submit" value="{if condition='$id != 0'}Edit{else}Add{/if}"/>
|
||||||
{if condition="$id != 0"}<input type="hidden" name="id" value="{$id}"/>{/if}
|
{if condition="$id != 0"}<input type="hidden" name="id" value="{$id}"/>{/if}
|
||||||
<input type="hidden" name="token" value="{$token}"/>
|
<input type="hidden" name="token" value="{$token}"/>
|
||||||
</p>
|
</p>
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<label for="mysql_prefix">Prefix for the created tables : </label><input type="text" name="mysql_prefix" id="mysql_prefix" value="{$mysql_prefix}"/><br/>
|
<label for="mysql_prefix">Prefix for the created tables : </label><input type="text" name="mysql_prefix" id="mysql_prefix" value="{$mysql_prefix}"/><br/>
|
||||||
<em>Note :</em> Leave the field blank to not use any.</p>
|
<em>Note :</em> Leave the field blank to not use any. You must create the necessary tables manually.</p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>General options</legend>
|
<legend>General options</legend>
|
||||||
|
13
tpl/default_fr/connection.html
Normal file
13
tpl/default_fr/connection.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{include="header"}
|
||||||
|
|
||||||
|
<h1 id="title">{$instance_title} - Connexion</h1>
|
||||||
|
|
||||||
|
<form method="post" action="index.php?do=connect" id="connexion_form">
|
||||||
|
<p><label for="login" class="label-block">Identifiant : </label><input type="text" name="login" id="login" value="{$user_post}"/></p>
|
||||||
|
<p><label for="password" class="label-block">Mot de passe : </label><input type="password" name="password" id="password"/> <a href="" onclick="toggle_password('password'); return false;"><img src="img/toggleVisible.png" alt="Afficher / Masquer"/></a></p>
|
||||||
|
<p><input type="checkbox" name="remember_me" id="remember_me" value="1"/><label for="remember_me"> Se souvenir de moi ?</label></p>
|
||||||
|
<p><input type="submit" value="Connexion"/><input type="hidden" name="token" value="{$token}"/></p>
|
||||||
|
<p><a href="mailto:{$email_webmaster}?subject={$instance_title}%20password">Mot de passe oublié ?</a></p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{include="footer"}
|
173
tpl/default_fr/css/style.css
Normal file
173
tpl/default_fr/css/style.css
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
html {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 2em;
|
||||||
|
min-height: calc(100% - 2em);
|
||||||
|
font-family: sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #999;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
form a {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
form img {
|
||||||
|
height: 1.5em;
|
||||||
|
vertical-align: middle;
|
||||||
|
position: absolute;
|
||||||
|
left: .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: auto;
|
||||||
|
text-align: center;
|
||||||
|
max-width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td, table th {
|
||||||
|
padding: 0.5em;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
table th {
|
||||||
|
background-color: #DDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
background-color: #333;
|
||||||
|
padding: 0.5em;
|
||||||
|
text-align: right;
|
||||||
|
color: white;
|
||||||
|
border-top-right-radius: 1em;
|
||||||
|
border-bottom-right-radius: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 3em;
|
||||||
|
border: 0.3em solid green;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"] {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-block {
|
||||||
|
display: inline-block;
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell-disabled {
|
||||||
|
background-color: rgb(221, 221, 221);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=submit] {
|
||||||
|
background-color: green;
|
||||||
|
color: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title, #title a, #title a:visited, #install h1 {
|
||||||
|
background-color: #333;
|
||||||
|
border-bottom: 0.3em solid green;
|
||||||
|
color: white;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu ul {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu li {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#notice {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.5em;
|
||||||
|
background-color: green;
|
||||||
|
padding: 0.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#detailed_summary {
|
||||||
|
margin-top: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#connexion_form {
|
||||||
|
margin: auto;
|
||||||
|
width: 67%;
|
||||||
|
text-align: center
|
||||||
|
}
|
||||||
|
|
||||||
|
#edit_password_form, #edit_user_form, #invoice_form, #notice_form {
|
||||||
|
width: 67%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#edit_password_form p, #edit_user_form p, #notice_form p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#edit_user_admin_rights {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#textarea_notice {
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea#what {
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#list_expenses tr:hover, #balance_table tr:not(:first-child):hover *, .highlight_td {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#user_connected {
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 1em;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
height: 1em;
|
||||||
|
font-size: 0.75em;
|
||||||
|
right: 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
#install {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#install form, #settings_form {
|
||||||
|
width: 67%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error {
|
||||||
|
font-size: 1.5em;
|
||||||
|
color: red;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
}
|
69
tpl/default_fr/edit_users.html
Normal file
69
tpl/default_fr/edit_users.html
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{include="header"}
|
||||||
|
|
||||||
|
{if condition="$view == 'list_users'"}
|
||||||
|
<h2>List des utilisateurs</h2>
|
||||||
|
<p class="center">Vous pouvez également <a href="?do=add_user">ajouter un utilisateur</a>.</p>
|
||||||
|
<table id="edit_users">
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Identifiant</th>
|
||||||
|
<th>Nom affiché</th>
|
||||||
|
<th>Administrateur ?</th>
|
||||||
|
<th>Modifier</th>
|
||||||
|
<th>Supprimer</th>
|
||||||
|
</tr>
|
||||||
|
{loop="users"}
|
||||||
|
<tr>
|
||||||
|
<td>{$value->getId()}</td>
|
||||||
|
<td>{$value->getLogin()}</td>
|
||||||
|
<td>{$value->getDisplayName()}</td>
|
||||||
|
<td>{$value->getAdmin() ? "Yes" : "No"}</td>
|
||||||
|
<td><a href="index.php?do=edit_users&user_id={$value->getId()}">Modifier</a></td>
|
||||||
|
<td>{if condition="$value->getId() != $current_user->getId()"}<a href="index.php?do=delete_user&user_id={$value->getId()}">Supprimer</a>{/if}</td>
|
||||||
|
</tr>
|
||||||
|
{/loop}
|
||||||
|
</table>
|
||||||
|
{elseif condition="$view == 'edit_user'"}
|
||||||
|
<h2>{$user_id != -1 ? 'Modifier' : 'Ajouter'} un utilisateur</h2>
|
||||||
|
<form method="post" action="index.php?do={$user_id != -1 ? 'edit_users' : 'add_user'}" id="edit_user_form">
|
||||||
|
<p>
|
||||||
|
<label for="login" class="label-block">Identifiant : </label><input type="text" name="login" id="login" {if condition="$login_post != ''"} value="{$login_post}" {else} {$user_id != -1 ? 'value="'.$user_data->getLogin().'"' : ''} {/if}/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="display_name" class="label-block">Nom affiché : </label><input type="text" name="display_name" id="display_name" {if condition="$display_name_post != ''"} value="{$display_name_post}" {else} {$user_id != -1 ? 'value="'.$user_data->getDisplayName().'"' : ''} {/if}/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="password" class="label-block">Mot de passe : </label><input type="password" name="password" id="password"/> <a href="" onclick="toggle_password('password'); return false;"><img src="img/toggleVisible.png" alt="Afficher / Masquer"/></a>
|
||||||
|
{if condition="$user_id != -1"}
|
||||||
|
<br/><em>Note :</em> Laissez ce champ vide pour ne pas modifier le mot de passe.
|
||||||
|
{/if}
|
||||||
|
</p>
|
||||||
|
<p id="edit_user_admin_rights">
|
||||||
|
Donner des droits administateurs à cet utilisateur ?<br/>
|
||||||
|
<input type="radio" id="admin_yes" value="1" name="admin" {if condition="$admin_post == 1 || ($admin_post == -1 && $user_id != -1 && $user_data->getAdmin())"} checked{/if}/><label for="admin_yes">Oui</label><br/>
|
||||||
|
<input type="radio" id="admin_no" value="0" name="admin" {if condition="$admin_post == 0 || ($admin_post == -1 && ($user_id == -1 || !$user_data->getAdmin()))"} checked{/if}/><label for="admin_no">Non</label>
|
||||||
|
</p>
|
||||||
|
<p class="center">
|
||||||
|
<input type="submit" value="{$user_id != -1 ? 'Modifier' : 'Ajouter'}"/>
|
||||||
|
{if condition="$user_id != -1"}<input type="hidden" name="user_id" value="{$user_id}"/>{/if}
|
||||||
|
<input type="hidden" name="token" value="{$token}"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{if condition="$user_id != -1"}
|
||||||
|
<h2>Jeton d'identification pour l'utilisateur</h2>
|
||||||
|
<p>Le jeton personnel d'identification à utiliser pour la connection à l'API est : {$user_data->getJsonToken()}.<br/>Si vous pensez qu'il a pu être compromis, vous pouvez <a href="index.php?do=new_token&user_id={$user_data->getId()}">en générer un nouveau</a>.</p>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{elseif condition="$view == 'password'"}
|
||||||
|
<h2>Modifier votre mot de passe</h2>
|
||||||
|
<form method="post" action="index.php?do=password" id="edit_password_form">
|
||||||
|
<p><label for="password" class="label-block">Nouveau mot de passe : </label><input type="password" id="password" name="password"/> <a href="" onclick="toggle_password('password'); return false;"><img src="img/toggleVisible.png" alt="Afficher / Masquer"/></a></p>
|
||||||
|
<p><label for="password_confirm" class="label-block">Confirmation : </label><input type="password" id="password_confirm" name="password_confirm"/> <a href="" onclick="toggle_password('password_confirm'); return false;"><img src="img/toggleVisible.png" alt="Afficher / Masquer"/></a></p>
|
||||||
|
<p class="center"><input type="submit" value="Update"/><input type="hidden" name="token" value="{$token}"</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<h2>Votre jeton de connexion à l'API</h2>
|
||||||
|
<p>Votre jeton personnel de connexion à l'API est : {$json_token}.<br/>Si vous pensez qu'il a pu être compromis, vous pouvez <a href="index.php?do=new_token">en générer un nouveau</a>.</p>
|
||||||
|
{/if}
|
||||||
|
{include="footer"}
|
BIN
tpl/default_fr/favicon-144.png
Normal file
BIN
tpl/default_fr/favicon-144.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
tpl/default_fr/favicon-152.png
Normal file
BIN
tpl/default_fr/favicon-152.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
BIN
tpl/default_fr/favicon-16.png
Normal file
BIN
tpl/default_fr/favicon-16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 525 B |
BIN
tpl/default_fr/favicon-32.png
Normal file
BIN
tpl/default_fr/favicon-32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 578 B |
BIN
tpl/default_fr/favicon.ico
Normal file
BIN
tpl/default_fr/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
7
tpl/default_fr/footer.html
Executable file
7
tpl/default_fr/footer.html
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
{if condition="!$connection"}
|
||||||
|
<p id="user_connected">Connecté en tant que {$current_user->getDisplayName()}.</p>
|
||||||
|
{/if}
|
||||||
|
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
34
tpl/default_fr/header.html
Executable file
34
tpl/default_fr/header.html
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{$instance_title}</title>
|
||||||
|
<link rel="stylesheet" media="screen" type="text/css" href="css/style.css" />
|
||||||
|
<meta name="viewport" content="width=device-width"/>
|
||||||
|
<link rel="icon" href="favicon-32.png" sizes="32x32">
|
||||||
|
<link rel="apple-touch-icon-precomposed" href="favicon-152.png">
|
||||||
|
<meta name="msapplication-TileColor" content="#333333">
|
||||||
|
<meta name="msapplication-TileImage" content="favicon-144.png">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{if condition="!$connection"}
|
||||||
|
<h1 id="title"><a href="{$base_url}">{$instance_title}</a></h1>
|
||||||
|
|
||||||
|
<div id="menu">
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.php?do=new_invoice">Ajouter une dépense</a></li>
|
||||||
|
<li><a href="index.php?do=password">Modifier votre mot de passe</a></li>
|
||||||
|
<li><a href="index.php?do=paybacks">Voir les remboursements globaux</a></li>
|
||||||
|
<li><a href="index.php?do=disconnect">Se déconnecter</a></li>
|
||||||
|
</ul>
|
||||||
|
{if condition="$current_user->getAdmin() == 1"}
|
||||||
|
<ul>
|
||||||
|
<li><a href="index.php?do=manage_paybacks">Gérer les remboursements globaux</a></li>
|
||||||
|
<li><a href="index.php?do=edit_users">Modifier les utilisateurs</a></li>
|
||||||
|
<li><a href="index.php?do=edit_notice">Modifier l'annonce d'accueil</a></li>
|
||||||
|
<li><a href="index.php?do=settings">Préférences</a></li>
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{if condition="!empty($error)"}<p class="error">{$error}</p>{/if}
|
BIN
tpl/default_fr/img/toggleVisible.png
Normal file
BIN
tpl/default_fr/img/toggleVisible.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 332 B |
121
tpl/default_fr/index.html
Executable file
121
tpl/default_fr/index.html
Executable file
@ -0,0 +1,121 @@
|
|||||||
|
{include="header"}
|
||||||
|
|
||||||
|
{if condition="$notice != ''"}
|
||||||
|
<div id="notice"><p>{$notice}</p></div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div id="quick_summary">
|
||||||
|
<h2>Bilan</h2>
|
||||||
|
<p class="center">Lire <em>ligne</em> doit <em>case</em> {$currency} à <em>colonne</em>. Vous pouvez cliquer sur les liens pour confirmer les remboursements.
|
||||||
|
<table id="balance_table">
|
||||||
|
<tr>
|
||||||
|
<th>Doit\À</th>
|
||||||
|
{loop="users"}
|
||||||
|
<th>{$value->getDisplayName()}</th>
|
||||||
|
{/loop}
|
||||||
|
</tr>
|
||||||
|
{loop="users"}
|
||||||
|
<tr>
|
||||||
|
<th>{$value->getDisplayName()}</th>
|
||||||
|
{loop="users"}
|
||||||
|
{if condition="$balances[$value1->getId()][$value2->getId()] === 'X'"}
|
||||||
|
<td class="cell-disabled"></td>
|
||||||
|
{elseif condition="$balances[$value1->getId()][$value2->getId()] === '-' || ($value2->getId() != $current_user->getId() && !$current_user->getAdmin())"}
|
||||||
|
<td>{$balances[$value1->getId()][$value2->getId()]}</td>
|
||||||
|
{else}
|
||||||
|
<td><a href="?do=payall&from={$value1->getId()}&to={$value2->getId()}">{$balances[$value1->getId()][$value2->getId()]}</a></td>
|
||||||
|
{/if}
|
||||||
|
{/loop}
|
||||||
|
</tr>
|
||||||
|
{/loop}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="detailed_summary">
|
||||||
|
<h2>Liste détaillée des dépenses{if condition="$all == 0"} du dernier mois{/if}</h2>
|
||||||
|
|
||||||
|
{if condition="$all == 0"}
|
||||||
|
<p class="center"><a href="?all=1">Afficher toutes les dépenses</a></p>
|
||||||
|
{else}
|
||||||
|
<p class="center"><a href="?all=0">Afficher uniquement les dépenses du dernier mois</a></p>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{if condition="$invoices !== false && count($invoices)>=1"}
|
||||||
|
<table id="list_expenses">
|
||||||
|
<tr>
|
||||||
|
<th>Date</th>
|
||||||
|
<th>Payé par</th>
|
||||||
|
<th>Participants</th>
|
||||||
|
<th>Montant</th>
|
||||||
|
<th>Quoi ?</th>
|
||||||
|
<th>Modifier</th>
|
||||||
|
<th>Supprimer</th>
|
||||||
|
</tr>
|
||||||
|
{loop="invoices"}
|
||||||
|
<tr>
|
||||||
|
<td>{$value->getDate('d/m/Y A')}</td>
|
||||||
|
<td>{$users[$value->getBuyer()]->getDisplayName()}</td>
|
||||||
|
<td>
|
||||||
|
{loop="$value->getUsersIn()->get()"}
|
||||||
|
{$users[$key2]->getDisplayName()}
|
||||||
|
{if condition="$value2 > 1"}
|
||||||
|
({$value2} guests)
|
||||||
|
{elseif condition="$value2 == 1"}
|
||||||
|
({$value2} guest)
|
||||||
|
{/if}
|
||||||
|
{if condition="$value1->getBuyer() != $key2"}
|
||||||
|
-
|
||||||
|
{if condition="$paybacks[$value1->getId()] === false || !in_array($key2, array_keys($paybacks[$value1->getId()]))"}
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
<a href="?do=confirm_payback&from={$key2}&to={$value1->getBuyer()}&invoice_id={$value1->getId()}" title="Confirmer le remboursement">
|
||||||
|
{/if}
|
||||||
|
Reste {$value1->getAmountPerPerson($key2)} {$currency}
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
{else}
|
||||||
|
{if condition="$paybacks[$value1->getId()][$key2]->getAmount() == $value1->getAmountPerPerson($key2)"}
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
<a href="?do=delete_payback&from={$key2}&to={$value1->getBuyer()}&invoice_id={$value1->getId()}" title="Supprimer le remboursement">
|
||||||
|
{/if}
|
||||||
|
Payé
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
{else}
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
<a href="?do=confirm_payback&from={$key2}&to={$value1->getBuyer()}&invoice_id={$value1->getId()}&payback_id={$paybacks[$value1->getId()][$key2]->getId()}" title="Confirmer le remboursement">
|
||||||
|
{/if}
|
||||||
|
Reste {$value1->getAmountPerPerson($key2) - $paybacks[$value1->getId()][$key2]->getAmount()}{$currency}
|
||||||
|
{if condition="$current_user->getId() == $value1->getBuyer() || $current_user->getAdmin()"}
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
<br/>
|
||||||
|
{/loop}
|
||||||
|
</td>
|
||||||
|
<td>{$value->getAmount()}{$currency}</td>
|
||||||
|
<td>{$value->getWhat()}</td>
|
||||||
|
<td>
|
||||||
|
{if condition="$value->getBuyer() == $current_user->getId() || $current_user->getAdmin()"}
|
||||||
|
<a href="index.php?do=edit_invoice&id={$value->getId()}">Modifier</a>
|
||||||
|
{else}
|
||||||
|
-
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{if condition="$value->getBuyer() == $current_user->getId() || $current_user->getAdmin()"}
|
||||||
|
<a href="index.php?do=delete_invoice&id={$value->getId()}">Supprimer</a>
|
||||||
|
{else}
|
||||||
|
-
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/loop}
|
||||||
|
</table>
|
||||||
|
{else}
|
||||||
|
<p class="center">Aucune dépense à afficher.</p>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{include="footer"}
|
6
tpl/default_fr/js/jquery-1.10.2.min.js
vendored
Normal file
6
tpl/default_fr/js/jquery-1.10.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
67
tpl/default_fr/js/main.js
Normal file
67
tpl/default_fr/js/main.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
function set_days_month_year() {
|
||||||
|
var date_day = $('#date_day option:selected').val();
|
||||||
|
var date_month = $('#date_month option:selected').val();
|
||||||
|
var date_year = $('#date_year option:selected').val();
|
||||||
|
|
||||||
|
// Handle day for month
|
||||||
|
if(["4", "6", "9", "11"].indexOf(date_month) > -1) {
|
||||||
|
(! $('#date_day options[value=29]').length) && $('#date_day').append('<option value="29">29</option>');
|
||||||
|
(! $('#date_day options[value=30]').length) && $('#date_day').append('<option value="30">30</option>');
|
||||||
|
$('#date_day option[value=31]').remove();
|
||||||
|
}
|
||||||
|
else if(date_month == "2") {
|
||||||
|
// Handle bissextile years
|
||||||
|
$('#date_day option[value=30]').remove();
|
||||||
|
$('#date_day option[value=31]').remove();
|
||||||
|
|
||||||
|
if(date_year % 4 != 0 || date_year % 400 == 0) {
|
||||||
|
$('#date_day option[value=29]').remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
(! $('#date_day options[value=29]').length) && $('#date_day').append('<option value="29">29</option>');
|
||||||
|
(! $('#date_day options[value=30]').length) && $('#date_day').append('<option value="30">30</option>');
|
||||||
|
(! $('#date_day options[value=31]').length) && $('#date_day').append('<option value="31">31</option>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function guest_user_label(id) {
|
||||||
|
if(document.getElementById('guest_user_'+id).value > 1)
|
||||||
|
document.getElementById('guest_user_'+id+'_label').innerHTML = ' invités';
|
||||||
|
else
|
||||||
|
document.getElementById('guest_user_'+id+'_label').innerHTML = ' invité';
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggle_password(id) {
|
||||||
|
if(document.getElementById(id).type == 'password')
|
||||||
|
document.getElementById(id).type = 'text';
|
||||||
|
else
|
||||||
|
document.getElementById(id).type = 'password';
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#balance_table td').hover(function() {
|
||||||
|
$(this).closest('tr').find('td,th').addClass('highlight_td');
|
||||||
|
var col = $(this).index()+1;
|
||||||
|
$(this).closest('table').find('tr :nth-child('+col+')').addClass('highlight_td');
|
||||||
|
}, function() {
|
||||||
|
$(this).closest('tr').find('td,th').removeClass('highlight_td');
|
||||||
|
var col = $(this).index()+1;
|
||||||
|
$(this).closest('table').find('tr :nth-child('+col+')').removeClass('highlight_td');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#balance_table tr:first-child th:not(:first-child)').hover(function() {
|
||||||
|
var col = $(this).index()+1;
|
||||||
|
$(this).closest('table').find('tr :nth-child('+col+')').addClass('highlight_td');
|
||||||
|
}, function() {
|
||||||
|
var col = $(this).index()+1;
|
||||||
|
$(this).closest('table').find('tr :nth-child('+col+')').removeClass('highlight_td');
|
||||||
|
});
|
||||||
|
|
||||||
|
if($('#invoice_form').length) {
|
||||||
|
$('#invoice_form input[id^=users_in]').each(function () {
|
||||||
|
var id = $(this).attr('id').replace('users_in_', '');
|
||||||
|
guest_user_label(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
52
tpl/default_fr/new_invoice.html
Executable file
52
tpl/default_fr/new_invoice.html
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
{include="header"}
|
||||||
|
|
||||||
|
<h2>{if condition="$id != 0"}Modifier{else}Ajouter{/if} une dépense</h2>
|
||||||
|
|
||||||
|
<form method="post" action="index.php?do=new_invoice" id="invoice_form">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Dépense</legend>
|
||||||
|
<p>
|
||||||
|
<label for="what">Quoi ? </label>
|
||||||
|
</p>
|
||||||
|
<textarea name="what" id="what" rows="10">{$what_post}</textarea>
|
||||||
|
<p>
|
||||||
|
<label for="amount">Montant : </label>
|
||||||
|
<input type="text" name="amount" id="amount" {if condition="$amount_post != 0"} value="{$amount_post}" {/if} size="5"/> {$currency}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="date_day">Date : </label>
|
||||||
|
<select name="date_day" id="date_day">
|
||||||
|
{loop="days"}
|
||||||
|
<option value="{$value}" {if condition="$value == $day_post"}selected{/if}>{$value}</option>
|
||||||
|
{/loop}
|
||||||
|
</select> /
|
||||||
|
<select name="date_month" id="date_month" onchange="set_days_month_year();">
|
||||||
|
{loop="months"}
|
||||||
|
<option value="{$value}" {if condition="$value == $month_post"}selected{/if}>{$value}</option>
|
||||||
|
{/loop}
|
||||||
|
</select> /
|
||||||
|
<select name="date_year" id="date_year" onchange="set_days_month_year();">
|
||||||
|
{loop="years"}
|
||||||
|
<option value="{$value}" {if condition="$value == $year_post"}selected{/if}>{$value}</option>
|
||||||
|
{/loop}
|
||||||
|
</select>
|
||||||
|
<select name="date_hour" id="date_hour">
|
||||||
|
<option value="0" {if condition="$hour_post == 0"}selected{/if}>AM</option>
|
||||||
|
<option value="1" {if condition="$hour_post == 1"}selected{/if}>PM</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>Participants ?</legend>
|
||||||
|
{loop="users"}
|
||||||
|
<input type="checkbox" name="users_in[]" value="{$value->getId()}" id="users_in_{$value->getId()}" {if condition="($current_user->getId() == $value->getId() && empty($users_in)) || in_array($value->getId(), array_keys($users_in))"} checked {/if}/> <label for="users_in_{$value->getId()}">{$value->getDisplayName()}</label> et <input type="text" name="guest_user_{$value->getId()}" id="guest_user_{$value->getId()}" size="1" {if condition="in_array($value->getId(), array_keys($users_in))"} value="{$users_in[$value->getId()]}" {else} value="0" {/if} onkeyup="guest_user_label({$value->getId()});"/><label for="guest_user_{$value->getId()}" id="guest_user_{$value->getId()}_label"> invité</label>.<br/>
|
||||||
|
{/loop}
|
||||||
|
</fieldset>
|
||||||
|
<p class="center">
|
||||||
|
<input type="submit" value="{if condition='$id != 0'}Modifier{else}Ajouter{/id}"/>
|
||||||
|
{if condition="$id != 0"}<input type="hidden" name="id" value="{$id}"/>{/if}
|
||||||
|
<input type="hidden" name="token" value="{$token}"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{include="footer"}
|
65
tpl/default_fr/settings.html
Normal file
65
tpl/default_fr/settings.html
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
{include="header"}
|
||||||
|
|
||||||
|
{if condition="!$show_settings"}
|
||||||
|
<h2>Modifier l'annonce d'accueil</h2>
|
||||||
|
<form method="post" id="notice_form" action="index.php?do=edit_notice">
|
||||||
|
<p>
|
||||||
|
<label for="textarea_notice">Annonce d'accueil :</label><br/>
|
||||||
|
<textarea name="notice" rows="15" id="textarea_notice">{$notice}</textarea>
|
||||||
|
</p>
|
||||||
|
<p><em>Note :</em> Vous pouvez utiliser du balisage HTML dans ce champ.</p>
|
||||||
|
<p class="center">
|
||||||
|
<input type="submit" value="Submit"/>
|
||||||
|
<input type="hidden" name="token" value="{$token}"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{else}
|
||||||
|
<h2>Change settings of your Bouffe@Ulm installation</h2>
|
||||||
|
<form method="post" action="index.php?do=settings" id="settings_form">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Base de données</legend>
|
||||||
|
<p><em>Note :</em> Utilisez ces paramètres avec précaution. Votre base de données ne sera pas mise à jour par le script comme elle l'a été durant l'étape d'installation et vous devrez donc vous en occuper manuellement.</p>
|
||||||
|
<p><label for="mysql_host">Hôte MySQL : </label><input type="text" name="mysql_host" id="mysql_host" value="{$mysql_host}"/></p>
|
||||||
|
|
||||||
|
<p><label for="mysql_login">Login MySQL : </label><input type="text" name="mysql_login" id="mysql_login" value="{$mysql_login}"/></p>
|
||||||
|
<p>
|
||||||
|
<label for="mysql_password">Mot de passe MySQL : </label><input type="password" name="mysql_password" id="mysql_password"/> <a href="" onclick="toggle_password('mysql_password'); return false;"><img src="img/toggleVisible.png" alt="Afficher / masque"/></a><br/>
|
||||||
|
<em>Note :</em> Laissez ce champ vide pour ne pas le modifier.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="mysql_db">Base de données à utiliser : </label><input type="text" name="mysql_db" id="mysql_db" value="{$mysql_db}"/><br/>
|
||||||
|
<em>Note :</em> Vous <em>devez</em> créer cette base de données d'abord.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="mysql_prefix">Préfixe à utiliser pour les tables : </label><input type="text" name="mysql_prefix" id="mysql_prefix" value="{$mysql_prefix}"/><br/>
|
||||||
|
<em>Note :</em> Laissez ce champ vide pour ne pas en utiliser. Vous devez créer les tables manuellement.</p>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>Options générales</legend>
|
||||||
|
<p><label for="instance_title">Titre de l'instance : </label><input type="text" name="instance_title" id="instance_title" value="{$instance_title}"/></p>
|
||||||
|
<p>
|
||||||
|
<label for="base_url">URL de base : </label><input type="text" size="30" name="base_url" id="base_url" value="{$base_url}"/><br/>
|
||||||
|
<em>Note :</em> Correspond à l'URL de base à partir de laquelle vous visitez cette instance. Vous devez conserver le slash ("/") final dans l'adresse.
|
||||||
|
</p>
|
||||||
|
<p><label for="currency">Devise : </label><input type="text" name="currency" id="currency" size="3" value="{$currency}"/></p>
|
||||||
|
<p>
|
||||||
|
<label for="timezone">Fuseau horaire : </label><input type="text" name="timezone" id="timezone" value="{$timezone}"/><br/>
|
||||||
|
<em>Par exemple :</em> Europe/Paris. Voir la doc pour plus d'infos.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="template">Template : </label>
|
||||||
|
<select name="template" id="template">
|
||||||
|
{loop="templates"}
|
||||||
|
<option value="{$value['value']}" {if condition="$value == $current_template"} selected="selected" {/if}>{$value['option']}</option>
|
||||||
|
{/loop}
|
||||||
|
</select
|
||||||
|
</p>
|
||||||
|
<p><label for="email_webmaster">Adresse e-mail du webmaster : </label><input type="text" name="email_webmaster" id="email_webmaster" value="{$email_webmaster}"/></p>
|
||||||
|
</fieldset>
|
||||||
|
<p class="center"><input type="submit" value="Enregistrer"><input type="hidden" name="token" value="{$token}"/></p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{include="footer"}
|
Loading…
Reference in New Issue
Block a user