gpt4 book ai didi

events - Umbraco - 如何添加自定义通知?

转载 作者:行者123 更新时间:2023-12-02 05:11:34 27 4
gpt4 key购买 nike

我正在使用 Umbraco 4.6.2,并且需要扩展它提供的默认通知。为了这个问题,假设我正在尝试添加“取消发布”通知。

\umbraco\presentation\umbraco\dialogs\notifications.aspx.cs 中,它构建了从上下文菜单打开“通知”对话框时向用户显示的复选框项目列表。

我看到每个 Action 都有一个 ShowInNotifier 属性 - 如何为 UnPublish 操作将此值设置为 true?这是否需要修改核心代码库,或者是否有我可以优雅地扩展 Umbraco 的好方法?

所以在我添加这个之后,用户可以订阅 UnPublish 通知(我在这里是否遗漏了任何步骤?)。现在会自动发送通知吗?

我猜不会,所以接下来我要做的是 Hook UnPublish 事件:

public class CustomEvents : ApplicationBase
{
public CustomEvents()
{
Document.AfterUnPublish += new Document.UnPublishEventHandler(Document_AfterUnPublish);
}

void Document_AfterUnPublish(Document sender, umbraco.cms.businesslogic.UnPublishEventArgs e)
{
var user = User.GetCurrent();

if (!string.IsNullOrEmpty(user.Email) && user.GetNotifications(sender.Path).Contains("UnPublish"))
{
//Send a notification here using default Umbraco settings, or, construct email and send manually:
string umbracoNotificationSenderAddress = ""; //How to get the address stored in umbracoSettings.config -> <notifications> -> <email>

//How to use the same subject/message formats used for other notifications? With the links back to the content?
string subject = "Notification of UnPublish performed on " + MyUtilities.GetFriendlyName(sender.Id);
string message = MyUtilities.GetFriendlyName(sender.Id) + " has just been unpublished.";

umbraco.library.SendMail(umbracoNotificationSenderAddress, user.Email, subject, message, true);
}
}
}

所以该代码的某些部分不是真实的/我需要一些指示:

  • 这是检查用户是否订阅特定通知的正确方法吗?

  • 如何使用默认的 umbraco 设置发送通知? (例如,像其他通知一样生成电子邮件)

如果那不可能,我必须构建自己的电子邮件:

  • 如何获取存储在 umbracoSettings.config 中的发件人电子邮件地址

  • 如何复制默认 Umbraco 通知使用的格式?我应该手动复制它还是有更好的方法(以编程方式)执行此操作。

感谢任何帮助(或者甚至只是相关示例的链接):>

最佳答案

我的同事成功了。

创建一个类来覆盖您希望获得通知的操作。你可以在/umbraco/cms/Actions

中看到所有的 Action
public class ActionUnPublishOverride : umbraco.BusinessLogic.Actions.ActionUnPublish, IAction
{
... see what the other actions look like to find out what to put in here!

在覆盖的类中,您将拥有一个public char Letter。设置此项以匹配要挂接的事件。您可以在数据库中找到每个事件的字母。

public bool ShowInNotifier 设置为 true。

就是这样!

关于events - Umbraco - 如何添加自定义通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com