Skip to content

MelisSmallBusiness

Fonctionnalités de collaboration en back-office pour le CMS — versionnage de pages, workflow de validation, commentaires de page, verrouillage de page, rôles utilisateurs et une médiathèque TinyMCE. Package melisplatform/melis-small-business.

Présentation

MelisSmallBusiness ajoute des outils de collaboration pour petites équipes / petites entreprises par-dessus l'éditeur de pages du CMS. Il conserve des versions des pages publiées (pour pouvoir restaurer ou prévisualiser un état antérieur), pilote un workflow de contenu où un éditeur demande une validation et un relecteur valide ou refuse, attache des commentaires aux pages, empêche deux utilisateurs d'éditer la même page simultanément via un verrou de page, gère un outil de rôles utilisateurs dédié et fournit une médiathèque basée sur TinyMCE (MoxieManager) pour parcourir et téléverser des fichiers. L'essentiel de son comportement est câblé via les événements de l'éditeur CMS (voir Modules).

Activation

C'est un module Laminas standard. Ajoutez-le à config/melis.module.load.php :

php
return [
    // …
    'MelisSmallBusiness',
];

Il dépend de melis-core, melis-engine, melis-front et melis-cms (voir composer.json), et ses tables sont créées via dbdeploy (extra.dbdeploy = true). Le Module::init() attache MelisSBAddModuleConfigListener puis, sur les routes back-office, un ensemble de listeners de l'éditeur CMS (sauvegarde de versionnage, verrou de page, workflow, arbre des droits, config TinyMCE…).

Services principaux

Alias de serviceRôle
MelisEnginePageLe module surcharge le service de page du moteur par MelisSBPageService. Lorsque la route est la route de prévisualisation de version (…/id/{idpage}/preview/idversion/{idversion}), il retourne l'arbre de page versionné depuis melis_sb_page_versioning ; sinon il se comporte exactement comme le parent.
MelisSBPageCommentServiceCommentaires de page : getPageComments() (enrichit avec l'utilisateur + la date formatée), setPageComments() (enregistre avec l'utilisateur courant comme auteur).

Les passerelles de tables sont aussi enregistrées comme services : MelisPageComment, MelisPageCommentType, MelisPageLockTable, MelisPageVersioningTable, MelisUserRole, MelisWorkflowTable, MelisWorkflowEventsTable.

WARNING

En aliasant MelisEnginePage vers sa propre classe, ce module remplace le service de page du cœur pour toute l'application tant qu'il est activé. À garder en tête dans l'ordre des modules.

Back-office

Les outils et interfaces sont déclarés dans config/app.tools.php et config/app.interface.php (les contrôleurs sont de simples invokables sous MelisSmallBusiness\Controller\…).

Outil / onglet (melisKey)Contrôleur / actionRôle
melissb_tool_userroleToolUserRole::render-tool-user-role (données : getRolesData)Outil rôles utilisateurs sous Admin dans l'arbre des outils ; CRUD sur les rôles, plus un champ MelisUserRoleSelect injecté dans le formulaire utilisateur du cœur.
melissb_page_versioningPageVersioning::render-page-versioningOnglet Versionnage de l'éditeur de page — liste des versions archivées avec actions éditer / sauvegarder / visualiser (aperçu).
melissb_page_commentsPageComments::render-page-commentsOnglet Commentaires de l'éditeur de page (ajout + fil chronologique).
melissb_medialibMediaLibrary::renderPageMediaLibraryOutil médiathèque (TinyMCE MoxieManager) pour parcourir / téléverser des fichiers.
melissb_workflow_modal_contentMelisWorkflow::render-workflow-modal-contentModale workflow : demander une validation, valider, refuser et consulter l'historique.

Le workflow envoie trois e-mails back-office (définis dans app.emails.php) via le service d'e-mail BO de MelisCore :

Code e-mailDéclencheurBalises disponibles
WF_DEMANDUne demande de validation est soumiseUSER_TO, USER_FROM, TYPE, DETAILS
WF_VALIDATEDUn approbateur valide une demandeidem
WF_REFUSEDUn approbateur refuse une demandeidem

Le module ajoute aussi un élément de formulaire MelisMediaUpload (melis-media-upload) avec sa factory, son view helper et MelisMediaUploadValidator.

Le verrouillage de page n'a pas d'outil dédié : il est appliqué par des listeners (MelisSBPageLockListener, …TreeListener, …InfoListener, …PageActionButtonsAndTabsListener, …LogoutListener) qui marquent une page comme verrouillée dans melis_sb_page_locked pendant qu'un utilisateur l'édite.

Front office

TypeNomRôle
Plugin de dashboardMelisSBWorkflowPluginWidget du dashboard back-office (action workflow) listant les demandes de workflow en attente / l'activité récente. Déclaré sous meliscore_dashboard (melissb_dashboard_workflow) ; voir Plugins.

Il existe aussi un petit asset front-office (front.pagelock.js) enregistré sous melisfront, mais le module n'a aucun plugin de templating front-office — sa surface est le back-office.

Tables de base de données

Créées par install/dbdeploy/126618_melis_sb_install.sql (repris dans install/sql/setup_structure.sql).

TableRôle
melis_sb_page_versioningCopies archivées des pages publiées (page_v_version_number, page_v_version_name, page_content, page_edit_date, …).
melis_sb_workflowEnregistrements de workflow par page.
melis_sb_workflow_eventsÉvénements de workflow (demande / validation / refus).
melis_sb_page_commentCommentaires attachés à une page.
melis_sb_page_comment_typeTypes de commentaires (PAGE, WORKFLOW).
melis_sb_page_lockedVerrous de page actifs (quel utilisateur édite quelle page).
melis_core_user_roleRôles nommés (urole_id, urole_name, urole_creation_date, urole_rights) — droits stockés en XML, comme l'enregistrement de droits propre à un utilisateur.

Exemple

Lire et ajouter un commentaire de page via le service public :

php
$commentService = $serviceManager->get('MelisSBPageCommentService');

// lister les commentaires de la page 42
$comments = $commentService->getPageComments(42);

// ajouter un commentaire de type PAGE (commentType 1 = PAGE, 2 = WORKFLOW)
$commentService->setPageComments(
    ['pcom_page_id' => 42, 'pcom_comment' => 'Prêt à publier.'],
    1
);

Fichiers clés

ÉlémentChemin
Bootstrap du module & listenersvendor/melisplatform/melis-small-business/src/Module.php
Routage, services, contrôleursvendor/melisplatform/melis-small-business/config/module.config.php
Outils (rôles, versionnage)vendor/melisplatform/melis-small-business/config/app.tools.php
Arbre d'interface back-officevendor/melisplatform/melis-small-business/config/app.interface.php
Définitions des e-mails workflowvendor/melisplatform/melis-small-business/config/app.emails.php
Service de page (surcharge moteur)vendor/melisplatform/melis-small-business/src/Service/MelisSBPageService.php
Service de commentairesvendor/melisplatform/melis-small-business/src/Service/MelisSBPageCommentService.php
Contrôleurs workflow / versionnage / verrouvendor/melisplatform/melis-small-business/src/Controller/
Plugin de dashboardvendor/melisplatform/melis-small-business/src/Controller/DashboardPlugins/MelisSBWorkflowPlugin.php
Listeners de l'éditeur CMSvendor/melisplatform/melis-small-business/src/Listener/
SQL d'installationvendor/melisplatform/melis-small-business/install/dbdeploy/126618_melis_sb_install.sql