[ELMA3] Точка расширения для отображения ленты сообщений всех типов объектов
|
Пространство имен: |
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 в модуле не определяется, так как используется значение по умолчанию.