Planète

Par admin

Le bureau nouveau est arrivé !

Suite à l'Assemblé Générale Ordinaire du jeudi 11 mars 2021, un nouveau bureau a été élu :

Merci à nos membres pour leur présence lors de cet évènement important pour l'association !

Nous souhaitons aussi remercier particulièrement Alexane TRUBERT et Julien SOLEILHAVOUP pour leur travail au sein du précédent bureau. Merci à vous deux pour votre soutien au cours de cette année difficile pour tout le monde, c'est aussi grâce à vous si l'association a tenu le coup ! Encor bravo aussi à Alexane pour son nouveau mandat de présidente de WebAssoc !

Comme évoqué lors de l'AGO, le bureau compte cette année poursuivre sur la lancée du mandat précédent, fortement impacté par la crise du Covid-19 :

  • La traduction toujours ! D'ailleurs on a besoin de vous pour valider les traductions du guide
  • Gouvernance des outils :migration progressive des différents comptes de l'association vers un compte "bureau" non nominatif (quand c'est possible), pour simplifier la gestion et les passations
  • Amélioration de la communication
  • Crédit de toutes les contributions grâce à notre nouveau projet sur Drupal.org : organisation de Meetup, traduction, aide à la réalisation du site de l'association... Il n'y a pas que le code dans une communauté !
  • Organisation de DrupApéro en ligne plus réguliers
  • Test de nouveaux outils (WorkAdventure, outil de vote en ligne, migration possible de Meetup...)
  • Un gros travail d'ouverture à la francophonie au sens large, avec un rapprochement des autres associations locales francophones. Le bureau voudrait aussi pouvoir soutenir les communautés qui n'ont pas encore de structure à se développer
  • Et enfin, organisation d'un DrupalCamp en ligne cette année :)

En bref, il y a du pain sur la planche, mais l'équipe est motivée, et nous savons que vous aussi !

Le PV d'AGO sera prochainement finalisé et partagé ici.

Pour contacter le bureau de l'association, vous pouvez adresser un e-mail à l'adresse bureau@drupal.fr.

Par admin

Le bureau nouveau est arrivé !

Suite à l'Assemblé Générale Ordinaire du jeudi 11 mars 2021, un nouveau bureau a été élu :

Merci à nos membres pour leur présence lors de cet évènement important pour l'association !

Nous souhaitons aussi remercier particulièrement Alexane TRUBERT et Julien SOLEILHAVOUP pour leur travail au sein du précédent bureau. Merci à vous deux pour votre soutien au cours de cette année difficile pour tout le monde, c'est aussi grâce à vous si l'association a tenu le coup ! Encore bravo aussi à Alexane pour son nouveau mandat de présidente de WebAssoc !

Comme évoqué lors de l'AGO, le bureau compte cette année poursuivre sur la lancée du mandat précédent, fortement impacté par la crise du Covid-19 :

  • La traduction toujours ! D'ailleurs on a besoin de vous pour valider les traductions du guide
  • Gouvernance des outils :migration progressive des différents comptes de l'association vers un compte "bureau" non nominatif (quand c'est possible), pour simplifier la gestion et les passations
  • Amélioration de la communication
  • Crédit de toutes les contributions grâce à notre nouveau projet sur Drupal.org : organisation de Meetup, traduction, aide à la réalisation du site de l'association... Il n'y a pas que le code dans une communauté !
  • Organisation de DrupApéro en ligne plus réguliers
  • Test de nouveaux outils (WorkAdventure, outil de vote en ligne, migration possible de Meetup...)
  • Un gros travail d'ouverture à la francophonie au sens large, avec un rapprochement des autres associations locales francophones. Le bureau voudrait aussi pouvoir soutenir les communautés qui n'ont pas encore de structure à se développer
  • Et enfin, organisation d'un DrupalCamp en ligne cette année :)

En bref, il y a du pain sur la planche, mais l'équipe est motivée, et nous savons que vous aussi !

Le PV d'AGO sera prochainement finalisé et partagé ici.

Pour contacter le bureau de l'association, vous pouvez adresser un e-mail à l'adresse bureau@drupal.fr.

Par Christophe MOLLET
Christophe Mollet

Configuration d'un flux RSS sur Drupal

Qu'est-ce qu'un flux RSS ?

 

RSS signifie Really Simple Syndication. C'est une méthode simple et standardisée de distribution de contenu qui peut vous aider à être au courant des actualités, blogs, sites web et réseaux sociaux préférés, de façon centralisée.

Par kgaut
Kevin Gautreau

Drupal 8 & Drupal 9 - Changer l'ordre d'exécution des hooks

Pour un projet, je souhaiter alterer un type d'entité via HOOK_entity_type_alter. Problème un module du core effectuait une modification sur ce même type d'entité, et son hook était exécuté après celui de mon module. Les modifications de mon module n'étaient donc pas prise en compte.

Il y a plusieurs possibilités pour résoudre ce soucis, celle que j'ai utilisé ici est de forcer ce hook à être exécuté en dernier. Ceci en utilisant le HOOK_module_implements_alter (dans cet exemple, le nom machine de mon module est kgaut [oui, c'est vendredi, je ne suis pas très inspiré]).

function kgaut_module_implements_alter(&$implementations, $hook) {
  switch ($hook) {
    case 'entity_type_alter':
      $group = $implementations['kgaut'];
      unset($implementations['kgaut']);
      $implementations['kgaut'] = $group;
      break;
  }
}

Ce bout de code force le hook entity_type_alter à utiliser l'implémentation du module kgaut en dernier (et après donc toutes les autres implémentations des autres modules)

Prévenir des soumissions non sollicitées en masse sur son site Drupal 9 (ou Drupal 8)

Plusieurs solutions anti-spam existent sur Drupal pour prévenir les soumissions de formulaires (contact, abonnement newsletter, etc.) par des robots plus ou moins bien intentionnés. Sans vouloir être exhaustif, nous pouvons utiliser les modules Honeypot et Antibot qui fournissent des mécanismes de défense (différents) non intrusifs, ou encore les modules captcha ou recaptcha qui demandent au visiteur de répondre à différents challenges avant de lui permettre de soumettre le formulaire.

