Umbraco - как добавить собственное уведомление? - PullRequest
3 голосов
/ 17 марта 2011

Я использую Umbraco 4.6.2, и мне нужно расширить предоставляемые по умолчанию уведомления.Ради этого вопроса, допустим, я пытаюсь добавить уведомление «Unpublish».

В \umbraco\presentation\umbraco\dialogs\notifications.aspx.cs он создает список элементов checkbx, отображаемых пользователю при открытии диалога «Уведомления» изконтекстное меню.

Я вижу, что у каждого Action есть свойство ShowInNotifier - как мне установить это значение на true для действия UnPublish?Требуется ли для этого изменение базовой кодовой базы или есть хороший способ, которым я могу изящно расширить Umbraco?

Так что после того, как я добавил это, пользователи могут подписаться на уведомление об отмене публикации (я пропускаю какие-либо шаги здесь?)Будет ли это автоматически отправлять уведомления сейчас?

Я предполагаю, что нет, поэтому следующее, что я сделал, перехватил событие 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?Должен ли я скопировать его вручную или есть лучший способ сделать это (программно).

Любая помощь (или даже просто ссылки на соответствующие примеры) приветствуется:>

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011

У меня это работает на Umbraco 4.7 с помощью класса UmbracoSettings:

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);
0 голосов
/ 25 марта 2011

Мой коллега получил эту работу.

Создайте класс, который отменяет действие, для которого вы хотите получать уведомления. Вы можете увидеть все действия в /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.

Вот и все!

...