WBCE CMS – Way Better Content Editing.
You are not logged in.
Ich schaue mir gerade das MiniForm an, das so ein bißchen in die Jahre gekommen scheint. Ich möchte den Code PHP 8.0/8.1 kompatibel machen und das Modul soll auch unter BC1 sauber funktionieren. (Zur Zeit gibt es da Probleme, weil BC1 nicht hartverdrahtet auf PHPMailer aufsetzt, das muss ich aber auf BC-Seite lösen.) Was dabei auf jeden Fall angepaßt wird:
* DB-Statements
-> Tabellen- und Spaltennamen mit Backticks versehen
-> Variablen (wie TABLE_PREFIX oder $section_id) mit sprintf() einsetzen statt mit Punkt verketten
* Formular-Werte
-> nicht direkt aus $_GET/$_POST nehmen, sondern mit filter_input() validieren
* functions.php in mform.php umbenennen ("PSR-4 violation")
* Variablen nach Möglichkeit typisieren (insbesondere in der Klasse mform)
* HTML in Templates auslagern (keine Template Engine notwendig)
* MYSQL_ASSOC ersetzen
* Fixes (z.B. "Fatal error: Uncaught TypeError: Unsupported operand types: null + string in .\modules\miniform\messages_loop.php:41")
* ..... to be continued .....
An der Funktionalität und der Optik will ich, wenn überhaupt, nur marginal was ändern. Vor allem soll der Formular Generator auf Ruuds Seite natürlich weiterhin damit funktionieren.
Ich hoffe, dass Ruud damit kein Problem hat. Es ist in der Hauptsache Fleißarbeit, bei der mich mein Editor ein wenig unterstützt, weil der z.B. die direkte Verwendung von $_GET und $_POST anmeckert. Basis ist die Version 0.23 aus dem WBCE Repo, die ja schon von der offiziellen 0.15.1 auf Ruuds Seite abweicht.
Ist es Euch lieber, wenn das Modul dann einen anderen Namen bekommt?
Gibt es von Eurer Seite Dinge, die lange liegengeblieben sind und bei der Gelegenheit umgesetzt werden könnten? (Ich verspreche da nichts, aber wenn es nichts ist, das dann 3 Wochen Aufwand bedeutet, kann ich zumindest darüber nachdenken.)
Achja, das Modul wird dann mindestens PHP 7.4 voraussetzen.
Last edited by webbird (13.04.2022 08:53:17)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
berny, jean
Das klingt schon nach einer sehr umfassenden Überarbeitung. Ich plädiere dafür, Dein Modul unter einem anderen Namen zu veröffentlichen. Auch, weil Ruud bei seinen Modulen auch die Kompatibilität zu WebsiteBaker berücksichtigt.
Eine direkte Abstimmung zwischen Dir und Ruud wäre möglicherweise sinnvoll.
Wünsche, die von Kundenseite immer wieder geäußert werden, sind:
- Option für automatischen Versand der Formulardaten an Absender (also im Formular angegebene Mailadresse)
- Option für Begrenzung der Anzahl der gespeicherten Eintragungen.
Mir ist bewusst, dass es nachvollziehbare Gründe gibt, weshalb diese Features im aktuellen Miniform nicht implementiert sind, aber mpForm und viele andere Formularmodul /-plugins für z.B. Wordpress können das auch. Außerdem wäre ja niemand verpflichtet, diese Funktionen zu nutzen.
- Was ich im jetzigen miniform-Backend nur bedingt gelungen finde, ist die Javascript-lastige und etwas unperformante Anzeige der eingegangenen Formulare, hier wäre weniger eventuell mehr.
- Ein optionales Logging des Mailversands wäre zur Fehlersuche/Nachweisführung hilfreich.
Last edited by florian (13.04.2022 06:12:34)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
berny
Gerade bei Anmeldeformularen (zb Veranstaltungen) oder ähnliches ist das Zwischenspeichern in der DB nicht unwichtig.
Demnach wäre natürlich eine "Verwaltung" dieser Einträge nicht ganz uninteressant.
Derzeit nicht sehr gelungen.
Analog zum MP-Form:
Export dieser Einträge
Lösch- bzw Verwaltungsfunktionen
Wenn das machbar wäre, bitte bitte bitte ;-)
Last edited by berny (13.04.2022 07:19:19)
Offline
Danke für Eure Rückmeldungen! Ich schau mal, was ich davon umsetzen kann.
Ich möchte Ruud eigentlich nicht das Wasser abgraben, ich werde ihn gelegentlich mal fragen, was er dazu meint. Er wird vermutlich nicht fremden Code pflegen wollen, was verständlich ist, andererseits ist die Version 0.15 auf seiner Seite von 2019 und könnte daher durchaus eine Frischzellenkur gebrauchen. Allerdings ist MiniForm auch wunderbar geeignet, um es mit anderen Dingen zu verknüpfen. Ich habe z.B. neulich ein Modul gebaut, das Downloads über die DLG erst nach vorheriger Registrierung erlaubt, da konnte ich das Anmeldeformular wunderbar mit MiniForm umsetzen.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
- Option für automatischen Versand der Formulardaten an Absender (also im Formular angegebene Mailadresse)
Du meinst so in Form einer Checkbox "Mir eine Kopie dieser Anfrage schicken"? Das ist natürlich mit ein paar Wenn's und Aber's verbunden, z.B. kann das nur klappen, wenn die Angabe einer Mailadresse Pflicht ist. Technisch ansonsten sicher nicht weiter schwierig.
- Option für Begrenzung der Anzahl der gespeicherten Eintragungen.
Mir ist bewusst, dass es nachvollziehbare Gründe gibt, weshalb diese Features im aktuellen Miniform nicht implementiert sind, aber mpForm und viele andere Formularmodul /-plugins für z.B. Wordpress können das auch. Außerdem wäre ja niemand verpflichtet, diese Funktionen zu nutzen.
Ja, die entsprechende Rückmeldung von Ruud habe ich auch gelesen und fand sie sehr gut nachvollziehbar. Da wäre dann eine Reload-Sperre sinnvoll, die z.B. bei zu vielen Anfragen in kurzer Zeit und ggfs. von der gleichen IP reagiert. Dummerweise ist das Speichern der IP dann aber wieder so ein DSGVO-Ding. Eigentlich sollte das Captcha ja auch schon ein wenig helfen, aber die Spambots werden eben auch immer schlauer.
Wenn man es also unbedingt haben will, sollte es zwei Optionen geben:
* Max. X Einträge
* Max. X Tage
Letztere würde zumindest das "rausschieben" gültiger Einträge durch das Vollspammen vermeiden. Zudem könnte man zusätzlich die Option anbieten, Einträge vor dem automatischen Löschen zu exportieren, sprich zu sichern.
- Was ich im jetzigen miniform-Backend nur bedingt gelungen finde, ist die Javascript-lastige und etwas unperformante Anzeige der eingegangenen Formulare, hier wäre weniger eventuell mehr.
Du meinst dieses "beim Klick je 7 nachladen"? Vielleicht ist da eine Umsetzung mit DataTables schöner, das kann dann ja Paging. Bei tausenden Einträgen wird's dann allerdings zäh.
- Ein optionales Logging des Mailversands wäre zur Fehlersuche/Nachweisführung hilfreich.
Ich bin sowieso ein großer Freund von Logging! Bei meinen letzten (kommerziellen) Modulen habe ich ein Logging in eine DB-Tabelle eingebaut.
MiniForm hat ja derzeit - sicher ganz bewußt - eher wenig Einstellmöglichkeiten, das macht es ja unter anderem auch so "mini". Mit den neuen Funktionen ist es dann vielleicht eher ein MaxiForm. Vielleicht wäre das ein passender Arbeitsname.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Analog zum MP-Form:
Export dieser Einträge
Lösch- bzw Verwaltungsfunktionen
Also Löschen kann man ja, ich kenne das MPForm nicht so genau, was genau meinst Du mit "Verwalten"?
Export als CSV ist machbar, ich möchte da allerdings nur ungern Optionen einbauen wie "ich will einstellen können welche Felder exportiert werden, in welcher Reihenfolge und mit welchen Spaltennamen".
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
berny
Oder vielleicht "ExtendedMiniForm"? "MiniFormExtended"?
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Lately I haven't been working on exisiting modules very much. Mostly just doing bugfixes.
I don't have any problems when a "wbceform" module was created using my miniform as basis. This is the GPL idea :-)
Using a new name to avoid any problems between WB and WBCE users would be a good idea though.
The only issue for WBCE would be that you cannot upgrade an existing miniform to this new module. So for users it will need to be a clean install.
Offline
Vielen Dank für Deine Rückmeldung, Ruud! MiniForm ist ein tolles Modul, ich habe es bei ein paar Projekten sehr zu schätzen gelernt. Ich würde mich sehr freuen, wenn Du Dir später das erweiterte Modul anschauen würdest.
Ich denke, mit der Einschränkung kann man gut leben, weil ja nicht jeder so viele Optionen braucht. Das "Basismodul" ist für die meisten Bedürfnisse vollkommen ausreichend, und so lange es noch funktioniert (es gibt da nur eine Stelle mit MYSQL_ASSOC, die man aber leicht fixen kann), ist es auch gar nicht notwendig, es groß zu verändern. So kann sich dann jeder aussuchen, ob er das "Basismodul" oder das "erweiterte Modul" benutzen möchte, und man kann auch beide parallel einsetzen. Ich finde das eine gute Lösung, zumal der Form Generator dann für beide zur Verfügung steht.
Folgende Übersetzung mit DeepL:
Bedankt voor je feedback, Ruud! MiniForm is een geweldige module, ik heb het erg gewaardeerd bij een paar projecten. Ik zou het erg op prijs stellen als u later naar de uitgebreide module kijkt.
Ik denk dat je goed kunt leven met de beperking, want niet iedereen heeft zoveel opties nodig. De "basismodule" voldoet perfect voor de meeste behoeften, en zolang ze nog werkt (er is slechts één probleem met MYSQL_ASSOC, dat gemakkelijk kan worden opgelost), is het niet nodig om er veel aan te veranderen. Iedereen kan dus kiezen of hij de "basismodule" of de "uitgebreide module" wil gebruiken, en je kunt ze ook allebei naast elkaar gebruiken. Ik denk dat dit een goede oplossing is, vooral omdat de formuliergenerator dan voor beide beschikbaar is.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
berny wrote:Analog zum MP-Form:
Export dieser Einträge
Lösch- bzw VerwaltungsfunktionenAlso Löschen kann man ja, ich kenne das MPForm nicht so genau, was genau meinst Du mit "Verwalten"?
Export als CSV ist machbar, ich möchte da allerdings nur ungern Optionen einbauen wie "ich will einstellen können welche Felder exportiert werden, in welcher Reihenfolge und mit welchen Spaltennamen".
Löschen: ev mit option "von bis"
Das anhackeln kann etwas aufwendig werden, wenn viele Einträge vorhanden sind.
Ja, export als csv....
Geht gut.
Spalten egal, einfach alle, kann man dann ja eh im csv weiterbearbeiten, würde da keinen grossen Gewinn erkennen, das kompliziert zu programmieren.
Das Miniform eignet sich wirklich sehr gut für Anmeldungen, Bestellungen bzw Reservierungen und mehr.
MPformmist super, aber auch etwas überladen.
Templates für Miniform in dieser Weise einfach der Hammer, weil bestimmte Formulare eh immer gleich sind...
Offline
Ja, ich find's auch sehr gelungen, sonst würde ich es auch nicht anfassen.
Nachrichtenliste mit simpleDataTables (Vanilla JS).
Last edited by webbird (13.04.2022 12:52:02)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Leider verträgt sich das DataTables nicht mit den aufklappbaren Nachrichten. Jede zweite Tabellenzeile ist unsichtbar geschaltet und wird durch Anklicken sichtbar. Dadurch bekommt man z.B. bei der Einstellung "10 Einträge" nur 5 zu sehen. Da muss ich mir was anderes einfallen lassen.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Momentan in den Ferien habe ich das erst jetzt gesehen. Darf ich fragen, ob in der generalüberholten Version noch die Möglichkeit besteht, per Formbuilder die Formulare vorab zu gestalten?
Ich finde das ist eine wichtige Sache und zeichnet das Modul für mich aus.
Grüße Norbert
Offline
Kurze Antwort: Jepp!
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
byteworker
Ich habe mich jetzt erst mal entschieden, gar keine Pagination einzubauen. Das beißt sich nämlich auch mit der Anforderung, Einträge markieren zu können, um sie z.B. zu exportieren oder auf einen Rutsch zu löschen. Ich hatte mal mit List.js experimentiert, das macht aber sofort die Grätsche, sobald mal "pagination: true" setzt. Außerdem scheint das Projekt gestorben zu sein.
Das Markup ist jetzt eine "unordered List" mit "display:grid", und man kann wie bisher die Nachrichten anklicken, um die Details anzusehen.
Last edited by webbird (14.04.2022 15:06:28)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Vorausgeschickt:
alles nur mal "laut gedacht" und es kann auch sein, das ich total auf dem Holzweg bin.
Leider verträgt sich das DataTables nicht mit den aufklappbaren Nachrichten.
Das ginge doch mit Datatables eigentlich via der "ChildRows" ganz ordentlich?!? Und sollte sich auch nicht mit der Paginierung in's Gehege kommen.
Dummerweise ist das Speichern der IP dann aber wieder so ein DSGVO-Ding.
Würde es da nicht ausreichen die IP statt im Klartext per md5() (oder was besserem) zu speichern.
Dann kann man daraus keine IP-Adresse "wieder herstellen" hat aber doch einen eindeutigen Vergleichs-String ...
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
Also ich weiss nicht wg dem Dsgvo Dings:
Wenn ich die Eingabendaten in der DB eh schon speichere, macht die IP ja auch nicht mehr aus, oder hab ich da einen Denkfehler?
Offline
Vorausgeschickt:
alles nur mal "laut gedacht" und es kann auch sein, das ich total auf dem Holzweg bin.Leider verträgt sich das DataTables nicht mit den aufklappbaren Nachrichten.
Das ginge doch mit Datatables eigentlich via der "ChildRows" ganz ordentlich?!? Und sollte sich auch nicht mit der Paginierung in's Gehege kommen.
Ich habe nicht das jQuery DataTables verwendet, und bei dem SimpleDT ("Vanilla JavaScript") gab es dazu keine Hinweise. Ich verzichte jetzt wie gesagt erst mal auf eine Paginierung, weil sich das mit der Bitte beißt, mehrere Einträge zum Löschen oder für den Export markieren zu können. Performancemäßig hat das ohnehin keine Vorteile, wenn die Paginierung nur per JavaScript erfolgt. Ob man es als übersichtlicher empfindet, wenn man alle Beiträge aufgelistet bekommt, oder mit Paginierung, ist dann ohnehin wieder individuell unterschiedlich. Da gibt es jetzt auch wichtigeres.
Edit: Letztlich begibt man sich mit dem Feature dann auch wieder in die Untiefen der Einstellbarkeit der Standard-Anzahl, der Auswahlmöglichkeiten usw...
Bezüglich der IP: Es ist ein Unterschied, ob jemand bewußt seine Mailadresse angibt, oder quasi unfreiwillig seine IP. Wobei die ja sowieso im access.log des Servers landet, aber da habe ich nun wirklich keine Lust, mich in das Geflecht der DSGVO zu wuseln. Vermutlich ist es durchaus legitim, die IP unabhängig von den Formulardaten zu erfassen und nur zu prüfen, ob innerhalb eines Zeitraums X mehr als Y Absendungen stattfinden, um das dann zu unterbinden. Vielleicht habe ich ja noch Lust, sowas einzubauen, aber tendenziell eher nicht.
Last edited by webbird (19.04.2022 08:37:58)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Wichtige Anmerkung zu dem Wunsch, dass sich Benutzer eine Kopie der Mail schicken lassen können: Da der Form Creator bei dev4me das nicht kennt, macht es keinen Sinn, das als Option unterzubringen. Statt dessen muss es per Konvention gelöst werden. Also "egal wie es aussieht, erwartet wird ein Feld "mf_mail2user" mit dem Wert "1"".
[== XHTML ==]
<div class="full">
<label for="mf_mail2user"><span>Bitte senden Sie mir eine Kopie der Mail</label>
<input type="checkbox" name="mf_mail2user" id="mf_mail2user" value="1" /> Ja
</div>
Feld da und Wert 1 = Mail wird in Kopie an den Benutzer geschickt
Feld nicht da oder Wert nicht 1 = Verhalten wie bisher auch
Es ist zu beachten, dass es inhaltlich exakt die gleiche Mail ist, die auch der Administrator erhält!
Last edited by webbird (19.04.2022 15:55:17)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Anbei mal eine allererste Testversion. Diese ist NICHT fertig und ausdrücklich NICHT für den produktiven Einsatz gedacht! Testet sie am besten in einer reinen Testumgebung.
Die Funktionen zum Markieren und Löschen bzw. Exportieren sind in der Oberfläche schon zu sehen, aber noch nicht eingebaut. (Wehe hier kommt einer und sagt "der Export geht aber nicht..."! Der wird von mir mit ewiger Ignoranz gestraft!) Außerdem wird ein Log geschrieben, dafür fehlt aber noch die Schnittstelle in der Oberfläche.
Was ich nicht getestet habe sind mehrseitige Formulare, da wäre es schön, wenn das mal jemand testen könnte, der schon damit gearbeitet hat.
Im Grunde sollten alle aus MiniForm bekannten Funktionen wieder funktionieren, einschließlich des Imports von Konfigurationen aus Ruuds "Form Builder". (Erfordert CUrl.)
Edit: Download entfernt, neuere Version weiter unten.
Last edited by webbird (16.09.2022 15:27:47)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Screenshot vom Admin Tool (in 1.0.prev1 noch nicht enthalten).
Last edited by webbird (05.05.2022 14:14:51)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Anbei eine aktualisierte Version, aber immer noch nicht fertig. Behebt einige Fehler der prev1 und hat das oben gezeigte AdminTool an Bord.
Der Export wird zwar schon angeboten, ist aber noch nicht eingebaut.
Last edited by webbird (16.09.2022 15:21:52)
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Mal eine Frage, das Extended MiniForm schreibt ein Log, wo möchtet Ihr das eher einsehen? Auf der Seite (also da, wo man die Einstellungen zum Mailversand macht) oder im AdminTool? Ich tendiere zum AdminTool.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Vielleicht verschiebe ich den CSV-Export dann auch lieber in das Admin Tool... *grübel*
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Csv Export auf der entsprechenden Seite (Was, wenn es mehrere Formularinstanzen gibt, je Instanz ein Export)
Log im Admintool, (Integration im Errorlog oder extra?)
Offline