Точка расширения для отображения ленты сообщений всех типов объектов

Пространство имен:

EleWise.ELMA.Messages.Components.Feed

Точка расширения:

DefaultFeedObjectGroupExtension

Краткое описание

Не рекомендуется использовать интерфейс IFeedObjectGroupExtension, так как при его изменении не гарантируется сборка ваших модулей.

Точка расширения является компонентом и регистрируется в системе с уровнем ServiceScope.Shell.

Методы точки расширения

/// <summary>
/// Проверка, поддержки точкой расширения указанного типа объекта.
/// </summary>
/// <param name="objectTypeUid">Уникальный идентификатор типа объекта.</param>
public virtual bool IsSupport(Guid objectTypeUid)

Возвращает true, если данная точка расширения поддерживает работу для указанного типа объекта, иначе false. Должен быть переопределено в наследуемом классе.

/// <summary>
/// Наименование типа сообщения.
/// </summary>
/// <param name="objectTypeUid">Уникальный идентификатор типа объекта.</param>
public virtual string MessageTypeName(Guid objectTypeUid)

Возвращает название типа сообщения. По умолчанию, используется название объекта (свойство DisplayName из метаданных объекта). Может быть переопределено в наследуемом классе.

Свойства точки расширения

/// <summary>
/// Класс для отрисовки типа сообщения.
/// </summary>
public virtual string MessageTypeCssClass

Возвращает название класса стиля, определенного в файлах *.css. По умолчанию, "FeedTypeDefault"). Может быть переопределено в наследуемом классе.

/// <summary>
/// Подсказка в поле ввода быстрого комментария.
/// </summary>
public virtual string CommentaryDescription

Определяет текст в поле быстрого ввода комментария в ленте сообщений.

По умолчанию используется SR.T("Оставить комментарий"). Может быть переопределено в наследуемом классе.

Пример использования (на базе модуля Календарь)

/// <summary>
    /// Точка расширения для отображения сообщений событий календаря.
    /// </summary>
    [Component(Order = 500)]
    public class CalendarEventFeedObjectGroupExtension : DefaultFeedObjectGroupExtension
    {
        /// <summary>
        /// Проверка, поддержки точкой расширения указанного типа объекта.
        /// </summary>
        /// <param name="objectTypeUid">Уникальный идентификатор типа объекта.</param>
        /// <returns></returns>
        public override bool IsSupport(Guid objectTypeUid)
        {
            return MetadataLoader.IsBaseOrChildClass<ICalendarEvent>(objectTypeUid);
        }

        /// <summary>
        /// Наименование типа сообщения.
        /// </summary>
        public override string MessageTypeName(Guid objectTypeUid)
        {
            return SR.T("Событие в календаре");
        }


        /// <summary>
        /// Класс для отрисовки типа сообщения.
        /// </summary>
        public override string MessageTypeCssClass
        {
            get { return "FeedTypeCalendarEvent"; }
        }
    }

В методе IsSupport определяется принадлежность проверяемого типа объекта к ICalendarEvent, а также всем его наследникам, таким как IDocumentCalendarEvent и т.д. Если возвращается true, то будут вызваны другие методы и свойства данной точки расширения.

Метод MessageTypeName возвращает наименование типа объекта, как он будет отображаться в ленте сообщений. При этом проверка на тип объекта не производится, так как она уже была сделана ранее в методе IsSupport.

Свойство MessageTypeCssClass определяет класс стиля, который будет использоваться при отрисовки элемента ленты сообщений в пользовательском интерфейсе. При этом, как отрисовывать, указывается в Feed.css модуля Календарь:

/* Feed */

div.FeedTypeCalendarEvent div.FeedObjectTypeTitle-Left {
    background: url("/Modules/EleWise.ELMA.BPM.Web.Calendar/Content/Images/feedtype-title-CalendarEvent-l.png") no-repeat;
}
div.FeedTypeCalendarEvent div.FeedObjectTypeTitle-Right {
    background: url("/Modules/EleWise.ELMA.BPM.Web.Calendar/Content/Images/feedtype-title-CalendarEvent-r.png") no-repeat;
}
div.FeedTypeCalendarEvent div.FeedObjectTypeTitle-Text {
    background-color: #FFCAD2;
    border-color: #FEA5AF;
}

Свойство CommentaryDescription в модуле не определяется, так как используется значение по умолчанию.

Ссылки на элементы API