WikiLerni/front/public/JS/loginLink.app.js

263 lines
65 KiB
JavaScript
Raw Normal View History

/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
2021-07-05 12:12:51 +02:00
/******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "../config/instance.js":
/*!*****************************!*\
!*** ../config/instance.js ***!
\*****************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("const users = __webpack_require__(/*! ./users */ \"../config/users.js\");\n\nconst questionnaires = __webpack_require__(/*! ./questionnaires */ \"../config/questionnaires.js\");\n\nmodule.exports = {\n apiUrl: \"http://localhost:3000/api\",\n siteUrl: \"http://localhost:8080\",\n adminName: \"Fabrice\",\n adminEmail: \"dev@wikilerni.com\",\n senderName: \"WikiLerni (local)\",\n senderEmail: \"bonjour@wikilerni.com\",\n adminLang: \"fr\",\n theme: \"wikilerni\",\n // le thème utilisé (dans /views) pour générer les pages HTML. Contient ses propres fichiers de configuration.\n availableLangs: [\"fr\"],\n // Languages in which the site is available. The first one is the default one.\n siteName: \"WikiLerni (local)\",\n beginCodeGodfather: \"WL\",\n // case-sensitive and can't contain \"@\" !\n defaultReceiptDays: \"147\",\n // Par défaut, quel(s) jour(s) de la semaine, l'utilisateur reçoit-il quelque chose ? (1=dimanche, 2=lundi... 7=samedi)\n cronTimingAlertInSeconde: 120,\n // for logs\n responseTimingAlertInSeconde: 3,\n // idem\n tokenSignupValidationTimeInHours: \"48h\",\n // https://github.com/zeit/ms\n tokenLoginLinkTimeInHours: \"1h\",\n tokenConnexionMinTimeInHours: \"24h\",\n tokenConnexionMaxTimeInDays: \"180 days\",\n tokenLoginChangingTimeInHours: \"1h\",\n // for email & password changing\n tokenDeleteUserTimeInHours: \"1h\",\n tokenUnsubscribeLinkTimeInDays: \"7 days\",\n // token send with subscription's emails\n freeAccountTimingInDays: 0,\n // if 0 = unlimited\n freeAccountExpirationNotificationInDays: 3,\n accountExpirationFirstNotificationInDays: 10,\n accountExpirationSecondNotificationInDays: 3,\n inactiveAccountTimeToDeleteInDays: 180,\n // Questionnaires:\n nbQuestionsMin: 1,\n // minimum number of questions for the questionnaire to be publishable\n nbQuestionsMax: 2,\n // if 0 = not maximum\n nbChoicesMax: 10,\n nbNewQuestionnaires: 12,\n // for RSS, etc.\n hourGiveNewQuestionnaireBegin: 7,\n // in user local time\n hourGiveNewQuestionnaireEnd: 21,\n // idem\n maxQuestionnaireSendedAtSameTime: 50,\n // for subscription's e-mailing\n minSearchQuestionnaires: 3,\n fieldNewQuestionnaires: \"publishingAt\",\n // field to be used to create the list of the last questionnaires, can be \"createdAt\", \"updatedAt\" or \"publishingAt\"\n // Groups :\n nbQuestionnairesByGroupMin: 1,\n nbQuestionnairesByGroupMax: 0,\n // Illustrations:\n nbIllustrationsMin: 1,\n nbIllustrationsMax: 1,\n maxIllustrationSizeinOctet: 1000000,\n // pas contrôlé pour l'instant. À revoir.\n mimeTypesForIllustration: [\"image/jpg\", \"image/jpeg\", \"image/png\", \"image/gif\", \"image/png\"],\n // -- Upload and resize:\n illustrationsWidthMaxInPx: 500,\n illustrationsMiniaturesWidthMaxInPx: 200,\n // Links:\n nbLinksMin: 1,\n nbLinksMax: 0,\n // Questions & responses:\n nbQuestionsMin: 1,\n nbQuestionsMax: 0,\n nbChoicesMax: 10,\n // à supprimer quand tous les \"require\" à jour:\n passwordMinLength: users.password.minlength,\n dirCacheUsers: users.dirCacheUsers,\n dirCacheUsersAnswers: users.dirCacheUsersAnswers,\n dirCacheQuestionnaires: questionnaires.dirCacheQuestionnaires,\n dirCacheQuestions: questionnaires.dirCacheQuestions,\n dirCacheUsersQuestionnaires: questionnaires.dirCacheUsersQuestionnaires,\n dirHTMLQuestionnaires: questionnaires.dirHTMLQuestionnaires,\n dirWebQuestionnaires: questionnaires.dirWebQuestionnaires\n};\n\n//# sourceURL=webpack://wikilerni/../config/instance.js?");
/***/ }),
/***/ "../config/questionnaires.js":
/*!***********************************!*\
!*** ../config/questionnaires.js ***!
\***********************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
eval("module.exports = {\n // API'routes (after \"apiUrl\" defined in instance.js)\n questionnaireRoutes: \"/questionnaire\",\n // la base à laquelle s'ajoute les routes suivantes\n getListNextQuestionnaires: \"/getlistnextquestionnaires/\",\n getQuestionnaireRoutes: \"/get\",\n getRandomQuestionnairesRoute: \"/getrandom\",\n getStatsQuestionnaires: \"/stats/\",\n previewQuestionnaireRoutes: \"/preview\",\n publishedQuestionnaireRoutes: \"/quiz/\",\n regenerateHTML: \"/htmlregenerated\",\n searchAdminQuestionnairesRoute: \"/searchadmin\",\n searchQuestionnairesRoute: \"/search\",\n // -- groupes :\n groupRoutes: \"/group\",\n getGroupRoute: \"/get/\",\n previewGroupRoutes: \"/preview\",\n searchGroupsRoute: \"/search\",\n // -- questions & choices :\n questionsRoute: \"/question/\",\n // -- tags :\n tagsSearchRoute: \"/tags/search/\",\n // -- answers :\n getAdminStats: \"/getadminstats/\",\n getPreviousAnswers: \"/user/answers/\",\n getStatsAnswers: \"/user/anwswers/stats/\",\n // fonctionne aussi pour les groupes\n saveAnswersRoute: \"/answer/\",\n // idem\n // forms : à compléter avec valeurs par défaut, etc. cf modèle\n Questionnaire: {\n title: {\n maxlength: 255,\n required: true\n },\n slug: {\n maxlength: 150\n },\n // champ requis mais calculé à partir du titre qd laissé vide dans le formulaire\n introduction: {\n required: true\n }\n },\n searchQuestionnaires: {\n minlength: 3,\n required: true\n },\n Group: {\n title: {\n maxlength: 255,\n required: true\n },\n slug: {\n maxlength: 150\n } // champ requis mais calculé à partir du titre qd laissé vide dans le formulaire\n\n },\n Question: {\n text: {\n maxlength: 255,\n required: true\n },\n rank: {\n required: true,\n min: 1,\n defaultValue: 1\n }\n },\n Choice: {\n text: {\n maxlength: 255,\n required: true\n }\n },\n search: {\n minlength: 3,\n required: true\n },\n searchGroups: {\n minlength: 3,\n required: true\n },\n // Emplacement des fichiers JSON générés :\n dirCacheGroups: \"datas/questionnaires/groups\",\n dirCacheQuestionnaires: \"datas/questionnaires\",\n dirCacheQuestions: \"datas/questionnaires/questions\",\n dirCacheTags: \"datas/questionnaires/tags\",\n dirCacheUsersQuestionnaires: \"datas/users/questionnaires\",\n // Emplacement des fichiers HTML générés :\n dirHTMLGroups: \"front/public/quiz/gp\",\n dirHTMLQuestionnaires: \"front/public/quiz\",\n dirHTMLNews: \"front/public/quizs\",\n dirHTMLTags: \"front/public/quizs\",\n // Idem mais pour urls :\n dirWebGroups: \"quiz/gp\",\n dirWebQuestionnaires: \"quiz\",\n dirWebNews: \"quizs/\",\n dirWebTags: \"quizs/\",\n // limite des résultat du moteur de recherche, quand demande de résultats au hasard :\n nbRandomResults: 3,\n\n /* Valeurs en fait définies dans instance.js donc à supprimer quand plus utilisées ailleurs : */\n nbQuestionsMin: 1,\n nbQuestionsMax: 0,\n nbChoicesMax: 10,\n nbTagsMin: 0,\n nbTagsMax: 0 // 0 = not max \n\n};\n\n//# sourceURL=webpack://wikilerni/../config/questionnaires.js?");
/***/ }),
/***/ "../config/users.js":
/*!**************************!*\
!*** ../config/users.js ***!
\**************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
eval("module.exports = {\n // API'routes (after \"apiUrl\" defined in instance.js)\n userRoutes: \"/user\",\n checkDeleteLinkRoute: \"/confirmdelete/\",\n checkIfIsEmailfreeRoute: \"/isemailfree\",\n checkLoginRoute: \"/checklogin/\",\n checkNewLoginLinkRoute: \"/confirmnewlogin/\",\n checkSubscribeTokenRoute: \"/validation/\",\n connectionRoute: \"/login\",\n connectionWithLinkRoute: \"/checkloginlink\",\n createUserRoute: \"/create\",\n getAdminStats: \"/getadminstats/\",\n getGodChilds: \"/getgodchilds/\",\n getGodfatherRoute: \"/getgodfatherid\",\n getLoginLinkRoute: \"/getloginlink\",\n getPayments: \"/payment/getforoneuser/\",\n getUserInfos: \"/get/\",\n getUsersQuestionnairesRoute: \"/getusersquestionnaires/\",\n // les questionnaires auxquels l'utilisateur a déjà eu accès via son abonnement \n searchUserRoute: \"/search/\",\n signupCompletionRoute: \"/signupcompletion/\",\n subscribeRoute: \"/signup\",\n unsubscribeRoute: \"/subscription/stop/\",\n updateUserInfos: \"/modify/\",\n validateUserRoute: \"/validate/\",\n // forms : à compléter avec valeurs par défaut, etc. cf modèle\n name: {\n maxlength: 70,\n required: true\n },\n email: {\n maxlength: 255,\n required: true\n },\n password: {\n minlength: 8,\n maxlength: 72,\n required: true\n },\n // https://www.npmjs.com/package/bcrypt#security-issues-and-concerns\n newPassword: {\n minlength: 8,\n maxlength: 72\n },\n codeGodfather: {\n maxlength: 255\n },\n cguOk: {\n value: \"true\",\n required: true\n },\n search: {\n minlength: 1,\n required: true\n },\n timeDifferenceMin: -720,\n timeDifferenceMax: 840,\n // JSON dir\n dirCacheUsers: \"datas/users\",\n dirCacheUsersAnswers: \"datas/users/questionnaires/answers\",\n dirCacheUsersWithoutAnswers: \"datas/users/questionnaires/without\"\n};\n\n//# sourceURL=webpack://wikilerni/../config/users.js?");
/***/ }),
/***/ "./src/loginLink.js":
/*!**************************!*\
!*** ./src/loginLink.js ***!
\**************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config/instance.js */ \"../config/instance.js\");\n/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_config_instance_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tools_clientstorage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tools/clientstorage.js */ \"./src/tools/clientstorage.js\");\n/* harmony import */ var _tools_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tools/dom.js */ \"./src/tools/dom.js\");\n/* harmony import */ var _tools_everywhere_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tools/everywhere.js */ \"./src/tools/everywhere.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../tools/main */ \"../tools/main.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_tools_main__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _tools_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tools/url.js */ \"./src/tools/url.js\");\n/* harmony import */ var _tools_users_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tools/users.js */ \"./src/tools/users.js\");\n// -- PAGE PERMETTANT DE TESTER UN LIEN DE CONNEXION REÇU PAR E-MAIL\n/// Un token est transmis en paramètre de l'Url. Il a une validité limité dans le temps.\n/// Dans ce cas, on peut rediriger l'utilisateur vers la page de connexion pour obtenir un nouveau lien de validation\n/// Si le token est ok, on crée une session suivant la durée retournée par l'API et redirige l'utilisateur vers sa page d'accueil\n/// Un résultat de quiz peut aussi avoir été enregistré côté client et est alors à transmettre à l'API.\n/// Si l'utilisateur a déjà une session active valide, c'est qu'il a déjà cliqué sur le lien. On le redirige également vers sa page d'accueil.\n// Fichier de configuration côté client :\n\nconst lang = _config_instance_js__WEBPACK_IMPORTED_MODULE_0__.availableLangs[0];\n\nconst {\n connectionPage,\n userHomePage\n} = __webpack_require__(\"../views sync recursive ^\\\\.\\\\/.*\\\\.js$\")(\"./\" + _config_instance_js__WEBPACK_IMPORTED_MODULE_0__.theme + \"/config/\" + lang + \".js\");\n\nconst {\n connectionWithLinkRoute,\n userRoutes\n} = __webpack_require__(/*! ../../config/users */ \"../config/users.js\"); // Importation des fonctions utile au script :\n\n\n\n\n\n\n\n // Dictionnaires :\n\nconst {\n serverError\n} = __webpack_require__(\"../lang sync recursive ^\\\\.\\\\/.*\\\\/general$\")(\"./\" + lang + \"/general\");\n\nconst {\n alreadyConnected,\n badLinkValidationMessage,\n validationMessage\n} = __webpack_require__(\"../lang sync recursive ^\\\\.\\\\/.*\\\\/user$\")(\"./\" + lang + \"/user\");\n\nconst divResponse = document.getElementById(\"response\");\n(0,_tools_everywhere_js__WEBPACK_IMPORTED_MODULE_3__.helloDev)();\n\nconst initialise = async () => {\n try {\n // si l'utilisateur est déjà connecté, pas la peine d'aller + loin :\n const isConnected = await (0,_tools_users_js__WEBPACK_IMPORTED_MODULE_6__.checkSession)();\n\n if (isConnected) {\n (0,_tools_clientstorage_js__WEBPACK_IMPORTED_MODULE_1__.saveLocaly)(\"message\", {\n message: alreadyConnected,\n color: \"info\"\n }); // pour l'afficher sur la page suivante\n\n const user = (0,_tools_clientstorage_js__WEBPACK_IMPORTED_MODULE_1__.getLocaly)(\"user\", true);\n window.location.assign(\"/\" + userHomePage); // type de connexion possible que pour les simples users\n } else {\n let datas = (0,_tools_url_js__WEBPACK_IMPORTED_MODULE_5__.getUrlParams)();\n\n if (datas && datas.t !== undefined) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", _config_instance_js__WEBPACK_IMPORTED_MODULE_0__.apiUrl + userRoutes + connectionWithLinkRoute);\n\n xh
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "./src/tools/clientstorage.js":
/*!************************************!*\
!*** ./src/tools/clientstorage.js ***!
\************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2021-07-05 12:12:51 +02:00
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"saveLocaly\": function() { return /* binding */ saveLocaly; },\n/* harmony export */ \"getLocaly\": function() { return /* binding */ getLocaly; },\n/* harmony export */ \"removeLocaly\": function() { return /* binding */ removeLocaly; }\n/* harmony export */ });\n// FONCTIONS UTILES AU STOCKAGE LOCAL (SESSION, COOKIES, INDEXDB, ETC.)\n// Revenir pour gérer le cas où local.storage n'est pas connu pour utiliser cookie\nconst saveLocaly = (name, data) => {\n localStorage.setItem(name, JSON.stringify(data));\n};\nconst getLocaly = function (name) {\n let json = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (json) return JSON.parse(localStorage.getItem(name));else return localStorage.getItem(name);\n};\nconst removeLocaly = name => {\n localStorage.removeItem(name);\n};\n\n//# sourceURL=webpack://wikilerni/./src/tools/clientstorage.js?");
2021-07-05 12:12:51 +02:00
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "./src/tools/dom.js":
/*!**************************!*\
!*** ./src/tools/dom.js ***!
\**************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addElement\": function() { return /* binding */ addElement; }\n/* harmony export */ });\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../tools/main */ \"../tools/main.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tools_main__WEBPACK_IMPORTED_MODULE_0__);\n // Fonction associant les attributs fournis à un champ de formulaire\n\nconst addElement = function (eltParent, eltType) {\n let eltContent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n let eltId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"\";\n let eltClass = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n let eltAttributes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let replace = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n if ((0,_tools_main__WEBPACK_IMPORTED_MODULE_0__.isEmpty)(eltType) || (0,_tools_main__WEBPACK_IMPORTED_MODULE_0__.isEmpty)(eltParent)) return false;else {\n const newElement = document.createElement(eltType);\n if (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_0__.isEmpty)(eltId)) // tester si l'id n'est pas déjà utilisé dans le DOM ?\n newElement.id = eltId;\n\n if (Array.isArray(eltClass) && eltClass.length != 0) {\n for (let i in eltClass) newElement.classList.add(eltClass[i]);\n }\n\n if (typeof eltAttributes === \"object\") // !! tous les objets ne sont pas ok\n {\n for (let attributName in eltAttributes) newElement.setAttribute(attributName, eltAttributes[attributName]);\n }\n\n if (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_0__.isEmpty)(eltContent)) newElement.innerHTML = eltContent.replace(/\\n/g, \"<br>\"); // innerHTML permet d'ajouter du texte ayant lui-même des balises, etc.\n\n if (replace) eltParent.innerHTML = \"\";\n eltParent.appendChild(newElement);\n }\n};\n\n//# sourceURL=webpack://wikilerni/./src/tools/dom.js?");
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "./src/tools/everywhere.js":
/*!*********************************!*\
!*** ./src/tools/everywhere.js ***!
\*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2021-07-05 12:12:51 +02:00
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"helloDev\": function() { return /* binding */ helloDev; },\n/* harmony export */ \"updateAccountLink\": function() { return /* binding */ updateAccountLink; }\n/* harmony export */ });\n// Ce script fournit des fonctions utilisées sur toutes les pages du site\nconst helloDev = () => {\n console.log(\"**** Hello ami développeur :-)\\n\\nLe code de WikiLerni est libre et vous pouvez le trouver à cette adresse :\\nhttps://forge.chapril.org/Fab_Blab/WikiLerni\\n\\nPour les suggestions d'amélioration ou questions : dev@wililerni.com ****\");\n return true;\n};\nconst updateAccountLink = (status, configTemplate) => {\n const link = document.getElementById(\"accountHeadLink\");\n const homePage = status + \"HomePage\";\n link.href = \"/\" + configTemplate[homePage];\n};\n\n//# sourceURL=webpack://wikilerni/./src/tools/everywhere.js?");
2021-07-05 12:12:51 +02:00
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "./src/tools/url.js":
/*!**************************!*\
!*** ./src/tools/url.js ***!
\**************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getUrlParams\": function() { return /* binding */ getUrlParams; }\n/* harmony export */ });\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../tools/main */ \"../tools/main.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tools_main__WEBPACK_IMPORTED_MODULE_0__);\n // Fonction récupérant les paramètres passés par l'url\n\nconst getUrlParams = () => {\n if ((0,_tools_main__WEBPACK_IMPORTED_MODULE_0__.isEmpty)(location.search)) return false;\n const parameters = location.search.substring(1).split(\"&\");\n if (!Array.isArray(parameters) || parameters.length === 0) return false;\n let param,\n datas = {};\n\n for (let i in parameters) {\n param = parameters[i].split(\"=\");\n if (param.length === 2) datas[param[0]] = decodeURI(param[1]);\n }\n\n return datas;\n};\n\n//# sourceURL=webpack://wikilerni/./src/tools/url.js?");
2021-07-05 12:12:51 +02:00
/***/ }),
/***/ "./src/tools/users.js":
/*!****************************!*\
!*** ./src/tools/users.js ***!
\****************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getTimeDifference\": function() { return /* binding */ getTimeDifference; },\n/* harmony export */ \"setSession\": function() { return /* binding */ setSession; },\n/* harmony export */ \"checkAnswerDatas\": function() { return /* binding */ checkAnswerDatas; },\n/* harmony export */ \"checkSession\": function() { return /* binding */ checkSession; }\n/* harmony export */ });\n/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../config/instance.js */ \"../config/instance.js\");\n/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_config_instance_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _config_users_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../config/users.js */ \"../config/users.js\");\n/* harmony import */ var _config_users_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_config_users_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _clientstorage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clientstorage.js */ \"./src/tools/clientstorage.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../tools/main */ \"../tools/main.js\");\n/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_tools_main__WEBPACK_IMPORTED_MODULE_3__);\n\nconst lang = _config_instance_js__WEBPACK_IMPORTED_MODULE_0__.availableLangs[0];\n\nconst configTemplate = __webpack_require__(\"../views sync recursive ^\\\\.\\\\/.*\\\\.js$\")(\"./\" + _config_instance_js__WEBPACK_IMPORTED_MODULE_0__.theme + \"/config/\" + lang + \".js\");\n\n\n\n\nconst getTimeDifference = () => {\n // multiplier par -1, car c'est ce qu'il faut \"ajouter\" à l'heure UTC pour revenir en heure locale qui m'intéresse et non l'inverse\n const timeLocal = new Date().getTimezoneOffset() * -1;\n if (timeLocal > _config_users_js__WEBPACK_IMPORTED_MODULE_1__.timeDifferenceMax || timeLocal < _config_users_js__WEBPACK_IMPORTED_MODULE_1__.timeDifferenceMin) return 0;else return timeLocal;\n}; // J'utilise le stockage local du navigateur pour enregistrer les données permettant de reconnaître l'utilisateur par la suite\n// Seul le serveur pourra vérifier que les identifiants sont (toujours) valides.\n\nconst setSession = (userId, token, durationTS) => {\n const storageUser = {\n id: userId,\n token: token,\n duration: durationTS\n };\n (0,_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__.saveLocaly)(\"user\", storageUser);\n}; // Vérifie qu'il y a des données locales concernant le résultat d'un quiz ou d'un groupe de quizs\n// Et les ajoute aux données envoyées par les formulaires d'inscription/connexion si c'est le cas\n\nconst checkAnswerDatas = datas => {\n const lastAnswer = (0,_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__.getLocaly)(\"lastAnswer\");\n\n if (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(lastAnswer)) {\n const answer = JSON.parse(lastAnswer);\n\n if (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.duration) && !(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.nbCorrectAnswers) && !(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.nbQuestions) && (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.QuestionnaireId) || !(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.GroupId))) {\n datas.duration = answer.duration;\n datas.nbCorrectAnswers = answer.nbCorrectAnswers;\n datas.nbQuestions = answer.nbQuestions;\n if (!(0,_tools_main__WEBPACK_IMPORTED_MODULE_3__.isEmpty)(answer.QuestionnaireId)) datas.QuestionnaireId = answer.QuestionnaireId;else datas.GroupId = answer.GroupId;\n }\n }\n\n return datas;\n}; // Cette fonction teste la connexion de l'utilisateur d'une page\n// On peut fourn
/***/ }),
/***/ "../lang/fr/general.js":
/*!*****************************!*\
!*** ../lang/fr/general.js ***!
\*****************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
eval("module.exports = {\n addBtnTxt: \"Ajouter\",\n addOkMessage: \"Les données ont bien été enregistrées.\",\n alertNewWindow: \"nouvelle fenêtre\",\n badUrl: \"Tentative d'accès à une page n'existant pas :\",\n btnLinkToQuestionnaire: \"Afficher !\",\n btnProposeConnection: \"Je me connecte.\",\n btnProposeSubscribe: \"Je crée mon compte.\",\n btnShowOnWebSite: \"Lire la suite sur #SITE_NAME\",\n deleteBtnTxt: \"Supprimer\",\n deleteFailMessage: \"La suppression de l'enregistrement #ID a échoué.\",\n deleteOkMessage: \"La suppression a bien été enregistrée.\",\n failAuth: \"Erreur d'authentification.\",\n failAuthCron: \"Tentative de lancement d'un cron sans le bon token.\",\n failAuthHeader: \"Absence de header Authorization.\",\n failAuthId: \"Identifiant non valide : \",\n failAuthToken: \"Token invalide ou utilisateur non trouvé.\",\n neededParams: \"Des paramètres nécessaires manquants sont manquants.\",\n nextPage: \"Page suivante\",\n notAllowed: \"Vous n'avez pas les droits nécessaires pour cette action.\",\n notRequired: \"Facultatif.\",\n notValidFormat: \"Format non valide.\",\n previousPage: \"Page précédente\",\n serverError: \"Désolé. Une erreur imprévue est survenue. Si cela persiste, n'hésitez à prévenir l'administrateur du site.\",\n serverErrorAdmin: \"Bug de l'application :\",\n siteHTMLTitle: \"WikiLerni : la culture générale en liberté\",\n siteMetaDescription: \"Avec WikiLerni, vous apprenez régulièrement de nouvelles choses. Vous recevez de courts articles lisibles en quelques minutes. Des quizs vous permettent ensuite de tester ce que vous avez retenu.\",\n scriptTimingAlert: \"*** Script lent : SCRIPT_TIMING millisecondes, route : SCRIPT_URL\",\n scriptTimingInfo: \"Durée de la réponse : SCRIPT_TIMING millisecondes, route : SCRIPT_URL\",\n statsAdmin: \"Durant les dernières 24h : NB_USERS_24H comptes ont été créés, NB_SUBSCRIPTIONS_24H validés et NB_USERS_DELETED_24H supprimés. NB_ANSWERS_24H réponses aux quizs ont été enregistrées.<br>En tout, il y a : NB_USERS_TOT comptes, dont NB_SUBSCRIPTIONS_TOT validés et NB_SUBSCRIPTIONS_PREMIUM comptes prémium. NB_ANSWERS_TOT réponses aux quizs ont été enregistrées.<br>Parmi les NB_USERS_DELETED_TOT comptes supprimés, NB_USERS_DELETED_VALIDED avaient validé leur compte et NB_USERS_DELETED_PREMIUM avaient souscrit un compte prémium.\",\n subscriptionCall: \"Inscrivez-vous !\",\n updateBtnTxt: \"Modifier\",\n updateOkMessage: \"La mise à jour à jour a bien été enregistrée.\"\n};\n\n//# sourceURL=webpack://wikilerni/../lang/fr/general.js?");
/***/ }),
/***/ "../lang/fr/user.js":
/*!**************************!*\
!*** ../lang/fr/user.js ***!
\**************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
eval("module.exports = {\n alreadyConnected: \"Vous êtes déjà connecté au site !\",\n badLinkValidationMessage: \"Votre lien de confirmation ne semble pas valide ou bien il a expiré. Vous pouvez en recevoir un nouveau <a href='#URL'>en cliquant ici</a>.\",\n badPassword: \"Aucun compte utilisateur ne correspond aux informations saisies.\",\n byebyeMessage: \"Si vous voyez ce message, c'est que votre déconnexion s'est bien déroulée.<br>À bientôt !\",\n connectionOk: \"Connexion réussie.\",\n creationOkMessage: \"Le nouvel utilisateur a bien été enregistré.\",\n cronDeleteUnvalidedUsersMessage: \" comptes utilisateurs non validés ont été supprimés.\",\n deleteFailMessage: \"Tentative de suppression d'un utilisateur inexistant : \",\n deleteInactiveUsersMessage: \" comptes utilisateurs inactifs ont été supprimés.\",\n deleteOkMessage: \"L'utilisateur a bien été supprimé.\",\n emailNotFound: \"Aucun compte utilisateur n'a été trouvé pour cette adresse e-mail.\",\n failBotTest: \"Un problème a été rencontré durant votre inscription. En cas de difficulté, n'hésitez pas contacter l'administrateur du site.\",\n failBotTestLog: \"Une inscription a été bloquée, parce que le champ email2 était renseigné avec : \",\n formsEmailLabel: \"E-mail :\",\n formsEmailPlaceholder: \"Votre adresse e-mail\",\n formsEmail2Placeholder: \"Si vous voyez ce champ, laissez-le vide\",\n //champ qui ne devrait pas être visible par des humains\n formsCGUOkLabel: \"J'accepte <a href=#link target=\\\"_blank\\\" rel=\\\"noopener\\\" title=\\\"À lire :)\\\">les Conditions Générale d'Utilisation</a> du site (requis).\",\n formsSubmitTxt: \"Je m'abonne !\",\n godfatherFound: \"Votre \\\"parrain\\\" a bien été trouvé. Cette personne sera avertie que vous l'avez désignée.\",\n godfatherNotFound: \"Désolé mais aucun utilisateur n'a été trouvé pour ce code / e-mail de parrainage :(\",\n infosAdminGodfather: \"Cet utilisateur a été parrainé par \",\n infosAdminNbGodChilds: \"Ses #NB filleuls : \",\n infosUserForAdmin: \"Cet utilisateur (id: ID_USER) a <b>créé son compte le DATE_CREA</b>, la dernière mise à jour datant du DATE_UPDATE.<br><b>Date de sa dernière connexion : DATE_CONNECTION.</b>\",\n infosUserNbGodChilds: \"Voici les #NB utilisateur(s) inscrit(s) en vous désignant comme \\\"parrain\\\" : \",\n infosUserNoGodchilds: \"Pour l'instant, aucune personne ne s'est inscrite, en vous désignant comme \\\"parrain\\\".\",\n mailDeleteBodyHTML: \"<h3>Bonjour USER_NAME,</h3><p>Pour confirmer la suppression de votre compte, cliquez sur le lien ci-dessous sans tarder.</p>\",\n mailDeleteBodyTxt: \"Bonjour USER_NAME,\\n\\nPour confirmer la suppression de votre compte, cliquez sur le lien suivant sans tarder :\\nLINK_URL\",\n mailDeleteLinkAlreadyMessage: \"Il semble que vous ayez déjà validé la suppression de votre compte.\",\n mailDeleteLinkFailMessage: \"Votre lien de suppression n'est pas valide ou alors il a expiré.\",\n mailDeleteLinkMessage: \"Votre demande de suppression a bien été enregistrée. Merci de cliquer sans tarder sur le lien qui vient de vous être envoyé par e-mail pour confirmer.\",\n mailDeleteLinkOkMessage: \"Votre compte a bien été supprimé. Merci d'avoir utilisé nos services.\",\n mailDeleteLinkTxt: \"Confirmer.\",\n mailDeleteSubject: \"Confirmer la suppression de votre compte.\",\n mailLoginLinkBodyHTML: \"<h3>Bonjour USER_NAME,</h3><p>Pour vous connecter à votre compte, cliquez sur le lien suivant sans tarder :</p>\",\n mailLoginLinkBodyTxt: \"Bonjour USER_NAME,\\n\\nPour vous connecter à votre compte, cliquez sur le lien suivant sans tarder :\\nLINK_URL\",\n mailLoginLinkMessage: \"Un lien de connexion vient de vous être envoyé sur votre adresse e-mail. Ne tardez pas à l'utiliser, car il n'est valable que durant *TIMING* !\",\n mailLoginLinkSubject: \"Votre lien de connexion.\",\n mailLoginLinkTxt: \"Me connecter.\",\n mailThankGodfatherBodyHTML: \"<h3>Bonjour USER_NAME,</h3><p>Grâce à vous, un nouvel utilisateur (EMAIL)
/***/ }),
/***/ "../tools/main.js":
/*!************************!*\
!*** ../tools/main.js ***!
\************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
eval("// Quelques fonctions utiles pour les chaînes\nclass Tool {\n static isEmpty(myVar) {\n if (myVar === undefined || myVar === null) return true;else {\n myVar += \"\"; // si autre chose qu'une chaîne envoyé...\n\n myVar = myVar.trim();\n if (myVar === \"\") return true;else return false;\n }\n }\n\n static trimIfNotNull(myString) {\n if (Tool.isEmpty(myString)) myString = null;else {\n myString += \"\"; // si autre chose qu'une chaîne envoyé...\n\n myString = myString.trim();\n }\n return myString;\n }\n\n static shortenIfLongerThan(myString, max) {\n myString += \"\"; // au cas où cela ne serait pas une chaîne...\n\n if (myString.length > max) myString = myString.substring(0, max - 3) + \"…\";\n return myString;\n } // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings\n\n\n static replaceAll(myString, mapObj) {\n const replaceElts = new RegExp(Object.keys(mapObj).join(\"|\"), \"gi\");\n return myString.replace(replaceElts, matched => {\n return mapObj[matched];\n });\n } // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random\n\n\n static getRandomInt(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min)) + min;\n } // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country\n\n\n static dateFormat(dateString) {\n let lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"fr\";\n if (Tool.isEmpty(dateString)) return \"\";\n let myDate = new Date(dateString);\n let myDay = myDate.getDate() + \"\";\n if (myDay.length === 1) myDay = \"0\" + myDay;\n let myMounth = myDate.getMonth() + 1 + \"\";\n if (myMounth.length === 1) myMounth = \"0\" + myMounth;\n let myYear = myDate.getFullYear();\n if (lang === \"fr\") return myDay + \"/\" + myMounth + \"/\" + myYear;else if (lang === \"form\") // 2014-02-09\n return myYear + \"-\" + myMounth + \"-\" + myDay;else return myMounth + \"/\" + myDay + \"/\" + myYear;\n } // On enlève volontairement les 0/O pour éviter les confusions !\n // Et mieux vaut aussi débuter et finir par une lettre simple.\n\n\n static getPassword(nbCarMin, nbCarMax) {\n const nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin));\n const letters = \"ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz\";\n const others = \"123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ\";\n let password = letters[Math.floor(Math.random() * letters.length)];\n\n for (let i = 1; i < nbCar - 1; i++) {\n if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)];\n }\n\n password += letters[Math.floor(Math.random() * letters.length)];\n return password;\n }\n\n}\n\nmodule.exports = Tool;\n\n//# sourceURL=webpack://wikilerni/../tools/main.js?");
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "../views/default/config/fr.js":
/*!*************************************!*\
!*** ../views/default/config/fr.js ***!
\*************************************/
/***/ (function(module) {
eval("module.exports = {\n headLinks: [{\n anchor: \"Accueil\",\n attributes: {\n href: \"/\"\n }\n }, {\n anchor: \"Mon compte\",\n attributes: {\n href: \"/connexion.html\",\n id: \"accountHeadLink\"\n }\n }, {\n anchor: \"À propos\",\n attributes: {\n href: \"/a-propos.html\"\n }\n }, {\n anchor: \"Contact\",\n attributes: {\n href: \"/contact.html\"\n }\n }],\n footLinks: [{\n anchor: \"Crédits\",\n attributes: {\n href: \"/credits.html\"\n }\n }, {\n anchor: \"Mentions légales\",\n attributes: {\n href: \"/mentions-legales.html\",\n rel: \"nofollow\"\n }\n }, {\n anchor: \"Données personnelles\",\n attributes: {\n href: \"/donnees.html\"\n }\n }, {\n anchor: \"C.G.U.\",\n attributes: {\n href: \"/cgu.html\",\n rel: \"nofollow\"\n }\n }, {\n anchor: \"C.G.V.\",\n attributes: {\n href: \"/cgv.html\",\n rel: \"nofollow\"\n }\n }],\n maxQuestionnairesByPage: 10,\n userHomePage: \"accueil.html\",\n adminHomePage: \"admin.html\",\n managerHomePage: \"gestion.html\",\n subscribePage: \"inscription.html\",\n connectionPage: \"connexion.html\",\n accountPage: \"compte.html\",\n questionnairesManagementPage: \"gestion-quizs.html\",\n usersManagementPage: \"gestion-utilisateurs.html\",\n nbQuestionnairesUserHomePage: 10,\n illustrationDir: \"/img/quizs/\",\n siteSlogan: \"Cultivons notre jardin !\",\n homeTitle1: \"De nature curieuse ?\",\n homeP1: \"Avec WikiLerni vous apprenez chaque jour de nouvelles choses.<br>Des articles de Wikipédia sont sélectionnés pour vous et sont suivis d'un quiz vous permettant de tester ce que vous en avez retenu.<br>De jour en jour de nouvelles graines de savoir sont ainsi semées dans votre \\\"jardin\\\".\",\n homeTitle2: \"La culture en liberté\",\n homeP2: \"Tout comme sur Wikipédia (*), le logiciel et le contenu partagé sur WikiLerni sont libres.<br>Vous pouvez les utiliser, les modifier et les diffuser selon votre souhait.<br>Sur WikiLerni, pas de publicité, ni de commercialisation de vos données personnelles.<br>Vous pouvez venir y \\\"cultiver votre jardin\\\" en toute tranquillité.<br><br><small><em>(*) Bien que partageant ses valeurs, WikiLerni est un projet indépendant de la fondation Wikipédia.</em></small>\",\n newQuestionnairesTitle: \"Les derniers quizs publiés sur WikiLerni\",\n newQuestionnairesIntro: \"Liste des derniers quizs publiés sur WikiLerni.\",\n explanationTitle: \"Vous découvrez WikiLerni ?\",\n explanationTxt: \"Le principe est simple : vous commencez par lire l'article Wikipédia dont le lien vous est proposé.<br>Puis vous afficher le quiz pour vérifier ce que vous en avez retenu de votre lecture. Vous obtenez alors votre résultat immédiatement.<br><br>Toutes les réponses se trouvent dans l'article proposé à la lecture. <b>Vous êtes ici pour apprendre de nouvelles choses</b>, mais libre à vous d'essayer d'y répondre immédiatement.<br><br>Quand le sujet s'y prête, ne vous étonnez pas si certaines des réponses proposées peuvent être un peu décalées, absurdes... On peut apprendre avec le sourire, non ? :-)<br><br>Une fois votre résultat obtenu, il vous sera proposé de créer un compte pour le sauvegarder.<br>Ce compte vous permettra de tester de nouveau ce quiz pour vérifier ce que vous en avez retenu plusieurs jours, semaines, mois... Et de recevoir régulièrement de nouvelles suggestions de lectures.<br><br>Mais <b>la création de ce compte est facultative</b> et <a href='/quizs/' title='Les derniers quizs publiés'>vous pouvez parcourir WikiLerni librement</a>.\",\n noJSNotification: \"Désolé, mais pour l'instant, l'utilisation de WikiLerni nécessite l'activation du JavaScript.\",\n tagsListTxt: \"Parcourir les rubriques :\"\n};\n\n//# sourceURL=webpack://wikilerni/../views/default/config/fr.js?");
2020-08-07 12:38:19 +02:00
/***/ }),
/***/ "../views/wikilerni/config/fr.js":
/*!***************************************!*\
!*** ../views/wikilerni/config/fr.js ***!
\***************************************/
2021-07-05 12:12:51 +02:00
/***/ (function(module) {
2020-08-07 12:38:19 +02:00
eval("module.exports = {\n // liens de l'interface\n headLinks: [{\n anchor: \"Contact\",\n attributes: {\n href: \"/contact.html\",\n rel: \"nofollow\"\n }\n }, {\n anchor: \"Parcourir\",\n attributes: {\n href: \"/quizs/\",\n id: \"indexHeadLink\",\n title: \"Les dernières publications\"\n }\n }, {\n anchor: \"Mon compte\",\n attributes: {\n href: \"/connexion.html\",\n id: \"accountHeadLink\",\n title: \"Accéder ou créez votre compte WikiLerni\"\n }\n }, {\n anchor: \"À propos\",\n attributes: {\n href: \"/a-propos.html\",\n title: \"En savoir + sur WikiLerni\"\n }\n }, {\n anchor: \"Accueil\",\n attributes: {\n href: \"/\",\n title: \"Page d'accueil\"\n }\n }],\n footLinks: [{\n anchor: \"Blog\",\n attributes: {\n href: \"https://diaspora-fr.org/people/815767c0c09e0139ec6f32a01d0dfba2\",\n title: \"Le blog WikiLerni sur diaspora*\"\n }\n }, {\n anchor: \"Crédits\",\n attributes: {\n href: \"/credits.html\",\n title: \"Qui a créé WikiLerni ? Quels sont vos droits ?\"\n }\n }, {\n anchor: \"Mentions légales\",\n attributes: {\n href: \"/mentions-legales.html\",\n rel: \"nofollow\"\n }\n }, {\n anchor: \"Données personnelles\",\n attributes: {\n href: \"/donnees.html\",\n title: \"Vos données personnelles sur WikiLerni\"\n }\n }, {\n anchor: \"CGV & CGU\",\n attributes: {\n href: \"/CGV-CGU.html\",\n rel: \"nofollow\"\n }\n }],\n accountPage: \"compte.html\",\n aboutPage: \"a-propos.html\",\n adminHomePage: \"admin.html\",\n cguPage: \"CGV-CGU.html\",\n connectionPage: \"connexion.html\",\n deleteLinkPage: \"aurevoir.html?t=\",\n loginLinkPage: \"login.html?t=\",\n managerHomePage: \"gestion.html\",\n newLoginLinkPage: \"newlogin.html?t=\",\n questionnairesManagementPage: \"gestion-quizs.html\",\n stopMailPage: \"stop-mail.html?t=\",\n subscribePage: \"inscription.html\",\n updateAccountPage: \"compte.html\",\n userHomePage: \"accueil.html\",\n userHomePageTxt: \"Ma page d'accueil.\",\n usersManagementPage: \"gestion-utilisateurs.html\",\n validationLinkPage: \"validation.html?t=\",\n\n /* Textes (général) */\n siteSlogan: \"Cultivons notre jardin !\",\n noJSNotification: \"Désolé, mais pour l'instant, l'utilisation de WikiLerni nécessite l'activation du JavaScript.\",\n mailRecipientTxt: \"Message envoyé à :\",\n licenceTxt: \"@copyleft Le contenu de WikiLerni <a href=\\\"/credits.html\\\" title=\\\"En savoir plus ?\\\">est libre</a> et vous est offert sans publicité. Vous pouvez <a href=\\\"/participer-financement.html\\\" title=\\\"Financement participatif avec contre-parties\\\">participer à son financement en cliquant ici</a>.\",\n\n /* Page d'accueil */\n homePageTxt: \"Page d'accueil\",\n homeTitle1: \"De nature curieuse ?\",\n homeP1: \"<b>Avec WikiLerni, vous apprenez régulièrement de nouvelles choses</b>.<br>Vous recevez de courts articles, lisibles en quelques minutes.<br>Des quizs vous permettent ensuite de tester ce que vous avez retenu.<br>De jour en jour <b>de nouvelles graines de culture sont ainsi semées dans votre jardin</b>.\",\n homeTitle2: \"La culture générale en liberté\",\n homeP2: \"<b>Pas de faits alternatifs</b>, tous les contenus sont <b>sourcés par des articles Wikipédia</b>.<br>Et tout comme sur Wikipédia, le logiciel et le contenu publié sur WikiLerni <a href=\\\"/credits.html\\\" title=\\\"En savoir plus sur ce sujet\\\">sont partagés sous licences libres</a>.<br>Le tout sans publicité, ni commercialisation de vos données.<br><b>Sur WikiLerni, vous cultivez votre jardin en toute tranquillité.</b>\",\n homeBtnAboutTxt: \"En savoir plus sur WikiLerni ?\",\n homeBtnSubscribeTxt: \"Testez WikiLerni\",\n homeSubcriptionFormTitle: \"Recevez les prochains articles WikiLerni\",\n\n /* Page dernières publications... */\n newQuestionnairesTitle: \"Culture générale - apprenez de nouvelles choses avec WikiLerni\",\n newQu
/***/ }),
2021-07-05 12:12:51 +02:00
/***/ "../lang sync recursive ^\\.\\/.*\\/general$":
/*!***************************************!*\
!*** ../lang/ sync ^\.\/.*\/general$ ***!
\***************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("var map = {\n\t\"./fr/general\": \"../lang/fr/general.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"../lang sync recursive ^\\\\.\\\\/.*\\\\/general$\";\n\n//# sourceURL=webpack://wikilerni/../lang/_sync_^\\.\\/.*\\/general$?");
2021-07-05 12:12:51 +02:00
/***/ }),
/***/ "../lang sync recursive ^\\.\\/.*\\/user$":
/*!************************************!*\
!*** ../lang/ sync ^\.\/.*\/user$ ***!
\************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("var map = {\n\t\"./fr/user\": \"../lang/fr/user.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"../lang sync recursive ^\\\\.\\\\/.*\\\\/user$\";\n\n//# sourceURL=webpack://wikilerni/../lang/_sync_^\\.\\/.*\\/user$?");
2021-07-05 12:12:51 +02:00
/***/ }),
/***/ "../views sync recursive ^\\.\\/.*\\.js$":
/*!***********************************!*\
!*** ../views/ sync ^\.\/.*\.js$ ***!
\***********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval("var map = {\n\t\"./default/config/fr.js\": \"../views/default/config/fr.js\",\n\t\"./wikilerni/config/fr.js\": \"../views/wikilerni/config/fr.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"../views sync recursive ^\\\\.\\\\/.*\\\\.js$\";\n\n//# sourceURL=webpack://wikilerni/../views/_sync_^\\.\\/.*\\.js$?");
2021-07-05 12:12:51 +02:00
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ !function() {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function() { return module['default']; } :
/******/ function() { return module; };
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ !function() {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = function(exports, definition) {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ !function() {
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ }();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ !function() {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ }();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./src/loginLink.js");
/******/
2021-07-05 12:12:51 +02:00
/******/ })()
;