# Journal des modifications

# 2021.01 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
  • icreate: system_administrator
  • create: system_administrator
  • view*: system_administrator
  • edit*: system_administrator
Administration - Access all PRF_ADMIN_EDIT PDOC
  • view: system_administrator
  • edit: system_administrator
Création des comptes PRF_ACCOUNTS_CREATION IUSER, IGROUP PFAM
  • icreate: accounts_manager_role
  • create: accounts_manager_role
  • view*: accounts_manager_role, all
  • edit*: accounts_manager_role, all
User itself PRF_IUSER_OWNER IUSER PDOC
  • view: accounts_manager_role, all, field: us_meid
  • edit: accounts_manager_role, field: us_meid
  • delete: accounts_manager_role, field: us_meid
Profils de création des modèles de mails PRF_MAILTEMPLATE_CREATION MAILTEMPLATE PFAM
  • icreate: mail_template_manager_role
  • create: mail_template_manager_role
  • view*: mail_template_manager_role
  • edit*: mail_template_manager_role
Profils d'accès des modèles de mails PRF_MAILTEMPLATE_ACCESS MAILTEMPLATE PDOC
  • view: system_administrator, mail_template_manager_role, all
  • edit: system_administrator, mail_template_manager_role
  • delete: system_administrator, mail_template_manager_role
Accès des masques de saisie et des contrôles de vues PRF_RENDERUI_CREATION MASK, CVDOC PFAM
  • icreate: renderui_manager_role
  • create: renderui_manager_role
  • view*: renderui_manager_role
  • edit*: renderui_manager_role
Profils d'accès des masques de saisies PRF_MASK_ACCESS MASK PDOC
  • view: renderui_manager_role, all
  • edit: renderui_manager_role
  • delete: accounts_manager_role
Profils d'accès des contrôles de vues PRF_CVDOC_ACCESS CVDOC PDOC
  • view: renderui_manager_role, all
  • edit: renderui_manager_role
Profils de création des tâches programmées PRF_TASK_CREATION TASK PFAM
  • icreate: scheduling_manager_role
  • create: scheduling_manager_role
  • view*: scheduling_manager_role
  • edit*: scheduling_manager_role
Administration des tâches et minuteurs PRF_TASK_ACCESS TASK PDOC
  • view: scheduling_manager_role
  • edit: scheduling_manager_role
  • delete: scheduling_manager_role
Profils de création des rôles PRF_ROLE_CREATION ROLE, BASE PFAM
  • icreate: system_administrator
  • create: system_administrator
  • view*: system_administrator
  • edit*: system_administrator
Profils d'accès pour la structure BASE PRF_BASE_ACCESS BASE PDOC
  • view: system_administrator, all
  • edit: accounts_manager_role
Profils d'accès des rôles PRF_ROLE_ACCESS ROLE PDOC
  • view: system_administrator, accounts_manager_role, all
  • edit: accounts_manager_role
  • delete: accounts_manager_role
Création des descriptions de formulaire PRF_ADMIN_RENDERDESCRIPTION_CREATION RENDERDESCRIPTION PFAM
  • icreate: renderdescription_manager_role
  • create: renderdescription_manager_role
  • view*: renderdescription_manager_role
  • edit*: renderdescription_manager_role
Administration des descriptions de formulaire PRF_RENDERDESCRIPTION_ACCESS RENDERDESCRIPTION PDOC
  • view: renderdescription_manager_role, all
  • edit: renderdescription_manager_role
  • delete: renderdescription_manager_role
Profil recherche PRF_SEARCHES SEARCH, MSEARCH, DSEARCH, REPORT PFAM
  • icreate: search_manager_role, all
  • create: search_manager_role, all
  • view*: search_manager_role, all
  • edit*: search_manager_role
Profils de création document recherche PRF_SSEARCH_CREATION SSEARCH PFAM
  • icreate: system_administrator, search_manager_role
  • create: system_administrator, search_manager_role
  • view*: system_administrator, search_manager_role
  • edit*: system_administrator, search_manager_role
Profils de création de profil PRF_PROFILE_CREATION PDOC, PDIR, PSEARCH, PFAM, FIELDACCESSLAYER, FIELDACCESSLAYERLIST PFAM
  • icreate: security_administrator
  • create: security_administrator
  • view*: security_administrator, all
  • edit*: security_administrator
