Slides de présentation de la session "Libérez Drupal" lors du DrupalCamp Paris 2013
de Julien Dubois et Laurent Chardin.
Julien Dubois - @Artusamak
Laurent Chardin - @LaurentChardin
1. LIBÉREZ DRUPALLIBÉREZ DRUPAL
VOTRE BACKEND A BESOIN D'AMOUR !VOTRE BACKEND A BESOIN D'AMOUR !
L'univers de la contrib vous permet de faire des choses mais
vous bride aussi...
Nous allons vous montrer comment rendre votre backend
plus adapté avec quelques outils.
3. CRÉATION D'UNE ENTITÉCRÉATION D'UNE ENTITÉ
CONSTAT NCONSTAT N°°1 : UN FORMULAIRE DRUPAL ÇA PEUT VITE1 : UN FORMULAIRE DRUPAL ÇA PEUT VITE
DEVENIR TRÈS LONGDEVENIR TRÈS LONG
5. SOLUTION POUR L'UXSOLUTION POUR L'UX
INTRODUIRE LE CONCEPT DES FORM MODESINTRODUIRE LE CONCEPT DES FORM MODES
Vous connaissez les view modes pour afficher du contenu ?
Imaginez le même concept appliqué à des formulaires.
6. FORM MODESFORM MODES
Un formulaire est rendu selon son form mode, ses champs
deviennent éditables ou en lecture seule selon la
configuration faite.
Si on y ajoute un peu de theming cela permet de rendre un
même formulaire d'édtition d'entité de plusieurs façon selon
l'utilisateur qui l'utilise.
8. FORM MODE DÉFINI DEPUIS LE CODEFORM MODE DÉFINI DEPUIS LE CODE
// Exported field: 'entity-bundle-fieldname'.
$fields['entity-bundle-fieldname'] = array(
'field_config' => array(...), // field_config et tout le touti..
'field_instance' => array(
'display' => array(
// Configuration des view_mode
),
'forms' => array(
// Configuration des form_mode
'form_role_manager' => array(
'type' => 'field_extrawidgets_hidden',
),
'form_role_legal' => array(
'type' => 'field_extrawidgets_read_only',
),
),
// ... et toute la suite
9. SUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRESUGGESTIONS DES TEMPLATES DE FORM MODE DANS VOTRE
THÈME DE BACKENDTHÈME DE BACKEND
entityforms_form__form_mode.tpl.php
entityforms_form__form_mode__entity_type.tpl.php
entityforms_form__form_mode__entity_type__bundle.tpl.php
11. COMMENT M'EN RESSERVIR ?COMMENT M'EN RESSERVIR ?
Form modes > sandbox Drupal 7
Field extra widgets > projet Drupal 7
12. EDITION D'ENTITÉSEDITION D'ENTITÉS
CONSTAT NCONSTAT N°°2 : LORSQUE J'ADMINISTRE MON CATALOGUE,2 : LORSQUE J'ADMINISTRE MON CATALOGUE,
C'EST PARFOIS RÉPÉTITIFC'EST PARFOIS RÉPÉTITIF
16. EDITION D'ENTITÉEDITION D'ENTITÉ
CONSTAT NCONSTAT N°°3 : CHANGER LE BUNDLE D'UNE ENTITÉ N'ÉTAIT3 : CHANGER LE BUNDLE D'UNE ENTITÉ N'ÉTAIT
PAS POSSIBLE...PAS POSSIBLE...
19. SOLUTIONSOLUTION
UTILISER LE MODULE BUNDLESWITCHERUTILISER LE MODULE BUNDLESWITCHER
Disponible sur Drupal.org, recharche la définition de l'entité.
20. GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS
CONSTAT NCONSTAT N°°4 : ADMINISTRER UN LARGE CATALOGUE EST4 : ADMINISTRER UN LARGE CATALOGUE EST
PÉNIBLEPÉNIBLE
21. GÉRER DES LISTINGS IMPORTANTSGÉRER DES LISTINGS IMPORTANTS
Optimisez vos écrans de listings :
Faites des listings adaptés à vos utilisateurs avec des
données et des filtres pertinents et permettez les actions en
masse.
23. SOLUTION 2SOLUTION 2
CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE VIEWS.CRÉEZ VOS PROPRES PLUGINS POUR ÉTENDRE L'API DE VIEWS.
Ca ne coût pas cher et ça peut rapporter gros !
Exemple :
class viewsmatrix_plugin_style_matrix extends views_plugin_style_table {
}
24. GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW
CONSTAT NCONSTAT N°°5 : AUTORISER DES TRANSITIONS DE WORKFLOW5 : AUTORISER DES TRANSITIONS DE WORKFLOW
INTELLIGENTE EST DOULOUREUXINTELLIGENTE EST DOULOUREUX
25. GÉRER DES TRANSITIONS DE WORKFLOWGÉRER DES TRANSITIONS DE WORKFLOW
Contrib ne permet de gérer que des transitions de nodes.
Stockage de l'état de workflow dans un champ.
Définition de transitions entre les états.
26. SOLUTIONSOLUTION
UTILISER LE MODULE STATEFIELDUTILISER LE MODULE STATEFIELD
Disponible sur Drupal.org, stocke un état (brouillon, non-
publié, publié).
Combiné à un module custom : définition de transitions
autorisées d'un état à un autre et ajout de validation par état
(champs obligatoire, contenu dans un format donné...).
27. APPRÉHENDER DES PROBLÉMATIQUES MÉTIERAPPRÉHENDER DES PROBLÉMATIQUES MÉTIER
À LA MODE DRUPALÀ LA MODE DRUPAL
CONSTAT NCONSTAT N°°6 : LA MULTIPLICATION DES CONTENUS PEUT6 : LA MULTIPLICATION DES CONTENUS PEUT
INTRODUIRE DE LA REDONDANCEINTRODUIRE DE LA REDONDANCE
28. COMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENUCOMMENT GÉRER AU MIEUX LA RÉPÉTITION D'UN CONTENU
AVEC QUELQUES VARIANTESAVEC QUELQUES VARIANTES
Une entité est définie de façon globale et certaines de ses
propriétés ou champs sont surchageables en local.
29. EXEMPLEEXEMPLE
Un produit est défini par l'équipe Marketing en France mais
doit être affiné par les équipes du Japon et de l'Italie sans
dupliquer l'entité maître et sans être une nouvelle version.
Je veux fusionner ses propriétés et je veux le faire
intelligemment...
31. A QUOI ÇA PEUT BIEN SERVIR ?A QUOI ÇA PEUT BIEN SERVIR ?
Cas d'utilisation : Sucharge locale par site
Pour un site donné, je veux modifier l'image du contenu
master
Cas d'utilisation : Surchage de traductions par langues
32. UNE RELATION ENTRE 2 ENTITÉS DÉFINIE AUUNE RELATION ENTRE 2 ENTITÉS DÉFINIE AU
NIVEAU DU FIELDNIVEAU DU FIELD
Simple à mettre en place
Exportable
Peut créer automatiquement une entité cible
33. EXEMPLE DE DÉFINITIONEXEMPLE DE DÉFINITION
function hook_entity_override_info() {
$ret = array(
$override_name => array(
// 'override_type' default: 'push'
'destination_type' => 'entity_destination',
'destination_bundle' => NULL, // wildcard
'source_management' => TRUE,
'source_type' => 'entity_overriding',
'source_bundle' => '', // unused in push overrides
'fields' => array(//... liste des champs de entity_destination),
'key_callback' => 'entity_destination_get_key',
'key_allowed_values_callback' => 'entity_destination_get_keys',
),
);
return $ret;
34. MÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉESMÉLANGEONS TOUT ÇA AVEC D'AUTRES IDÉES
Des entites pour les menus + TreeField
EntityBundlePlugin pour avoir des moteurs de rendus
OOP
Synchroniser les entites avec Migrate over XMLRPC
DMS : Device Management System
Drupal en mode distribué !
Approche multi-sites / multi-devices des sites
35. DES BÉNÉFICES PAYANTSDES BÉNÉFICES PAYANTS
Intégration dans D8
Réutilisation dans d'autres projets
Reversement de contribution sur d.o