Planète

Par ftorregrosa
Florent Torregrosa

Monter un environnement autour de Drupal avec Docker

Voici un retour d'expérience sur ma première utilisation réelle de Docker où je l'ai utilisé pour monter facilement un environnement de développement pour la refonte sous Drupal 8 du site drupal.fr ainsi que le socle Drupalcamp.

Étant un utilisateur récent de Docker, n'hésitez pas à me contacter ou à poster un commentaire pour me corriger en cas de besoin.

L'environnement comprendra :

  • un serveur Apache avec PHP 7

  • un serveur MySQL

  • un serveur Redis

  • un serveur SolR (drupal.fr uniquement)

Tags: 
Par vincent59
Vincent Liefooghe

Créer une vue Drupal sur un type de contenu, pour tous les auteurs ou moi seulement

J'ai eu récemment un besoin qui semble assez simple à première vue : pour un type de contenu spécifique, je voulais ajouter dans Views un filtre exposé me permettant de sélectionner tous les contenus ou seulement ceux dont j'étais l'auteur.

A priori, il suffit de créer une relation de type "Contenu: Auteur", et l'utiliser dans un filtre exposé sur l'utilisateur Actuel.

Sauf que... ceci me donne 2 options : les contenus de l'utilisateur actuel (les miens) ou les autres (pas les miens).

J'ai cherché pas mal de manière de faire, jusqu'à tomber sur une discussion qui parlait du module "Composite Views Filter", qui m'a finalement permis de faire ce que je voulais.

Création de la vue avec la relation Contenu : Auteur

Pour cela on crée une vue (Structure / Vue / Ajouter).

On lui donne un nom, et on va afficher les contenus de type "Signalement", puis on clique sur Continue & Edit. On ajoute les champs qui nous intéressent : pour la démo, ce sera le titre du contenu, l'UID de l'auteur et la date.

Puis on va ajouter une relation. Pour cela déplier "Avancé", et choisir Ajouter sur les Relations.

On choisit alors la relation Contenu / Auteur : c'est celle qui nous intéresse.

On modifie l'identiiant (par défaut c'est "author", je vais mettre Auteur). Puis on confirme en cliquant sur "Appliquer (tous les affichages).

A ce stade, la preview donne le tableau avec tous les auteurs :

Première tentative avec un filtre exposé sur l'auteur

On ajoute un filtre exposé (FILTER CRITERIA / Ajouter). On va sélectionner "Utilisateur : Actuel" :

Dans l'écran suivant, on choisit la relation que l'on a défini auparavant. On définit le filtre comme exposé, afin de laisser l'utilisateur choisir sa valeur.

Remarque : j'utilise Better Exposed Filter, qui ajoute une valeur "-Tous-", mais qui ne peut pas être sélectionnée par défaut.

Au final, les options sont réduites à Oui et Non :

Pas possible donc dans ce cas d'avoir mes contenus (correspondant à UID = 1) ou tous. Lorsqu'on sélectionne l'option Non, on a les autres contenus, mais pas le sien...

J'ai donc commencé à regarder du côté du développement Views, avant d'avoir vent du module Composite Views Filter.

Deuxième essai avec le module Composite Views Filter

Ce module nécessite d'être téléchargé et activé. Comme d'habitude, je fais cela avec Drush :

drush dl composite_views_filter
drush en -y composite_views_filter

Ensuite, il faut ajouter un filtre exposé de type "Global : Composite Filter".

On va ensuite donner les propriétés de ce filtre : une étiquette, et une description (optionnelle).  Ensuite, dans Groups, une liste de champs de type clé|valeur, qui seront utilisés par la suite.

Pour terminer, on donne un libellé pour "Tous". Dans l'option "Plus", il faut aussi donner un ID au filtre.

A ce stade, on a un nouveau filtre exposé, mais qui n'est pas actif. Il reste une étape : créer un filtre qui utilise ce filtre global. Pour cela, on ajoute un nouveau filtre, sur l'utilisateur Actuel :

On valide via le bouton "Appliquer (tous les affichages)". C'est à ce niveau que le groupe défini auparavant peut être utilisé. On sélectionne la valeur correspondant au libellé saisi.

Le filtre exposé est alors actif. Si on sélectionne l'option "Mes contenus uniquement", on a bien les contenus de l'UID = 1 :

Si on sélectionne "Tous les utilisateurs" on a la totalité des UID :

On sauvegarde la vue, et le tour est joué.

 

Catégorie: 


Tag: 

Par vincent59
Vincent Liefooghe

Importer et tenir à jour les traductions Drupal avec Drush

