Custom modules for Pleiade local gov dashboard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
pleiade-custom-modules/guide_utilisateur_pleiade/guide_utilisateur_pleiade.i...

235 lines
7.7 KiB

<?php
function guide_utilisateur_pleiade_install()
{
$existing_type = \Drupal\node\Entity\NodeType::load('guide_utilisateur');
if (!$existing_type) {
// Le type de contenu n'existe pas, le créer.
$news_type = \Drupal\node\Entity\NodeType::create([
'type' => 'guide_utilisateur',
'name' => 'Guide utilisateur',
'description' => 'liste des guides utilisateurs.',
'display_submitted' => TRUE,
'preview_mode' => 'default',
'help' => '',
]);
$news_type->save();
// Ajouter un champ 'description'.
$field_categorie_du_guide = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_categorie_du_guide',
'entity_type' => 'node',
'type' => 'list_string',
'settings' => [
'allowed_values' => [
'e_administration' => 'E-ADMINISTRATION',
'logiciels_metiers' => 'LOGICIELS METIERS',
'confiance_numerique' => 'CONFIANCE NUMERIQUE',
'ecole_numerique' => 'ECOLE NUMERIQUE',
],
],
]);
$field_categorie_du_guide->save();
$field_categorie_du_guide_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_categorie_du_guide,
'bundle' => 'guide_utilisateur',
'label' => 'Catégorie du guide',
'required' => TRUE,
// Spécifier le format de texte complet HTML.
'settings' => [
'text_processing' => 0,
],
]);
$field_categorie_du_guide_instance->save();
$body = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'body',
'entity_type' => 'node',
'type' => 'text_with_summary', // Utiliser le type 'list_string' pour une liste de chaînes.
]);
$body->save();
$body_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $body,
'bundle' => 'guide_utilisateur',
'label' => 'Description',
'required' => FALSE,
]);
$body_instance->save();
$field_image_du_guide = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_image_du_guide',
'entity_type' => 'node',
'type' => 'image',
]);
$field_image_du_guide->save();
$field_image_du_guide_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_image_du_guide,
'bundle' => 'guide_utilisateur',
'label' => 'Image du guide',
'required' => FALSE,
]);
$field_image_du_guide_instance->save();
$field_nom_editeur = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_nom_editeur',
'entity_type' => 'node',
'type' => 'string',
]);
$field_nom_editeur->save();
$field_nom_editeur_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_nom_editeur,
'bundle' => 'guide_utilisateur',
'label' => "Nom de l'éditeur",
'required' => FALSE,
]);
$field_nom_editeur_instance->save();
$field_pdf_du_guide = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_pdf_du_guide',
'entity_type' => 'node',
'type' => 'file',
]);
$field_pdf_du_guide->save();
$field_pdf_du_guide_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_pdf_du_guide,
'bundle' => 'guide_utilisateur',
'label' => "Pdf du guide",
'required' => FALSE,
]);
$field_pdf_du_guide_instance->save();
$field_sous_categorie_du_guide = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_sous_categorie_du_guide',
'entity_type' => 'node',
'type' => 'list_string',
'settings' => [
'allowed_values' => [
'pastell' => 'PASTELL',
'parapheur' => 'PARAPHEUR',
],
],
]);
$field_sous_categorie_du_guide->save();
$field_sous_categorie_du_guide_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_sous_categorie_du_guide,
'bundle' => 'guide_utilisateur',
'label' => "Sous catégorie du guide (ID LDAP)",
'required' => FALSE,
]);
$field_sous_categorie_du_guide_instance->save();
$field_sous_titre = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_sous_titre',
'entity_type' => 'node',
'type' => 'string',
]);
$field_sous_titre->save();
$field_sous_titre_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_sous_titre,
'bundle' => 'guide_utilisateur',
'label' => "Sous titre",
'required' => FALSE,
]);
$field_sous_titre_instance->save();
$field_type_de_guide = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_type_de_guide',
'entity_type' => 'node',
'type' => 'list_string',
'settings' => [
'allowed_values' => [
'video' => 'Vidéo',
'pdf' => 'PDF',
'texte' => 'Texte',
],
],
]);
$field_type_de_guide->save();
$field_type_de_guide_instance = \Drupal\field\Entity\FieldConfig::create([
'field_storage' => $field_type_de_guide,
'bundle' => 'guide_utilisateur',
'label' => "Type de guide",
'required' => FALSE,
]);
$field_type_de_guide_instance->save();
// Activer les champs sur le formulaire d'affichage du type de contenu.
$entity_display_repository = \Drupal::service('entity_display.repository');
$form_display = $entity_display_repository->getFormDisplay('node', 'guide_utilisateur', 'default');
// Activer l'affichage des champs appropriés.
$form_display->setComponent('field_categorie_du_guide', ['type' => 'options_select']);
$form_display->setComponent('body', ['type' => 'text_textarea_with_summary']);
$form_display->setComponent('field_image_du_guide', ['type' => 'image_image']);
$form_display->setComponent('field_nom_editeur', ['type' => 'string_textfield']);
$form_display->setComponent('field_pdf_du_guide', ['type' => 'file_generic']);
$form_display->setComponent('field_sous_categorie_du_guide', ['type' => 'options_select']);
$form_display->setComponent('field_sous_titre', ['type' => 'string_textfield']);
$form_display->setComponent('field_type_de_guide', ['type' => 'options_select']);
$form_display->save();
// Vider le cache pour appliquer les changements.
drupal_flush_all_caches();
}
}
/**
* Implements hook_uninstall().
*/
function guide_utilisateur_pleiade_uninstall()
{
// Supprimer tous les nœuds de type 'guide_utilisateur'.
$query = \Drupal::entityQuery('node')
->condition('type', 'guide_utilisateur')
->accessCheck(FALSE); // Désactiver les contrôles d'accès pour la désinstallation.
$nids = $query->execute();
foreach ($nids as $nid) {
$node = \Drupal\node\Entity\Node::load($nid);
if ($node) {
$node->delete();
}
}
// Vérifier si les champs existent avant de tenter de les supprimer.
$fields = [
'field_categorie_du_guide',
'body',
'field_image_du_guide',
'field_nom_editeur',
'field_pdf_du_guide',
'field_sous_categorie_du_guide',
'field_sous_titre',
'field_type_de_guide',
];
foreach ($fields as $field_name) {
if ($field_storage = \Drupal\field\Entity\FieldStorageConfig::loadByName('node', $field_name)) {
$field_storage->delete();
}
}
// Supprimer le type de contenu.
if ($node_type = \Drupal::entityTypeManager()->getStorage('node_type')->load('guide_utilisateur')) {
$node_type->delete();
}
// Vider le cache pour appliquer les changements.
\Drupal::entityTypeManager()->clearCachedDefinitions();
drupal_flush_all_caches();
}