我正在一个系统上,我们依赖于许多“管理员/经理”通过数据库向用户发送电子邮件。关键功能之一是能够同时向多个人发送电子邮件,并提供与每个人相关的特定信息。另一个关键功能是能够手工制作电子邮件,因为每次都需要对电子邮件进行轻微修改,但是使用基本模板可以节省大量时间。
为此,我们有一个典型的“模板”解决方案,其中有一个看起来像这样的模板:
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
显然,我们遇到的问题是(如我们预期的那样),管理人员没有得到完整的“变量”构想,他们做了诸如覆盖它们的事情,这使得他们一次不能向一个人发送多个电子邮件。它们将不会被替换并且系统已损坏,甚至无法解释,例如“ Hello {{John}}”。
最大的问题是,与往常一样,这并没有降级为“管理员”部分,在该部分中,只有少数高级用户有权编辑自动发送的模板,并且期望他们知道自己在做什么。系统的每个用户都会遇到此问题。
显而易见的解决方案是在显示此模板以供用户编辑之前替换变量,但这在向多个人发送电子邮件时不起作用。
这似乎是一个相当普遍的问题,我们希望有人已经解决了它。
您是否见过任何地方/已创建/可以想到解决此问题的好方法?
更新资料
根据Daniel B的回答,我最终要做的是根据光标位置和代码中{{}}的位置来检测用户当前是“变量内”还是“变量外”。在内部,我在大文本区域下方显示了一小段文字,解释该文字将被替换,并且他们可以根据需要将其完全删除,但无法编辑。
我这样做onClick,onChange,onKeyDown,onKeyUp。对于“键”事件,如果我们位于变量内,则仅当keyCode是一些“导航”键之一时,我才返回TRUE。否则,我返回FALSE,这实际上防止了该变量的版本。
它不是完美的,但是它非常便宜,并且似乎有效。