Conversation
Overview
Custom defined control for showing conversations. Configurations of this control is dependent on the Conversation.meta
metaclass.
Example
This example has been taken from the EntityConversations
portlet.
XML
<CustomView head="true" name="ctrlConversations" type="md:Conversation">
<Models>
<Collection attributes="(recipients entityFullNameFirstLast) (activeParticipants entity)" name="conversations" order="(((conversationContext lastMessageSentTime) . #f) ((@) . #f))" value="(@)">
<Bind name="active" value="currentUserParticipation conversationUser isParticipantActive"/>
<Bind name="private" value="isPrivate"/>
</Collection>
<Instance name="conversation" value="(@)">
<Bind converter="image" name="icon" value="(image . (from image))(data . mimeData)(type . mimeType)(icon . (from icon))(default . "businessman")"/>
<Bind converter="message" name="participants" pattern="ids.conversationsTo" value="`(vector ,(@ from fullNameFirstLast) ,(@ recipients))"/>
<Bind name="subject" value="subject"/>
<Bind name="context" value="context caption"/>
<Bind name="leavable" value="currentUserParticipation leavable"/>
<Bind name="isRead" value="currentUserParticipation conversationUser isRead"/>
</Instance>
<Collection name="messages" order="((sentTime . #f) ((@) . #f))" value="(@ conversationMessages)" where="`(client-return-where (@ model where))">
<Bind name="body" value="formattedMessage"/>
<Bind name="sender" value="senderFullNameFirstLast"/>
<Bind name="sentTime" pattern="datetime.m.f" value="sentTime"/>
<Bind name="event" value="isEventMessage"/>
</Collection>
<Collection name="userMessages" order="((sentTime . #f) ((@) . #f))" value="(@ conversationUser conversationUser conversationMessageUsers)">
<Bind name="read" value="isRead"/>
</Collection>
</Models>
<Configuration>
<Properties actives="conversations active" context="conversation context" icon="conversation icon" inviteEvent=""sysPick"" items="conversations" leavable="conversation leavable" leaveEvent=""leaveConversation"" markReadEvent=""markRead"" marked="conversation isRead" messageBodies="messages body" messageEvents="messages event" messageReads="userMessages read" messageSenders="messages sender" messageTimes="messages sentTime" messages="messages" participants="conversation participants" privates="conversations private" replyEvent=""reply"" subject="conversation subject" userMessages="userMessages"/>
</Configuration>
</CustomView>
Explanation
For further details on the Conversation control, see the custom control definition "md:Converstion" in the finance-md project.