带有POST请求的任何插件表单示例

大家好!

我们正在努力解决我们在此处进行的一项插件开发问题:Error "Unable to configure link to 'Auto Send Messages'. Ensure ad-blockers are disabled and try reloading the page."

我们非常希望能获得一个包含表单提交类型操作的插件工作示例。我们的插件主要有两个部分:

  • 一些配置项
  • 一个用户可以输入文本并“提交”以进行处理的表单

因此,如果有人知道任何具有这些功能的插件,我们将非常感谢您提供链接,以便我们审查其工作原理。

谢谢!

您能多谈谈您正在做什么吗?您要更改表单的哪些内容?这可以是一个主题组件吗?您提交的是现有端点还是您添加的端点?

请参阅 Discourse toolkit to render forms

然后您可以获取 GitHub - discourse/all-the-plugins 并搜索“<Form”,但您也可以参阅 Repository search results · GitHub Discourse toolkit to render forms - #20 by david 中所述(尽管那些都在核心中,而不是插件中)

也许可以看看 discourse-data-explorer/assets/javascripts/discourse/components/param-input-form.gjs at main · discourse/discourse-data-explorer · GitHub

2 个赞

FormKit 相当新。

我甚至还没有更新 Locations 插件来使用它。

(但如果重新开始,这绝对是正确的选择 :+1:

1 个赞

确实如此。对于编写新代码的人来说,我仍然会推荐它。

我已经在开发一个新项目时使用过它。(你可以在关于它的主题中看到我对此大吐苦水!)

2 个赞

@pfaffman 我们想创建一个简单的表单,提示用户输入四项内容:

  1. 发件人
  2. 收件人
  3. 主题
  4. 正文

用户将填写这些字段,然后单击一个按钮来触发发送电子邮件的端点。

具体来说,表单将包含这四个元素,一旦单击“发送”按钮,它将调用端点来发送消息。

我不确定这是否正是您想要的,但主要目标是允许管理员用户输入文本(电子邮件主题和正文),然后单击按钮将其发送给 Discourse 中的用户。

未来,我们希望将其扩展为允许用户从一个发件人向多个收件人触发多条消息。我们希望操纵诸如消息总数和每条消息之间的延迟之类的参数,以控制发送的消息数量以及它们之间的间隔。

也许再往回退一步,描述一下你实际要解决的问题。

你的意思是你想发送一封直接邮件(这样消息就不会出现在 Discourse 中),还是你想发送一个会发送给用户的私人消息(在大多数情况下会生成电子邮件通知)?

你想更改私人消息的发送者吗?这似乎是现有私人消息界面唯一缺少的功能,对吗?

1 个赞

感谢您的澄清!为了提供更多背景信息,我们正在与大量用户合作,旨在重新吸引那些一段时间没有与我们的应用互动的用户。目标是向特定发件人批量发送私人消息(PM),并对多个参数进行控制:

  1. 发件人:管理员用户将在表单中直接指定发件人的用户名。
  2. 主题和内容:管理员可以自定义PM的主题和正文。
  3. 控制发送量:我们希望控制一次发送的消息数量,以避免骚扰用户。
  4. 时间控制:主要关注点是确保能控制消息的发送速度,以避免压垮我们的邮件域并被标记为垃圾邮件。我们需要能够通过定义每条消息(及其对应的电子邮件)之间的延迟来安排间隔,从而防止触发垃圾邮件过滤器。

最终目标是让用户打开私人消息(这也会生成电子邮件通知),并鼓励他们返回我们的应用。

我们已有一个简单的Ruby脚本可以完成此任务,并且完全可用。目前,我们通过SSH手动访问虚拟机触发脚本,操作有些繁琐。现在我们希望将此脚本改造成一个插件,允许管理员通过界面轻松触发,并能直接在管理员界面中输入设置(发件人、主题、内容、消息数量、间隔时间等)。

我们希望通过一个插件界面实现:让管理员轻松输入这些设置,触发操作,并监控消息的发送进度。

1 个赞

这是很多部分。

我可能会做类似的事情,将用户放在一个组中,计划给组内的所有用户发送消息。当消息被发送时,你会在user_custom_field中设置一个值,并使用某个现有的主题作为消息的文本和发件人。一个作业会定期运行,发送你想要的消息数量。我会将组和自定义字段的值放在设置中。

这样你就不需要接口或创建新的路由;你可以直接使用现有的设置。你也可以通过数据探索器查看发生了什么,因此你不需要为这两者开发界面。

但如果你想让用户在UX中输入一些字段,你应该看看我已经提到的Form这个东西。

1 个赞