Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

Wichtig Angaben für fast jede Frage:
V1: Welche Visforms-Version läuft?
V2: Welche Joomla-Version läuft?
V3: Welche PHP-Version läuft?

Aufgrund von Feiertagen und Urlaub ist bei Anfragen im Forum in der Zeit vom 20. Dezember 2024 bis zum 8.Januar 2025 mit verlängerten Antwortzeiten zu rechnen.

Icons in Bestätigungsmail

Mehr
1 Jahr 9 Monate her #9008 von bibeg
Icons in Bestätigungsmail wurde erstellt von bibeg
Hallo Visforms-Team,

ich setze Visforms seit einiger Zeit im Intranet einer Einrichtung für Menschen mit Behinderung ein. Damit werden Bestellungen/Aufträge ausgelöst, die dann von den Mitarbeitern bearbeitet werden. Das klappt bisher immer super und wir haben damit schon viele tolle Sachen umgesetzt.

In einem Formular gibt es eine Multicheckbox. In der Bestätigungsmail werden die Optionswerte ja kommasepariert ausgegeben.

Da es einige Menschen gibt, die schlecht oder garnicht lesen können, wäre es schön wenn man in der Mail nach dem Optionswert ein erklärendes Icon oder eine Grafik ausgeben könnte.

Meine naive Idee war es stumpf im Optionswert html wie z.B.
Code:
Apfel <img src="https://example.org/images/apfel.png">
einzutragen.
Leider verhindert der gute SQL-Injection-Schutz meinen plumpen Versuch. Außerdem zerlegt das Layout der Multicheckbox und ich erhalte die Fehlermeldung "Für das Feld "Obst" wurde ein ungültiger Wert übermittelt."

Habt ihr eine Idee, wie ich den Usern das Arbeiten etwas erleichtern könnte?

Über einen Tipp würde ich mich sehr freuen.

Vielen Dank und viele Grüße

Mehr
1 Jahr 9 Monate her #9010 von bibeg
bibeg antwortete auf Icons in Bestätigungsmail
Hallo zusammen,

in der Zwischenzeit hatte ich auch HTML-Entitäten probiert, aber auch deren Sonderzeichen werden herausgefiltert...


Viele Grüße

Mehr
1 Jahr 9 Monate her - 1 Jahr 9 Monate her #9014 von Administrator IV
Administrator IV antwortete auf Icons in Bestätigungsmail
Hallo Fabian,

das Füllen von Optionswerten mit all diesen Formaten (HTML, XML) und Sonderzeichen ist nicht möglich.
Diese Werte kommen etwa explizit im JavaScript Code in Abfragen vor.
Dort ist das alles nicht erlaubt, bzw. käme zu einer irrsinnigen Escape-Schlacht, bei der nicht wirklich feststeht, wer am Ende gewinnt.
Im JavaScript liegen die Werte auch mal 'ausgedruckt' vor und sind nicht einfach in einer lokalen Variable versteckt.

Durch reine Konfiguration ist das mit Visforms nicht möglich.
Es ist aber mit ganz wenig PHP-Code in einem Visforms Custom Plugin mit wenig Aufwand machbar.

Die Dokumentation mit einem Beispiel für die Entwicklung eines individuellen Visforms Plugins findest du hier:
docs.joomla-4.visforms.vi-solutions.de/d...-plugin-development/

Die Dokumentation mit den Plugin-Events findest du hier:
docs.joomla-4.visforms.vi-solutions.de/d...-plugin-development/

Seit kurzen wird ein komplettes Visforms Custom Plugin Template mit leeren Funktionsrümpfen für alle Event-Handler mit installiert:
Code:
plugins/visforms/vfcustomplugin/vfcustomplugin.php

Du musst es nur
1 - Installieren:
Administration >> System >> Installieren >> Überprüfen >> Auswählen und Button 'Überprüfen' klicken.
2 - Aktivieren:
Administration >> System >> Verwalten >> Plugins >> Auswählen und Button 'Aktivieren' klicken.

Im Plugin-Event 'onVisformsEmailPrepare' kannst du die Eigenschaften der versendeten Mails ändern.
Dort ist unter anderem auch das Ändern des finalen Mail-Textes ($mail->Body) möglich.

