Ajout page permettant de lister et sauvegarder ses résultats aux quizs.
This commit is contained in:
parent
7e609c9cdb
commit
b4c6a9d440
@ -9,7 +9,7 @@ import { availableLangs } from "../../../config/instance.js";
|
||||
const lang=availableLangs[0];
|
||||
|
||||
// Textes :
|
||||
const { localDBNotReady }=require("../../../lang/"+lang+"/answer");
|
||||
const { localDBNotReady, localFileFail, localFileImportOK, wantToSaveResultsDatas }=require("../../../lang/"+lang+"/answer");
|
||||
const { serverError }=require("../../../lang/"+lang+"/general");
|
||||
|
||||
// Fonctions :
|
||||
@ -22,11 +22,9 @@ import { loadMatomo } from "./tools/matomo.js";
|
||||
import { userQuizsResults} from "./tools/userQuizsResults";
|
||||
|
||||
// Éléments du DOM manipulés :
|
||||
//const btnSave=document.getElementById("want2Save");
|
||||
//const btnSubmit=document.getElementById("checkResponses");
|
||||
//const propose2Save=document.getElementById("propose2Save");
|
||||
//const responseTxt=document.getElementById("response");
|
||||
const datas2Restore=document.getElementById("datas2Restore");
|
||||
const quizsList=document.getElementById("quizsList");
|
||||
const responseTxt=document.getElementById("response");
|
||||
|
||||
let userDB, allPreviousAnswers=[], myResults;
|
||||
const initialise = async () =>
|
||||
@ -34,10 +32,14 @@ const initialise = async () =>
|
||||
try
|
||||
{
|
||||
// Instanciation de la classe s'occupant du stockage des résultats aux quizs :
|
||||
myResults=await userQuizsResults.initialise("myResults", 1);
|
||||
myResults=await userQuizsResults.initialise("myResults", 2);
|
||||
// Si la base de données est fonctionnel et que des résultats sont déjà enregistrés, on affiche la liste des quizs ayant une réponse connue :
|
||||
if(myResults.dbIsReady !== false)
|
||||
await myResults.showMyQuizs();
|
||||
{
|
||||
myResults.showMyQuizs();
|
||||
if(myResults.allResults.length !== 0)
|
||||
myResults.saveMyQuizs("quizsSave", wantToSaveResultsDatas, ["button"]);
|
||||
}
|
||||
else
|
||||
addElement(quizsList, "p", localDBNotReady);
|
||||
// Statistiques :
|
||||
@ -50,143 +52,44 @@ const initialise = async () =>
|
||||
}
|
||||
initialise();
|
||||
helloDev();
|
||||
/*
|
||||
// Fonction affichant le quiz, quand il est caché par défaut+ déclenchant le chronomètre mesurant la durée de réponse aux questions.
|
||||
const showQuestionnaire = () =>
|
||||
{
|
||||
chronoBegin=Date.now();
|
||||
myForm.style.display="block";
|
||||
btnShow.style.display="none";
|
||||
const here=window.location; // window.location à ajouter pour ne pas quitter la page en mode "preview".
|
||||
if(window.location.hash !== "")
|
||||
{
|
||||
window.location.hash="";// ! le "#" reste
|
||||
window.location.assign(here+"questionnaire");
|
||||
}
|
||||
else
|
||||
window.location.assign(here+"#questionnaire");
|
||||
}
|
||||
|
||||
let chronoBegin;
|
||||
if(btnShow)
|
||||
{
|
||||
btnShow.addEventListener("click", function(e)
|
||||
{
|
||||
try
|
||||
{
|
||||
e.preventDefault();
|
||||
showQuestionnaire();
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
addElement(responseTxt, "p", serverError, "", ["error"]);
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
// Un lien peut être passé pour voir directement le quiz :
|
||||
if(location.hash !== "" && location.hash === "#questionnaire")
|
||||
showQuestionnaire();
|
||||
}
|
||||
|
||||
// Dans le cas d'un quiz groupé, le chrono est lancé dès l'affichage :
|
||||
if(quizInfos.GroupId != "0")
|
||||
{
|
||||
chronoBegin=Date.now();
|
||||
btnSubmit.style.display="block";
|
||||
}
|
||||
|
||||
// Traitement de l'envoi de la réponse de l'utilisateur :
|
||||
let answer;
|
||||
myForm.addEventListener("submit", async function(e)
|
||||
datas2Restore.addEventListener("change", function(e)
|
||||
{
|
||||
try
|
||||
{
|
||||
e.preventDefault();
|
||||
btnSubmit.style.display="none"; // seulement une réponse à la fois, SVP :)
|
||||
responseTxt.innerHTML=""; // supprime les éventuels messages déjà affichés
|
||||
answer=userQuizsResults.checkUserAnswers(myForm);
|
||||
answer.duration=Math.round((Date.now()-chronoBegin)/1000);
|
||||
answer.QuestionnaireId=quizInfos.QuestionnaireId;
|
||||
answer.GroupId=quizInfos.GroupId;
|
||||
|
||||
// Enregistrement et affichage du résultat, suivant les cas :
|
||||
let getOuput=userQuizsResults.getResultOutput(answer);
|
||||
// S'il y a déjà une réponse dans la bd, c'est que l'utilisateur est ok pour les enregister.
|
||||
if(myResults.allResults.length !== 0)
|
||||
responseTxt.innerHTML="";
|
||||
const selectedFiles=datas2Restore.files;
|
||||
if(selectedFiles !== null && selectedFiles.length === 1)
|
||||
{
|
||||
const saveResponses=await myResults.addResult(answer);
|
||||
if(saveResponses)
|
||||
await myResults.showPreviousResultsForId(quizInfos.QuestionnaireId, quizInfos.GroupId);
|
||||
getOuput+="<br><br>"+wantToSeaPreviousResults.replace("URL","#explanations");
|
||||
// Nouveau quiz pour cette personne ?
|
||||
await myResults.saveNewQuiz(quizInfos);
|
||||
}
|
||||
else
|
||||
{
|
||||
// S'il n'a pas encore de données, on stocke temporairement le résultat et propose de l'enregistrer :
|
||||
if(myResults.saveResultTemp(answer) && myResults.dbIsReady)
|
||||
// selectedFiles[0].type ne fonctionne pas avec certains navigateurs (Fennec), donc... :
|
||||
const extension=selectedFiles[0].name.substring(selectedFiles[0].name.lastIndexOf(".")+1);
|
||||
if(extension !== "json")
|
||||
addElement(responseTxt, "p", localFileFail, "", ["error"]);
|
||||
else
|
||||
{
|
||||
getOuput+="<br><br>"+wantToSaveResponses;
|
||||
propose2Save.style.display="block";
|
||||
}
|
||||
}
|
||||
addElement(responseTxt, "p", getOuput, "", ["info"]);
|
||||
// On redirige vers le résultat :
|
||||
const here=window.location;
|
||||
if(window.location.hash !== "")
|
||||
{
|
||||
window.location.hash=""; // ! le "#" reste
|
||||
window.location.assign(here+"response");
|
||||
}
|
||||
else
|
||||
window.location.assign(here+"#response");
|
||||
|
||||
// + Affichage des textes d'explication pour chaque question
|
||||
const explanations=document.querySelectorAll(".help");
|
||||
for(let i in explanations)
|
||||
{
|
||||
if(explanations[i].style != undefined) // sinon, la console affiche une erreur "TypeError: explanations[i].style is undefined", bien que tout fonctionne (?)
|
||||
explanations[i].style.display="block";
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
addElement(responseTxt, "p", serverError, "", ["error"]);
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
|
||||
// L'utilisateur demande à sauvegarder son résultat :
|
||||
btnSave.addEventListener("click", async function(e)
|
||||
{
|
||||
try
|
||||
{
|
||||
e.preventDefault();
|
||||
if(!isEmpty(myResults.dbIsReady) && !isEmpty(answer)) // On ne devrait pas m'avoir proposé d'enregistrer dans ce cas, mais...
|
||||
{
|
||||
const saveResponses=await myResults.addResult(answer);
|
||||
if(saveResponses)
|
||||
{
|
||||
// Nouvel enregistrement = actualisation nécessaire de la liste des résultats pour ce quiz :
|
||||
await myResults.showPreviousResultsForId(quizInfos.QuestionnaireId, quizInfos.GroupId);
|
||||
// Nouveau quiz (ce qui doit être le cas, mais...) :
|
||||
await myResults.saveNewQuiz(quizInfos);
|
||||
// Redirection vers la liste des résultats :
|
||||
const here=window.location; // window.location à ajouter pour ne pas quitter la page en mode "preview".
|
||||
if(window.location.hash !== "")
|
||||
// Lecture du contenu du fichier qui est passé au parseur :
|
||||
const reader=new FileReader();
|
||||
reader.onload=async function(e)
|
||||
{
|
||||
window.location.hash="";// ! le "#" reste
|
||||
window.location.assign(here+"explanations");
|
||||
}
|
||||
else
|
||||
window.location.assign(here+"#explanations");
|
||||
const datas=JSON.parse(reader.result);
|
||||
if(myResults.dbIsReady !== false)
|
||||
{
|
||||
if((datas.quizs.length !==0) &&(datas.results.length !==0))
|
||||
{
|
||||
await myResults.saveAllResults(datas.results);
|
||||
await myResults.saveAllQuizs(datas.quizs);
|
||||
// Puis actualise l'affichage :
|
||||
myResults.showMyQuizs();
|
||||
addElement(responseTxt, "p", localFileImportOK, "", ["success"]);
|
||||
}
|
||||
}
|
||||
};
|
||||
reader.readAsText(selectedFiles[0]);
|
||||
}
|
||||
propose2Save.style.display="none";
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
addElement(responseTxt, "p", serverError, "", ["error"]);
|
||||
console.error(e);
|
||||
}
|
||||
});*/
|
||||
});
|
@ -29,7 +29,8 @@ const quizInfos=
|
||||
url: window.location.pathname,
|
||||
GroupId: document.getElementById("groupId").value,
|
||||
QuestionnaireId: document.getElementById("questionnaireId").value,
|
||||
title: myForm.dataset.title
|
||||
title: myForm.dataset.title,
|
||||
keywords: myForm.dataset.keywords
|
||||
};
|
||||
|
||||
// Éléments du DOM manipulés :
|
||||
@ -50,7 +51,7 @@ const initialise = async () =>
|
||||
btnShow.style.display="inline"; // Le bouton est caché si le JS est inactif, car le JS est nécessaire pour la suite...
|
||||
}
|
||||
// Instanciation de la classe s'occupant du stockage des résultats aux quizs :
|
||||
myResults=await userQuizsResults.initialise("myResults", 1);
|
||||
myResults=await userQuizsResults.initialise("myResults", 2);
|
||||
// Si la base de données est fonctionnel et que des résultats sont déjà enregistrés, on affiche ceux pour le quiz en cours :
|
||||
if(myResults.allResults.length !== 0)
|
||||
await myResults.showPreviousResultsForId(quizInfos.QuestionnaireId, quizInfos.GroupId);
|
||||
|
@ -182,7 +182,12 @@ export class userQuizsResults
|
||||
store.createIndex("nbCorrectAnswers", "nbCorrectAnswers", { unique: false });
|
||||
store.createIndex("nbQuestions", "nbQuestions", { unique: false });
|
||||
store.createIndex("date", "date", { unique: false }); // bien que doublons peu probables...
|
||||
}
|
||||
}
|
||||
if (e.oldVersion < 2)
|
||||
{
|
||||
const quizsStore=req.transaction.objectStore("userQuizs");
|
||||
quizsStore.createIndex("keywords", "keywords", { unique: false });
|
||||
}
|
||||
};
|
||||
req.onsuccess= (e) =>
|
||||
{
|
||||
@ -350,6 +355,38 @@ export class userQuizsResults
|
||||
})
|
||||
}
|
||||
|
||||
// Importation en masse des résultats :
|
||||
async saveAllResults(results)
|
||||
{
|
||||
await this.getOpenDb();
|
||||
return new Promise( (resolve, reject) =>
|
||||
{
|
||||
const resultsStore=getStore(this.db, "userResults", "readwrite");
|
||||
// Au commence par vider l'existant :
|
||||
resultsStore.clear();
|
||||
// Puis on enregistre les données fournies :
|
||||
for(const result of results)
|
||||
{
|
||||
if(this.checkIfResultIsComplete(result))
|
||||
{
|
||||
let req;
|
||||
req=resultsStore.add(result);
|
||||
req.onerror= (e) =>
|
||||
{
|
||||
this.db.close();
|
||||
reject(e);
|
||||
};
|
||||
}
|
||||
}
|
||||
this.db.close();
|
||||
// On injecte les donnés qui ont été acceptées dans l'instance :
|
||||
this.getAllResults().then( () =>
|
||||
{
|
||||
resolve(true);
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
// Enregistre le quiz, s'il n'existe pas déjà :
|
||||
async saveNewQuiz(quizInfos)
|
||||
{
|
||||
@ -397,6 +434,38 @@ export class userQuizsResults
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Importation en masse des quizs :
|
||||
async saveAllQuizs(quizs)
|
||||
{
|
||||
await this.getOpenDb();
|
||||
return new Promise( (resolve, reject) =>
|
||||
{
|
||||
const quizsStore=getStore(this.db, "userQuizs", "readwrite");
|
||||
// Au commence par vider l'existant :
|
||||
quizsStore.clear();
|
||||
// Puis on enregistre les données fournies :
|
||||
for(const quiz of quizs)
|
||||
{
|
||||
if(!isEmpty(quiz.url) && !isEmpty(quiz.title) && (!isEmpty(quiz.QuestionnaireId) || !isEmpty(quiz.GroupId)))
|
||||
{
|
||||
let req;
|
||||
req=quizsStore.add(quiz);
|
||||
req.onerror= (e) =>
|
||||
{
|
||||
this.db.close();
|
||||
reject(e);
|
||||
};
|
||||
}
|
||||
}
|
||||
this.db.close();
|
||||
// On injecte les donnés qui ont été acceptées dans l'instance :
|
||||
this.getAllQuizs().then( () =>
|
||||
{
|
||||
resolve(true);
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
// Fonction affichant les précédents résultats connus pour le quiz encours :
|
||||
async showPreviousResultsForId(QuestionnaireId, GroupId, txtContentId="explanationsContent", txtTitleId="explanationsTitle")
|
||||
@ -443,9 +512,7 @@ export class userQuizsResults
|
||||
addElement(explanationsContent, "ul", previousResultsContent);
|
||||
}
|
||||
else
|
||||
addElement(explanationsContent, "ul", noPreviousResults);
|
||||
/// Revoir : ajouter un lien vers la page listant les quizs auxquels l'utilisateur a répondu
|
||||
/// addElement(explanationsContent, "p", "<a href=\"/"+configTemplate.userHomePage+"\" class=\"button cardboard\">"+configTemplate.userHomePageTxt+"</a>", "", ["btn"], "", false);
|
||||
addElement(explanationsContent, "ul", noPreviousResults);
|
||||
}
|
||||
}
|
||||
|
||||
@ -454,13 +521,24 @@ export class userQuizsResults
|
||||
{
|
||||
const listElt=document.getElementById(listId);
|
||||
// On affiche d'abord les quizs les plus récents :
|
||||
const myQuizs=this.allQuizs.reverse();
|
||||
const myQuizs=Object.values(this.allQuizs);
|
||||
myQuizs.reverse();
|
||||
let html="";
|
||||
for(const quiz of myQuizs)
|
||||
html+=`<li><a href="${quiz.url}#explanations">${quiz.title}</a></li>`;
|
||||
if(html !== "")
|
||||
addElement(listElt, "ul", html+"ici");
|
||||
addElement(listElt, "ul", html);
|
||||
else
|
||||
addElement(listElt, "p", noPreviousResultsAtAll);
|
||||
}
|
||||
|
||||
// Propose à l'utilisateur de télécharger ses données dans un fichier JSON
|
||||
saveMyQuizs(eltId="quizsSave", saveLinkTxt="Save your datas.", cssClass=[], linkId="")
|
||||
{
|
||||
const datas2Save=[JSON.stringify({ quizs: this.allQuizs, results: this.allResults })];
|
||||
const datasFile=new File(datas2Save, "myDatas.json", { type: "application/json", });
|
||||
const datasFileUrl=URL.createObjectURL(datasFile);
|
||||
const domElt=document.getElementById(eltId);
|
||||
addElement(domElt, "a", saveLinkTxt, linkId, cssClass, { href:datasFileUrl, download:"myDatas.json"});
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
</ul>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<!--<li><a href="/connexion.html" id="accountHeadLink">Mon compte</a></li>-->
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
|
@ -19,6 +19,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
|
@ -19,6 +19,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
|
@ -3,8 +3,8 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Retrouvez vos résultats aux quizs auxquels vous avez déjà répondu sur WikiLerni.">
|
||||
<title>Retrouvez vos résultats aux quizs WikiLerni</title>
|
||||
<meta name="description" content="Retrouvez les quizs auxquels vous avez déjà répondu. aux quizs auxquels vous avez déjà répondu sur WikiLerni.">
|
||||
<title>Retrouvez les quizs auxquels vous avez déjà répondu. aux quizs WikiLerni</title>
|
||||
<!-- Version lisible des scripts : https://forge.chapril.org/Fab_Blab/WikiLerni/src/branch/master/front/src -->
|
||||
<script src="/JS/polyfill.app.js" defer></script>
|
||||
<script src="/JS/myQuizs.app.js" defer></script>
|
||||
@ -20,7 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez vos résultats">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
@ -39,12 +39,19 @@
|
||||
<noscript>Désolé, mais pour l’instant, l’utilisation de WikiLerni nécessite l’activation du JavaScript.</noscript>
|
||||
|
||||
<div id="quizsList"></div>
|
||||
<div id="quizsSave" class="ctaButton"></div>
|
||||
<div class="ctaButton"><a href="#quizsRestore" class="button">Importer mes données.</a>
|
||||
<form id="quizsRestore"><fieldset><p class="info">Sélectinnez ci-dessous, votre fichier de sauvegarde.</p><input type="file" id="datas2Restore" class="cardboard" \></fieldset></form></div>
|
||||
<div id="response"></div>
|
||||
|
||||
<div id="explanations" class="framed engraved">
|
||||
<h2>Comment ça marche ?</h2>
|
||||
<p>À chaque fois que vous répondez à un quiz sur WikiLerni, votre résultat peut être enregistré, si vous l'acceptez.</p>
|
||||
<p>Vous n'avez pas besoin de créer un compte, car ces données sont enregistrées dans votre navigateur internet, c'est-à-dire sur votre ordinateur. Ceci peut ne pas fonctionner, si vous utilisez une navigation privée ou d'autres configurations interdisant ce type d'enregistrement.</p>
|
||||
<p>Par ailleurs, ces données ne sont accessibles qu'à partir du navigateur vous ayant permi des les enregistrer.<br>Aussi, pour éviter de les perdre, ou encore vous permettre de les récupérer sur un autre navigateur, un outil de sauvegarde vous est proposé.</p>
|
||||
<p>Tout d’abord, <b>cette fonctionnalité est encore expérimentale</b>. Donc si vous rencontrez une erreur, n’hésitez pas à m’en informer.</p>
|
||||
<p>À chaque fois que vous répondez à un quiz sur WikiLerni, votre résultat peut être enregistré. Ceci vous est proposé lors du premier enregistrement et est ensuite automatique.</p>
|
||||
<p>Vous pouvez ainsi retrouver facilement les quizs auxquels vous avez déjà répondu, ainsi que vos précédents résultats.</p>
|
||||
<p><b>Vous n’avez pas besoin de créer un compte</b>, car ces données sont enregistrées dans votre navigateur internet, c’est-à-dire sur votre ordinateur. </p>
|
||||
<p><b>Ceci peut ne pas fonctionner</b>, si vous utilisez une navigation privée ou d’autres configurations interdisant ce type d’enregistrement.</p>
|
||||
<p>Par ailleurs, ces données ne sont accessibles qu’à partir du navigateur vous ayant permis de les enregistrer.<br>Aussi, <b>pour éviter de perdre vos données</b>, ou encore, vous permettre de les récupérer sur un autre navigateur, une solution de sauvegarde vous est proposée. N’hésitez pas à la tester.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<a href="/" title="Page d'accueil WikLerni"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil de WikiLerni" /></a>
|
||||
<ul id="headLinks">
|
||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||
<li><a href="/quizs/" title="Retrouvez les quizs auxquels vous avez déjà répondu.">Mes quizs</a></li>
|
||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</a></li>
|
||||
<li><a href="/a-propos.html">À propos</a></li>
|
||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||
|
@ -4,6 +4,8 @@ module.exports =
|
||||
localDBNeedDatas: "Il manque des données nécessaires à l'enregistrement.",
|
||||
localDBNeedQuizId: "Aucun identifiant n'a été fourni pour le quiz.",
|
||||
localDBNotReady: "Désolé, mais il semble que votre navigateur ne permette pas l'utilisation de cette page. Pour plus d'informations, lisez les explications ci-dessous.",
|
||||
localFileFail: "Le fichier que vous avez sélectionné n'a pas le format attendu (JSON).",
|
||||
localFileImportOK: "Vos données ont bien été importées. Vos quizs devraient apparaître ci-dessus.",
|
||||
needIntegerNumberCorrectResponses : "Le nombre de réponses correctes doit être un nombre entier.",
|
||||
needIntegerNumberSecondesResponse : "La durée de la réponse doit être un nombre entier de secondes.",
|
||||
needIntegerNumberUserResponses : "Le nombre de questions auxquelles l'utilisateur a répondu doit être un nombre entier.",
|
||||
@ -25,6 +27,7 @@ module.exports =
|
||||
userAnswersFail : "Vous avez répondu en DURATION secondes et avez <u><b>NBCORRECTANSWERS bonne(s) réponse(s) sur NBQUESTIONS questions</b></u>. C'est certain, vous ferez mieux la prochaine fois !",
|
||||
userAnswersMedium : "Vous avez répondu en DURATION secondes et avez <u><b>NBCORRECTANSWERS bonne(s) réponse(s) sur NBQUESTIONS questions</b></u>. C'est pas mal du tout !",
|
||||
userAnswersSuccess : "Vous avez répondu en DURATION secondes et avez <u><b>NBCORRECTANSWERS bonne(s) réponse(s) sur NBQUESTIONS questions</b></u>. Bravo ! Rien ne vous échappe !",
|
||||
wantToSaveResultsDatas: "Sauvegarder les données.",
|
||||
wantToSaveResponses: "Si vous le souhaitez, vous pouvez <b>sauvegarder vos résultats</b> (il n'est pas nécessaire de créer un compte) :",
|
||||
wantToSeaPreviousResults: "<a href='URL'>Cliquez ici</a> pour tous vos résultats et vos statistiques de réussite à ce quiz."
|
||||
};
|
@ -4,6 +4,7 @@ module.exports =
|
||||
headLinks:
|
||||
[
|
||||
{ anchor: "Contact", attributes: { href:"/contact.html", rel: "nofollow" } },
|
||||
{ anchor: "Mes quizs", attributes: { href:"/mes-quizs.html", rel: "nofollow", title:"Liste des quizs auxquels vous avez déjà répondu." } },
|
||||
{ anchor: "Parcourir", attributes: { href:"/quizs/", id:"indexHeadLink", title:"Les dernières publications" } },
|
||||
{ anchor: "À propos", attributes: { href:"/a-propos.html", title:"En savoir + sur WikiLerni" } },
|
||||
{ anchor: "Accueil", attributes: { href:"/", title:"Page d'accueil" } }
|
||||
@ -29,8 +30,8 @@ module.exports =
|
||||
stopMailPage : "stop-mail.html?t=",
|
||||
subscribePage : "inscription.html",
|
||||
updateAccountPage: "compte.html",
|
||||
userHomePage : "accueil.html",
|
||||
userHomePageTxt : "Ma page d'accueil.",
|
||||
userHomePage : "mes-quizs.html",
|
||||
userHomePageTxt : "Tous mes quizs.",
|
||||
usersManagementPage: "gestion-utilisateurs.html",
|
||||
validationLinkPage : "validation.html?t=",
|
||||
/* Textes (général) */
|
||||
|
Loading…
Reference in New Issue
Block a user