← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 5681: (mobile) messaging finished for now

 

------------------------------------------------------------
revno: 5681
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2012-01-09 19:59:43 +0530
message:
  (mobile) messaging finished for now
removed:
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessage.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessages.java
added:
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendFeedbackAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendReplyAction.java
modified:
  dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-light/src/main/resources/org/hisp/dhis/light/i18n_module.properties
  dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/dataEntryOverview.vm
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/feedback.vm
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/message.vm
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/messages.vm
  dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/style/light.css


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== removed file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessage.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessage.java	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessage.java	1970-01-01 00:00:00 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2004-2012, University of Oslo
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright notice, this
-*   list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright notice,
-*   this list of conditions and the following disclaimer in the documentation
-*   and/or other materials provided with the distribution.
-* * Neither the name of the HISP project nor the names of its contributors may
-*   be used to endorse or promote products derived from this software without
-*   specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package org.hisp.dhis.light.message.action;
-
-import com.opensymphony.xwork2.Action;
-import org.apache.struts2.ServletActionContext;
-import org.hisp.dhis.message.Message;
-import org.hisp.dhis.message.MessageConversation;
-import org.hisp.dhis.message.MessageService;
-import org.hisp.dhis.util.ContextUtils;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
- */
-public class GetMessage
-    implements Action
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private MessageService messageService;
-
-    public void setMessageService( MessageService messageService )
-    {
-        this.messageService = messageService;
-    }
-
-    // -------------------------------------------------------------------------
-    // Input & Output
-    // -------------------------------------------------------------------------
-
-    private String conversationId;
-
-    public void setConversationId( String conversationId )
-    {
-        this.conversationId = conversationId;
-    }
-
-    private String subject;
-
-    public String getSubject()
-    {
-        return subject;
-    }
-
-    private List<Message> messages;
-
-    public List<Message> getMessages()
-    {
-        return messages;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action Implementation
-    // -------------------------------------------------------------------------
-
-    @Override
-    public String execute() throws Exception
-    {
-        MessageConversation conversation = messageService.getMessageConversation( conversationId );
-
-        subject = conversation.getSubject();
-        messages = new ArrayList<Message>( conversation.getMessages() );
-        Collections.reverse( messages );
-
-        return SUCCESS;
-    }
-
-}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java	2012-01-09 14:29:43 +0000
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.light.message.action;
+
+import com.opensymphony.xwork2.Action;
+import org.hisp.dhis.message.Message;
+import org.hisp.dhis.message.MessageConversation;
+import org.hisp.dhis.message.MessageService;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
+ */
+public class GetMessageAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private MessageService messageService;
+
+    public void setMessageService( MessageService messageService )
+    {
+        this.messageService = messageService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+
+    private String conversationId;
+
+    public String getConversationId()
+    {
+        return conversationId;
+    }
+
+    public void setConversationId( String conversationId )
+    {
+        this.conversationId = conversationId;
+    }
+
+    private String subject;
+
+    public String getSubject()
+    {
+        return subject;
+    }
+
+    private List<Message> messages;
+
+    public List<Message> getMessages()
+    {
+        return messages;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute() throws Exception
+    {
+        MessageConversation conversation = messageService.getMessageConversation( conversationId );
+
+        subject = conversation.getSubject();
+        messages = new ArrayList<Message>( conversation.getMessages() );
+        Collections.reverse( messages );
+
+        return SUCCESS;
+    }
+}

=== removed file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessages.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessages.java	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessages.java	1970-01-01 00:00:00 +0000
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2004-2012, University of Oslo
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright notice, this
-*   list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright notice,
-*   this list of conditions and the following disclaimer in the documentation
-*   and/or other materials provided with the distribution.
-* * Neither the name of the HISP project nor the names of its contributors may
-*   be used to endorse or promote products derived from this software without
-*   specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package org.hisp.dhis.light.message.action;
-
-import com.opensymphony.xwork2.Action;
-import org.hisp.dhis.message.MessageConversation;
-import org.hisp.dhis.message.MessageService;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
- */
-public class GetMessages
-    implements Action
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private MessageService messageService;
-
-    public void setMessageService( MessageService messageService )
-    {
-        this.messageService = messageService;
-    }
-
-    // -------------------------------------------------------------------------
-    // Input & Output
-    // -------------------------------------------------------------------------
-
-    private List<MessageConversation> conversations;
-
-    public List<MessageConversation> getConversations()
-    {
-        return conversations;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action Implementation
-    // -------------------------------------------------------------------------
-
-    @Override
-    public String execute() throws Exception
-    {
-        conversations = new ArrayList<MessageConversation>( messageService.getMessageConversations( 0, 10 ) );
-
-        return SUCCESS;
-    }
-}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java	2012-01-09 14:29:43 +0000
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.light.message.action;
+
+import com.opensymphony.xwork2.Action;
+import org.hisp.dhis.message.MessageConversation;
+import org.hisp.dhis.message.MessageService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
+ */
+public class GetMessagesAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private MessageService messageService;
+
+    public void setMessageService( MessageService messageService )
+    {
+        this.messageService = messageService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+
+    private List<MessageConversation> conversations;
+
+    public List<MessageConversation> getConversations()
+    {
+        return conversations;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute() throws Exception
+    {
+        conversations = new ArrayList<MessageConversation>( messageService.getMessageConversations( 0, 10 ) );
+
+        return SUCCESS;
+    }
+}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendFeedbackAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendFeedbackAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendFeedbackAction.java	2012-01-09 14:29:43 +0000
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.light.message.action;
+
+import com.opensymphony.xwork2.Action;
+import org.apache.struts2.ServletActionContext;
+import org.hisp.dhis.message.MessageService;
+import org.hisp.dhis.util.ContextUtils;
+import org.springframework.util.Assert;
+
+/**
+ * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
+ */
+public class SendFeedbackAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private MessageService messageService;
+
+    public void setMessageService( MessageService messageService )
+    {
+        this.messageService = messageService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+
+    private String subject;
+
+    public void setSubject( String subject )
+    {
+        this.subject = subject;
+    }
+
+    private String text;
+
+    public void setText( String text )
+    {
+        this.text = text;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute() throws Exception
+    {
+        Assert.hasText( subject );
+        Assert.hasText( text );
+
+        String metaData = MessageService.META_USER_AGENT +
+            ServletActionContext.getRequest().getHeader( ContextUtils.HEADER_USER_AGENT );
+
+        messageService.sendFeedback( subject, text, metaData );
+
+        return SUCCESS;
+    }
+}

=== added file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendReplyAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendReplyAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/SendReplyAction.java	2012-01-09 14:29:43 +0000
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.light.message.action;
+
+import com.opensymphony.xwork2.Action;
+import org.apache.struts2.ServletActionContext;
+import org.hisp.dhis.message.MessageConversation;
+import org.hisp.dhis.message.MessageService;
+import org.hisp.dhis.util.ContextUtils;
+
+/**
+ * @author Morten Olav Hansen <mortenoh@xxxxxxxxx>
+ */
+public class SendReplyAction
+    implements Action
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private MessageService messageService;
+
+    public void setMessageService( MessageService messageService )
+    {
+        this.messageService = messageService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input & Output
+    // -------------------------------------------------------------------------
+
+    private String conversationId;
+
+    public void setConversationId( String conversationId )
+    {
+        this.conversationId = conversationId;
+    }
+
+    private String text;
+
+    public void setText( String text )
+    {
+        this.text = text;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Implementation
+    // -------------------------------------------------------------------------
+
+    @Override
+    public String execute() throws Exception
+    {
+        String metaData = MessageService.META_USER_AGENT +
+            ServletActionContext.getRequest().getHeader( ContextUtils.HEADER_USER_AGENT );
+
+        MessageConversation conversation = messageService.getMessageConversation( conversationId );
+
+        messageService.sendReply( conversation, text, metaData );
+
+        return SUCCESS;
+    }
+}

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml	2012-01-09 14:29:43 +0000
@@ -128,11 +128,19 @@
     <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
   </bean>
 
-  <bean id="org.hisp.dhis.light.message.action.GetMessages" class="org.hisp.dhis.light.message.action.GetMessages">
-    <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
-  </bean>
-
-  <bean id="org.hisp.dhis.light.message.action.GetMessage" class="org.hisp.dhis.light.message.action.GetMessage">
+  <bean id="org.hisp.dhis.light.message.action.GetMessagesAction" class="org.hisp.dhis.light.message.action.GetMessagesAction">
+    <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.light.message.action.GetMessageAction" class="org.hisp.dhis.light.message.action.GetMessageAction">
+    <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.light.message.action.SendReplyAction" class="org.hisp.dhis.light.message.action.SendReplyAction">
+    <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
+  </bean>
+
+  <bean id="org.hisp.dhis.light.message.action.SendFeedbackAction" class="org.hisp.dhis.light.message.action.SendFeedbackAction">
     <property name="messageService" ref="org.hisp.dhis.message.MessageService" />
   </bean>
 

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/org/hisp/dhis/light/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/org/hisp/dhis/light/i18n_module.properties	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/org/hisp/dhis/light/i18n_module.properties	2012-01-09 14:29:43 +0000
@@ -42,3 +42,7 @@
 mark_as_not_complete=Mark as not complete
 
 messages=Messages
+conversations=Conversations
+subject=Subject
+reply=Reply
+write_feedback=Write feedback

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/resources/struts.xml	2012-01-09 14:29:43 +0000
@@ -98,17 +98,17 @@
 
     <!-- Messages -->
 
-    <action name="messages" class="org.hisp.dhis.light.message.action.GetMessages">
+    <action name="messages" class="org.hisp.dhis.light.message.action.GetMessagesAction">
       <result name="success" type="velocity">/dhis-web-light/main.vm</result>
       <param name="page">/dhis-web-light/messages.vm</param>
     </action>
 
-    <action name="reply" class="org.hisp.dhis.light.message.action.GetMessage">
+    <action name="reply" class="org.hisp.dhis.light.message.action.GetMessageAction">
       <result name="success" type="velocity">/dhis-web-light/main.vm</result>
       <param name="page">/dhis-web-light/message.vm</param>
     </action>
 
-    <action name="sendReply" class="org.hisp.dhis.light.action.NoAction">
+    <action name="sendReply" class="org.hisp.dhis.light.message.action.SendReplyAction">
       <result name="success" type="redirect">/mobile/messages.action</result>
     </action>
 
@@ -117,7 +117,7 @@
       <param name="page">/dhis-web-light/feedback.vm</param>
     </action>
 
-    <action name="sendFeedback" class="org.hisp.dhis.light.action.NoAction">
+    <action name="sendFeedback" class="org.hisp.dhis.light.message.action.SendFeedbackAction">
       <result name="success" type="redirect">/mobile/index.action</result>
     </action>
 

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/dataEntryOverview.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/dataEntryOverview.vm	2011-12-29 10:40:04 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/dataEntryOverview.vm	2012-01-09 14:29:43 +0000
@@ -7,6 +7,7 @@
 
 <h2>$encoder.htmlEncode( $dataSetName )</h2>
 
+#*
 #if( $validationRuleViolations.size() > 0 )
 <div class="header-box" align="center">
     <h3 style="text-align: left; background-color: #990000; color: white;">$i18n.getString("validation_rule_violation_warnings")</h3>
@@ -17,6 +18,7 @@
     </p>
 </div>
 #end
+*#
 
 <p>
     <ul>

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/feedback.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/feedback.vm	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/feedback.vm	2012-01-09 14:29:43 +0000
@@ -1,10 +1,23 @@
 
-<h2>$i18n.getString( "feedback" )</h2>
+<h2>$i18n.getString( "write_feedback" )</h2>
+
+<form method="POST" action="sendFeedback.action">
+<div class="header-box" align="center">
+	<h3 style="text-align: left;">$i18n.getString( "send_feedback" )</h3>
+    <p style="text-align: left;">
+        $i18n.getString( "subject" )<br />
+        <input type="text" maxlength="255" size="24" name="subject" /> <br />
+        $i18n.getString( "text" )<br />
+        <input type="text" maxlength="255" size="24" name="text" />
+        <input type="submit" style="width: 100%;" value="$i18n.getString("send")" />
+    </p>
+</div>
+</form>
 
 <div id="footer">
 <h2>$i18n.getString( "navigate_to" )</h2>
 <ul>
     <li><a href="messages.action">$i18n.getString("messages")</a></li>
-	<li><a href="index.action">$i18n.getString("home")</a></li>
+    <li><a href="index.action">$i18n.getString("home")</a></li>
 </ul>
 </div>

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/message.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/message.vm	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/message.vm	2012-01-09 14:29:43 +0000
@@ -3,8 +3,9 @@
 
 <form method="POST" action="sendReply.action">
 <div class="header-box" align="center">
-	<h3 style="text-align: left;">Reply</h3>
+	<h3 style="text-align: left;">$i18n.getString( "reply" )</h3>
     <p style="text-align: left;">
+        <input type="hidden" name="conversationId" value="$conversationId" />
         <input type="text" maxlength="255" size="24" name="text" />
         <input type="submit" style="width: 100%;" value="$i18n.getString("send")" />
     </p>

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/messages.vm'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/messages.vm	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/messages.vm	2012-01-09 14:29:43 +0000
@@ -12,7 +12,7 @@
 <p>
 <ul>
     #foreach( $conversation in $conversations )
-        #if( $conversation.read == false)
+        #if( $conversation.read == false )
             <li><a href="reply.action?conversationId=$conversation.uid" style="font-weight: bold;">$conversation.subject</a></li>
         #else
             <li><a href="reply.action?conversationId=$conversation.uid">$conversation.subject</a></li>

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/style/light.css'
--- dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/style/light.css	2012-01-09 11:55:36 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/webapp/dhis-web-light/style/light.css	2012-01-09 14:29:43 +0000
@@ -9,148 +9,167 @@
 abbr, acronym, address, big, cite, code, dfn, em, font, img, kbd, q, s, samp,
 small, strike, strong, sub, sup, tt, var,
 b, u, i, center, dl, dt, dd, fieldset, form, label, legend,
-caption, tr, th, td {
-	margin: 0;
-	padding: 0;
-	border: 0;
-	font-size: 100%;
-	font-weight: normal;
-	vertical-align: baseline;
-	background: transparent;
-}
-
-p {
-	border: 0;
-	font-size: 100%;
-	font-weight: normal;
-	vertical-align: baseline;
-	background: transparent;
-}
-a {
-	margin: 0;
-	padding: 0;
-	font-weight: normal;
-}
-
-h1, h2, h3, h4, h5, h6 {
-	margin: 0;
-	padding: 0;
-	border: 0;
-	vertical-align: baseline;
-	background: transparent;
-}
-
-body table {
-	margin: 0;
-	padding: 0;
-	font-size: 100%;
-	font-weight: normal;
-	vertical-align: baseline;
-	background: transparent;
-	border-collapse: collapse;
-	border-spacing: 0;
+caption, tr, th, td
+{
+    margin         : 0;
+    padding        : 0;
+    border         : 0;
+    font-size      : 100%;
+    font-weight    : normal;
+    vertical-align : baseline;
+    background     : transparent;
+}
+
+p
+{
+    border         : 0;
+    font-size      : 100%;
+    font-weight    : normal;
+    vertical-align : baseline;
+    background     : transparent;
+}
+
+a
+{
+    margin      : 0;
+    padding     : 0;
+    font-weight : normal;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+    margin         : 0;
+    padding        : 0;
+    border         : 0;
+    vertical-align : baseline;
+    background     : transparent;
+}
+
+body table
+{
+    margin          : 0;
+    padding         : 0;
+    font-size       : 100%;
+    font-weight     : normal;
+    vertical-align  : baseline;
+    background      : transparent;
+    border-collapse : collapse;
+    border-spacing  : 0;
 }
 
 /*
  * DEFAULT STYLES
  * 
  */
-body {
-	color: #333333;
-	font-weight: normal;
-	font-family: sans-serif;
+body
+{
+    color       : #333333;
+    font-weight : normal;
+    font-family : sans-serif;
 }
+
 /*removes horizontal overflow on certain devices*/
-body div#wrap {
-	width: 100%;
-	overflow: hidden;
-	position: absolute;
-	left: 0;
-	padding: 0;
+body div#wrap
+{
+    width    : 100%;
+    overflow : hidden;
+    position : absolute;
+    left     : 0;
+    padding  : 0;
 }
 
 /*
  * CONTENT
  */
 
-body div#content ul li {
-	padding-bottom: 8px;
+body div#content ul li
+{
+    padding-bottom : 8px;
 }
 
 /*
  * HEADER
  * 
  */
-body div#header {
-	height:	20px;
-	background-color: #1d5288;
-	border-bottom: 4px solid #184572;
-	padding-top: 2px;
-	padding-bottom: 2px;
-	margin-bottom: .5em;
-}
-
-body div#header span {
-	font-size: 1.5em;
-	font-weight: bold;
-	padding-left: 2%;
-	padding-right: 2%;
-	color: blue;
-	margin-bottom: .4em;
-	margin-top: .4em;
-}
-
-body div#header a {
-	border: none;
+body div#header
+{
+    height           : 20px;
+    background-color : #1d5288;
+    border-bottom    : 4px solid #184572;
+    padding-top      : 2px;
+    padding-bottom   : 2px;
+    margin-bottom    : .5em;
+}
+
+body div#header span
+{
+    font-size     : 1.5em;
+    font-weight   : bold;
+    padding-left  : 2%;
+    padding-right : 2%;
+    color         : blue;
+    margin-bottom : .4em;
+    margin-top    : .4em;
+}
+
+body div#header a
+{
+    border : none;
 }
 
 /*
  * FOOTER
  * 
  */
-body div#footer {
-	font-size: 0.9em;
-	background-color: #F6F6F6;
-	border-top: 1px solid #D8D8D8;
-	padding-left: 2%;
-	padding-right: 2%;
-	padding-bottom: 6px;
-	padding-top: 6px;
-	clear: both;
-	display: block;
-}
-
-body div#footer h2 {
-	font-size: 0.9em;
-	color: black;
-	line-height: normal;
-	border: none;
-	padding: 0;
-	clear: both;
-}
-
-body div#footer ul {
-	margin-left: 0;
-	padding-left: 5px;
-    padding-right: 0;
-	margin-bottom: 0;
-	margin-top: 0;
-
-}
-
-body div#footer ul li {
-	margin-left: 0;
-	padding-left: 0;
-}
-
-body div#footer p {
-	margin-top: .3em;
-	padding: 0;
-}
-
-body div#footer ul li {
-	list-style-type: none;
-	text-align: left;
+body div#footer
+{
+    font-size        : 0.9em;
+    background-color : #F6F6F6;
+    border-top       : 1px solid #D8D8D8;
+    padding-left     : 2%;
+    padding-right    : 2%;
+    padding-bottom   : 6px;
+    padding-top      : 6px;
+    clear            : both;
+    display          : block;
+}
+
+body div#footer h2
+{
+    font-size   : 0.9em;
+    color       : black;
+    line-height : normal;
+    border      : none;
+    padding     : 0;
+    clear       : both;
+}
+
+body div#footer ul
+{
+    margin-left   : 0;
+    padding-left  : 5px;
+    padding-right : 0;
+    margin-bottom : 0;
+    margin-top    : 0;
+
+}
+
+body div#footer ul li
+{
+    margin-left  : 0;
+    padding-left : 0;
+}
+
+body div#footer p
+{
+    margin-top : .3em;
+    padding    : 0;
+}
+
+body div#footer ul li
+{
+    list-style-type : none;
+    text-align      : left;
 }
 
 /*
@@ -159,359 +178,412 @@
  */
 
 /*body required as early browsers don't understand p by itself */