Par kgaut
Kevin Gautreau

Drupal 8 & Drupal 9 - Créer des éléments de menu dans le code

Note : Il est aussi possible de créer des éléments de menu dans le fichier MODULE.links.menu.yml, cf : https://kgaut.net/snippets/2017/drupal-8-creer-un-element-de-menu-vers-… et https://kgaut.net/snippets/2018/drupal-8-drupal-9-menu-ajouter-un-eleme…

Les extraits de codes suivants peuvent être placer dans des fonctions d'update (MODULE_UPDATE_9001() par exemple).

Créer un élément de menu simple vers un nœud dans le menu principal (main)

$menuItem = MenuLinkContent::create([
  'title' => 'Mon Menu avec un lien vers un noeud',
  'link' => ['uri' => 'internal:/node/5'],
  'menu_name' => 'main',
  'expanded' => TRUE,
  'weight' => 2,
]);
$menuItem->save();

 

Créer un élément de menu sans lien

$menuItem = MenuLinkContent::create([
  'title' => 'Mon menu sans lien',
  'link' => ['uri' => 'route:nolink'],
  'menu_name' => 'main',
  'expanded' => TRUE,
  'weight' => 2,
]);
$menuItem->save();

 

Un élément de sous-menu

$childMenuItem = MenuLinkContent::create([
  'title' => 'Mon sous menu',
  'link' => ['uri' => 'internal:/node/4'],
  'menu_name' => 'main',
  'expanded' => TRUE,
  'parent' => 'menu_link_content:' . $menuItemParent->uuid(),
  'weight' => 2,
]);
$childMenuItem->save();

 

Arborescence complète

Et voici un exemple complet, à adapter à votre besoin pour créer une arborescence, c'est largement perfectible, mais ça fait le taf.

  $items = [
    'Mon élément parent' => [
      'uri' => 'route:<nolink>',
      'children' => [
        'Un menu item' => 'internal:/node/5',
        'Une autre item' => 'internal:/node/6',
      ],
    ],
    'Un autre parent' => [
      'uri' => 'route:<nolink>',
      'children' => [
        'Salut' => 'internal:/node/7',
        "c'est" => 'internal:/node/8',
        'cool' => 'internal:/node/9',
      ],
    ],
  ];
  $poids = 0;
  foreach($items as $parent => $data) {
    $menuItem = MenuLinkContent::create([
      'title' => $parent,
      'link' => ['uri' => $data['uri']],
      'menu_name' => 'main',
      'expanded' => TRUE,
      'weight' => ++$poids,
    ]);
    $menuItem->save();
    foreach ($data['children'] as $child => $subdata) {
      $childMenuItem = MenuLinkContent::create([
        'title' => $child,
        'link' => ['uri' => $subdata['uri']],
        'menu_name' => 'main',
        'expanded' => TRUE,
        'parent' => 'menu_link_content:' . $menuItem->uuid(),
        'weight' => ++$poids,
      ]);
      $childMenuItem->save();
    }
  }

 

Par Simon Georges
Simon Georges
Drupal depuis plus de 10 ans, SEO depuis 3 ans

Varnish et Drupal 9 : le vidage de cache ciblé

La mise en place d'un cache de pages anonymes Varnish devant un Drupal 9 permet une mise en place relativement aisée d'un vidage automatique des pages mises en cache en se basant sur la politique de tags de Drupal. Cet article devrait vous donner les bases pour commencer à comprendre et expérimenter le système.

Par admin

Prochaine Assemblé Générale Ordinaire de l’association Drupal France et Francophonie

Comme tous les ans, l’association Drupal France & Francophonie organise une AG afin de dresser le bilan de l’année écoulée et élire son nouveau bureau.

Cette année, cette assemblée aura lieu le jeudi 11 mars 2021 à 19h en ligne. Le lien de l’événement sera communiqué par mail aux adhérent·e·s puis annoncé sur les réseaux sociaux le jour même. Comme pour l’année précédente, les votes se feront par internet. Si vous ne pouvez pas assister à l’événement, il vous est possible de donner votre pouvoir à une personne de votre choix.

Nous vous rappelons que tout le monde peut participer à l’AG mais que seul·e·s les membres à jour dans leur cotisation peuvent voter. Pensez donc à vérifier la validité de votre adhésion sur votre profil https://www.drupal.fr afin de pouvoir faire entendre votre voix.

À ce propos, nous vous informons d'un changement fonctionnel concernant les ré-adhésions : il n'est plus possible de renouveler une adhésion en avance. Désormais, il vous faudra attendre la fin de validité de votre cotisation en cours pour avoir accès au paiement via le site.

Enfin, si vous souhaitez vous présenter au bureau, il vous faudra aussi être à jour de votre cotisation et compter au minimum trois mois d’ancienneté. N’hésitez pas à envoyer votre candidature à l’adresse suivante : bureau@drupal.fr

Vous pouvez également consulter la convocation adressée aux membres ce lundi 08 février ici : https://mailchi.mp/drupal.fr/convocation-ag-drupal-france-11-mars-2021

Par admin

Prochaine Assemblée Générale Ordinaire de l’association Drupal France et Francophonie

Comme tous les ans, l’association Drupal France & Francophonie organise une AG afin de dresser le bilan de l’année écoulée et élire son nouveau bureau.

Cette année, cette assemblée aura lieu le jeudi 11 mars 2021 à 19h en ligne. Le lien de l’événement sera communiqué par mail aux adhérent·e·s puis annoncé sur les réseaux sociaux le jour même. Comme pour l’année précédente, les votes se feront par internet. Si vous ne pouvez pas assister à l’événement, il vous est possible de donner votre pouvoir à une personne de votre choix.

Nous vous rappelons que tout le monde peut participer à l’AG mais que seul·e·s les membres à jour dans leur cotisation peuvent voter. Pensez donc à vérifier la validité de votre adhésion sur votre profil https://www.drupal.fr afin de pouvoir faire entendre votre voix.

