Hallo Michael,
die
- individuelle Steuerung des Datensatz-Status 'veröffentlicht',
- für den gegebenen Datensatz,
- beim Absenden des Formulars,
- für die beiden Fälle 'Abschicken' und 'Editieren',
- erfolgt am besten und sehr direkt in einem Custom Plugin.
Du brauchst einen möglichst einfachen Mechanismus, die beiden Fälle zu unterscheiden.
Da gibt es zahlreiche Möglichkeiten.
Eine grundsätzliche einfache und übersichtliche Lösung wäre, dass der Button-Klick für beide Buttons jeweils eine andere 'Spur' hinterlässt.
Anhand dieser 'Spur' reagierst du im Custom Plugin entsprechend.
Diese 'Spur' könnte etwa das Setzen eines zusätzlichen versteckten Feldes sein, dass speziell für diesen Zweck angelegt wurde.
Du nutzt die beiden folgenden Events für 'Abschicken' und 'Editieren'.
Du bündelst die Bearbeitung in einer privaten Hilfs-Funktion, welche die gesamte Logik an einer Stelle enthält:
Code:
public function onVisformsAfterFormSave(VisformsAfterFormSaveEvent $event): void {
// Form submitted event
$this->handleRecordsetStatePublished($event->getContext(), $event->getForm(), $event->getFields());
}
public function onVisformsAfterEditFormSave(VisformsAfterEditFormSaveEvent $event): void {
// Form data edited event
$this->handleRecordsetStatePublished($event->getContext(), $event->getForm(), $event->getFields());
}
private function handleRecordsetStatePublished($context, $form, $fields): void {
// context = 'com_visforms.form'
// handle published/unpublished of data recordset
// test for published/unpublished
// your code ...
// write published/unpublished to form data recordset
// your code ...
}
Falls du Hilfe bei der Entwicklung des Plugins benötigst, dann können wir dich gerne dabei unterstützen - auch mit der kompletten Implementierung.
Liebe Grüße, Ingmar