Ajout possibilité abonnements non limités dans le temps (suite scripts frontend

This commit is contained in:
Fabrice PENHOËT 2020-12-07 16:42:39 +01:00
parent 518995f3f9
commit da49e0121d
5 changed files with 93 additions and 84 deletions

View File

@ -247,7 +247,8 @@ exports.checkToken = async (req, res, next) =>
if(datas && datas.Subscription)
{
const beginSubTS=new Date(datas.Subscription.createdAt).getTime();
const nbDaysOk=datas.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24);
// Si abonnement illimité, pas besoin de calculer le nbre de jours restants
const nbDaysOk=(datas.Subscription.numberOfDays===0) ? 1 : datas.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24);
res.status(200).json(
{
isValid: true,

View File

@ -32,12 +32,10 @@
<ul id="menu" class="cardboard">
<li><a href="/accueil.html">MON WIKILERNI</a></li>
<li><a href="/compte.html#infos" title="Email, mot de passe">Mes informations</a></li>
<li><a href="/compte.html#subscribe">Mon abonnement</a></li>
<li><a href="/compte.html#infos" title="Email, mot de passe">Mon abonnement</a></li>
<li><a href="/sortie.html">Me déconnecter</a></li>
</ul>
<div id="home" class="cardboard">
<img id="logo" src="/themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" />
<div id="message" class="cardboard"></div>

View File

@ -31,9 +31,8 @@
<ul id="menu" class="cardboard">
<li><a href="/accueil.html">MON WIKILERNI</a></li>
<li><a href="/compte.html#infos" title="Email, mot de passe">Mes informations</a></li>
<li><a href="/compte.html#subscribe" class="pure-menu-link">Mon abonnement</a></li>
<li><a href="/sortie.html" class="pure-menu-link">Me déconnecter</a></li>
<li><a href="/compte.html#infos" title="Email, mot de passe">Mon abonnement</a></li>
<li><a href="/sortie.html">Me déconnecter</a></li>
</ul>
<div id="account" class="cardboard">
@ -74,20 +73,22 @@
<ul class="checkbox_li">
<li class="checkbox_li">
<label for="deleteOk" class="check"><input type="checkbox" id="deleteOk" name="deleteOk" value="true" /><div class="checkbox_override"></div> <span class="error">Je souhaite supprimer mon compte WikiLerni.</span></label>
</li>
</ul>
<div class="input_wrapper"><input type="submit" value="Valider." class="cardboard" id="submitDatas" /></div>
</form>
<div id="response"></div>
<div id="godfatherInfos" class="needJS">
<h1 class="cardboard" id="godfather">Les utilisateurs que vous avez parrainés</h1>
<div class="engraved framed">
<p>Vous pouvez parrainer dautres utilisateurs. Pour ce faire, demandez-leur de saisir lors de linscription votre adresse e-mail <strong id="godfatherEmail"></strong> ou encore le code suivant: <strong id="godfatherCode"></strong>.</p>
<p>À chaque fois quun utilisateur que vous avez parrainé <b>souscrit ou renouvelle un abonnement payant</b>, son abonnement comme le vôtre <b>se trouve prolongé gratuitement de 30 jours</b>. Cet avantage restera valable tant que cet utilisateur et vous-mêmes garderez votre compte WikiLerni.</p>
</div>
<p id="godchilds"><b class="info">Pour linstant, aucune personne ne sest inscrite, en vous désignant comme «parrain».</b></p>
</div>
<div id="subscribeInfos" class="needJS">
<h1 class="cardboard" id="subscribe">Votre abonnement</h1>
<div id="subscribeIntro"></div>
<form>
@ -110,8 +111,7 @@
</li>
</ul>
</form>
<div id="WPBtns">
<div id="WPBtns" class="needJS">
<script type="text/javascript">
const userWP=JSON.parse(localStorage.getItem("user"));
var paiement_ref = ""+userWP.id;// d'après test, doit être une chaîne pour que cela fonctionne.
@ -134,7 +134,6 @@
</div>
<p class="success">En cliquant sur le bouton de paiement, vous serez dirigé vers loutil de facturation et de paiement en ligne.<br>Lors de votre premier abonnement, <b>vous devrez y créer un compte client qui est distinct de votre compte utilisateur WikiLerni</b>. Vous pouvez y utiliser un mot de passe différent. <br>Les années suivantes, lors de vos renouvellements, vous pourrez vous reconnecter à ce compte client.</p>
</div>
<div class="info">
<h3>Prix libre?</h3>
<p>WikiLerni pratique le «prix libre», cest-à-dire que <b>vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni</b>.</p>
@ -147,6 +146,7 @@
<h3>WikiLerni sadapte à vous</h3>
<p>Vous aimez WikiLerni, mais ne pouvez vraiment pas payer? Vous préférez un autre montant ou un autre moyen de paiement (chèque, virement)? Ou encore vous avez besoin dexplications? Alors <a href="/contact.html">contactez-moi</a>. <b>Je me ferai un plaisir de vous répondre et dessayer de madapter à votre situation</b>.</p>
</div>
</div>
</div>
</section>

View File

@ -35,7 +35,9 @@ const divCrash = document.getElementById("crash");
const divMain = document.getElementById("main-content");
const divMessage = document.getElementById("message");
const divResponse = document.getElementById("response");
const divGodfatherInfos = document.getElementById("godfatherInfos");
const divGodchilds = document.getElementById("godchilds");
const divSubscribeInfos = document.getElementById("subscribeInfos");
const divSubscribeIntro = document.getElementById("subscribeIntro");
const formAccount = document.getElementById("accountUpdate");
const newPassword = document.getElementById("newPassword");
@ -99,6 +101,10 @@ const initialise = async () =>
showGFCode.innerHTML=beginCodeGodfather+response.User.id;
}
const beginSubTS=new Date(response.Subscription.createdAt).getTime();
if(response.Subscription.numberOfDays !== 0)
{
divGodfatherInfos.style.display="block";
divSubscribeInfos.style.display="block";
const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24);
if(nbDaysOk > 0)
addElement(divSubscribeIntro, "p", infosNbDays.replace("NB_DAYS", nbDaysOk), "", ["info"]);
@ -109,6 +115,7 @@ const initialise = async () =>
}
}
}
}
xhrGetInfos.setRequestHeader("Authorization", "Bearer "+user.token);
xhrGetInfos.send();
}

View File

@ -131,11 +131,14 @@ const initialise = async () =>
for(let i in response.Subscription.receiptDays)
formUser.elements["d"+response.Subscription.receiptDays[i]].checked="checked";
const beginSubTS=new Date(response.Subscription.createdAt).getTime();
if(response.Subscription.numberOfDays !== 0)
{
const nbDaysOk=response.Subscription.numberOfDays-Math.round((Date.now()-beginSubTS)/1000/3600/24);
if(nbDaysOk > 0)
subscribeIntro+="<br>"+infosNbDaysAdmin.replace("NB_DAYS", nbDaysOk);
else
subscribeIntro+="<br>"+infosExpiratedAdmin;
subscribeIntro+="<br>dd"+infosExpiratedAdmin;
}
addElement(divSubscribeIntro, "p", subscribeIntro, "", ["info"], "", false);
}
else