À ce propos, nous vous informons d'un changement fonctionnel concernant les ré-adhésions : il n'est plus possible de renouveler une adhésion en avance. Désormais, il vous faudra attendre la fin de validité de votre cotisation en cours pour avoir accès au paiement via le site.

Enfin, si vous souhaitez vous présenter au bureau, il vous faudra aussi être à jour de votre cotisation et compter au minimum trois mois d’ancienneté. N’hésitez pas à envoyer votre candidature à l’adresse suivante : bureau@drupal.fr

Vous pouvez également consulter la convocation adressée aux membres ce lundi 08 février ici : https://mailchi.mp/drupal.fr/convocation-ag-drupal-france-11-mars-2021

Par kgaut
Kevin Gautreau

Vidéo mini formation : Administrer son site drupal avec drush

Petite vidéo que je souhaitais faire depuis longtemps : une présentation de l'utilitaire numéro 1 de tout·e développeur·euse Drupal : Drush !

Drush est un utilitaire en ligne de commande, qui fonctionne sous linux, windows et macos permettant d'exécuter des commandes d'administration sur son site Drupal :

Vidage de cache
Activation de module
Export / Import de configuration (voir mon autre vidéo sur la gestion de la configuration)
Et plein d'autres choses

Depuis quelques temps, drush s'interface avec Drupal Code Generator, et permet de scaffolder des modules, des types d'entités, des formulaires des blocs et bien d'autres chose. Cette fonctionnalité est très pratique et je l'utilise presque tous les jours. C'est ce que permettait de faire drupal console, qui du coup est maintenant beaucoup moins utile.

Dans la vidéo qui suit je vous présente les bases de drush, les commandes de base et les générateurs.

Retrouver le support à l'adresse suivante : https://slides.kgaut.net/presentations/2021/drush.html

Quelques liens utiles :

Le site officiel de Drush : https://www.drush.org
Drush Launcher : https://github.com/drush-ops/drush-launcher
Liste des commandes drush : https://www.drush.org/latest/commands/all/

Par admin

Drupal France & Francophonie - Global Contribution Day 2021

Rejoignez la communauté Drupal francophone et contribuez aux différents projets Drupal lors de ce week-end spécial de contribution les samedi 30 et dimanche 31 janvier prochains.

Les DrupalCamp, les DrupalCon et les différentes rencontres vous manquent sûrement. Elles nous manquent aussi , mais également à notre projet préféré.
Ce week-end de contribution sera l'occasion pour nous de nous retrouver et travailler. Ensemble, comme lors des évènements qui nous manquent tant.

En cette période particulièrement difficile que nous traversons, le télétravail est devenu pour la plupart d'entre nous un état de fait. Nous, développeurs et développeuse construisions notre communauté par les moments de travail, les moments de partages associatifs et communautaires avec nos proches, nos amis, et des personnes que nous découvrions par le biais des rencontres. Notre réseau personnel, notre réseau professionnel, comme nos rencontres issues du monde associatif, ou amical; rencontrer des ami•e•s d'ami•e•s... tout cela est devenu très très difficile.

C'est pour cela que ce week-end, bien sûr en ligne, et ne remplaçant en rien une journée de contribution classique, sera pour nous toutes et tous l'occasion de nous tous nous retrouver.

Nous comptons sur votre présence.

Afin de créer des groupes de travail et les espaces de collaboration qui leurs seront dédiés, nous vous invitons à vous inscrire sur ce fichier tableur, en ajoutant une ligne sous le projet sur lequel vous seriez disponible pour participer :

https://docs.google.com/spreadsheets/d/1uwGmBLba4Qf2B81WPBw8uFCndMYrpGzT...

N'hésitez pas à ajouter votre nom à un projet existant, ajouter un projet sur lequel vous souhaitez intervenir (et vous nommer référent si besoin), mais aussi renseigner vos disponibilités sur les journées de samedi 30 et dimanche 31 janvier 2021.

Si vous rencontrez le moindre soucis, ou avez la moindre question, contactez le bureau de l'association Drupal France et Francophonie par email sur bureau@drupal.fr ou plus simplement sur notre slack drupalfrance.slack.com dans le canal #contrib .

De nombreux projets ont besoin de votre soutien.

Version de Drupal : 
Par admin

Drupal France & Francophonie - Global Contribution Day 2021

Rejoignez la communauté Drupal francophone et contribuez aux différents projets Drupal lors de ce week-end spécial de contribution les samedi 30 et dimanche 31 janvier prochains.

Les DrupalCamp, les DrupalCon et les différentes rencontres vous manquent sûrement. Elles nous manquent aussi , mais également à notre projet préféré.
Ce week-end de contribution sera l'occasion pour nous de nous retrouver et travailler. Ensemble, comme lors des évènements qui nous manquent tant.

En cette période particulièrement difficile que nous traversons, le télétravail est devenu pour la plupart d'entre nous un état de fait. Nous, développeurs et développeuse construisions notre communauté par les moments de travail, les moments de partages associatifs et communautaires avec nos proches, nos amis, et des personnes que nous découvrions par le biais des rencontres. Notre réseau personnel, notre réseau professionnel, comme nos rencontres issues du monde associatif, ou amical; rencontrer des ami•e•s d'ami•e•s... tout cela est devenu très très difficile.

C'est pour cela que ce week-end, bien sûr en ligne, et ne remplaçant en rien une journée de contribution classique, sera pour nous toutes et tous l'occasion de nous tous nous retrouver.

Nous comptons sur votre présence.

Afin de créer des groupes de travail et les espaces de collaboration qui leurs seront dédiés, nous vous invitons à vous inscrire sur ce fichier tableur, en ajoutant une ligne sous le projet sur lequel vous seriez disponible pour participer :

https://docs.google.com/spreadsheets/d/1uwGmBLba4Qf2B81WPBw8uFCndMYrpGzT...