In der folgenden Funktion wird für die Ergebnismail hinter den Optionswert (label-1, ..., label-3) eine Landes-Flagge als kleines Icon gesetzt.
Die Beispiel-Icons der Landes-Flaggen stammen aus der Visforms Installation.
Code:
public function onVisformsEmailPrepare($context, $mail, $form): bool {     // context = 'com_visforms.form.resultmail'     // context = 'com_visforms.form.receiptmail'     // triggered in VisformsModel after the mail object is instantiated and directly before the mail is sent:     // can be used to modify the mail object: mail object is instantiated and all properties are set and can be modified     // example code: simply change email text     // $mail->Body = '<p>My new result mail body.</p>';         if('com_visforms.form.resultmail' == $context) {         $mail->Body = preg_replace('#label-1#', 'label-1 <img src="http://localhost/developj4/media/com_visforms/img/es_es.gif">', $mail->Body);         $mail->Body = preg_replace('#label-2#', 'label-1 <img src="http://localhost/developj4/media/com_visforms/img/fr_fr.gif">', $mail->Body);         $mail->Body = preg_replace('#label-3#', 'label-1 <img src="http://localhost/developj4/media/com_visforms/img/nl_nl.gif">', $mail->Body);     }     return true; }


Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Letzte Änderung: 1 Jahr 9 Monate her von Administrator IV.

Mehr
1 Jahr 9 Monate her - 1 Jahr 9 Monate her #9017 von bibeg
bibeg antwortete auf Icons in Bestätigungsmail
Hallo Ingmar,

vielen Dank für deine ausführliche Antwort!

Es klappt super mit dem folgenden Code


Meine iconsinvisformsmail.php lautet:
Code:
<?php /**  * @copyright    Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.  * @license        GNU General Public License version 2 or later; see LICENSE.txt  */ // No direct access defined('_JEXEC') or die; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Factory; class plgVisformsIconsInVisformsMail extends CMSPlugin {     public function __construct(& $subject, $config) {         parent::__construct($subject, $config);         //load the translation         $this->loadLanguage();     }     // NOTE: this plugin requires Visforms Base and Visforms Subscription 4.1.0 (or higher) !!     public function onVisformsFormPrepare($context, $form, $menuparams) {         // Skip plugin if context is wrong         $allowedContexts = array('com_visforms.form', 'mod_visforms.form', 'plg_vfformview.form');         if (!in_array($context, $allowedContexts)) {             return true;         }         $app = Factory::getApplication();         // only perform action, if we are in front end         if ($app->isClient('administrator')) {             return true;         }         //if $form->parentFormId is not set, Visforms or Content Plugin Form View version is to old         if (!isset($form->parentFormId)) {             return true;         }         // get value of id attribute of the form which is going to be displayed         $parentFormId = $form->parentFormId;         // add custom submit handler function to the form         $script = 'jQuery(document).ready(function () {             //add custom submit action function to form             window["' . $parentFormId . 'SubmitAction"] = function (form) {             // your code in here             //return false to prevent form from being submitted, return true, if submithandler performs another action but form should be send                 return true;             };         });';         Factory::getDocument()->addScriptDeclaration($script);         // End: add custom submit handler function to the form     }     public function onVisformsBeforeFormSave($context, $form, $fields)     {         // Skip plugin if context is wrong         $allowedContexts = array('com_visforms.form', 'mod_visforms.form', 'plg_vfformview.form');         if (!in_array($context, $allowedContexts)) {             return true;         }         $app = Factory::getApplication();         // only perform action, if we are in front end         if ($app->isClient('administrator')) {             return true;         }         // your code in here         return true;     }     public function onVisformsEmailPrepare($context, $mail, $form): bool {     // context = 'com_visforms.form.resultmail'     // context = 'com_visforms.form.receiptmail'     // triggered in VisformsModel after the mail object is instantiated and directly before the mail is sent:     // can be used to modify the mail object: mail object is instantiated and all properties are set and can be modified     // example code: simply change email text     // $mail->Body = '<p>My new result mail body.</p>';         if('com_visforms.form.resultmail' == $context) {         $mail->Body = preg_replace('#Kaffee#', 'Kaffee <img src="http://example.org/images/icons/kaffee.png">', $mail->Body);         $mail->Body = preg_replace('#Kaltgetränke#', 'Kaltgetränke <img src="http://example.org/images/icons/kaltgetraenke.png">', $mail->Body);         $mail->Body = preg_replace('#Mittagessen#', 'Mittagessen <img src="http://example.org/images/icons/mittagessen.png">', $mail->Body);     }     return true; } }

Vielen Dank nochmal und viele Grüße
Letzte Änderung: 1 Jahr 9 Monate her von bibeg.

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum