什么是使用替换变量来编辑电子邮件模板的用户友好解决方案?


9

我正在一个系统上,我们依赖于许多“管理员/经理”通过数据库向用户发送电子邮件。关键功能之一是能够同时向多个人发送电子邮件,并提供与每个人相关的特定信息。另一个关键功能是能够手工制作电子邮件,因为每次都需要对电子邮件进行轻微修改,但是使用基本模板可以节省大量时间。

为此,我们有一个典型的“模板”解决方案,其中有一个看起来像这样的模板:

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,这实际上防止了该变量的版本。

它不是完美的,但是它非常便宜,并且似乎有效。


对比我有更多代表的人发表评论:(我是UX的新手)请问标记这个问题吗?我在想的所有标签还不存在:模板变量用户界面用户友好用户可编辑

这些模板如何显示?它只是编辑器中的纯文本吗?
克里斯·

现在,是的,当您选择一群人并单击“消息”时,您将看到一个带有大文本区域的“弹出”对话框,该区域具有模板内容。它实际上是markDown,尽管显然我们的用户不习惯它,但它看起来像纯文本。我们没有所见即所得的编辑器,并且如果有帮助,我们愿意使用它。但就其本身而言,它仍然不起作用,人们仍然不会理解这些变量

这里的根本问题是您的经理不了解变量。除非您解决该问题,否则请针对症状进行解决。并非所有问题都需要编码解决方案。
黑暗之夜

同意 我希望能够教育人们,但是显然我们不能要求他们阅读手册,因此我正在寻找有关如何使他们容易理解的想法。有想法吗?
Daniel Magliola

Answers:


3

根据ChrisF答案中的评论要求,这是我过去使用的一种解决方案:

  • 使用WinForms RichTextBox允许用户编辑模板的文本。
  • 允许将变量或占位符拖放(或其他插入)到RichTextBox中。
  • 通过在光标的当前位置附近检查变量的定界符(在示例中为{{和}}符号),禁止编辑变量本身。

我的实现最终看起来像这样:

RichTextBox示例

它具有可选的变量突出显示部分,以区别于标准文本。
变量定界符实际上在那里,它们恰好具有相同的前景色和背景色。

显然,这与基于HTML的实现完全不同。我可能会研究Gmail的编辑器是如何实现的;它似乎类似于文本区域,但能够具有内联图像(表情符号等),这与您要查找的行为类似。


4

我会考虑更改将模板呈现给用户的方式,以便您可以使将被代码更改的部分不可编辑。像这样:

小样

现在,您不希望用户更改的位不可编辑。您可以包括一个关闭按钮,以便他们可以在不需要时删除它们。您还可以包括解释性文本和/或工具提示,以解释这些{{...}}位的含义以及为什么应将其单独放置。

WrapPanel在每个段落中使用Silverlight / WPF之类的内容可能会为您提供一些使每个部分(可编辑和不可编辑)随着用户控制的文本增长和缩小而流动的功能。


这样做的主要问题是我不能同时使文本框为“内联”和“多行” ...因此布局将非常奇怪...如果您可以编辑“ Dear”,则变量将移动是的,右边还有一个神奇地包裹着的文本框,那真是太棒了。但是我不知道如何实现这一目标。我们一直尝试使用的替代方法是在较大的文本区域中包含“不可编辑”的块,这样您就不能更改其内容,但是可以删除它们(带有“ X”)。我们还无法完成这项工作。你在某处看过吗?谢谢!!!

@DanielMagliola WrapPanel在每个段落中都可以使用Silverlight / WPF之类的东西,可能会给您想要的东西。
克里斯·

过去@DanielMagliola,我已经可以使用WinForms RichTextBox实现此功能。可以将“变量”拖放到richtextbox中,并对其应用样式以使其清楚地表明它是一个占位符。棘手的部分是防止更改变量。一种解决方案是检查当前光标位置是否包含标签字符,如果是这种情况,则禁止编辑。
Daniel B

我忘了提及这一点,这是一个HTML应用程序,但该想法仍然适用。我喜欢“检查光标位置并禁止编辑的想法”,谢谢!!
丹尼尔·马格罗拉

@DanielB:其实,你能不能回应一下,我想你有赢家!谢谢!!
丹尼尔·麦格罗拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.