Lorsqu'on utilise Drupal, drush est un outil qui permet de gagner beaucoup de temps.Par exemple, pour mettre à jour les traductions des différents modules d'un site, on peut passer par l'interface, mais ceci suppose d'aller télécharger chaque fichier de traduction.Avec drush, quelques lignes de commandes suffisent :
# Telechargement du module drush_language (c'est une fonctionnalité additionnelle de drush)
drush dl drush_language
# Téléchargement du module Drupal l10n_update
drush dl l10n_update
# Activation de ce module
drush en -y l10n_update
# Ajout du langage "fr" pour le Français
drush language-add fr
# Activation de la langue fr
drush language-enable fr
# On nettoie le cache
drush clear-cache drush
# On fait une vérification des traductions
drush l10n-update-refresh
# On lance la mise à jour des traductions
drush l10n-update

La dernière commande va télécharger les fichiers de traduction, et les importer dans la foulée.Exemple sur un site réel :

drush l10n-update
Fetching update information for all projects / all languages.                                      [status]
Found 19 projects to update.                                                                       [status]
Mise à jour des traductions                                                                       [status]
                                                                                                   [status]
Traduction de better_exposed_filters vérifiée.                                                   [ok]
Traduction de colorbox vérifiée.                                                                 [ok]
Traduction de colorbox_node vérifiée.                                                            [ok]
Traduction de ctools vérifiée.                                                                   [ok]
Traduction de date vérifiée.                                                                     [ok]
Traduction de drupal vérifiée.                                                                   [ok]
Traduction de email vérifiée.                                                                    [ok]
Traduction de entity vérifiée.                                                                   [ok]
Traduction de entityreference vérifiée.                                                          [ok]
Traduction de eu_cookie_compliance vérifiée.                                                     [ok]
Traduction de field_formatter_settings vérifiée.                                                 [ok]
Traduction de field_group vérifiée.                                                              [ok]
Traduction de field_permissions vérifiée.                                                        [ok]
Traduction de geocoder vérifiée.                                                                 [ok]
Traduction de geofield vérifiée.                                                                 [ok]
Traduction de geofield_gmap vérifiée.                                                            [ok]
Traduction de geophp vérifiée.                                                                   [ok]
Traduction de hybridauth vérifiée.                                                               [ok]
Traduction de ip_geoloc vérifiée.                                                                [ok]
Traduction de l10n_update vérifiée.                                                              [ok]
Traduction de leaflet vérifiée.                                                                  [ok]
Traduction de leaflet_markercluster vérifiée.                                                    [ok]
Traduction de leaflet_more_maps vérifiée.                                                        [ok]
Traduction de libraries vérifiée.                                                                [ok]
Traduction de media vérifiée.                                                                    [ok]
Traduction de memcache_storage vérifiée.                                                         [ok]
Traduction de pathauto vérifiée.                                                                 [ok]
Traduction de role_delegation vérifiée.                                                          [ok]
Traduction de select_or_other vérifiée.                                                          [ok]
Traduction de services vérifiée.                                                                 [ok]
Traduction de token vérifiée.                                                                    [ok]
Traduction de views vérifiée.                                                                    [ok]
Traduction de views_data_export vérifiée.                                                        [ok]
Traduction de wysiwyg vérifiée.                                                                  [ok]
Traduction du module colorbox_node téléchargée.                                                 [ok]
Traduction de colorbox_node importée.                                                             [ok]
Traduction du module ctools téléchargée.                                                        [ok]
Importation de la traduction de ctools. (6%).                                                      [ok]
Importation de la traduction de ctools. (16%).                                                     [ok]
Importation de la traduction de ctools. (35%).                                                     [ok]
Importation de la traduction de ctools. (54%).                                                     [ok]
Importation de la traduction de ctools. (75%).                                                     [ok]
Importation de la traduction de ctools. (88%).                                                     [ok]
Traduction de ctools importée.                                                                    [ok]
Traduction du module date téléchargée.                                                          [ok]
Importation de la traduction de date. (28%).                                                       [ok]
Importation de la traduction de date. (72%).                                                       [ok]
Traduction de date importée.                                                                      [ok]
Traduction du module drupal téléchargée.                                                        [ok]
Importation de la traduction de drupal. (1%).                                                      [ok]
Importation de la traduction de drupal. (2%).                                                      [ok]
Importation de la traduction de drupal. (3%).                                                      [ok]
Importation de la traduction de drupal. (5%).                                                      [ok]
Importation de la traduction de drupal. (7%).                                                      [ok]
Importation de la traduction de drupal. (9%).                                                      [ok]
Importation de la traduction de drupal. (12%).                                                     [ok]
Importation de la traduction de drupal. (15%).                                                     [ok]
Importation de la traduction de drupal. (18%).                                                     [ok]
Importation de la traduction de drupal. (20%).                                                     [ok]
Importation de la traduction de drupal. (25%).                                                     [ok]
Importation de la traduction de drupal. (30%).                                                     [ok]
Importation de la traduction de drupal. (33%).                                                     [ok]
Importation de la traduction de drupal. (39%).                                                     [ok]
Importation de la traduction de drupal. (46%).                                                     [ok]
Importation de la traduction de drupal. (52%).                                                     [ok]
Importation de la traduction de drupal. (59%).                                                     [ok]
Importation de la traduction de drupal. (66%).                                                     [ok]
Importation de la traduction de drupal. (73%).                                                     [ok]
Importation de la traduction de drupal. (79%).                                                     [ok]
Importation de la traduction de drupal. (86%).                                                     [ok]
Importation de la traduction de drupal. (92%).                                                     [ok]
Importation de la traduction de drupal. (95%).                                                     [ok]
Traduction de drupal importée.                                                                    [ok]
Traduction du module entity téléchargée.                                                        [ok]
Importation de la traduction de entity. (58%).                                                     [ok]
Traduction de entity importée.                                                                    [ok]
Traduction du module entityreference téléchargée.                                               [ok]
Traduction de entityreference importée.                                                           [ok]
Traduction du module eu_cookie_compliance téléchargée.                                          [ok]
Traduction de eu_cookie_compliance importée.                                                      [ok]
Traduction du module field_formatter_settings téléchargée.                                      [ok]
Traduction de field_formatter_settings importée.                                                  [ok]
Traduction du module field_group téléchargée.                                                   [ok]
Traduction de field_group importée.                                                               [ok]
Traduction du module field_permissions téléchargée.                                             [ok]
Traduction de field_permissions importée.                                                         [ok]
Traduction du module geofield téléchargée.                                                      [ok]
Traduction de geofield importée.                                                                  [ok]
Traduction du module ip_geoloc téléchargée.                                                     [ok]
Traduction de ip_geoloc importée.                                                                 [ok]
Traduction du module l10n_update téléchargée.                                                   [ok]
Traduction de l10n_update importée.                                                               [ok]
Traduction du module leaflet téléchargée.                                                       [ok]
Traduction de leaflet importée.                                                                   [ok]
Traduction du module media téléchargée.                                                         [ok]
WD l10n_update: Import of string "Ce processus est requis lors de l'installation de media sur un   [error]
site existant. Media nécessite de scanner les fichiers existants et d'identifier le type de
fichier. Mettre à jour les types de fichier pour les fichiers @file ?>" was skipped because of
disallowed or malformed HTML.
Importation de la traduction de media. (95%).                                                      [ok]
Traduction de media importée.                                                                     [ok]
Traduction du module memcache_storage téléchargée.                                              [ok]
Traduction de memcache_storage importée.                                                          [ok]
Traduction du module select_or_other téléchargée.                                               [ok]
Traduction de select_or_other importée.                                                           [ok]
Traduction du module views téléchargée.                                                         [ok]
Importation de la traduction de views. (3%).                                                       [ok]
Importation de la traduction de views. (7%).                                                       [ok]
Importation de la traduction de views. (16%).                                                      [ok]
Importation de la traduction de views. (25%).                                                      [ok]
Importation de la traduction de views. (39%).                                                      [ok]
Importation de la traduction de views. (50%).                                                      [ok]
Importation de la traduction de views. (64%).                                                      [ok]
Importation de la traduction de views. (76%).                                                      [ok]
Importation de la traduction de views. (90%).                                                      [ok]
Traduction de views importée.                                                                     [ok]
Traduction du module views_data_export téléchargée.                                             [ok]
Traduction de views_data_export importée.                                                         [ok]
WD l10n_update: 1 disallowed HTML string(s) in files: translations://media-7.x-1.4.fr_0.po.        [warning]
19 translation files imported. 1732 translations were added, 0 translations were updated and 0     [status]
translations were removed.
One translation string was skipped because of disallowed or malformed HTML. See the log for        [warning]
details.