Profils d'accès des profils PRF_PROFILE_ACCESS PDOC, PDIR, PSEARCH, PFAM, FIELDACCESSLAYER PDOC
  • view: security_administrator
  • edit: security_administrator
Profil mail PRF_MAIL MAIL PFAM
  • icreate: all
  • create: all
  • view*: all
  • edit*: all
Profil document mail PRF_DOC_MAIL MAIL PDOC
  • view: all
  • edit: all
  • delete: all
Profil sentmessage PRF_SENTMESSAGE SENTMESSAGE PFAM
  • create: all
  • view*: all
  • edit*: all
Profil document sentmessage PRF_DOC_SENTMESSAGE SENTMESSAGE PDOC
  • view: all
  • edit: all
  • delete: all
Profil Structure FILE PRF_FILE_STRUCT FILE, IMAGE PFAM
  • icreate: file_manager_role, all
  • create: file_manager_role, all
  • view*: file_manager_role, all
  • edit*: file_manager_role
Profil FILE PRF_FILE_ACCESS FILE, IMAGE PDOC
  • view: file_manager_role, all
  • edit: file_manager_role, all
  • delete: file_manager_role
Profils de création des minuteurs PRF_TIMER_CREATION TIMER PFAM
  • icreate: scheduling_manager_role
  • create: scheduling_manager_role
  • view*: scheduling_manager_role
  • edit*: scheduling_manager_role
Profils d'accès des minuteurs PRF_TIMER_ACCESS TIMER PDOC
  • view: scheduling_manager_role, all
  • edit: scheduling_manager_role
  • delete: scheduling_manager_role
Profils de création des rôles PRF_WDOC_CREATION WDOC PFAM
  • icreate: system_administrator
  • create: system_administrator
  • view*: system_administrator
  • edit*: system_administrator
Profils d'accès des cycles de vie PRF_WDOC_ACCESS WDOC PDOC
  • view: workflow_manager_role, all
  • edit: workflow_manager_role
  • delete: accounts_manager_role
Profil document recherche PRF_DOC_SEARCHES SEARCH, MSEARCH, DSEARCH, SSEARCH, REPORT PSEARCH
  • view: search_manager_role, se_author, all
  • edit: search_manager_role, se_author
  • delete: search_manager_role, se_author, se_author
  • execute: search_manager_role, se_author
Modification administrateur PRF_ADMIN_IGROUP IGROUP PDIR
  • view: accounts_manager_role
  • edit: accounts_manager_role
  • delete: accounts_manager_role
  • open: accounts_manager_role
  • modify: accounts_manager_role
Profils de création pour les groupes GROUP GROUP PDOC
  • view: system_administrator, all
  • edit: system_administrator
Profils d'accès document group PRF_GROUP_ACCESS GROUP PDOC
  • view: system_administrator, all
  • edit: system_administrator

*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
  • icreate: system_administrator, gadmin
  • create: system_administrator, gadmin
  • view*: all
Création des descriptions de formulaire PRF_ADMIN_RENDERDESCRIPTION_CREATION RENDERDESCRIPTION PFAM
  • icreate: system_administrator, renderdescription_manager_role, gadmin
  • create: system_administrator, renderdescription_manager_role, gadmin
  • view*: all
Création des comptes PRF_ACCOUNTS_CREATION IUSER PFAM
  • icreate: system_administrator, accounts_manager_role, gadmin
  • create: system_administrator, accounts_manager_role, gadmin
  • view*: system_administrator, accounts_manager_role, all
Profil recherche PRF_SEARCHES SEARCH, MSEARCH, DSEARCH, REPORT PFAM
  • icreate: all
  • create: all
  • view*: all
  • edit*: gadmin
Profil profil PRF_PROFILE PDOC, PDIR, PSEARCH, PFAM PFAM
  • icreate: system_administrator
  • create: system_administrator
  • view*: all
  • edit*: gadmin
Profil mail PRF_MAIL MAIL PFAM
  • icreate: all
  • create: all
  • view*: all
  • edit*: gadmin
Profil sentmessage PRF_SENTMESSAGE SENTMESSAGE PFAM
  • create: all
  • view*: all
  • edit*: gadmin
Profil Structure FILE PRF_FILE_STRUCT FILE, IMAGE PFAM
  • icreate: all
  • create: all
  • view*: all
  • edit*: gadmin
