!function(){var e={6028:function(e,n,i){const t=i(671),r=i(4988);e.exports={apiUrl:"http://localhost:3000/api",siteUrl:"http://localhost:8080",siteUrlProd:"https://www.wikilerni.com",adminName:"Fab",adminEmail:"dev@wikilerni.com",senderName:"WikiLerni",senderEmail:"bonjour@wikilerni.com",adminLang:"fr",theme:"wikilerni",availableLangs:["fr"],siteName:"WikiLerni",beginCodeGodfather:"WL",defaultReceiptDays:"147",cronTimingAlertInSeconde:120,responseTimingAlertInSeconde:3,tokenSignupValidationTimeInHours:"48h",tokenLoginLinkTimeInHours:"1h",tokenConnexionMinTimeInHours:"24h",tokenConnexionMaxTimeInDays:"180 days",tokenLoginChangingTimeInHours:"1h",tokenDeleteUserTimeInHours:"1h",tokenUnsubscribeLinkTimeInDays:"7 days",freeAccountTimingInDays:0,freeAccountExpirationNotificationInDays:3,accountExpirationFirstNotificationInDays:10,accountExpirationSecondNotificationInDays:3,inactiveAccountTimeToDeleteInDays:180,nbQuestionsMin:1,nbQuestionsMax:0,nbChoicesMax:10,nbNewQuestionnaires:12,hourGiveNewQuestionnaireBegin:3,hourGiveNewQuestionnaireEnd:8,maxQuestionnaireSendedAtSameTime:50,minSearchQuestionnaires:3,fieldNewQuestionnaires:"publishingAt",nbQuestionnairesByGroupMin:1,nbQuestionnairesByGroupMax:0,nbIllustrationsMin:1,nbIllustrationsMax:1,maxIllustrationSizeinOctet:1e6,mimeTypesForIllustration:["image/jpg","image/jpeg","image/png","image/gif","image/png"],illustrationsWidthMaxInPx:500,illustrationsMiniaturesWidthMaxInPx:200,nbLinksMin:1,nbLinksMax:0,nbQuestionsMin:1,nbQuestionsMax:0,nbChoicesMax:10,passwordMinLength:t.password.minlength,dirCacheUsers:t.dirCacheUsers,dirCacheUsersAnswers:t.dirCacheUsersAnswers,dirCacheQuestionnaires:r.dirCacheQuestionnaires,dirCacheQuestions:r.dirCacheQuestions,dirCacheUsersQuestionnaires:r.dirCacheUsersQuestionnaires,dirHTMLQuestionnaires:r.dirHTMLQuestionnaires,dirWebQuestionnaires:r.dirWebQuestionnaires}},4988:function(e){e.exports={questionnaireRoutes:"/questionnaire",getListNextQuestionnaires:"/getlistnextquestionnaires/",getQuestionnaireRoutes:"/get",getRandomQuestionnairesRoute:"/getrandom",getStatsQuestionnaires:"/stats/",previewQuestionnaireRoutes:"/preview",publishedQuestionnaireRoutes:"/quiz/",regenerateHTML:"/htmlregenerated",searchAdminQuestionnairesRoute:"/searchadmin",searchQuestionnairesRoute:"/search",groupRoutes:"/group",getGroupRoute:"/get/",previewGroupRoutes:"/preview",searchGroupsRoute:"/search",questionsRoute:"/question/",tagsSearchRoute:"/tags/search/",getAdminStats:"/getadminstats/",getPreviousAnswers:"/user/answers/",getStatsAnswers:"/user/anwswers/stats/",saveAnswersRoute:"/answer/",Questionnaire:{title:{maxlength:255,required:!0},slug:{maxlength:150},introduction:{required:!0}},searchQuestionnaires:{minlength:3,required:!0},Group:{title:{maxlength:255,required:!0},slug:{maxlength:150}},Question:{text:{maxlength:255,required:!0},rank:{required:!0,min:1,defaultValue:1}},Choice:{text:{maxlength:255,required:!0}},search:{minlength:3,required:!0},searchGroups:{minlength:3,required:!0},dirCacheGroups:"datas/questionnaires/groups",dirCacheQuestionnaires:"datas/questionnaires",dirCacheQuestions:"datas/questionnaires/questions",dirCacheTags:"datas/questionnaires/tags",dirCacheUsersQuestionnaires:"datas/users/questionnaires",dirHTMLGroups:"front/public/quiz/gp",dirHTMLQuestionnaires:"front/public/quiz",dirHTMLNews:"front/public/quizs",dirHTMLTags:"front/public/quizs",dirWebGroups:"quiz/gp",dirWebQuestionnaires:"quiz",dirWebNews:"quizs/",dirWebTags:"quizs/",nbRandomResults:3,nbQuestionsMin:1,nbQuestionsMax:0,nbChoicesMax:10,nbTagsMin:0,nbTagsMax:0}},671:function(e){e.exports={userRoutes:"/user",checkDeleteLinkRoute:"/confirmdelete/",checkIfIsEmailfreeRoute:"/isemailfree",checkLoginRoute:"/checklogin/",checkNewLoginLinkRoute:"/confirmnewlogin/",checkSubscribeTokenRoute:"/validation/",connectionRoute:"/login",connectionWithLinkRoute:"/checkloginlink",createUserRoute:"/create",getAdminStats:"/getadminstats/",getGodChilds:"/getgodchilds/",getGodfatherRoute:"/getgodfatherid",getLoginLinkRoute:"/getloginlink",getPayments:"/payment/getforoneuser/",getUserInfos:"/get/",getUsersQuestionnairesRoute:"/getusersquestionnaires/",searchUserRoute:"/search/",signupCompletionRoute:"/signupcompletion/",subscribeRoute:"/signup",unsubscribeRoute:"/subscription/stop/",updateUserInfos:"/modify/",validateUserRoute:"/validate/",name:{maxlength:70,required:!0},email:{maxlength:255,required:!0},password:{minlength:8,maxlength:72,required:!0},newPassword:{minlength:8,maxlength:72},codeGodfather:{maxlength:255},cguOk:{value:"true",required:!0},search:{minlength:1,required:!0},timeDifferenceMin:-720,timeDifferenceMax:840,dirCacheUsers:"datas/users",dirCacheUsersAnswers:"datas/users/questionnaires/answers",dirCacheUsersWithoutAnswers:"datas/users/questionnaires/without"}},223:function(e){e.exports={addBtnTxt:"Ajouter",addOkMessage:"Les données ont bien été enregistrées.",alertNewWindow:"nouvelle fenêtre",badUrl:"Tentative d'accès à une page n'existant pas :",btnLinkToQuestionnaire:"Afficher !",btnProposeConnection:"Je me connecte.",btnProposeSubscribe:"Je crée mon compte.",btnShowOnWebSite:"Lire la suite sur #SITE_NAME",deleteBtnTxt:"Supprimer",deleteFailMessage:"La suppression de l'enregistrement #ID a échoué.",deleteOkMessage:"La suppression a bien été enregistrée.",failAuth:"Erreur d'authentification.",failAuthCron:"Tentative de lancement d'un cron sans le bon token.",failAuthHeader:"Absence de header Authorization.",failAuthId:"Identifiant non valide : ",failAuthToken:"Token invalide ou utilisateur non trouvé.",neededParams:"Des paramètres nécessaires manquants sont manquants.",nextPage:"Page suivante",notAllowed:"Vous n'avez pas les droits nécessaires pour cette action.",notRequired:"Facultatif.",notValidFormat:"Format non valide.",previousPage:"Page précédente",serverError:"Désolé. Une erreur imprévue est survenue. Si cela persiste, n'hésitez à prévenir l'administrateur du site.",serverErrorAdmin:"Bug de l'application :",siteHTMLTitle:"WikiLerni : la culture générale en liberté",siteMetaDescription:"Avec WikiLerni, vous apprenez régulièrement de nouvelles choses. Vous recevez de courts articles lisibles en quelques minutes. Des quizs vous permettent ensuite de tester ce que vous avez retenu.",scriptTimingAlert:"*** Script lent : SCRIPT_TIMING millisecondes, route : SCRIPT_URL",scriptTimingInfo:"Durée de la réponse : SCRIPT_TIMING millisecondes, route : SCRIPT_URL",statsAdmin:"Durant les dernières 24h : NB_USERS_24H comptes ont été créés, NB_SUBSCRIPTIONS_24H validés et NB_USERS_DELETED_24H supprimés. NB_ANSWERS_24H réponses aux quizs ont été enregistrées.
En tout, il y a : NB_USERS_TOT comptes, dont NB_SUBSCRIPTIONS_TOT validés et NB_SUBSCRIPTIONS_PREMIUM comptes prémium. NB_ANSWERS_TOT réponses aux quizs ont été enregistrées.
Parmi les NB_USERS_DELETED_TOT comptes supprimés, NB_USERS_DELETED_VALIDED avaient validé leur compte et NB_USERS_DELETED_PREMIUM avaient souscrit un compte prémium.",subscriptionCall:"Inscrivez-vous !",updateBtnTxt:"Modifier",updateOkMessage:"La mise à jour à jour a bien été enregistrée."}},1494:function(e){e.exports={alreadyConnected:"Vous êtes déjà connecté au site !",badLinkValidationMessage:"Votre lien de confirmation ne semble pas valide ou bien il a expiré. Vous pouvez en recevoir un nouveau en cliquant ici.",badPassword:"Aucun compte utilisateur ne correspond aux informations saisies.",byebyeMessage:"Si vous voyez ce message, c'est que votre déconnexion s'est bien déroulée.
À bientôt !",connectionOk:"Connexion réussie.",creationOkMessage:"Le nouvel utilisateur a bien été enregistré.",cronDeleteUnvalidedUsersMessage:" comptes utilisateurs non validés ont été supprimés.",deleteFailMessage:"Tentative de suppression d'un utilisateur inexistant : ",deleteInactiveUsersMessage:" comptes utilisateurs inactifs ont été supprimés.",deleteOkMessage:"L'utilisateur a bien été supprimé.",emailNotFound:"Aucun compte utilisateur n'a été trouvé pour cette adresse e-mail.",failBotTest:"Un problème a été rencontré durant votre inscription. En cas de difficulté, n'hésitez pas contacter l'administrateur du site.",failBotTestLog:"Une inscription a été bloquée, parce que le champ email2 était renseigné avec : ",formsEmailLabel:"E-mail :",formsEmailPlaceholder:"Votre adresse e-mail",formsEmail2Placeholder:"Si vous voyez ce champ, laissez-le vide",formsCGUOkLabel:'J\'accepte les Conditions Générale d\'Utilisation du site (requis).',formsSubmitTxt:"Je m'abonne !",godfatherFound:'Votre "parrain" a bien été trouvé. Cette personne sera avertie que vous l\'avez désignée.',godfatherNotFound:"Désolé mais aucun utilisateur n'a été trouvé pour ce code / e-mail de parrainage :(",infosAdminGodfather:"Cet utilisateur a été parrainé par ",infosAdminNbGodChilds:"Ses #NB filleuls : ",infosUserForAdmin:"Cet utilisateur (id: ID_USER) a créé son compte le DATE_CREA, la dernière mise à jour datant du DATE_UPDATE.
Date de sa dernière connexion : DATE_CONNECTION.",infosUserNbGodChilds:'Voici les #NB utilisateur(s) inscrit(s) en vous désignant comme "parrain" : ',infosUserNoGodchilds:"Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme \"parrain\".",mailDeleteBodyHTML:"

Bonjour USER_NAME,

Pour confirmer la suppression de votre compte, cliquez sur le lien ci-dessous sans tarder.

",mailDeleteBodyTxt:"Bonjour USER_NAME,\n\nPour confirmer la suppression de votre compte, cliquez sur le lien suivant sans tarder :\nLINK_URL",mailDeleteLinkAlreadyMessage:"Il semble que vous ayez déjà validé la suppression de votre compte.",mailDeleteLinkFailMessage:"Votre lien de suppression n'est pas valide ou alors il a expiré.",mailDeleteLinkMessage:"Votre demande de suppression a bien été enregistrée. Merci de cliquer sans tarder sur le lien qui vient de vous être envoyé par e-mail pour confirmer.",mailDeleteLinkOkMessage:"Votre compte a bien été supprimé. Merci d'avoir utilisé nos services.",mailDeleteLinkTxt:"Confirmer.",mailDeleteSubject:"Confirmer la suppression de votre compte.",mailLoginLinkBodyHTML:"

Bonjour USER_NAME,

Pour vous connecter à votre compte, cliquez sur le lien suivant sans tarder :

",mailLoginLinkBodyTxt:"Bonjour USER_NAME,\n\nPour vous connecter à votre compte, cliquez sur le lien suivant sans tarder :\nLINK_URL",mailLoginLinkMessage:"Un lien de connexion vient de vous être envoyé sur votre adresse e-mail. Ne tardez pas à l'utiliser, car il n'est valable que durant *TIMING* !",mailLoginLinkSubject:"Votre lien de connexion.",mailLoginLinkTxt:"Me connecter.",mailThankGodfatherBodyHTML:"

Bonjour USER_NAME,

Grâce à vous, un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.
Si dans l'avenir cette personne souscrit un abonnement prémium, votre propre abonnement sera prolongé de 30 jours.

Encore merci et à bientôt !

",mailThankGodfatherBodyTxt:"Bonjour USER_NAME,\nGrâce à vous, un nouvel utilisateur (EMAIL) vient de s'inscrire sur NOM_SITE.\nSi dans l'avenir cette personne souscrit un abonnement prémium, votre propre abonnement sera prolongé de 30 jours.\nEncore merci et à bientôt !",mailThankGodfatherLinkTxt:"Me connecter à mon compte.",mailThankGodfatherSubject:"Merci !",mailUpdateLoginBodyHTML:"

Bonjour USER_NAME,

Pour valider vos nouveaux identifiants de connexion, cliquez sur le lien ci-dessous sans tarder.

",mailUpdateLoginBodyTxt:"Bonjour USER_NAME,\n\nPour valider vos nouveaux identifiants de connexion, cliquez sur le lien suivant sans tarder :\nLINK_URL",mailUpdateLoginLinkMessage:"Cependant, vous avez modifié au moins un de vos identifiants de connexion (e-mail et/ou mot de passe) et vous devez cliquer sur le lien qui vient de vous êtres envoyé sur votre adresse (NEW_EMAIL) pour valider ce changement.
En attendant, merci de continuer à utiliser vos anciens identifiants.",mailUpdateLoginLinkTxt:"Valider.",mailUpdateLoginOkMessage:"La mise à jour de vos identifiants a bien été enregistrée.",mailUpdateLoginSubject:"Merci de valider vos nouveaux identifiants.",mailValidationLinkSBodyHTML:"

Bonjour USER_NAME,

Pour valider et compléter votre inscription, merci de cliquer sur le lien ci-dessous dans les 24h.

",mailValidationLinkSBodyTxt:"Bonjour USER_NAME,\n\nPour valider et compléter votre inscription, merci de cliquer sur le lien suivant dans les 24h :\nLINK_URL",mailValidationLinkSubject:"Merci de valider votre inscription",mailValidationLinkTxt:"Valider mon compte.",mailValidationMessage:"Votre inscription est bien enregistrée.\nPour la finaliser, merci de cliquer dans les 24 H sur le lien de confirmation qui vient d'être envoyé à votre adresse e-mail (#EMAIL).",mailWelcomeBodyHTML:"

Bonjour USER_NAME,

Vous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !

Si vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à EMAIL.

Je vous conseille d'ailleurs d'ajouter EMAIL à votre carnet d'adresses pour éviter que les prochains envois de NOM_SITE n'arrivent en spam.

Par ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi le contenu du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.

Pour ce faire, utilisez le lien ci-dessous.

À bientôt sur NOM_SITE.",mailWelcomeBodyTxt:"Bonjour USER_NAME,\n\nVous venez de valider votre inscription à NOM_SITE. Merci et bienvenue !\n\nSi vous avez la moindre question ou suggestion concernant NOM_SITE, n'hésitez pas à me contacter en écrivant à EMAIL.\n\nJe vous conseille d'ailleurs d'ajouter EMAIL à votre carnet d'adresses pour éviter que les prochains envois de NOM_SITE n'arrivent en \"spam\".\n\nPar ailleurs, pour gérer votre abonnement, accéder à vos informations ou encore chercher plus facilement parmi le contenu du site, vous pouvez à tout moment vous connecter à votre compte utilisateur.\n\nPour ce faire, utilisez le lien suivant : LINK_URL\n\nÀ bientôt sur NOM_SITE.",mailWelcomeLinkTxt:"Me connecter à mon compte.",mailWelcomeSubject:"Bienvenue !",needBeConnected:"Vous devez être connecté pour accéder à cette page.",needChooseLoginWay:"Vous devez soit saisir votre mot de passe, soit cocher la case vous permettant de recevoir un lien de connexion par e-mail.",needEmail:"Merci de saisir votre adresse e-mail.",needKnowNewsletterOk:"Il faut savoir si l'utilisateur accepte ou refuse de recevoir la newsletter.",needLanguage:"Il manque le code langue.",needLongPassWord:"Merci de fournir un mot de passe d'au moins MIN_LENGTH caractères.",needMaxTimeDifference:"Il faut fournir un nombre de minutes à ajouter à l'heure GMT ne dépassant pas 840.",needMinTimeDifference:"Il faut fournir un nombre de minutes à enlever à l'heure GMT ne dépassant pas 720.",needName:"Merci de choisir un nom d'utilisateur.",needNotTooLongName:"Merci de choisir un nom d'utilisateur ne comptant pas plus de 70 caractères.",needNotTooLongEmail:"Merci de saisir une adresse e-mail ne comptant pas plus de 255 caractères.",needPassWord:"Merci de fournir un mot de passe.",needSMTP:"Il manque le serveur SMTP.",needSMTPNotFound:"Il manque un serveur SMTP valide.",needStatus:"Il manque le statut.",needTimeDifference:"Il faut connaître le nombre de minutes du décalage horaire.",needUGCOk:"Merci d'accepter les CGU pour créer votre compte.",needUniqueEmail:"L'adresse e-mail que vous avez saisie est déjà utilisée pour un compte utilisateur. Si vous avez déjà un compte, cliquez-ici pour vous connecter.",needValidationToLogin:"Vous devez d'abord valider votre compte avant de pouvoir vous connecter. Pour ce faire, un nouveau lien vient de vous être envoyé par e-mail.",needValidLastConnectionDate:"La date de dernière connexion n'est pas valide.",passwordCopied:'Le mot de passe généré a été copié dans le presse-papier de votre ordinateur (ou mobile). Vous pouvez le "coller" où vous le souhaitez.',searchUsersWithoutResult:"L'utilisateur n'a pas été trouvé.",tooManyLoginFails:"Désolé mais il y a eu trop de tentatives de connexion infructueuses pour cette adresse e-mail. Vous devez attendre MINUTES minutes pour essayer de nouveau.",updatedFailedGodfatherNotFound:"L'identifiant fourni pour le parrain ne correspond à aucun utilisateur.",updatedNeedGoodEmail:"Mais la nouvelle adresse e-mail n'a pu être enregistrée, car elle n'a pas un format correct.",updatedNeedGoodGodfather:"Mais le nouveau code parrain n'a pu être retenu, car il ne correspond à aucun compte utilisateur ou à l'utilisateur lui-même.",updatedNeedUniqueEmail:"Mais la nouvelle adresse e-mail saisie (NEW_EMAIL) n'a pu être enregistrée, car elle est déjà utilisée pour un autre compte.",updatedNeedValidatedUser:"L'utilisateur que vous souhaitez modifier n'existe pas/plus ou n'a pas encore validé son compte.",updatedOkMessage:"Vos informations ont bien été mises à jour.",validationAlreadyMessage:"Il semble que vous ayez déjà validé votre compte. Vous pouvez vous y connecter en cliquant ici.",validationAlreadyMessageAdmin:"Ce compte a déjà été validé.",validationMessage:"Votre compte vient bien d'être validé. Merci et bienvenue !
Vous pouvez compléter les informations de votre abonnement ci-dessous.",validationMessageAdmin:"Le compte a bien été validé.",welcomeMessage:"Bienvenue #NAME !"}},9864:function(e){class n{static isEmpty(e){return null==e||""===(e+="").trim()}static trimIfNotNull(e){return n.isEmpty(e)?null:(e+="").trim()}static shortenIfLongerThan(e,n){return(e+="").length>n&&(e=e.substring(0,n-3)+"…"),e}static replaceAll(e,n){const i=new RegExp(Object.keys(n).join("|"),"gi");return e.replace(i,(e=>n[e]))}static getRandomInt(e,n){return e=Math.ceil(e),n=Math.floor(n),Math.floor(Math.random()*(n-e))+e}static dateFormat(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"fr";if(n.isEmpty(e))return"";let t=new Date(e),r=t.getDate()+"";1===r.length&&(r="0"+r);let s=t.getMonth()+1+"";1===s.length&&(s="0"+s);let o=t.getFullYear();return"fr"===i?r+"/"+s+"/"+o:"form"===i?o+"-"+s+"-"+r:s+"/"+r+"/"+o}static getPassword(e,n){const i=e+Math.floor(Math.random()*(n-e)),t="ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz",r="123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ";let s=t[Math.floor(Math.random()*t.length)];for(let e=1;e{localStorage.removeItem(e)};var t=i(9864);const r=function(e,n){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},a=!(arguments.length>6&&void 0!==arguments[6])||arguments[6];if((0,t.isEmpty)(n)||(0,t.isEmpty)(e))return!1;{const u=document.createElement(n);if((0,t.isEmpty)(r)||(u.id=r),Array.isArray(s)&&0!=s.length)for(let e in s)u.classList.add(s[e]);if("object"==typeof o)for(let e in o)u.setAttribute(e,o[e]);(0,t.isEmpty)(i)||(u.innerHTML=i.replace(/\n/g,"
")),a&&(e.innerHTML=""),e.appendChild(u)}},s=e.availableLangs[0],{serverError:o}=i(2111)("./"+s+"/general"),{byebyeMessage:a}=i(176)("./"+s+"/user"),u=document.getElementById("response");console.log("**** Hello ami développeur :-)\n\nLe code de WikiLerni est libre et vous pouvez le trouver à cette adresse :\nhttps://forge.chapril.org/Fab_Blab/WikiLerni\n\nPour les suggestions d'amélioration ou questions : dev@wililerni.com ****"),(async()=>{try{n("user"),n("url"),n("message"),r(u,"p",a,"",["success"])}catch(e){r(u,"p",o,"",["error"])}})()}()}();