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,11 +32,9 @@
<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" />

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">
@ -73,79 +72,80 @@
</div>
<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>
<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="response"></div>
<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>
<h1 class="cardboard" id="subscribe">Votre abonnement</h1>
<div id="subscribeIntro"></div>
<form>
<ul class="checkbox_li">
<li class="checkbox_li">
<label for="abo9" class="check"><input type="checkbox" id="abo9" name="abo9" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>1.5 € TTC/mois</b>, soit 9 € TTC pour 180 jours.</label>
</li>
<li class="checkbox_li">
<label for="abo18" class="check"><input type="checkbox" id="abo18" name="abo18" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>3 € TTC/mois</b>, soit 18 € TTC pour 180 jours + une dédicace sur 1 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo36" class="check"><input type="checkbox" id="abo36" name="abo36" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>6 € TTC/mois</b>, soit 36 € TTC pour 180 jours + une dédicace sur 2 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo54" class="check"><input type="checkbox" id="abo54" name="abo54" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>9 € TTC/mois</b>, soit 54 € TTC pour 180 jours + une dédicace sur 4 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="CGVOk" class="check" title="Vous devez d'abord choisir le montant de votre abonnement."><input type="checkbox" id="CGVOk" name="CGVOk" value="true" /><div class="checkbox_override"></div> <span class="info">Jai lu et accepte les <a href="/CGV-CGU.html" target="_blank" rel="noopener">Conditions Générales de Vente</a> (obligatoire).</span></label>
</li>
</ul>
</form>
<div id="WPBtns">
<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.
</script>
<div id="WPBtn9" class="needJS">
<h4>Paiement de votre abonnement de soutien à 9 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-d5ZgzCCYcJbg5AeN.js"></script>
<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>
<div id="WPBtn18" class="needJS">
<h4>Paiement de votre abonnement de soutien à 18 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-LlXn7ylPbr96Cbwx.js"></script>
</div>
<div id="WPBtn36" class="needJS">
<h4>Paiement de votre abonnement de soutien à 36 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-FXDsJCExwAhYH3u3.js"></script>
</div>
<div id="WPBtn54" class="needJS">
<h4>Paiement de votre abonnement de soutien à 54 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-wMg4k4PYLvFT6Zg4.js"></script>
</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>
<p id="godchilds"><b class="info">Pour linstant, aucune personne ne sest inscrite, en vous désignant comme «parrain».</b></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>
<p><b>Il ne sagit pas vraiment dun don, mais dun financement participatif</b>. Sans cela, le site WikiLerni <b>cessera son activité</b> et vous ne pourrez donc plus lutiliser.</p>
<p>Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer ce semestre pour WikiLerni, sachant que <b>ce choix ne vous engagera pas pour les futurs renouvellements</b>.</p>
<p>Une fois sélectionné le montant qui vous convient, il vous faudra <b>cocher la case de validation des Conditions Générales de Vente</b>, pour voir apparaître un bouton de paiement qui vous mènera <b>sur loutil de facturation et paiement en ligne de la société WebPortage</b>.</p>
<h3>Dédicacez des articles WikiLerni</h3>
<p>Au-delà de la possibilité dutiliser WikiLerni pendant 6 mois supplémentaires, <b>à partir de labonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page dun ou plusieurs des articles publiés sur WikiLerni</b>.</p>
<p>Il peut sagir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. <b>Je vous contacterai pour vous demander et cest évidemment facultatif!</b></p><p>Si vous souhaitez apposer le nom, voire le lien internet d<b>une activité commerciale ou associative</b>, cest aussi possible dans certaines conditions, mais merci de commencer par <a href="/contact.html">me contacter pour avis</a>.</p>
<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 id="subscribeInfos" class="needJS">
<h1 class="cardboard" id="subscribe">Votre abonnement</h1>
<div id="subscribeIntro"></div>
<form>
<ul class="checkbox_li">
<li class="checkbox_li">
<label for="abo9" class="check"><input type="checkbox" id="abo9" name="abo9" value="true" /><div class="checkbox_override"></div> J'accepte de payer <b>1.5 € TTC/mois</b>, soit 9 € TTC pour 180 jours.</label>
</li>
<li class="checkbox_li">
<label for="abo18" class="check"><input type="checkbox" id="abo18" name="abo18" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>3 € TTC/mois</b>, soit 18 € TTC pour 180 jours + une dédicace sur 1 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo36" class="check"><input type="checkbox" id="abo36" name="abo36" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>6 € TTC/mois</b>, soit 36 € TTC pour 180 jours + une dédicace sur 2 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="abo54" class="check"><input type="checkbox" id="abo54" name="abo54" value="true" /><div class="checkbox_override"></div> Jaccepte de payer <b>9 € TTC/mois</b>, soit 54 € TTC pour 180 jours + une dédicace sur 4 des articles WikiLerni.</label>
</li>
<li class="checkbox_li">
<label for="CGVOk" class="check" title="Vous devez d'abord choisir le montant de votre abonnement."><input type="checkbox" id="CGVOk" name="CGVOk" value="true" /><div class="checkbox_override"></div> <span class="info">Jai lu et accepte les <a href="/CGV-CGU.html" target="_blank" rel="noopener">Conditions Générales de Vente</a> (obligatoire).</span></label>
</li>
</ul>
</form>
<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.
</script>
<div id="WPBtn9" class="needJS">
<h4>Paiement de votre abonnement de soutien à 9 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-d5ZgzCCYcJbg5AeN.js"></script>
</div>
<div id="WPBtn18" class="needJS">
<h4>Paiement de votre abonnement de soutien à 18 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-LlXn7ylPbr96Cbwx.js"></script>
</div>
<div id="WPBtn36" class="needJS">
<h4>Paiement de votre abonnement de soutien à 36 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-FXDsJCExwAhYH3u3.js"></script>
</div>
<div id="WPBtn54" class="needJS">
<h4>Paiement de votre abonnement de soutien à 54 € TTC.</h4>
<script type="text/javascript" src="https://paiementsecurise.info/S-pan64po51vmnscc5-wMg4k4PYLvFT6Zg4.js"></script>
</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>
<p><b>Il ne sagit pas vraiment dun don, mais dun financement participatif</b>. Sans cela, le site WikiLerni <b>cessera son activité</b> et vous ne pourrez donc plus lutiliser.</p>
<p>Vous pouvez donc choisir en conscience ce que vous pouvez et souhaitez payer ce semestre pour WikiLerni, sachant que <b>ce choix ne vous engagera pas pour les futurs renouvellements</b>.</p>
<p>Une fois sélectionné le montant qui vous convient, il vous faudra <b>cocher la case de validation des Conditions Générales de Vente</b>, pour voir apparaître un bouton de paiement qui vous mènera <b>sur loutil de facturation et paiement en ligne de la société WebPortage</b>.</p>
<h3>Dédicacez des articles WikiLerni</h3>
<p>Au-delà de la possibilité dutiliser WikiLerni pendant 6 mois supplémentaires, <b>à partir de labonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page dun ou plusieurs des articles publiés sur WikiLerni</b>.</p>
<p>Il peut sagir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. <b>Je vous contacterai pour vous demander et cest évidemment facultatif!</b></p><p>Si vous souhaitez apposer le nom, voire le lien internet d<b>une activité commerciale ou associative</b>, cest aussi possible dans certaines conditions, mais merci de commencer par <a href="/contact.html">me contacter pour avis</a>.</p>
<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>

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,14 +101,19 @@ const initialise = async () =>
showGFCode.innerHTML=beginCodeGodfather+response.User.id;
}
const beginSubTS=new Date(response.Subscription.createdAt).getTime();
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"]);
else
if(response.Subscription.numberOfDays !== 0)
{
addElement(divSubscribeIntro, "p", infosExpirated.replace("NB_DAYS", nbDaysOk), "", ["error"]);
window.location.assign("#subscribe");
}
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"]);
else
{
addElement(divSubscribeIntro, "p", infosExpirated.replace("NB_DAYS", nbDaysOk), "", ["error"]);
window.location.assign("#subscribe");
}
}
}
}
xhrGetInfos.setRequestHeader("Authorization", "Bearer "+user.token);

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();
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;
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>dd"+infosExpiratedAdmin;
}
addElement(divSubscribeIntro, "p", subscribeIntro, "", ["info"], "", false);
}
else