Profil document recherche PRF_DOC_SEARCHES SEARCH, MSEARCH, DSEARCH, SSEARCH, REPORT PSEARCH
  • view: all, field: se_author
  • edit: gadmin, field: se_author
  • delete: field: se_author
  • execute: all, field: se_author
Modification administrateur PRF_ADMIN_IGROUP IGROUP PDIR
  • view: system_administrator, accounts_manager_role, all
  • edit: system_administrator, accounts_manager_role, gadmin
  • delete: system_administrator, accounts_manager_role, gadmin
  • open: system_administrator, accounts_manager_role, gadmin
  • modify: system_administrator, accounts_manager_role, gadmin
Administration - Access all PRF_ADMIN_EDIT PDOC
  • view: system_administrator, all
  • edit: system_administrator, gadmin
  • delete: all
Administration PRF_ADMIN_ACCESS FIELDACCESSLAYER, MAILTEMPLATE, MASK, ROLE PDOC
  • view: system_administrator, gadmin
  • edit: system_administrator, gadmin
  • delete: system_administrator, gadmin
Administration des tâches et minuteurs PRF_TASK_ACCESS TASK, TIMER PDOC
  • view: system_administrator, scheduling_manager_role, gadmin
  • edit: system_administrator, scheduling_manager_role, gadmin
  • delete: system_administrator, gadmin
Administration des descriptions de formulaire PRF_RENDERDESCRIPTION_ACCESS RENDERDESCRIPTION PDOC
  • view: system_administrator, renderdescription_manager_role, gadmin
  • edit: system_administrator, renderdescription_manager_role, gadmin
  • delete: system_administrator, gadmin
User itself PRF_IUSER_OWNER IUSER PDOC
  • view: system_administrator, accounts_manager_role, all, gadmin, field: us_meid
  • edit: system_administrator, accounts_manager_role, gadmin, field: us_meid
  • delete: system_administrator, accounts_manager_role, gadmin
Profil document mail PRF_DOC_MAIL MAIL PDOC
  • view: all
  • edit: all
  • delete: all
Profil document sentmessage PRF_DOC_SENTMESSAGE SENTMESSAGE PDOC
  • view: all
  • edit: all
  • delete: all
Profil FILE PRF_FILE_ACCESS FILE, IMAGE PDOC
  • view: all
  • edit: all
  • delete: gadmin

*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.

Lien vers la documentation

# 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é.

Lien vers la documentation

# Configuration : Syntaxe d'un script de migration

Il faut utiliser un NameSpace dans les balises Xml.

La balise ol devient logical-operator.

Lien vers la documentation

# 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.

Lien vers la documentation

# 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: ""
  }

ImgDcpConfirm

# 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

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    /**

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.

Lien vers la documentation

# 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.

Lien vers la documentation

# 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.

Lien vers la documentation

# PHP : Ajout de la classe \Anakeen\Search\Filters\AndOperator

La classe AndOperator permet d'utiliser l'opérateur logique "AND" sur plusieurs filtres.

Lien vers la documentation

# 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

Img

# Ancienne représentation de la Smart Structure IUSER

Img

# Nouvelle représentation de la Smart Structure IGROUP

Img

# Ancienne représentation de la Smart Structure IGROUP

Img

# 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.01 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.

# 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.

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 "throw" une Anakeen exception.



 

 


 

    $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ôle accounts_manager_role)
  • L'accès afin de modifier un utilisateur / un groupe est devenu : EADMIN (Cet accès est disponible en ayant le rôle accounts_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' en arraycontains(%s, '%s')

Pour voir plus d'information sur l'extension

# Mise à jour et installation des modules

  1. Créer un projet en suivant les howto

  2. Merger le projet principal avec le nouveau projet

    • Recopier les fichiers sources de l’ancien projet dans le nouveau.
    • Recopier les cibles additionnelles du Makefile de l’ancien projet dans le Makefile du nouveau projet.
    • Le cas échéant, recopier les configurations webpack et ajouter au package.json les modules concernés (par webpack ou par le code JS/TS).
  3. Pour déployer le code, à chaque fois que nécessaire utiliser la commande :

    • make context-update
  4. Voir les BC dans le guide de migration pour changer dans le code certains appels (correction de code)

# 2021.01 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.