-
Licence : AGPLv3
-
Développeur(s) : Edifice
-
Financeur(s) :
- Edifice
- Contributions de la Région Hauts-de-France, du Département de l'Essonne, de la Région Nouvelle-Aquitaine et du Département de la Seine-et-Marne
-
Description : cette appplication permet de créer et diffuser des actualités, organisées en fils d'actualités. Un widget permet de visualiser les dernières actualités publiées depuis le fil de nouveauté de la solution.
gradle copyMod
Dans le fichier /actualites/deployment/actualites/conf.json.template :
Déclarer l'application dans la liste :
{
"name": "net.atos~actualites~0.4-SNAPSHOT",
"config": {
"main" : "net.atos.entng.actualites.Actualites",
"port" : 8022,
"sql" : true,
"mongodb" : true,
"neo4j" : false,
"app-name" : "Actualites",
"app-address" : "/actualites",
"app-icon" : "actualites-large",
"host": "${host}",
"ssl" : $ssl,
"auto-redeploy": false,
"userbook-host": "${host}",
"integration-mode" : "HTTP",
"app-registry.port" : 8012,
"mode" : "${mode}",
"entcore.port" : 8009
}
}
Associer une route d'entée à la configuration du module proxy intégré ("name": "net.atos~actualites~0.4-SNAPSHOT") :
{
"location": "/actualites",
"proxy_pass": "http://localhost:8022"
}
Déclarer l'application dans la liste des widgets :
{
"name": "actualites",
"path": "/actualites/public/template/last-infos-widget.html",
"js": "/actualites/public/js/last-infos-widget.js",
"i18n": "/actualites/i18n"
}
Actualités est une application de création, de publication et de consultation d'actualités. Les actualités sont organisées en fils d'actualités (ou Catégories). Les actualités sont soumises à un workflow simple de publication. Elles ont donc un état ("Brouillon", "En attende de validation", "Publiée") qui conditionne leur visibilité finale dans le fil. Des dates de publication et d'expiration peuvent de plus être définies. Des permissions sur les différentes actions possibles sur les fils d'actualités, dont la publication, sont configurées dans ces fils (via des partages Ent-core). Le droit de lecture/commentaire, correspondant à qui peut consulter/commenter les actualités est également configuré de cette manière. Les actualités mettent en œuvre un comportement de recherche sur le titre et le contenu de celles-ci.
Les données du module sont stockées dans une base PostgreSQL, dans le schéma actualites.
Les scripts sql se trouvent dans le dossier "src/main/resources/sql".
3 tables représentent le modèle relationnel applicatif :
thread: Fil d'actualitésinfo: Actualitécomment: Commentaire d'actulités
Une info appartient à un thread et un thread peut avoir plusieurs objects info.
Un comment appartient à une info et une info peut avoir plusieurs objects comment.
Les tables thread et info sont liées à des tables de partage pour implémenter le fonctionnement du framework Ent-core
thread_sharesinfo_shares
Le module serveur utilise 4 contrôleurs de déclaration :
DisplayController: Point d'entrée à l'applicationThreadController: Routage des vues, sécurité globale et déclaration des APIs de manipulation des fils d'actualités (Thread)InfoController: Routage des vues, sécurité globale et déclaration des APIs de manipulation des actualités (Info)CommentController: Routage des vues, sécurité globale et déclaration des APIs de manipulation des commentaires (Comment) Et 2 filters :ThreadFilter: sécurité d'accès aux Fils d'actualités (Thread)InfoFilter: sécurité d'accès aux actualités (Info)
Les contrôleurs étendent les classes du framework Ent-core exploitant les CrudServices de base. Pour manipulations spécifiques, des classes de Service sont utilisées :
ThreadService: concernant les fils d'actualitésInfoService: concernant les Actualités
Le module serveur met en œuvre deux évènements issus du framework Ent-core :
ActualitesRepositoryEvents: Logique de changement d'année scolaireActualitesSearchingEvents: Logique de recherche
Des jsonschemas permettent de vérifier les données reçues par le serveur, ils se trouvent dans le dossier "src/main/resources/jsonschema".
Le modèle Front-end manipule 2 objets model :
Threadcorrespondant à un fil d'actualités.Infocorrespondant à une Actualité. Comprenant un champstatusreprésentant l'état de publication.
Il y a 2 Collections globales :
model.threads: objetsThreadsynchronisée depuis le serveur.model.infos: objetsInfosynchronisée depuis le serveur.