N'hésitez pas à ajouter votre nom à un projet existant, ajouter un projet sur lequel vous souhaitez intervenir (et vous nommer référent si besoin), mais aussi renseigner vos disponibilités sur les journées de samedi 30 et dimanche 31 janvier 2021.

Si vous rencontrez le moindre soucis, ou avez la moindre question, contactez le bureau de l'association Drupal France et Francophonie par email sur bureau@drupal.fr ou plus simplement sur notre slack drupalfrance.slack.com dans le canal #contrib .

De nombreux projets ont besoin de votre soutien.

Version de Drupal : 
Par Christophe MOLLET
Christophe Mollet

Comprendre la synchronisation de la configuration sous Drupal 9

Qu’est-ce que la synchronisation de la configuration sous Drupal 9 ?

Le système de configuration de Drupal 9 stock l’ensemble des informations du site (blocks, vues, types de champs et de contenus, taxonomie…) sans inclure les données (contenu des blocks, terme de taxonomie, valeur des champs, ...). Dans Drupal 7 le système de configuration était stockée dans la base de données, ce qui rendait difficile le transfert d’une copie du site, en particulier si des modules (extensions) modifiaient la configuration.

Par admin

Baromètres des salaires Drupal 2020

Cette enquête a été lancée afin de récolter les salaires des Drupalistes en France et dans les pays francophones pour faire un état des lieux des rémunérations dans l’écosystème Drupal. Son but : réaliser un baromètre des salaires au sein de notre communauté, et vous proposer cet outil de comparaison. Cette enquête a eu lieu du 19 Juin au 31 août 2020 et vous avez été 76 à y répondre. Nous vous en remercions.

Il est à noter que sur l’intégralité des réponses que nous avons recueillies, seuls 68 d’entre vous ont renseigné la région dans laquelle ils étaient employés. Les autres items ont tous été pleinement renseignés.

En bref....

Les réponses à cette enquête sont intéressantes et révélatrices d’un milieu masculin dominé principalement par les agences et ESN (Entreprise de service numérique). Si plus de 90 % des personnes ayant répondu sont des hommes, plus de la moitié d’entre vous a entre 30 et 40 ans.

Côté salaire, vous vous placez entre 33 500 et 67 000€. Si la fourchette est assez grande, vous êtes un peu plus de la moitié à trouver que vous êtes un peu sous-payés, et un peu plus d’un quart à trouver que votre salaire correspond à vos activités.

Il serait difficile de parler de ce sondage en 2020 sans parler télétravail avec la crise sanitaire que nous traversons. Il est encourageant de voir que dans un domaine permettant facilement le travail à distance, plus de la moitié des personnes ayant répondu à cette enquête a le droit à du télétravail partiel, voire total, même si un peu moins d’un quart d’entre vous n’y a pas droit.
Choix ou obligation, notre enquête ne le dit pas. Nous rajouterons cette question dans la prochaine édition du sondage.

Type d’entreprise

Camembert sur le type d'entreprise

  • Agence: 42,1 %
  • Editeur : 1,3%
  • Entreprise non numérique : 0
  • ESN (Société de services) : 40,8 %
  • Indépendant : 6,6%
  • Public : 9,2%

Taille de l’entreprise

Camembert sur la taille de l'entreprise

  • 0 à 10 : 18,4 %
  • 10 à 50 : 18,4 %
  • 50 à 100 : 15,8 %
  • + de 100 : 47,4 %

Pays

Graphique à colonnes montrant les pays représentés

  • Belgique : 1
  • Cameroun : 1
  • Canada : 2
  • France : 71
  • Sénégal : 1

Titre du Poste

Graphique à barres montrant les postes représentés

  • Développeu·r·se : 29
  • Lead dev : 16
  • Ingénieur·e d'études : 7
  • Consultant·e : 4
  • Chef·fe de projet : 3
  • Direct·eur·rice : 3
  • Tech Expert : 2
  • Référent·e drupal : 1
  • Responsable projets : 1
  • Direct·eur·rice Avant-Vente : 1
  • Direct·eur·rice de projet : 1
  • Direct·eur·rice de service : 1
  • Engagement manager : 1
  • Fondat·eur·rice : 1
  • Gérant·e : 1
  • Indépendant·e : 1

Responsabilités

Camembert des responsabilités

  • Aucune : 6,6 %
  • Choix fonctionnels : 1,3 %
  • Choix fonctionnels et choix techniques : 30,3 %
  • Choix techniques : 35,5 %
  • Management : 1,3 %
  • Management et choix fonctionnels : 1,3 %
  • Management, choix fonctionnels et choix techniques : 18,4 %
  • Management et choix techniques : 5,3 %

Salaire brut fixe annuel

Graphique à colonnes de la moyenne des salaires par poste

  • Directeur Avant-Vente : 67 000€ brut par an
  • Directeur de projet : 63 000€ brut par an
  • Fondateur : 60 000€ brut par an
  • Directeur : 53 333€ brut par an
  • Directeur de service : 51 000€ brut par an
  • Référent drupal : 50 000€ brut par an
  • Tech Expert : 45 500€ brut par an
  • Lead Dev : 45 000€ brut par an
  • Consultant : 41 250€ brut par an
  • Engagement manager : 40 500€ brut par an
  • Responsable projets : 38 000€ brut par an
  • Ingénieur d'études : 36 642€ brut par an
  • Développeur : 35 282€ brut par an
  • Indépendant : 35 000€ brut par an
  • Gérant : 34 000€ brut par an
  • Chef de projet : 33 466€ brut par an

Graphique à barres de la moyenne des salaires par lieu de résidence en France

  • Auvergne-Rhône-Alpes : 33 250 € brut par an
  • Bretagne : 40 018 € brut par an
  • Grand Est : 45 018 € brut par an
  • Hauts-de-France : 39 800 € brut par an
  • Ile-de-France : 43 472 € brut par an
  • Non renseigné : 33 989 € brut par an
  • Normandie : 53 000 € brut par an
  • Nouvelle-Aquitaine : 43 600 € brut par an
  • Occitanie : 35 046 € brut par an
  • Pays de la Loire : 45 011 € brut par an
  • Provence-Alpes-Côte d'Azur : 40 700 € brut par an

