bien vu, ils sont effectivement orphelin... merci pour le tuyau.
]]>merci pour ta réponse !
Je vais voir ça avec eux.
Bonne journée et le bonjour à tout le monde ! :-)
]]>A priori ça sera la dernière version du code :
function getProperty(courseContentNode , propertyName , type)
{
if(courseContentNode == null && type=="values")
{
return [];
}
if(courseContentNode == null)
{
return null;
}
if(courseContentNode.hasProperty(propertyName))
{
if(type=="string")
{
return courseContentNode.getProperty(propertyName).getString();
}
else if (type=="values")
{
return courseContentNode.getProperty(propertyName).getValues();
}
}
else {
return null;
}
}
function getPropertyString(courseContentNode , propertyName)
{
return getProperty(courseContentNode , propertyName , "string");
}
function getPropertyValues(courseContentNode , propertyName)
{
return getProperty(courseContentNode , propertyName , "values");
}
function getNode(courseContentNode , nodeName)
{
if(courseContentNode == null)
{
return null;
}
if (courseContentNode.hasNode(nodeName))
{
return courseContentNode.getNode(nodeName);
}
else
{
return null;
}
}
function getNodeById(id)
{
if(id == null || id == "")
{
return null;
}
return Repository.resolver.resolveById(id).getNode();
}
let count = 0;
//print('Compteur; Libellé; Code Apogée; Description; Objectifs; Pré requis nécessaires; Contrôle des connaissances; syllabus; compétences visées; Informations complémentaires; Composantes; lieux; Campus; rôle1; contacts1; role2; contacts2; Label; Mots clés; Volume horaire; Effectif; Période de l année; Plage horaire; Méthode d enseignement; Organisation d enseignement; Forme d enseignement; Langues; Date de début des cours ; discipline d enseignement ')
var report = Report.create("Exctraction ODF");
report.addHeader("Compteur","Libellé","Code Apogée","Description","Objectifs","Pré requis nécessaires","Contrôle des connaissances","syllabus","compétences visées","Informations complémentaires","Composantes","lieux","Campus","rôle1","contacts1","role2","contacts2","Label","Mots clés","Volume horaire","Effectif","Période de l année","Plage horaire","Méthode d enseignement","Organisation d enseignement","Forme d enseignement","Langues","Date de début des cours","discipline d enseignement");
Repository.query('//element(*, ametys:courseContent)[ametys:catalog="ue-iibres-2023"]').forEach(function(courseContent) {
count++;
let courseContentNode = courseContent.getNode();
//print(courseContent);
//Haut de page
let libellé= getPropertyString(courseContentNode, "ametys:title");
//print("\n"+libellé);
let codeApogee= getPropertyString(courseContentNode,"ametys:codeApogee");
//print(codeApogee);
//Onglet Presentation
let description = getPropertyString(getNode(courseContentNode,"ametys:description"),"jcr:data");
//print(description);
let objectifs = getPropertyString(getNode(courseContentNode,"ametys:objectives"),"jcr:data");
//print(objectifs);
let prerequis = getPropertyString(getNode(courseContentNode,"ametys:neededPrerequisite"),"jcr:data");
//print(prerequis);
//Onglet +d'infos
let controleConnaissance = getPropertyString(getNode(courseContentNode,"ametys:formOfAssessment"),"jcr:data");
//print(controleConnaissance);
let syllabus = getPropertyString(getNode(courseContentNode,"ametys:syllabus"),"jcr:data");
//print(syllabus);
let competencesVisées = getPropertyString(getNode(courseContentNode,"ametys:skills"),"jcr:data");
//print(competencesVisées);
let infosComplementaires = getPropertyString(getNode(courseContentNode,"ametys:additionalInformations"),"jcr:data");
//print(infosComplementaires);
//Onglet Contacts
let composantesValues = getPropertyValues(courseContentNode,"ametys:orgUnit");
let composantes=[];
for (let i = 0; i < composantesValues.length; i++) {
composantes.push(getPropertyString(getNodeById(composantesValues[i].getString()),"ametys:title"));
}
//print(composantes);
let lieuxValues = getPropertyValues(courseContentNode,"ametys:teachingLocation");
let lieux=[];
for (let i = 0; i < lieuxValues.length; i++) {
lieux.push(getPropertyString(getNode(getNodeById(lieuxValues[i].getString()),"ametys:title"),"ametys:fr"));
}
//print(lieux);
let campusValues = getPropertyValues(courseContentNode,"ametys:campus");
let campus=[];
for (let i = 0; i < campusValues.length; i++) {
campus.push(getPropertyString(getNode(getNodeById(campusValues[i].getString()),"ametys:title"),"ametys:fr"));
}
//print(campus);
//contact et role
let role1=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:role")),"ametys:title"),"ametys:fr");
//print(role2);
let contacts1Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:persons");
let contacts1=[];
for (let i = 0; i < contacts1Values.length; i++) {
contacts1.push(getPropertyString(getNodeById(contacts1Values[i].getString()),"ametys:title"));
}
//print(contacts2);
let role2=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:role")),"ametys:title"),"ametys:fr");
//print(role2);
let contacts2Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:persons");
let contacts2=[];
for (let i = 0; i < contacts2Values.length; i++) {
contacts2.push(getPropertyString(getNodeById(contacts2Values[i].getString()),"ametys:title"));
}
//print(contacts2);
//Onglet en bref
let labelValues = getPropertyValues(courseContentNode,"ametys:labellisation");
let label=[];
for (let i = 0; i < labelValues.length; i++) {
label.push(getPropertyString(getNode(getNodeById(labelValues[i].getString()),"ametys:title"),"ametys:fr"));
}
//print(label);
let motsClésValues= getPropertyValues(courseContentNode,"ametys:keywords");
let motsClés=[];
for (let i = 0; i < motsClésValues.length; i++) {
motsClés.push(motsClésValues[i].getString());
}
//print(motsClés);
let volumeHoraire = getPropertyString(courseContentNode,"ametys:nbHours");
//print(volumeHoraire);
let effectif = getPropertyString(courseContentNode,"ametys:maxNumberOfStudents");
//print(effectif);
let periodeAnnée = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingTerm")),"ametys:title"),"ametys:fr");
//print(periodeAnnée);
let plageHoraire= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:timeSlot")),"ametys:title"),"ametys:fr");
//print(plageHoraire);
let methodeEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:formofteachingMethod")),"ametys:title"),"ametys:fr");
//print(methodeEnseignement);
let organisationEnseignementValues = getPropertyValues(courseContentNode,"ametys:formofteachingOrg");
let organisationEnseignement=[];
for (let i = 0; i < organisationEnseignementValues.length; i++) {
organisationEnseignement.push(getPropertyString(getNode(getNodeById(organisationEnseignementValues[i].getString()),"ametys:title"),"ametys:fr"));
}
//print(organisationEnseignement);
let formeEnseignement= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingActivity")),"ametys:title"),"ametys:fr");
//print(formeEnseignement);
let languesValues = getPropertyValues(courseContentNode,"ametys:teachingLanguage");
let langues=[];
for (let i = 0; i < languesValues.length; i++) {
langues.push(getPropertyString(getNode(getNodeById(languesValues[i].getString()),"ametys:title"),"ametys:fr"));
}
//print(langues);
let dateDebutCours = getPropertyString(courseContentNode,"ametys:startDate");
dateDebutCours = dateDebutCours.substring(0, 10);
//print(dateDebutCours);
//Onglet Pilotage
let disciplineEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:disciplineEnseignement")),"ametys:title"),"ametys:fr");
//print(disciplineEnseignement);
//print(`"${count}";"${libellé}";"${codeApogee}";"${description}";"${objectifs}";"${prerequis}";"${controleConnaissance}";"${syllabus}";"${competencesVisées}";"${infosComplementaires}";"${composantes}";"${lieux}";"${campus}";"${role1}";"${contacts1}";"${role2}";"${contacts2}";"${label}";"${motsClés}";"${volumeHoraire}";"${effectif}";"${periodeAnnée}";"${plageHoraire}";"${methodeEnseignement}";"${organisationEnseignement}";"${formeEnseignement}";"${langues}";"${dateDebutCours}";"${disciplineEnseignement}"`);
//report.addRow(count,libellé,codeApogee,description,objectifs,prerequis,controleConnaissance,syllabus,competencesVisées,infosComplementaires,composantes,lieux,campus,role1,contacts1,role2,contacts2,label,motsClés,volumeHoraire,effectif,periodeAnnée,plageHoraire,methodeEnseignement,organisationEnseignement,formeEnseignement,langues,dateDebutCours);
report.addRow(`${count}`,`${libellé}`,`${codeApogee}`,`${description}`,`${objectifs}`,`${prerequis}`,`${controleConnaissance}`,`${syllabus}`,`${competencesVisées}`,`${infosComplementaires}`,`${composantes}`,`${lieux}`,`${campus}`,`${role1}`,`${contacts1}`,`${role2}`,`${contacts2}`,`${label}`,`${motsClés}`,`${volumeHoraire}`,`${effectif}`,`${periodeAnnée}`,`${plageHoraire}`,`${methodeEnseignement}`,`${organisationEnseignement}`,`${formeEnseignement}`,`${langues}`,`${dateDebutCours}`,`${disciplineEnseignement}`);
});
//print(`${count} results(s)`);
//report.print();
//report.saveAsCSV();
//report.saveAsXLS();
//report.saveAsHTML();
//report.printLink()
// Get the mail of the currently connected user
var useridentityConnected = Ametys.serviceManager.lookup(org.ametys.core.user.CurrentUserProvider.ROLE).getUser();
var userConnected = Ametys.serviceManager.lookup(org.ametys.core.user.UserManager.ROLE).getUser(useridentityConnected);
var mail = userConnected.getEmail();
let fileXLS = report.saveAsXLS();
//let fileCSV = report.saveAsCSV();
//let fileHTML = report.saveAsHTML();
let date = new Date();
let YYYYMMDD = date.getFullYear()+"/"+date.getMonth()+"/"+date.getDate();
//print(date.getDate());
//print(date.getMonth());
//print(date.getFullYear());
//print(file);
Ametys.mail({
"subject" : "Extraction ODF "+YYYYMMDD,
"htmlBody" : "Rapport de l'extraction ODF en pièce jointe",
"toRecipients" : mail,
"attachments" : fileXLS
//"attachments" : [fileXLS, fileCSV, fileHTML]
})
Du coup j'ai une question sur ce passage la (mais je me dit que c'est peut etre pas encore dispo en 4.4.9):
une fois qu'on a fait ce script, on peut l'enregistrer dans le répertoire de requête
Où est ce que je peux trouver ce repertoire ?
Pour le moment j'ai vu qu'à partir du plannificateur de taches je peux faire une nouvelle tache de type "Executer un script" mais je dois y coller mon code dedans, je n'ai pas l'air de pouvoir selectionner des scripts existants (après c'est peut etre une option qui n'apparait qu'une fois que l'on a des scripts sauvegardés existants)
Edit : Petit question de plus : est ce qu'il y a possibilité de deleguer ça à un utilisateur pour qu'il lance le script (pour lui même) ?
]]>Je ne comprends pas comment le système d'indexation sort ces pages ..
]]>ok, le ticket est créé :
Cordialement
]]>Il n'y a en réalité qu'une seule application, c'est la même, quelle que soit le mode d'installation. La version de démonstration est simplement installable sur le poste de travail et contient en outre des données de démonstration.
Cédric Damioli
]]>Oui bien sûr, la version de démo est une version tout à fait complète.
Il faut avoir le plugin odf-sync, je pense que c'est le cas avec la démo.
Par contre il est carrément possible que la doc ne soit pas à jour.
Il faut configurer la base Apogee comme une source de données normale dans l'admin.
Cédric
]]>Bonne journée.
]]>D'autre part, le service regroupe les formations, pas les parcours, donc effectivement, tous les parcours sont rattachés aux formations.
Pour faire ce que vous souhaitez, il faudrait un service "liste des parcours", mais ce point n'existe pas à ce jour. Ou encore on pourrait imaginer faire évoluer le service liste des formations pour ajouter des paramètres sur les parcours ?
Cédric
]]>Xavier
]]>Je vais donc essayer de regarder ça dès jeudi (congés obligent) mais franchement merci à tous les deux (bon, la manipulation que vous proposez s'annonce complexe mais ... on va essayer ...
]]>