Project: * Clean-up (Eclipse cruft, unused files, etc...) * Git-specific changes * Maven POMs clean-up and changes for the build system * Version set to 1.0.0-0 in the development branches * Maven plug-ins updated to latest versions * Very partial dev. documentation added
This commit is contained in:
parent
c74e30d5ba
commit
0665a760de
1439 changed files with 1020 additions and 1649 deletions
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr
containers
game.ftlstatic
home.ftlloggedOut.ftlloginFailed.ftlnoSession.ftlpasswordRecoveryOk.ftlreactivate.ftlrules.ftlscope.ftl
types
account.ftlalliance.ftlbanned.ftlbattle.ftlbattles.ftlbugsList.ftlbugsReport.ftlbugsTabs.ftlbugsView.ftlchat.ftlenemies.ftlfleets.ftlfleetsCommand.ftlgetNewPlanet.ftlmaintenance.ftlmap.ftlmessage.ftlmessageBox.ftlmessageTabs.ftlmessageTargets.ftlmessageWriter.ftloffline.ftloverview.ftlpasswordRecovery.ftlplanet.ftlplanets.ftlreactivation.ftlregister.ftlregistered.ftlsplitFleet.ftlstatic.ftlvalidation.ftl
|
@ -0,0 +1,28 @@
|
|||
<#include "../game.ftl">
|
||||
<#macro page title hidePlanets=false>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Legacy Worlds Beta 6 <@version/> - ${title?xhtml}</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="extframe">
|
||||
<div class="internal" id="intframe">
|
||||
<!-- Title and planet list -->
|
||||
<div class="top-centered">
|
||||
<p style="padding: 22px 0px 0px 0px" id="tc-title">${title?xhtml}</p>
|
||||
</div>
|
||||
|
||||
<div class="cframe full-width"><#nested></div>
|
||||
</div>
|
||||
<div class="internal" id="footer">
|
||||
Copyright (C) 2004-2010, <a title="DeepClone Development" href="http://www.deepclone.com">DeepClone Development</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
|
@ -0,0 +1,44 @@
|
|||
<#macro page title>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Legacy Worlds Beta 6 <@version/> - ${title?xhtml}</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="extframe">
|
||||
<div class="internal" id="intframe">
|
||||
<!-- Header -->
|
||||
<a id="hbutton" href="home" title="Page d'accueil de Legacy Worlds"><span>Legacy Worlds Beta 6 <@version/></span></a>
|
||||
<div id="version">version courante : <@full_version/></div>
|
||||
<div class="top-centered" id="tc-title">${title?xhtml}</div>
|
||||
|
||||
<!-- Log-in box -->
|
||||
<div id="lbox">
|
||||
<form method="post" action="login.action">
|
||||
<div>
|
||||
Adresse e-mail : <input type="text" name="mail" value="" size="15" maxlength="128" class='input' /><br/>
|
||||
Mot de passe : <input type="password" name="password" value='' size="15" maxlength="128" class='input' /><br/>
|
||||
<a title="Récupération de mot de passe" href="password-recovery">Mot de passe oublié ?</a>
|
||||
<input type="submit" value='Connexion' class='input' />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Menu -->
|
||||
<a class="mbutton" id="b0" href="scope" title="Portée de ce jalon">Portée</a>
|
||||
<a class="mbutton" id="b1" href="rules" title="Règles du jeu">Règles</a>
|
||||
<a class="mbutton" id="b2" href="register" title="Inscription">Inscription</a>
|
||||
|
||||
<div class="cframe"><#nested></div>
|
||||
</div>
|
||||
<div class="internal" id="footer">
|
||||
Copyright (C) 2004-2010, <a title="DeepClone Development" href="http://www.deepclone.com">DeepClone Development</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
|
@ -0,0 +1,70 @@
|
|||
<#include "../game.ftl">
|
||||
<#macro page title hidePlanets=false>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Legacy Worlds Beta 6 <@version/> - ${title?xhtml}</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="extframe">
|
||||
<div class="internal" id="intframe">
|
||||
<a id="hbutton" href="overview" title="Page Empire"><span>Legacy Worlds Beta 6 <@version/></span></a>
|
||||
<div id="version"><@abbr_gt/>: <@game_time record=data.page.gameTime /> / <@abbr_st/>: ${data.page.serverTime?string("yyyy-MM-dd HH:mm:ss ZZZZZ")}</div>
|
||||
|
||||
<!-- Title and planet list -->
|
||||
<div class="top-centered">
|
||||
<p id="tc-title">${title?xhtml}</p>
|
||||
<#if !hidePlanets>
|
||||
<p> </p>
|
||||
<#if data.page.planets?size == 0>
|
||||
<p id="get-new-planet"><a href="get-planet">Obtenir une nouvelle planète</a></p>
|
||||
<#else>
|
||||
<p id="jump-to-planet"><span class="jtp-text">Aller à la planète</span>: <span>
|
||||
<#list data.page.planets as planet>
|
||||
<a href="planet-${planet.id}">${planet.name?xhtml}</a>
|
||||
</#list>
|
||||
</span></p>
|
||||
</#if>
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
<div id="lbox" class="game-info">
|
||||
<strong>${data.page.empire}</strong>
|
||||
<#if data.page.alliance?has_content>
|
||||
[<strong>${data.page.alliance}</strong>]
|
||||
</#if><br/>
|
||||
<span id="gi-cash">${data.page.cash?string(",##0")}</span> <@abbr_bgc/><br/>
|
||||
<#if data.page.special?has_content>
|
||||
<span class="special-info">
|
||||
<#switch data.page.special>
|
||||
<#case 'v'>EN VACANCES<#break>
|
||||
<#case 's'>PRELIMINAIRES AUX VACANCES<#break>
|
||||
<#case 'q'>EN TRAIN D'ABANDONNER<#break>
|
||||
</#switch>
|
||||
</span>
|
||||
</#if>
|
||||
<br/>
|
||||
<a href="account">Compte</a> - <a href="logout.action">Déconnexion</a>
|
||||
</div>
|
||||
|
||||
<a class="mbutton" id="b0" href="planets" title="Planètes">Planètes</a>
|
||||
<a class="mbutton" id="b1" href="fleets" title="Flottes">Flottes</a>
|
||||
<a class="mbutton" id="b2" href="map" title="Carte de l'univers">Carte</a>
|
||||
<a class="mbutton" id="b3" href="alliance" title="Alliance">Alliance</a>
|
||||
<a class="mbutton" id="b4" href="enemies" title="Gèstion des listes de joueurs et alliances ennemis">Listes d'ennemis</a>
|
||||
<a class="mbutton" id="b5" href="messages" title="Messages">Messages</a>
|
||||
<a class="mbutton" id="b6" href="bugtrack" title="Application de suivi des bugs">Suivi des bugs</a>
|
||||
|
||||
<div class="cframe"><#nested></div>
|
||||
</div>
|
||||
<div class="internal" id="footer">
|
||||
Copyright (C) 2004-2010, <a title="DeepClone Development" href="http://www.deepclone.com">DeepClone Development</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
|
@ -0,0 +1,27 @@
|
|||
<#macro page title>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Legacy Worlds Beta 6 <@version/> - ${title?xhtml}</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="extframe">
|
||||
<div class="internal" id="intframe">
|
||||
<!-- Header -->
|
||||
<a id="hbutton" href="player-session" title="Page d'accueil de Legacy Worlds"><span>Legacy Worlds Beta 6 <@version/></span></a>
|
||||
<div id="version">Version courante : <@full_version/></div>
|
||||
<div class="top-centered" id="tc-title">${title?xhtml}</div>
|
||||
|
||||
<div class="cframe full-width offline"><#nested></div>
|
||||
</div>
|
||||
<div class="internal" id="footer">
|
||||
Copyright (C) 2004-2010, <a title="DeepClone Development" href="http://www.deepclone.com">DeepClone Development</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
|
@ -0,0 +1,33 @@
|
|||
<#macro page title>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
<title>Legacy Worlds Beta 6 <@version/> - ${title?xhtml}</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/main.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="js/jquery-1.4.2.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="extframe">
|
||||
<div class="internal" id="intframe">
|
||||
<!-- Header -->
|
||||
<a id="hbutton" href="home" title="Page d'accueil de Legacy Worlds"><span>Legacy Worlds Beta 6 <@version/></span></a>
|
||||
<div id="version">Version courante : <@full_version/></div>
|
||||
<div class="top-centered" id="tc-title">${title?xhtml}</div>
|
||||
|
||||
<!-- Log-in box -->
|
||||
<div id="lbox">
|
||||
<br/><br/><br/>
|
||||
<a href="logout.action">Déconnexion</a>
|
||||
</div>
|
||||
|
||||
<div class="cframe full-width"><#nested></div>
|
||||
</div>
|
||||
<div class="internal" id="footer">
|
||||
Copyright (C) 2004-2010, <a title="DeepClone Development" href="http://www.deepclone.com">DeepClone Development</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</#macro>
|
66
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/game.ftl
Normal file
66
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/game.ftl
Normal file
|
@ -0,0 +1,66 @@
|
|||
<#macro game_time record>
|
||||
<#if record.years == 1>
|
||||
1 an,
|
||||
<#elseif record.years gt 1 >
|
||||
${record.years?string(",##0")} ans,
|
||||
</#if>
|
||||
<#if record.weeks == 1>
|
||||
1 semaine,
|
||||
<#elseif record.weeks gt 1 >
|
||||
${record.weeks?string} semaines,
|
||||
</#if>
|
||||
<#if record.days == 1>
|
||||
1 jour
|
||||
<#elseif record.days gt 1 >
|
||||
${record.days?string} jours,
|
||||
<#else>
|
||||
premier jour,
|
||||
</#if>
|
||||
${record.hours?string("00")}:00
|
||||
</#macro>
|
||||
<#macro game_duration record>
|
||||
<#if record.years == 1>
|
||||
1 an
|
||||
<#elseif record.years gt 1 >
|
||||
${record.years?string(",##0")} ans
|
||||
</#if>
|
||||
<#if record.weeks == 1>
|
||||
1 semaine
|
||||
<#elseif record.weeks gt 1 >
|
||||
${record.weeks?string} semaines
|
||||
</#if>
|
||||
<#if record.days == 1>
|
||||
1 jour
|
||||
<#elseif record.days gt 1 >
|
||||
${record.days?string} jours
|
||||
</#if>
|
||||
<#if record.hours == 1>
|
||||
1 heure
|
||||
<#elseif record.hours gt 1 >
|
||||
${record.hours?string} heures
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro rl_duration rTime>
|
||||
<#local rlDays = (rTime / 1440)?floor>
|
||||
<#local rlHours = ((rTime - rlDays * 1440) / 60)?floor>
|
||||
<#local rlMinutes = (rTime - rlDays * 1440 - rlHours * 60)>
|
||||
<#if rlDays gt 0>
|
||||
<#if rlDays = 1>1 jour<#else>${rlDays} jours</#if>
|
||||
</#if>
|
||||
<#if rlHours gt 0>
|
||||
<#if rlHours = 1>1 heure<#else>${rlHours} heures</#if>
|
||||
</#if>
|
||||
<#if rlMinutes gt 0>
|
||||
<#if rlMinutes = 1>1 minute<#else>${rlMinutes} minutes</#if>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro duration rTime gTime>
|
||||
<#if data.page.useRLTime>
|
||||
<@rl_duration rTime=rTime />
|
||||
<#else>
|
||||
<span title="<@rl_duration rTime=rTime />"><@game_duration record=gTime /></span>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro abbr_bgc><abbr title="milliards de crédits galactiques">mcg</abbr></#macro>
|
||||
<#macro abbr_st><abbr title="Temps Serveur">TS </abbr></#macro>
|
||||
<#macro abbr_gt><abbr title="Temps dans l'univers du jeu">TJ </abbr></#macro>
|
|
@ -0,0 +1,26 @@
|
|||
<@page title="Legacy Worlds Beta 6 - Jalon 1">
|
||||
<p>
|
||||
Bienvenue sur le premier jalon de la Beta 6 de Legacy Worls.
|
||||
</p>
|
||||
<p> </p>
|
||||
<p>
|
||||
Ceci n'est pas un jeu complet. En fait, la plupart des fonctionnalités avancées de la Beta 5 ont été laissées de côté.
|
||||
Mais il s'agit d'un bon point de départ pour le développement de la Beta 6. La liste complète des fonctionnalités incluses dans cette version
|
||||
peut être trouvée sur la page <a href="scope">Portée</a>.
|
||||
</p>
|
||||
<p> </p>
|
||||
<p>
|
||||
Vous trouverez plus d'informations sur le jeu lui-même sur la page <a href="rules">Règles</a>. Il s'agit basiquement
|
||||
de ce dont vous avez l'habitude : contruire des choses, tuer des gens aux moyens des choses susnommées. Seuls les détails ont changé.
|
||||
</p>
|
||||
<p> </p>
|
||||
<p>
|
||||
Maintenant - c'est un peu inhabituel, mais puisque le but réel de cette version est de tester le système lui-même, vous êtes encouragés à créer
|
||||
des comptes multiples.
|
||||
</p>
|
||||
<p> </p>
|
||||
<p>
|
||||
Bien que cette version puisse être jouée indépendamment de la Beta 5, elle ne dispose pas de forums (bien qu'un système
|
||||
de rapport de bugs ait été inclus) ; il est donc recommandé que vous <a href="http://www.legacyworlds.com">joigniez la Beta 5</a> quoi qu'il en soit.
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,8 @@
|
|||
<@page title="Déconnecté">
|
||||
<p>
|
||||
Vous avez été déconnecté de Legacy Worlds.
|
||||
</p>
|
||||
<p>
|
||||
Merci d'avoir joué!
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,8 @@
|
|||
<@page title="Identité invalide">
|
||||
<p>
|
||||
L'adresse e-mail et le mot de passe que vous avez entrés ne correspondent à aucun compte existant.
|
||||
</p>
|
||||
<p>
|
||||
Veuillez réessayer. Si vous avez oublié votre mot de passe, vous pouvez utiliser le service de <a href="password-recovery">récupération de mot de passe</a>.
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,8 @@
|
|||
<@page title="Automatiquement déconnecté">
|
||||
<p>
|
||||
Votre session a expiré et vous avez été déconnecté de Legacy Worlds.
|
||||
</p>
|
||||
<p>
|
||||
Vous devez vous reconnecter.
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,8 @@
|
|||
<@page title="Récupération de mot de passe réussie">
|
||||
<p>
|
||||
Votre demande de récupération de mot de passe a été traitée avec succès.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez maintenant vous connecter avec le mot de passe que vous venez de définir.
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,11 @@
|
|||
<@page title="Compte désactivé">
|
||||
<p>
|
||||
Votre compte est actuellement désactivé.
|
||||
</p>
|
||||
<p>
|
||||
Vous pouvez soit le laisser tel quel en <a href="logout.action">vous déconnectant</a> ou choisir de <a href="reactivate.action">le réactiver</a>.
|
||||
</p>
|
||||
<p>
|
||||
Veuillez noter que votre adresse e-mail doit toujours être valide si vous voulez réactiver votre compte.
|
||||
</p>
|
||||
</@page>
|
116
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/static/rules.ftl
Normal file
116
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/static/rules.ftl
Normal file
|
@ -0,0 +1,116 @@
|
|||
<@page title="Règles du jeu">
|
||||
<h3>Général</h3>
|
||||
<p>
|
||||
L'ensemble du jeu est basé sur des mises à jour toutes les minutes. Comme ces mises à jour sont calculées en fonction du moment
|
||||
où le serveur du jeu a démarré, elles peuvent intervenir à tout moment.
|
||||
</p>
|
||||
<p>
|
||||
C'est pour cela qu'un <em>temps du jeu</em> est défini. Il correspond à la quantité de mises à jour qui ont été calculées.
|
||||
Une "heure" de temps du jeu correspond à une mise à jour et, en général, à une minute en temps du monde réel.
|
||||
</p>
|
||||
<p>
|
||||
Aucune vraie tentative pour atteindre un jeu équilibré n'a été fait. Il est donc très possible que certains aspects
|
||||
des règles fonctionnent pas comme prévu.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Finances & recherche</h3>
|
||||
<p>
|
||||
Les bénéfices sont majoritairement produits par la population d'un empire. Alors que les bénéfices et charges sont affichés
|
||||
pour une durée de 24h en temps du monde réel, les réserves financières d'un empire augmentent (ou diminuent) en continu.
|
||||
Les bâtiments optionnels nommés <em>Ligne de production générique</em> apportent un revenu supplémentaire.
|
||||
</p>
|
||||
<p>
|
||||
La population génère aussi des points de recherche qui sont utilisés pour mettre à jour les progrès scientifiques d'un empire.
|
||||
Quand une technologie atteint 100% de ses points de recherche requis, elle doit être <em>appliquée</em>, ce qui coûte de l'argent.
|
||||
</p>
|
||||
<p>
|
||||
Deux jeux de trois technologies sont disponibles : les <em>technologies civiles</em> donnent accès à de nouveaux bâtiments,
|
||||
alors que les <em>technologies militaires</em> fournissent de nouveau types de vaisseaux.
|
||||
</p>
|
||||
<p>
|
||||
Si les réserves financières d'un empire atteignent 0 à cause de charges trop élevées, ses flottes vont commencer à se
|
||||
dégrader. S'il ne possède pas de flottes, alors ce sont les bâtiments de ses planètes qui commencent à se dégrader.
|
||||
</p>
|
||||
<p>
|
||||
Il est par contre possible qu'un empire atteigne 0 à cause de la construction de bâtiments ou vaisseaux. Dans ce cas, aucun
|
||||
dommage ne sera infligé, mais la construction sera ralentie.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Gestion de planète</h3>
|
||||
<p>
|
||||
Deux types de bâtiments sont disponibles sans aucune technologie : les <em>fabriques de pièces de vaisseaux</em> (qui permettent la
|
||||
construction de vaisseaux) et les <em>tourelles défensives</em> (qui fournissent une défense statique à vos planètes).
|
||||
</p>
|
||||
<p>
|
||||
La construction et la destruction de bâtiments ne sont pas immédiates. La vitesse à laquelle les bâtiments sont construits
|
||||
ou détruits dépend de la population de la planète considérée. Pendant la construction, le coût financier des bâtiments
|
||||
est prélevé dans les réserves de l'empire à chaque mise à jour.
|
||||
</p>
|
||||
<p>
|
||||
Détruire des bâtiments est bien plus rapide que les construire ; de plus, une petite partie du coût du bâtiment est
|
||||
restituée aux réserves financières de l'empire une fois que le bâtiment a été détruit.
|
||||
</p>
|
||||
<p>
|
||||
La satisfaction d'une planète est déterminée par trois facteurs : le nombre d'emplois fournis par les bâtiments de la planète
|
||||
par rapport à la population de la planète, la puissance des défenses statiques et la quantité de planètes
|
||||
possédées par l'empire.
|
||||
</p>
|
||||
<p>
|
||||
La satisfaction ne change pas immédiatement quand un événement l'affecte. L'évolution est progressive et sa vitesse
|
||||
dépend de son amplitude et de la population totale de la planète.
|
||||
</p>
|
||||
<p>
|
||||
Quand la satisfaction d'une planète est inférieure à 25%, ses habitants se mettent en grève, ce qui réduit les bénéfices,
|
||||
la production et les défenses de la planète.
|
||||
</p>
|
||||
<p>
|
||||
La croissance de la population est directement proportionnelle à la satisfaction de la planète.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Flottes et vaisseaux</h3>
|
||||
<p>
|
||||
Les vaisseaux sont construite sur les planètes selon les mêmes principes que les bâtiments. Par contre, leur vitesse
|
||||
de construction est déterminée par la production militaire de la planète.
|
||||
</p>
|
||||
<p>
|
||||
Les vaisseaux ont deux caractéristiques : leur <em>puissance</em>, qui détermine leur efficacité au combat, et leur
|
||||
<em>temps de vol orbite-à-orbite</em>, qui détermine leur vitesse et les différentes pénalités qui peuvent être
|
||||
infligées à une flottes (redirection, redéploiement, etc.).
|
||||
</p>
|
||||
<p>
|
||||
La puissance d'une flotte correspond à la somme des puissances des vaisseaux qui la composent. Son temps de vol orbite-à-orbite
|
||||
est déterminé par le vaisseau le plus lent de la flotte.
|
||||
</p>
|
||||
<p>
|
||||
Seules les flottes dont le statut est <em>disponible</em> peuvent être déplacées, divisées ou fusionnées. En
|
||||
complément, les flottes dont le statut est <em>déploiement initial</em> n'infligent pas de dommages pendant les
|
||||
combats (par contre, elles peuvent être endommagées). Toutes les flottes peuvent être renommées, dissoutes ou
|
||||
passées d'un mode à l'autre (entre attaque et défense), quel que soit leur statut.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Batailles</h3>
|
||||
<p>
|
||||
Une bataille commence à partir du moment une flotte offensive est présente sur une planète, et se termine quand toutes
|
||||
les flottes offensives sont parties / ont été détruites, ou quand toutes les flottes défensives et défenses planétaires
|
||||
sont parties / ont été détruites. Dans ce dernier cas, l'attaquant dont la flotte est la plus puissante prend contrôle
|
||||
de la planète à la mise à jour suivante.
|
||||
</p>
|
||||
<p>
|
||||
Les batailles sont mises à jour toutes les minutes. En conséquence, il n'y a pas de "rapports de bataille" ; à la place,
|
||||
un historique de la bataille et des événements qui ont eu lieu pendant la bataille est fourni.
|
||||
</p>
|
||||
<p>
|
||||
L'intensité d'une bataille commence à un faible niveau, augmentant progressivement au cours du temps jusqu'à atteindre
|
||||
l'intensité maximale. Cette intensité détermine la quantité de dommages infligés.
|
||||
</p>
|
||||
<p>
|
||||
Les dommages dus aux combats qui sont infligés que ce soit aux bâtiments ou aux vaisseaux s'accumulent au cours du temps.
|
||||
Il n'est pas possible de réparer vaisseaux ou bâtiments.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
</@page>
|
|
@ -0,0 +1,58 @@
|
|||
<@page title="Portée de ce jalon">
|
||||
<p>
|
||||
Ce jalon consiste majoritairement en l'écriture du moteur du jeu et des fonctionnalités
|
||||
administratives de base. De ce fait, le <a href="rules">jeu</a> lui-même est très limité,
|
||||
de même que l'interface.
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Serveur du jeu</h3>
|
||||
<p>
|
||||
Le serveur du jeu tourne indépendamment de toute interface et est en charge de toutes les
|
||||
fonctionnalités administratives et de jeu. Cette version est focalisée sur :
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>bases système</strong> - enregistrement de fichiers journal, accès en cours d'exécution
|
||||
à des "constantes" liées au jeu, internationalisation, communications avec les interfaces utilisateur,</li>
|
||||
<li><strong>comptes</strong> - depuis l'enregistrement jusqu'aux préférences et à la gestion de l'inactivité,</li>
|
||||
<li><strong>système de nommage</strong> - les noms de toutes les entités au sein du jeu (empires et
|
||||
planètes dans cette version) sont gérées par le même sous-système,</li>
|
||||
<li><strong>système de suivi des bugs</strong> - parce qu'il ne sera pas possible d'inclure de forums avant
|
||||
d'être bien plus loin dans le cycle de développement du jeu, le système de suivi des bugs est un outil
|
||||
essentiel,</li>
|
||||
<li><strong>ordonnanceur</strong> - parce que les mises à jour ont quand même besoin d'être d'être calculées,
|
||||
parfois.</li>
|
||||
</ul>
|
||||
<p> </p>
|
||||
|
||||
<h3>Administration du serveur</h3>
|
||||
<p>
|
||||
L'administration du serveur est l'une des composantes principales de cette version, bien que
|
||||
la plupart des gens ne la verront (on peut l'espérer) jamais. Elle est implantée comme une
|
||||
interface utilisateur séparée qui accède au serveur par son interface de communication externe.
|
||||
L'interface d'administration inclut :
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>système de droits</strong> (tous les administrateurs ne sont pas égaux),</li>
|
||||
<li><strong>gestion des comptes</strong>,</li>
|
||||
<li><strong>accès aux paramètres du jeu</strong>,</li>
|
||||
<li><strong>administration du suivi des bugs</strong>,</li>
|
||||
<li><strong>validation de noms</strong>,</li>
|
||||
<li><strong>affichage des fichiers journal</strong>,</li>
|
||||
<li><strong>rapports d'erreurs automatisés</strong>.</li>
|
||||
</ul>
|
||||
<p> </p>
|
||||
|
||||
<h3>Jeu et interface</h3>
|
||||
<p>
|
||||
Bien que je jeu n'apporte rien de réellement nouveau, il est basé sur un système de mise à
|
||||
jour à la minute. Son interface n'est probablement pas appropriée, du fait que la disposition
|
||||
de l'interface externe de la Beta 5 est un peu restreinte quand il s'agit d'afficher toutes
|
||||
les informations requises au sein du jeu. Cette interface est quoi qu'il en soit temporaire.
|
||||
</p>
|
||||
<p>
|
||||
Cette version est disponible en deux langues - anglais et français - parce que le système
|
||||
d'internationalisation a besoin d'être testé. Mais il est extrêmement probable que les futurs
|
||||
jalons ne seront disponibles qu'en anglais.
|
||||
</p>
|
||||
</@page>
|
|
@ -0,0 +1,220 @@
|
|||
<#macro render_preference pref>
|
||||
<#switch pref.type>
|
||||
<#case 'BOOLEAN'>
|
||||
<@form_select label=pref.name name=pref.id id="pref-${pref.id}">
|
||||
<@form_option value="0" text="Non" selected=( pref.value != "1" )/>
|
||||
<@form_option value="1" text="Oui" selected=( pref.value == "1" )/>
|
||||
</@form_select>
|
||||
<#break>
|
||||
<#case 'INTEGER'>
|
||||
<#case 'STRING'>
|
||||
<@form_text label=pref.name name=pref.id id="pref-${pref.id}" value=pref.value />
|
||||
<#break>
|
||||
<#case 'CHOICE'>
|
||||
<@form_select label=pref.name name=pref.id id="pref-${pref.id}">
|
||||
<#list pref.choices as choice>
|
||||
<@form_option value=choice.value text=choice.display selected=( pref.value == choice.value )/>
|
||||
</#list>
|
||||
</@form_select>
|
||||
<#break>
|
||||
</#switch>
|
||||
<#if pref.description?has_content>
|
||||
<@form_extra>${pref.description?xhtml}</@form_extra>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro render_prefs_category category>
|
||||
<@form_part title=category.name />
|
||||
<#list category.preferences as p>
|
||||
<@render_preference pref=p />
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Compte">
|
||||
<@tabs>
|
||||
|
||||
<@tab id="prefs" title="Préférences">
|
||||
<@form name="prefs-form" action="set-preferences" hash="prefs">
|
||||
<#list data.account.preferences as c>
|
||||
<@render_prefs_category category=c />
|
||||
</#list>
|
||||
<@form_extended_submit label="Changer les préférences">
|
||||
<@ff_submit label="Défauts" name="load-default-preferences" />
|
||||
</@form_extended_submit>
|
||||
</@form>
|
||||
</@tab>
|
||||
|
||||
<@tab id="basics" title="Identité">
|
||||
<@form name="lang-form" action="set-language" hash="basics">
|
||||
<@form_part title="Langue du compte" />
|
||||
<@form_select name="language" label="Langue ">
|
||||
<#list data.account.supportedLanguages.languages as lang>
|
||||
<@form_option text=lang.name value=lang.id selected=(lang.id == data.account.language) />
|
||||
</#list>
|
||||
</@form_select>
|
||||
<@form_submit label="Mettre à jour" />
|
||||
</@form>
|
||||
|
||||
<@form name="pwd-form" action="set-password" hash="basics">
|
||||
<@form_part title="Changement de mot de passe" />
|
||||
<#if data.authError!false>
|
||||
<@form_error>Mot de passe incorrect</@form_error>
|
||||
</#if>
|
||||
<@form_pwd label="Mot de passe actuel " name="current" />
|
||||
<#switch data.passwordError!"">
|
||||
<#case "EMPTY">
|
||||
<@form_error>Mot de passe vide.</@form_error>
|
||||
<#break>
|
||||
<#case "TOO_WEAK">
|
||||
<@form_error>Ce mot de passe est trop faible.</@form_error>
|
||||
<#break>
|
||||
<#case "MISMATCH">
|
||||
<@form_error>Le mot de passe et sa confirmation ne sont pas identiques.</@form_error>
|
||||
<#break>
|
||||
<#case "PROHIBITED">
|
||||
<@form_error>Vous ne pouvez pas utiliser ce mot de passe ici.</@form_error>
|
||||
<#break>
|
||||
<#default>
|
||||
<@form_extra>Au moins 6 caractères, incluant à la fois des lettres et des chiffres. Bonus pour les caractères spéciaux, les espaces et les mots de passe extrèmement longs.</@form_extra>
|
||||
</#switch>
|
||||
<@form_pwd label="Mot de passe " name="password" />
|
||||
<@form_pwd label="Mot de passe (confirmation) " name="passwordConfirm" />
|
||||
<@form_submit label="Mettre à jour" />
|
||||
</@form>
|
||||
|
||||
<#if data.account.mailChange?has_content>
|
||||
<#local mc = data.account.mailChange>
|
||||
<#if mc.used>
|
||||
<@form name="mail-form" action="set-address" hash="basics">
|
||||
<@form_part title="Changement d'adresse e-mail" />
|
||||
<tr class="form-field">
|
||||
<th>Adresse actuelle :</th>
|
||||
<td>${data.account.address?xhtml}</td>
|
||||
</tr>
|
||||
<@form_extra>
|
||||
Vous pourrez demander un changement d'adresse e-mail à ${mc.until?string("HH:mm:ss (ZZZZZ)")}.
|
||||
</@form_extra>
|
||||
</@form>
|
||||
<#else>
|
||||
<@form name="mail-form" action="confirm-set-address" hash="basics">
|
||||
<@form_part title="Changement d'adresse e-mail" />
|
||||
<tr class="form-field">
|
||||
<th>Adresse actuelle :</th>
|
||||
<td>${data.account.address?xhtml}</td>
|
||||
</tr>
|
||||
<@form_extra>
|
||||
Vous êtes en train de demander un changement d'adresse e-mail pour <em>${mc.newAddress?xhtml}</em>.<br/>
|
||||
Votre requête va expirer à ${mc.until?string("HH:mm (ZZZZZ)")}.
|
||||
</@form_extra>
|
||||
<#if data.codeError!false>
|
||||
<@form_error>Code de confirmation erroné</@form_error>
|
||||
</#if>
|
||||
<@form_text name="code" id="mail-confirmation-code" value="${data.code!}" maxLength=64 label="Code de confirmation" />
|
||||
<@form_extended_submit label="Changer d'adresse">
|
||||
<@ff_submit label="Annuler" name="cancel-set-address" />
|
||||
</@form_extended_submit>
|
||||
</@form>
|
||||
</#if>
|
||||
<#else>
|
||||
<@form name="mail-form" action="set-address" hash="basics">
|
||||
<@form_part title="Changement d'adresse e-mail" />
|
||||
<#if data.mailAuthError!false>
|
||||
<@form_error>Mot de pase erroné</@form_error>
|
||||
</#if>
|
||||
<tr class="form-field">
|
||||
<th>Current address:</th>
|
||||
<td>${data.account.address?xhtml}</td>
|
||||
</tr>
|
||||
<@form_pwd label="Mot de passe actuel " name="password" id="current-2" />
|
||||
<#switch data.mailError!"">
|
||||
<#case "EMPTY">
|
||||
<@form_error>Adresse e-mail vide.</@form_error>
|
||||
<#break>
|
||||
<#case "INVALID">
|
||||
<@form_error>Adresse e-mail invalide.</@form_error>
|
||||
<#break>
|
||||
<#case "IN_USE">
|
||||
<@form_error>Cette adresse e-mail est déjà associée à un compte.</@form_error>
|
||||
<#break>
|
||||
<#case "SEND_FAIL">
|
||||
<@form_error>Impossible d'envoyer un code de confirmation à cette adresse.</@form_error>
|
||||
<#break>
|
||||
<#case "MISMATCH">
|
||||
<@form_error>L'adresse e-mail et sa confirmation ne sont pas identiques.</@form_error>
|
||||
<#break>
|
||||
<#default>
|
||||
<@form_extra>L'adresse e-mail <em>DOIT</em> exister.</@form_extra>
|
||||
</#switch>
|
||||
<@form_text label="Adresse e-mail " maxLength=128 name="mail" value=data.mail! />
|
||||
<@form_text label="Adresse e-mail (confirmation) " maxLength=128 name="mailConfirm" value=data.mail! />
|
||||
<@form_submit label="Mettre à jour" />
|
||||
</@form>
|
||||
</#if>
|
||||
</@tab>
|
||||
|
||||
<@tab id="status" title="Statut">
|
||||
<@form name="game-credits" action="no-action" hash="status">
|
||||
<@form_part title="Crédits de jeu" />
|
||||
<tr class="form-field">
|
||||
<th>Crédits de jeu:</th>
|
||||
<td>${data.account.gameCredits?string(',##0')}</td>
|
||||
</tr>
|
||||
<@form_extra>
|
||||
Les crédits de jeu ne peuvent pas être utilisés actuellement. Par contre, ils seront accumulés au cours du cycle de développement de LWB6.
|
||||
Vous les obtenez en rapportant des bugs.
|
||||
</@form_extra>
|
||||
</@form>
|
||||
|
||||
<@form name="vacation-form" action="toggle-vacation" hash="status">
|
||||
<@form_part title="Mode vacances" />
|
||||
<tr class="form-field">
|
||||
<th>Crédits de vacances :</th>
|
||||
<td>${data.account.vacCredits?string(',##0')}</td>
|
||||
</tr>
|
||||
<tr class="form-field">
|
||||
<th>Durée maximale :</th>
|
||||
<td>
|
||||
<#if data.account.vacTime?has_content>
|
||||
approximativement <@game_duration record=data.account.vacTime />
|
||||
<#else>
|
||||
moins d'une heure
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
<#if data.account.vacStart?has_content>
|
||||
<tr class="form-field">
|
||||
<th>Début de vacances :</th>
|
||||
<td>${data.account.vacStart?string("HH:mm (yyyy-MM-dd ZZZZZ)")}</td>
|
||||
</tr>
|
||||
<#if data.page.special == 'v'>
|
||||
<@form_submit label="Quitter le mode vacances" />
|
||||
<#else>
|
||||
<@form_submit label="Annuler le mode vacances" />
|
||||
</#if>
|
||||
<#elseif !data.page.special?has_content && data.account.vacTime?has_content>
|
||||
<@form_submit label="Entrer en mode vacances" />
|
||||
</#if>
|
||||
</@form>
|
||||
|
||||
<#if !data.page.special?has_content>
|
||||
<@form name="quit-form" action="quit" hash="status">
|
||||
<@form_part title="Quitter le jeu" />
|
||||
<@form_extra>
|
||||
Si vous cliquez le bouton ci-dessous, votre compte sera désactivé après un délai de 24h. Vous pourrez le réactiver pendant les 6 prochains mois, délai après lequel il sera supprimé.
|
||||
</@form_extra>
|
||||
<@form_text label="Raison de quitter (optionel) " name="reason" value="" />
|
||||
<@form_submit label="Quitter le jeu" />
|
||||
</@form>
|
||||
<#elseif data.page.special == 'q'>
|
||||
<@form name="quit-form" action="cancel-quit" hash="status">
|
||||
<@form_part title="Quitter le jeu" />
|
||||
<@form_extra>
|
||||
Votre compte sera désactivé à ${data.account.quitGame?string("HH:mm (yyyy-MM-dd ZZZZZ)")}.
|
||||
</@form_extra>
|
||||
<@form_submit label="Annuler" />
|
||||
</@form>
|
||||
</#if>
|
||||
</@tab>
|
||||
|
||||
</@tabs>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,268 @@
|
|||
<#macro show_alliance alliance>
|
||||
<@dt_main>
|
||||
<@dt_entry title="Tag ">${alliance.tag?xhtml}</@dt_entry>
|
||||
<@dt_entry title="Nom ">${alliance.name?xhtml}</@dt_entry>
|
||||
<@dt_entry title="Dirigeant ">${alliance.leaderName?xhtml}</@dt_entry>
|
||||
<@dt_entry title="Planètes ">${alliance.planets?string(",##0")}</@dt_entry>
|
||||
<@dt_entry title=""><a href="msg-alliance-${alliance.id}">Envoyer un message</a></@dt_entry>
|
||||
</@dt_main>
|
||||
</#macro>
|
||||
<#macro alliance_info_tab>
|
||||
|
||||
<@tab id="info" title="Autres alliances">
|
||||
|
||||
<@form action="alliance-info" name="alliance-info" hash="info">
|
||||
<@form_text name="tag" id="ai-tag" label="Tag de l'alliance" value=data.requested! maxLength=5 />
|
||||
<@form_submit label="Obtenir les informations" />
|
||||
</@form>
|
||||
|
||||
<#if data.info?has_content>
|
||||
<@show_alliance alliance=data.info />
|
||||
</#if>
|
||||
|
||||
</@tab>
|
||||
|
||||
</#macro>
|
||||
<#macro alliance_creation_tab>
|
||||
|
||||
<#if data.creation?has_content>
|
||||
<#assign tag = data.creation.tag!>
|
||||
<#assign tagError = data.creation.tagError!>
|
||||
<#assign name = data.creation.name!>
|
||||
<#assign nameError = data.creation.nameError!>
|
||||
<#else>
|
||||
<#assign tag = "">
|
||||
<#assign tagError = "">
|
||||
<#assign name = "">
|
||||
<#assign nameError = "">
|
||||
</#if>
|
||||
|
||||
<@tab id="create-alliance" title="Créer">
|
||||
<@form action="create-alliance" name="create-alliance" hash="create-alliance">
|
||||
<#switch tagError>
|
||||
<#case "EMPTY"><@form_error>Veuillez indiquer le tag de votre alliance.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Ce tag est invalide.</@form_error><#break>
|
||||
<#case "UNAVAILABLE"><@form_error>Ce tag est utilisé par une autre alliance.</@form_error></break>
|
||||
</#switch>
|
||||
<@form_text name="tag" id="ca-tag" label="Tag de l'alliance " value=tag maxLength=5 />
|
||||
|
||||
<#switch nameError>
|
||||
<#case "EMPTY"><@form_error>Veuillez spécifier le nom de votre alliance.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Ce nom est invalide.</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text name="name" id="ca-name" label="Nom de l'alliance " value=name maxLength=5 />
|
||||
|
||||
<@form_submit label="Créer une alliance" />
|
||||
</@form>
|
||||
</@tab>
|
||||
|
||||
</#macro>
|
||||
<#macro alliance_join_tab>
|
||||
|
||||
<@tab id="join-alliance" title="Rejoindre">
|
||||
<@form action="join-alliance" name="join-alliance" hash="join-alliance">
|
||||
<#if data.joinFailure?has_content>
|
||||
<@form_error>Alliance non trouvée.</@form_error>
|
||||
</#if>
|
||||
<@form_text name="tag" id="ja-tag" label="Tag de l'alliance" value=data.joinFailure! maxLength=5 />
|
||||
<@form_submit label="Rejoindre cette alliance" />
|
||||
</@form>
|
||||
</@tab>
|
||||
|
||||
</#macro>
|
||||
<#macro no_alliance>
|
||||
|
||||
<#if data.page.special! != 'v'>
|
||||
<@alliance_join_tab />
|
||||
<@alliance_creation_tab />
|
||||
</#if>
|
||||
|
||||
</#macro>
|
||||
<#macro alliance_joining_tab>
|
||||
|
||||
<@tab id="join-alliance" title="Requête envoyée">
|
||||
<@lineform action="cancel-join" hash="join-alliance">
|
||||
Une requête pour rejoindre <strong>${alliance.main.tag?xhtml}</strong> a été envoyée.
|
||||
<#if data.page.special! != 'v'>
|
||||
<@ff_submit label="Annuler" />
|
||||
</#if>
|
||||
</@lineform>
|
||||
<@show_alliance alliance=alliance.main />
|
||||
</@tab>
|
||||
|
||||
</#macro>
|
||||
<#macro alliance_planets pList>
|
||||
<@tab id="planets" title="Planètes">
|
||||
|
||||
<#if pList?size == 0>
|
||||
<p>Il n'y a pas de planètes dans cette alliance.</p>
|
||||
<#return>
|
||||
</#if>
|
||||
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=80 centered=true>Coordonnées</@lv_column>
|
||||
<@lv_column width=150>Planètes</@lv_column>
|
||||
<@lv_column width=150>Propriétaire</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pList as planet>
|
||||
<#if planet.battle>
|
||||
<#local bStart = "<span class='enemy-fleet' style='font-weight:bold'>">
|
||||
<#local bEnd = "</span>">
|
||||
<#else>
|
||||
<#local bStart = " ">
|
||||
<#local bEnd = " ">
|
||||
</#if>
|
||||
|
||||
<@lv_line>
|
||||
<@lv_column centered=true>${bStart}(${planet.x},${planet.y};${planet.orbit})${bEnd}</@lv_column>
|
||||
<@lv_column><a href="planet-${planet.id}">${bStart}${planet.name?xhtml}${bEnd}</a></@lv_column>
|
||||
<@lv_column>${bStart}${planet.owner?xhtml}${bEnd}</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#if planet.battle>
|
||||
<@lv_line>
|
||||
<td> </td>
|
||||
<td colspan="2">
|
||||
Situation militaire:
|
||||
<strong class="own-fleet">${planet.defence?string(",##0")}</strong>
|
||||
contre
|
||||
<strong class="enemy-fleet">${planet.attack?string(",##0")}</strong>
|
||||
</td>
|
||||
</@lv_line>
|
||||
</#if>
|
||||
</#list>
|
||||
</@listview>
|
||||
|
||||
</@tab>
|
||||
</#macro>
|
||||
<#macro alliance_members mList isLeader empty="">
|
||||
|
||||
<#if mList?size == 0 && empty != "">
|
||||
<p>${empty?xhtml}</p>
|
||||
<#return>
|
||||
</#if>
|
||||
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<#if isLeader && data.page.special! != 'v'>
|
||||
<@lv_column width=40 centered=true> </@lv_column>
|
||||
</#if>
|
||||
<@lv_column width="x">Empire</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list mList as member>
|
||||
<@lv_line>
|
||||
<#if isLeader && data.page.special! != 'v'>
|
||||
<@lv_column centered=true>
|
||||
<#if member.name == data.page.empire>
|
||||
|
||||
<#else>
|
||||
<input type="checkbox" name="members" value="${member.id}" />
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</#if>
|
||||
<@lv_column>
|
||||
<#if member.name == data.page.empire>
|
||||
${member.name?xhtml}
|
||||
<#else>
|
||||
<a href="msg-empire-${member.id}">${member.name?xhtml}</a>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
|
||||
</#macro>
|
||||
<#macro alliance_member_page>
|
||||
<#local leader = alliance.leader?has_content>
|
||||
|
||||
<@tab id="in-alliance" title="Alliance">
|
||||
<@lineform action="leave-alliance" hash="join-alliance">
|
||||
Vous êtes
|
||||
<#if alliance.leader?has_content>
|
||||
le dirigeant
|
||||
<#else>
|
||||
un membre
|
||||
</#if>
|
||||
de <strong>${alliance.main.tag?xhtml}</strong>.
|
||||
<#if data.page.special! != 'v'>
|
||||
<@ff_submit label="Quitter l'alliance" />
|
||||
</#if>
|
||||
</@lineform>
|
||||
<@show_alliance alliance=alliance.main />
|
||||
</@tab>
|
||||
|
||||
<@alliance_planets pList=alliance.member.planets />
|
||||
|
||||
<@tab id="members" title="Members">
|
||||
<#if leader && alliance.member.members?size gt 1 && data.page.special! != 'v'>
|
||||
<form action="kick-members.action#members" method="post">
|
||||
</#if>
|
||||
<@alliance_members mList=alliance.member.members isLeader=leader />
|
||||
<#if leader && alliance.member.members?size gt 1 && data.page.special! != 'v'>
|
||||
<div class="form-container">
|
||||
<table><tr><td>
|
||||
<@ff_submit label="Exclure les membres sélectionnés" />
|
||||
</td></tr></table>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<@lineform action="transfer-leadership" hash="members">
|
||||
Trasnférer la direction à
|
||||
<@ff_select id="leadership" name="leadership">
|
||||
<#list alliance.member.members as member>
|
||||
<#if member.name != data.page.empire>
|
||||
<@form_option value=member.id text=member.name />
|
||||
</#if>
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Confirmation" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
</@tab>
|
||||
|
||||
<#if leader>
|
||||
<@tab id="requests" title="Requêtes">
|
||||
<#if alliance.leader.requests?size gt 0 && data.page.special! != 'v'>
|
||||
<form action="manage-requests.action#requests" method="post">
|
||||
</#if>
|
||||
<@alliance_members mList=alliance.leader.requests isLeader=true empty="Aucune requête en suspens" />
|
||||
<#if alliance.leader.requests?size gt 0 && data.page.special! != 'v'>
|
||||
<div class="form-container">
|
||||
<table><tr><td>
|
||||
<@ff_select id="requests-select" name="action">
|
||||
<@form_option value="1" text="Accepter" />
|
||||
<@form_option value="0" text="Rejecter" />
|
||||
</@ff_select> postulants sélectionnés
|
||||
<@ff_submit label="Confirmation" />
|
||||
</td></tr></table>
|
||||
</div>
|
||||
</form>
|
||||
</#if>
|
||||
</@tab>
|
||||
</#if>
|
||||
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Alliance">
|
||||
|
||||
<#assign alliance = data.alliance>
|
||||
<@tabs>
|
||||
|
||||
<#if alliance.main?has_content>
|
||||
<#if alliance.member?has_content>
|
||||
<@alliance_member_page />
|
||||
<#else>
|
||||
<@alliance_joining_tab />
|
||||
</#if>
|
||||
<#else>
|
||||
<@no_alliance />
|
||||
</#if>
|
||||
<@alliance_info_tab />
|
||||
|
||||
</@tabs>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,12 @@
|
|||
<#macro render>
|
||||
<@page title="Vous avez été banni">
|
||||
<p>Vous avez réussi. Vous avez été banni. Bien joué.</p>
|
||||
<@dt_main>
|
||||
<@dt_entry width=200 title="Date/Heure du bannissement ">${data.banTime?string("yyyy-MM-dd HH:mm:ss")}</@dt_entry>
|
||||
<@dt_entry width=200 title="Raison du bannissement ">${data.banReason?xhtml}</@dt_entry>
|
||||
</@dt_main>
|
||||
<#if data.redeemable>
|
||||
<p>Votre empire n'a pas encore été supprimé. Vous pouvez faire appel de ce bannissement en envoyant un e-mail à <a href="mailto:staff@legacyworlds.com">the staff</a> dans un délai de 48h.</p>
|
||||
</#if>
|
||||
</@page>
|
||||
</#macro>
|
261
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/battle.ftl
Normal file
261
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/battle.ftl
Normal file
|
@ -0,0 +1,261 @@
|
|||
<#macro render_header desc>
|
||||
<div style="text-align:center;margin: 2px 0">
|
||||
At <a href="planet-${desc.location.id?string('#')}">${desc.location.name?xhtml}</a>
|
||||
(<strong>${desc.x},${desc.y}</strong>;${desc.orbit})
|
||||
</div>
|
||||
</#macro>
|
||||
<#macro render_navigation id disp>
|
||||
<form action="battle-${id}-at.action" method="post">
|
||||
<table style="width:100%;margin: 2px 0">
|
||||
<tr>
|
||||
<td style="width: 30px;text-align: right">
|
||||
<#if disp.previous?has_content>
|
||||
<a href="battle-${id?string('#')}-at-${disp.previous.ticks?string('#')}">
|
||||
</#if>
|
||||
<<
|
||||
<#if disp.previous?has_content>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
<@ff_select id="view-battle-tick" name="tick" style="width:470px">
|
||||
<#list disp.all as viewable>
|
||||
<@form_option value="${viewable.ticks?string('#')}" selected=(viewable.ticks == disp.current.ticks)><@game_time record=viewable.gameTime /></@form_option>
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Voir" style="width:40px" />
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<#if disp.next?has_content>
|
||||
<a href="battle-${id?string('#')}-at-${disp.next.ticks?string('#')}">
|
||||
</#if>
|
||||
>>
|
||||
<#if disp.next?has_content>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<a href="battle-${id?string('#')}-latest">>>></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</#macro>
|
||||
<#macro render_list_entry mode record type>
|
||||
<tr class="${mode}-fleet ${type} empire-entry">
|
||||
<td style="width:16px"> </td>
|
||||
<td style="width:16px" class="ships-expander" title="Voir/cacher <#if type = "planet">les bâtiments<#else>les vaisseaux</#if>"> </td>
|
||||
<td style="width:16px"> </td>
|
||||
<td colspan="2">
|
||||
<#nested>
|
||||
</td>
|
||||
<td style="text-align:center">${record.cPower?string(',##0')}</td>
|
||||
<td style="text-align:center">${record.lPower?string(',##0')}</td>
|
||||
</tr>
|
||||
<#list record.ships as shipType>
|
||||
<tr class="${mode}-fleet ${type} ship-type">
|
||||
<td style="width:64px" colspan="4"> </td>
|
||||
<td>${shipType.name}</td>
|
||||
<td style="text-align:center">${shipType.cAmount?string(',##0')}</td>
|
||||
<td style="text-align:center">${shipType.lAmount?string(',##0')}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render_protagonist mode record>
|
||||
<#if record.ships?has_content>
|
||||
<@render_list_entry mode=mode record=record type="empire">
|
||||
<#if record.player.id = 0 || mode = "own">
|
||||
${record.player.name?xhtml}
|
||||
<#else>
|
||||
<a href="msg-empire-${record.player.id}">${record.player.name?xhtml}</a>
|
||||
</#if>
|
||||
</@render_list_entry>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro render_planet mode record>
|
||||
<@render_list_entry mode=mode record=record type="planet"><em>( planète )</em></@render_list_entry>
|
||||
</#macro>
|
||||
<#macro render_protagonists mode source>
|
||||
<#if source.players?size = 0>
|
||||
<#return>
|
||||
</#if>
|
||||
<tr class="${mode}-fleet group">
|
||||
<td style="width:16px" class="forces-expander" title="Voir/cacher les empires"> </td>
|
||||
<td style="width:16px" class="ships-expander" title="Voir/cacher les vaisseaux"> </td>
|
||||
<td colspan="3">Forces <#if mode == "allied">Alliées<#else>Hostiles</#if></td>
|
||||
<td style="text-align:center">${source.cPower?string(',##0')}</td>
|
||||
<td style="text-align:center">${source.lPower?string(',##0')}</td>
|
||||
</tr>
|
||||
<#list source.ships as shipType>
|
||||
<tr class="${mode}-fleet group ship-type">
|
||||
<td style="width:64px" colspan="4"> </td>
|
||||
<td>${shipType.name}</td>
|
||||
<td style="text-align:center">${shipType.cAmount?string(',##0')}</td>
|
||||
<td style="text-align:center">${shipType.lAmount?string(',##0')}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
<#list source.players as pRecord>
|
||||
<@render_protagonist mode=mode record=pRecord />
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render_fleets fData>
|
||||
<@listview>
|
||||
<tr><th colspan="6" style="text-align:center; font-size: 110%">Forces</th></tr>
|
||||
<@lv_line headers=true>
|
||||
<th style="width:16px"> </th>
|
||||
<th style="width:16px"> </th>
|
||||
<th style="width:16px"> </th>
|
||||
<th style="width:16px"> </th>
|
||||
<th> </th>
|
||||
<@lv_column width=100 centered=true>Actuelles</@lv_column>
|
||||
<@lv_column width=100 centered=true>Détruites</@lv_column>
|
||||
</@lv_line>
|
||||
<@render_protagonist mode="own" record=fData.own />
|
||||
<#if fData.planet.relation == "OWN">
|
||||
<@render_planet mode="own" record=fData.planet />
|
||||
</#if>
|
||||
<@render_protagonists mode="allied" source=fData.friendly />
|
||||
<#if fData.planet.relation == "ALLIED">
|
||||
<@render_planet mode="allied" record=fData.planet />
|
||||
</#if>
|
||||
<@render_protagonists mode="enemy" source=fData.hostile />
|
||||
<#if fData.planet.relation == "ENEMY">
|
||||
<@render_planet mode="enemy" record=fData.planet />
|
||||
</#if>
|
||||
<tr class="tip" style="display:none"><td colspan="7" style="text-align:center"><em>Cliquer "*" et "+" pour étendre les affichages de vaisseaux/bâtiments.</em></td></tr>
|
||||
</@listview>
|
||||
</#macro>
|
||||
<#macro render_event_items items>
|
||||
<#list items as item>
|
||||
<@lv_line>
|
||||
<td> </td>
|
||||
<td><strong>${item.name}</strong></td>
|
||||
<td>${item.cAmount?string(",##0")}</td>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render_event event>
|
||||
<#switch event.type>
|
||||
<#case "RENAME">
|
||||
<@lv_line>
|
||||
<td colspan="3">Planète renommée en <strong>${event.name}</strong></td>
|
||||
</@lv_line>
|
||||
<#break>
|
||||
<#case "SWITCH">
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<#if event.name = data.page.empire>
|
||||
Nous sommes passés en <#if event.hostile>attaque<#else>défense</#if>.
|
||||
<#else>
|
||||
<strong>${event.name}</strong> a changé de mode et est maintenant <#if event.hostile>hostile<#else>dans notre camp</#if>.
|
||||
</#if>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<#break>
|
||||
<#case "BUILD">
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<#if event.planet>
|
||||
De nouveau bâtiments ont été construits sur la planète.
|
||||
<#elseif event.name = data.page.empire>
|
||||
Nos nouvelles flottes ont été déployées.
|
||||
<#else>
|
||||
Des flottes <#if event.hostile>Hostiles<#else>Alliées</#if> appartenant à <strong>${event.name}</strong> ont été déployées.
|
||||
</#if>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<@render_event_items items=event.ships />
|
||||
<#break>
|
||||
<#case "DEPART">
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<#if event.name = data.page.empire>
|
||||
Nos flottes ont quitté l'orbite.
|
||||
<#else>
|
||||
Des flottes <#if event.hostile>Hostiles<#else>Alliées</#if> appartemant à <strong>${event.name}</strong> ont quitté l'orbite.
|
||||
</#if>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<@render_event_items items=event.ships />
|
||||
<#break>
|
||||
<#case "ARRIVE">
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<#if event.name = data.page.empire>
|
||||
Nos flottes se sont jointes à la bataille.
|
||||
<#else>
|
||||
Des flottes <#if event.hostile>Hostiles<#else>Alliées</#if> appartenant à <strong>${event.name}</strong> se sont jointes à la bataille.
|
||||
</#if>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<@render_event_items items=event.ships />
|
||||
<#break>
|
||||
<#case "DESTROY">
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<#if event.planet>
|
||||
Des bâtiments ont été détruits sur la planète.
|
||||
<#elseif event.name = data.page.empire>
|
||||
Nos flottes ont été dissoutes.
|
||||
<#else>
|
||||
Des flottes <#if event.hostile>Hostiles<#else>Alliées</#if> appartenant à <strong>${event.name}</strong> ont été dissoutes.
|
||||
</#if>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<@render_event_items items=event.ships />
|
||||
<#break>
|
||||
<#default>
|
||||
<@lv_line>
|
||||
<td colspan="3">
|
||||
<em>Type d'événement manquant "${event.type}" (ceci est un bug)</em>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<#break>
|
||||
</#switch>
|
||||
</#macro>
|
||||
<#macro render_history hData>
|
||||
<#if hData?size = 0>
|
||||
<#return>
|
||||
</#if>
|
||||
<@listview>
|
||||
<tr><th colspan="3" style="text-align:center; font-size: 110%">Historique</th></tr>
|
||||
<@lv_line headers=true>
|
||||
<th style="width:120px;font-size: 1px"> </th>
|
||||
<th style="width:170px;font-size: 1px"> </th>
|
||||
<th style="font-size: 1px"> </th>
|
||||
</@lv_line>
|
||||
<#list hData as hInterval>
|
||||
<#if hInterval.end?has_content>
|
||||
<#if hInterval.battleEnds>
|
||||
<tr><td colspan="3" style="text-align:center;padding: 5px 0px;font-weight: bold"><em>La bataille s'est terminée à <@game_time record=hInterval.end.gameTime /></em></td></tr>
|
||||
<#else>
|
||||
<tr><td colspan="3" style="text-align:center;padding: 5px 0px;font-weight: bold"><em>Plus de flottes à cet endroit</em></td></tr>
|
||||
</#if>
|
||||
<tr><td colspan="3"> </td></tr>
|
||||
</#if>
|
||||
<#list hInterval.entries as atTick>
|
||||
<tr><td colspan="3" style="text-align:center;padding: 5px 0px"><em><@game_time record=atTick.time.gameTime />:</em></td></tr>
|
||||
<#list atTick.events as event>
|
||||
<@render_event event=event />
|
||||
</#list>
|
||||
<tr><td colspan="3"> </td></tr>
|
||||
</#list>
|
||||
<#if hInterval.battleBegins>
|
||||
<tr><td colspan="3" style="text-align:center;padding: 5px 0px;font-weight: bold"><em>La bataille a commencé à <@game_time record=hInterval.begin.gameTime /></em></td></tr>
|
||||
</#if>
|
||||
</#list>
|
||||
</@listview>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#local bDescription = data.battle.description>
|
||||
<#local bDisplay = data.battle.display>
|
||||
<@page title="Battle #${bDescription.id?string(',##0')} at ${bDescription.location.name}">
|
||||
|
||||
<@render_header desc=bDescription />
|
||||
<@render_navigation id=bDescription.id disp=bDisplay />
|
||||
<p> </p>
|
||||
<@render_fleets fData=data.battle.ships />
|
||||
<@render_history hData=data.battle.history />
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,62 @@
|
|||
<#macro render_battles battles page pages>
|
||||
<#if pages gt 1>
|
||||
<table style="width:100%;margin: 2px 0">
|
||||
<tr>
|
||||
<td style="width: 30px;text-align: right">
|
||||
<#if page gt 0>
|
||||
<a href="battles-${page - 1}">
|
||||
</#if>
|
||||
<<
|
||||
<#if page gt 0>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
Page ${page + 1} / ${pages}
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<#if page lt pages - 1>
|
||||
<a href="battles-${page + 1}">
|
||||
</#if>
|
||||
>>
|
||||
<#if page lt pages - 1>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</#if>
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=60 centered=true>#</@lv_column>
|
||||
<@lv_column width="x">Localisation</@lv_column>
|
||||
<@lv_column width=80 centered=true> </@lv_column>
|
||||
<@lv_column width=125 centered=true>Rejointe</@lv_column>
|
||||
<@lv_column width=125 centered=true>Terminée</@lv_column>
|
||||
</@lv_line>
|
||||
<#list battles as battle>
|
||||
<@lv_line>
|
||||
<@lv_column centered=true><a href="battle-${battle.id?string('#')}-latest">${battle.id?string(',##0')}</a></@lv_column>
|
||||
<@lv_column>${battle.location.name?xhtml}</@lv_column>
|
||||
<@lv_column centered=true>(${battle.x},${battle.y};${battle.orbit})</@lv_column>
|
||||
<@lv_column centered=true><@game_time record=battle.first.gameTime /></@lv_column>
|
||||
<@lv_column centered=true>
|
||||
<#if battle.last?has_content>
|
||||
<@game_time record=battle.last.gameTime />
|
||||
<#else>
|
||||
<em>En cours</em>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Batailles">
|
||||
<#if data.pages == 0>
|
||||
<p>Nous n'avons pris part à aucune bataille</p>
|
||||
<#else>
|
||||
<@render_battles battles=data.list page=data.currentPage pages=data.pages />
|
||||
</#if>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,136 @@
|
|||
<#include "bugsTabs.ftl">
|
||||
<#macro render_navigation current count total qString>
|
||||
<table style="width:100%;margin: 2px 0">
|
||||
<tr>
|
||||
<td style="width: 30px;text-align: right">
|
||||
<#if current gt 0>
|
||||
<a href="bugtrack?${qString}&first=${current - count}">
|
||||
</#if>
|
||||
<<
|
||||
<#if current gt 0>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
<#if total gt 1>
|
||||
${total?string(',##0')} entrées trouvées.
|
||||
<#elseif total = 1>
|
||||
1 entrée trouvée.
|
||||
<#else>
|
||||
Aucune entrée trouvée.
|
||||
</#if>
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<#if current lt total - count>
|
||||
<a href="bugtrack?${qString}&first=${current + count}">
|
||||
</#if>
|
||||
>>
|
||||
<#if current lt total - count>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#if data.ownOnly>
|
||||
<#local ownOnly = "1">
|
||||
<#else>
|
||||
<#local ownOnly = "0">
|
||||
</#if>
|
||||
<#local qString = "status=${data.status!'x'}&own=${ownOnly}" >
|
||||
<@page title="Suivi des bugs">
|
||||
<#-- Tabs -->
|
||||
<@bugTabs selected="bugsList" qString="${qString}&first=${data.first}" />
|
||||
|
||||
<#-- Selection -->
|
||||
<div class="form-container">
|
||||
<form action="bugtrack" method="get">
|
||||
<table>
|
||||
<tr><td>
|
||||
Lister
|
||||
<@ff_select id="sel-own" name="own">
|
||||
<@form_option value="0">tous les</@form_option>
|
||||
<@form_option value="1" selected=(data.ownOnly)>mes</@form_option>
|
||||
</@ff_select>
|
||||
rapports dont le statut est :
|
||||
<@ff_select id="sel-stat" name="status">
|
||||
<@form_option value="x">(indifférent)</@form_option>
|
||||
<@form_option value="PENDING" selected=((data.status!"") = 'PENDING')>en attente de validation</@form_option>
|
||||
<@form_option value="OPEN" selected=((data.status!"") = 'OPEN')>en cours de traitement</@form_option>
|
||||
<@form_option value="RESOLVED" selected=((data.status!"") = 'RESOLVED')>résolu</@form_option>
|
||||
<@form_option value="WONT_FIX" selected=((data.status!"") = 'WONT_FIX')>ne sera pas résolu</@form_option>
|
||||
<@form_option value="NOT_A_BUG" selected=((data.status!"") = 'NOT_A_BUG')>pas un bug</@form_option>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Rechercher" />
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<#-- Navigation -->
|
||||
<@render_navigation current=data.first count=data.count total=data.entries qString=qString />
|
||||
|
||||
<#-- List of bugs -->
|
||||
<#if data.reports?size gt 0>
|
||||
<@listview>
|
||||
|
||||
<@lv_line headers=true>
|
||||
<@lv_column centered=true width=60>#</@lv_column>
|
||||
<@lv_column width="x">Titre</@lv_column>
|
||||
<#if !( data.status?has_content )>
|
||||
<@lv_column width=130 centered=true>Statut</@lv_column>
|
||||
</#if>
|
||||
<@lv_column width=150 centered=true>Dernière mise à jour</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list data.reports as report>
|
||||
|
||||
<#if !data.ownOnly && report.initialSubmitter.userId?has_content && !report.initialSubmitter.admin && report.initialSubmitter.name = data.page.empire>
|
||||
<#local eClass="own-fleet">
|
||||
<#else>
|
||||
<#local eClass="">
|
||||
</#if>
|
||||
|
||||
<@lv_line class=eClass>
|
||||
<@lv_column centered=true>${report.reportId?string(",##0")}</@lv_column>
|
||||
<@lv_column><a href="bug-${report.reportId}?${qString}&first=${data.first}">${report.title}</a></@lv_column>
|
||||
<#if !( data.status?has_content )>
|
||||
<@lv_column centered=true><@bugStatus status=report.status /></@lv_column>
|
||||
</#if>
|
||||
<@lv_column centered=true>
|
||||
<#if report.updated>
|
||||
<strong>
|
||||
</#if>
|
||||
${report.lastUpdate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
<#if report.updated>
|
||||
</strong>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
<@lv_line class=eClass>
|
||||
<#if data.status?has_content>
|
||||
<td colspan="2">
|
||||
<#else>
|
||||
<td colspan="3">
|
||||
</#if>
|
||||
</td>
|
||||
<@lv_column centered=true>
|
||||
par
|
||||
<#if report.latestSubmitter.admin>
|
||||
<span style="color:#ffafaf">
|
||||
</#if>
|
||||
${report.latestSubmitter.name}
|
||||
<#if report.latestSubmitter.admin>
|
||||
</span>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
</#list>
|
||||
|
||||
</@listview>
|
||||
</#if>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,62 @@
|
|||
<#include "bugsTabs.ftl">
|
||||
<#macro render>
|
||||
<#if data.query.ownOnly>
|
||||
<#local ownOnly = "1">
|
||||
<#else>
|
||||
<#local ownOnly = "0">
|
||||
</#if>
|
||||
<#local qString = "status=${data.query.status!'x'}&own=${ownOnly}" >
|
||||
<@page title="Rapporter un bug">
|
||||
<@bugTabs selected="bugsReport" qString="${qString}&first=${data.query.first}" />
|
||||
|
||||
<h3 style="padding:0;text-align:center">LISEZ CECI AVANT DE RAPPORTER UN BUG</h3>
|
||||
<p>
|
||||
Or donc, vous avez découvert quelque chose qui ne fonctionne pas ou qui semble se comporter
|
||||
incorrectement. Très bien - c'est la raison pour laquelle cette version est publique.
|
||||
</p>
|
||||
<p>
|
||||
Cependant, êtes-vous sûr qu'il s'agit bel et bien d'un bug? Si vous avez joué à la Beta 5, beaucoup
|
||||
de choses ont changé et ne se comportent plus de la même manière. Assurez-vous tout d'abord d'avoir
|
||||
consulté les <a href="rules">règles du jeu</a> ainsi que les informations concernant la
|
||||
<a href="scope">portée de ce jalon</a>.
|
||||
</p>
|
||||
<p>
|
||||
Une fois que vous avez lu cette documentation, si vous n'avez rien trouvé qui semble se rapporter
|
||||
à votre problème, hé bien, il s'agit d'un vrai bug ou bien de quelque chose qui a été omis dans la doc.
|
||||
Dans tous les cas, ce problème devrait être rapporté en utilisant le formulaire ci-dessous.
|
||||
Utilisez un titre <strong>aussi clair que possible</strong> (il devrait indiquer la nature du problème)
|
||||
et écrivez une description aussi précise que vous le pouvez.
|
||||
</p>
|
||||
<p>
|
||||
Il est préférable que ce rapport soit écrit en Anglais, afin d'être lisible par tous les membres
|
||||
de l'équipe, mais ce n'est pas obligatoire.
|
||||
</p>
|
||||
<p>
|
||||
Merci pour votre aide!
|
||||
</p>
|
||||
|
||||
<@form action="report-bug">
|
||||
<tr style="display:none"><td colspan="2">
|
||||
<input type="hidden" name="status" value="${(data.query.status!'x')?xhtml}" />
|
||||
<input type="hidden" name="own" value="${ownOnly}" />
|
||||
<input type="hidden" name="first" value="${data.query.first}" />
|
||||
</td></tr>
|
||||
|
||||
<#switch data.titleError!"">
|
||||
<#case "EMPTY"><@form_error>Veuillez spécifier le titre du rapport</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Le titre doit comprendre au moins 10 caractères</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text label="Titre " name="title" value=data.title!"" maxLength=127 />
|
||||
|
||||
<#switch data.descriptionError!"">
|
||||
<#case "EMPTY"><@form_error>Veuillez spécifier la description du bug</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>La description doit comprendre au moins 30 caractères</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text label="Description " name="description" value=data.description!"" multiline=true maxLength=10 />
|
||||
|
||||
<@form_submit label="Poster le rapport de bug" />
|
||||
|
||||
</@form>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,18 @@
|
|||
<#macro bugTab href title selected>
|
||||
<a class="tab-button<#if selected> selected-tab</#if>" href="${href}">${title}</a>
|
||||
</#macro>
|
||||
<#macro bugTabs selected qString>
|
||||
<div class="tab-buttons">
|
||||
<@bugTab href="bugtrack?${qString}" title="Lister les bugs" selected=( selected = 'bugsList' ) />
|
||||
<@bugTab href="report-bug?${qString}" title="Rapporter un bug" selected=( selected = 'bugsReport' ) />
|
||||
</div>
|
||||
</#macro>
|
||||
<#macro bugStatus status>
|
||||
<#switch status>
|
||||
<#case "PENDING">en attende de validation<#break>
|
||||
<#case "OPEN">en cours de traitement<#break>
|
||||
<#case "RESOLVED">résolu<#break>
|
||||
<#case "WONT_FIX">ne sera pas résolu<#break>
|
||||
<#case "NOT_A_BUG">pas un bug<#break>
|
||||
</#switch>
|
||||
</#macro>
|
|
@ -0,0 +1,124 @@
|
|||
<#include "bugsTabs.ftl" />
|
||||
<#macro render_submitter s>
|
||||
<#if s.admin>
|
||||
<span style="color:#ffafaf">
|
||||
<#elseif s.userId?has_content && s.name = data.page.empire>
|
||||
<span style="color:#afffaf">
|
||||
</#if>
|
||||
${s.name?xhtml}
|
||||
<#if s.admin || ( s.userId?has_content && s.name = data.page.empire )>
|
||||
</span>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro render_event e>
|
||||
<div style="text-align:center; padding:10px 10px">
|
||||
${e.timestamp?string("yyyy-MM-dd HH:mm:ss")} - <@render_submitter s=e.submitter />
|
||||
<#nested>
|
||||
</div>
|
||||
</#macro>
|
||||
<#macro render_report_event e>
|
||||
<@render_event e=e>
|
||||
a posté un rapport de bug #<strong>${e.id?string(",##0")}</strong>
|
||||
</@render_event>
|
||||
<h3 style="margin:0;text-align:center;padding:0 0 10px 0">${e.title}</h3>
|
||||
<div style="margin: 0 40px 20px 40px">
|
||||
${e.contents}
|
||||
</div>
|
||||
</#macro>
|
||||
<#macro render_status_event e>
|
||||
<@render_event e=e>
|
||||
a changé le statut du rapport en <strong><@bugStatus status=e.status /></strong>
|
||||
</@render_event>
|
||||
</#macro>
|
||||
<#macro render_visibility_event e>
|
||||
<@render_event e=e>
|
||||
a mis la visibilité du rapport à <strong><#if e.visible>public<#else>privé</#if></strong>
|
||||
</@render_event>
|
||||
</#macro>
|
||||
<#macro render_merge_event e>
|
||||
<@render_event e=e>
|
||||
a fusionné le rapport de bug courant avec le rapport de bug #<strong>${e.mergedId?string(",##0")}</strong>
|
||||
</@render_event>
|
||||
</#macro>
|
||||
<#macro render_comment_event e>
|
||||
<@render_event e=e>
|
||||
a posté un commentaire
|
||||
<#if !e.visible>
|
||||
<em>(en attente de modération)</em>
|
||||
</#if>
|
||||
</@render_event>
|
||||
<div style="margin: 0 40px 20px 40px">
|
||||
${e.contents}
|
||||
</div>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#if data.query.ownOnly>
|
||||
<#local ownOnly = "1">
|
||||
<#else>
|
||||
<#local ownOnly = "0">
|
||||
</#if>
|
||||
<#local qString = "status=${data.query.status!'x'}&own=${ownOnly}" >
|
||||
<@page title="Bug #${data.report.reportId?string(',##0')} - ${data.report.title}" hidePlanets=true>
|
||||
<#-- Tabs -->
|
||||
<@bugTabs selected="" qString="${qString}&first=${data.query.first}" />
|
||||
|
||||
<#-- Bug info -->
|
||||
<@dt_main>
|
||||
<@dt_entry title="Statut "><@bugStatus status=data.report.status /></@dt_entry>
|
||||
<@dt_entry title="Public "><#if data.report.visible>Oui<#else>Non</#if></@dt_entry>
|
||||
<@dt_entry title="Rapporté initialement le ">
|
||||
${data.report.posted?string("yyyy-MM-dd HH:mm:ss")}
|
||||
par <@render_submitter s=data.report.initialSubmitter />
|
||||
</@dt_entry>
|
||||
<@dt_entry title="Dernière mise à jour le ">
|
||||
${data.report.lastUpdate?string("yyyy-MM-dd HH:mm:ss")}
|
||||
par <@render_submitter s=data.report.latestSubmitter />
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
|
||||
<#-- List events -->
|
||||
<#local mayPost = false>
|
||||
<#list data.events as event>
|
||||
<hr/>
|
||||
<#local mayPost = ( mayPost || ( !event.submitter.admin && event.submitter.userId?has_content && event.submitter.name = data.page.empire ) )>
|
||||
<#switch event.type>
|
||||
<#case 'INIT'>
|
||||
<@render_report_event e=event />
|
||||
<#break>
|
||||
<#case 'STATUS'>
|
||||
<@render_status_event e=event />
|
||||
<#break>
|
||||
<#case 'COMMENT'>
|
||||
<@render_comment_event e=event />
|
||||
<#break>
|
||||
<#case 'VISIBILITY'>
|
||||
<@render_visibility_event e=event />
|
||||
<#break>
|
||||
<#case 'MERGE'>
|
||||
<@render_merge_event e=event />
|
||||
<#break>
|
||||
</#switch>
|
||||
</#list>
|
||||
|
||||
<#-- Comment form -->
|
||||
<#if mayPost && ( data.report.status = 'OPEN' || data.report.status = 'PENDING' )>
|
||||
<hr id="post-comment"/>
|
||||
<@form action="bug-${data.report.reportId}-comment" hash="post-comment">
|
||||
<tr style="display:none">
|
||||
<td colspan="2">
|
||||
<input type="hidden" name="status" value="${data.query.status!"x"}" />
|
||||
<input type="hidden" name="own" value="${ownOnly}" />
|
||||
<input type="hidden" name="first" value="${data.query.first}" />
|
||||
</td>
|
||||
</tr>
|
||||
<#switch data.commentError!"">
|
||||
<#case "EMPTY"><@form_error>Vous devriez écrire le commentaire avant de le poster.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Les commentaires doivent compter au moins 30 caractères.</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text label="Nouveau commentaire " name="comment" multiline=true maxLength=6 value=data.comment!"" />
|
||||
<@form_submit label="Poster le commentaire" />
|
||||
</@form>
|
||||
</#if>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,28 @@
|
|||
<#macro render>
|
||||
<@page title="Legacy Worlds - Discussion">
|
||||
<applet code="IRCApplet.class" archive="irc.jar,pixx.jar" codebase="pjirc" width="100%" height="100%">
|
||||
<param name="CABINETS" value="irc.cab,securedirc.cab,pixx.cab" />
|
||||
<param name="nick" value="${(data.page.empire?replace(' ' , '_'))?xhtml}" />
|
||||
<param name="alternatenick" value="LW-Player-???" />
|
||||
<param name="name" value="${data.page.empire?xhtml}" />
|
||||
<param name="host" value="irc.legacyworlds.com" />
|
||||
<param name="gui" value="pixx" />
|
||||
<param name="quitmessage" value="Destination - outer space!" />
|
||||
<param name="fingerreply" value="Legacy Worlds player" />
|
||||
<param name="userinforeply" value="Legacy Worlds player" />
|
||||
<param name="language" value="french" />
|
||||
|
||||
<param name="style:bitmapsmileys" value="false"/>
|
||||
|
||||
<param name="pixx:highlight" value="true"/>
|
||||
<param name="pixx:highlightnick" value="true"/>
|
||||
<param name="pixx:showconnect" value="false" />
|
||||
<param name="pixx:showchanlist" value="false" />
|
||||
<param name="pixx:showabout" value="false" />
|
||||
<param name="pixx:showhelp" value="false" />
|
||||
|
||||
<param name="command1" value="/join #deepclone" />
|
||||
<param name="command2" value="/join #legacy" />
|
||||
</applet>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,92 @@
|
|||
<#macro enemy_tab eList alliances>
|
||||
|
||||
<#if alliances>
|
||||
<#local tabId = "alliances">
|
||||
<#local addAction = "alliance">
|
||||
<#local tabTitle = "Alliances">
|
||||
<#local emptyText = "Aucune alliance ennemie.">
|
||||
<#local nameLen = 5>
|
||||
<#if data.alliance?has_content & data.alliance>
|
||||
<#local error = data.error>
|
||||
<#local defName = data.name>
|
||||
</#if>
|
||||
<#else>
|
||||
<#local tabId = "empires">
|
||||
<#local addAction = "empire">
|
||||
<#local tabTitle = "Empires">
|
||||
<#local emptyText = "Aucun empire ennemi.">
|
||||
<#local nameLen = 20>
|
||||
<#if data.alliance?has_content & !data.alliance>
|
||||
<#local error = data.error>
|
||||
<#local defName = data.name>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<@tab id=tabId title=tabTitle>
|
||||
|
||||
<#if eList?size == 0>
|
||||
<p>${emptyText}</p>
|
||||
<#else>
|
||||
<form action="remove-enemy-${tabId}.action#${tabId}" method="post">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=40 centered=true> </@lv_column>
|
||||
<@lv_column width="x">${tabTitle}</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list eList as enemy>
|
||||
<@lv_line>
|
||||
<@lv_column centered=true><input type="checkbox" name="id" value="${enemy.id}" /></@lv_column>
|
||||
<@lv_column>
|
||||
<#if alliances><a href="msg-alliance-${enemy.id}">[<#else><a href="msg-empire-${enemy.id}"></#if>${enemy.name?xhtml}<#if alliances>]</#if></a>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
<div class="form-container">
|
||||
<table><tr><td>
|
||||
<@ff_submit label="Supprimer les ennemis sélectionnés" />
|
||||
</td></tr></table>
|
||||
</div>
|
||||
</form>
|
||||
</#if>
|
||||
|
||||
<#if data.page.special! != 'v'>
|
||||
<#if error?has_content>
|
||||
<@standalone_error>
|
||||
<#switch error>
|
||||
<#case "INVALID"><#if alliances>Alliance<#else>Empire</#if> non trouvé.<#break>
|
||||
<#case "BANNED">
|
||||
<#if alliances>
|
||||
Petite trahison entre amis ?
|
||||
<#else>
|
||||
Il y a un terme médical pour ça - schizophrénie.
|
||||
</#if>
|
||||
<#break>
|
||||
<#case "UNAVAILABLE">
|
||||
<#if alliances>Cette alliance<#else>Cet empire</#if> est déjà dans votre liste d'ennemis.
|
||||
<#break>
|
||||
</#switch>
|
||||
</@standalone_error>
|
||||
</#if>
|
||||
<@lineform action="add-enemy-${addAction}" hash=tabId>
|
||||
Nouvel ennemi: <@ff_text id="name-${addAction}" name="name" value=defName! maxLength=nameLen size=(nameLen+1) />
|
||||
<@ff_submit label="Ajouter" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
|
||||
</@tab>
|
||||
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Liste d'ennemis">
|
||||
|
||||
<@tabs>
|
||||
|
||||
<@enemy_tab eList=data.empires alliances=false />
|
||||
<@enemy_tab eList=data.alliances alliances=true />
|
||||
|
||||
</@tabs>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
261
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/fleets.ftl
Normal file
261
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/fleets.ftl
Normal file
|
@ -0,0 +1,261 @@
|
|||
<#macro render_fleet_ships rType id ships>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="ships-type">Classe de vaisseaux</th>
|
||||
<th class="ships-amount">Quantité</th>
|
||||
<th class="ships-power">Puissance</th>
|
||||
</tr>
|
||||
<#list ships as ship>
|
||||
<tr>
|
||||
<td class="ships-type">${ship.name}</td>
|
||||
<td class="ships-amount">${ship.amount?string(',##0')}</td>
|
||||
<td class="ships-power">${ship.power?string(',##0')}</td>
|
||||
</tr>
|
||||
</#list>
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render_static_fleet_details rType fleet>
|
||||
<tr class="${rType} fleet-ships" id="fleet-${fleet.id}-ships">
|
||||
<td> </td>
|
||||
<td colspan="5">
|
||||
<div style="float:right">
|
||||
<@render_fleet_ships rType="own-fleet" id=fleet.id ships=fleet.ships />
|
||||
</div>
|
||||
<div style="width:">
|
||||
<@dt_main>
|
||||
<#if fleet.status != 'AVAILABLE'>
|
||||
<@dt_entry title="Pénalité">
|
||||
<@duration rTime=fleet.penalty gTime=fleet.gamePenalty />
|
||||
</@dt_entry>
|
||||
</#if>
|
||||
<@dt_entry abbr="TVOO " title="Temps de vol d'orbite-à-orbite">
|
||||
<@duration rTime=fleet.flightTime gTime=fleet.gameFlightTime />
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#macro>
|
||||
<#macro render_fleets_at location owners>
|
||||
<#list owners as owner>
|
||||
<#switch owner.relation>
|
||||
<#case 'OWN'>
|
||||
<#local rType = 'own-fleet'>
|
||||
<#local mode = location.attacking >
|
||||
<#break>
|
||||
<#case 'ALLIED'>
|
||||
<#local rType = 'allied-fleet'>
|
||||
<#local mode = location.attacking >
|
||||
<#break>
|
||||
<#case 'ENEMY'>
|
||||
<#local rType = 'enemy-fleet'>
|
||||
<#local mode = ! location.attacking >
|
||||
<#break>
|
||||
</#switch>
|
||||
<#list owner.fleets as fleet>
|
||||
<tr class="${rType} fleet-details" id="fleet-${fleet.id}">
|
||||
<td class="selector">
|
||||
<#if owner.relation == 'OWN' && data.page.special! != 'v'>
|
||||
<input type="checkbox" name="selection" value="${fleet.id}" />
|
||||
<#else>
|
||||
|
||||
</#if>
|
||||
</td>
|
||||
<td class="name">
|
||||
<#if fleet.name?has_content && fleet.name != "">
|
||||
${fleet.name?xhtml}
|
||||
<#else>
|
||||
<em>(flotte sans nom)</em>
|
||||
</#if>
|
||||
</td>
|
||||
<td>
|
||||
<#if owner.relation = 'OWN'>
|
||||
${owner.name?xhtml}
|
||||
<#else>
|
||||
<a href="msg-empire-${owner.id}">${owner.name?xhtml}</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td class="mode">
|
||||
<#if mode><abbr title="En attaque">A</abbr><#else><abbr title="En défense">D</abbr></#if>
|
||||
</td>
|
||||
<td class="power">${fleet.power?string(',##0')}</td>
|
||||
<td class="status">
|
||||
<#if fleet.status == 'AVAILABLE'>
|
||||
<abbr title="Cette flotte est disponible, il est possible de lui donner n'importe quel ordre.">DIS</abbr>
|
||||
<#else>
|
||||
<#switch fleet.status>
|
||||
<#case 'DEPLOYING'><abbr title="Cette flotte est en train d'effectuer son déploiement initial depuis les quais spaciaux.">DPL</abbr><#break>
|
||||
<#case 'REDEPLOYING'><abbr title="Cette flotte est en train de se re-déployer après son arrivée ou un changement de mode.">RDP</abbr><#break>
|
||||
</#switch>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
<@render_static_fleet_details rType=rType fleet=fleet />
|
||||
</#list>
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render_static_fleets locations>
|
||||
<#list locations as location>
|
||||
<table class="fleets-planet">
|
||||
<tr>
|
||||
<td class="pic"><img src="img/pp/s/${location.picture}.png" alt="${location.name?xhtml}" /></td>
|
||||
<th class="planet-name"><a href="planet-${location.id}">${location.name?xhtml}</a> (<strong>${location.x},${location.y}</strong>;<strong>${location.orbit}</strong>)</th>
|
||||
<td class="planet-data">Population : <strong>${location.population?string(",##0")}</strong></td>
|
||||
<td class="planet-data">
|
||||
<#if location.attacking>
|
||||
<span class="enemy-fleet">
|
||||
<#elseif location.own>
|
||||
<span class="own-fleet">
|
||||
<#else>
|
||||
<span class="allied-fleet">
|
||||
</#if>
|
||||
Défense : <strong>${location.defence?string(",##0")}</strong>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<#if location.fleetOwners?size == 0>
|
||||
<p>Aucune flotte à cet endroit.</p>
|
||||
<#else>
|
||||
<table class="fleets-list">
|
||||
<tr class="header">
|
||||
<td class="selector"> </td>
|
||||
<th class="name">Nom de la flotte</th>
|
||||
<th class="owner">Propriétaire</th>
|
||||
<th class="mode"><abbr title="Mode le la flotte">M</abbr></th>
|
||||
<th class="power"><abbr title="Puissance de la flotte">P</abbr></th>
|
||||
<th class="status"><abbr title="Statut de la flotte">S</abbr></th>
|
||||
</tr>
|
||||
<@render_fleets_at location=location owners=location.fleetOwners />
|
||||
</table>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
<#if location.onVacation!false>
|
||||
<tr><td colspan="4" style="padding:2px">Mode vacances activé</td></tr>
|
||||
<#elseif location.battle?has_content && location.battle.hostile gt 0>
|
||||
<tr><td colspan="4" style="padding:2px">
|
||||
Bataille - <span class="own-fleet">${location.battle.friendly?string(',##0')}</span> contre <span class="enemy-fleet">${location.battle.hostile?string(',##0')}</span> -
|
||||
<a href="battle-${location.battle.id}-latest">Détails</a>
|
||||
</td></tr>
|
||||
</#if>
|
||||
</table>
|
||||
</#list>
|
||||
</#macro>
|
||||
<#macro render_moving_fleet_details fleet>
|
||||
<tr class="own-fleet fleet-ships" id="fleet-${fleet.id}-ships">
|
||||
<td> </td>
|
||||
<td colspan="6">
|
||||
<div style="float:right">
|
||||
<@render_fleet_ships rType="own-fleet" id=fleet.id ships=fleet.ships />
|
||||
</div>
|
||||
<div style="width:">
|
||||
<@dt_main>
|
||||
<@dt_entry title="Origine "><a href="planet-${fleet.source.id}">${fleet.source.name?xhtml}</a></@dt_entry>
|
||||
<@dt_entry title="Statut ">
|
||||
<#if fleet.status == 'AVAILABLE'>
|
||||
<abbr title="Cette flotte est disponible, il est possible de lui donner n'importe quel ordre.">DIS</abbr>
|
||||
<#else>
|
||||
<abbr title="Cette flotte est en train de changer de destination.">RDR</abbr> -
|
||||
<@duration rTime=fleet.penalty gTime=fleet.gamePenalty />
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry title="Temps jusqu'à la destionation "><@duration rTime=fleet.timeLeft gTime=fleet.gameTimeLeft /></@dt_entry>
|
||||
<@dt_entry title="Coordonnées ">(${fleet.currentX?string("0.00")};${fleet.currentY?string("0.00")})</@dt_entry>
|
||||
<@dt_entry title="Planète la plus proche ">
|
||||
<#if fleet.nearest?has_content>
|
||||
<a href="planet-${fleet.nearest.id}">${fleet.nearest.name?xhtml}</a>
|
||||
<#else>
|
||||
<em>dans l'espace profond</em>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry abbr="TVOO " title="Temps de vol d'orbite-à-orbite">
|
||||
<@duration rTime=fleet.flightTime gTime=fleet.gameFlightTime />
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</#macro>
|
||||
<#macro render_moving_fleet fleet>
|
||||
<tr class="own-fleet fleet-details" id="fleet-${fleet.id}">
|
||||
<td class="selector">
|
||||
<#if data.page.special! != 'v'>
|
||||
<input type="checkbox" name="selection" value="${fleet.id}" />
|
||||
<#else>
|
||||
|
||||
</#if>
|
||||
</td>
|
||||
<td class="name" colspan="2">
|
||||
<#if fleet.name?has_content && fleet.name != "">
|
||||
${fleet.name?xhtml}
|
||||
<#else>
|
||||
<em>(flotte sans nom)</em>
|
||||
</#if>
|
||||
</td>
|
||||
<td class="mode">
|
||||
<#if fleet.attacking><abbr title="En attaque">A</abbr><#else><abbr title="En défense">D</abbr></#if>
|
||||
</td>
|
||||
<td class="power">${fleet.power?string(',##0')}</td>
|
||||
<td class="timeleft"><@duration rTime=fleet.eta gTime=fleet.gameEta /></td>
|
||||
<td class="destination"><a href="planet-${fleet.destination.id}">${fleet.destination.name?xhtml}</a></td>
|
||||
</tr>
|
||||
<@render_moving_fleet_details fleet=fleet />
|
||||
</#macro>
|
||||
<#macro render_moving_fleets fleets>
|
||||
<#if fleets?size != 0>
|
||||
<table class="fleets-moving">
|
||||
<tr>
|
||||
<th class="mv-header">Flottes en mouvement</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="fleets-list">
|
||||
<tr>
|
||||
<td class="selector"> </td>
|
||||
<th class="name" colspan="2">Nom de la flotte</th>
|
||||
<th class="mode"><abbr title="Mode le la flotte">M</abbr></th>
|
||||
<th class="power"><abbr title="Puissance de la flotte">P</abbr></th>
|
||||
<th class="timeleft"><abbr title="Temps estimé jusqu'à l'arrivée">TEA</abbr></th>
|
||||
<th class="destination">Destination</th>
|
||||
</tr>
|
||||
<#list fleets as fleet>
|
||||
<@render_moving_fleet fleet=fleet />
|
||||
</#list>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</#if>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Flottes">
|
||||
<#local locations = data.fleets.locations>
|
||||
<#local mFleets = data.fleets.moving>
|
||||
<#if locations?size == 0 && mFleets?size == 0>
|
||||
<p>Vous ne possédez ni flottes ni planètes.</p>
|
||||
<#else>
|
||||
<div style="font-style: italic; text-align:center; padding: 0 0 10px 0">Cliquez sur le nom d'un flotte pour voir sa compsition et autres détails la concernant</div>
|
||||
<form method="post" action="fleets.action">
|
||||
<@render_static_fleets locations=locations />
|
||||
<@render_moving_fleets fleets=mFleets />
|
||||
<#if data.page.special! != 'v'>
|
||||
<div id="fleet-actions">
|
||||
<input type="submit" class="input" name="rename" value="Renommer" title="Renommer les flottes sélectionnées" />
|
||||
|
||||
<input type="submit" class="input" name="move" value="Déplacer" title="Déplacer ou rediriger les flottes sélectionner si elles sont disponibles." />
|
||||
|
||||
<input type="submit" class="input" name="setAttack" value="Attaquer" title="Mettre les flottes sélectionnées en mode attaque." />
|
||||
<input type="submit" class="input" name="setDefend" value="Défendre" title="Mettre les flottes sélectionnées en mode défense." />
|
||||
|
||||
<input type="submit" class="input" name="merge" value="Fusionner" title="Fusionner les flottes sélectionnées si elles sont disponibles." />
|
||||
<input type="submit" class="input" name="split" value="Diviser" title="Diviser la flotte sélectionnée en deux flottes ou plus." />
|
||||
|
||||
<input type="submit" class="input" name="disband" value="Dissoudre" title="Détruire les flottes sélectionnées." />
|
||||
</div>
|
||||
</#if>
|
||||
</form>
|
||||
</#if>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,137 @@
|
|||
<#macro render_fleet fleet>
|
||||
<td class="selector"><input type="checkbox" name="selection" value="${fleet.id}" checked="checked" /></td>
|
||||
<td class="name">
|
||||
<#if fleet.name?has_content && fleet.name != "">
|
||||
${fleet.name?xhtml}
|
||||
<#else>
|
||||
<em>(flotte sans nom)</em>
|
||||
</#if>
|
||||
</td>
|
||||
<td class="power">${fleet.power?string(',##0')}</td>
|
||||
<td class="fltime"><@duration rTime=fleet.flightTime gTime=fleet.gameFlightTime /></td>
|
||||
<td class="status">
|
||||
<#switch fleet.status>
|
||||
<#case 'DEPLOYING'><abbr title="Cette flotte est en train d'effectuer son déploiement initial depuis les quais spaciaux.">DPL</abbr><#break>
|
||||
<#case 'REDEPLOYING'><abbr title="Cette flotte est en train de se re-déployer après son arrivée ou un changement de mode.">RDP</abbr><#break>
|
||||
<#case 'REDIRECTING'><abbr title="Cette flotte est en train de changer de destination.">RDP</abbr><#break>
|
||||
<#case 'AVAILABLE'><abbr title="Cette flotte est disponible, il est possible de lui donner n'importe quel ordre.">DIS</abbr><#break>
|
||||
</#switch>
|
||||
</td>
|
||||
<td class="cloc">
|
||||
(${fleet.x?string("0.00")};${fleet.y?string("0.00")})<br/>
|
||||
<#if fleet.nearest?has_content>
|
||||
<#if fleet.atPlanet>À<#else>Près de</#if>
|
||||
<a href="planet-${fleet.nearest.id}">${fleet.nearest.name?xhtml}</a>
|
||||
<#else>
|
||||
Dans l'espace profond
|
||||
</#if>
|
||||
</td>
|
||||
</#macro>
|
||||
<#macro render_selected_fleets fleets>
|
||||
<h3>Flottes sélectionnées</h3>
|
||||
<table class="selected-fleets">
|
||||
<tr>
|
||||
<td class="selector"> </td>
|
||||
<th class="name">Nom</th>
|
||||
<th class="power"><abbr title="Puissance de la flotte">P</abbr></th>
|
||||
<th class="fltime"><abbr title="Temps de vol orbite-à-orbite">TV</abbr></th>
|
||||
<th class="status"><abbr title="Statut de la flotte">S</abbr></th>
|
||||
<th class="cloc">Localisation</th>
|
||||
</tr>
|
||||
<#list fleets as fleet>
|
||||
<tr>
|
||||
<@render_fleet fleet=fleet />
|
||||
</tr>
|
||||
</#list>
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render_move_fleets>
|
||||
<h3>Nouveaux ordres</h3>
|
||||
<#if data.error>
|
||||
<@standalone_error>Cette planète n'existe pas.</@standalone_error>
|
||||
</#if>
|
||||
<p>
|
||||
Diriger les flottes sélectionnées vers
|
||||
<@ff_text name="destination" id="destination" value="${data.destination!?xhtml}" maxLength=20 size=21 />
|
||||
en
|
||||
<@ff_select name="mode" id="mode">
|
||||
<@form_option text="défense" selected=( !data.mode!false ) value="0" />
|
||||
<@form_option text="attaque" selected=( data.mode!false ) value="1" />
|
||||
</@ff_select>
|
||||
|
||||
<@ff_submit label="Ok" />
|
||||
<@ff_submit label="Annuler" name="cancel" />
|
||||
</p>
|
||||
</#macro>
|
||||
<#macro render_rename_fleets>
|
||||
<h3>Renommer les flottes</h3>
|
||||
<#if data.error>
|
||||
<@standalone_error>Ce nom est invalide.</@standalone_error>
|
||||
</#if>
|
||||
<p>
|
||||
Renommer les flottes sélectionnées en
|
||||
<@ff_text name="name" id="name" value="${data.name!?xhtml}" maxLength=40 size=21 />
|
||||
|
||||
<@ff_submit label="Ok" />
|
||||
<@ff_submit label="Annuler" name="cancel" />
|
||||
</p>
|
||||
</#macro>
|
||||
<#macro render_set_fleets_mode>
|
||||
<h3>Définir le mode des flottes</h3>
|
||||
<p>
|
||||
Mettre les flottes sélectionnées en
|
||||
<#if data.attack>attaque<#else>défense</#if>?
|
||||
|
||||
<@ff_submit label="Oui" />
|
||||
<@ff_submit label="Non" name="cancel" />
|
||||
</p>
|
||||
<input type="hidden" name="attack" value="<#if data.attack>1<#else>0</#if>" />
|
||||
</#macro>
|
||||
<#macro render_disband_fleets>
|
||||
<h3>Dissudre les flottes</h3>
|
||||
<p>
|
||||
Êtes-vous sûr?
|
||||
|
||||
<@ff_submit label="Oui" />
|
||||
<@ff_submit label="Non" name="cancel" />
|
||||
</p>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#switch dataType>
|
||||
<#case 'MoveFleetsResponse'>
|
||||
<#local title="Déplacer les flottes">
|
||||
<#local action="move-fleets.action">
|
||||
<#break>
|
||||
<#case 'RenameFleetsResponse'>
|
||||
<#local title="Renommer les flottes">
|
||||
<#local action="rename-fleets.action">
|
||||
<#break>
|
||||
<#case 'SetFleetsModeResponse'>
|
||||
<#local title="Définir le mode des flottes">
|
||||
<#local action="set-fleets-mode.action">
|
||||
<#break>
|
||||
<#case 'DisbandFleetsResponse'>
|
||||
<#local title="Dissoudre les flottes">
|
||||
<#local action="disband-fleets.action">
|
||||
<#break>
|
||||
</#switch>
|
||||
<@page title=title>
|
||||
<form action="${action}" method="post">
|
||||
<@render_selected_fleets fleets=data.fleets />
|
||||
<#switch dataType>
|
||||
<#case 'MoveFleetsResponse'>
|
||||
<@render_move_fleets />
|
||||
<#break>
|
||||
<#case 'RenameFleetsResponse'>
|
||||
<@render_rename_fleets />
|
||||
<#break>
|
||||
<#case 'SetFleetsModeResponse'>
|
||||
<@render_set_fleets_mode />
|
||||
<#break>
|
||||
<#case 'DisbandFleetsResponse'>
|
||||
<@render_disband_fleets />
|
||||
<#break>
|
||||
</#switch>
|
||||
</form>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,17 @@
|
|||
<#macro render>
|
||||
<@page title="Obtenir une nouvelle planète">
|
||||
<p>Des hordes de barbares à la bouche écumante ont envahi votre empire, massacrant vos femmes et violant votre bétail ?</p>
|
||||
<p>Eh bien, n'ayez plus peur ! Vous pourrez recevoir une nouvelle planète flambant neuve.</p>
|
||||
<p>Please note that doing this will disband your fleets.</p>
|
||||
<@form action="get-planet" name="get-planet">
|
||||
<#switch data.error!>
|
||||
<#case "EMPTY"><@form_error>Veuillez sélectionner un nom de planète.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Nom de planète invalide.</@form_error><#break>
|
||||
<#case "UNAVAILABLE"><@form_error>Ce nom de planète n'est pas disponible.</@form_error><#break>
|
||||
<#case "BANNED"><@form_error>Ce nom de planète a été banni.</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text name="name" label="Nom de la nouvelle planète " value=data.name! />
|
||||
<@form_submit label="Obtenir la planète" />
|
||||
</@form>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,16 @@
|
|||
<#macro render><@page title="Serveur en cours de maintenance">
|
||||
<@dt_main title="Le serveur est en cours de maintenance.">
|
||||
<@dt_entry title="Début de la maintenance">${data.start?string("yyyy-MM-dd HH:mm")}</@dt_entry>
|
||||
<@dt_entry title="Temps serveur actuel">${data.current?string("yyyy-MM-dd HH:mm")}</@dt_entry>
|
||||
<@dt_entry title="Fin prévue de l'opération">
|
||||
<#if data.late>
|
||||
<span style="color: #ff0000;font-weight:bold">
|
||||
</#if>
|
||||
${data.end?string("yyyy-MM-dd HH:mm")}
|
||||
<#if data.late>
|
||||
</span>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry title="Raison">${data.reason?xhtml}</@dt_entry>
|
||||
</@dt_main>
|
||||
</@page></#macro>
|
|
@ -0,0 +1,83 @@
|
|||
<#macro render_system system tags>
|
||||
<td class="map-system">
|
||||
<#list system.planets as planet>
|
||||
<#if tags>
|
||||
<#if planet.tag?has_content>
|
||||
<#assign vName = "[${planet.tag}]">
|
||||
<#else>
|
||||
<#assign vName = "N/A">
|
||||
</#if>
|
||||
<#else>
|
||||
<#assign vName = planet.name>
|
||||
</#if>
|
||||
<#if planet.tag?has_content>
|
||||
<#assign vTitle = " [${planet.tag}]" >
|
||||
<#else>
|
||||
<#assign vTitle = "" >
|
||||
</#if>
|
||||
<#if planet.relation?has_content>
|
||||
<#switch planet.relation>
|
||||
<#case "OWN">
|
||||
<#assign lStyle = "class='own-planet'" >
|
||||
<#break>
|
||||
<#case "ALLIED">
|
||||
<#assign lStyle = "class='allied-planet'" >
|
||||
<#break>
|
||||
<#case "ENEMY">
|
||||
<#assign lStyle = "class='enemy-planet'" >
|
||||
<#break>
|
||||
</#switch>
|
||||
<#elseif planet.tag?has_content>
|
||||
<#assign lStyle = "class='other-planet'" >
|
||||
<#else>
|
||||
<#assign lStyle = "" >
|
||||
</#if>
|
||||
<div class="map-planet">
|
||||
<img src="img/pp/s/${planet.picture}.png" alt="${planet.name?xhtml}${vTitle?xhtml}" />
|
||||
<a href="planet-${planet.id}" ${lStyle} title="Voir la planète ${planet.name?xhtml}${vTitle?xhtml}">${vName?xhtml}</a>
|
||||
</div>
|
||||
</#list>
|
||||
</td>
|
||||
</#macro>
|
||||
<#macro render_map size systems tags>
|
||||
<table class="map map-${size}">
|
||||
|
||||
<#list systems as row>
|
||||
<tr>
|
||||
<#list row as system>
|
||||
<#if system?has_content>
|
||||
<@render_system system=system tags=tags />
|
||||
<#else>
|
||||
<td class="map-empty"><div>(inexploré)</div></td>
|
||||
</#if>
|
||||
</#list>
|
||||
</tr>
|
||||
</#list>
|
||||
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<@page title="Carte">
|
||||
|
||||
<@lineform action="move-map">
|
||||
Coordonnées : ( <@ff_text name="x" id="x" maxLength=4 size=5 value=data.x?string /> ;
|
||||
<@ff_text name="y" id="y" maxLength=4 size=5 value=data.y?string /> )
|
||||
Taille : <@ff_select id="sz" name="sz">
|
||||
<#list data.sizes as size>
|
||||
<@form_option text=size value=size_index selected=( size_index == data.sizeOrdinal ) />
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Centrer la carte" />
|
||||
</@lineform>
|
||||
|
||||
<@tabs>
|
||||
<@tab id="names" title="Planètes">
|
||||
<@render_map size=data.sizeOrdinal systems=data.systems tags=false />
|
||||
</@tab>
|
||||
<@tab id="alliances" title="Alliances">
|
||||
<@render_map size=data.sizeOrdinal systems=data.systems tags=true />
|
||||
</@tab>
|
||||
</@tabs>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,115 @@
|
|||
<#macro render_navigation message inbox>
|
||||
<#if inbox>
|
||||
<#local link="inbox-message-">
|
||||
<#else>
|
||||
<#local link="outbox-message-">
|
||||
</#if>
|
||||
<table style="width:100%;margin: 2px 0">
|
||||
<tr>
|
||||
<td style="width: 30px;text-align: right">
|
||||
<#if message.previous?has_content>
|
||||
<a href="${link}${message.previous}">
|
||||
</#if>
|
||||
<<
|
||||
<#if message.previous?has_content>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
<#if inbox>
|
||||
<a href="inbox-from-${message.id}">Messages reçus</a>
|
||||
<#else>
|
||||
<a href="outbox-from-${message.id}">Messages envoyés</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<#if message.next?has_content>
|
||||
<a href="${link}${message.next}">
|
||||
</#if>
|
||||
>>
|
||||
<#if message.next?has_content>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#if data.inbox>
|
||||
<#local title="Messages reçus">
|
||||
<#local timeTtl="Reçu le ">
|
||||
<#else>
|
||||
<#local title="Messages envoyés">
|
||||
<#local timeTtl="Envoyé le ">
|
||||
</#if>
|
||||
<#switch data.message.type>
|
||||
<#case 'INTERNAL'>
|
||||
<#local mColor="#ffffaf">
|
||||
<#break>
|
||||
<#case 'ADMINISTRATOR'>
|
||||
<#local mColor="#ffafaf">
|
||||
<#break>
|
||||
<#case 'ALLIANCE'>
|
||||
<#local mColor="#afafff">
|
||||
<#break>
|
||||
<#case 'EMPIRE'>
|
||||
<#local mColor="#afafaf">
|
||||
<#break>
|
||||
</#switch>
|
||||
<@page title=title>
|
||||
<@render_navigation message=data.message inbox=data.inbox />
|
||||
|
||||
<@dt_main>
|
||||
<@dt_entry width=100 title="De ">
|
||||
<#if data.inbox>
|
||||
<span style="color:${mColor};font-weight:bold">
|
||||
</#if>
|
||||
${data.message.sender!}
|
||||
<#if data.inbox>
|
||||
</span>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry width=100 title="À ">
|
||||
<#if !data.inbox>
|
||||
<span style="color:${mColor};font-weight:bold">
|
||||
</#if>
|
||||
${data.message.receiver!}
|
||||
<#if !data.inbox>
|
||||
</span>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry width=100 title=timeTtl>
|
||||
<@abbr_gt />: <@game_time record=data.message.gameTime /> / <@abbr_st />: ${data.message.time?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</@dt_entry>
|
||||
<#if data.message.unread>
|
||||
<@dt_entry width=100 title="">Nouveau!</@dt_entry>
|
||||
</#if>
|
||||
</@dt_main>
|
||||
|
||||
<@listview><@lv_line headers=true><th colspan="2" style="font-size:1px"> </th></@lv_line></@listview>
|
||||
|
||||
<h3 style="margin:0;text-align:center;padding:0 0 10px 0">${data.message.title}</h3>
|
||||
<div style="margin: 0 40px 20px 40px">
|
||||
${data.message.contents}
|
||||
</div>
|
||||
|
||||
<@listview><@lv_line headers=true><th colspan="2" style="font-size:1px"> </th></@lv_line></@listview>
|
||||
<@lineform action="message">
|
||||
<input type="hidden" name="inbox" value="<#if data.inbox>1<#else>0</#if>" />
|
||||
<input type="hidden" name="id" value="${data.message.id}" />
|
||||
<#if data.message.previous?has_content>
|
||||
<#local afterDelete = data.message.previous>
|
||||
<#elseif data.message.next?has_content>
|
||||
<#local afterDelete = data.message.next>
|
||||
<#else>
|
||||
<#local afterDelete = "x">
|
||||
</#if>
|
||||
<input type="hidden" name="next" value="${afterDelete}" />
|
||||
<@ff_submit label="Supprimer le message" name="delete" />
|
||||
<#if data.inbox && data.message.type != 'INTERNAL'>
|
||||
<@ff_submit label="Écrire une réponse" name="reply" />
|
||||
</#if>
|
||||
</@lineform>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,124 @@
|
|||
<#include "messageTabs.ftl" />
|
||||
<#macro render_navigation current total inbox>
|
||||
<#if inbox>
|
||||
<#local link="inbox-">
|
||||
<#else>
|
||||
<#local link="outbox-">
|
||||
</#if>
|
||||
<table style="width:100%;margin: 2px 0">
|
||||
<tr>
|
||||
<td style="width: 30px;text-align: right">
|
||||
<#if current gt 0>
|
||||
<a href="${link}${current - 1}">
|
||||
</#if>
|
||||
<<
|
||||
<#if current gt 0>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
<td style="text-align: center">
|
||||
<#if total gt 0>
|
||||
Page ${current + 1} / ${total}
|
||||
<#elseif inbox>
|
||||
Aucun message reçu.
|
||||
<#else>
|
||||
Aucun message envoyé.
|
||||
</#if>
|
||||
</td>
|
||||
<td style="width: 30px;text-align: left">
|
||||
<#if current lt total - 1>
|
||||
<a href="${link}${current + 1}">
|
||||
</#if>
|
||||
>>
|
||||
<#if current lt total - 1>
|
||||
</a>
|
||||
</#if>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</#macro>
|
||||
<#macro render>
|
||||
<#if data.inbox>
|
||||
<#local title="Messages reçus">
|
||||
<#local tab="inbox">
|
||||
<#else>
|
||||
<#local title="Messages envoyés">
|
||||
<#local tab="outbox">
|
||||
</#if>
|
||||
<@page title=title>
|
||||
<@messageTabs selected=tab />
|
||||
<@render_navigation current=data.cPage total=data.pages inbox=data.inbox />
|
||||
<#if data.messages?size gt 0>
|
||||
<form action="messages.action" method="post">
|
||||
<div style="display:none">
|
||||
<input type="hidden" name="inbox" value="<#if data.inbox>1<#else>0</#if>" />
|
||||
<input type="hidden" name="page" value="${data.cPage}" />
|
||||
</div>
|
||||
<@listview>
|
||||
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=16 centered=true><span title="Cliquez ici pour inverser la sélection" id="message-box-selector"> </span></@lv_column>
|
||||
<@lv_column width="x">Sujet</@lv_column>
|
||||
<@lv_column width=150 centered=true><#if data.inbox>De<#else>À</#if></@lv_column>
|
||||
<@lv_column width=150 centered=true><#if data.inbox>Reçu le<#else>Envoyé le</#if></@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list data.messages as message>
|
||||
<#switch message.type>
|
||||
<#case 'INTERNAL'>
|
||||
<#local mType="int-msg">
|
||||
<#break>
|
||||
<#case 'ADMINISTRATOR'>
|
||||
<#local mType="admin-msg">
|
||||
<#break>
|
||||
<#case 'ALLIANCE'>
|
||||
<#local mType="alliance-msg">
|
||||
<#break>
|
||||
<#case 'EMPIRE'>
|
||||
<#local mType="empire-msg">
|
||||
<#break>
|
||||
</#switch>
|
||||
<#if ! message.read>
|
||||
<#local mType = "${mType} unread-msg">
|
||||
</#if>
|
||||
|
||||
<@lv_line class=mType>
|
||||
<@lv_column centered=true>
|
||||
<input type="checkbox" name="selection" value="${message.id}" class="input message-selection" />
|
||||
</@lv_column>
|
||||
<@lv_column><a href="<#if data.inbox>inbox<#else>outbox</#if>-message-${message.id}">${message.title}</a></@lv_column>
|
||||
<@lv_column centered=true>${message.sender!}</@lv_column>
|
||||
<@lv_column centered=true>${message.time?string("yyyy-MM-dd HH:mm:ss")}</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
|
||||
<#if data.inbox>
|
||||
<div class="form-container">
|
||||
<@ff_select name="action" id="action">
|
||||
<@form_option value="r">Marquer comme lus</@form_option>
|
||||
<@form_option value="u">Marquer comme non lus</@form_option>
|
||||
<@form_option value="d">Supprimer</@form_option>
|
||||
</@ff_select>
|
||||
|
||||
<@ff_select name="target" id="target">
|
||||
<@form_option value="0">les messages sélectionnés</@form_option>
|
||||
<@form_option value="1">tous les messages</@form_option>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Appliquer" />
|
||||
</div>
|
||||
<#else>
|
||||
<div class="form-container">
|
||||
<input type="hidden" name="action" value="d" />
|
||||
Supprimer
|
||||
<@ff_select name="target" id="target">
|
||||
<@form_option value="0">les messages sélectionnés</@form_option>
|
||||
<@form_option value="1">tous les messages</@form_option>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Appliquer" />
|
||||
</div>
|
||||
</#if>
|
||||
</form>
|
||||
</#if>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,11 @@
|
|||
<#macro messageTab href title selected=false eClass="">
|
||||
<a class="tab-button<#if selected> selected-tab</#if><#if eClass != ''> ${eClass}</#if>" href="${href}">${title}</a>
|
||||
</#macro>
|
||||
<#macro messageTabs selected>
|
||||
<div class="tab-buttons">
|
||||
<@messageTab href="messages" title="Reçus" selected=( selected = 'inbox' ) />
|
||||
<@messageTab href="outbox" title="Envoyés" selected=( selected = 'outbox' ) />
|
||||
<@messageTab href="compose-message" title="Écrire" selected=( selected = 'compose' ) />
|
||||
<@messageTab href="chat" title="Disussion" eClass="open-chat-button" />
|
||||
</div>
|
||||
</#macro>
|
|
@ -0,0 +1,62 @@
|
|||
<#include "messageTabs.ftl" />
|
||||
<#macro render>
|
||||
<@page title="Destinataires">
|
||||
<@messageTabs selected="compose" />
|
||||
|
||||
<@tabs>
|
||||
|
||||
<#if data.empires?size gt 0>
|
||||
<@tab id="empires" title="Empires">
|
||||
<table style="width:98%">
|
||||
<#list data.empires as empire>
|
||||
<#if empire_index % 3 == 0>
|
||||
<tr><td style="text-align:center;width: 34%">
|
||||
<#else>
|
||||
<td style="text-align:center;width: 33%">
|
||||
</#if>
|
||||
<a style="margin: 5px 20px;padding: 4px" href="msg-empire-${empire.id}">${empire.name?xhtml}</a></td>
|
||||
<#if empire_index % 3 == 2></tr></#if>
|
||||
</#list>
|
||||
<#if data.empires?size % 3 == 1>
|
||||
<td> </td><td> </td></tr>
|
||||
<#elseif data.empires?size % 3 == 2>
|
||||
<td> </td></tr>
|
||||
</#if>
|
||||
</table>
|
||||
</@tab>
|
||||
</#if>
|
||||
|
||||
<#if data.alliances?size gt 0>
|
||||
<@tab id="alliances" title="Alliances">
|
||||
<@listview>
|
||||
<#list data.alliances as alliance>
|
||||
<@lv_line>
|
||||
<td style="width: 100px; text-align:right"><a href="msg-alliance-${alliance.id}">[${alliance.tag?xhtml}]</a> </td>
|
||||
<td>${alliance.name}</td>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
</#if>
|
||||
|
||||
<#if data.admins?size gt 0>
|
||||
<@tab id="admins" title="Administrateurs">
|
||||
<@listview>
|
||||
<#list data.admins as admin>
|
||||
<@lv_line>
|
||||
<td style="width: 100px; text-align:right"><a href="msg-admin-${admin.id}">${admin.name?xhtml}</a> </td>
|
||||
<td>
|
||||
<#list admin.privileges as priv>
|
||||
<abbr title="${priv.description?xhtml}">${priv}</abbr>
|
||||
</#list>
|
||||
</td>
|
||||
</@lv_line>
|
||||
<tr><td colspan="2"> </td></tr>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
</#if>
|
||||
|
||||
</@tabs>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,82 @@
|
|||
<#include "messageTabs.ftl" />
|
||||
<#macro render>
|
||||
<#if data.replyTo?has_content>
|
||||
<#local title="Répondre au message">
|
||||
<#else>
|
||||
<#local title="Écrire un nouveau message">
|
||||
</#if>
|
||||
<@page title=title>
|
||||
<@messageTabs selected="compose" />
|
||||
|
||||
<div class="form-container">
|
||||
<form action="send-message.action" method="post">
|
||||
<#if data.replyTo?has_content>
|
||||
<input name="rtInbox" type="hidden" value="<#if data.inbox>1<#else>0</#if>" />
|
||||
<input name="rtId" type="hidden" value="${data.replyTo.id}" />
|
||||
</#if>
|
||||
|
||||
<table>
|
||||
<#if data.timingError>
|
||||
<@form_error>Pas si vite ! Attendez quelques secondes avant d'essayer à nouveau.</@form_error>
|
||||
</#if>
|
||||
|
||||
<#-- Message recipient -->
|
||||
<#if data.targetError>
|
||||
<@form_error>Destinataire du message non trouvé.</@form_error>
|
||||
</#if>
|
||||
<@form_select label="Type de destinataire " name="toType">
|
||||
<@form_option value="EMPIRE" selected=( data.messageType = 'EMPIRE' )>Empire</@form_option>
|
||||
<@form_option value="ALLIANCE" selected=( data.messageType = 'ALLIANCE' )>Alliance</@form_option>
|
||||
<@form_option value="ADMINISTRATOR" selected=( data.messageType = 'ADMINISTRATOR' )>Administrateur</@form_option>
|
||||
</@form_select>
|
||||
<@form_text label="Nom du destinataire " name="toName" maxLength=48 value=data.target />
|
||||
<#if (data.target == "")>
|
||||
<tr><td> </td><td><a href="message-targets">Sélectionner depuis la liste...</a></td></tr>
|
||||
</#if>
|
||||
|
||||
<#-- Subject -->
|
||||
<#if data.titleError>
|
||||
<@form_error>Le sujet est trop court (min.: 2 caractères)</@form_error>
|
||||
</#if>
|
||||
<@form_text label="Sujet " name="title" maxLength=64 value=data.title />
|
||||
|
||||
<#-- Body -->
|
||||
<#if data.contentsError>
|
||||
<@form_error>Le corps du message est trop court (min.: 2 caractères)</@form_error>
|
||||
</#if>
|
||||
<@form_text label="Corps du message " name="contents" value=data.contents multiline=true maxLength=10 />
|
||||
|
||||
<@form_extended_submit label="Envoyer le message">
|
||||
<@ff_submit label="Annuler" name="cancel" />
|
||||
</@form_extended_submit>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<#-- Original message -->
|
||||
<#if data.replyTo?has_content>
|
||||
<@listview><@lv_line headers=true><th colspan="2" style="font-size:1px"> </th></@lv_line></@listview>
|
||||
<@dt_main>
|
||||
<@dt_entry width=100 title="">Message d'origine :</@dt_entry>
|
||||
<@dt_entry width=100 title="De ">
|
||||
${data.replyTo.sender!}
|
||||
</@dt_entry>
|
||||
<@dt_entry width=100 title="À ">
|
||||
${data.replyTo.receiver!}
|
||||
</@dt_entry>
|
||||
<@dt_entry width=100 title="Reçu le ">
|
||||
<@abbr_gt />: <@game_time record=data.replyTo.gameTime /> / <@abbr_st />: ${data.replyTo.time?string("yyyy-MM-dd HH:mm:ss")}
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
|
||||
<@listview><@lv_line headers=true><th colspan="2" style="font-size:1px"> </th></@lv_line></@listview>
|
||||
|
||||
<h3 style="margin:0;text-align:center;padding:0 0 10px 0">${data.replyTo.title}</h3>
|
||||
<div style="margin: 0 40px 20px 40px">
|
||||
${data.replyTo.contents}
|
||||
</div>
|
||||
</#if>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,9 @@
|
|||
<#macro render><@page title="Serveur hors ligne">
|
||||
<p>Le serveur du jeu n'a pas pu être contacté.</p>
|
||||
<p>
|
||||
Il peut être en cours de maintenance ou il a pu planter. Dans tous les cas, une alerte a été transmise à l'équipe d'administration.
|
||||
</p>
|
||||
<p>
|
||||
Désolés pour les troubles occasionnés.
|
||||
</p>
|
||||
</@page></#macro>
|
|
@ -0,0 +1,118 @@
|
|||
<#macro render>
|
||||
<@page title="Empire">
|
||||
|
||||
<#assign ov = data.overview >
|
||||
<#assign rs = data.research >
|
||||
|
||||
<@tabs>
|
||||
|
||||
<@tab id="overview" title="Résumé">
|
||||
<@left_column>
|
||||
|
||||
<#assign nplanets = data.page.planets?size>
|
||||
<@dt_main title="Flottes & Planètes">
|
||||
<@dt_entry title="Nombre de planètes ">${nplanets?string(",##0")}</@dt_entry>
|
||||
<@dt_entry title="Population totale ">${ov.population?string(",##0")}</@dt_entry>
|
||||
<@dt_entry title="Satisfaction moyenne "><@happiness value=data.overview.avgHappiness /></@dt_entry>
|
||||
<@dt_entry title="Puissance de flotte totale ">${ov.fleetPower?string(",##0")}</@dt_entry>
|
||||
</@dt_main>
|
||||
|
||||
<@dt_main title="Batailles">
|
||||
<#if data.battles?size gt 0>
|
||||
<@dt_status>Nous sommes impliqués dans les batailles suivantes:</@dt_status>
|
||||
<#list data.battles as battle>
|
||||
<@dt_status><a href="battle-${battle.id}-latest">${battle.location.name?xhtml}</a>
|
||||
(${battle.x},${battle.y};${battle.orbit})</@dt_status>
|
||||
</#list>
|
||||
<#else>
|
||||
<@dt_status>Nous ne sommes impliqués dans aucune bataille.</@dt_status>
|
||||
</#if>
|
||||
<@dt_status>
|
||||
<a href="battles">Toutes les batailles</a>
|
||||
</@dt_status>
|
||||
</@dt_main>
|
||||
|
||||
</@left_column>
|
||||
|
||||
<@right_column>
|
||||
|
||||
<@dt_main title="Finances">
|
||||
<@dt_entry title="Réserves financières ">${data.page.cash?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Bénéfice planétaire ">${ov.planetIncome?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Charges planètaires ">${ov.planetUpkeep?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Charges des flottes ">${ov.fleetUpkeep?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Investissements ">${ov.investment?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
</@dt_main>
|
||||
|
||||
<@dt_main title="Messages">
|
||||
<@dt_status>
|
||||
<#if ov.newMessages == 0>
|
||||
Aucun nouveau message.
|
||||
<#elseif ov.newMessages == 1>
|
||||
Vous avez <a href="messages">un nouveau message</a>.
|
||||
<#else>
|
||||
Vous avez <a href="messages">${ov.newMessages} nouveaux messages</a>.
|
||||
</#if>
|
||||
</@dt_status>
|
||||
<@dt_status>
|
||||
<a href="compose-message">Ecrire message</a>
|
||||
</@dt_status>
|
||||
</@dt_main>
|
||||
|
||||
</@right_column>
|
||||
</@tab>
|
||||
|
||||
<@tab id="research" title="Recherche">
|
||||
<#if rs?size == 0>
|
||||
<p>Nos scientifiques sont encore en train de s'installer.</p>
|
||||
</#if>
|
||||
<#list rs as research>
|
||||
<div>
|
||||
<h3>${research.name?xhtml}</h3>
|
||||
<p>${research.description?xhtml}</p>
|
||||
|
||||
<@left_column>
|
||||
<#if research.implemented?size == 0>
|
||||
<p>Aucune technologie utilisable.</p>
|
||||
<#else>
|
||||
<@dt_main>
|
||||
<#list research.implemented as tech>
|
||||
<@dt_status>
|
||||
${tech.name?xhtml}
|
||||
<div class="auto-hide">${tech.description?xhtml}</div>
|
||||
</@dt_status>
|
||||
</#list>
|
||||
</@dt_main>
|
||||
</#if>
|
||||
</@left_column>
|
||||
|
||||
<#if research.current?has_content>
|
||||
<@right_column>
|
||||
<@dt_main>
|
||||
<@dt_status>
|
||||
Recherche actuelle : <strong>${research.current.name?xhtml}</strong>
|
||||
<p>
|
||||
${research.current.description?xhtml}
|
||||
</p>
|
||||
</@dt_status>
|
||||
<@dt_entry title="Progression">${research.current.researched}%</@dt_entry>
|
||||
<#if research.current.cost?has_content>
|
||||
<@dt_entry title="Coût">${research.current.cost?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<#if data.page.cash gte research.current.cost && data.page.special! != 'v'>
|
||||
<@dt_status><form action="implement-${research.id}.action#research" method="post">
|
||||
<div><@ff_submit label="Appliquer la technologie" /></div>
|
||||
</form></@dt_status>
|
||||
</#if>
|
||||
</#if>
|
||||
</@dt_main>
|
||||
</@right_column>
|
||||
</#if>
|
||||
|
||||
</div>
|
||||
</#list>
|
||||
</@tab>
|
||||
|
||||
</@tabs>
|
||||
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,69 @@
|
|||
<#macro render>
|
||||
<@page title="Récupération de mot de passe">
|
||||
<@tabs>
|
||||
|
||||
<@tab title="Demande de récupération de mot de passe" id="request-recovery">
|
||||
<#if data.sent?has_content>
|
||||
<p>Un e-mail vous a été envoyé à votre adresse, <strong>${data.mail?xhtml}</strong></p>
|
||||
<p>Il contient un code d'authetification à usage unique que vous devez utiliser pour changer votre mot de passe.</p>
|
||||
<p>Le code d'authentification va expirer dans une heure, et vous ne pourrez pas demander un autre code jusqu'à ce qu'il ait expiré.</p>
|
||||
<#else>
|
||||
|
||||
<@form name="req-pwd-recovery" action="request-password-recovery">
|
||||
<#switch data.status!>
|
||||
<#case "INVALID_INPUT">
|
||||
<@form_error>Adresse e-mail invalide.</@form_error>
|
||||
<#break>
|
||||
<#case "ACCOUNT_NOT_FOUND">
|
||||
<@form_error>Adresse e-mail inconnue.</@form_error>
|
||||
<#break>
|
||||
<#case "ACCOUNT_STATUS">
|
||||
<@form_error>L'état du compte ne permet pas la récupération de mot de passe.</@form_error>
|
||||
<#break>
|
||||
<#case "RECOVERY_IN_PROGRESS">
|
||||
<@form_error>Une demande de récupération de mot de passe a été fait au cours de la dernière heure.</@form_error>
|
||||
<#break>
|
||||
<#case "MAIL_ERROR">
|
||||
<@form_error>Incapable d'envoyer un e-mail.</@form_error>
|
||||
<#break>
|
||||
</#switch>
|
||||
<@form_text label="Adresse e-mail" name="mail" id="req-mail" value=data.mail! maxLength=128 />
|
||||
<@form_submit label="Demander la récupération de mot de passe" extraClass="" />
|
||||
</@form>
|
||||
|
||||
</#if>
|
||||
</@tab>
|
||||
|
||||
<@tab id="confirm-recovery" title="Confirmer la récupération de mot de passe">
|
||||
<@form name="conf-pwd-recovery" action="confirm-password-recovery" hash="confirm-recovery">
|
||||
<#switch data.cStatus!>
|
||||
<#case "INVALID_MAIL">
|
||||
<@form_error>Adresse e-mail invalide.</@form_error>
|
||||
<#break>
|
||||
<#case "NOT_FOUND">
|
||||
<@form_error>Code ou adresse e-mail inconnu.</@form_error>
|
||||
<#break>
|
||||
<#case "ACCOUNT_STATUS">
|
||||
<@form_error>L'état du compte ne permet pas la récupération de mot de passe.</@form_error>
|
||||
<#break>
|
||||
<#case "WEAK_PASSWORD">
|
||||
<@form_error>Nouveau mot de passe trop faible.</@form_error>
|
||||
<#break>
|
||||
<#case "MISMATCH_PASSWORD">
|
||||
<@form_error>Le mot de passe et sa confirmation ne sont pas identiques.</@form_error>
|
||||
<#break>
|
||||
<#case "PROHIBITED">
|
||||
<@form_error>Vous ne pouvez pas utiliser ce mot de passe.</@form_error>
|
||||
<#break>
|
||||
</#switch>
|
||||
<@form_text label="Adresse e-mail" name="mail" id="conf-mail" value=data.cMail! maxLength=128 />
|
||||
<@form_text label="Code de confirmation" name="code" id="conf-code" value=data.cCode! maxLength=64 />
|
||||
<@form_pwd label="Nouveau mot de passe" name="password" id="conf-pwd1" />
|
||||
<@form_pwd label="Confirmation du nouveau mot de passe" name="passwordConfirm" id="conf-pwd2" />
|
||||
<@form_submit label="Définir le nouveau mot de passe" />
|
||||
</@form>
|
||||
</@tab>
|
||||
|
||||
</@tabs>
|
||||
</@page>
|
||||
</#macro>
|
329
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/planet.ftl
Normal file
329
legacyworlds-web-main/Content/Raw/WEB-INF/fm/fr/types/planet.ftl
Normal file
|
@ -0,0 +1,329 @@
|
|||
<#macro render>
|
||||
<#if ! data.basic?has_content>
|
||||
<@page title="Planète non trouvée">
|
||||
<p>Cette planète n'existe pas.</p>
|
||||
</@page>
|
||||
<#return>
|
||||
</#if>
|
||||
<@page title="Planète ${data.basic.name}">
|
||||
<#if data.ownershipError>
|
||||
<@standalone_error>Malheureusement, nous ne controllons plus cette planète.</@standalone_error>
|
||||
</#if>
|
||||
|
||||
<@tabs>
|
||||
|
||||
<@tab id="general" title="Général">
|
||||
<div>
|
||||
<div style="float:right; padding: 3px">
|
||||
<img src="img/pp/l/${data.basic.picture}.png" style="border: 1px solid white" alt="${data.basic.name?xhtml}" />
|
||||
</div>
|
||||
|
||||
<@left_column width=250>
|
||||
<@dt_main>
|
||||
<@dt_entry title="Coordonnées ">(<strong>${data.basic.x},${data.basic.y}</strong>;<strong>${data.basic.orbit}</strong>)</@dt_entry>
|
||||
<#if data.basic.alliance?has_content>
|
||||
<@dt_entry title="Alliance "><strong>${data.basic.alliance}</strong></@dt_entry>
|
||||
<#else>
|
||||
<@dt_blank />
|
||||
</#if>
|
||||
|
||||
<#if data.orbit?has_content>
|
||||
<@dt_entry title="Population "><strong>${data.orbit.population?string(",##0")}</strong></@dt_entry>
|
||||
<@dt_entry title="Défense statique "><strong>${data.orbit.defencePoints?string(",##0")}</strong></@dt_entry>
|
||||
</#if>
|
||||
|
||||
<#if data.own?has_content>
|
||||
<@dt_entry title="Satisfaction "><@happiness value=data.own.happiness /> <@happiness_change value=data.own.hChange /></@dt_entry>
|
||||
<@dt_entry title="Bénéfice "><strong>${data.own.income?string(",##0")}</strong> <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Charges "><strong>${data.own.upkeep?string(",##0")}</strong> <@abbr_bgc/></@dt_entry>
|
||||
</#if>
|
||||
</@dt_main>
|
||||
</@left_column>
|
||||
|
||||
<@right_column width=250>
|
||||
<#if data.orbit?has_content>
|
||||
<@dt_main>
|
||||
|
||||
<#if data.orbit.ownFleet gt 0>
|
||||
<@dt_entry title="Puissance de flotte propre "><span style="color: #afffaf">${data.orbit.ownFleet?string(",##0")}</span></@dt_entry>
|
||||
<#else>
|
||||
<@dt_blank />
|
||||
</#if>
|
||||
|
||||
<#if data.orbit.friendlyFleet gt 0>
|
||||
<@dt_entry title="Puissance de flotte alliée "><span style="color: #afafff">${data.orbit.friendlyFleet?string(",##0")}</span></@dt_entry>
|
||||
<#else>
|
||||
<@dt_blank />
|
||||
</#if>
|
||||
|
||||
<#if data.orbit.hostileFleet gt 0>
|
||||
<@dt_entry title="Puissance de flotte hostile"><span style="color: #ffafaf">${data.orbit.hostileFleet?string(",##0")}</span></@dt_entry>
|
||||
<#else>
|
||||
<@dt_blank />
|
||||
</#if>
|
||||
|
||||
<#if data.orbit.battle?has_content>
|
||||
<@dt_entry title=""><a href="battle-${data.orbit.battle}-latest">Voir la bataille</a></@dt_entry>
|
||||
<#else>
|
||||
<@dt_blank />
|
||||
</#if>
|
||||
|
||||
<@dt_blank /><@dt_blank /><@dt_blank /><@dt_blank /><@dt_blank />
|
||||
|
||||
</@dt_main>
|
||||
</#if>
|
||||
</@right_column>
|
||||
</div>
|
||||
|
||||
<#if data.own?has_content>
|
||||
<#if data.own.status.renamePossible && data.page.special! != 'v'>
|
||||
<#switch data.renameError!>
|
||||
<#case "EMPTY"><@standalone_error>Veuillez spécifier un nom.</@standalone_error><#break>
|
||||
<#case "INVALID"><@standalone_error>Nom de planète invalide.</@standalone_error><#break>
|
||||
<#case "UNAVAILABLE"><@standalone_error>Ce nom de planète existe déjà.</@standalone_error><#break>
|
||||
<#case "BANNED"><@standalone_error>Ce nom a été banni.</@standalone_error><#break>
|
||||
</#switch>
|
||||
<@lineform action="planet-${data.id}-rename" name="rename" hash="general">
|
||||
<#if data.renamingTo?has_content>
|
||||
<#assign newName = data.renamingTo!>
|
||||
</#if>
|
||||
Renommer la planète en <@ff_text name="name" id="rename-name" maxLength=20 size=21 value=newName! />
|
||||
<@ff_submit label="Renommer la planète" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
|
||||
<#if data.own.status.abandonPossible && data.page.special! != 'v'>
|
||||
<@lineform action="planet-${data.id}-abandon" name="abandon" hash="general">
|
||||
<@ff_submit label="Abandonner la planète" />
|
||||
</@lineform>
|
||||
<#elseif data.own.status.abandonTime gt 0>
|
||||
<@lineform action="planet-${data.id}-cancel-abandon" name="abandon" hash="general">
|
||||
Abandon de la planète dans <strong><@duration rTime=data.own.status.abandonTime gTime=data.own.status.abandonGameTime /></strong>
|
||||
|
||||
<#if data.page.special! != 'v'>
|
||||
<@ff_submit label="Annuler" />
|
||||
</#if>
|
||||
</@lineform>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
</@tab>
|
||||
|
||||
<#if data.orbit?has_content>
|
||||
|
||||
<#if data.orbit.buildings?size gt 0 || data.own?has_content>
|
||||
<@tab id="buildings" title="Bâtiments">
|
||||
|
||||
<#if data.orbit.buildings?size gt 0>
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Bâtiment</@lv_column>
|
||||
<@lv_column width=50 centered=true>Nombre</@lv_column>
|
||||
<#if data.own?has_content>
|
||||
<@lv_column width=150 centered=true>Production</@lv_column>
|
||||
<@lv_column width=50 centered=true>Emplois</@lv_column>
|
||||
<@lv_column width=100 centered=true>Charges</@lv_column>
|
||||
</#if>
|
||||
</@lv_line>
|
||||
|
||||
<#list data.orbit.buildings as building>
|
||||
<@lv_line>
|
||||
<@lv_column>
|
||||
${building.name?xhtml}
|
||||
<#if data.own?has_content>
|
||||
<div class="auto-hide">${building.description?xhtml}</div>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column centered=true>${building.amount?string(",##0")}</@lv_column>
|
||||
<#if data.own?has_content>
|
||||
<@lv_column centered=true>
|
||||
${building.output?string(",##0")}
|
||||
<#switch building.produces>
|
||||
<#case "CASH">production ind.<#break>
|
||||
<#case "DEF">défense<#break>
|
||||
<#case "WORK">production mil.<#break>
|
||||
<#case "POP">croissance<#break>
|
||||
</#switch>
|
||||
</@lv_column>
|
||||
<@lv_column centered=true>${building.jobs?string(",##0")}</@lv_column>
|
||||
<@lv_column centered=true>${building.upkeep?string(",##0")} <@abbr_bgc/></@lv_column>
|
||||
</#if>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
<#else>
|
||||
<@dt_main><@dt_status>Aucun bâtiment sur cette planète.</@dt_status></@dt_main>
|
||||
</#if>
|
||||
|
||||
<#if data.own?has_content>
|
||||
<#if data.page.special! != 'v'>
|
||||
<#if data.own.civQueue.appendPossible>
|
||||
<@lineform name="build-civ" action="planet-${data.id}-build-civ" hash="buildings">
|
||||
Construire <@ff_text name="amount" id="civ-build-amount" size=5 maxLength=4 value="" />
|
||||
<@ff_select name="type" id="civ-build-type">
|
||||
<@form_option value="0" text="(type de bâtiment)" />
|
||||
<#list data.own.bBuildings as building>
|
||||
<@form_option value=building.id text=building.name />
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Ajouter à la liste" />
|
||||
</@lineform>
|
||||
<div id="buildings-types">
|
||||
<#list data.own.bBuildings as building>
|
||||
<div class="building-type" id="building-type-${building.id}">
|
||||
<@dt_main>
|
||||
<@dt_status>${building.description?xhtml}</@dt_status>
|
||||
<@dt_entry title="Coût ">${building.cost?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Charges ">${building.upkeep?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Temps de construction ">
|
||||
<#if building.time?has_content>
|
||||
<@duration rTime=building.time gTime=building.gameTime />
|
||||
<#else>
|
||||
<span style="color:#ffafaf;font-weight:bold" title="N'essayez même pas.">N/A</span>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry title="Emplois ">${building.workers?string(",##0")}</@dt_entry>
|
||||
<@dt_entry title="Production ">${building.output?string(",##0")}
|
||||
<#switch building.prodType>
|
||||
<#case "CASH">production ind.<#break>
|
||||
<#case "DEF">défense<#break>
|
||||
<#case "WORK">production mil.<#break>
|
||||
<#case "POP">croissance<#break>
|
||||
</#switch>
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
</div>
|
||||
</#list>
|
||||
</div>
|
||||
|
||||
<#if data.orbit.buildings?size gt 0>
|
||||
<#if data.destructionFailed!false>
|
||||
<@standalone_error>Tentative de destruction d'un trop grand nombre de bâtiments</@standalone_error>
|
||||
</#if>
|
||||
<@lineform name="destroy" action="planet-${data.id}-destroy" hash="buildings">
|
||||
Détruire <@ff_text name="amount" id="civ-destroy-amount" size=5 maxLength=4 value="" />
|
||||
<@ff_select name="type" id="civ-destroy-type">
|
||||
<@form_option value="0" text="(type de bâtiment)" />
|
||||
<#list data.orbit.buildings as building>
|
||||
<@form_option value=building.id text=building.name />
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Ajouter à la liste" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if data.own.civQueue.items?size gt 0>
|
||||
<#if data.page.special! != 'v'>
|
||||
<@lineform name="flush-civ-queue" action="planet-${data.id}-flush-civ" hash="buildings">
|
||||
Retirer tous les éléments de la liste de construction (les investissements seront perdus)
|
||||
<@ff_submit label="Vider" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=80 centered=true>Nombre</@lv_column>
|
||||
<@lv_column width="x">Nature</@lv_column>
|
||||
<@lv_column width=200 centered=true>Temps</@lv_column>
|
||||
<@lv_column width=70 centered=true>Investissement</@lv_column>
|
||||
</@lv_line>
|
||||
<#list data.own.civQueue.items as qItem>
|
||||
<@lv_line>
|
||||
<@lv_column centered=true>${qItem.amount?string(",##0")}</@lv_column>
|
||||
<@lv_column>${qItem.name} <#if qItem.destroy>(destruction)<#else>(construction)</#if></@lv_column>
|
||||
<@lv_column centered=true>
|
||||
<#if qItem.timeLeft?has_content>
|
||||
<@duration rTime=qItem.timeLeft gTime=qItem.gameTimeLeft />
|
||||
<#else>
|
||||
<span style="color:#ffafaf;font-weight:bold" title="L'espèce humaine se sera éteinte depuis bien longtemps quand cette construction sera terminée...">N/A</span>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column centered=true>${qItem.invested?string(",##0")} <@abbr_bgc/></@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
</@tab>
|
||||
</#if>
|
||||
|
||||
<#if data.own?has_content>
|
||||
<@tab id="ships" title="Chantiers navals">
|
||||
<#if data.page.special! != 'v'>
|
||||
<#if data.own.milQueue.appendPossible>
|
||||
<@lineform name="build-mil" action="planet-${data.id}-build-mil" hash="ships">
|
||||
Construire <@ff_text name="amount" id="mil-build-amount" size=5 maxLength=4 value="" />
|
||||
<@ff_select name="type" id="mil-build-type">
|
||||
<@form_option value="0" text="(type de vaisseau)" />
|
||||
<#list data.own.bShips as ship>
|
||||
<@form_option value=ship.id text=ship.name />
|
||||
</#list>
|
||||
</@ff_select>
|
||||
<@ff_submit label="Ajouter à la liste" />
|
||||
</@lineform>
|
||||
<div id="ships-types">
|
||||
<#list data.own.bShips as ship>
|
||||
<div class="ship-type" id="ship-type-${ship.id}">
|
||||
<@dt_main>
|
||||
<@dt_status>${ship.description?xhtml}</@dt_status>
|
||||
<@dt_entry title="Coût ">${ship.cost?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Charges ">${ship.upkeep?string(",##0")} <@abbr_bgc/></@dt_entry>
|
||||
<@dt_entry title="Temps de Construction ">
|
||||
<#if ship.time?has_content>
|
||||
<@duration rTime=ship.time gTime=ship.gameTime />
|
||||
<#else>
|
||||
<span style="color:#ffafaf;font-weight:bold" title="N'essayez même pas.">N/A</span>
|
||||
</#if>
|
||||
</@dt_entry>
|
||||
<@dt_entry title="Puissance ">${ship.power?string(",##0")}</@dt_entry>
|
||||
<@dt_entry abbr="TVOO " title="Temps de vol orbite-à-orbite">
|
||||
<@duration rTime=ship.flightTime gTime=ship.gameFlightTime />
|
||||
</@dt_entry>
|
||||
</@dt_main>
|
||||
</div>
|
||||
</#list>
|
||||
</div>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
<#if data.own.milQueue.items?size gt 0>
|
||||
<#if data.page.special! != 'v'>
|
||||
<@lineform name="flush-mil-queue" action="planet-${data.id}-flush-mil" hash="ships">
|
||||
Retirer tous les éléments de la liste de construction (les investissements seront perdus)
|
||||
<@ff_submit label="Vider" />
|
||||
</@lineform>
|
||||
</#if>
|
||||
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width=80 centered=true>Nombre</@lv_column>
|
||||
<@lv_column width="x">Vaisseau</@lv_column>
|
||||
<@lv_column width=200 centered=true>Temps</@lv_column>
|
||||
<@lv_column width=70 centered=true>Investissement</@lv_column>
|
||||
</@lv_line>
|
||||
<#list data.own.milQueue.items as qItem>
|
||||
<@lv_line>
|
||||
<@lv_column centered=true>${qItem.amount?string(",##0")}</@lv_column>
|
||||
<@lv_column>${qItem.name}</@lv_column>
|
||||
<@lv_column centered=true>
|
||||
<#if qItem.timeLeft?has_content>
|
||||
<@duration rTime=qItem.timeLeft gTime=qItem.gameTimeLeft />
|
||||
<#else>
|
||||
<span style="color:#ffafaf;font-weight:bold" title="L'espèce humaine se sera éteinte depuis bien longtemps quand cette construction sera terminée...">N/A</span>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column centered=true>${qItem.invested?string(",##0")} <@abbr_bgc/></@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</#if>
|
||||
</@tab>
|
||||
</#if>
|
||||
</#if>
|
||||
|
||||
</@tabs>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,167 @@
|
|||
<#macro render>
|
||||
<@page title="Planètes">
|
||||
<#assign pl = data.planets>
|
||||
<#if pl?size == 0>
|
||||
<p>Nous ne possédons plus aucune planète.</p>
|
||||
<p><a href="get-planet">Obtenir une nouvelle planète ?</a></p>
|
||||
<#else>
|
||||
|
||||
<@tabs>
|
||||
|
||||
<@tab id="general" title="Général">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=90 centered=true>Coordonnées</@lv_column>
|
||||
<@lv_column width=90 centered=true>Satisfaction</@lv_column>
|
||||
<@lv_column width=90 right=true>Population</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column><a href="planet-${planet.id}">${planet.name?xhtml}</a></@lv_column>
|
||||
<@lv_column centered=true>(${planet.x},${planet.y};${planet.orbit})</@lv_column>
|
||||
<@lv_column centered=true><@happiness value=planet.happiness /></@lv_column>
|
||||
<@lv_column right=true>${planet.population?string(",##0")}</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
<@tab id="eco" title="Économie">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=110 right=true>Bénéfice</@lv_column>
|
||||
<@lv_column width=110 right=true>Charges</@lv_column>
|
||||
<@lv_column width=110 right=true>Revenu</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column><a href="planet-${planet.id}">${planet.name?xhtml}</a></@lv_column>
|
||||
<@lv_column right=true>${planet.income?string(",##0")} <@abbr_bgc /></@lv_column>
|
||||
<@lv_column right=true>${planet.upkeep?string(",##0")} <@abbr_bgc /></@lv_column>
|
||||
<@lv_column right=true>
|
||||
<#if planet.upkeep gt planet.income>
|
||||
<span style="color: red">
|
||||
</#if>
|
||||
${( planet.income - planet.upkeep )?string(",##0")} <@abbr_bgc />
|
||||
<#if planet.upkeep gt planet.income>
|
||||
</span>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
<@tab id="prod" title="Production">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=90 right=true>Militaire</@lv_column>
|
||||
<@lv_column width=90 right=true>Industriel</@lv_column>
|
||||
<@lv_column width=120 right=true>Aug. Croissance</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column><a href="planet-${planet.id}#buildings">${planet.name?xhtml}</a></@lv_column>
|
||||
<@lv_column right=true>${planet.militaryProduction?string(",##0")}</@lv_column>
|
||||
<@lv_column right=true>${planet.industrialProduction?string(",##0")}</@lv_column>
|
||||
<@lv_column right=true>${planet.growthProduction?string(",##0")}</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
<@tab id="cons" title="Construction">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=200 centered=true>Item actuellement produit</@lv_column>
|
||||
<@lv_column width=90 right=true>Investissement</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column><a href="planet-${planet.id}#buildings">${planet.name?xhtml}</a></@lv_column>
|
||||
<@lv_column centered=true>
|
||||
<#if planet.civAmount = 0>
|
||||
<em>N/A</em>
|
||||
<#else>
|
||||
<strong>${planet.civAmount?string(",##0")}</strong>x
|
||||
${planet.civName?xhtml}
|
||||
<#if planet.civDestroy>
|
||||
(destruction)
|
||||
<#else>
|
||||
(construction)
|
||||
</#if>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column right=true>${planet.civInvestment?string(",##0")} <@abbr_bgc /></@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
<@tab id="ships" title="Chantiers navals">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=200 centered=true>Item actuellement produit</@lv_column>
|
||||
<@lv_column width=90 right=true>Investissement</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column><a href="planet-${planet.id}#ships">${planet.name?xhtml}</a></@lv_column>
|
||||
<@lv_column centered=true>
|
||||
<#if planet.milAmount = 0>
|
||||
<em>N/A</em>
|
||||
<#else>
|
||||
<strong>${planet.milAmount?string(",##0")}</strong>x
|
||||
${planet.milName?xhtml}
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column right=true>${planet.milInvestment?string(",##0")} <@abbr_bgc /></@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
<@tab id="mil" title="Militaire">
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Nom</@lv_column>
|
||||
<@lv_column width=90 right=true>Stationnaire</@lv_column>
|
||||
<@lv_column width=110 right=true>Flottes propres</@lv_column>
|
||||
<@lv_column width=90 right=true>Alliées</@lv_column>
|
||||
<@lv_column width=90 right=true>Hostiles</@lv_column>
|
||||
</@lv_line>
|
||||
|
||||
<#list pl as planet>
|
||||
<@lv_line>
|
||||
<@lv_column>
|
||||
<#if planet.battle?has_content>
|
||||
<a href="battle-${planet.battle}-latest"><span style="color:red">
|
||||
</#if>
|
||||
${planet.name?xhtml}
|
||||
<#if planet.battle?has_content>
|
||||
</span></a>
|
||||
</#if>
|
||||
</@lv_column>
|
||||
<@lv_column right=true><span class="own-fleet">${planet.fpStatic?string(",##0")}</span></@lv_column>
|
||||
<@lv_column right=true><span class="own-fleet">${planet.fpOwn?string(",##0")}</span></@lv_column>
|
||||
<@lv_column right=true><span class="allied-fleet">${planet.fpFriendly?string(",##0")}</span></@lv_column>
|
||||
<@lv_column right=true><span class="enemy-fleet">${planet.fpHostile?string(",##0")}</span></@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
</@tab>
|
||||
|
||||
</@tabs>
|
||||
</#if>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,24 @@
|
|||
<#macro render>
|
||||
<#if data.success>
|
||||
<@page title="réactivation de compte">
|
||||
<p>
|
||||
Votre compte a été réactivé avec succès. Le conde de confirmation a été envoyé à <strong>${data.address}</strong>.
|
||||
</p>
|
||||
<p>
|
||||
Une fois que vous avez reçu cet e-mail, veuillez aller sur la <a href="validate-account">page de confirmation</a>.
|
||||
</p>
|
||||
</@page>
|
||||
<#else>
|
||||
<@page title="Erreur de réactivation de compte">
|
||||
<p>
|
||||
Une erreur a eu lieu lors de l'envoi d'un e-mail à votre adresse, <strong>${data.address}</strong>.
|
||||
</p>
|
||||
<p>
|
||||
Si votre adresse est toujours valide, vous pouvez envisager d'attendre un peu et d'<a href="reactivate.action">essayer à nouveau</a>.
|
||||
</p>
|
||||
<p>
|
||||
Ou le serveur est peut-être sous acide, auquel cas vous devriez informer <a href="mailto:staff@legacyworlds.com">l'équipe d'administration</a>.
|
||||
</p>
|
||||
</@page>
|
||||
</#if>
|
||||
</#macro>
|
|
@ -0,0 +1,56 @@
|
|||
<#macro render>
|
||||
<@page title="Enregistrement">
|
||||
<@form name="register" action="register">
|
||||
<#switch data.mailError!"">
|
||||
<#case "EMPTY">
|
||||
<@form_error>Adresse e-mail vide.</@form_error>
|
||||
<#break>
|
||||
<#case "INVALID">
|
||||
<@form_error>Adresse e-mail invalide.</@form_error>
|
||||
<#break>
|
||||
<#case "IN_USE">
|
||||
<@form_error>Cette adresse e-mail est déjà associée à un compte.</@form_error>
|
||||
<#break>
|
||||
<#case "SEND_FAIL">
|
||||
<@form_error>Impossible d'envoyer le code de confirmation à cette adresse.</@form_error>
|
||||
<#break>
|
||||
<#case "MISMATCH">
|
||||
<@form_error>L'adresse e-mail et sa confirmation ne sont pas identiques.</@form_error>
|
||||
<#break>
|
||||
<#default>
|
||||
<@form_extra>L'adresse e-mail <em>DOIT</em> exister.</@form_extra>
|
||||
</#switch>
|
||||
<@form_text label="Adresse e-mail" maxLength=128 name="mail" value=data.mail! />
|
||||
<@form_text label="Adresse e-mail (confirmation)" maxLength=128 name="mailConfirm" value=data.mail! />
|
||||
|
||||
<#switch data.passwordError!"">
|
||||
<#case "EMPTY">
|
||||
<@form_error>Mot de passe vide.</@form_error>
|
||||
<#break>
|
||||
<#case "TOO_WEAK">
|
||||
<@form_error>Cet mot de passe est trop faible.</@form_error>
|
||||
<#break>
|
||||
<#case "MISMATCH">
|
||||
<@form_error>Le mot de passe et sa confirmation ne sont pas identiques.</@form_error>
|
||||
<#break>
|
||||
<#default>
|
||||
<@form_extra>Au moins 6 catactères, contenant à la fois des lettres et des chiffres. Points bonus pour les caractères spéciaux, les espaces et les mots de passe extrèmement longs.</@form_extra>
|
||||
</#switch>
|
||||
<@form_pwd label="Mot de passe" name="password" />
|
||||
<@form_pwd label="Mot de passe (confirmation)" name="passwordConfirm" />
|
||||
|
||||
<@form_select name="language" label="Langue">
|
||||
<#if dataType == "ListLanguagesResponse">
|
||||
<#assign lList = data.languages>
|
||||
<#else>
|
||||
<#assign lList = data.supportedLanguages.languages>
|
||||
</#if>
|
||||
<#list lList as lang>
|
||||
<@form_option text=lang.name value=lang.id selected=(lang.id == language) />
|
||||
</#list>
|
||||
</@form_select>
|
||||
|
||||
<@form_submit label="S'enregistrer" />
|
||||
</@form>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,13 @@
|
|||
<#macro render>
|
||||
<@page title="Compte créé">
|
||||
<p>
|
||||
Votre compte a été créé avec succès.
|
||||
</p>
|
||||
<p>
|
||||
Un e-mail contenant son code de confirmation a été envoyé à votre adresse, <strong>${data.mail?xhtml}</strong>.
|
||||
</p>
|
||||
<p>
|
||||
Une fois que vous l'aurez reçu, vous serez en mesure de vous connecter et de confirmer votre compte.
|
||||
</p>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1,40 @@
|
|||
<#macro render>
|
||||
<@page title="Diviser la flotte">
|
||||
<form action="split-fleet.action" method="post">
|
||||
<div>
|
||||
<input type="hidden" name="fleet" value="${data.initialFleet.id}" />
|
||||
<#if data.shipsError>
|
||||
<@standalone_error>Nombre de vaisseaux ou de flottes résultantes invalides</@standalone_error>
|
||||
</#if>
|
||||
<@listview>
|
||||
<@lv_line headers=true>
|
||||
<@lv_column width="x">Type de vaisseaux</@lv_column>
|
||||
<@lv_column width=150>Nombre initial</@lv_column>
|
||||
<@lv_column width=150>Nombre dans la nouvelle flotte</@lv_column>
|
||||
</@lv_line>
|
||||
<#list data.ships as ships>
|
||||
<@lv_line headers>
|
||||
<@lv_column>${ships.name}</@lv_column>
|
||||
<@lv_column>${ships.amount?string(",##0")}</@lv_column>
|
||||
<@lv_column>
|
||||
<@ff_text name="ships_${ships.id}" id="ships-${ships.id}" value=ships.selectedAmount />
|
||||
</@lv_column>
|
||||
</@lv_line>
|
||||
</#list>
|
||||
</@listview>
|
||||
<#if data.nameError>
|
||||
<@standalone_error>Nom de flotte invalide.</@standalone_error>
|
||||
</#if>
|
||||
<p>
|
||||
Créer
|
||||
<@ff_text name="nFleets" id="n-fleets" value=data.nFleets size=3 maxLength=2 />
|
||||
nouvelle(s) flotte(s) nommée(s)
|
||||
<@ff_text name="name" id="name" value=data.name size=20 maxLength=40 />
|
||||
|
||||
<@ff_submit label="Ok" />
|
||||
<@ff_submit label="Annuler" name="cancel" />
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
</@page>
|
||||
</#macro>
|
|
@ -0,0 +1 @@
|
|||
<#macro render><#if dataType == "HashMap"><#include "../static/${data.name}.ftl" /><#else><#include "../static/${data}.ftl" /></#if></#macro>
|
|
@ -0,0 +1,50 @@
|
|||
<#macro render>
|
||||
<@page title="Validation de compte">
|
||||
<@form action="validation" name="validation">
|
||||
<@form_extra>
|
||||
Avant d'aller plus loin, vous devez valider votre compte en utilisant le code de confirmation qui vous a été envoyé par e-mail.<br/>
|
||||
Vous pouvez aussi choisir le nom de votre empire et de votre première planète.
|
||||
</@form_extra>
|
||||
|
||||
<#if data.wrongToken>
|
||||
<@form_error>Code ds confirmation incorrect.</@form_error>
|
||||
</#if>
|
||||
<@form_text label="Code de confirmation" value=data.token! name="token" maxLength=64 />
|
||||
|
||||
<#switch data.empireError!>
|
||||
<#case "EMPTY"><@form_error>Veuillez choisir un nom d'empire.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Nom d'empire invalide.</@form_error><#break>
|
||||
<#case "UNAVAILABLE"><@form_error>Ce nom d'empire n'est pas disponible.</@form_error><#break>
|
||||
<#case "BANNED"><@form_error>Ce nom d'empire a été banni.</@form_error><#break>
|
||||
</#switch>
|
||||
|
||||
<#if data.previousEmpires?size == 0>
|
||||
<@form_text label="Nom d'empire" value=data.empire! name="empire" maxLength=20 />
|
||||
<tr style="display:none"><td colspan="2"><input type="hidden" name="old" value="" /></td></tr>
|
||||
<#else>
|
||||
<@form_select name="old" label="Réutiliser un nom d'empire">
|
||||
<#list data.previousEmpires as oldName>
|
||||
<@form_option text=oldName selected=( oldName == data.empire! ) />
|
||||
</#list>
|
||||
</@form_select>
|
||||
|
||||
<@form_extra>Laissez ce champ vide si vous voulez réutiliser un ancien nom d'empire.</@form_extra>
|
||||
<#if ! data.previousEmpires?seq_contains(data.empire!)>
|
||||
<#assign empValue = data.empire!>
|
||||
</#if>
|
||||
<@form_text name="empire" label="Nouveau nom d'empire" value=empValue! maxLength=20 />
|
||||
</#if>
|
||||
|
||||
|
||||
<#switch data.planetError!>
|
||||
<#case "EMPTY"><@form_error>Veuillez choisir un nom de planète.</@form_error><#break>
|
||||
<#case "INVALID"><@form_error>Nom de planète invalide.</@form_error><#break>
|
||||
<#case "UNAVAILABLE"><@form_error>Ce nom de planète n'est pas disponible.</@form_error><#break>
|
||||
<#case "BANNED"><@form_error>Ce nom de planète a été banni.</@form_error><#break>
|
||||
</#switch>
|
||||
<@form_text name="planet" label="Nom de planète" value=data.planet! maxLength=20 />
|
||||
|
||||
<@form_submit label="Entrer dans le jeu" />
|
||||
</@form>
|
||||
</@page>
|
||||
</#macro>
|
Reference in a new issue