Graphique à colonnes de la moyenne des salaires par années d'expérience

  • 0 à 5 : 31991 €
  • 5 à 10 : 39806 €
  • 10 à 20 : 42919 €
  • 20 et + : 48612 €

Nombre d’heures travaillées

Camembert des heures travaillées par semaine

  • 20-29 heures : 0
  • 35 heures : 1,3 %
  • 35-40 heures : 75 %
  • 41-45 heures : 15,8 %
  • 46-60 heures : 3,9 %
  • 61-70 heures : 1,3 %
  • 75 heures : 1,3 %
  • Forfait jour : 1,3 %

Lors de la création du formulaire de cette enquête, notre équipe a oublié de proposer l’item “30 - 34 heures” de travail effectué par semaine. Nous nous en excusons et vous le proposerons l’année prochaine.

Niveau d'études & Années d’expérience

Camembert du niveau d'études

  • Bac : 2,6 %
  • Bac +1/+2 : 10,5 %
  • Bac +3 : 43,4 %
  • Bac +4 : 1,3 %
  • Bac + 5 : 36,8 %
  • Sans diplôme : 1,3 %

Camembert des années d'expérience

  • 0 à 5 : 14
  • 5 à 10 : 18
  • 10 à 20 : 35
  • 20 et + : 9

Nombre de RTT

Camembert montrant le nombre de jour de RTT

  • 0 à 5 : 42,1%
  • 5 à 10 ; 28,9%
  • 10 à 20 : 22,4%
  • 20 et + : 6,6%

Avantages salariaux

  • Tickets restaurant : 68,4 %
  • Intéressement : 44,7 %
  • Mutuelle à plus de 50 % : 44,7 %
  • CE : 38,2 %
  • Plan d’épargne : 18,4 %
  • Cafétéria : 18,4 %
  • Aucun : 13,2 %
  • Voiture de fonction : 1,3 %
  • 100% Remote : 1,3 %

Télétravail

Camembert montrant l'accès au télétravail

  • Partiel : 55,6%
  • Total : 23.7%
  • Non : 19,7%

Ces informations sont à mettre en corrélation avec les aménagements de postes effectués dans le cadre de la crise sanitaire du COVID-19.

Journée de formation / conférences

Camembert montrant le nombre de journée de formations / conférences

  • Aucune : 25 %
  • 1 à 2 par an : 39,5 %
  • 3 à 5 par an : 30,3 %
  • 11 à 15 par an : 5,3 %

Nous vous prions à nouveau de nous excuser pour avoir oublié l’item “6 à 10 par ans”. Nous le mettrons bien sûr dans la prochaine édition.

Genre

Camembert montrant les genres représentés

  • Homme : 92,1 %
  • Femme : 3,9 %
  • Transgenre : 1,3 %
  • Non binaire, perçu Homme : 1,3 %
  • Non indiqué : 1,3 %

Si le domaine du web est un milieu très masculin qui tente de changer, nous avons voulu en savoir plus dans la communauté Drupal et le jugement est sans appel.

Nous en avons profité pour regarder un peu la moyenne des salaires par genre, ce qui donne

Graphique à colonnes montrant la moyenne des salaires par genre

  • Je préfère ne pas l’indiquer : 60 000€ brut par an
  • Homme : 40 955€ brut par an
  • Femme : 37 333€ brut par an
  • Non binaire, perçu Homme : 33 370€ brut par an
  • Transgenre : 33 000€ brut par an

Age

Camembert montrant les tranches d'âge représentées

  • Entre 20 et 30 ans : 26,3 %
  • Entre 30 et 40 ans : 52,6 %
  • Entre 40 et 50 ans : 17,1 %
  • 50 ans et plus : 3,9 %

Type de contrat

Camembert montrant les types de contrat

  • CDI : 84,2 %
  • Indépendant / TNS : 6,6 %
  • CDD : 5,3 %
  • Fonctionnaire : 3,9 %

Merci et à l’année prochaine

Merci à tous d’avoir répondu à ce sondage, si vous souhaitez poser des questions ou en savoir plus n’hésitez pas à nous contacter sur slack, ça sera un plaisir que d’en discuter avec vous.

Par admin

Baromètres des salaires Drupal 2020

Cette enquête a été lancée afin de récolter les salaires des Drupalistes en France et dans les pays francophones pour faire un état des lieux des rémunérations dans l’écosystème Drupal. Son but : réaliser un baromètre des salaires au sein de notre communauté, et vous proposer cet outil de comparaison. Cette enquête a eu lieu du 19 Juin au 31 août 2020 et vous avez été 76 à y répondre. Nous vous en remercions.

Il est à noter que sur l’intégralité des réponses que nous avons recueillies, seuls 68 d’entre vous ont renseigné la région dans laquelle ils étaient employés. Les autres items ont tous été pleinement renseignés.

En bref....

Les réponses à cette enquête sont intéressantes et révélatrices d’un milieu masculin dominé principalement par les agences et ESN (Entreprise de service numérique). Si plus de 90 % des personnes ayant répondu sont des hommes, plus de la moitié d’entre vous a entre 30 et 40 ans.

Côté salaire, vous vous placez entre 33 500 et 67 000€. Si la fourchette est assez grande, vous êtes un peu plus de la moitié à trouver que vous êtes un peu sous-payés, et un peu plus d’un quart à trouver que votre salaire correspond à vos activités.

Il serait difficile de parler de ce sondage en 2020 sans parler télétravail avec la crise sanitaire que nous traversons. Il est encourageant de voir que dans un domaine permettant facilement le travail à distance, plus de la moitié des personnes ayant répondu à cette enquête a le droit à du télétravail partiel, voire total, même si un peu moins d’un quart d’entre vous n’y a pas droit.
Choix ou obligation, notre enquête ne le dit pas. Nous rajouterons cette question dans la prochaine édition du sondage.

