TP n°5 Création de nouveaux types de contenu et menus dans un module Drupal

Drupal 8

TP n°5 Création de nouveaux types de contenu et menus dans un module Drupal

Soumis par Antoine le lun 30/03/2020 - 14:55

Dans ce tp, nous allons créer un module qui permet de gérer une bibliothèque. Pour cela nous allons apprendre à créer des types de contenu lors de l'installation d'un module, gérer des rôles et des droits, et créer des liens de menu. Pour réaliser ce module, vous devez avoir réalisé les autres tp.

Objectifs pédagogiques :

A la fin de ce tp, vous devez être capable de :

  • Créer des types de contenu et des vues sur une installation de Drupal
  • Placer les fichiers de configuration de ces types de contenu et vues dans le dossier config/install
  • Générer des exemples de ces types de contenu lors de l'installation du module
  • Créer des liens de menu dans un menu
  • Créer un sous menu avec des onglets (localtask) et un bouton d'action (localaction)
  • Prévoir une désinstallation propre du module

Missions :

    Le but de ce tp est de créer un module qui permet à une personne de gérer sa bibliothèque. Le module doit permettre la gestion de deux types de contenu :

    • Livres avec les champs titre, description, couverture, identifiant de l’auteur (référence à un contenu, 1 seul auteur par livre), et une étiquette thème (1 seule possible).
    • Auteurs avec les champs nom complet, photo, biographie et date de naissance

    Le module doit créer un rôle bibliothécaire et les droits de création / modification / suppression des livres et des auteurs. Un bibliothécaire doit pouvoir modifier ou supprimer tous les livres et pas seulement les siens.

    Le module propose 4 pages : La page d'accueil qui liste tous les livres, la page "Tous les auteurs", La page d'un auteur, et la page d'un livre.

    La page accueil

    La page d’accueil (différente de la page d’accueil du site) liste les livres dans un tableau qui contient les colonnes :

    • nom livre (qui pointe vers la page d'un livre)
    • nom auteur (qui pointe vers la page d'un auteur)
    • une colonne action qui contient un bouton déroulant modifier et supprimer (uniquement pour ceux qui ont les droits de modification et de suppression des livres)

    Au dessus du tableau, il doit avoir un bouton qui pointe vers la page de création d'un livre (uniquement pour les utilisateurs qui ont le droit de création de livre)

    tp5_book

    La page Tous les auteurs

    Cette page est identique à la page d'accueil à la différence que le tableau comprend que 2 colonnes

    • nom de l'auteur
    • la colonne action avec les boutons déroulant

    La page livre

    La page livre affiche toutes les informations du livre (Il s'agit de l'affichage d'un nœud. Vous n'avez donc pas à coder cette page)

    La page auteur

    Une page auteur, contient les informations de l'auteur ainsi que la couverture et le titre de tous les livres qu'il a écrit. Pour permettre à l'utilisateur de garder la main sur ce qu'il sera affiché vous devrez afficher le nœud auteur et une vue qui liste les livres de cet auteur.

    tp5

    Navigation

    La page d’accueil sera accessible depuis un lien ajouté dans le menu principal (uniquement pour les utilisateurs qui ont la permission "access content").

    Sur les pages "Accueil et "Tous les auteurs", il y aura un "local task" qui permet d'accéder à ces pages.

    tp5 avec menu

    Vous trouverez ci-dessous une vidéo de présentation de la mission :

    Les étapes

    Actions à mener Ressources utiles
    1 Créer un squelette de module avec un contrôleur et un fichier install Créer le squelette du module avec un contrôleur
    Permettre au module de créer des types de contenu, des contenus,un role et des permissions lors de l'installation
    2 Créer les types de contenu livre et auteur, ainsi que la taxonomie dans l'interface graphique  
    3 Toujours dans l'interface graphique créer le rôle et donnez lui les permissions   
    4 Toujours dans l'interface graphique créer la vue qui permet d'afficher les livres avec un filtre contextuel sur le champ auteur des livres  
    5 Exporter les fichiers de config des types de contenus, de la taxonomie, de la vue, et du rôle dans module à l'aide de drupal config.  "Créer un type de contenu à l'installation d'un module" et "Gérer les rôles et les droits relatifs aux entités lors de l'installation d'un module"
    6 Modifier les fichiers de config pour enlever la double extension yml et rajouter la dependency enforced envers le module.  
    7 Dans le fichier install, créer les termes de la taxonomie, un exemple d'auteur et de livre.  Créer des entités
    8 Prévoir la désinstallation du module (suppression du rôle, des types de contenus et de la taxonomie).  . "Créer un type de contenu à l'installation d'un module"
    Affichage du contenu
    9 Créer la route, la méthode du contrôleur, le gabarit pour afficher la page home. "Gérer les routes d'un module vers un contrôleur" "Attacher un gabarit à une route"
    10 Créer la route et le gabarit pour afficher tous les auteurs.  
    11 Créer la route et le gabarit pour afficher un auteur. La route doit comprendre un argument id_auteur.  
    12 Ajouter le lien de menu dans le menu principal. "Créer un lien de menu non éditable"
    13 Activer le module et faire du débuggage en désinstallant et réinstallant le module plusieurs fois. (utiliser les commandes "drush en nom_module" et "drush pm:uninstall nom_module").  
    14 Créer deux utilisateurs : un qui a le rôle "bibliothécaire" et un autre qui est juste "utilisateur authentifié" pour vérifier si vos droits fonctionnent bien.  
    15 Chercher les routes qui permettent d'arriver sur les formulaires de création, modification et suppression d'un nœud. (fin article "créer des local actions")
    16 Dans la méthode de la page "home" récupérer les livres et générer le render array du tableau en y imbriquant les bouton déroulant drop bouton. "créer une table dans un contrôleur", "créer un lien dans un contrôleur" et doc du dropbutton
    17 Dans la méthode qui affiche tous les auteurs récupérer les auteurs et générer le render array du tableau en y imbriquant les bouton sdéroulant drop bouton.  
    18 Dans la méthode qui affiche un auteur, afficher le nœud et la vue à partir de l'argument id_auteur.  "Afficher un nœud", "Afficher une vue"
    19 Rajouter les "local tasks". "Créer des local tasks"
    20 Créer les routes vers les pages de créations des livres et des auteurs. "Créer des local actions"
    21 Rajouter les "local actions" qui permet de créer un livre et un auteur.  

    Améliorations possibles 

    Rajouter sur toutes les pages, les "local tasks" en définissant un id_livre et un id_auteur par défaut pour les pages livre et auteur. Pour cela, il faut rendre les local tasks dynamiques.

     

    Documents utiles
    Version