Browse Source

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

master
Fabrice PENHOËT 7 months ago
parent
commit
da49e0121d
  1. 3
      controllers/user.js
  2. 4
      front/public/accueil.html
  3. 134
      front/public/compte.html
  4. 21
      front/src/accountUser.js
  5. 13
      front/src/manageUsers.js

3
controllers/user.js

@ -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,

4
front/public/accueil.html

@ -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" />

134
front/public/compte.html

@ -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 d’autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l’inscription votre adresse e-mail <strong id="godfatherEmail"></strong> ou encore le code suivant : <strong id="godfatherCode"></strong>.</p>
<p>À chaque fois qu’un 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 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 d’autres utilisateurs. Pour ce faire, demandez-leur de saisir lors de l’inscription votre adresse e-mail <strong id="godfatherEmail"></strong> ou encore le code suivant : <strong id="godfatherCode"></strong>.</p>
<p>À chaque fois qu’un 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 l’instant, aucune personne ne s’est inscrite, en vous désignant comme « parrain ».</b></p>
</div>
<p id="godchilds"><b class="info">Pour l’instant, aucune personne ne s’est 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> J’accepte 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> J’accepte 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> J’accepte 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">J’ai 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>
<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 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> J’accepte 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> J’accepte 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> J’accepte 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">J’ai 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 l’outil 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 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 class="info">
<h3>Prix libre ?</h3>
<p>WikiLerni pratique le « prix libre », c’est-à-dire que <b>vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni</b>.</p>
<p><b>Il ne s’agit pas vraiment d’un don, mais d’un financement participatif</b>. Sans cela, le site WikiLerni <b>cessera son activité</b> et vous ne pourrez donc plus l’utiliser.</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 l’outil 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é d’utiliser WikiLerni pendant 6 mois supplémentaires, <b>à partir de l’abonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page d’un ou plusieurs des articles publiés sur WikiLerni</b>.</p>
<p>Il peut s’agir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. <b>Je vous contacterai pour vous demander et c’est évidemment facultatif !</b></p><p>Si vous souhaitez apposer le nom, voire le lien internet d’<b>une activité commerciale ou associative</b>, c’est aussi possible dans certaines conditions, mais merci de commencer par <a href="/contact.html">me contacter pour avis</a>.</p>
<h3>WikiLerni s’adapte à 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 d’explications ? Alors <a href="/contact.html">contactez-moi</a>. <b>Je me ferai un plaisir de vous répondre et d’essayer de m’adapter à votre situation</b>.</p>
</div>
<p class="success">En cliquant sur le bouton de paiement, vous serez dirigé vers l’outil 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 », c’est-à-dire que <b>vous pouvez choisir quel montant vous êtes prêt à payer pour continuer à utiliser WikiLerni</b>.</p>
<p><b>Il ne s’agit pas vraiment d’un don, mais d’un financement participatif</b>. Sans cela, le site WikiLerni <b>cessera son activité</b> et vous ne pourrez donc plus l’utiliser.</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 l’outil 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é d’utiliser WikiLerni pendant 6 mois supplémentaires, <b>à partir de l’abonnement à 3 € TTC/mois, pour vous remercier vous pourrez demander à apposer votre nom sur la page d’un ou plusieurs des articles publiés sur WikiLerni</b>.</p>
<p>Il peut s’agir de votre nom / pseudo ou de celui de la personne à qui vous le dédicacez. <b>Je vous contacterai pour vous demander et c’est évidemment facultatif !</b></p><p>Si vous souhaitez apposer le nom, voire le lien internet d’<b>une activité commerciale ou associative</b>, c’est aussi possible dans certaines conditions, mais merci de commencer par <a href="/contact.html">me contacter pour avis</a>.</p>
<h3>WikiLerni s’adapte à 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 d’explications ? Alors <a href="/contact.html">contactez-moi</a>. <b>Je me ferai un plaisir de vous répondre et d’essayer de m’adapter à votre situation</b>.</p>
</div>
</div>

21
front/src/accountUser.js

@ -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);

13
front/src/manageUsers.js

@ -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

Loading…
Cancel
Save