Altérer le contrôle d'accès des entités de Drupal 8
Le module Permissions by field nous permet de contrôler les accès aux contenus d'un site Drupal selon plusieurs méthodes génériques, en s'appuyant sur la puissance d'Entity Reference et la Field API de Drupal 8, jusqu'à pouvoir déléguer une gestion complexe de droits d'accès vers les éditeurs de contenu selon leurs besoins.
Découvrons ce module et les différents cas d'usage possibles.
Vous le savez sans doute, la DrupalCon Dublin aura lieu lors de la dernière semaine de septembre. A la suite de cette semaine de conférences, Eduardo Garcia (enzo sur drupal.org), souhaiterait prolonger son séjour européen autour de Drupal Console.
Edouardo s'est lancé dans un projet, de tours du monde de Drupal en 120 jours. Les détails sur ce projet fou sont sur son blog.
Edouardo présentera une Keynote Communautaire à Dublin, où il parlera de son voyage à travers le monde et la communauté.
Son idée est de continuer son séjour en Europe, post DrupalCon, pour parle de Drupal Console, à Paris lors d'un meetup.
En venant ainsi à Paris, il aurait alors visité 16 pays en 168 jours.
Si le projet d'Edouardo vous intéresse et/ou si vous souhaitez assister au Meetup sur Drupal Console que organiserions avec son mainteneur, vous pouvez sans doute nous aider
Edouardo effectue son voyage sur ses fonds propres, alors si comme pour un Meetup parisien, nous sommes à la recherche d'un sponsor et d'une salle, cette fois ci, nous en appelons aussi à la solidarité de la communauté pour lui trouver un logement à moindre coût pendant sa présence sur Paris
Si vous pouvez nous aider, en proposant un hébergement gracieux à Edouardo, ou en proposant un lieu pour ce meetup, merci d'envoyer un message à bureau[at]listes[point]drupalfr[point]org
N'oubliez pas de suivre les invitations de Meetups pour ne pas louper ce rendez-vous parisien unique !
Vous le savez sans doute, la DrupalCon Dublin aura lieu lors de la dernière semaine de septembre. A la suite de cette semaine de conférences, Eduardo Garcia (enzo sur drupal.org), souhaiterait prolonger son séjour européen autour de Drupal Console.
Edouardo s'est lancé dans un projet, de tours du monde de Drupal en 120 jours. Les détails sur ce projet fou sont sur son blog.
Edouardo présentera une Keynote Communautaire à Dublin, où il parlera de son voyage à travers le monde et la communauté.
Son idée est de continuer son séjour en Europe, post DrupalCon, pour parle de Drupal Console, à Paris lors d'un meetup.
En venant ainsi à Paris, il aurait alors visité 16 pays en 168 jours.
Si le projet d'Edouardo vous intéresse et/ou si vous souhaitez assister au Meetup sur Drupal Console que organiserions avec son mainteneur, vous pouvez sans doute nous aider
Edouardo effectue son voyage sur ses fonds propres, alors si comme pour un Meetup parisien, nous sommes à la recherche d'un sponsor et d'une salle, cette fois ci, nous en appelons aussi à la solidarité de la communauté pour lui trouver un logement à moindre coût pendant sa présence sur Paris
Si vous pouvez nous aider, en proposant un hébergement gracieux à Edouardo, ou en proposant un lieu pour ce meetup, merci d'envoyer un message à bureau[at]listes[point]drupalfr[point]org
N'oubliez pas de suivre les invitations de Meetups pour ne pas louper ce rendez-vous parisien unique !
Vous le savez sans doute, la DrupalCon Dublin aura lieu lors de la dernière semaine de septembre. A la suite de cette semaine de conférences, Eduardo Garcia (enzo sur drupal.org), souhaiterait prolonger son séjour européen autour de Drupal Console.
Edouardo s'est lancé dans un projet, de tours du monde de Drupal en 120 jours. Les détails sur ce projet fou sont sur son blog.
Edouardo présentera une Keynote Communautaire à Dublin, où il parlera de son voyage à travers le monde et la communauté.
Son idée est de continuer son séjour en Europe, post DrupalCon, pour parle de Drupal Console, à Paris lors d'un meetup.
En venant ainsi à Paris, il aurait alors visité 16 pays en 168 jours.
Si le projet d'Edouardo vous intéresse et/ou si vous souhaitez assister au Meetup sur Drupal Console que organiserions avec son mainteneur, vous pouvez sans doute nous aider
Edouardo effectue son voyage sur ses fonds propres, alors si comme pour un Meetup parisien, nous sommes à la recherche d'un sponsor et d'une salle, cette fois ci, nous en appelons aussi à la solidarité de la communauté pour lui trouver un logement à moindre coût pendant sa présence sur Paris
Si vous pouvez nous aider, en proposant un hébergement gracieux à Edouardo, ou en proposant un lieu pour ce meetup, merci d'envoyer un message à bureau[at]listes[point]drupalfr[point]org
N'oubliez pas de suivre les invitations de Meetups pour ne pas louper ce rendez-vous parisien unique !
Is Ubercart still relevant now that Drupal 6 has reached EOL?
In this day and age where Drupal 8 is all the rage and while contemplating an end-of-life Drupal 6 Ubercart Store upgrade to Drupal 7 or 8, I wondered if Ubercart was still a relevant alternative? Because if it was, then Ubercart 6.x store owners wishing to upgrade would not have just one but two options to choose from, two chances to find the right fit.
My initial thought was, let's go with the flow and migrate to Drupal Commerce. The main reason behind my sheepish logic: Commerce is the de facto go-to e-commerce platform.
Then, another side of me argued that Commerce's dominance is somewhat artificial and really stems from the fact that commerce-talk dominates the techno buzz channels, grabbing most of the spotlight and in so doing is casting other potential solutions in the gloomy shadows of quasi-oblivion...
In this article, I will share my experience about a recent project for a small town hockey association which, for the past 5 years, has been relying on a Drupal 6 Ubercart 2.x website to automate seasonal registrations for its 350 hockey players. With Drupal 6 now defunct (EOL) and no security team* to provide the required assurance that credit card transactions would be safe, there was little choice but to upgrade at least to Drupal 7 before registration could start.
ren.admin
dim 28/08/2016 - 17:11
Is Ubercart still relevant now that Drupal 6 has reached EOL?
In this day and age where Drupal 8 is all the rage and while contemplating an end-of-life Drupal 6 Ubercart Store upgrade to Drupal 7 or 8, I wondered if Ubercart was still a relevant alternative? Because if it was, then Ubercart 6.x store owners wishing to upgrade would not have just one but two options to choose from, two chances to find the right fit.
My initial thought was, let's go with the flow and migrate to Drupal Commerce. The main reason behind my sheepish logic: Commerce is the de facto go-to e-commerce platform.
Then, another side of me argued that Commerce's dominance is somewhat artificial and really stems from the fact that commerce-talk dominates the techno buzz channels, grabbing most of the spotlight and in so doing is casting other potential solutions in the gloomy shadows of quasi-oblivion...
In this article, I will share my experience about a recent project for a small town hockey association which, for the past 5 years, has been relying on a Drupal 6 Ubercart 2.x website to automate seasonal registrations for its 350 hockey players. With Drupal 6 now defunct (EOL) and no security team* to provide the required assurance that credit card transactions would be safe, there was little choice but to upgrade at least to Drupal 7 before registration could start.
ren.admin
dim 28/08/2016 - 17:11
Ce que vous devez savoir si vous commencez un projet Drupal 8 en 2016.
Ce que vous devez savoir si vous commencez un projet Drupal 8 en 2016.
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)
Un thème Drupal 8 à télécharger pour être opérationnel immédiatement.
Un thème Drupal à télécharger pour être opérationnel immédiatement.
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.
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 :
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.
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é.
# 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 !