# Journal des modifications
# 2024.2 Guide de migration
# Guide de Migration 2024.2
# Vue d'ensemble
Ce document décrit les migrations à effectuer pour passer de la version 2023.1-stable à la version 2024.2 de la plateforme Anakeen.
# Changements majeurs
| Domaine | Changement | Impact |
|---|---|---|
| Configuration | Migration unification config/env.d/ | Reconfiguration requise |
| Authentification | local-dbaccess.php → localAuthentication.php | Migration authenticators |
| Identifiants | Passage aux BigInt avec génération aléatoire | ORDER BY id ≠ ordre chronologique |
| Comptes utilisateurs | Nouveaux profils de sécurité dédiés | Audit des droits recommandé |
| UI | Migration Kendo UI 2023 → 2024.3 (ESM) | Mise à jour des imports |
| Login | Page de login refaite | - |
# 1. Configuration (.env)
# Changements majeurs
La configuration unifie la gestion de la configuration de la plateforme vers des fichiers .env avec un préfixe
standardisé ANK_.
# Pourquoi ce changement ?
Cette migration répond à deux objectifs principaux :
Unification de la configuration : Toute la configuration est désormais centralisée dans un seul mode (fichiers
.env), éliminant la dispersion entre fichiers XML, base de données et interface admin-center. Cela simplifie la gestion, le déploiement et la reproductibilité des environnements.Renforcement de la sécurité : La suppression des panneaux de configuration dans l'admin-center garantit que seul un administrateur système ayant accès au serveur peut modifier les paramètres critiques de la plateforme. Les utilisateurs applicatifs, même avec des droits élevés dans l'interface web, ne peuvent plus altérer la configuration du système.
# Nouveau système de configuration
- Préfixe
ANK_: Tous les paramètres utilisent désormais ce préfixe standardisé - Fichiers
config/env.d/: Validation automatique des paramètres via schémas - Suppression admin-center : Les panneaux de configuration dans admin-center sont supprimés
# Priorité de chargement des variables
Les variables sont chargées selon l'ordre de priorité suivant :
┌─────────────────────────────────────────────────┐
│ 1. Variables système (export ANK_...) │ ← Priorité MAXIMALE
│ export ANK_CORE_URLINDEX=http://... │
└─────────────────────────────────────────────────┘
↓ Si non définie
┌─────────────────────────────────────────────────┐
│ 2. Fichiers config/env.d/.env* (ANK_...) │
│ ANK_CORE_URLINDEX=http://... │
└─────────────────────────────────────────────────┘
↓ Si non définie (pour paramètres applicatifs uniquement)
┌─────────────────────────────────────────────────┐
│ 3. Base de données (table paramv) │ ← Priorité MINIMALE
│ Valeurs configurées via l'application │
└─────────────────────────────────────────────────┘
Point clé : Les variables système et les fichiers .env écrasent toujours les valeurs en base de données.
Paramètres applicatifs : La plupart des paramètres (préfixés CORE_, AUTHENT_, SMTP_, etc.) peuvent être
récupérés depuis la base de données (table paramv) à l'étape 3 si non définis dans les fichiers de configuration.
Paramètres du vault : VAULT_PATH et VAULT_MAXSIZE sont synchronisés avec le contexte lors de l'exécution de
synchronizeEnv
Paramètres de connexion PostgreSQL : Les paramètres suivants ne passent jamais par la base de données :
PG_CONNECTION_STRING- Chaîne de connexion PostgreSQL (calculée automatiquement depuis les composants de connexion)PG_PASSWORD- Mot de passe PostgreSQL (ajouté automatiquement à la chaîne de connexion)
Note Les valeurs par défaut et des exemples complets de configuration sont disponibles dans les fichiers
config/env.d/#env.example.* de chaque module. :::
Variables de sécurité HTTP disponibles :
| Variable | Description |
|---|---|
ANK_CORE_SECURE_HEADERS_STRICT_TRANSPORT_SECURITY | Header HSTS |
ANK_CORE_SECURE_HEADERS_CONTENT_SECURITY_POLICY | Header CSP |
ANK_CORE_SECURE_HEADERS_CONTENT_SECURITY_POLICY_REPORT_ONLY | Active le mode report-only (TRUE/FALSE) |
ANK_CORE_SECURE_HEADERS_CONTENT_SECURITY_POLICY_REPORT_URI | URI de rapport des violations (/csp-reports/ ou URL) |
ANK_CORE_SECURE_HEADERS_REFERRER_POLICY | Header Referrer-Policy |
ANK_CORE_SECURE_HEADERS_XCONTENT | Header X-Content-Type-Options |
ANK_CORE_SECURE_HEADERS_COOKIE_CONF | Configuration cookies (JSON) |
# 2. Configuration de l'authentification
# Changements majeurs
Le fichier config/local-dbaccess.php utilisé pour configurer les authenticators est remplacé par un nouveau
fichier dédié : config/localAuthentication.php.
Note La migration de la connexion PostgreSQL (passage de `pg_service` à `PG_CONNECTION_STRING`) est gérée
automatiquement par anakeen-control. :::
# Ancien système (2023.1)
Fichier : config/local-dbaccess.php
Ce fichier permettait de surcharger la configuration d'authentification :
<?php
// Exemple de config/local-dbaccess.php (2023.1)
// Mode d'authentification personnalisé selon le domaine
if ($_SERVER['HTTP_HOST'] == 'admin.example.net') {
$authentMode = 'basic';
} else {
$authentMode = 'MyAuthent';
$authentProvidersConfig = [
"MyAuthent" => [
"class" => "MyCompany\\Authent\\MyAuthentProvider"
]
];
$authentProvider = "MyAuthent";
}
# Nouveau système (2024.2)
Fichier : config/localAuthentication.php
La configuration de l'authentification est maintenant séparée dans un fichier dédié :
<?php
// config/localAuthentication.php (2024.2)
// Mode d'authentification personnalisé selon le domaine
if ($_SERVER['HTTP_HOST'] == 'admin.example.net') {
$authentMode = 'internal';
} else {
$authentMode = 'MyAuthent';
$authentProvidersConfig = [
"MyAuthent" => [
"class" => "MyCompany\\Authent\\MyAuthentProvider"
]
];
}
Un fichier d'exemple est fourni : config/localAuthentication.php.sample
# Pourquoi ce changement ?
- Séparation des responsabilités : La connexion PostgreSQL et l'authentification sont maintenant dans des fichiers distincts
- Clarté : Le nom du fichier reflète explicitement son rôle (authentification)
- Maintenance : Plus facile à identifier et maintenir
# 3. APIs et Sécurité
# Nouvelles APIs
# API Gestion des Tokens (refs #2396)
Nouvelle API pour gérer les tokens utilisateur :
- Création, modification, suppression de tokens
- Champ
last_usedajouté pour le suivi d'utilisation
# API Manipulation des Utilisateurs (refs #2390)
- Création et modification d'utilisateurs via API
- Sélection de structure utilisateur personnalisée
- Gestion des erreurs si utilisateur existe déjà
# API Gestion des Groupes (refs #2404)
- CRUD complet sur les groupes
- Gestion des membres
# Renforcements Sécurité
| Fonctionnalité | Description | Référence |
|---|---|---|
| Profils de sécurité | Nouveaux profils pour comptes utilisateurs | #1710 |
| Escape SQL tokens | Les tokens sont échappés dans les requêtes SQL | #2169 |
| Validation MIME | Validation du type MIME des fichiers uploadés | #2242 |
| Journalisation CRUD | Log des actions Create/Read/Update/Delete | #2521 |
| Journalisation auth | Log des succès/échecs d'authentification | #2520 |
| Protection $_SERVER | Prévention pollution des variables serveur | #1467 |
# 4. UI/Frontend
# Changements majeurs
# Migration Kendo UI 2023 → 2024.3
- Mise à jour vers Kendo UI 2024.3
- Modules ESM : Migration vers les imports ES Modules (refs #2333)
# Corrections de composants
| Composant | Correction | Référence |
|---|---|---|
| Smart Grid | Redimensionnement colonnes et visibilité | #2377, #2356 |
| Autocomplete | Cas limites et comportement | #2314, #2331 |
| Modales | Positionnement et affichage | - |
| showError | Propagation de tous les éléments | #2527 |
# Nouveau module
user-interfaces-vue2(v1.0.3) : Module dédié aux composants Vue 2
# 5. Préconisations d'Installation
# Versions PHP
| Version | Statut |
|---|---|
| PHP 8.2 | Minimum requis |
| PHP 8.3 | Supporté |
| PHP 8.4 | Recommandé |
# Architecture Serveur Web
# Serveur recommandé : Apache
Apache reste le serveur web recommandé pour la plateforme Anakeen.
# Handler PHP : php-fpm recommandé
L'utilisation de php-fpm est recommandée (mais non obligatoire) en remplacement de mod_php.
# Base de données
| Version | Statut |
|---|---|
| PostgreSQL 15 | Minimum supporté |
| PostgreSQL 16 | Supporté |
| PostgreSQL 17 | Recommandé |
# 6. Actions de migration et Points d'attention
Cette section regroupe toutes les actions de migration à effectuer et les points d'attention importants.
# 6.1. Configuration (.env)
# Actions de migration
1. Identifier les paramètres actuels
Depuis l'admin-center de l'installation 2023.1 :
- Noter les paramètres personnalisés du panneau Sécurité (headers HTTP)
2. Créer le fichier .env
Points d'attention :
- Tous les paramètres doivent utiliser le préfixe
ANK_ - Les valeurs contenant des caractères spéciaux doivent être entre guillemets
3. Configurer la sécurité HTTP via .env
Migrer les headers de sécurité en utilisant les variables appropriées (voir tableau dans le chapitre 1).
4. Valider et synchroniser la configuration
# Vérification préalable
./ank.php synchronizeEnv --dry-run
# Application des changements
./ank.php synchronizeEnv
Résolution des erreurs :
- Les erreurs de validation indiquent les paramètres mal formatés
- Consulter les schémas dans
config/env.d/pour le format attendu
# 6.2. Authentification
# Actions de migration
1. Vérifier l'existence de local-dbaccess.php
ls -la config/local-dbaccess.php
Si ce fichier n'existe pas dans votre installation 2023.1, aucune action n'est nécessaire.
2. Extraire la configuration d'authentification
Identifier les sections relatives à l'authentification dans config/local-dbaccess.php :
- Configuration de
$authentMode - Configuration de
$authentProvidersConfig - Configuration de
$authentProvider - Configuration de
$authentModeConfig - Configuration de
$useIndexAsGuest
Exemple de contenu à migrer :
// Dans config/local-dbaccess.php (2023.1)
if ($_SERVER['HTTP_HOST'] == 'admin.example.net') {
$authentMode = 'basic';
} else {
$authentMode = 'LDAP';
$authentProvidersConfig = [
"LDAP" => [
"class" => "MyCompany\\Authent\\LdapProvider",
"ldap_host" => "ldap.example.com",
"ldap_port" => 389
]
];
$authentProvider = "LDAP";
}
3. Créer config/localAuthentication.php
Copier la configuration d'authentification dans le nouveau fichier :
# Créer le nouveau fichier à partir de l'exemple
cp config/localAuthentication.php.sample config/localAuthentication.php
# Éditer le fichier pour y ajouter votre configuration
Exemple de config/localAuthentication.php (2024.2) :
<?php
// Migration depuis local-dbaccess.php
if ($_SERVER['HTTP_HOST'] == 'admin.example.net') {
$authentMode = 'internal';
} else {
$authentMode = 'LDAP';
$authentProvidersConfig = [
"LDAP" => [
"class" => "MyCompany\\Authent\\LdapProvider",
"ldap_host" => "ldap.example.com",
"ldap_port" => 389
]
];
}
4. Validation
Tester l'authentification après migration :
- Accéder à l'interface de login
- Vérifier que le mode d'authentification est correctement appliqué
- Tester la connexion avec différents comptes selon votre configuration
Note La migration de la connexion PostgreSQL (passage de `pg_service` à `PG_CONNECTION_STRING`) est gérée
automatiquement par anakeen-control. :::
# 6.3. Sécurité
# Actions de migration
Implémenter les profils de sécurité
Les comptes utilisateurs disposent désormais de profils de sécurité dédiés :
- Auditer les droits actuels des comptes utilisateurs
- Créer les profils de sécurité correspondants
- Configurer les droits d'accès via les profils plutôt que par ACL directes
- Associer les profils aux comptes
Configurer la journalisation d'audit (optionnel)
Si besoin, configurer un handler pour la journalisation d'audit (voir nouveautés).
# Points d'attention
Nouveau paramétrage des comptes utilisateurs (refs #1710)
Les comptes utilisateurs (IUSER) disposent désormais de nouvelles fonctionnalités :
- Profils de sécurité dédiés : Chaque compte peut avoir un profil de sécurité spécifique
- Aide à la saisie : Interface améliorée pour la création et modification des utilisateurs
Points de vigilance :
- Les scripts de migration IUSER ont été corrigés - vérifier la cohérence des comptes après migration
- Les profils de sécurité par défaut peuvent différer de la version précédente
- Auditer les droits des comptes après migration pour s'assurer de leur conformité
# 6.4. UI/Frontend
# Actions de migration
1. Mettre à jour les imports Kendo UI vers ESM
Utiliser la branche esm d'import de kendo.
2. Passage en user-interfaces-vue2
Tous les imports en @user-interfaces/ doivent être transformés en @user-interfaces-vue2.
3. Tester la compatibilité des composants Vue
Vérifier le bon fonctionnement des composants après migration.
# 6.5. Infrastructure
# Actions de migration
1. Mettre à jour PHP
- Installer PHP 8.3 minimum (PHP 8.4 recommandé)
2. Configurer le serveur web
- Configurer Apache avec php-fpm (recommandé) ou mod_php
3. Mettre à jour PostgreSQL
- Mettre à jour vers PostgreSQL 17 (recommandé)
# 6.6. Points d'attention généraux
# Nouveau calcul des identifiants
(refs #2120)
Changement de comportement : Le système de génération des identifiants de Smart Elements a été modifié :
- Identifiants BigInt : Les identifiants utilisent désormais le type BigInt pour supporter de grands volumes de données
- Génération aléatoire : Par défaut, les identifiants ne sont plus séquentiels mais générés aléatoirement
- Ordre par ID : Le tri par
idne reflète plus l'ordre chronologique de création
Conséquences :
| Aspect | Ancien comportement | Nouveau comportement |
|---|---|---|
| Type ID | Integer (32 bits) | BigInt (64 bits) |
| Séquence | Incrémental | Aléatoire |
| Tri par ID | Ordre de création | Ordre arbitraire |
Actions nécessaires :
- Vérifier les requêtes SQL qui supposent un ordre chronologique via
ORDER BY id - Remplacer par
ORDER BY cdateouORDER BY mdatepour un tri chronologique - Un générateur d'ID alternatif peut être configuré si nécessaire (refs #2347)
# 7. Checklist de Migration
# Configuration
- Créer le fichier dans
config/env.d/ - Migrer les headers de sécurité HTTP
- Exécuter
synchronizeEnv --dry-run - Valider la configuration avec
synchronizeEnv
# Authentification
- Vérifier l'existence de
config/local-dbaccess.php - Extraire la configuration d'authentification
- Créer
config/localAuthentication.php - Tester l'authentification
# Infrastructure
- Installer PHP 8.3+ (8.4 recommandé)
- Configurer Apache avec php-fpm
- Mettre à jour PostgreSQL vers 17
# Code
- Mettre à jour les imports Kendo UI (ESM)
- Transformer les imports
@user-interfaces/en@user-interfaces-vue2 - Tester la compatibilité des composants Vue
- Vérifier les requêtes
ORDER BY id(remplacer parORDER BY cdatesi nécessaire)
# Sécurité
- Auditer les droits actuels des comptes utilisateurs
- Créer les profils de sécurité
- Associer les profils aux comptes
- Configurer un handler pour la journalisation d'audit (optionnel)
- Tester l'authentification
# 2024.1 Guide de migrations
# Backend
# Stack technique
Les dépendances systèmes ont été mise à jour avec les versions suivantes :
- PHP 8.2 - 8.3
- Postgresql 14, 15 et 16
# Migration vers PHP 8.3
La montée de version vers PHP 8.3 s’accompagne de fonctions dépréciées et de vérifications plus fortes sur les propriétés.
L’ensemble des modifications PHP 8.3 sont disponibles ici.
Bien qu’ils n’impactent pas l’exécution du code, il est recommandé de corriger ces avertissements de dépréciation, car ils seront considérés comme des erreurs à partir de la version 9 de PHP.
# PHP
Le fonctionnement en mod_php est déprécié et il est maintenant conseillé de configurer son server via php-fpm.
Les performances sont nettement meilleur et la gestion de la charge facilitée.
# Frontend
# Support navigateur
Le support navigateur est le suivant :
- Chrome : deux dernières versions stables
- Edge : deux dernières versions stables
- Firefox : deux dernières versions stables
- Firefox ESR : dernière version stable
Les OS supportés sont : windows, Linux et MacOs
# Vue 2.7 et Vue NES
Nous supportons maintenant vue 2.7 et Vue NES.
Nos interfaces graphiques standards sont construites avec vue NES.
# Kendo 2024
Le passage en kendo 2024 s'accompagne de quelques modifications de css :
- la librairie d'icône utilisée est maintenant la librairie SVG et plus la librairie font-icon
Il est possible de réintégrer celle-ci en créant votre fichier CSS.
La version utilisée pour la partie jquery est 2024.3.806.
La version utilisée pour la partie vue est 5.2.0. Vous pouvez trouver le
changelog
# Axios
Axios a été déprécié et supprimé de la base de code. Vous pouvez la réintégrer en l'injectant dans vue.$http.
# Optimisations
Plusieurs éléments ont été améliorés pour faciliter la gestion des dépendances :
- le module de cli d'aide au développement à été modernisé et n'utilise plus gulp
- les font d'icon (kendo et font-awesome) ont été supprimés au profit de la font SVG de kendo
# Outils de build
Nous recommandons maintenant d'utiliser Vite comme outil de build dans le cadre de vos applications.
# 2023.1 Guide de migrations
# Stack technique
Les dépendances systèmes ont été mise à jour avec les versions suivantes :
- PHP 8.1 - 8.2
- Postgresql 13.9, 14 et 15
# Support navigateur
Le support navigateur est toujours le suivant :
- Chrome : deux dernières versions stables
- Edge : deux dernières versions stables
- Firefox : deux dernières versions stables
- Firefox ESR : dernière version stable
Les OS supportés sont : windows, Linux et MacOs
# Migration vers PHP 8.2
La montée de version vers PHP 8.2 s’accompagne de fonctions dépréciées et de vérifications plus fortes sur les propriétés.
En particulier :
- Les fonctions
utf8_encodeetutf8_decodesont dépréciées. - Pour utiliser une propriété d'une classe, il faut qu'elle soit obligatoirement déclarée dans la classe.
L’ensemble des modifications PHP 8.2 sont disponibles ici.
Bien qu’ils n’impactent pas l’exécution du code, il est recommandé de corriger ces avertissements de dépréciation, car ils seront considérés comme des erreurs à partir de la version 9 de PHP.
# Vue 2.7
Le support de vue passe en vue 2.7 ce qui est normalement sans impact sur les applications existantes
# Kendo 2023
Le passage en kendo 2023 est sans impact majeur si votre version précédente est une 2022. Sinon, il vous faut appliquer les méthodes de changement de la 2022.
# Sécurité et CSP
La version 2023 est la première à mettre en place une CSP contraignante. Celle-ci n'est activée que pour les nouvelles installation mais elle peut aussi manuellement être activée sur une application existante. Dans ce cas, pour la partie kendo un guide est à votre disposition.
# Outils de build
Nous recommandons maintenant d'utiliser Vite comme outil de build dans le cadre de vos applications.
# 2023.1 Nouveautés
# Extended Smart Field et extended Smart Field en édition
Les Smart Fields étendus ont été entièrement reconçu et sont maintenant animés par un système de file et de worker.
Pour plus d'information :
documentation détaillée des Smart Fields étendus.
# Dashboard
Un nouveau module de dashboard est à votre disposition. Il vous permet de construire rapidement et efficacement des tableau de bord.
Celui ci est aussi animé par le système de file et de worker.
Pour plus d'information : documentation des tableaux de bord
# Sécurité
Un nouveau panneau de l'administration dédié à la sécurité fait son apparition.
Celui-ci vous permet de gérer les points suivants :
- la liste des utilisateurs pouvant devenir super administrateur,
- les logs de promotion en super administrateur,
- une liste de
headerhttp permettant de durcir l'éxécution du code et l'utilisation du https.
Pour plus d'information : header de sécurité
# 2022.1 Guide de migrations
# Stack technique
Les dépendances systèmes ont été mise à jour avec les versions suivantes :
- PHP 8 et 8.1
- Postgresql 12.9, 13 et 14
# Support navigateur
Le support navigateur est toujours le suivant :
- Chrome : deux dernières versions stables
- Edge : deux dernières versions stables
- Firefox : deux dernières versions stables
- Firefox ESR : dernière version stable
Les OS supportés sont : windows, Linux et MacOs
# Migration vers PHP 8.1
La montée de version vers PHP 8.1 s’accompagne de fonctions dépréciées et de vérifications plus fortes au niveau de la cohérence des types manipulés.
En particulier :
- Un argument null passé à une fonction attendant un type non nul lèvera un avertissement.
- La surcharge d’une fonction sans type de sortie lèvera un avertissement lors de son appel.
- Les fonctions
pg_escape_string,pg_escape_identifieretpg_escape_literaldemandent explicitement l’objetPgSql\Connectionen premier argument. En conséquence, nous fournissons désormais les fonctions\Anakeen\Core\Utils\Postgres::escapeString,\Anakeen\Core\Utils\Postgres::escapeIdentifieret\Anakeen\Core\Utils\Postgres::escapeLiteralqui fournit le même comportement.
L’ensemble des modifications PHP 8.1 sont disponibles ici.
Bien qu’ils n’impactent pas l’execution du code, il est recommandé de corriger ces avertissements de dépréciation, car ils seront considérés comme des erreurs à partir de la version 9 de PHP.
De plus il est important de faire attention à la locale utilisée :
https://www.php.net/manual/en/migration80.incompatible.php#:~:text=The%20default%20locale,from%20the%20default.
Afin de retrouver le même comportement (utiliser la locale de l'environnement) il faut :
<?php
setlocale(LC_ALL, "");
# Migration vers Kendo UI 2022
La partie interface utilisateur a été modifiée pour prendre en compte les nouveautés de kendo 2022.
Si vous avez modifié les interfaces ou créé vos propres interfaces, vous devez vous aussi prendre en compte cette
nouvelle version.
Vous avez ici un post de blog qui décrit les modifications et leur motivation.
Le guide de migration est ici.
# Migration vers Bootstrap 5
La partie utilisateur a été modifiée pour prendre en compte la nouvelle version de Bootstrap. Si vous avez modifié les interfaces ou créé vos propres interfaces, vous devez vous aussi prendre en compte cette nouvelle version.
Le guide de migration est ici
# Migration du module de Tranformation-serveur
- Stopper le serveur de transformation
- Désactiver son redémarrage automatique
- Déplacer la configuration du serveur
TEdans un dossier de sauvegarde
Exemple:
mkdir /tmp/backup
mv /opt/transformation-server/ /tmp/backup
- Réinstaller le serveur
TEen suivant cette documentation : Documentation d'installation du serveur de transformation.
TIP
Il est possible de voir certaines parties de la configuration propre au système d'exploitation dans le dossier de
sauvegarde (dans l'exemple : /tmp/backup).
- Une fois que le serveur de transformation fonctionne avec la nouvelle version, il reste à supprimer le dossier de sauvegarde.
# 2022.1 Nouveautés
# PSALM
Toutes nos classes ont été analysées et annotées pour supporter PSALM au niveau 5.
Vous pouvez donc l'utiliser au sein de vos projets.
# Vue 3
Tous les composants de notre bibliothèque d'interface sont maintenant compilés pour vue2 et pour vue3.
Rendez vous dans le chapitre sur les composants pour en savoir plus.
# 2021.1 Modifications
# Configuration : Les profils et rôles standards
- Afin d'ajouter de la granularité dans la gestion des droits, les profils et rôles standards de la plateforme ont été modifiés / ajoutés.
- Le groupe
Administration(gadmin) possède désormais tous les rôles de la plateforme, il n'est donc plus référencé directement dans les profils.
Dû au fait que le groupe Administration(gadmin) intègre les rôles, aucune migration n'est nécessaire.
Pour plus d'information sur les profils, se référer à : Documentation.
# Nouveaux profils et rôles standards
| Titre de profil | Nom logique profil | Smart Structure associée | Type profil | Droit |
|---|---|---|---|---|
| Profils de création de dossier | PRF_DIR_CREATION | DIR | PFAM |
|
| Administration - Access all | PRF_ADMIN_EDIT | PDOC |
| |
| Création des comptes | PRF_ACCOUNTS_CREATION | IUSER, IGROUP | PFAM |
|
| User itself | PRF_IUSER_OWNER | IUSER | PDOC |
|
| Profils de création des modèles de mails | PRF_MAILTEMPLATE_CREATION | MAILTEMPLATE | PFAM |
|
| Profils d'accès des modèles de mails | PRF_MAILTEMPLATE_ACCESS | MAILTEMPLATE | PDOC |
|
| Accès des masques de saisie et des contrôles de vues | PRF_RENDERUI_CREATION | MASK, CVDOC | PFAM |
|
| Profils d'accès des masques de saisies | PRF_MASK_ACCESS | MASK | PDOC |
|
| Profils d'accès des contrôles de vues | PRF_CVDOC_ACCESS | CVDOC | PDOC |
|
| Profils de création des tâches programmées | PRF_TASK_CREATION | TASK | PFAM |
|
| Administration des tâches et minuteurs | PRF_TASK_ACCESS | TASK | PDOC |
|
| Profils de création des rôles | PRF_ROLE_CREATION | ROLE, BASE | PFAM |
|
| Profils d'accès pour la structure BASE | PRF_BASE_ACCESS | BASE | PDOC |
|
| Profils d'accès des rôles | PRF_ROLE_ACCESS | ROLE | PDOC |
|
| Création des descriptions de formulaire | PRF_ADMIN_RENDERDESCRIPTION_CREATION | RENDERDESCRIPTION | PFAM |
|
| Administration des descriptions de formulaire | PRF_RENDERDESCRIPTION_ACCESS | RENDERDESCRIPTION | PDOC |
|
| Profil recherche | PRF_SEARCHES | SEARCH, MSEARCH, DSEARCH, REPORT | PFAM |
|
| Profils de création document recherche | PRF_SSEARCH_CREATION | SSEARCH | PFAM |
|
| Profils de création de profil | PRF_PROFILE_CREATION | PDOC, PDIR, PSEARCH, PFAM, FIELDACCESSLAYER, FIELDACCESSLAYERLIST | PFAM |
|
| Profils d'accès des profils | PRF_PROFILE_ACCESS | PDOC, PDIR, PSEARCH, PFAM, FIELDACCESSLAYER | PDOC |
|
| Profil mail | PRF_MAIL | PFAM |
| |
| Profil document mail | PRF_DOC_MAIL | PDOC |
| |
| Profil sentmessage | PRF_SENTMESSAGE | SENTMESSAGE | PFAM |
|
| Profil document sentmessage | PRF_DOC_SENTMESSAGE | SENTMESSAGE | PDOC |
|
| Profil Structure FILE | PRF_FILE_STRUCT | FILE, IMAGE | PFAM |
|
| Profil FILE | PRF_FILE_ACCESS | FILE, IMAGE | PDOC |
|
| Profils de création des minuteurs | PRF_TIMER_CREATION | TIMER | PFAM |
|
| Profils d'accès des minuteurs | PRF_TIMER_ACCESS | TIMER | PDOC |
|
| Profils de création des rôles | PRF_WDOC_CREATION | WDOC | PFAM |
|
| Profils d'accès des cycles de vie | PRF_WDOC_ACCESS | WDOC | PDOC |
|
| Profil document recherche | PRF_DOC_SEARCHES | SEARCH, MSEARCH, DSEARCH, SSEARCH, REPORT | PSEARCH |
|
| Modification administrateur | PRF_ADMIN_IGROUP | IGROUP | PDIR |
|
| Profils de création pour les groupes | GROUP | GROUP | PDOC |
|
| Profils d'accès document group | PRF_GROUP_ACCESS | GROUP | PDOC |
|
*Droit appartenant à la Smart Structure.
# Anciens profils et rôles standards
| Titre de profil | Nom profil | Smart Structure associée | Type profil | Droit |
|---|---|---|---|---|
| Création administrateur | PRF_ADMIN_CREATION | FIELDACCESSLAYER, FIELDACCESSLAYER, IGROUP, MAILTEMPLATE, MASK, CVDOC, ROLE, TASK, DIR, BASE, SSEARCH, TIMER, WDOC | PFAM |
|
| Création des descriptions de formulaire | PRF_ADMIN_RENDERDESCRIPTION_CREATION | RENDERDESCRIPTION | PFAM |
|
| Création des comptes | PRF_ACCOUNTS_CREATION | IUSER | PFAM |
|
| Profil recherche | PRF_SEARCHES | SEARCH, MSEARCH, DSEARCH, REPORT | PFAM |
|
| Profil profil | PRF_PROFILE | PDOC, PDIR, PSEARCH, PFAM | PFAM |
|
| Profil mail | PRF_MAIL | PFAM |
| |
| Profil sentmessage | PRF_SENTMESSAGE | SENTMESSAGE | PFAM |
|
| Profil Structure FILE | PRF_FILE_STRUCT | FILE, IMAGE | PFAM |
|
| Profil document recherche | PRF_DOC_SEARCHES | SEARCH, MSEARCH, DSEARCH, SSEARCH, REPORT | PSEARCH |
|
| Modification administrateur | PRF_ADMIN_IGROUP | IGROUP | PDIR |
|
| Administration - Access all | PRF_ADMIN_EDIT | PDOC |
| |
| Administration | PRF_ADMIN_ACCESS | FIELDACCESSLAYER, MAILTEMPLATE, MASK, ROLE | PDOC |
|
| Administration des tâches et minuteurs | PRF_TASK_ACCESS | TASK, TIMER | PDOC |
|
| Administration des descriptions de formulaire | PRF_RENDERDESCRIPTION_ACCESS | RENDERDESCRIPTION | PDOC |
|
| User itself | PRF_IUSER_OWNER | IUSER | PDOC |
|
| Profil document mail | PRF_DOC_MAIL | PDOC |
| |
| Profil document sentmessage | PRF_DOC_SENTMESSAGE | SENTMESSAGE | PDOC |
|
| Profil FILE | PRF_FILE_ACCESS | FILE, IMAGE | PDOC |
|
*Droit appartenant à la Smart Structure.
# Configuration : Changement de procédure de génération du Etag
L'algorithme de hachage utilisé afin de générer le Etag est le md4 au lieu de sha1.
# Configuration : Ajout d'une balise utilisateur courant dans les modèles de mails
La balise current-user-email a été rajoutée au modèle de mail afin de pouvoir explicitement utiliser l'adresse mail de
l'utilisateur connecté.
# Configuration : Syntaxe d'un script de migration
Il faut utiliser un NameSpace dans les balises Xml.
La balise ol devient logical-operator.
# Configuration : Nom des fichiers et méthodes dans un script de migration
Il est désormais possible de mettre des chiffres dans les noms des fichiers et méthodes appelés lors d'un script de migration.
<?xml version="1.0"?>
<migration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="migrationRules.xsd">
<action id="migrationTest"
label="test migration script with numbers in the class and method name">
<condition>
<php-assert-false label="Verify baseElem has not test tag value at true" callable="Dcp\Pu\TestMigrationScriptCallable213::returnIfFoundSE213()"/>
</condition>
<process>
<php label="Set tag test value at true" callable="Dcp\Pu\TestMigrationScriptCallable213::setTag213()"/>
</process>
<check>
<php-assert-true label="Verify baseElem has test tag value at true" callable="Dcp\Pu\TestMigrationScriptCallable213::returnIfFoundSE213()"/>
</check>
</action>
</migration>
# Configuration : Ajout d'une gestion d'erreur sur les xml de routes
Si dans les fichiers routes.xml plusieurs balises de type :
- routes
- accesses
- middlewares
- parameters
sont présentes, une erreur est levée lors de l'import.
# Interface : Nouvelle interface de gestion des groupes et des utilisateurs
Il y a désormais deux nouvelles entrées dans le centre d'administration.
# Gestion des utilisateurs
Cette entrée sert à la gestion des utilisateurs.
Il est possible d'en créer, de leur donner des rôles et de modifier les informations associées.
Pour plus d'information se référer à la documentation de l'interface utilisateur
# Gestion des groupes
Cette entrée sert à la gestion des groupes.
Il est possible d'en créer, de leur donner des rôles et de modifier les informations associées.
Pour plus d'information se référer à la documentation de l'interface des groupes
# JS : Changement de retour de la méthode AnkSmartElement.getValue() pour les Smart Field de type array
clientname | society |
|---|---|
| Client 1 | Entreprise 1 |
| Client 2 | Entreprise 2 |
| Client 3 | Entreprise 3 |
const arrayValue = controller.getValue("array_other_clients");
console.log(arrayValue);
# Nouveau retour
Le getValue retourne les valeurs du tableau par ligne.
Output :
[
{
clientname: {value: "Client 1", displayValue: "Client 1"}
society: {value: "Entreprise 1", displayValue: "Entreprise 1"}
},
{
clientname: {value: "Client 2", displayValue: "Client 2"}
society: {value: "Entreprise 2", displayValue: "Entreprise 2"}
},
{
clientname: {value: "Client 3", displayValue: "Client 3"}
society: {value: "Entreprise 3", displayValue: "Entreprise 3"}
}
]
# Ancien retour
Le retour du getValue retournait les valeurs du tableau par colonne.
Output :
[
{
bill_clientname: {value: "Client 1", displayValue: "Client 1"}
bill_clientname: {value: "Client 2", displayValue: "Client 2"}
bill_clientname: {value: "Client 3", displayValue: "Client 3"}
},
{
bill_society: {value: "Entreprise 1", displayValue: "Entreprise 1"}
bill_society: {value: "Entreprise 2", displayValue: "Entreprise 2"}
bill_society: {value: "Entreprise 3", displayValue: "Entreprise 3"}
}
]
Pour plus d'information sur le getValue, se référer à : Documentation.
# JS : Changement de fonctionnement du beforeSave
Le beforeSave enregistre toutes les données du smart element, en plus de celles modifiées.
# JS : Ajout d'une option au SmartElementController.hideSmartField
Il est désormais possible de cacher une cellule d'un tableau avec la méthode hideSmartField. Pour cela il suffit de
rajouter en deuxième argument de la méthode l'index à cacher.
exemple:
const index = 2;
controller.hideSmartField("nom_du_field", index)
WARNING
- Si l'index n'est pas valide ou
- Si le nom field utilisé n'est pas un tableau,
la méthode throw une Exception
# JS : Ajout d'une option au SmartElementController.showSmartField
Il est désormais possible de ré-afficher une cellule d'un tableau avec la méthode showSmartField. Pour cela il suffit
de rajouter en deuxième argument de la méthode l'index à ré-afficher.
Exemple:
const index = 2;
controller.showSmartField("nom_du_field", index)
WARNING
- Si l'index n'est pas valide ou
- Si le nom field utilisé n'est pas un tableau,
la méthode throw une Exception
# JS : La pop-up de confirmation dcpConfirm
Si dans la clef messages une entrée extraMessage est ajoutée, alors un troisième bouton sur mis sur la pop-up. Il
deviendra alors le bouton principal et donc sera celui qui sera affiché en bleu.
confirmWindow = $("body").dcpConfirm({
title: i18n.___("Confirm close document", "ddui"),
width: "65rem",
height: "20rem",
maxWidth: $(window).width(),
messages: {
okMessage: "Poursuivre les modifications",
cancelMessage: "Abandonner les modifications et fermer",
extraMessage: "Enregistrer et fermer",
htmlMessage: "Vous avez effectué une ou plusieurs modifications sur le formulaire `Titre du formulaire`",
textMessage: ""
}

# JS : Ajout de la modification d'un field-enum dynamiquement
Il est possible de modifier dynamiquement les choix disponibles sur un field-enum par rapport aux valeurs des autres fields sur la même structure.
Evènement smartFieldEnumResponse
Evènement smartFieldEnumSearch
Évènement smartFieldEnumSelect
Méthode permettant de définir une nouvelle liste d'énuméré sur le Smart Field Enum
# Typescript
Amélioration du support TypeScript.refs #666, #667, #1089
# JS : Ajout d'un switch pour les smart field de type enum
Une option de rendu a été ajouté permettant de représenter un énumeré simple a l'aide d'un bouton switch.
Pour plus d'information se référer a la Documentation
# PHP : Gestion d'erreur de la méthode Anakeen\Core\Internal\SmartElement::getFileLink()
# Nouvelle gestion d'erreur de la méthode getFileLink
Quand $attrid ne désigne pas un smart field ou que le smart field n'est pas de type fichier (file ou image) la
fonction est interrompue et une exception est levée.
$se = SEManager::getDocument(…)
$link = $se->getFileLink('smart_field_vide'); //link vaut ""
$link = $se->getFileLink('smart_field_non_existant'); //une exception de type … est levée /**
# Ancienne gestion d'erreur de la méthode getFileLink
Quand $attrid ne désigne pas un smart field ou que le smart field n'est pas de type fichier (file ou image) la
fonction continuait son exécution et retournait une chaine de caractère vide.
$se = SEManager::getDocument(…)
$link = $se->getFileLink('smart_field_vide'); //link vaut ""
$link = $se->getFileLink('smart_field_non_existant'); //link valait ""
# PHP : Changement de signature de la méthode Anakeen\Core\Account::updateUser()
Les paramètres concernant la durée de validité des mots de passe ont été supprimés.
La méthode Anakeen\Core\Account::updateUser() a 2 arguments en moins, l'expiration et le nombre de jours de validité
du mot de passe. Il faut corriger les appels a cette méthode.
# Nouvelle signature
/**
* update user from IUSER document
*
* @param int $fid document id
* @param string $lname last name
* @param string $fname first name
* @param string $login login
* @param string $status 'A' (Activate) , 'D' (Desactivated)
* @param string $pwd1 password one
* @param string $pwd2 password two
* @param string $extmail mail address
* @param array $roles
* @param int $substitute system substitute id
*
* @return string error message
*/
public function updateUser(
$fid,
$lname,
$fname,
$login,
$status,
$pwd1,
$pwd2,
$extmail = '',
array $roles = [-1],
$substitute = -1
)
# Ancienne signature
/**
* update user from IUSER document
*
* @param int $fid document id
* @param string $lname last name
* @param string $fname first name
* @param string $deprecatedExpires expiration date
* @param int $deprecatedPassdelay password delay
* @param string $login login
* @param string $status 'A' (Activate) , 'D' (Desactivated)
* @param string $pwd1 password one
* @param string $pwd2 password two
* @param string $extmail mail address
* @param array $roles
* @param int $substitute system substitute id
*
* @return string error message
*/
public function updateUser(
$fid,
$lname,
$fname,
$deprecatedExpires,
$deprecatedPassdelay,
$login,
$status,
$pwd1,
$pwd2,
$extmail = '',
array $roles = [-1],
$substitute = -1
)
# PHP : Ajout de la méthode \Anakeen\Ui\BaseRenderOptions::addHtmlClass
Cette option permet de rajouter des classes HTML personnalisées à la racine de la DOM du Smart Field ou du Smart Element.
# PHP : Ajout de la méthode \Anakeen\Ui\BaseRenderOptions::removeHtmlClass
Cette option permet de retirer une classe HTML personnalisées préalablement ajoutées par la méthode
\Anakeen\Ui\BaseRenderOptions::addHtmlClass.
# PHP : Ajout de la méthode \Anakeen\Ui\BaseRenderOptions::setHtmlAttribute
Cette option permet de définir un attribut HTML personnalisé à la racine de la DOM du Smart Element ou du Smart Field.
# PHP : Ajout de la classe \Anakeen\Search\Filters\AndOperator
La classe AndOperator permet d'utiliser l'opérateur logique "AND" sur plusieurs filtres.
# PHP : Ajout d'un filtre de type file
Lorsqu'une grille filtrable présente une colonne sur un champ de type file, il est désormais possible de filtrer les
résultats par rapport au fichier.
# Librairie externe : Versions de PostgreSQL supportées
Les versions de PostgreSQL supportées sont : 11 ≤ version ≤ 13.
# Ajout de l'extension intarray dans PostgreSQL
Ajout de cette extension pour des améliorations de performance
# Ajustement des filtres de tableau de type int
Utilisation des fonctions internes de PostgreSQL pour les filtres sur le int[].
L'extension intarray ajoute des opérateurs sur les int[] qui ne sont pas compatibles avec des tableaux d'entier contenant des valeurs nulles.
Il est donc nécessaire dans certain cas, notamment les tableaux d'entier, de ne pas utiliser ces opérateurs spécifiques, mais les opérateurs génériques qui acceptent de traiter les valeurs nulles.
# Librairie externe : Versions de PHP supportées
Les versions de PHP supportées sont : 7.4 ≤ version ≤ 8.0.
Lien vers le journal de modification de PHP
# Librairie externe : Version de Kendo UI utilisée
La version de Kendo UI sur la plateforme est montée en version 2021.2.616.
Lien vers le journal de modification de kendo UI
# Librairie externe : Version de JQuery utilisée
La version de JQuery sur la plateforme est montée en version 3.5.
Lien vers le journal de modification de JQuery
# Configuration : Nouvelle représentation des groupes et utilisateurs
Les représentations des formulaires des Smart Structures IUSER et IGROUP ont été modifiées.
# Nouvelle représentation de la Smart Structure IUSER

# Ancienne représentation de la Smart Structure IUSER

# Nouvelle représentation de la Smart Structure IGROUP

# Ancienne représentation de la Smart Structure IGROUP

# Module test-tools
Suppression du module test-tools.
# Configuration : Installation et mise à jour de modules
La meta-commande @anakeen/anakeen-cli compose a été dépréciée. Ainsi les commandes @anakeen/anakeen-cli install et
@anakeen/anakeen-cli upgrade ont été remplacées respectivement par les commandes @anakeen/anakeen-platform install
et @anakeen/anakeen-platform update.
Pour plus de détails, vous pouvez consulter la documentation de l'outil en ligne de command Anakeen-Platform.
# Ajout d'une option autoScrollTop
Une option qui permet de définir si l'on défile automatiquement en haut d'une SmartGrid lors de tout changement sur celle-ci.
Pour plus d'information se référer à la Documentation
# 2021.1 Guide de migrations
# Configuration : Les profils et rôles standards
# Suppression de droits sur les profils de Smart Structure
Les rôles / groupes suivants ont été supprimés sur les profils des Smart Structure:
| PRF_WDOC_CREATION | PRF_SENTMESSAGE | PRF_TIMER_CREATION | PRF_ADMIN_RENDERDESCRIPTION_CREATION | PRF_ACCOUNTS_CREATION | PRF_DIR_CREATION | |
|---|---|---|---|---|---|---|
| view | all | all | all | all | system_administrator | all |
| create | system_administrator | system_administrator | ||||
| icreate | system_administrator | system_administrator |
# Suppression de droits sur les profils de Smart Element
Les rôles / groupes suivants qui ont été supprimés sur les profils des Smart élément:
| PRF_TASK_ACCESS | PRF_RENDERDESCRIPTION_ACCESS | PRF_IUSER_OWNER | PRF_ADMIN_IGROUP | PRF_FILE_ACCESS | PRF_DOC_SENTMESSAGE | |
|---|---|---|---|---|---|---|
| view | system_administrator | system_administrator | system_administrator | system_administrator | all | |
| edit | system_administrator | system_administrator | system_administrator | system_administrator | system_administrator | all |
| delete | system_administrator | system_administrator | system_administrator | system_administrator | all | |
| open | system_administrator | |||||
| modify | system_administrator |
Pour plus d’informations sur la modification liée aux rôles et aux profils, se référer à : Journal de modification.
# Composant VueJS SmartElementGrid : Modification de l’exportation au format XLSX
L’exportation de données de la grille de Smart Element a été remaniée et a vu l’apparition d’une
nouvelle propriété exportOptions. En retour l’ancienne propriété
defaultExportButton a été dépréciée au profit de
exportOptions.
Enfin, la signature de la méthode export a été modifiée et prend en entrée un objet d’options et une fonction qui
détermine le nom du fichier. Pour plus d’informations, se référer à la documentation de
la propriété exportOptions et de
la méthode export de la grille.
# Représentation des Smart Fields : Changement des règles CSS entourant les champs portant des descriptions
Afin de respecter le positionnement de chaque option, les règles CSS des
descriptions détaillées ont été retravaillées. Ainsi la balise englobant
une description a été passée en
flex.
# JS : Changement de retour de la méthode AnkSmartElement.getValue()
Le retour de la méthode ne se parcourt plus de la même manière.
Pour plus d’information sur le getValue, se référer à : Journal de modification.
# JS : Changement de signature de la méthode AnkSmartElement.setValue()
La méthode du contrôleur de Smart Element setValue a été remaniée afin de
pouvoir modifier les valeurs pour des colonnes de tableaux qui ont l’option "multiple". En conséquence, la méthode a vu
l’ajout d’un objet options dans sa signature. De plus, l’utilisation interne d’un index a été dépréciée au profit de
l’utilisation du nouvel objet options. Enfin, une vérification sur la cohérence des options d’index a été rajoutée.
Nous vous conseillons donc de privilégier des appels utilisant l’objet options. Par exemple :
Utilisation de la méthode setValue en version 2020
scopedController.setValue("myColumn", { value: "my value on the third row", index: 2 });
Utilisation de la méthode setValue en version 2021
scopedController.setValue("myColumn", { value: "my value on the third row" }, { index: 2 });
Pour plus d’informations, vous pouvez vous référer à
la documentation de la méthode setValue.
# PHP : Gestion d’erreur de la méthode Anakeen\Core\Internal\SmartElement::getFileLink()
Vous devez modifier la gestion d’erreur de cette fonction. En effet, il faut entourer l’appel de cette fonction avec un "try" "catch".
En cas d’erreur, la fonction déclenche une exception Anakeen.
$se = SEManager::getDocument(…)
try {
$imgUrl = $doc->getFileLink("field_not_Exist");
} catch (\Anakeen\Exception $err) {
// Dans ce cas le smart field n’existe pas, mais d’autre exception peuvent être levée.
error_log(sprintf("Une exception a été levée. (Le field recherché n’existe pas)\n Erreur : %s"), $err->getMessage();
}
Pour plus d’information sur la modification liée au getFileLink, se référer à :
Journal de modification.
# PHP : Changement de signature de la méthode Anakeen\Core\Account::updateUser()
La signature de la méthode Anakeen\Core\Account::updateUser() a changé, elle a deux arguments en moins, l’expiration
et le nombre de jours de validité du mot de passe. Il faut enlever les paramètres $expires et $passdelay.
# Ancienne signature
$user = $this->getAccount();
$err = $user->updateUser(
$fid,
$lname,
$fname,
$expires,
$passdelay,
$login,
$status,
$pwd1,
$pwd2,
$extmail,
$roleIds,
$substituteAccountId
);
# Nouvelle signature
$user = $this->getAccount();
$err = $user->updateUser($fid, $lname, $fname, $login, $status, $pwd1, $pwd2, $extmail, $roleIds, $substituteAccountId);
Pour plus d’information sur la modification liée au updateUser, se référer à : Journal de modification.
# Bibliothèque externe : Version de JQuery utilisée
Le principal changement se situe dans les menus. En effet, les balises ne doivent plus être auto-fermantes.
Par exemple :
$menu = new BarMenu();
$myItem = new ItemMenu("myItem", "my item");
$myItem->setHtmlAttribute("class", "menu--my--item menu--left");
$myItem->setBeforeContent(sprintf('<div style="color:%s" class="fa fa-square" />', "#157EFB"));
$menu->appendElement($myItem);
return $menu;
La ligne surlignée ci-dessus doit être changée comme la ligne surlignée ci-dessous :
$menu = new BarMenu();
$myItem = new ItemMenu("myItem", "my item");
$myItem->setHtmlAttribute("class", "menu--my--item menu--left");
$myItem->setBeforeContent(sprintf('<div style="color:%s" class="fa fa-square"></div>', "#157EFB"));
$menu->appendElement($myItem);
return $menu;
Pour plus d’information sur la version de JQuery utilisée, se référer à : Journal de modification.
# Configuration : Nouvelle représentation des groupes et utilisateurs
# Contrôle de vue
Les représentations des formulaires des Smart Structures IUSER et IGROUP ont été modifiées. Ce sont maintenant des
représentations spécifiques. Si vous héritez ou avez modifié ces Smart Structures, les nouveaux cadres ajoutés sont
affichés par défaut. Si vous avez ajouté des champs dans les cadres, ils ne seront pas affichés.
Le contrôle de vue des IGROUP et IUSER a été modifié pour prendre en compte ces nouvelles représentations.
Pour des exemples de représentations sur les Smart Structures, se référer à : Journal de modification.
- L’accès afin de modifier le suppléant d’un utilisateur est :
ESUBSTITUTE(Pas de changement)
# Anciens noms d’accès aux contrôles de vues
- L’accès afin de consulter / modifier un utilisateur était :
EUSER - L’accès afin de consulter / modifier un groupe était :
EGROUP
# Nouveaux noms d’accès aux contrôles de vues
- L’accès afin de consulter un utilisateur / un groupe est devenu :
VADMIN(Cet accès est disponible en ayant le rôleaccounts_manager_role) - L’accès afin de modifier un utilisateur / un groupe est devenu :
EADMIN(Cet accès est disponible en ayant le rôleaccounts_manager_role)
Dans le cas ou vous avez ajouté des nouveaux champs dans les cadres d’origine, il faudra les déplacer dans un nouveau cadre dédié.
# Changement de groupe
Maintenant le changement de groupe peut s’effectuer uniquement dans le centre d’administration.
# Ajustement des filtres de tableau de type int
Ajouter l’extension intArray (si l’utilisateur posgresql n’a pas les droits afin de l’ajouter automatiquement lors de la phase de migration)
Si vous avez défini des requêtes spécifiques sur des filtres de tableau d’entier ( int[] ), modifier la requête les
%s @> '%s’enarraycontains(%s, '%s’)
Pour voir plus d’information sur l’extension
# Mise à jour et installation des modules
Créer un projet en suivant les howto
Merger le projet principal avec le nouveau projet
- Recopier les fichiers sources de l’ancien projet dans le nouveau.
- Recopier les cibles additionnelles du
Makefilede l’ancien projet dans leMakefiledu nouveau projet. - Le cas échéant, recopier les configurations
webpacket ajouter aupackage.jsonles modules concernés (parwebpackou par le code JS/TS).
Pour déployer le code, à chaque fois que nécessaire utiliser la commande :
make context-update
Voir les BC dans le guide de migration pour changer dans le code certains appels (correction de code)
# Migration du critère "Une des valeurs" dans les Smart Structures "Rapport" (REPORT)
Il était possible en version 3.2 de créer un critère de recherche portant sur l’ensemble des valeurs du Smart Element
(option Une des valeurs). La valeur de recherche s’appliquait alors sur tous les Smart Fields du Smart Element qui ne
portaient pas l’option searchcriteria à hidden.
Cette fonctionnalité n’a pas été reportée sur la version 4.
Néanmoins, deux solutions sont proposées.
Affiner le critère afin de mettre le critère sur le Smart Field désiré.
Ajouter un Smart Field calculé qui porte la concaténation des valeurs textuelles des Smart Fields concernés par la recherche. Ce Smart Field doit être caché.
Performance
Ce processus impacte le temps d’enregistrement du formulaire.
Il faut ajouter une méthode qui est déclenchée dans le "hook" postStore. Cette méthode calcule la concaténation des
valeurs de tous les champs sur lesquels il est possible d’effectuer une recherche.
Exemple de code pour cette procédure :
- Méthode à ajouter au Post Store des Smart Structures souhaitées :
<?php
namespace My;
use SmartStructure\Fields\MySmartStructure as MyAttributes;
use Anakeen\SmartHooks;
class MySmartStructure extends \Anakeen\SmartElement
{
public function calculateFieldHidden()
{
// Récupération des champs du Smart Element
$allSEField = $this->getNormalAttributes();
$concatValue = "";
foreach ($allSEField as $t) {
// On ne prend pas en compte les Smart Fields exclus de la recherche
if ($t->getOption("searchCriteria") !== "hidden") {
$concatValue = $concatValue . " " . $t->getTextualValue($this);
}
// my_field_hidden est un champ texte caché à définir dans la Smart Structure, il est alors possible de l’utiliser dans le rapport.
$this->setAttributeValue(MyAttributes::my_field_hidden, $concatValue);
}
}
public function registerHooks()
{
parent::registerHooks();
$this->getHooks()->addListener(SmartHooks::POSTSTORE, function () {
$this->calculateFieldWithAllValuesSearchable();
}
}
# 2021.1 Nouveautés
# Smart Field étendus
Les Smart Fields étendus permettent de synchroniser les Smarts Fields d'un Smart Element avec un autre.
Au cours du développement d'une application, il arrive souvent que la valeur d'un Smart Element doive être recopiée dynamiquement dans un autre Smart Element pour présenter cette valeur dans l'interface ou pour faciliter des calculs internes à l'application. Jusqu'à aujourd'hui ces synchronisations nécessitaient l'ajout de code spécifique ce qui entraînait un code plus complexe et moins maintenable. Les Smart Fields étendus permettent de configurer automatiquement une synchronisation d'un Smart Field à un autre, sans ajout de code spécifique.
Pour plus d'informations, vous pouvez vous référer à la documentation détaillée des Smart Fields étendus.