Introduction
        
            This document provides an introduction to the messaging functionality in 
            EPiServer. There are many scenarios where it is useful for an editor to be made 
            aware of the current working page
            status. One example is when a specific page property is edited or when a page is 
            submitted for editing. A common solution for providing this kind of action 
            result notifications to editors is therefore available in the EPiServer 
            platform.
        
            The message service store uses a central message pool.
            The solution contains two main parts:
        
            - A central message hub service which can support other parts in 
                adding or removing items.
 
            - A widget container displaying all the notification items for a current working page to 
                a user.
 
        
        
            Adding Message Service Component
        
            The message service is the central hub which is registered in the EPiServer 
            Framework ShellModule.
        
            Whenever you want to refer to the message service you just use a dependency to resolve
            it.
        
            
this._messagePool = epi.dependency.resolve("epi.shell.MessageService");
         
        
            Methods
        
            
put: function ( /*String*/typeName,
                /*String*/message,
                /*String*/contextTypeName,
                /*Object*/contextId,
                /*Object*/externalItemId,
                /*Object*/externalItemData) 
remove: function (/*Object?*/query)
query: function (/*Object?*/query)
observe: function (/*Object?*/query, callback)
            
         
        
            Examples
        
            The example code 
            below shows how to to add a page property item error to the global message queue.
        
            
this._messagePool.put("error", result.error, "Page", this.pageLink, item.propertyName, item.item);
         
        
            The 
            example code below shows how to remove a page property item error from the global message queue.
        
            
this._messagePool.remove({
    contextTypeName: "Page",
    contextId: this.pageLink,
    externalItemId: item.propertyName,
    externalItemData: item.item });
         
        
            The example code 
            below shows how to query error items with a specific [contextTypeName] and 
            [contextId] in the global message queue.
        
            
this._query = { typeName: "error", contextTypeName: this.contextTypeName, contextId: this.contextId};
var messages = this._messagePool.query(this._query);
         
        
            The example code 
            below shows how to observe a message with a specific [contextTypeName] and [contextId]
            in the global message queue, with query conditions.
        
            
this._messagePool.observe({ contextTypeName: messageContext.contextTypeName, contextId: messageContext.contextId });
         
        
            Message Service Listener Widget
        
        
            Currently 
            the [NotificationStatusBar] widget is just injected to the status bar 
            and will observe all changes in the message queue related to the current working page.
            The widget will then display all message elements for the current working page, 
            for example errors, warnings and notifications.