Ich arbeite an einem System, in dem viele "Administratoren / Manager" Benutzer aus der Datenbank per E-Mail benachrichtigen. Eine der Hauptfunktionen besteht darin, dass mehrere Personen gleichzeitig eine E-Mail mit spezifischen Informationen erhalten können, die für jede von ihnen relevant sind. Ein weiteres wichtiges Merkmal ist die Möglichkeit, E-Mails von Hand zu erstellen, da diese in der Regel jedes Mal geringfügig geändert werden müssen. Eine grundlegende Vorlage spart jedoch viel Zeit.
Dafür haben wir die typische "Vorlagen" -Lösung, bei der wir eine Vorlage haben, die ungefähr so aussieht:
Hello {{recipient.full_name}},
Your application to {{activity.title}} has been accepted.
You have requested to participate on dates {{application.dates}}, in role {{application.role}}
Blah blah blah
Das Problem, das wir haben, ist offensichtlich, dass Manager (wie erwartet) nicht die gesamte Idee der "Variablen" haben und sie beispielsweise überschreiben, sodass sie nicht mehr als eine Person gleichzeitig per E-Mail kontaktieren können, vorausgesetzt Diese werden nicht ersetzt und das System ist kaputt oder sogar unerklärliche Dinge wie "Hallo {{John}}".
Das große Problem ist, dass dies nicht wie üblich in einen "Admin" -Bereich verwiesen wird, in dem nur wenige Hauptbenutzer Zugriff auf die Bearbeitung der Vorlagen haben, die automatisch gesendet werden, und von denen erwartet wird, dass sie wissen, was sie tun. Jeder Benutzer des Systems ist diesem Problem ausgesetzt.
Die naheliegende Lösung wäre, die Variablen zu ersetzen, bevor diese Vorlage für den Benutzer zum Bearbeiten angezeigt wird. Dies funktioniert jedoch nicht, wenn mehrere Personen per E-Mail benachrichtigt werden.
Dies scheint ein ziemlich häufiges Problem zu sein, und wir hoffen, dass jemand es bereits gelöst hat.
Haben Sie irgendwo gesehen / geschaffen / können Sie sich gute Lösungen für dieses Problem vorstellen?
Aktualisieren
Basierend auf der Antwort von Daniel B habe ich anhand der Cursorposition und der Position von {{}} im Code festgestellt, ob sich der Benutzer derzeit "innerhalb einer Variablen" oder "außerhalb" befindet. Im Inneren zeige ich ein kleines Stück Text unter dem großen Textbereich, in dem erklärt wird, dass dies ersetzt wird und dass sie es vollständig entfernen können, wenn sie wollen, aber sie können es nicht bearbeiten.
Ich mache das onClick, onChange, onKeyDown, onKeyUp. Wenn wir uns für die "Schlüssel" -Ereignisse in einer Variablen befinden, gebe ich nur dann TRUE zurück, wenn der keyCode einer der wenigen "Navigationsschlüssel" ist. Andernfalls gebe ich FALSE zurück, wodurch die Ausgabe dieser Variablen effektiv verhindert wird.
Es ist nicht perfekt, aber es war sehr billig und scheint effektiv zu sein.