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

时间:2011-03-16 22:58:24

标签: events notifications umbraco

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

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

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

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

我猜不是,所以我接下来做的事情就是挂起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通知使用的格式?我应该手动复制它还是有更好的方法(以编程方式)。

感谢任何帮助(甚至只是相关示例的链接):&gt;

2 个答案:

答案 0 :(得分:0)

我的同事得到了这个工作。

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

中查看所有操作
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。

就是这样!

答案 1 :(得分:0)

我使用UmbracoSettings课程在Umbraco 4.7上工作:

http://www.java2s.com/Open-Source/CSharp/Content-Management-Systems-CMS/umbraco/umbraco/businesslogic/UmbracoSettings.cs.htm

umbraco.library.SendMail(umbraco.UmbracoSettings.NotificationEmailSender, newMember.Email, "email subject", "email body", false);