Clone wiki

cloudengine / Messaging

Messaging system documentation

General features

  • Link to ‘Messages’ added to primary navigation
  • Messages link in primary navigation will show unread message count (superscript). Checked on every page request
  • Member profiles now have a ‘Send message’ link on
    • When clicked this will go to the compose message page with the ‘To’ field complete with the recipient’s user id
  • ‘Messages’ in the primary navigation bar only shows for users who are logged in to the site
  • All pages in messaging system have a header bar with options that relate to the page you’re on but has a consistent look and feel across all pages
  • Clicking ‘Messages’ in the primary navigation bar takes users to their inbox
  • Messaging uses the concept of multi-participant threaded messages
    • i.e. conversations consist of two or more participants
    • the recipient list is fixed once the original message is sent
    • the term thread and conversation are synonymous
  • Research looked at the following message/communication systems:
    • Facebook
    • Linked in
    • Twitter
    • Google mail
    • Flickr
    • Drupal – privatmsg module
  • An information message header has been implemented which displays colour coded message to confirm actions (e.g. message successfully sent) which are displayed to the user for a few seconds, then fade
  • Email notifications are sent to users when they receive a message. Users can opt out of this notification

Inbox / conversation list

Inbox. View on Flickr.

  • Shows all threads/conversations that the user is a participant of
  • List has a checkbox next to all messages to select individual or a group of messages to perform actions on. Also has select all/none functionality
  • Messages are ordered by the conversation with the most recent reply onwards
  • Header options:
    • Compose – compose new message
    • Mark unread – mark selected conversations as unread
    • Mark read – mark selected conversations as read
    • Delete – delete selected conversations
  • Each conversation also has an ‘x’ next to it to directly delete the message
  • The inbox view of each conversations shows (in order):
    • An arrow if the user was the last person to reply in the conversation
    • A checkbox to select the message
    • An avatar picture of the last user to reply in the conversation
    • The name of the last person to reply in the conversation and the date/time of the reply
    • The subject of the conversation
    • A preview of the last message in the conversation
    • The participants of the conversation
    • The total number of messages in the conversation
    • The number of unread messages in the conversation
    • An ‘x’ to delete the conversation
  • You can click on a conversation participant’s name to view their profile
  • Conversations that have any unread messages in them have a blue/grey background colour

Message thread/conversation

Conversation. View on Flickr.

  • Header options
    • All messages – take user back to inbox
    • Mark unread – mark current message unread and take user to inbox
    • Delete – delete the current message and take user to the inbox
  • Actions:
    • Submit reply – submit a reply to all participants of the conversation
  • Show all participants in thread at the top as links to each user’s profile

Compose / Reply to message

Compose. View on Flickr.

  • Has ‘to’, ‘subject’ and ‘message’ fields
  • ‘To’ field uses ajax to bring back list of all users, showing their display name. When the person composing the message selects a user, it populates the to field with a the recipient’s user name
  • All fields are mandatory – subject only required on the original message in a thread. After this the subject remains for the thread
  • Header options:
    • ‘All messages’ – go back to inbox without sending the message
  • Actions:
    • Send message
    • Cancel
  • After sending the message the user gets shown a view of the sent message

System / Database design

Database design. View on Flickr.

  • Careful consideration was given to the database design to allow a flexible but not overly complicated design to allow multi-participant conversations
  • Each of the main messaging tables link to the user tables to get user names and user display names
  • The main concept is that:
    • A thread/conversation is made up of a number of messages
    • Each conversation and each message within a conversation are entities in their own right
    • Each participant in a thread then has their own link to each thread and message that they are involved with. This allows users to apply actions to threads and messages that don’t interfere with the same thread or message that other users are participants in. For example a user can delete a thread or a message within a thread and it will have no affect on other users who are participants in the thread
  • Here is a description of each of the messaging tables:
  • Message_thread table
    • This holds the ID for the overall conversation/thread
    • The subject that applies to the conversation
    • User id of the author of the thread (also the same as the author of the first message of a thread)
    • Creation date of the thread (also the same as the created date of the first message of a thread)
  • Message_thread_participant table
    • This is a thread participant’s link/copy to the conversation and allows each participant to action the thread (e.g. delete it, mark read, mark unread) for him/her only
  • Message table
    • This is the actual message content that belongs to a thread. There will be one or more messages for each thread
    • This holds the message content text
    • The author for the message
    • The date/time the message was created
    • The id of the thread that the message belongs to
  • Message_recipient table
    • Similar to the Message_thread_participant table this holds a link/copy of a message for each recipient of the message, allowing each recipient to action the message (e.g. delete, report spam, mark_unread, mark_read)
    • Has a link to the thread/conversation that the message belongs to

To do / possible future functionality

  • Inbox: next/prev functionality to limit number of conversations shown on a page and next/prev links to navigate through pages of conversations
  • Conversation page: next/prev functionality to navigate to the next/previous conversation for a user
  • Conversation page: have an ‘x’ next to each message in a conversation so a user can delete individual messages in a conversation
  • Conversation page: Have a report spam link next to each message in a conversation so a user can report individual messages as spam. Highlight these messages with a different background colour
  • Conversation page: ‘Create cloud’ button to create cloud with a link to the conversation it was created from (idea that the cloud is related to the conversation)
  • Compose message page: commonly used contacts and/or favourites and/or followers/following to select to populate the ‘To’ field
  • Folders/tags for conversations
  • Block user function
  • Archive folder (as simpler alternative to folders/tags)
  • Search messages function
  • Undo delete or show ‘Trash’/’Bin’ messages to be able to ‘undelete’ them