Type d’entreprise

Camembert sur le type d'entreprise

  • Agence: 42,1 %
  • Editeur : 1,3%
  • Entreprise non numérique : 0
  • ESN (Société de services) : 40,8 %
  • Indépendant : 6,6%
  • Public : 9,2%

Taille de l’entreprise

Camembert sur la taille de l'entreprise

  • 0 à 10 : 18,4 %
  • 10 à 50 : 18,4 %
  • 50 à 100 : 15,8 %
  • + de 100 : 47,4 %

Pays

Graphique à colonnes montrant les pays représentés

  • Belgique : 1
  • Cameroun : 1
  • Canada : 2
  • France : 71
  • Sénégal : 1

Titre du Poste

Graphique à barres montrant les postes représentés

  • Développeu·r·se : 29
  • Lead dev : 16
  • Ingénieur·e d'études : 7
  • Consultant·e : 4
  • Chef·fe de projet : 3
  • Direct·eur·rice : 3
  • Tech Expert : 2
  • Référent·e drupal : 1
  • Responsable projets : 1
  • Direct·eur·rice Avant-Vente : 1
  • Direct·eur·rice de projet : 1
  • Direct·eur·rice de service : 1
  • Engagement manager : 1
  • Fondat·eur·rice : 1
  • Gérant·e : 1
  • Indépendant·e : 1

Responsabilités

Camembert des responsabilités

  • Aucune : 6,6 %
  • Choix fonctionnels : 1,3 %
  • Choix fonctionnels et choix techniques : 30,3 %
  • Choix techniques : 35,5 %
  • Management : 1,3 %
  • Management et choix fonctionnels : 1,3 %
  • Management, choix fonctionnels et choix techniques : 18,4 %
  • Management et choix techniques : 5,3 %

Salaire brut fixe annuel

Graphique à colonnes de la moyenne des salaires par poste

  • Directeur Avant-Vente : 67 000€ brut par an
  • Directeur de projet : 63 000€ brut par an
  • Fondateur : 60 000€ brut par an
  • Directeur : 53 333€ brut par an
  • Directeur de service : 51 000€ brut par an
  • Référent drupal : 50 000€ brut par an
  • Tech Expert : 45 500€ brut par an
  • Lead Dev : 45 000€ brut par an
  • Consultant : 41 250€ brut par an
  • Engagement manager : 40 500€ brut par an
  • Responsable projets : 38 000€ brut par an
  • Ingénieur d'études : 36 642€ brut par an
  • Développeur : 35 282€ brut par an
  • Indépendant : 35 000€ brut par an
  • Gérant : 34 000€ brut par an
  • Chef de projet : 33 466€ brut par an

Graphique à barres de la moyenne des salaires par lieu de résidence en France

  • Auvergne-Rhône-Alpes : 33 250 € brut par an
  • Bretagne : 40 018 € brut par an
  • Grand Est : 45 018 € brut par an
  • Hauts-de-France : 39 800 € brut par an
  • Ile-de-France : 43 472 € brut par an
  • Non renseigné : 33 989 € brut par an
  • Normandie : 53 000 € brut par an
  • Nouvelle-Aquitaine : 43 600 € brut par an
  • Occitanie : 35 046 € brut par an
  • Pays de la Loire : 45 011 € brut par an
  • Provence-Alpes-Côte d'Azur : 40 700 € brut par an

Graphique à colonnes de la moyenne des salaires par années d'expérience

  • 0 à 5 : 31991 €
  • 5 à 10 : 39806 €
  • 10 à 20 : 42919 €
  • 20 et + : 48612 €

Nombre d’heures travaillées

Camembert des heures travaillées par semaine

  • 20-29 heures : 0
  • 35 heures : 1,3 %
  • 35-40 heures : 75 %
  • 41-45 heures : 15,8 %
  • 46-60 heures : 3,9 %
  • 61-70 heures : 1,3 %
  • 75 heures : 1,3 %
  • Forfait jour : 1,3 %

Lors de la création du formulaire de cette enquête, notre équipe a oublié de proposer l’item “30 - 34 heures” de travail effectué par semaine. Nous nous en excusons et vous le proposerons l’année prochaine.

Niveau d'études & Années d’expérience

Camembert du niveau d'études

  • Bac : 2,6 %
  • Bac +1/+2 : 10,5 %
  • Bac +3 : 43,4 %
  • Bac +4 : 1,3 %
  • Bac + 5 : 36,8 %
  • Sans diplôme : 1,3 %

Camembert des années d'expérience

  • 0 à 5 : 14
  • 5 à 10 : 18
  • 10 à 20 : 35
  • 20 et + : 9

Nombre de RTT

Camembert montrant le nombre de jour de RTT

  • 0 à 5 : 42,1%
  • 5 à 10 ; 28,9%
  • 10 à 20 : 22,4%
  • 20 et + : 6,6%

Avantages salariaux

  • Tickets restaurant : 68,4 %
  • Intéressement : 44,7 %
  • Mutuelle à plus de 50 % : 44,7 %
  • CE : 38,2 %
  • Plan d’épargne : 18,4 %
  • Cafétéria : 18,4 %
  • Aucun : 13,2 %
  • Voiture de fonction : 1,3 %
  • 100% Remote : 1,3 %

Télétravail

Camembert montrant l'accès au télétravail

  • Partiel : 55,6%
  • Total : 23.7%
  • Non : 19,7%

Ces informations sont à mettre en corrélation avec les aménagements de postes effectués dans le cadre de la crise sanitaire du COVID-19.

Journée de formation / conférences

Camembert montrant le nombre de journée de formations / conférences

  • Aucune : 25 %
  • 1 à 2 par an : 39,5 %
  • 3 à 5 par an : 30,3 %
  • 11 à 15 par an : 5,3 %

Nous vous prions à nouveau de nous excuser pour avoir oublié l’item “6 à 10 par ans”. Nous le mettrons bien sûr dans la prochaine édition.

Genre