La commande drush a pris quelques minutes à peine, pour importer 19 fichiers...Quand je vous dis que c'est un outil magique ! 

Catégorie: 


Tag: 

Alerte de sécurité Drupal PSA-2016-001

L'équipe de sécurité Drupal a annoncé hier mardi 12 juillet la publication ce jour d'un bulletin de sécurité hautement critique, PSA-2016-001, concernant plusieurs modules contribués. Les attaques potentielles sont attendues dans les heures qui suivront la publication de ce bulletin de sécurité. Tous les sites Drupal ne seront pas affectés. Selon qu'ils utiliseront ou pas les modules contribués mentionnés dans ce bulletin de sécurité. Soyez prêt à mettre à jour vos modules.

Alerte de sécurité Drupal PSA-2016-001

L'équipe de sécurité Drupal a annoncé hier mardi 12 juillet la publication ce jour d'un bulletin de sécurité hautement critique, PSA-2016-001, concernant plusieurs modules contribués. Les attaques potentielles sont attendues dans les heures qui suivront la publication de ce bulletin de sécurité. Tous les sites Drupal ne seront pas affectés. Selon qu'ils utiliseront ou pas les modules contribués mentionnés dans ce bulletin de sécurité. Soyez prêt à mettre à jour vos modules.

La gestion des médias avec Drupal 8

