Revue de l'appel aux contrôleurs permettant de regénérer les pages HTML pour prise en compte des nouvelles pages (groupes, liste tags).
This commit is contained in:
parent
6ffbdf49be
commit
87869b87f3
@ -204,6 +204,22 @@ exports.getStats = async(req, res, next) =>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// (Re)génère tous les fichiers HTML des groupes
|
||||||
|
// La requête est ensuite passé aux tags qui font la même chose
|
||||||
|
exports.HTMLRegenerate= async (req, res, next) =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const nb=await checkGroupsNeedToBePublished(true);
|
||||||
|
res.messageToNext=txtGroups.haveBeenPublished.replace("#NB", nb);
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
catch(e)
|
||||||
|
{
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// CRONS
|
// CRONS
|
||||||
|
|
||||||
@ -363,28 +379,29 @@ exports.searchGroupById = searchGroupById;
|
|||||||
const checkGroupsNeedToBePublished = async (regenerate=false) =>
|
const checkGroupsNeedToBePublished = async (regenerate=false) =>
|
||||||
{
|
{
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
const groups = await db.sequelize.query("SELECT `id`,`slug` FROM `groups` WHERE `publishingAt` < NOW()", { type: QueryTypes.SELECT });
|
const groups = await db.sequelize.query("SELECT `id`,`slug` FROM `Groups` WHERE `publishingAt` < NOW()", { type: QueryTypes.SELECT });
|
||||||
let publishedOk=false, nb=0;
|
let nb = 0;
|
||||||
for(let i in groups)
|
for(let i in groups)
|
||||||
{
|
{
|
||||||
if(regenerate===false)
|
if(regenerate === false)
|
||||||
{
|
{
|
||||||
if(await toolFile.checkIfFileExist(configQuestionnaires.dirHTMLGroups, group.Group.slug+".html")===false)
|
if(await toolFile.checkIfFileExist(configQuestionnaires.dirHTMLGroups, group.Group.slug+".html") === false)
|
||||||
{
|
{
|
||||||
publishedOk=await creaGroupHTML(groups[i].id);// creaGroupHTLM contrôle que le groupe est publiable
|
const publishedOk=await creaGroupHTML(groups[i].id);// creaGroupHTLM contrôle que le groupe est publiable.
|
||||||
if(publishedOk)
|
if(publishedOk)
|
||||||
nb++;
|
nb++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
publishedOk=await creaGroupHTML(groups[i].id);
|
const publishedOk = await creaGroupHTML(groups[i].id);
|
||||||
if(publishedOk)
|
if(publishedOk)
|
||||||
nb++;
|
nb++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nb;
|
return nb;
|
||||||
}
|
}
|
||||||
|
exports.checkGroupsNeedToBePublished = checkGroupsNeedToBePublished;
|
||||||
|
|
||||||
// Compte le nombre total de groupes et le stocke
|
// Compte le nombre total de groupes et le stocke
|
||||||
const creaStatsGroupsJson = async () =>
|
const creaStatsGroupsJson = async () =>
|
||||||
|
@ -335,15 +335,19 @@ exports.getListNextQuestionnaires = async(req, res, next) =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test si des questionnaires doivent être publiés puis (re)génère tous les fichiers HTML des questionnaires + les pages accueil + news
|
// Test si des questionnaires doivent être publiés puis (re)génère tous les fichiers HTML des questionnaires + les pages accueil + news
|
||||||
// La requête est ensuite passé aux tags qui font la même chose
|
// La requête est ensuite passé aux groupes, puis aux tags qui font la même chose
|
||||||
exports.HTMLRegenerate= async (req, res, next) =>
|
exports.HTMLRegenerate= async (req, res, next) =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await checkQuestionnairesNeedToBePublished();
|
await checkQuestionnairesNeedToBePublished();
|
||||||
const nb=await checkQuestionnairesPublishedHaveHTML(true);
|
const nb=await checkQuestionnairesPublishedHaveHTML(true);
|
||||||
await creaNewQuestionnairesJson();// provoque mise à jour du HTLM, RSS, etc.
|
let messageToNext=txtQuestionnaire.haveBeenRegenerated.replace("#NB1", nb);
|
||||||
res.messageToNext=txtQuestionnaire.haveBeenRegenerated.replace("#NB1", nb);
|
creaNewQuestionnairesJson();// Provoque mise à jour du HTLM, etc.
|
||||||
|
// Les groupes sont aussi à regénérés :
|
||||||
|
const nbGroups=await groupCtrl.checkGroupsNeedToBePublished(true);
|
||||||
|
messageToNext=messageToNext.replace("#NB2", nbGroups);
|
||||||
|
res.messageToNext=messageToNext;// Adapter par le middleware suivant.
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
catch(e)
|
catch(e)
|
||||||
@ -375,9 +379,8 @@ exports.deleteJsonFiles= async (req, res, next) =>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// test si des questionnaires doivent être publiés
|
// Teste si des questionnaires doivent être publiés + si des questionnaires publiés n'ont pas de fichier html
|
||||||
// + si des questionnaires publiés n'ont pas fichier html
|
// Si au moins un fichier html est créé, il faut aussi actualiser la page d'accueil & co
|
||||||
// si fichier html créé il faut aussi actualiser la page d'accueil & co
|
|
||||||
exports.checkQuestionnairesNeedToBePublished= async (req, res, next) =>
|
exports.checkQuestionnairesNeedToBePublished= async (req, res, next) =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -385,7 +388,7 @@ exports.checkQuestionnairesNeedToBePublished= async (req, res, next) =>
|
|||||||
await checkQuestionnairesNeedToBePublished();
|
await checkQuestionnairesNeedToBePublished();
|
||||||
const nb=await checkQuestionnairesPublishedHaveHTML();
|
const nb=await checkQuestionnairesPublishedHaveHTML();
|
||||||
if(nb > 0)
|
if(nb > 0)
|
||||||
creaNewQuestionnairesJson();// provoque mise à jour du HTLM, RSS, etc.
|
creaNewQuestionnairesJson();// Provoque mise à jour du HTLM, etc.
|
||||||
res.status(200).json(txtQuestionnaire.haveBeenPublished.replace(":NB", nb));
|
res.status(200).json(txtQuestionnaire.haveBeenPublished.replace(":NB", nb));
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
@ -517,7 +520,7 @@ const checkQuestionnaireIsPublishable = (datas, checkDate=true) =>
|
|||||||
{
|
{
|
||||||
if(checkDate)
|
if(checkDate)
|
||||||
{
|
{
|
||||||
if(datas.Questionnaire.publishingAt===null)
|
if(datas.Questionnaire.publishingAt === null)
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -665,22 +668,22 @@ const searchQuestionnaireById = async (id, reassemble=false) =>
|
|||||||
}
|
}
|
||||||
exports.searchQuestionnaireById = searchQuestionnaireById;
|
exports.searchQuestionnaireById = searchQuestionnaireById;
|
||||||
|
|
||||||
// Cherche si il y a des questionnaires dont la date de publication est passée mais qui ne sont pas notés comme publiés
|
// Cherche si il y a des questionnaires dont la date de publication est passée mais qui ne sont pas notés comme publiés.
|
||||||
// Vérifie si ils sont publiables et si oui change leur statut et réactualise le cache json
|
// Vérifie si ils sont publiables et si oui change leur statut et réactualise le cache json.
|
||||||
const checkQuestionnairesNeedToBePublished = async () =>
|
const checkQuestionnairesNeedToBePublished = async () =>
|
||||||
{
|
{
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
const questionnaires= await db.sequelize.query("SELECT `id` FROM `Questionnaires` WHERE `publishingAt` < NOW() AND `isPublished` = false", { type: QueryTypes.SELECT });
|
const questionnaires=await db.sequelize.query("SELECT `id` FROM `Questionnaires` WHERE `publishingAt` < NOW() AND `isPublished` = false", { type: QueryTypes.SELECT });
|
||||||
let questionnaireDatas;
|
|
||||||
for(let i in questionnaires)
|
for(let i in questionnaires)
|
||||||
{
|
{
|
||||||
questionnaireDatas=await searchQuestionnaireById(questionnaires[i].id, true);
|
const questionnaireDatas=await searchQuestionnaireById(questionnaires[i].id, true);
|
||||||
if(checkQuestionnaireIsPublishable(questionnaireDatas))
|
if(checkQuestionnaireIsPublishable(questionnaireDatas))
|
||||||
{
|
{
|
||||||
await db["Questionnaire"].update({ isPublished:true }, { where: { id : questionnaires[i].id } , fields: ["isPublished"], limit:1 });
|
await db["Questionnaire"].update({ isPublished:true }, { where: { id : questionnaires[i].id } , fields: ["isPublished"], limit:1 });
|
||||||
creaQuestionnaireJson(questionnaires[i].id);// provoque normalement la création du HTML
|
creaQuestionnaireJson(questionnaires[i].id);// Provoque la création du HTML.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contrôle si tous les fichiers devant être publiés ont bien leur fichier HTML, sinon le génère
|
// Contrôle si tous les fichiers devant être publiés ont bien leur fichier HTML, sinon le génère
|
||||||
@ -698,7 +701,7 @@ const checkQuestionnairesPublishedHaveHTML = async (regenerate=false) =>
|
|||||||
await creaQuestionnaireHTML(questionnaires[i].id);
|
await creaQuestionnaireHTML(questionnaires[i].id);
|
||||||
nb++;
|
nb++;
|
||||||
}
|
}
|
||||||
else if(await toolFile.checkIfFileExist(config.dirHTMLQuestionnaires, questionnaires[i].slug+".html")===false)
|
else if(await toolFile.checkIfFileExist(config.dirHTMLQuestionnaires, questionnaires[i].slug+".html") === false)
|
||||||
{
|
{
|
||||||
await creaQuestionnaireHTML(questionnaires[i].id);
|
await creaQuestionnaireHTML(questionnaires[i].id);
|
||||||
nb++;
|
nb++;
|
||||||
@ -707,7 +710,7 @@ const checkQuestionnairesPublishedHaveHTML = async (regenerate=false) =>
|
|||||||
return nb;
|
return nb;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Liste des derniers questionnaires publiés (utile pour page d'accueil, flux rss, etc.)
|
// Liste des derniers questionnaires publiés (utile pour page d'accueil, etc.)
|
||||||
const creaNewQuestionnairesJson = async () =>
|
const creaNewQuestionnairesJson = async () =>
|
||||||
{
|
{
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
|
@ -111,8 +111,10 @@ exports.HTMLRegenerate= async (req, res, next) =>
|
|||||||
{
|
{
|
||||||
const tagsUsed=await getUsedTags();
|
const tagsUsed=await getUsedTags();
|
||||||
for(let i in tagsUsed)
|
for(let i in tagsUsed)
|
||||||
await creaQuestionnairesTagJson(tagsUsed[i].id);// provoque la regénération du json + du html
|
await creaQuestionnairesTagJson(tagsUsed[i].id);// Provoque la regénération du json + du html.
|
||||||
res.status(200).json({ message: res.messageToNext.replace("#NB2", tagsUsed.length) });
|
// + Page listant tous les tags actifs :
|
||||||
|
creaUsedTagsHTML(tagsUsed);
|
||||||
|
res.status(200).json({ message: res.messageToNext.replace("#NB3", tagsUsed.length) });
|
||||||
res.messageToNext=null;
|
res.messageToNext=null;
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
@ -144,7 +146,6 @@ const getAllTags = async () =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Créer la liste de tous tags utilisés pour classer au moins un quiz publié
|
// Créer la liste de tous tags utilisés pour classer au moins un quiz publié
|
||||||
/// Ajouter l'actualisation de la page "parcourir" du site
|
|
||||||
const creaUsedTagsJson = async () =>
|
const creaUsedTagsJson = async () =>
|
||||||
{
|
{
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
@ -227,7 +228,7 @@ const creaQuestionnairesTagJson = async (id) =>
|
|||||||
return false;
|
return false;
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
const questionnaires = await db.sequelize.query("SELECT id FROM `Questionnaires` INNER JOIN `QuestionnaireClassifications` ON `Questionnaires`.`id`=`QuestionnaireClassifications`.`QuestionnaireId` AND `Questionnaires`.`isPublished`=1 AND `QuestionnaireClassifications`.`TagId`=:id ORDER BY "+config.fieldNewQuestionnaires+" DESC", { replacements: { id: id }, type: QueryTypes.SELECT , model: db["Questionnaire"], mapToModel: true });
|
const questionnaires = await db.sequelize.query("SELECT id FROM `Questionnaires` INNER JOIN `QuestionnaireClassifications` ON `Questionnaires`.`id`=`QuestionnaireClassifications`.`QuestionnaireId` AND `Questionnaires`.`isPublished`=1 AND `QuestionnaireClassifications`.`TagId`=:id ORDER BY "+config.fieldNewQuestionnaires+" DESC", { replacements: { id: id }, type: QueryTypes.SELECT , model: db["Questionnaire"], mapToModel: true });
|
||||||
await toolFile.createJSON(configQuestionnaire.dirCacheTags, "liste-"+id, questionnaires);// le supprimer si liste vide ?
|
await toolFile.createJSON(configQuestionnaire.dirCacheTags, "liste-"+id, questionnaires);
|
||||||
creaUsedTagsJson();
|
creaUsedTagsJson();
|
||||||
creaQuestionnairesTagHTML(id, questionnaires);// pas await, car potentiellement long !
|
creaQuestionnairesTagHTML(id, questionnaires);// pas await, car potentiellement long !
|
||||||
return questionnaires;
|
return questionnaires;
|
||||||
|
@ -15,7 +15,7 @@ module.exports =
|
|||||||
},
|
},
|
||||||
explanationBeforeTxt: "Extrait :",
|
explanationBeforeTxt: "Extrait :",
|
||||||
haveBeenPublished : ":NB nouveaux questionnaires ont été publiés.",
|
haveBeenPublished : ":NB nouveaux questionnaires ont été publiés.",
|
||||||
haveBeenRegenerated : "Les fichiers HTML de #NB1 questionnaires et #NB2 rubriques ont été regénérés.",
|
haveBeenRegenerated : "Les pages HTML de #NB1 questionnaires ou éléments de groupes, #NB2 quizs groupés et #NB3 thèmes ont été regénérés.",
|
||||||
lastUpdated: "Dernière mise à jour, le ",
|
lastUpdated: "Dernière mise à jour, le ",
|
||||||
linkGoToNextElement: "Leçon suivante",
|
linkGoToNextElement: "Leçon suivante",
|
||||||
linkGoToQuiz: "Accéder au quiz",
|
linkGoToQuiz: "Accéder au quiz",
|
||||||
|
Loading…
Reference in New Issue
Block a user