Camembert montrant les genres représentés

  • Homme : 92,1 %
  • Femme : 3,9 %
  • Transgenre : 1,3 %
  • Non binaire, perçu Homme : 1,3 %
  • Non indiqué : 1,3 %

Si le domaine du web est un milieu très masculin qui tente de changer, nous avons voulu en savoir plus dans la communauté Drupal et le jugement est sans appel.

Nous en avons profité pour regarder un peu la moyenne des salaires par genre, ce qui donne

Graphique à colonnes montrant la moyenne des salaires par genre

  • Je préfère ne pas l’indiquer : 60 000€ brut par an
  • Homme : 40 955€ brut par an
  • Femme : 37 333€ brut par an
  • Non binaire, perçu Homme : 33 370€ brut par an
  • Transgenre : 33 000€ brut par an

Age

Camembert montrant les tranches d'âge représentées

  • Entre 20 et 30 ans : 26,3 %
  • Entre 30 et 40 ans : 52,6 %
  • Entre 40 et 50 ans : 17,1 %
  • 50 ans et plus : 3,9 %

Type de contrat

Camembert montrant les types de contrat

  • CDI : 84,2 %
  • Indépendant / TNS : 6,6 %
  • CDD : 5,3 %
  • Fonctionnaire : 3,9 %

Merci et à l’année prochaine

Merci à tous d’avoir répondu à ce sondage, si vous souhaitez poser des questions ou en savoir plus n’hésitez pas à nous contacter sur slack, ça sera un plaisir que d’en discuter avec vous.

Par Christophe MOLLET
Christophe Mollet

Les nouveautés de la version 9.1 de Drupal

Drupal est l’un des meilleurs systèmes de gestion de contenu libre open-source. En effet, ce CMS est notamment connu pour ses fonctionnalités importantes, telles que la fiabilité, la flexibilité, l’évolutivité, ou encore la performance. Lancé sur le marché en 2000, Drupal comprend plusieurs versions à son actif : Drupal 7, 8 et 9.

Par kgaut
Kevin Gautreau

Drupal 8 & Drupal 9 - Thème Gin - ajouter une feuille de style personnalisée

Gin est mon thème backoffice coup de coeur de ces derniers mois, il donne un coup de fouet au backoffice de drupal !

Gin

 Thème
 Backoffice

Gin est un thème backoffice « moderne » qui intègre un mode dark.

En cours de test de mon côté, pour l'instant je suis convaincu, on verra si ça tiens dans la durée.

Modules additionnels recommandés :

gin_toolbar : Fournir une toolbar optimisée pour le thème
gin_login : Un bel écran de connexion !

Lire la suite de Gin

Il est possible de lui adjoindre une feuille de style css pour surcharger quelques propriétés sans avoir à lui créer un thème enfant, très pratique !

Pour cela rien de plus simple, il suffit de créer un fichier gin-custom.css dans le répertoire public:// donc la plupart du temps : web/sites/default/files/gin-custom.css.

Attention, généralement, ce dossier est exclu du versionning, mais il est possible de forcer l'ajout d'un fichier avec la commande :

git add -f web/sites/default/files/gin-custom.css

