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
|
||||
|
||||
@ -363,28 +379,29 @@ exports.searchGroupById = searchGroupById;
|
||||
const checkGroupsNeedToBePublished = async (regenerate=false) =>
|
||||
{
|
||||
const db = require("../models/index");
|
||||
const groups = await db.sequelize.query("SELECT `id`,`slug` FROM `groups` WHERE `publishingAt` < NOW()", { type: QueryTypes.SELECT });
|
||||
let publishedOk=false, nb=0;
|
||||
const groups = await db.sequelize.query("SELECT `id`,`slug` FROM `Groups` WHERE `publishingAt` < NOW()", { type: QueryTypes.SELECT });
|
||||
let nb = 0;
|
||||
for(let i in groups)
|
||||
{
|
||||
if(regenerate === 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)
|
||||
nb++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
publishedOk=await creaGroupHTML(groups[i].id);
|
||||
const publishedOk = await creaGroupHTML(groups[i].id);
|
||||
if(publishedOk)
|
||||
nb++;
|
||||
}
|
||||
}
|
||||
return nb;
|
||||
}
|
||||
exports.checkGroupsNeedToBePublished = checkGroupsNeedToBePublished;
|
||||
|
||||
// Compte le nombre total de groupes et le stocke
|
||||
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
|
||||
// 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) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await checkQuestionnairesNeedToBePublished();
|
||||
const nb=await checkQuestionnairesPublishedHaveHTML(true);
|
||||
await creaNewQuestionnairesJson();// provoque mise à jour du HTLM, RSS, etc.
|
||||
res.messageToNext=txtQuestionnaire.haveBeenRegenerated.replace("#NB1", nb);
|
||||
let 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();
|
||||
}
|
||||
catch(e)
|
||||
@ -375,9 +379,8 @@ exports.deleteJsonFiles= async (req, res, next) =>
|
||||
}
|
||||
}
|
||||
|
||||
// test si des questionnaires doivent être publiés
|
||||
// + si des questionnaires publiés n'ont pas fichier html
|
||||
// si fichier html créé il faut aussi actualiser la page d'accueil & co
|
||||
// Teste si des questionnaires doivent être publiés + si des questionnaires publiés n'ont pas de fichier html
|
||||
// Si au moins un fichier html est créé, il faut aussi actualiser la page d'accueil & co
|
||||
exports.checkQuestionnairesNeedToBePublished= async (req, res, next) =>
|
||||
{
|
||||
try
|
||||
@ -385,7 +388,7 @@ exports.checkQuestionnairesNeedToBePublished= async (req, res, next) =>
|
||||
await checkQuestionnairesNeedToBePublished();
|
||||
const nb=await checkQuestionnairesPublishedHaveHTML();
|
||||
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));
|
||||
next();
|
||||
}
|
||||
@ -665,22 +668,22 @@ const searchQuestionnaireById = async (id, reassemble=false) =>
|
||||
}
|
||||
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
|
||||
// Vérifie si ils sont publiables et si oui change leur statut et réactualise le cache json
|
||||
// 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.
|
||||
const checkQuestionnairesNeedToBePublished = async () =>
|
||||
{
|
||||
const db = require("../models/index");
|
||||
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)
|
||||
{
|
||||
questionnaireDatas=await searchQuestionnaireById(questionnaires[i].id, true);
|
||||
const questionnaireDatas=await searchQuestionnaireById(questionnaires[i].id, true);
|
||||
if(checkQuestionnaireIsPublishable(questionnaireDatas))
|
||||
{
|
||||
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
|
||||
@ -707,7 +710,7 @@ const checkQuestionnairesPublishedHaveHTML = async (regenerate=false) =>
|
||||
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 db = require("../models/index");
|
||||
|
@ -111,8 +111,10 @@ exports.HTMLRegenerate= async (req, res, next) =>
|
||||
{
|
||||
const tagsUsed=await getUsedTags();
|
||||
for(let i in tagsUsed)
|
||||
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) });
|
||||
await creaQuestionnairesTagJson(tagsUsed[i].id);// Provoque la regénération du json + du html.
|
||||
// + Page listant tous les tags actifs :
|
||||
creaUsedTagsHTML(tagsUsed);
|
||||
res.status(200).json({ message: res.messageToNext.replace("#NB3", tagsUsed.length) });
|
||||
res.messageToNext=null;
|
||||
next();
|
||||
}
|
||||
@ -144,7 +146,6 @@ const getAllTags = async () =>
|
||||
}
|
||||
|
||||
// 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 db = require("../models/index");
|
||||
@ -227,7 +228,7 @@ const creaQuestionnairesTagJson = async (id) =>
|
||||
return false;
|
||||
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 });
|
||||
await toolFile.createJSON(configQuestionnaire.dirCacheTags, "liste-"+id, questionnaires);// le supprimer si liste vide ?
|
||||
await toolFile.createJSON(configQuestionnaire.dirCacheTags, "liste-"+id, questionnaires);
|
||||
creaUsedTagsJson();
|
||||
creaQuestionnairesTagHTML(id, questionnaires);// pas await, car potentiellement long !
|
||||
return questionnaires;
|
||||
|
@ -15,7 +15,7 @@ module.exports =
|
||||
},
|
||||
explanationBeforeTxt: "Extrait :",
|
||||
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 ",
|
||||
linkGoToNextElement: "Leçon suivante",
|
||||
linkGoToQuiz: "Accéder au quiz",
|
||||
|
Loading…
Reference in New Issue
Block a user