Bonjour,
J'ai trouvé où est cette foutue expression ! Le problème (comme d'hab) c'est que le core team a utilisé des attributs de propriété pour définir la valeur par défaut de l'expression de validation du champ email. C'est donc dans la dotnetnuke.dll qu'elle se trouve. D'où le fait que ma modification de l'expression dans User.ascx n'a servi à rien. Mais je ne sais pas s'il est possible de modifier un attribut d'une fonction sans modifier le code et recompiler le tout. Pour ceux qui veulent tout même faire la modification, voici la marche à suivre que j'ai testé.
Ouvrir le fichier de la solution (DotNetNuke.Library.sln) qui se trouve dans C:\DotNetNuke\Libray pour une installation de base. Dans le projet, cliquez sur le dossier Components puis Users et ouvrez le fichier UserInfo.vb. Sur la ligne 120 au début de la propriété Email, vous trouverez l'expression. Remplacez-la par celle-ci : \b[a-zA-Z0-9._%\-+']+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,6}\b
En fait, il y a trois bogues dans l'expression (corrigés en rouge au dessus). Notez que je n'avais pas vu le second tiret sans anti-slash dans le deuxième groupe, et tant qu'on y est le 4 de fin est devenu 6. L'ICANN qui gère les TLD (Top Level Domain) a approuvée des nouveaux domaines dont .museum et .travel qui font chacun 6 lettres. Avez-vous compris le troisième bogue de cette expression ?
Une fois la modification effectuée, si vous compilez vous devriez avoir quelques erreurs. Car sans quoi ce serait trop simple, non ? Il devrait y avoir deux références erronées, si vous avez la même version des sources que la mienne. Pour corriger, faites clic droit sur le projet DotNetNuke.Library puis sélectionnez Propriétés. Cliquez sur l'onglet Références, vous devriez avoir CountyListBox et DotNetNuke.WebUtility en erreur. Supprimez ces deux références, puis ajoutez-les à nouveau. Elles se trouvent dans un sous dossier du même nom puis bin dans C:\DotNetNuke\Libray\Controls. Ceci fait, passer en configuration Release puis compilez. Il ne vous reste plus qu'a copier le fichier C:\DotNetNuke\Libray\DotNetNuke.dll sur votre instance de dnn. N'oubliez pas de faire une sauvegarde au préalable, on ne sait jamais !
Gilles