Skip to content

MelisSmallBusiness

Fonctionnalités de collaboration en backoffice 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.

Objectif

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 backoffice, un ensemble de listeners de l'éditeur CMS (sauvegarde de versionnage, verrou de page, workflow, arbre des droits, config TinyMCE…).

Services clés

Alias de serviceRôle
MelisEnginePageLe module surcharge le service de page du moteur par MelisSBPageService (étend MelisPageService). Sa méthode getDatasPage($idPage, $type = 'published') permet à l'éditeur de lire les données de page depuis le stockage de versionnage comme depuis la page en ligne.
MelisSBPageCommentServiceCommentaires de page : getPageComments($idPage, $newsId, $blogId), setPageComments(array $data, $commentType = 1), getPageCommentForm().

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.

Backoffice

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 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 backoffice (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 backoffice.

Tables en 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).

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

SujetChemin
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 backofficevendor/melisplatform/melis-small-business/config/app.interface.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/
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