La gestion des médias a été identifiée comme une des priorités lors de la dernière DrupalCon (Nouvelle Orléans 2016). Si nous pouvions disposer sur Drupal 7 de quelques modules contribués offrant une expérience utilisateur sans égal pour la gestion des médias, Drupal 8 était encore orphelin il y a peu d'une solution équivalente.

Avec la publication en version stable de la suite Media Entity, Drupal 8 dispose désormais d'une solution robuste et extensible pour offrir à ses utilisateurs une gestion des médias sur mesure. Découvrons ensemble comment mettre en place un gestion de médias sur Drupal 8 avec la suite Media Entity.

La gestion des médias avec Drupal 8

La gestion des médias a été identifiée comme une des priorités lors de la dernière DrupalCon (Nouvelle Orléans 2016). Si nous pouvions disposer sur Drupal 7 de quelques modules contribués offrant une expérience utilisateur sans égal pour la gestion des médias, Drupal 8 était encore orphelin il y a peu d'une solution équivalente.

Avec la publication en version stable de la suite Media Entity, Drupal 8 dispose désormais d'une solution robuste et extensible pour offrir à ses utilisateurs une gestion des médias sur mesure. Découvrons ensemble comment mettre en place un gestion de médias sur Drupal 8 avec la suite Media Entity.

Par anavarre

Présentation Drupal Lyon 2016 - Environnements de dév automatisés avec LXC et Ansible

Ce n'est pas vraiment du Drupal mais ça peut servir à tous les drupalistes ! Pour le meetup Drupal Lyon de juillet 2016 j'ai voulu parler des containers mais surtout de l'orchestration. Que ce soit LXC, ou Docker, peu importe en fait. Tout dépend de vos besoins. Mais pour l'orchestration, ma préférence va clairement à Ansible qui est facile d'apprentissage et si pratique au quotidien, que ce soit pour vos environnements de dév ou prod.

Créer des entités par le code

Lors de nos précédents articles sur la conception d'un profil d'installation Drupal 8 en vue d'industrialiser la conception de sites, nous avons abordé la création par le code aussi bien d'entités de configuration, que des entités de contenus.

Ce billet est une petite compilation de snippet permettant de générer des entités de configuration ou encore des contenus de façon programmatique.

Créer des entités par le code

Lors de nos précédents articles sur la conception d'un profil d'installation Drupal 8 en vue d'industrialiser la conception de sites, nous avons abordé la création par le code aussi bien d'entités de configuration, que des entités de contenus.

Ce billet est une petite compilation de snippet permettant de générer des entités de configuration ou encore des contenus de façon programmatique.

Par GoZ
Fabien CLEMENT

Convert Simpletest to PHPUnit

Convert Simpletest to PHPUnit

The historical test tool of Drupal Simpletest is deprecated with Drupal 8 and will be removed from Drupal 9. So tests should be converted from simpletest to PHPUnit.

It's hard to find replacements for old asserts or specials tests with PHPUnit. Solutions can be found in existing tests in modules and issues, but now issue group all replacements.

GoZ
mer 29/06/2016 - 19:16

Par GoZ
Fabien CLEMENT

Création d'une API avec Drupal 7 pour MK2

Création d'une API avec Drupal 7 pour MK2

Lors du Drupal Camp 2016 à Nantes, j'ai présenté un retour d'expérience sur la création de webservices et d'une api REST + JSON sous Drupal 7 pour les cinémas MK2.

Les slides de cette présentation sont disponibles sur github et la présentation sur youtube.

Super moments passés avec la communauté, à la prochaine !

GoZ
dim 19/06/2016 - 17:56

Une usine à sites avec Drupal 8

Après avoir découvert le principe des profils d'installation, leur création, et la conception de packages fonctionnels, nous allons aborder dans ce billet un cas d'application typique des profils d'installation : la création d'une usine à sites, basée sur l'architecture multi-sites native à Drupal, ou comment industrialiser la conception d'un projet pour disposer d'un site fonctionnel en quelques minutes, sans pour autant sacrifier la notion du sur-mesure.

Une usine à sites avec Drupal 8

Après avoir découvert le principe des profils d'installation, leur création, et la conception de packages fonctionnels, nous allons aborder dans ce billet un cas d'application typique des profils d'installation : la création d'une usine à sites, basée sur l'architecture multi-sites native à Drupal, ou comment industrialiser la conception d'un projet pour disposer d'un site fonctionnel en quelques minutes, sans pour autant sacrifier la notion du sur-mesure.

Pages