-body p {
-	margin-top: 0;
-	margin-bottom: 0.6em;
-	padding: 0 2% 0 2%;
-	font-size: 100%;
-}
-
-strong {
-	font-weight: bold;
-}
-em {
-	font-style: normal;
-	font-weight: bold;
-}
+body p
+{
+    margin-top    : 0;
+    margin-bottom : 0.6em;
+    padding       : 0 2% 0 2%;
+    font-size     : 100%;
+}
+
+strong
+{
+    font-weight : bold;
+}
+
+em
+{
+    font-style  : normal;
+    font-weight : bold;
+}
+
 /*
- * LINK STATES
- *
- */
-a:link {
-	color:#003399;
-}
-
-a:visited {
-	color:#006600;
-}
-a:hover {
-	color:#FF9900;
-}
-
-a:active {
-	color:#990000;
+* LINK STATES
+*
+*/
+a:link
+{
+    color : #003399;
+}
+
+a:visited
+{
+    color : #006600;
+}
+
+a:hover
+{
+    color : #FF9900;
+}
+
+a:active
+{
+    color : #990000;
 }
 
 /*
  * HEADERS
  * 
  */
-body h1 {
-	font-size: 1.0em;
-	padding-left: 2%;
-	padding-right: 2%;
-	margin-top: 0;
-	margin-bottom: 0.4em;
-	line-height: normal;
-	clear: both;
-}
-
-body h2 {
-	font-size: 0.9em;
-	padding-left: 2%;
-	padding-right: 2%;
-	color: black;
-	background-color: #F6F6F6;
-	border-top: 1px solid #D8D8D8;
-	border-bottom: 2px solid #D8D8D8;
-	margin-top: 0;
-	margin-bottom: 0.4em;
-	line-height: normal;
-	clear: both;
-}
-
-body h3 {
-	font-size: 0.8em;
-	border: 2px solid #D8D8D8;
-	width: 95%;
-	margin: 0em auto;
-	padding: 0.3em 0.3em;
-	background-color: #F6F6F6;
-	margin-bottom: 0.4em;
-	color: black;
-}
-
-body h4 {
-	font-size: 0.7em;
-	padding-left: 2%;
-	padding-right: 2%;
-	color: #CC0066;
-	margin-top: 0;
-	margin-bottom: 0.4em;
-	font-weight: bold;
-}
-
-body h5 {
-	font-size: 0.6em;
-	background-color: #F6F6F6;
-	border-bottom: 1px solid #D8D8D8;
-	border-top: 1px solid #D8D8D8;
-	padding-left: 2%;
-	padding-right: 2%;
-	padding-top: .3em;
-	padding-bottom: .3em;
-	margin-top: 0;
-	margin-bottom: 0.6em;
-}
-
-body h6 {
-	font-size: 0.5em;
-	background-color: #F6F6F6;
-	border-bottom: 1px solid #D8D8D8;
-	border-top: 1px solid #D8D8D8;
-	padding-left: 2%;
-	padding-right: 2%;
-	padding-top: .3em;
-	padding-bottom: .3em;
-	margin-top: 0;
-	margin-bottom: 0.6em;
-}
-/*
- * IMAGE WITH OPTIONAL CAPTION
- *
- */
-body img.captioned {
-	margin: 0 0 0 2%;
-}
-
-body p.caption-image {
-	font-size: small;
-	margin-top: 0;
-	margin-bottom: 0.6em;
-	padding-left: 2%;
-}
-/*
- * BLOCKQUOTE
- *
- */
-blockquote {
-	margin: 0 4% 0.4em 4%;
-	padding: .6em 0 .3em 0;
-	border-top: 1px solid #D8D8D8;
-	border-bottom: 1px solid #D8D8D8;
-}
-blockquote p {
-	margin: .0;
-	padding: 0 0 0.6em 0;
-	border-bottom: 1px solid #D8D8D8;
-}
-/*
- * LISTS
- *
- */
+body h1
+{
+    font-size     : 1em;
+    padding-left  : 2%;
+    padding-right : 2%;
+    margin-top    : 0;
+    margin-bottom : 0.4em;
+    line-height   : normal;
+    clear         : both;
+}
+
+body h2
+{
+    font-size        : 0.9em;
+    padding-left     : 2%;
+    padding-right    : 2%;
+    color            : black;
+    background-color : #F6F6F6;
+    border-top       : 1px solid #D8D8D8;
+    border-bottom    : 2px solid #D8D8D8;
+    margin-top       : 0;
+    margin-bottom    : 0.4em;
+    line-height      : normal;
+    clear            : both;
+}
+
+body h3
+{
+    font-size        : 0.8em;
+    border           : 2px solid #D8D8D8;
+    width            : 95%;
+    margin           : 0em auto;
+    padding          : 0.3em 0.3em;
+    background-color : #F6F6F6;
+    margin-bottom    : 0.4em;
+    color            : black;
+}
+
+body h4
+{
+    font-size     : 0.7em;
+    padding-left  : 2%;
+    padding-right : 2%;
+    color         : #CC0066;
+    margin-top    : 0;
+    margin-bottom : 0.4em;
+    font-weight   : bold;
+}
+
+body h5
+{
+    font-size        : 0.6em;
+    background-color : #F6F6F6;
+    border-bottom    : 1px solid #D8D8D8;
+    border-top       : 1px solid #D8D8D8;
+    padding-left     : 2%;
+    padding-right    : 2%;
+    padding-top      : .3em;
+    padding-bottom   : .3em;
+    margin-top       : 0;
+    margin-bottom    : 0.6em;
+}
+
+body h6
+{
+    font-size        : 0.5em;
+    background-color : #F6F6F6;
+    border-bottom    : 1px solid #D8D8D8;
+    border-top       : 1px solid #D8D8D8;
+    padding-left     : 2%;
+    padding-right    : 2%;
+    padding-top      : .3em;
+    padding-bottom   : .3em;
+    margin-top       : 0;
+    margin-bottom    : 0.6em;
+}
+
+/*
+* IMAGE WITH OPTIONAL CAPTION
+*
+*/
+body img.captioned
+{
+    margin : 0 0 0 2%;
+}
+
+body p.caption-image
+{
+    font-size     : small;
+    margin-top    : 0;
+    margin-bottom : 0.6em;
+    padding-left  : 2%;
+}
+
+/*
+* BLOCKQUOTE
+*
+*/
+blockquote
+{
+    margin        : 0 4% 0.4em 4%;
+    padding       : .6em 0 .3em 0;
+    border-top    : 1px solid #D8D8D8;
+    border-bottom : 1px solid #D8D8D8;
+}
+
+blockquote p
+{
+    margin        : .0;
+    padding       : 0 0 0.6em 0;
+    border-bottom : 1px solid #D8D8D8;
+}
+
+/*
+* LISTS
+*
+*/
 /* compensates for smaller Opera Mini margins */
-ol, ul, dl {
-	margin-left: 2%;
-	padding-left: 5px;
-}
-
-ul li {
-	list-style-type: none;
-}
-
-dd {
-	margin-left: 2%;
-}
+ol, ul, dl
+{
+    margin-left  : 2%;
+    padding-left : 5px;
+}
+
+ul li
+{
+    list-style-type : none;
+}
+
+dd
+{
+    margin-left : 2%;
+}
+
 /*forces native margin*/
-body ul, body ol, body dl {
-	margin-top: 0;
-	margin-bottom: 0.6em;
-	font-size: 100%;
-}
-/*
- * BREADCRUMBS
- *
- */
-body ul.breadcrumbs {
-	padding-top: 0;
-	padding-bottom: .5em;
-	padding-left: 0;
-	padding-right: .5em;
-	font-size: small;
-	list-style-type: none;
-	margin-bottom: 0.6em;
-	margin-top: 0;
-	margin-left: 2%;
-}
-
-body ul.breadcrumbs li {
-	display: inline;
-	line-height: 1em;
-}
-/*
- * FORMS
- *
- */
-body fieldset {
-	margin: 0;
-	padding: 0;
-	border: none;
-}
-
-body form {
-	font-size: 1.15em;
-	margin: 0;
-	color: #333333;
-}
-
-body form label {
-	font-size: 1.15em;
-	width: 100%;
-	margin-bottom: .5em;
-	margin-top: .5em;
-}
-
-body form input {
-	width: 100%;
-	font-size: 1.15em;
-}
-
-body input {
-	font-size: 1.15em;
-	padding: 0.2em;
-	margin-bottom: .5em;
-	display: block;
-}
-
-body select {
-	font-size: 1.15em;
-	padding: 0.2em;
-	margin-bottom: .5em;
-	display: block;
-}
-
-body textarea {
-	font-size: 1.15em;
-	padding: 0.2em;
-	margin-bottom: .7em;
-	display: block;
-}
-
-body form input[type='radio'], body form input[type='checkbox'] {
-	font-size: 1.15em;
-	margin:0.1em 0em;
-	padding: 0;
-	display: inline;
-}
-
-body input[type='button'] {
-	font-size: 1.15em;
-	padding: 1em 1.3em;
-	color: #D8D8D8;
-	margin: 1em 0em;
+body ul, body ol, body dl
+{
+    margin-top    : 0;
+    margin-bottom : 0.6em;
+    font-size     : 100%;
+}
+
+/*
+* BREADCRUMBS
+*
+*/
+body ul.breadcrumbs
+{
+    padding-top     : 0;
+    padding-bottom  : .5em;
+    padding-left    : 0;
+    padding-right   : .5em;
+    font-size       : small;
+    list-style-type : none;
+    margin-bottom   : 0.6em;
+    margin-top      : 0;
+    margin-left     : 2%;
+}
+
+body ul.breadcrumbs li
+{
+    display     : inline;
+    line-height : 1em;
+}
+
+/*
+* FORMS
+*
+*/
+body fieldset
+{
+    margin  : 0;
+    padding : 0;
+    border  : none;
+}
+
+body form
+{
+    font-size : 1em;
+    margin    : 0;
+    color     : #333333;
+}
+
+body form label
+{
+    font-size     : 1.15em;
+    width         : 100%;
+    margin-bottom : .5em;
+    margin-top    : .5em;
+}
+
+body form input
+{
+    width     : 100%;
+    font-size : 1.15em;
+}
+
+body input
+{
+    font-size     : 1.15em;
+    padding       : 0.2em;
+    margin-bottom : .5em;
+    display       : block;
+}
+
+body select
+{
+    font-size     : 1.15em;
+    padding       : 0.2em;
+    margin-bottom : .5em;
+    display       : block;
+}
+
+body textarea
+{
+    font-size     : 1.15em;
+    padding       : 0.2em;
+    margin-bottom : .7em;
+    display       : block;
+}
+
+body form input[type='radio'], body form input[type='checkbox']
+{
+    font-size : 1.15em;
+    margin    : 0.1em 0em;
+    padding   : 0;
+    display   : inline;
+}
+
+body input[type='button']
+{
+    font-size : 1.15em;
+    padding   : 1em 1.3em;
+    color     : #D8D8D8;
+    margin    : 1em 0em;
 }
 
 /*
  * TABLES
  * 
  */
-body table {
-	border: 1px solid #D8D8D8;
-	margin: 0;
-	width: 100%;
-	color: #333333;
-	font-size: 80%;
+body table
+{
+    border    : 1px solid #D8D8D8;
+    margin    : 0;
+    width     : 100%;
+    color     : #333333;
+    font-size : 80%;
 }
 
-body td {
-	padding-left: .3em;
-	padding-right: .3em;
-	padding-top: .2em;
-	padding-bottom: .2em;
-	line-height: 1.5em;
-	border: 1px solid #D8D8D8;
+body td
+{
+    padding-left   : .3em;
+    padding-right  : .3em;
+    padding-top    : .2em;
+    padding-bottom : .2em;
+    line-height    : 1.5em;
+    border         : 1px solid #D8D8D8;
 }
 
 /*compensates for lack of consistent header support*/
-body td.table-header {
-	color: #0033CC;
-	font-weight: bold;
-	background-color: #F6F6F6;
-}
-
-body tr {
-	height: 1.5em;
-}
-
-body table td.odd {
-	background-color: #F6F6F6;
+body td.table-header
+{
+    color            : #0033CC;
+    font-weight      : bold;
+    background-color : #F6F6F6;
+}
+
+body tr
+{
+    height : 1.5em;
+}
+
+body table td.odd
+{
+    background-color : #F6F6F6;
 }
 
 /*caption-side unlikely to be supported*/
-body caption {
-	caption-side: bottom;
-	padding-top: 0.3em;
-	padding-bottom: 0.3em;
-	margin-left: .5em;
-	font-size: small;
-	text-align: left;
-	font-style: normal;
+body caption
+{
+    caption-side   : bottom;
+    padding-top    : 0.3em;
+    padding-bottom : 0.3em;
+    margin-left    : .5em;
+    font-size      : small;
+    text-align     : left;
+    font-style     : normal;
 }
 
 /*
  * CONTAINER BOXES
  * 
  */
-body div.box p.box-text {
-	border: 1px solid #D8D8D8;
-	width: 96%;
-	margin: 0 auto 0.6em auto;
-	padding: 0.4em 0.4em;
-	background-color: #F6F6F6;
+body div.box p.box-text
+{
+    border           : 1px solid #D8D8D8;
+    width            : 96%;
+    margin           : 0 auto 0.6em auto;
+    padding          : 0.4em 0.4em;
+    background-color : #F6F6F6;
 }
 
-body div.header-box p {
-	font-size: 0.6em;
-	border: 1px solid #C8DBEA;
-	width: 96%;
-	margin: 0 auto 0.6em auto;
-	padding: 0.4em 0.4em;
-	background-color: #E8E8E8;
+body div.header-box p
+{
+    font-size        : 0.6em;
+    border           : 1px solid #C8DBEA;
+    width            : 96%;
+    margin           : 0 auto 0.6em auto;
+    padding          : 0.4em 0.4em;
+    background-color : #E8E8E8;
 }
 
 /* 2px border is required to ensure header is flush with the box */
-body div.header-box h3 {
-	font-size: 0.9em;
-	border: 2px solid #CBDDEB;
-	width: 96%;
-	margin: 0em auto;
-	padding: 0.3em 0.3em;
-	background-color: #CBDDEB;
-	color: #39547D;
+body div.header-box h3
+{
+    font-size        : 0.9em;
+    border           : 2px solid #CBDDEB;
+    width            : 96%;
+    margin           : 0em auto;
+    padding          : 0.3em 0.3em;
+    background-color : #CBDDEB;
+    color            : #39547D;
 }
 
 /*
  * BACK TO TOP/HOME
  *
  */
-p.top {
-	font-size: small;
-	background-color: #F6F6F6;
-	border-bottom: 1px solid #D8D8D8;
-	border-top: 1px solid #D8D8D8;
-	padding-top: .3em;
-	padding-bottom: .3em;
-	margin-top: 0;
-	margin-bottom: 0.6em;
-	clear: both;
-}
-
-p.home {
-	font-size: small;
-	background-color: #F6F6F6;
-	border-bottom: 1px solid #D8D8D8;
-	border-top: 1px solid #D8D8D8;
-	padding-top: .3em;
-	padding-bottom: .3em;
-	margin-top: 0;
-	margin-bottom: 0.6em;
-	clear: both;
-}
-
-p.top a, p.home a {
-	color: #333333;
-	text-decoration: none;
-	width: 100%;
-	display: block;
-}
-
+p.top
+{
+    font-size        : small;
+    background-color : #F6F6F6;
+    border-bottom    : 1px solid #D8D8D8;
+    border-top       : 1px solid #D8D8D8;
+    padding-top      : .3em;
+    padding-bottom   : .3em;
+    margin-top       : 0;
+    margin-bottom    : 0.6em;
+    clear            : both;
+}
+
+p.home
+{
+    font-size        : small;
+    background-color : #F6F6F6;
+    border-bottom    : 1px solid #D8D8D8;
+    border-top       : 1px solid #D8D8D8;
+    padding-top      : .3em;
+    padding-bottom   : .3em;
+    margin-top       : 0;
+    margin-bottom    : 0.6em;
+    clear            : both;
+}
+
+p.top a, p.home a
+{
+    color           : #333333;
+    text-decoration : none;
+    width           : 100%;
+    display         : block;
+}