Anomalie #1280
ferméproblème avec le Mailing
100%
Description
Bonjour,
Je viens de découvrir semble t'il une anomalie dans le processus d'envoi de mail.
Je sélectionne dans la liste des adhérents, les destinataires de l'envoi.
Je me retrouve sur la page: http://galette9/webroot/mailing?new=new
1 le bouton "Gestion des adhérents sélectionnés" ne fonctionne pas.
2 le bouton "prévisualisation" renvoi la page : http://galette9/webroot/mailings ,je n'ai pas de fenêtre de prévisualisation.
Les messages sont envoyés correctement...
3 si on a ajouté un fichier joint et "prévisualisation" alors je me retrouve avec une erreur:
Type : Error Code : 0 Message : Call to undefined method Galette\Core\Mailing::getPhpErrorMessage()
Fichier : B:\galette9\includes\routes\members.routes.php Ligne : 2103
Testé sur Version0.9.2.1 et nightly.
Pour info l'envoi des courriers se fait en SMTP (PHP mail ne fonctionne pas chez moi). Je ne pense pas que cela influence l'anomalie.
Bonne fin de Journée
Fichiers
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
- Catégorie mis à Core
- Statut changé de Nouveau à In Progress
- Assigné à mis à Johan Cwiklinski
Je ne reproduit pas le premier point ; tout au moins sur la nightly courante. Puisque pas mal de choses ont été changées là dessus, ça a pu être corrigé ; il faudrait essayer.
Le second point est quant à lui effectivement un bug.
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
- Statut changé de In Progress à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 349b6fc2cabb2a933c11ba561825eb2c932f0b04.
Mis à jour par Alain Paris il y a plus de 5 ans
Bonjour,
Je crois que je viens de trouver le problème:
Le soucis vient du nom de l’expéditeur dans Paramètres courriel le fait de mettre une apostrophe provoque les 2 anomalies.
L'apostrophe :ne fonctionne pas
L apostrophe : ok
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
- Statut changé de Fermé à In Progress
Ok je vais voir a corriger le souci d'apostrophe également :)
Mis à jour par Benjamin Leduc il y a plus de 5 ans
Johan Cwiklinski a écrit :
Appliqué par commit 349b6fc2cabb2a933c11ba561825eb2c932f0b04.
Bonjour,
Le point #1 n'est toujours pas fonctionnel chez moi, nightly du jour. Comment puis-je fournir des informations utile pour avancer?
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
Si le problème est le même que celui d'Alain (apostrophe), ce n'est juste pas corrigé, pas eu le temps.
Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans
- Fichier 0001-Fix-unescaped-variable-in-mailing-template.patch 0001-Fix-unescaped-variable-in-mailing-template.patch ajouté
La variable correspondante n'est pas échapée dans le template des mailings.
Ci-joint un correctif basé sur la branche develop, et ajoutant un modifieur smarty pour échapper la variable javascript fautive.
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
Merci pour le patch, ça devrait effectivement corriger le problème :)
Mis à jour par Alain Paris il y a plus de 5 ans
Bonjour,
Le patch doit modifier quoi pour l'utilisateur ?
Cas no 1 : Apostrophe dans le nom de l’expéditeur (exemple "l’expéditeur") situé dans Configuration (webroot/preferences) Courriel expéditeur :
Sur la page webroot/mailing
- le bouton "Gestion des adhérents sélectionnés" ne fonctionne plus.
- le bouton pour modifier l’expéditeur non plus (reste sur le courriel de "depuis les préférences").
- lors de l'appui sur prévisualisation il y a un message d'avertissement si le sujet est vide ou message est vide.
Si sujet et message sont complétés je n'ai pas la fenêtre pop-up avec la prévisualisation du mail.je me retrouve sur la page de gestion des mails (webroot/mailings).
- Tous les boutons fonctionnent.
- Il n'y a plus le message d'avertissement que le sujet ou le corps du message est vide par contre.
- La fenêtre pop-up de prévisualisation fonctionne.
Si l'on modifie l’expéditeur option "autre" et que celui-ci comporte une ou plusieurs apostrophe(s) prévisualisation fonctionne. ** Lorsque l'on choisi "Utilisateur actuellement connecté" ou "autre" on ne peut revenir sur "depuis les préférences" lorsque l'on a prévisualisé.
Le fonctionnement peut il dépendre de PHP ou de Mysql ou d'un de leurs modules? (testé sur PHP 7.2 et Mysql 5.53).
Il faudrait peut être une démo fonctionnelle en ligne pour voir le comportement normal.
Bonne Journée
Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans
- Statut changé de In Progress à Résolu
Appliqué par commit e4249da84d8e0907fa72226af75217e7765c8ff3.
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
La modification du seul fichier template sur la dernière stable ne sera clairement pas suffisante pour corriger les problèmes de javascript.
Je viens de tester avec la dernière nightly, je n'ai pas rencontré de problèmes.
À priori, sur la branche develop, le patch fourni par Guillaume termine de corriger les problèmes.
Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans
- Fichier 0001-Fix-wrong-smarty-modifier-value-fixes-1280.patch 0001-Fix-wrong-smarty-modifier-value-fixes-1280.patch ajouté
- Fichier 0001-Hotfix-refs-1280.patch 0001-Hotfix-refs-1280.patch ajouté
A posteriori, le patch ne termine pas de corriger le problème :/
Échapper la variable est la solution.
Mais je n'avais pas testé avant de produire le patch. En me basant sur l'utilisation du même modifieur ailleurs dans le code, j'avais réutilisé la même valeur : js. Mais selon la documentation smarty, la valeur dans ce cas devrait être : javascript
Ci-joint un nouveau patch sur la branche develop corrigeant cette valeur.
Et un "hotfix" complet incluant la révision 349b6fc2 pour la dernière branche stable.
Cette fois j'ai testé préalablement sur les 2 branches et ça fonctionne correctement :)
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
js
pour l'échappement est utilisé partout dans le code de Galette, à priori, ça fonctionne sans problèmes ; beaucoup d'autres choses ne fonctionneraient pas.
Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans
Effectivement js est utilisé partout. Mais pas partout dans le même contexte : il y a l'échappement des chaînes de traduction et l'échappement des variables dans les templates.
Dans le cas des traductions, pas de problème, c'est un plugin smarty qui s'occupe de l'échappement : source:galette/includes/smarty_plugins/function._T.php#L69
Dans le cas des variables, c'est le modificateur smarty qui se charge de l'échappement.
Et alors, seule la valeur javascript peut être reconnue : https://github.com/smarty-php/smarty/blob/c9f0de05f41b9e52798b268ab1e625fac3b8578c/libs/plugins/modifier.escape.php#L177
Mis à jour par Johan Cwiklinski il y a plus de 5 ans
En effet, tu as raison ; il y a deux cas de figure distincts, le "modifier" smarty est finalement peu utilisé. Il y avait d'autres cas problématiques que j'ai corrigés également au passage ; normalement, tout est d'équerre désormais.
Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans
J'étais justement en train de préparer une nouvelle demande concernant les 2 autres cas problématiques corrigés.
Je suis donc d'avis également que tout est d'équerre désormais :)