Compare commits
4 Commits
9a3673847f
...
362b5e836f
Author | SHA1 | Date | |
---|---|---|---|
362b5e836f | |||
7a47d66546 | |||
350799f177 | |||
eae8feb1cb |
26
.gitignore
vendored
@ -15,17 +15,17 @@ nodemon.json
|
|||||||
|
|
||||||
/front/node_modules/
|
/front/node_modules/
|
||||||
/front/webpack.config*
|
/front/webpack.config*
|
||||||
/front/public/.htaccess*
|
/front/public/www/.htaccess*
|
||||||
/front/public/.htpasswd
|
/front/public/www/.htpasswd
|
||||||
!/front/webpack.config.js
|
!/front/webpack.config.js
|
||||||
/front/public/img/quizs/
|
/front/public/www/img/quizs/
|
||||||
/front/public/JS/*
|
/front/*/www/JS/*
|
||||||
/front/public/quiz/
|
/front/public/www/quiz/
|
||||||
/front/public/quizs/
|
/front/public/www/quizs/
|
||||||
/front/public/themes/
|
/front/public/www/themes/
|
||||||
/front/public/index.html
|
/front/public/www/index.html
|
||||||
/front/public/CGV-CGU.html
|
/front/public/www/CGV-CGU.html
|
||||||
/front/public/mentions-legales.html
|
/front/public/www/mentions-legales.html
|
||||||
/front/public/robots-*.txt
|
/front/*/robots-*.txt
|
||||||
/front/public/WikiLerni-pub.asc
|
/front/*/WikiLerni-pub.asc
|
||||||
/front/public/*.xml
|
/front/public/www/*.xml
|
@ -14,5 +14,5 @@ module.exports =
|
|||||||
},
|
},
|
||||||
// files upload tempory dir
|
// files upload tempory dir
|
||||||
dirIllustrationsTmp : "temp",
|
dirIllustrationsTmp : "temp",
|
||||||
dirIllustrations: "front/public/img/quizs"
|
dirIllustrations: "front/public/www/img/quizs"
|
||||||
};
|
};
|
@ -9,7 +9,7 @@ instance.tokenPrivateKey=process.env.TOKEN_PRIVATE_KEY;
|
|||||||
instance.maxLoginFail=parseInt(process.env.MAX_LOGIN_FAILS,10);
|
instance.maxLoginFail=parseInt(process.env.MAX_LOGIN_FAILS,10);
|
||||||
instance.loginFailTimeInMinutes=parseInt(process.env.LOGIN_FAIL_TIME_IN_MINUTES,10);
|
instance.loginFailTimeInMinutes=parseInt(process.env.LOGIN_FAIL_TIME_IN_MINUTES,10);
|
||||||
instance.dirCache="datas";
|
instance.dirCache="datas";
|
||||||
instance.dirHTML="front/public";
|
instance.dirHTML="front/public/www";
|
||||||
instance.dirTmp="datas/tmp";
|
instance.dirTmp="datas/tmp";
|
||||||
instance.dirTmpLogin="datas/tmp/logins";
|
instance.dirTmpLogin="datas/tmp/logins";
|
||||||
|
|
||||||
|
@ -56,10 +56,10 @@ module.exports =
|
|||||||
dirCacheTags : "datas/questionnaires/tags",
|
dirCacheTags : "datas/questionnaires/tags",
|
||||||
dirCacheUsersQuestionnaires : "datas/users/questionnaires",
|
dirCacheUsersQuestionnaires : "datas/users/questionnaires",
|
||||||
// Emplacement des fichiers HTML générés :
|
// Emplacement des fichiers HTML générés :
|
||||||
dirHTMLGroups : "front/public/quiz/gp",
|
dirHTMLGroups : "front/public/www/quiz/gp",
|
||||||
dirHTMLQuestionnaires : "front/public/quiz",
|
dirHTMLQuestionnaires : "front/public/www/quiz",
|
||||||
dirHTMLNews : "front/public/quizs",
|
dirHTMLNews : "front/public/www/quizs",
|
||||||
dirHTMLTags : "front/public/quizs",
|
dirHTMLTags : "front/public/www/quizs",
|
||||||
// Idem mais pour urls :
|
// Idem mais pour urls :
|
||||||
dirWebGroups : "quiz/gp",
|
dirWebGroups : "quiz/gp",
|
||||||
dirWebQuestionnaires : "quiz",
|
dirWebQuestionnaires : "quiz",
|
||||||
|
@ -407,7 +407,6 @@ exports.checkQuestionnairesNeedToBePublished = async (req, res, next) =>
|
|||||||
const creaQuestionnaireJson = async (id) =>
|
const creaQuestionnaireJson = async (id) =>
|
||||||
{
|
{
|
||||||
const db=require("../models/index");
|
const db=require("../models/index");
|
||||||
console.log("j'arrive ici avec "+id);
|
|
||||||
const Questionnaire=await db["Questionnaire"].findByPk(id);
|
const Questionnaire=await db["Questionnaire"].findByPk(id);
|
||||||
if(Questionnaire)
|
if(Questionnaire)
|
||||||
{
|
{
|
||||||
@ -543,6 +542,9 @@ const creaQuestionnaireHTML = async (id, preview=false) =>
|
|||||||
// deux possibilités :
|
// deux possibilités :
|
||||||
// -- si élément d'un groupe de quiz : juste le texte sans les questions
|
// -- si élément d'un groupe de quiz : juste le texte sans les questions
|
||||||
// -- si quiz automone : toutes les infos
|
// -- si quiz automone : toutes les infos
|
||||||
|
|
||||||
|
console.log("je passe par ici pour créer le fichier du quiz "+id);
|
||||||
|
|
||||||
const questionnaire=await searchQuestionnaireById(id, true);
|
const questionnaire=await searchQuestionnaireById(id, true);
|
||||||
if(!questionnaire)
|
if(!questionnaire)
|
||||||
return false;
|
return false;
|
||||||
@ -830,7 +832,6 @@ const creaNewQuestionnairesHTML = async (Questionnaires) =>
|
|||||||
await toolFile.createHTML(configQuestionnaires.dirHTMLNews, "index", html);
|
await toolFile.createHTML(configQuestionnaires.dirHTMLNews, "index", html);
|
||||||
// + le flux ATOM
|
// + le flux ATOM
|
||||||
compiledFunction=pug.compileFile("./views/"+config.theme+"/atom.pug");
|
compiledFunction=pug.compileFile("./views/"+config.theme+"/atom.pug");
|
||||||
//console.log(pageDatas.questionnaires);
|
|
||||||
const xml=await compiledFunction(pageDatas);
|
const xml=await compiledFunction(pageDatas);
|
||||||
await toolFile.createXML(config.dirHTML, "atom", xml);
|
await toolFile.createXML(config.dirHTML, "atom", xml);
|
||||||
return true;
|
return true;
|
||||||
|
36
front/admin/package.json
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"name": "wikilerni",
|
||||||
|
"version": "0.2.0",
|
||||||
|
"description": "Admin pages of WikiLerni web application",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"build": "webpack --mode production",
|
||||||
|
"start": "webpack serve --no-live-reload"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://forge.chapril.org/Fab_Blab/WikiLerni"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"quiz",
|
||||||
|
"wikipédia",
|
||||||
|
"questionnaire",
|
||||||
|
"e-learning"
|
||||||
|
],
|
||||||
|
"author": "Fabrice PENHOËT",
|
||||||
|
"license": "GPL-3.0-or-later",
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.15.5",
|
||||||
|
"@babel/preset-env": "^7.15.6",
|
||||||
|
"@webpack-cli/serve": "^1.5.2",
|
||||||
|
"babel-loader": "^8.2.2",
|
||||||
|
"babel-polyfill": "^6.26.0",
|
||||||
|
"webpack": "^5.56.1",
|
||||||
|
"webpack-cli": "^4.8.0",
|
||||||
|
"webpack-dev-server": "^4.3.0"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%"
|
||||||
|
]
|
||||||
|
}
|
@ -6,24 +6,23 @@
|
|||||||
/// Le connexion peut se faire directement ici via la saisie d'un mot de passe ou via l'envoi d'un token par e-mail.
|
/// Le connexion peut se faire directement ici via la saisie d'un mot de passe ou via l'envoi d'un token par e-mail.
|
||||||
|
|
||||||
// Fichier de configuration tirés du backend :
|
// Fichier de configuration tirés du backend :
|
||||||
import { apiUrl, availableLangs, siteUrl, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, siteUrl, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
|
|
||||||
import { connectionRoute, getLoginLinkRoute, userRoutes } from "../../config/users.js";
|
import { connectionRoute, getLoginLinkRoute, userRoutes } from "../../../config/users.js";
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
// Importation des fonctions utiles au script :
|
// Importation des fonctions utiles au script :
|
||||||
import { getLocaly, removeLocaly, saveLocaly } from "./tools/clientstorage.js";
|
import { getLocaly, removeLocaly, saveLocaly } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { getDatasFromInputs } from "./tools/forms.js";
|
import { getDatasFromInputs } from "./tools/forms.js";
|
||||||
import { isEmpty } from "../../tools/main";
|
import { isEmpty } from "../../../tools/main";
|
||||||
import { loadMatomo } from "./tools/matomo.js";
|
|
||||||
import { checkAnswerDatas, checkSession, getTimeDifference, setSession } from "./tools/users.js";
|
import { checkAnswerDatas, checkSession, getTimeDifference, setSession } from "./tools/users.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { serverError } = require("../../lang/"+lang+"/general");
|
const { serverError } = require("../../../lang/"+lang+"/general");
|
||||||
const { alreadyConnected, needChooseLoginWay } = require("../../lang/"+lang+"/user");
|
const { alreadyConnected, needChooseLoginWay } = require("../../../lang/"+lang+"/user");
|
||||||
|
|
||||||
// Principaux éléments du DOM manipulés :
|
// Principaux éléments du DOM manipulés :
|
||||||
const myForm = document.getElementById("connection");
|
const myForm = document.getElementById("connection");
|
||||||
@ -43,11 +42,11 @@ const initialise = async () =>
|
|||||||
saveLocaly("message", { message: alreadyConnected, color:"info" });// pour l'afficher sur la page suivante
|
saveLocaly("message", { message: alreadyConnected, color:"info" });// pour l'afficher sur la page suivante
|
||||||
const user=getLocaly("user", true);
|
const user=getLocaly("user", true);
|
||||||
const homePage=user.status+"HomePage";
|
const homePage=user.status+"HomePage";
|
||||||
window.location.assign("/"+configTemplate[homePage]);
|
console.log("./"+configTemplate[homePage]);
|
||||||
|
window.location.assign("./"+configTemplate[homePage]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
loadMatomo();
|
|
||||||
myForm.style.display="block";
|
myForm.style.display="block";
|
||||||
if(!isEmpty(getLocaly("message")))
|
if(!isEmpty(getLocaly("message")))
|
||||||
{
|
{
|
@ -3,7 +3,7 @@
|
|||||||
/// On se contente ici de supprimer la session stockée côté client
|
/// On se contente ici de supprimer la session stockée côté client
|
||||||
|
|
||||||
// Fichier de configuration côté client :
|
// Fichier de configuration côté client :
|
||||||
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
|
|
||||||
// Importation des fonctions utile au script :
|
// Importation des fonctions utile au script :
|
||||||
@ -12,8 +12,8 @@ import { addElement } from "./tools/dom.js";
|
|||||||
import { helloDev } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { serverError } = require("../../lang/"+lang+"/general");
|
const { serverError } = require("../../../lang/"+lang+"/general");
|
||||||
const { byebyeMessage } = require("../../lang/"+lang+"/user");
|
const { byebyeMessage } = require("../../../lang/"+lang+"/user");
|
||||||
|
|
||||||
const divResponse = document.getElementById("response");
|
const divResponse = document.getElementById("response");
|
||||||
|
|
@ -9,24 +9,24 @@
|
|||||||
/// Temporairement, c'est ici aussi que l'on peut régénérer tout le HTML -> à terme dans homeAdmin !
|
/// Temporairement, c'est ici aussi que l'on peut régénérer tout le HTML -> à terme dans homeAdmin !
|
||||||
|
|
||||||
// Fichier de configuration côté client :
|
// Fichier de configuration côté client :
|
||||||
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
|
|
||||||
import { getAdminStats, userRoutes } from "../../config/users.js";
|
import { getAdminStats, userRoutes } from "../../../config/users.js";
|
||||||
import { getListNextQuestionnaires, questionnaireRoutes, regenerateHTML } from "../../config/questionnaires.js";
|
import { getListNextQuestionnaires, questionnaireRoutes, regenerateHTML } from "../../../config/questionnaires.js";
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
// Fonctions utiles au script :
|
// Fonctions utiles au script :
|
||||||
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { dateFormat, isEmpty, replaceAll } from "../../tools/main";
|
import { dateFormat, isEmpty, replaceAll } from "../../../tools/main";
|
||||||
import { checkSession } from "./tools/users.js";
|
import { checkSession } from "./tools/users.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { notAllowed, serverError, statsAdmin } = require("../../lang/"+lang+"/general");
|
const { notAllowed, serverError, statsAdmin } = require("../../../lang/"+lang+"/general");
|
||||||
const { nextDateWithoutQuestionnaire, nextQuestionnairesList, questionnaireNeedBeCompleted } = require("../../lang/"+lang+"/questionnaire");
|
const { nextDateWithoutQuestionnaire, nextQuestionnairesList, questionnaireNeedBeCompleted } = require("../../../lang/"+lang+"/questionnaire");
|
||||||
const { welcomeMessage } = require("../../lang/"+lang+"/user");
|
const { welcomeMessage } = require("../../../lang/"+lang+"/user");
|
||||||
|
|
||||||
// Principaux éléments du DOM manipulés :
|
// Principaux éléments du DOM manipulés :
|
||||||
const divMain = document.getElementById("main-content");
|
const divMain = document.getElementById("main-content");
|
||||||
@ -45,7 +45,6 @@ const initialise = async () =>
|
|||||||
if(isConnected)
|
if(isConnected)
|
||||||
{
|
{
|
||||||
const user=getLocaly("user", true);
|
const user=getLocaly("user", true);
|
||||||
updateAccountLink(user.status, configTemplate);
|
|
||||||
addElement(divMessage, "h2", welcomeMessage.replace("#NAME", user.name));
|
addElement(divMessage, "h2", welcomeMessage.replace("#NAME", user.name));
|
||||||
divMain.style.display="block";
|
divMain.style.display="block";
|
||||||
if(!isEmpty(getLocaly("message")))
|
if(!isEmpty(getLocaly("message")))
|
@ -6,24 +6,24 @@
|
|||||||
/// Si pas d'id passé par l'url, on affiche un formulaire vide permettant d'en saisir un nouveau.
|
/// Si pas d'id passé par l'url, on affiche un formulaire vide permettant d'en saisir un nouveau.
|
||||||
|
|
||||||
// Fichiers de configuration :
|
// Fichiers de configuration :
|
||||||
import { apiUrl, availableLangs, siteUrl, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, siteUrl, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
const configQuestionnaires = require("../../config/questionnaires.js");
|
const configQuestionnaires = require("../../../config/questionnaires.js");
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
// Fonctions :
|
// Fonctions :
|
||||||
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { empyForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
import { empyForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
||||||
import { dateFormat, isEmpty, replaceAll } from "../../tools/main";
|
import { dateFormat, isEmpty, replaceAll } from "../../../tools/main";
|
||||||
import { getUrlParams } from "./tools/url.js";
|
import { getUrlParams } from "./tools/url.js";
|
||||||
import { checkSession } from "./tools/users.js";
|
import { checkSession } from "./tools/users.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { addOkMessage, serverError } = require("../../lang/"+lang+"/general");
|
const { addOkMessage, serverError } = require("../../../lang/"+lang+"/general");
|
||||||
const { groupQuestionnairesList, groupQuestionnairesListWithout, infosGroupForAdmin, searchWithoutResult } = require("../../lang/"+lang+"/group");
|
const { groupQuestionnairesList, groupQuestionnairesListWithout, infosGroupForAdmin, searchWithoutResult } = require("../../../lang/"+lang+"/group");
|
||||||
const { needBeConnected } = require("../../lang/"+lang+"/user");
|
const { needBeConnected } = require("../../../lang/"+lang+"/user");
|
||||||
|
|
||||||
// Principaux éléments du DOM manipulés :
|
// Principaux éléments du DOM manipulés :
|
||||||
const btnNewGroup = document.getElementById("wantNewGroup");
|
const btnNewGroup = document.getElementById("wantNewGroup");
|
||||||
@ -116,7 +116,6 @@ const initialise = async () =>
|
|||||||
if(isConnected)
|
if(isConnected)
|
||||||
{
|
{
|
||||||
const user=getLocaly("user", true);
|
const user=getLocaly("user", true);
|
||||||
updateAccountLink(user.status, configTemplate);// lien "Compte" menu header template
|
|
||||||
divMain.style.display="block";
|
divMain.style.display="block";
|
||||||
if(!isEmpty(getLocaly("message")))
|
if(!isEmpty(getLocaly("message")))
|
||||||
{
|
{
|
@ -7,30 +7,30 @@
|
|||||||
/// Si pas d'id passé par l'url, on affiche un formulaire vide permettant de saisir un nouveau quiz.
|
/// Si pas d'id passé par l'url, on affiche un formulaire vide permettant de saisir un nouveau quiz.
|
||||||
|
|
||||||
// Fichiers de configuration :
|
// Fichiers de configuration :
|
||||||
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
const config = require("../../config/instance.js");
|
const config = require("../../../config/instance.js");
|
||||||
const configIllustrations = require("../../config/illustrations.js");
|
const configIllustrations = require("../../../config/illustrations.js");
|
||||||
const configLinks = require("../../config/links.js");
|
const configLinks = require("../../../config/links.js");
|
||||||
const configQuestionnaires = require("../../config/questionnaires.js");
|
const configQuestionnaires = require("../../../config/questionnaires.js");
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
// Fonctions :
|
// Fonctions :
|
||||||
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { empyAndHideForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
import { empyAndHideForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
||||||
import { dateFormat, isEmpty } from "../../tools/main";
|
import { dateFormat, isEmpty } from "../../../tools/main";
|
||||||
import { getUrlParams } from "./tools/url.js";
|
import { getUrlParams } from "./tools/url.js";
|
||||||
import { checkSession } from "./tools/users.js";
|
import { checkSession } from "./tools/users.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { addOkMessage, deleteBtnTxt, serverError, updateBtnTxt } = require("../../lang/"+lang+"/general");
|
const { addOkMessage, deleteBtnTxt, serverError, updateBtnTxt } = require("../../../lang/"+lang+"/general");
|
||||||
const { addIllustrationTxt, defaultAlt, introNoIllustration, introTitleForIllustration } = require("../../lang/"+lang+"/illustration");
|
const { addIllustrationTxt, defaultAlt, introNoIllustration, introTitleForIllustration } = require("../../../lang/"+lang+"/illustration");
|
||||||
const { addLinkTxt, defaultValueForLink, introNoLink, introTitleForLink } = require("../../lang/"+lang+"/link");
|
const { addLinkTxt, defaultValueForLink, introNoLink, introTitleForLink } = require("../../../lang/"+lang+"/link");
|
||||||
const { addQuestionTxt, introNoQuestion, introTitleForQuestion } = require("../../lang/"+lang+"/question");
|
const { addQuestionTxt, introNoQuestion, introTitleForQuestion } = require("../../../lang/"+lang+"/question");
|
||||||
const { needGroupIfRank, nextDateWithoutQuestionnaire, nextQuestionnairesList, questionnaireNeedBeCompleted, searchQuestionnaireWithNoResult } = require("../../lang/"+lang+"/questionnaire");
|
const { needGroupIfRank, nextDateWithoutQuestionnaire, nextQuestionnairesList, questionnaireNeedBeCompleted, searchQuestionnaireWithNoResult } = require("../../../lang/"+lang+"/questionnaire");
|
||||||
const { needBeConnected } = require("../../lang/"+lang+"/user");
|
const { needBeConnected } = require("../../../lang/"+lang+"/user");
|
||||||
|
|
||||||
// Principaux éléments du DOM manipulés :
|
// Principaux éléments du DOM manipulés :
|
||||||
const btnNewQuestionnaire = document.getElementById("wantNewQuestionnaire");
|
const btnNewQuestionnaire = document.getElementById("wantNewQuestionnaire");
|
||||||
@ -196,7 +196,7 @@ const showIllustrationInfos = (Illustrations, token) =>
|
|||||||
addElement(divIllustrations, "h2", introTitleForIllustration);
|
addElement(divIllustrations, "h2", introTitleForIllustration);
|
||||||
let listIllustrations="";
|
let listIllustrations="";
|
||||||
for(let i in Illustrations)
|
for(let i in Illustrations)
|
||||||
listIllustrations+="<li><a href='"+configTemplate.illustrationDir+Illustrations[i].url+"' target='_blank'><img src='"+configTemplate.illustrationDir+Illustrations[i].url+"' alt='"+defaultAlt+"' style='max-height:150px'></a><br><a href='#updateIllustration"+Illustrations[i].id+"' id='#updateIllustration"+Illustrations[i].id+"' class='button'>"+updateBtnTxt+"</a> <a href='#deleteIllustration"+Illustrations[i].id+"' id='#deleteIllustration"+Illustrations[i].id+"' class='button'>"+deleteBtnTxt+"</a></li>";
|
listIllustrations+="<li><a href='"+config.siteUrl+configTemplate.illustrationDir+Illustrations[i].url+"' target='_blank'><img src='"+config.siteUrl+configTemplate.illustrationDir+Illustrations[i].url+"' alt='"+defaultAlt+"' style='max-height:150px'></a><br><a href='#updateIllustration"+Illustrations[i].id+"' id='#updateIllustration"+Illustrations[i].id+"' class='button'>"+updateBtnTxt+"</a> <a href='#deleteIllustration"+Illustrations[i].id+"' id='#deleteIllustration"+Illustrations[i].id+"' class='button'>"+deleteBtnTxt+"</a></li>";
|
||||||
if(listIllustrations === "")
|
if(listIllustrations === "")
|
||||||
listIllustrations="<li>"+introNoIllustration+"</li>";
|
listIllustrations="<li>"+introNoIllustration+"</li>";
|
||||||
addElement(divIllustrations, "ul", listIllustrations, "", [], "", false);// ! à intégrer d'abord dans le DOM pour pouvoir ajouter les Listeners ensuite
|
addElement(divIllustrations, "ul", listIllustrations, "", [], "", false);// ! à intégrer d'abord dans le DOM pour pouvoir ajouter les Listeners ensuite
|
||||||
@ -457,48 +457,6 @@ const showFormQuestionnaireInfos = (id, token) =>
|
|||||||
xhrGetInfos.send();
|
xhrGetInfos.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// Affiche les questionnaires bientôt publiés.
|
|
||||||
const showNextQuestionnaires = (token) =>
|
|
||||||
{
|
|
||||||
const xhrNextQuestionnaires = new XMLHttpRequest();
|
|
||||||
xhrNextQuestionnaires.open("GET", apiUrl+configQuestionnaires.questionnaireRoutes+configQuestionnaires.getListNextQuestionnaires);
|
|
||||||
xhrNextQuestionnaires.onreadystatechange = function()
|
|
||||||
{
|
|
||||||
if (this.readyState == XMLHttpRequest.DONE)
|
|
||||||
{
|
|
||||||
let response=JSON.parse(this.responseText);
|
|
||||||
if (this.status === 200 && Array.isArray(response.questionnaires))
|
|
||||||
{
|
|
||||||
let listHTML="", dayStr, optionsDayStr = { weekday: 'long'};
|
|
||||||
for(let i in response.questionnaires)
|
|
||||||
{
|
|
||||||
dayStr=new Intl.DateTimeFormat(lang, optionsDayStr).format(new Date(response.questionnaires[i].datePublishing));
|
|
||||||
listHTML+="<li>"+dayStr+" "+dateFormat(response.questionnaires[i].datePublishing, "fr")+": <a href='"+configTemplate.questionnairesManagementPage+"?id="+response.questionnaires[i].id+"' id='questionnaire_"+response.questionnaires[i].id+"'>"+response.questionnaires[i].title+"</a>";
|
|
||||||
if(response.questionnaires[i].isPublishable===false)
|
|
||||||
listHTML+=" <span class='error'>("+questionnaireNeedBeCompleted+")</li>";
|
|
||||||
listHTML+="</li>";
|
|
||||||
}
|
|
||||||
if(response.questionnaires.length!==0)
|
|
||||||
addElement(divQuestionnaires, "h3", nextQuestionnairesList.replace("#NB", response.questionnaires.length));
|
|
||||||
addElement(helpPublishingAt, "em", nextDateWithoutQuestionnaire+dateFormat(new Date(response.dateNeeded), "fr"));
|
|
||||||
addElement(divQuestionnaires, "ul", listHTML, "", "", "", false);
|
|
||||||
for(let i in response.questionnaires)
|
|
||||||
{
|
|
||||||
document.getElementById("questionnaire_"+response.questionnaires[i].id).addEventListener("click", function(e)
|
|
||||||
{
|
|
||||||
e.preventDefault();
|
|
||||||
showFormQuestionnaireInfos(e.target.id.split("_")[1], token);
|
|
||||||
window.location.assign("#questionnaires");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}// ajouter gestion erreurs reçues du serveur ?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
xhrNextQuestionnaires.setRequestHeader("Authorization", "Bearer "+token);
|
|
||||||
xhrNextQuestionnaires.send();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
const initialise = async () =>
|
const initialise = async () =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -513,8 +471,6 @@ const initialise = async () =>
|
|||||||
removeLocaly("message");
|
removeLocaly("message");
|
||||||
}
|
}
|
||||||
const user=getLocaly("user", true);
|
const user=getLocaly("user", true);
|
||||||
/// Mise à jour du lien "compte" du header (plus utile)
|
|
||||||
/// updateAccountLink(user.status, configTemplate);
|
|
||||||
// Initialisation des formulaires :
|
// Initialisation des formulaires :
|
||||||
setAttributesToInputs(configQuestionnaires, formSearch);
|
setAttributesToInputs(configQuestionnaires, formSearch);
|
||||||
setAttributesToInputs(configQuestionnaires.Questionnaire, formQuestionnaire);
|
setAttributesToInputs(configQuestionnaires.Questionnaire, formQuestionnaire);
|
@ -10,24 +10,24 @@
|
|||||||
/// - attribution d'un parrain à un utilisateur (via un moteur de recherche). Déjà prévu par le contrôleur.
|
/// - attribution d'un parrain à un utilisateur (via un moteur de recherche). Déjà prévu par le contrôleur.
|
||||||
|
|
||||||
// Fichier de configuration côté client :
|
// Fichier de configuration côté client :
|
||||||
import { apiUrl, availableLangs, theme } from "../../config/instance.js";
|
import { apiUrl, availableLangs, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
const configUsers = require("../../config/users.js");
|
const configUsers = require("../../../config/users.js");
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
// Fonctions utiles au script :
|
// Fonctions utiles au script :
|
||||||
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
import { getLocaly, removeLocaly } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { empyForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
import { empyForm, getDatasFromInputs, setAttributesToInputs } from "./tools/forms.js";
|
||||||
import { dateFormat, getPassword, isEmpty, replaceAll } from "../../tools/main";
|
import { dateFormat, getPassword, isEmpty, replaceAll } from "../../../tools/main";
|
||||||
import { getUrlParams } from "./tools/url.js";
|
import { getUrlParams } from "./tools/url.js";
|
||||||
import { checkSession } from "./tools/users.js";
|
import { checkSession } from "./tools/users.js";
|
||||||
|
|
||||||
// Dictionnaires :
|
// Dictionnaires :
|
||||||
const { addOkMessage, serverError } = require("../../lang/"+lang+"/general");
|
const { addOkMessage, serverError } = require("../../../lang/"+lang+"/general");
|
||||||
const { infosAdminGodfather, infosAdminNbGodChilds, infosUserForAdmin, needBeConnected, searchUsersWithoutResult } = require("../../lang/"+lang+"/user");
|
const { infosAdminGodfather, infosAdminNbGodChilds, infosUserForAdmin, needBeConnected, searchUsersWithoutResult } = require("../../../lang/"+lang+"/user");
|
||||||
const { infosExpiratedAdmin, infosNbDaysAdmin, infosPaymentsAdmin, isNotValided } = require("../../lang/"+lang+"/subscription");
|
const { infosExpiratedAdmin, infosNbDaysAdmin, infosPaymentsAdmin, isNotValided } = require("../../../lang/"+lang+"/subscription");
|
||||||
|
|
||||||
// Principaux éléments du DOM manipulés :
|
// Principaux éléments du DOM manipulés :
|
||||||
const divMain = document.getElementById("main-content");
|
const divMain = document.getElementById("main-content");
|
||||||
@ -56,7 +56,6 @@ const initialise = async () =>
|
|||||||
if(isConnected)
|
if(isConnected)
|
||||||
{
|
{
|
||||||
const user=getLocaly("user", true);
|
const user=getLocaly("user", true);
|
||||||
updateAccountLink(user.status, configTemplate);
|
|
||||||
divMain.style.display="block";
|
divMain.style.display="block";
|
||||||
if(!isEmpty(getLocaly("message")))
|
if(!isEmpty(getLocaly("message")))
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
import { isEmpty } from "../../../tools/main";
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
// Fonction associant les attributs fournis à un champ de formulaire
|
// Fonction associant les attributs fournis à un champ de formulaire
|
||||||
export const addElement = (eltParent, eltType, eltContent="", eltId="", eltClass=[], eltAttributes={}, replace=true) =>
|
export const addElement = (eltParent, eltType, eltContent="", eltId="", eltClass=[], eltAttributes={}, replace=true) =>
|
6
front/admin/src/tools/everywhere.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Ce script fournit des fonctions utilisées sur toutes les pages du site
|
||||||
|
export const helloDev = () =>
|
||||||
|
{
|
||||||
|
console.log("**** Hello les devs :-)\nLe code source de WikiLerni est libre et vous pouvez le trouver à cette adresse :\nhttps://forge.chapril.org/Fab_Blab/WikiLerni\nBonne lecture ! ****");
|
||||||
|
return true;
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { isEmpty } from "../../../tools/main";
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
// Fonction associant les attributs fournis à un champ de formulaire
|
// Fonction associant les attributs fournis à un champ de formulaire
|
||||||
export const setAttributesToInputs = (inputsConf, myForm) =>
|
export const setAttributesToInputs = (inputsConf, myForm) =>
|
@ -1,4 +1,4 @@
|
|||||||
import { isEmpty } from "../../../tools/main";
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
// Fonction récupérant les paramètres passés par l'url
|
// Fonction récupérant les paramètres passés par l'url
|
||||||
export const getUrlParams = () =>
|
export const getUrlParams = () =>
|
@ -1,12 +1,12 @@
|
|||||||
import { apiUrl, availableLangs, siteUrl, theme } from "../../../config/instance.js";
|
import { apiUrl, availableLangs, siteUrl, theme } from "../../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
|
|
||||||
const configTemplate = require("../../../views/"+theme+"/config/"+lang+".js");
|
const configTemplate = require("../../../../views/"+theme+"/config/"+lang+".js");
|
||||||
|
|
||||||
import { checkLoginRoute, timeDifferenceMax, timeDifferenceMin, userRoutes } from "../../../config/users.js";
|
import { checkLoginRoute, timeDifferenceMax, timeDifferenceMin, userRoutes } from "../../../../config/users.js";
|
||||||
|
|
||||||
import { getLocaly, removeLocaly, saveLocaly } from "./clientstorage.js";
|
import { getLocaly, removeLocaly, saveLocaly } from "../tools/clientstorage.js";
|
||||||
import { isEmpty } from "../../../tools/main";
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
export const getTimeDifference = () =>
|
export const getTimeDifference = () =>
|
||||||
{
|
{
|
@ -5,29 +5,17 @@ module.exports =
|
|||||||
mode: "development",
|
mode: "development",
|
||||||
entry:
|
entry:
|
||||||
{
|
{
|
||||||
accountUser: "./src/accountUser.js",
|
|
||||||
connection: "./src/connection.js",
|
connection: "./src/connection.js",
|
||||||
deconnection: "./src/deconnection.js",
|
deconnection: "./src/deconnection.js",
|
||||||
deleteValidation: "./src/deleteValidation.js",
|
|
||||||
groupElement: "./src/groupElement.js",
|
|
||||||
homeManager: "./src/homeManager.js",
|
homeManager: "./src/homeManager.js",
|
||||||
homeUser: "./src/homeUser.js",
|
|
||||||
index: "./src/index.js",
|
|
||||||
loginLink: "./src/loginLink.js",
|
|
||||||
manageGroups: "./src/manageGroups.js",
|
manageGroups: "./src/manageGroups.js",
|
||||||
manageQuestionnaires: "./src/manageQuestionnaires.js",
|
manageQuestionnaires: "./src/manageQuestionnaires.js",
|
||||||
manageUsers: "./src/manageUsers.js",
|
manageUsers: "./src/manageUsers.js",
|
||||||
newLoginValidation: "./src/newLoginValidation.js",
|
polyfill: "babel-polyfill"
|
||||||
paymentPage: "./src/paymentPage.js",
|
|
||||||
polyfill: "babel-polyfill",
|
|
||||||
quiz: "./src/quiz.js",
|
|
||||||
subscribe: "./src/subscribe.js",
|
|
||||||
subscribeValidation: "./src/subscribeValidation.js",
|
|
||||||
unsubscribe: "./src/unsubscribe.js"
|
|
||||||
},
|
},
|
||||||
output:
|
output:
|
||||||
{
|
{
|
||||||
path: path.resolve(__dirname, "public"),
|
path: path.resolve(__dirname, "www"),
|
||||||
filename: "JS/[name].app.js",
|
filename: "JS/[name].app.js",
|
||||||
},
|
},
|
||||||
module:
|
module:
|
||||||
@ -47,6 +35,6 @@ module.exports =
|
|||||||
},
|
},
|
||||||
devServer:
|
devServer:
|
||||||
{
|
{
|
||||||
static: path.resolve(__dirname, "./public")
|
static: path.resolve(__dirname, "./www")
|
||||||
},
|
},
|
||||||
};
|
};
|
@ -6,21 +6,21 @@
|
|||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
<title>Gestion des groupes de quizs</title>
|
<title>Gestion des groupes de quizs</title>
|
||||||
<!-- Version lisible des scripts : https://forge.chapril.org/Fab_Blab/WikiLerni/src/branch/master/front/src -->
|
<!-- 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/polyfill.app.js" defer></script>
|
||||||
<script src="../JS/manageGroups.app.js" defer></script>
|
<script src="/JS/manageGroups.app.js" defer></script>
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="cardboard">
|
<body class="cardboard">
|
||||||
<!-- En tête -->
|
<!-- En tête -->
|
||||||
<header class="cardboard">
|
<header class="cardboard">
|
||||||
<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>
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil" /></a>
|
||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="../contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="./sortie.html">Me déconnecter</a></li>
|
||||||
<li><a href="../quizs/" id="indexHeadLink" title="Les derniers quizs">Parcourir</a></li>
|
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les utilisateurs</a></li>
|
||||||
<li><a href="../a-propos.html">À propos</a></li>
|
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
||||||
<li><a href="../" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -28,13 +28,6 @@
|
|||||||
|
|
||||||
<section id="main-content" class="needJS">
|
<section id="main-content" class="needJS">
|
||||||
|
|
||||||
<ul id="menu" class="cardboard">
|
|
||||||
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
|
||||||
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
|
||||||
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les abonné(e)s</a></li>
|
|
||||||
<li><a href="./sortie.html">Me déconnecter</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div id="account" class="cardboard">
|
<div id="account" class="cardboard">
|
||||||
|
|
||||||
<h1 class="cardboard" id="infos">Les groupes de quizs</h1>
|
<h1 class="cardboard" id="infos">Les groupes de quizs</h1>
|
||||||
@ -68,14 +61,5 @@
|
|||||||
<div id="questionnairesList"></div>
|
<div id="questionnairesList"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -6,21 +6,21 @@
|
|||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
<title>Gestion des quizs</title>
|
<title>Gestion des quizs</title>
|
||||||
<!-- Version lisible des scripts : https://forge.chapril.org/Fab_Blab/WikiLerni/src/branch/master/front/src -->
|
<!-- 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/polyfill.app.js" defer></script>
|
||||||
<script src="../JS/manageQuestionnaires.app.js" defer></script>
|
<script src="/JS/manageQuestionnaires.app.js" defer></script>
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="cardboard">
|
<body class="cardboard">
|
||||||
<!-- En tête -->
|
<!-- En tête -->
|
||||||
<header class="cardboard">
|
<header class="cardboard">
|
||||||
<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>
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil" /></a>
|
||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="../contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="./sortie.html">Me déconnecter</a></li>
|
||||||
<li><a href="../quizs/" id="indexHeadLink" title="Les derniers quizs">Parcourir</a></li>
|
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les utilisateurs</a></li>
|
||||||
<li><a href="../a-propos.html">À propos</a></li>
|
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
||||||
<li><a href="../" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -28,13 +28,6 @@
|
|||||||
|
|
||||||
<section id="main-content" class="needJS">
|
<section id="main-content" class="needJS">
|
||||||
|
|
||||||
<ul id="menu" class="cardboard">
|
|
||||||
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
|
||||||
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
|
||||||
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les abonné(e)s</a></li>
|
|
||||||
<li><a href="./sortie.html">Me déconnecter</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div id="manageQuestionnaires" class="cardboard">
|
<div id="manageQuestionnaires" class="cardboard">
|
||||||
|
|
||||||
<h1 class="cardboard" id="infos">Les quizs</h1>
|
<h1 class="cardboard" id="infos">Les quizs</h1>
|
||||||
@ -179,14 +172,6 @@
|
|||||||
<div id="questionnairesList"></div>
|
<div id="questionnairesList"></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -6,21 +6,21 @@
|
|||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
<title>Gestion des abonnés</title>
|
<title>Gestion des abonnés</title>
|
||||||
<!-- Version lisible des scripts : https://forge.chapril.org/Fab_Blab/WikiLerni/src/branch/master/front/src -->
|
<!-- 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/polyfill.app.js" defer></script>
|
||||||
<script src="../JS/manageUsers.app.js" defer></script>
|
<script src="./JS/manageUsers.app.js" defer></script>
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="cardboard">
|
<body class="cardboard">
|
||||||
<!-- En tête -->
|
<!-- En tête -->
|
||||||
<header class="cardboard">
|
<header class="cardboard">
|
||||||
<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>
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil" /></a>
|
||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="../contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="./sortie.html">Me déconnecter</a></li>
|
||||||
<li><a href="../quizs/" id="indexHeadLink" title="Les derniers quizs">Parcourir</a></li>
|
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les utilisateurs</a></li>
|
||||||
<li><a href="../a-propos.html">À propos</a></li>
|
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
||||||
<li><a href="../" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -28,13 +28,6 @@
|
|||||||
|
|
||||||
<section id="main-content" class="needJS">
|
<section id="main-content" class="needJS">
|
||||||
|
|
||||||
<ul id="menu" class="cardboard">
|
|
||||||
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
|
||||||
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
|
||||||
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les abonné(e)s</a></li>
|
|
||||||
<li><a href="./sortie.html">Me déconnecter</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div id="account" class="cardboard">
|
<div id="account" class="cardboard">
|
||||||
|
|
||||||
<h1 class="cardboard" id="infos">Les abonnés</h1>
|
<h1 class="cardboard" id="infos">Les abonnés</h1>
|
||||||
@ -119,14 +112,5 @@
|
|||||||
<div id="infosGodchilds" class="needJS"></div>
|
<div id="infosGodchilds" class="needJS"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
42
front/admin/www/gestion.html
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Page d'accueil pour les gestionnaires du site.">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<title>Mon 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/homeManager.app.js" defer></script>
|
||||||
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="cardboard">
|
||||||
|
<!-- En tête -->
|
||||||
|
<header class="cardboard">
|
||||||
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page d'accueil" /></a>
|
||||||
|
<ul id="headLinks">
|
||||||
|
<li><a href="./sortie.html">Me déconnecter</a></li>
|
||||||
|
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les utilisateurs</a></li>
|
||||||
|
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
||||||
|
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
||||||
|
</ul>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div id="crash"></div>
|
||||||
|
|
||||||
|
<section id="main-content" class="needJS">
|
||||||
|
|
||||||
|
<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>
|
||||||
|
<p><a href="#" class="button cardboard" id="wantRegenerate">Régénérer le HTML.</a></p>
|
||||||
|
<div id="questionnaires"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 185 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -6,26 +6,20 @@
|
|||||||
<meta name="description" content="Formulaire de connexion à WikiLerni.">
|
<meta name="description" content="Formulaire de connexion à WikiLerni.">
|
||||||
<title>Se connecter à WikiLerni</title>
|
<title>Se connecter à WikiLerni</title>
|
||||||
<!-- Version lisible des scripts : https://forge.chapril.org/Fab_Blab/WikiLerni/src/branch/master/front/src -->
|
<!-- 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/polyfill.app.js" defer></script>
|
||||||
<script src="../JS/connection.app.js" defer></script>
|
<script src="/JS/connection.app.js" defer></script>
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
<link rel="shortcut icon" href="./img/favicon.ico">
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="cardboard">
|
<body class="cardboard">
|
||||||
<!-- En tête -->
|
<!-- En tête -->
|
||||||
<header class="cardboard">
|
<header class="cardboard">
|
||||||
<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>
|
<a href="/" title="Page de connexion"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page de connexion" /></a>
|
||||||
<ul id="headLinks">
|
|
||||||
<li><a href="../contact.html" rel="nofollow">Contact</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>
|
|
||||||
</ul>
|
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div id="prompt" class="cardboard">
|
<div id="prompt" class="cardboard">
|
||||||
<a href="../" title="Page d'accueil WikLerni"><img src="../themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" title="W I K I L E R N I" /></a>
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" title="W I K I L E R N I" /></a>
|
||||||
<p>Cultivons notre jardin !</p>
|
<p>Cultivons notre jardin !</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -57,25 +51,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div id="response"></div>
|
<div id="response"></div>
|
||||||
|
|
||||||
<div class="info"><b>Pas encore de compte ?</b> <a href="../inscription.html">Créez-le en cliquant ici.</a></div>
|
|
||||||
|
|
||||||
<div id="explanations" class="framed engraved">
|
|
||||||
<h2>Besoin d’aide ?</h2>
|
|
||||||
<p>Si vous avez <b>oublié votre mot de passe</b>, il vous suffit de cocher la case « Je souhaite recevoir un lien de connexion par e-mail ». Un lien valide pendant une courte durée vous permettra de vous connecter au site.</p>
|
|
||||||
<p>Si vous ne vous souvenez pas non plus de l’adresse e-mail utilisée sur ce site ou que vous n’y avez plus accès, vous pouvez <a href="../contact.html">me contacter</a>, en fournissant des informations permettant de vous identifier.</p>
|
|
||||||
<p>La case <b>« Je souhaite ne pas avoir à me connecter à chaque fois. »</b> vous permettra de rester connecté jusqu’à 6 mois, pour peu que vous utilisiez le même navigateur internet sur le même ordinateur.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
29
front/admin/www/sortie.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
<title>Déconnexion 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/deconnection.app.js" defer></script>
|
||||||
|
<link rel="shortcut icon" href="/img/favicon.ico">
|
||||||
|
<link rel="stylesheet" href="/themes/wikilerni/css/style.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="cardboard">
|
||||||
|
<!-- En tête -->
|
||||||
|
<header class="cardboard">
|
||||||
|
<a href="/" title="Page de connexion"><img src="/themes/wikilerni/img/wikilerni-purple-2-128.png" alt="WikiLerni (logo)" title="Accéder à la page de connexion" /></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div id="prompt" class="cardboard">
|
||||||
|
<a href="./gestion.html" title="Page d'accueil"><img src="/themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" title="W I K I L E R N I" /></a>
|
||||||
|
<p>Cultivons notre jardin !</p>
|
||||||
|
<h1 class="cardboard">Au revoir !</h1>
|
||||||
|
<div id="response"><p class="error">Si vous voyez ce message, c’est qu’un problème a été rencontré durant la déconnexion.</p></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 197 KiB |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
front/admin/www/themes/wikilerni/img/email.png
Normal file
After Width: | Height: | Size: 811 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 922 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 928 B After Width: | Height: | Size: 928 B |
@ -1,50 +0,0 @@
|
|||||||
# Activation de la génération des en-têtes Expires
|
|
||||||
ExpiresActive On
|
|
||||||
# Les documents HTML, JS, JSON, CSS, XML expirent dès leur modification
|
|
||||||
ExpiresByType text/html M0
|
|
||||||
ExpiresByType text/javascript M0
|
|
||||||
ExpiresByType application/javascript M0
|
|
||||||
ExpiresByType application/json M0
|
|
||||||
ExpiresByType text/css M0
|
|
||||||
ExpiresByType application/xml M0
|
|
||||||
|
|
||||||
# Compression de certains fichiers
|
|
||||||
SetOutputFilter DEFLATE
|
|
||||||
|
|
||||||
AddOutputFilterByType DEFLATE application/javascript
|
|
||||||
AddOutputFilterByType DEFLATE application/rss+xml
|
|
||||||
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
|
|
||||||
AddOutputFilterByType DEFLATE application/x-font
|
|
||||||
AddOutputFilterByType DEFLATE application/x-font-opentype
|
|
||||||
AddOutputFilterByType DEFLATE application/x-font-otf
|
|
||||||
AddOutputFilterByType DEFLATE application/x-font-truetype
|
|
||||||
AddOutputFilterByType DEFLATE application/x-font-ttf
|
|
||||||
AddOutputFilterByType DEFLATE application/x-javascript
|
|
||||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
|
||||||
AddOutputFilterByType DEFLATE application/xml
|
|
||||||
AddOutputFilterByType DEFLATE font/opentype
|
|
||||||
AddOutputFilterByType DEFLATE font/otf
|
|
||||||
AddOutputFilterByType DEFLATE font/ttf
|
|
||||||
AddOutputFilterByType DEFLATE image/png
|
|
||||||
AddOutputFilterByType DEFLATE image/svg+xml
|
|
||||||
AddOutputFilterByType DEFLATE image/x-icon
|
|
||||||
AddOutputFilterByType DEFLATE text/css
|
|
||||||
AddOutputFilterByType DEFLATE text/html
|
|
||||||
AddOutputFilterByType DEFLATE text/javascript
|
|
||||||
AddOutputFilterByType DEFLATE text/xml
|
|
||||||
|
|
||||||
# Bloquer ETag
|
|
||||||
Header unset ETag
|
|
||||||
FileETag none
|
|
||||||
|
|
||||||
# Protection de la lecture des répertoires
|
|
||||||
Options -Indexes
|
|
||||||
|
|
||||||
# protection du htaccess
|
|
||||||
<files .htaccess>
|
|
||||||
order allow,deny
|
|
||||||
deny from all
|
|
||||||
</files>
|
|
||||||
|
|
||||||
# erreur 404
|
|
||||||
ErrorDocument 404 /404.html
|
|
@ -1,58 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta name="description" content="Page d'accueil pour les gestionnaires du site.">
|
|
||||||
<meta name="robots" content="noindex">
|
|
||||||
<title>Mon 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/homeManager.app.js" defer></script>
|
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="cardboard">
|
|
||||||
<!-- En tête -->
|
|
||||||
<header class="cardboard">
|
|
||||||
<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/" id="indexHeadLink" title="Les derniers quizs">Parcourir</a></li>
|
|
||||||
<li><a href="../a-propos.html">À propos</a></li>
|
|
||||||
<li><a href="../" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
|
||||||
</ul>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div id="crash"></div>
|
|
||||||
|
|
||||||
<section id="main-content" class="needJS">
|
|
||||||
|
|
||||||
<ul id="menu" class="cardboard">
|
|
||||||
<li><a href="./gestion.html">Gestion WikiLerni</a></li>
|
|
||||||
<li><a href="./gestion-quizs.html" title="Publication des quizs">Les quizs</a></li>
|
|
||||||
<li><a href="./gestion-utilisateurs.html" title="Les comptes utilisateurs">Les abonné(e)s</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>
|
|
||||||
<p><a href="#" class="button cardboard" id="wantRegenerate">Régénérer le HTML.</a></p>
|
|
||||||
<div id="questionnaires"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,44 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta name="robots" content="noindex">
|
|
||||||
<title>Déconnexion 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/deconnection.app.js" defer></script>
|
|
||||||
<link rel="shortcut icon" href="../img/favicon.ico">
|
|
||||||
<link rel="stylesheet" href="../themes/wikilerni/css/style.css">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="cardboard">
|
|
||||||
<!-- En tête -->
|
|
||||||
<header class="cardboard">
|
|
||||||
<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/" 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>
|
|
||||||
</ul>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div id="prompt" class="cardboard">
|
|
||||||
<a href="../" title="Page d'accueil WikLerni"><img src="../themes/wikilerni/img/wikilerni-purple-2-512.png" alt="Logo WikiLerni" title="W I K I L E R N I" /></a>
|
|
||||||
<p>Cultivons notre jardin !</p>
|
|
||||||
<h1 class="cardboard">Au revoir !</h1>
|
|
||||||
<div id="response"><p class="error">Si vous voyez ce message, c’est qu’un problème a été rencontré durant la déconnexion.<br>N’hésitez pas <a href="../contact.html">à nous prévenir</a> si le problème persiste.</p></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<footer class="cardboard">
|
|
||||||
<ul id="footLinks">
|
|
||||||
<li><a href="https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2" title="Blog WikiLerni sur diaspora*">Blog</a></li>
|
|
||||||
<li><a href="../credits.html">Crédits</a></li>
|
|
||||||
<li><a href="../mentions-legales.html" rel="nofollow">Mentions légales</a></li>
|
|
||||||
<li><a href="../donnees.html">Données personnelles</a></li>
|
|
||||||
<li><a href="../CGV-CGU.html" rel="nofollow">CGV & CGU</a></li>
|
|
||||||
</ul>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
10513
front/public/package-lock.json
generated
Normal file
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "wikilerni",
|
"name": "wikilerni",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"description": "Front-end of WikiLerni web application",
|
"description": "Public site of WikiLerni web application",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
18
front/public/src/config/general.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// à supprimer une fois que tout récupérer du backend :
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
{
|
||||||
|
apiUrl : "http://localhost:3000/api",
|
||||||
|
usersGetConfigUrl : "/user/getconfig",
|
||||||
|
lang : "fr",
|
||||||
|
userHomePage : "accueil.html",
|
||||||
|
adminHomePage : "admin.html",
|
||||||
|
managerHomePage : "gestion.html",
|
||||||
|
subscribePage : "inscription.html",
|
||||||
|
connectionPage : "connexion.html",
|
||||||
|
accountPage: "compte.html",
|
||||||
|
questionnairesManagementPage: "gestion-quizs.html",
|
||||||
|
usersManagementPage: "gestion-utilisateurs.html",
|
||||||
|
nbQuestionnairesUserHomePage : 10,
|
||||||
|
illustrationDir : "/img/quizs/"
|
||||||
|
};
|
6
front/public/src/index.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// -- SCRIPT DE BASE APPELÉ DANS LES PAGES TYPE ACCUEIL DU SITE
|
||||||
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
|
import { loadMatomo } from "./tools/matomo.js";
|
||||||
|
|
||||||
|
helloDev();
|
||||||
|
loadMatomo();
|
@ -1,37 +1,19 @@
|
|||||||
// -- GESTION DE LA PAGE DU FINANCEMENT PARTICIPATIF (SANS DEVOIR ÊTRE CONNECTÉ)
|
// -- GESTION DE LA PAGE DU FINANCEMENT PARTICIPATIF
|
||||||
|
|
||||||
/// Permet d'afficher les boutons de paiement WP suivant le choix de l'utilisateur.
|
/// Permet d'afficher les boutons de paiement WP suivant le choix de l'utilisateur.
|
||||||
/// Matomo est également activé si l'internaute n'est pas connecté.
|
|
||||||
|
|
||||||
// Fichier de configuration tirés du backend :
|
|
||||||
import { availableLangs, theme } from "../../config/instance.js";
|
|
||||||
const lang=availableLangs[0];
|
|
||||||
|
|
||||||
const configTemplate = require("../../views/"+theme+"/config/"+lang+".js");
|
|
||||||
|
|
||||||
// Fonctions utiles au script :
|
// Fonctions utiles au script :
|
||||||
import { getLocaly } from "./tools/clientstorage.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { helloDev, updateAccountLink } from "./tools/everywhere.js";
|
|
||||||
import { loadMatomo } from "./tools/matomo.js";
|
import { loadMatomo } from "./tools/matomo.js";
|
||||||
import { checkSession } from "./tools/users.js";
|
|
||||||
import { showBtnPayment, unCheckAllOthers } from "./tools/webportage.js";
|
import { showBtnPayment, unCheckAllOthers } from "./tools/webportage.js";
|
||||||
|
|
||||||
helloDev();
|
helloDev();
|
||||||
|
loadMatomo();
|
||||||
|
|
||||||
const initialise = async () =>
|
const initialise = async () =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const isConnected=await checkSession();
|
|
||||||
if(isConnected)
|
|
||||||
{
|
|
||||||
// on change le lien du compte en haut :
|
|
||||||
const user=getLocaly("user", true);
|
|
||||||
updateAccountLink(user.status, configTemplate);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
loadMatomo();
|
|
||||||
|
|
||||||
// Les boutons de paiement WP :
|
// Les boutons de paiement WP :
|
||||||
const CGV=document.getElementById("CGVOk");
|
const CGV=document.getElementById("CGVOk");
|
||||||
const abo1=document.getElementById("abo1");
|
const abo1=document.getElementById("abo1");
|
@ -6,21 +6,20 @@
|
|||||||
/// Si la base de donnée locale existe déjà, l'enregistrement de son résultat se fait automatiquement dans IndexedDB et ses éventuels précédents résultats sont affichés.
|
/// Si la base de donnée locale existe déjà, l'enregistrement de son résultat se fait automatiquement dans IndexedDB et ses éventuels précédents résultats sont affichés.
|
||||||
|
|
||||||
// Configurations générales provenant du backend :
|
// Configurations générales provenant du backend :
|
||||||
import { availableLangs, theme } from "../../config/instance.js";
|
import { availableLangs, theme } from "../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
const configTemplate=require("../../views/"+theme+"/config/"+lang+".js");
|
|
||||||
|
|
||||||
// Fonctions :
|
// Fonctions :
|
||||||
import { checkAllPreviousResults, checkUserAnswers, getResultOutput, resultsOpenDb, saveNewQuiz, saveResult, saveResultTemp, showPreviousResults } from "./tools/answers.js";
|
import { checkAllPreviousResults, checkUserAnswers, getResultOutput, resultsOpenDb, saveNewQuiz, saveResult, saveResultTemp, showPreviousResults } from "./tools/answers.js";
|
||||||
import { saveIsReady } from "./tools/clientstorage.js";
|
import { saveIsReady } from "./tools/clientstorage.js";
|
||||||
import { addElement } from "./tools/dom.js";
|
import { addElement } from "./tools/dom.js";
|
||||||
import { helloDev } from "./tools/everywhere.js";
|
import { helloDev } from "./tools/everywhere.js";
|
||||||
import { isEmpty } from "../../tools/main";
|
import { isEmpty } from "../../../tools/main";
|
||||||
import { loadMatomo } from "./tools/matomo.js";
|
import { loadMatomo } from "./tools/matomo.js";
|
||||||
|
|
||||||
// Textes :
|
// Textes :
|
||||||
const { wantToSaveResponses, wantToSeaPreviousResults }=require("../../lang/"+lang+"/answer");
|
const { wantToSaveResponses, wantToSeaPreviousResults }=require("../../../lang/"+lang+"/answer");
|
||||||
const { localDBConnexionFail, serverError }=require("../../lang/"+lang+"/general");
|
const { localDBConnexionFail, serverError }=require("../../../lang/"+lang+"/general");
|
||||||
|
|
||||||
// Informations du quiz, utile pour enregistrement dans base de donnée locale :
|
// Informations du quiz, utile pour enregistrement dans base de donnée locale :
|
||||||
const myForm=document.getElementById("quiz");// quiz
|
const myForm=document.getElementById("quiz");// quiz
|
@ -1,13 +1,13 @@
|
|||||||
// Fonctions externes :
|
// Fonctions externes :
|
||||||
import { addElement } from "./dom.js";
|
import { addElement } from "./dom.js";
|
||||||
import { dateFormat, isEmpty, replaceAll } from "../../../tools/main";
|
import { dateFormat, isEmpty, replaceAll } from "../../../../tools/main";
|
||||||
import { saveLocaly, getStore } from "./clientstorage.js";
|
import { saveLocaly, getStore } from "./clientstorage.js";
|
||||||
import { getDatasFromInputs } from "./forms.js";
|
import { getDatasFromInputs } from "./forms.js";
|
||||||
|
|
||||||
// Textes :
|
// Textes :
|
||||||
import { availableLangs } from "../../../config/instance.js";
|
import { availableLangs } from "../../../../config/instance.js";
|
||||||
const lang=availableLangs[0];
|
const lang=availableLangs[0];
|
||||||
const { localDBNeedDatas, localDBNeedQuizId, noPreviousResults, previousResultsLine, previousResultsTitle, previousResultsStats, userAnswersFail, userAnswersMedium, userAnswersSuccess }=require("../../../lang/"+lang+"/answer");
|
const { localDBNeedDatas, localDBNeedQuizId, noPreviousResults, previousResultsLine, previousResultsTitle, previousResultsStats, userAnswersFail, userAnswersMedium, userAnswersSuccess }=require("../../../../lang/"+lang+"/answer");
|
||||||
|
|
||||||
// Vérification des réponses de l'utilisateur au quiz
|
// Vérification des réponses de l'utilisateur au quiz
|
||||||
export const checkUserAnswers = (myForm) =>
|
export const checkUserAnswers = (myForm) =>
|
34
front/public/src/tools/clientstorage.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// FONCTIONS UTILES AU STOCKAGE LOCAL (SESSION, COOKIES, INDEXDB, ETC.)
|
||||||
|
// Éviter sessionStorage dont le contenu n'est pas gardé d'un onglet à l'autre : https://developer.mozilla.org/fr/docs/Web/API/Window/sessionStorage
|
||||||
|
|
||||||
|
export const saveLocaly = (name, data) =>
|
||||||
|
{
|
||||||
|
localStorage.setItem(name, JSON.stringify(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getLocaly = (name, json=false) =>
|
||||||
|
{
|
||||||
|
if(json)
|
||||||
|
return JSON.parse(localStorage.getItem(name));
|
||||||
|
else
|
||||||
|
return localStorage.getItem(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const removeLocaly = (name) =>
|
||||||
|
{
|
||||||
|
localStorage.removeItem(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const saveIsReady = () =>
|
||||||
|
{
|
||||||
|
if (!window.indexedDB)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getStore = (db, store_name, mode) =>
|
||||||
|
{
|
||||||
|
const tx=db.transaction(store_name, mode);
|
||||||
|
return tx.objectStore(store_name);
|
||||||
|
}
|
34
front/public/src/tools/dom.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
|
// Fonction associant les attributs fournis à un champ de formulaire
|
||||||
|
export const addElement = (eltParent, eltType, eltContent="", eltId="", eltClass=[], eltAttributes={}, replace=true) =>
|
||||||
|
{
|
||||||
|
if(isEmpty(eltType) || isEmpty(eltParent))
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const newElement=document.createElement(eltType);
|
||||||
|
|
||||||
|
if(!isEmpty(eltId))// tester si l'id n'est pas déjà utilisé dans le DOM ?
|
||||||
|
newElement.id=eltId;
|
||||||
|
|
||||||
|
if(Array.isArray(eltClass) && eltClass.length!=0)
|
||||||
|
{
|
||||||
|
for(let i in eltClass)
|
||||||
|
newElement.classList.add(eltClass[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(typeof eltAttributes === "object") // !! tous les objets ne sont pas ok
|
||||||
|
{
|
||||||
|
for(let attributName in eltAttributes)
|
||||||
|
newElement.setAttribute(attributName, eltAttributes[attributName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isEmpty(eltContent))
|
||||||
|
newElement.innerHTML=eltContent.replace(/\n/g,"<br>");// innerHTML permet d'ajouter du texte ayant lui-même des balises, etc.
|
||||||
|
|
||||||
|
if(replace)
|
||||||
|
eltParent.innerHTML="";
|
||||||
|
eltParent.appendChild(newElement);
|
||||||
|
}
|
||||||
|
}
|
6
front/public/src/tools/everywhere.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Ce script fournit des fonctions utilisées sur toutes les pages du site
|
||||||
|
export const helloDev = () =>
|
||||||
|
{
|
||||||
|
console.log("**** Hello les devs :-)\nLe code source de WikiLerni est libre et vous pouvez le trouver à cette adresse :\nhttps://forge.chapril.org/Fab_Blab/WikiLerni\nBonne lecture ! ****");
|
||||||
|
return true;
|
||||||
|
}
|
51
front/public/src/tools/forms.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import { isEmpty } from "../../../../tools/main";
|
||||||
|
|
||||||
|
// Fonction associant les attributs fournis à un champ de formulaire
|
||||||
|
export const setAttributesToInputs = (inputsConf, myForm) =>
|
||||||
|
{
|
||||||
|
for(let i in myForm.elements)
|
||||||
|
{
|
||||||
|
if(!isEmpty(myForm.elements[i].id))
|
||||||
|
{
|
||||||
|
let idInput=myForm.elements[i].id;
|
||||||
|
if(inputsConf[idInput]!==undefined)
|
||||||
|
{
|
||||||
|
let inputHTML=document.getElementById(idInput);
|
||||||
|
for (let attribute in inputsConf[idInput])
|
||||||
|
inputHTML.setAttribute(attribute, inputsConf[idInput][attribute]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupère toutes les valeurs de champs en omettant les checkbox non cochées, etc.
|
||||||
|
export const getDatasFromInputs = (myForm) =>
|
||||||
|
{
|
||||||
|
const datas={};
|
||||||
|
const formData = new FormData(myForm);
|
||||||
|
for(let entrie of formData.entries())
|
||||||
|
datas[entrie[0]]=entrie[1];
|
||||||
|
return datas;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vide tous les champs d'un formulaire, y compris hidden, checkbox, etc.
|
||||||
|
// Revoir pour les select
|
||||||
|
export const empyForm = (myForm) =>
|
||||||
|
{
|
||||||
|
const formData = new FormData(myForm);
|
||||||
|
for(let entrie of formData.entries())
|
||||||
|
{
|
||||||
|
if(myForm.elements[entrie[0]].type=="checkbox" || myForm.elements[entrie[0]].type=="radio")
|
||||||
|
myForm.elements[entrie[0]].checked=false;
|
||||||
|
else
|
||||||
|
myForm.elements[entrie[0]].value="";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Vide et cache le formulaire
|
||||||
|
export const empyAndHideForm = (myForm) =>
|
||||||
|
{
|
||||||
|
empyForm(myForm);
|
||||||
|
myForm.style.display="none";
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { matomo } from "../../../config/matomo.js";
|
import { matomo } from "../../../../config/matomo.js";
|
||||||
|
|
||||||
// Fonction chargeant le code matomo
|
// Fonction chargeant le code matomo
|
||||||
export const loadMatomo = () =>
|
export const loadMatomo = () =>
|
41
front/public/src/tools/webportage.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
const checkBoxes=
|
||||||
|
{
|
||||||
|
"CGV" : document.getElementById("CGVOk"),
|
||||||
|
"abo1" : document.getElementById("abo1"),
|
||||||
|
"abo2" : document.getElementById("abo2"),
|
||||||
|
"abo3" : document.getElementById("abo3"),
|
||||||
|
"abo4" : document.getElementById("abo4")
|
||||||
|
}
|
||||||
|
const divWPBtns=document.getElementById("WPBtns");
|
||||||
|
|
||||||
|
// Lorsque l'on sélectionne un montant, les autres options + les CGV sont désélectionnés
|
||||||
|
export const unCheckAllOthers = (choice) =>
|
||||||
|
{
|
||||||
|
for (let id in checkBoxes)
|
||||||
|
{
|
||||||
|
if(id!==choice)
|
||||||
|
checkBoxes[id].checked=false;
|
||||||
|
divWPBtns.style.display="none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const btns=
|
||||||
|
{
|
||||||
|
"btn1" : document.getElementById("WPBtn1"),
|
||||||
|
"btn2" : document.getElementById("WPBtn2"),
|
||||||
|
"btn3" : document.getElementById("WPBtn3"),
|
||||||
|
"btn4" : document.getElementById("WPBtn4")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Affiche le bon bouton de paiement et cache les autres
|
||||||
|
export const showBtnPayment = (choice) =>
|
||||||
|
{
|
||||||
|
for (let id in btns)
|
||||||
|
{
|
||||||
|
if(id!==choice)
|
||||||
|
btns[id].style.display="none";
|
||||||
|
else
|
||||||
|
btns[id].style.display="block";
|
||||||
|
}
|
||||||
|
}
|
37
front/public/webpack.config.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
{
|
||||||
|
mode: "development",
|
||||||
|
entry:
|
||||||
|
{
|
||||||
|
index: "./src/index.js",
|
||||||
|
paymentPage: "./src/paymentPage.js",
|
||||||
|
polyfill: "babel-polyfill",
|
||||||
|
quiz: "./src/quiz.js"
|
||||||
|
},
|
||||||
|
output:
|
||||||
|
{
|
||||||
|
path: path.resolve(__dirname, "public"),
|
||||||
|
filename: "JS/[name].app.js",
|
||||||
|
},
|
||||||
|
module:
|
||||||
|
{
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.js$/,
|
||||||
|
exclude: /node_modules/,
|
||||||
|
use: {
|
||||||
|
loader: "babel-loader",
|
||||||
|
options: {
|
||||||
|
presets: ["@babel/preset-env"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
devServer:
|
||||||
|
{
|
||||||
|
static: path.resolve(__dirname, "./www")
|
||||||
|
},
|
||||||
|
};
|
@ -21,7 +21,6 @@
|
|||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</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>
|
<li><a href="/a-propos.html">À propos</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</header>
|
</header>
|
35
front/public/www/WikiLerni-pub.asc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
xsDNBGCVExsBDADFoIoW8B7PJ91lRP/E1WEzsiN9ILpU9pCOs3rW09ZzOCju37FUYW7jcTAQpDya
|
||||||
|
plvOMg8JC3BcyCYGPd1xlCnDfoUnY7TyEbUUMLySg6eD3cz+Kz051GlHOayGfGYymwHF9BvvqLBf
|
||||||
|
B4b9wb4rLidbdgYqXlL6gXX7WqeGvshHZ1wvqm96vLSNJPqnntTn9qhyZMRnW7oyPcsPYVuQQ9v3
|
||||||
|
9sgbcglOfUDxlBT1rz2dCnvPzYF2FyGwELIkyvj75kp9JwBYxggLgxQf1BW9HE6vYBYNH2/nNbjJ
|
||||||
|
Ol/1VzIYzvO1MQIvgGv1rZ1+qWb44xoLG+BT5pLR0N6XrrciPISbbRQHBtcO24dm+y8q0kHh7ov+
|
||||||
|
+aubkJ94lQkauIPH+WdjnXuPFxtJmBUdX5O2jJZrZZ0A0zfKxLKFGjR+7NFtRAmWCIwL6hGVN6dy
|
||||||
|
DvgUFIpKPHixnPmxFiD6cwZRR0bfJ8BtNcLxArW201/RTsrA/iffBSH0XinAfbGpJ8q+CtMAEQEA
|
||||||
|
Ac0hV2lraUxlcm5pIDxib25qb3VyQHdpa2lsZXJuaS5jb20+wsEJBBMBCAAzFiEEmfN8AfrUk6e8
|
||||||
|
Cr338WI1eEGVsn4FAmCVEx0CGwMFCwkIBwIGFQgJCgsCBRYCAwEAAAoJEPFiNXhBlbJ+LDIL/AoO
|
||||||
|
rhQX+Ou+gEEN0io92l7OEKU9BQHJYb35Y5V0p8k95lGCL+mnNvfBtXsWlLk7T1wave/cw3kl6nlE
|
||||||
|
eTMilht4h1TmFJAP8GLaC712uR1OuVTgcn7jYElP7Fd6esdZ9FYhBQYRCYetvaZzb19lbLJz2LHL
|
||||||
|
PrX/AHJGjrMzOf/d3wMUG/gATZZLzdcqHTbSWIS49YySXcak4pmbX3+z91eYhttJJ4hdAK0bnkHy
|
||||||
|
/jwkMKCykZ0UKbbMjtOjQc6D5M6SJIEtoLioBBZ1irHgwAsTRuZCaPazJKkI45UEROfqAOFOLrnQ
|
||||||
|
NZlkaCqCEBLUVT7btdxdShux2MT/IDyQSejg+4wOsqVp+mic8JZYzf7n/YMS2kOwP7Qnlw/myJ4M
|
||||||
|
iceGabOQ8eV8/UcUQcI97p3ylAdl7kI7tGY20qdMBqYx6ztCJAAFzoLAFqtCOcC/SxOTy+aLY6Ck
|
||||||
|
kxHLXshp8xmYTb1/pgaNKBHWUIgJq1SuRUk3n1PiOsLOfUv6/Aswm87AzQRglRMdAQwAt1m1/L9L
|
||||||
|
9I14QW+2Gw013GucJT7pzoQNziAJYcOr9z6KvAsNT0XtAaMiyJX1OJ8c9vwAaNfWUZP59sJb9F/F
|
||||||
|
gM20KhYJUp4aWO96wAQvItV1/z5V35hid2ozeFTqEZGLD64qS5TO1M6/mX4Fmyt6ByXQjAj55lxi
|
||||||
|
XCrSdHRE+peO/TIX40MnvYElaiUFCzabZ4ionGMGnsPJp1sWVPeJ5XIMMCy+Qfz3AcMzKZ6clxlK
|
||||||
|
0Q64Cv8ZrKqSNl5dquvrTTTIG7qb26M5iX9yEuCn6GKaZdcRE2HXa+5znx3qHUQuI+j904RLgsNC
|
||||||
|
ZGB8TWxfDiCHt84jz1BnsSfiedKn0NFky9DhjI69UQyuYXUqMKfiSef9snufHvd+Z8bfuphzjiSj
|
||||||
|
IcmljrjHztbQgAdoOsTrxd/BuVNF5h5KfVQl5+kyJENgsMs9DAf9hF76Xm9tDSSsQVpc2RP4Z+kh
|
||||||
|
bwy2tdZmKNDPN4q/DGHi8WwH8aGvn/RRxtyT6sDCrCsIOTx/ABEBAAHCwPYEGAEIACAWIQSZ83wB
|
||||||
|
+tSTp7wKvffxYjV4QZWyfgUCYJUTHgIbDAAKCRDxYjV4QZWyflLsDAC39JCuoeP6rZe8tKphuVRO
|
||||||
|
dhGEGVzQi4J6UFt1+L92ley5F6SK/bVP6OpzCb9l1S12mcu3/tXuizyWzTjiX+hqVgkfEF31dkrq
|
||||||
|
3ZHELQgwJOaG+1AB9dLVi1DpmygywcmeLFdURPgj6Ftk/QtaTDGkL3ZEF3sOEOrn/IeyP/L460fd
|
||||||
|
64BS8KZUgTNfmgTbUNu/qRxSwTrhVR8QKEkKFQd8B5Hsgpf5Y1tRzHeYgIk2BjQS3WQSQY64FdJZ
|
||||||
|
d6/CXN8wmzPEcPOEdxr5Zlknl0jfm+yBEYTrREUwzkAu8hDHdIa8aceYFiJMaN9lUGIHiRfEaxSU
|
||||||
|
wWBpGfDmV3XmxKTb0anBYnKOt1hUb+weSiwh6sm6pkOS7WXHs8mb8+SAorUJnNkMllmF+2sfHrG+
|
||||||
|
feYWliIvczO6C/Cbb7TC+d6GTt0itwjuNuNgKL0QnvRnil36ZW22jQDLiMazm3UIyjfC7T5ue5Er
|
||||||
|
qJv6ZtLnAb/6I0Q7qAtQ7gxTdBJuZloUlWM=
|
||||||
|
=jiGl
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -20,7 +20,6 @@
|
|||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</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>
|
<li><a href="/a-propos.html">À propos</a></li>
|
||||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||||
</ul>
|
</ul>
|
@ -21,7 +21,6 @@
|
|||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</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>
|
<li><a href="/a-propos.html">À propos</a></li>
|
||||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||||
</ul>
|
</ul>
|
@ -21,7 +21,6 @@
|
|||||||
<ul id="headLinks">
|
<ul id="headLinks">
|
||||||
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
<li><a href="/contact.html" rel="nofollow">Contact</a></li>
|
||||||
<li><a href="/quizs/" id="indexHeadLink" title="Les dernières publications">Parcourir</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>
|
<li><a href="/a-propos.html">À propos</a></li>
|
||||||
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
<li><a href="/" title="Page d'accueil de WikiLerni">Accueil</a></li>
|
||||||
</ul>
|
</ul>
|
BIN
front/public/www/img/404-notfound.png
Normal file
After Width: | Height: | Size: 185 KiB |