Note : cette manipulation est possible depuis la version 8.x-3.0-alpha31, sortie le 02 décembre 2020 (plus d'informations ici : https://www.drupal.org/project/gin/issues/3179676)

Encore mieux, ce thème utilise des variables CSS pour les couleurs, si vous souhaitez changer les couleurs de « focus » c'est possible avec les lignes suivantes, à ajuster en fonction de vos goûts :

* {  --colorGinPrimary: #cc7700;  --colorGinFocus: #cc7700;  --colorGinPrimaryActive: #ff9900;  --colorGinPrimaryHover: #ff9900;}

 

Par kgaut
Kevin Gautreau

Sideproject : Tableau de bord de gestion de mes projets de maintenance

Petit article un peu particulier afin de présenter mon dernier side-project : un outil de gestion de mes projets de maintenance.

Jusqu'à peu, je gérais mes projets de maintenance dans des feuilles de calcul où pour chaque intervention, je notais le temps passé, pour ensuite facturer en fin de mois.

Dans le même temps, je travaille avec de multiples clients qui ont chacun leur système de ticket (github, gitlab.com, gitlab auto-hébergé, pivotal tracker...) et donc je n'avais pas non plus de vue globale sur l'ensemble de mes tickets à traiter au niveau de tous mes clients.

Tombant par hasard sur un module drupal gitlab_api, l'idée m'est venue de faire un outil pour lister l'ensemble de mes tickets gitlab (avec dans l'idée ensuite de faire des connecteurs avec d'autres systèmes). Le module n'accepte par défaut la connexion à un seul serveur, j'ai donc proposé une nouvelle fonctionnalité : l'utilisation de config entities, afin de gérer de multiples connexions (gitlab.com, et autant de gitlab auto-hébergés que nécessaires).

J'ai par la suite développé un module équivalent pour me connecter à l'api de github, puis un autre pour me connecter à pivotal tracker.

Image

Liste des serveurs gitlab

 

Image

Ajout d'un serveur gitlab

 

L'idée ensuite est de pouvoir ajouter des « clients » et de leur affecter un projet.

Voici la liste des clients, avec vision des tickets en cours, du CA global, du CA en attente de facturation...

Image

Listing des clients

 

Chaque projet étant lié à un dépôt gitlab / github / pivotal tracker :

Image

Ajout d'un projet

 

Ainsi, automatiquement sont récupérés les tickets liés à ce projet. Chaque ticket peut-être estimé si le client le demande.

Image

Liste des tickets

 

Ces tickets sont récupérés et mis à jour à intervalle régulier, via une tache cron.

Sur la capture précédente, on voit l'ensemble des tickets (clôturé ou actif) d'un seul projet, mais via les filtres au-dessus du tableau, je peux voir l'ensemble des tickets au niveau global / par client / par projet…

Ensuite, à chaque ticket, je peux affecter une « tâche », correspondant à une intervention effectuée sur le projet et qui devra être facturée.

Image

Ajout d'une tâche

 

Ces tâches sont enfin visibles sur un tableau de bord, lui aussi filtrable par client / projet / ticket / statut de facturation / facture :

Image

listing de tâches

 

En fin de période de facturation, je sélectionne les tâches que je souhaite facturer et renseigne mon numéro de facture, ainsi ces tâches passent en état « facturé ». L'intégration avec ma solution de comptabilité n'est pas encore faite, mais le processus de création est grandement simplifié, je n'ai quasiment plus qu'à saisir le total.

Le client à lui aussi accès à un tableau de bord, où il peut voir toutes ses tâches en cours, et donc les dépenses engagées. Il peut aussi consulter le détail d'une facture :

Image

tableau de bord client

 

Chaque intervention était liée à un ticket, en cliquant sur le lien, il tombera directement sur le ticket correspondant sur gitlab / github / pivotal tracker…

J'ai pu importer tous mon historique de tâches qui étaient dans des google docs en passant par des fichiers csv et un petit script de parsage.

Au niveau technique c'est un petit drupal 9.1.0 (mis à jour hier, jour de la sortie de la première version stable) avec peu de modules activés.

Les clients, projets, tickets et tâches sont des types d'entités personnalisé. les listing sont créés directement via des ListBuilder et non pas des vues. Les tickets se mettent à jours via des QueueWorkers.

Il y a pas mal de champs calculés pour, par exemple avoir au niveau d'un client le CA facturé, le CA en cours... J'ai factorisé mon code au maximum.

Le core de cet applicatif consiste en un seul module « custom » qui nécessite donc 3 autres modules :

gitlab_api : pour s'interconnecter avec plusieurs serveurs gitlab, module tiers disponible sur drupal.org auquel j'ai contribué.
github_api : pour s'interconnecter avec github, module développé par mes soins un peu « quick'n'dirty »
pivotal_api : pour s'interconnecter avec pivotal tracker, développé aussi par mes soins, mais encore trop sale pour être opensourcé pour l'instant.

Dans les faits, le module core est suffisamment générique pour être opensourcé, si vous êtes intéressé, n'hésitez-pas à vous signaler, ça me donnera la motivation à accélérer le processus ! Je pense que d'autres freelances pourraient être intéressés par la solution.

C'est là qu'on voit toute la puissance de drupal (surtout à partir de la version 8) pour développer très rapidement des applicatifs métiers puissants, intégrés et interconnectés. Le tout en codant en se faisant plaisir !

Par kgaut
Kevin Gautreau

Drupal 8 & Drupal 9 - Surcharger l'autocomplétion d'un champ « entity_reference »

Il est possible dans drupal 8 et 9 de surcharger l'auto-completion d'un champ « référence à un type d'entité », à la fois la requête générée (pour par exemple faire la recherche sur d'autres champs que le titre, mais aussi le label des éléments retournés.

Attention, la seconde étape diffère entre les versions 8 et 9 de drupal. Logiquement la version drupal 9 fonctionne sur les dernières version de drupal 8, je n'ai pas vérifié. Mais l'inverse ne fonctionne en tout cas pas !

Modification du formulaire (drupal 8 et drupal 9)

Pour cela il faut commencer par altérer le formulaire pour modifier un attribut de notre champ autocomplete :

// mon_module.module (ou bien un fichier de définition de formulaire directement // ici, mon champ « entity_reference » est issue// dashboard:issue est une clé qui sera définie à l'étape 2  function mon_module_form_alter(&$form, FormStateInterface $form_state) {  if ($form['id'] === '...') {    $form['issue']['widget'][0]['target_id']['#selection_handler'] = 'dashboard:issue';  }}

Définition du nouveau filtre de sélection  (drupal 9)

mon_module/src/Plugin/EntityReferenceSelection/IssueSelection.php getConfiguration()['target_type'];     // ici c'est une EntityQuery classique    $query = $this->buildEntityQuery($match, $match_operator);    $or = $query->orConditionGroup();     // Je fais une condition sur le titre de mon contenu mais aussi sur le champ « external_id »    $or->condition('title', $match, $match_operator);    $or->condition('external_id', $match, $match_operator);    $query->condition($or);     if ($limit > 0) {      $query->range(0, $limit);    }    $result = $query->execute();     if (empty($result)) {      return [];    }     $options = [];    /** @var \Drupal\dashboard\Entity\Issue[] $entities */    $entities = $this->entityTypeManager->getStorage($target_type)->loadMultiple($result);    foreach ($entities as $entity_id => $entity) {      $project = $entity->getProject();      $bundle = $entity->bundle();       // Ici, pour chaque résultat, définition du label de l'élément qui sera affiché dans la liste déroulante      $options[$bundle][$entity_id] = Html::escape($project->label() . ' #' . $entity->getExternalId(). ' -  ' . $entity->label() );    }     return $options;  } }

Définition du nouveau filtre de sélection  (drupal 8)

mon_module/src/Plugin/EntityReferenceSelection/IssueSelection.php getConfiguration()['target_type'];     // ici c'est une EntityQuery classique    $query = $this->entityManager->getStorage($target_type)->getQuery();    $or = $query->orConditionGroup();     // Je fais une condition sur le titre de mon contenu mais aussi sur le champ « external_id »    $or->condition('title', $match, $match_operator);    $or->condition('external_id', $match, $match_operator);    $query->condition($or);     if ($limit > 0) {      $query->range(0, $limit);    }    $result = $query->execute();     if (empty($result)) {      return [];    }     $options = [];    /** @var \Drupal\dashboard\Entity\Issue[] $entities */    $entities = $this->entityManager->getStorage($target_type)->loadMultiple($result);    foreach ($entities as $entity_id => $entity) {      $project = $entity->getProject();      $bundle = $entity->bundle();       // Ici, pour chaque résultat, définition du label de l'élément qui sera affiché dans la liste déroulante      $options[$bundle][$entity_id] = Html::escape($project->label() . ' #' . $entity->getExternalId(). ' -  ' . $entity->label() );    }     return $options;  } }

 

Pages