...
Wordpress met à disposition un outil permettant d'améliorer les performances et la sécurité. Pour cela, cliquez sur Outils > Santé du site dans la barre latérale gauche et suivez les suggestions afin d'améliorer le fonctionnement de votre instance.
Classer le contenu par colonne
| Avertissement |
|---|
La personnalisation des colonnes est propre à chaque utilisateur. Ainsi, si vous personnalisez l'affichage d'une collection en tant que user Admin par exemple, cette personnalisation ne sera pas disponible pour un autre utilisateur. Pour que l'affichage soit le même pour tous, il faut se rendre dans l'entrée de menu WPClever > Admin Columns et au niveau du paramètre Personalized passer la valeur à No (Pensez à enregistrer les modifications entre temps) Ce paramètre est à configurer avant de personnaliser l'affichage des collections, sous peine de perdre l'ensemble des modifications. |
Par défaut, Wordpress ne permet pas de trier le contenu de chaque collection en fonction des attributs disponibles. Il se contente seulement d'afficher le titre, la date de dernière publication et la langue.
Pour améliorer cela, l'instance de Wordpress proposée avec Multi fournit un plugin WPC Admin Columns qui permet de personnaliser les colonnes à afficher.
Pour personnaliser les colonnes, il suffit de se rendre sur la collection et de cliquer sur le bouton Columns en haut à gauche.
Une fenêtre s'ouvre vous permettant de choisir les colonnes à afficher / masquer, de changer l'ordre et aussi d'ajouter une nouvelle colonne.
Pour ajouter une nouvelle colonne, dans la popup ouverte cliquez sur le bouton + Add column. Éditez le nouveau champ qui vient d'apparaitre, donnez lui un nom de colonne, choisissez le type Custom field et dans le champ Field choisissez l'attribut que vous souhaitez (par exemple feature_description, qui est le champ description de la collection Features). Vous pouvez ensuite décider si le champ peut être éditer en saisie rapide ou non et si l'utilisateur peut trier la collection sur cette colonne.
Vous pouvez également déplacer cette colonne dans la liste. Dans l'exemple suivant, j'ai par exemple choisi d'afficher la description juste après la colonne titre.
...
...
Erreurs rencontrées
Failed to execute /docker-entrypoint-init.d/init-wordpress.sh
Si vous rencontrez ce message d'erreur au montage du Dockerfile, pensez à vérifier les droits sur le fichier init-wordpress.sh
| Bloc de code | ||
|---|---|---|
| ||
chmod 755 init-wordpress.sh
chmod +x init-wordpress.sh |
Ajouter une collection
Côté wordpress
Le plugin WP développé prévoit la creation de pod automatiquement au moment de l'installation de ce dernier. Les pods sont décrits dans des fichiers dédiés, il faudra donc ajouter un fichier pour la nouvelle collection à ce niveau là : https://github.com/univlorraine/multi-wordpress-config/tree/main/includes/pods
Prévoir l'import d'un jeu de données de test dans :
Côté multi
...
Les collections
Les languages
Il s'agit de la 1ère collection à créer (ou importer) elle précise les langues dans lesquelles seront traduits les contenus dynamiques saisis dans directus. Pour la cohérence, il faudra prévoir également les fichiers i18n pour les traductions statiques de l'interface.
Les features
Les features représentent les services que l'on souhaite afficher dans l'application.
Ils sont caractérisés par :
- Un statut : brouillon, publié ou archivé
- Un titre, un titre cours, une description et des mots clés
- Une icône qui peut être une icone ionic ou le code d'un SVG
- Un emplacement
- burger : menu de l'app
- service : page des services
- top : dans la barre du haut
- tabs : dans la barre du bas
- Une position (absolue) + une position en fonction du rôle qui viendra supplanter la position par défaut si précisé
- Des autorisations : Liste blanche ou liste noire sur une liste de rôles autorisé ou pas à accéder au service. Attention, les rôles doivent être ceux fourni par le module user-provider
- Un type :
- Interne : Service interne à l'application indiqué par sa route dans l'app
- Externe : Lien vers une URL externe qui peut être protégée par CAS. Le cas échéant, il faudra préciser l'emplacement du ServiceTicket dans l'URL et l'URL du service pour lequel l'application devra faire la demande de ticket.
Les widgets
Les widget représentent les accroches que l'on souhaite afficher sur la page d'accueil de l'application.
Elles sont caractérisés par :
- Un statut : brouillon, publié ou archivé
- Le code du widget : Le module qui traitera l'affichage des éléments de la widget
- Un titre, un titre cours, une description et des mots clés
- Une icône qui peut être une icone ionic ou le code d'un SVG et une couleur de fond
- Une position (absolue) + une position en fonction du rôle qui viendra supplanter la position par défaut si précisé
- Des autorisations : Liste blanche ou liste noire sur une liste de rôles autorisé ou pas à accéder au service. Attention, les rôles doivent être ceux fourni par le module user-provider
- Un type :
- Interne : Service interne à l'application indiqué par sa route dans l'app
- Externe : Lien vers une URL externe qui peut être protégée par CAS. Le cas échéant, il faudra préciser l'emplacement du ServiceTicket dans l'URL et l'URL du service pour lequel l'application devra faire la demande de ticket.
Les important-news
Les important news permettent de saisir des informations qui s'affichent dans la widget important-news (module important-news) en page d'accueil.
Elles sont caractérisées par :
- Un titre et un contenu
- Un bouton et un lien de redirection
- Une image et une couleur de fond
- Des autorisations : Liste blanche ou liste noire sur une liste de rôles autorisé ou pas à voir la news. Attention, les rôles doivent être ceux fourni par le module user-provider
Les social-network
Les social network permettent de saisir les liens vers les réseaux sociaux affichés dans le menu.
Les channels
Les channels sont les canaux utilisés par le système de notification. Chaque notification indique un nom "logique" de channel auquel on fait correspondre une couleur, un logo, un nom parlant et traduit dans le CMS. On peut également y indiquer une route de redirection vers un service interne à l'application.
Les pages
Les pages permettent de saisir des contenus statiques qui seront accessible depuis le menu de l'application et affiché dans l'ordre choisi sur le CMS.
Le contact us
L'objet contact us est un peu particulier cas il ne s'agit pas d'une collection mais d'une instance unique. Il permet d'indiquer le texte d'accueil du formulaire de contact ainsi que l'adresse e-mail de redirection de message postés.
Le login
L'objet login est un peu particulier cas il ne s'agit pas d'une collection mais d'une instance unique. Il permet d'indiquer le texte d'accueil du formulaire de connexion à l'application.
Les map points
Un objet map point représente un point placé sur la carte dans l'application. Il dépend d'un campus, d'une icône et d'une catégorie.
Les campus
Un objet campus représente un campus de l'université. Pour le moment il est utilisé par les map points et contient des informations sur son emplacement.
Les map icons
Un objet map icon est une icône qui peut être utilisée par un map point.
Les map categories
Un objet map category est une catégorie pour les map points.
Classer le contenu par colonne
| Avertissement |
|---|
La personnalisation des colonnes est propre à chaque utilisateur. Ainsi, si vous personnalisez l'affichage d'une collection en tant que user Admin par exemple, cette personnalisation ne sera pas disponible pour un autre utilisateur. Pour que l'affichage soit le même pour tous, il faut se rendre dans l'entrée de menu WPClever > Admin Columns et au niveau du paramètre Personalized passer la valeur à No (Pensez à enregistrer les modifications entre temps) Ce paramètre est à configurer avant de personnaliser l'affichage des collections, sous peine de perdre l'ensemble des modifications. |
Par défaut, Wordpress ne permet pas de trier le contenu de chaque collection en fonction des attributs disponibles. Il se contente seulement d'afficher le titre, la date de dernière publication et la langue.
Pour améliorer cela, l'instance de Wordpress proposée avec Multi fournit un plugin WPC Admin Columns qui permet de personnaliser les colonnes à afficher.
Pour personnaliser les colonnes, il suffit de se rendre sur la collection et de cliquer sur le bouton Columns en haut à gauche.
Une fenêtre s'ouvre vous permettant de choisir les colonnes à afficher / masquer, de changer l'ordre et aussi d'ajouter une nouvelle colonne.
Pour ajouter une nouvelle colonne, dans la popup ouverte cliquez sur le bouton + Add column. Éditez le nouveau champ qui vient d'apparaitre, donnez lui un nom de colonne, choisissez le type Custom field et dans le champ Field choisissez l'attribut que vous souhaitez (par exemple feature_description, qui est le champ description de la collection Features). Vous pouvez ensuite décider si le champ peut être éditer en saisie rapide ou non et si l'utilisateur peut trier la collection sur cette colonne.
Vous pouvez également déplacer cette colonne dans la liste. Dans l'exemple suivant, j'ai par exemple choisi d'afficher la description juste après la colonne titre.
Erreurs rencontrées
Failed to execute /docker-entrypoint-init.d/init-wordpress.sh
Si vous rencontrez ce message d'erreur au montage du Dockerfile, pensez à vérifier les droits sur le fichier init-wordpress.sh
| Bloc de code | ||
|---|---|---|
| ||
chmod 755 init-wordpress.sh
chmod +x init-wordpress.sh |
Ajouter une collection
Côté wordpress
Le plugin WP développé prévoit la creation de pod automatiquement au moment de l'installation de ce dernier. Les pods sont décrits dans des fichiers dédiés, il faudra donc ajouter un fichier pour la nouvelle collection à ce niveau là : https://github.com/univlorraine/multi-wordpress-config/tree/main/includes/pods le mieux est de prendre exemple sur les collections déjà présentes. On pensera à préciser 'is_translatable' => true, pour les champs à traduire et ...'options' => [ 'singleton' => true... pour les collections n'ayant qu'un élément par exemple. (documentation ici : https://github.com/univlorraine/multi-wordpress-config)
Prévoir l'import d'un jeu de données de test dans les mock : https://github.com/univlorraine/esup-multi/tree/main/dev/user-backend-mocks
Côté multi
Adapter le connecteur CMS dans connectors/multi-cms-connector (https://github.com/univlorraine/esup-multi/tree/main/dev/connectors/multi-cms-connector)
Gestion de l'accès à la collection dans WP
Dans src/cms/worpress/collections créer un dossier pour la collection qui contiendra les 4 fichiers :
- coll.wordpress.model.ts : décrit les champs de la collection
- coll.wordpress.module.ts : décrit le module et référence de service et le resolver
- coll.wordpress.resolver.ts : définit les requêtes graphQL qui permettront d'accéder à la collection depuis le backend de multi pour cela il fait appel au service
- coll.wordpress.service.ts : récupère les données de la collection sur le CMS WP
Accès générique aux données
Afin de pouvoir gérer plusieurs types de CMS (Wordpress, Directus... et pourquoi pas d'autres) le connecteur ajoute une couche d'abstraction dans common.
Dans src/common/models créer un fichier coll.model.ts qui décrit les champs de la collection.
Dans src/common/validation/schemas créer un fichier coll.schema.ts qui validera chaque attribut de la collection (champs obligatoire, format, dépendance avec d'autres collections)
Gestion du cache
Ajouter une variable d'environnement pour le cache dans /.env.dist et dans .env sur les serveurs : https://github.com/univlorraine/esup-multi/blob/main/dev/connectors/multi-cms-connector/.env.dist
| Bloc de code |
|---|
# Map points - 1 jour par défaut
CACHE_TTL_MAP_POINTS=86400000 |
Ainsi que la récupération des cette variable et le positionnement d'une valeur par défaut dans (https://github.com/univlorraine/esup-multi/blob/main/dev/connectors/multi-cms-connector/src/cache/cache.config.ts)
| Bloc de code |
|---|
// Fallback values if .env is not configured
const fallbackConfig: Record<CacheCollection, number> = {
[...]
[CacheCollection.MAP_POINTS]: 86400000, // 1 day
}; |


