=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2012-01-13 18:59:01 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2012-02-14 20:27:19 +0000 @@ -55,6 +55,8 @@ private User lastSender; private transient boolean read; + + private transient boolean followUp; private transient String lastSenderSurname; @@ -91,6 +93,21 @@ this.messages.add( message ); } + public boolean toggleFollowUp( User user ) + { + for ( UserMessage userMessage : userMessages ) + { + if ( userMessage.getUser() != null && userMessage.getUser().equals( user ) ) + { + userMessage.setFollowUp( !userMessage.isFollowUp() ); + + return userMessage.isFollowUp(); + } + } + + return false; + } + public boolean markRead( User user ) { for ( UserMessage userMessage : userMessages ) @@ -182,10 +199,6 @@ this.subject = subject; } - /* @XmlElementWrapper( name = "userMessages" ) - @XmlElement( name = "userMessage" ) - @JsonProperty - TODO waiting for idObject version of userMessage */ public Set getUserMessages() { return userMessages; @@ -223,8 +236,6 @@ this.lastSender = lastSender; } - @XmlElement - @JsonProperty public boolean isRead() { return read; @@ -235,6 +246,16 @@ this.read = read; } + public boolean isFollowUp() + { + return followUp; + } + + public void setFollowUp( boolean followUp ) + { + this.followUp = followUp; + } + public String getLastSenderName() { return lastSenderFirstname + " " + lastSenderSurname; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2012-02-14 20:27:19 +0000 @@ -55,6 +55,8 @@ private User user; private boolean read; + + private boolean followUp; public UserMessage() { @@ -123,6 +125,18 @@ this.read = read; } + @XmlElement + @JsonProperty + public boolean isFollowUp() + { + return followUp; + } + + public void setFollowUp( boolean followUp ) + { + this.followUp = followUp; + } + @Override public int hashCode() { === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java 2012-02-14 19:19:27 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java 2012-02-14 20:27:19 +0000 @@ -66,7 +66,10 @@ "select mc.messageconversationid, mc.uid, mc.subject, mc.lastupdated, ui.surname, ui.firstname, ( " + "select isread from usermessage " + "where usermessage.usermessageid=mu.usermessageid " + - "and mu.messageconversationid=mc.messageconversationid ) as isread " + + "and mu.messageconversationid=mc.messageconversationid ) as isread, ( " + + "select isfollowup from usermessage " + + "where usermessage.usermessageid=mu.usermessageid " + + "and mu.messageconversationid=mc.messageconversationid ) as isfollowup " + "from messageconversation mc " + "left join messageconversation_usermessages mu on mc.messageconversationid=mu.messageconversationid " + "left join usermessage um on mu.usermessageid=um.usermessageid " + @@ -97,6 +100,7 @@ conversation.setLastSenderSurname( resultSet.getString( 5 ) ); conversation.setLastSenderFirstname( resultSet.getString( 6 ) ); conversation.setRead( resultSet.getBoolean( 7 ) ); + conversation.setFollowUp( resultSet.getBoolean( 8 ) ); return conversation; } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-02-12 19:57:05 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-02-14 20:27:19 +0000 @@ -324,6 +324,7 @@ executeSql( "ALTER TABLE message DROP COLUMN messagekey" ); executeSql( "ALTER TABLE message DROP COLUMN sentdate" ); executeSql( "ALTER TABLE usermessage DROP COLUMN messagedate" ); + executeSql( "UPDATE usermessage SET isfollowup=false WHERE isfollowup is null" ); executeSql( "DROP TABLE message_usermessages" ); // create code unique constraints === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/message/hibernate/UserMessage.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/message/hibernate/UserMessage.hbm.xml 2011-08-04 07:52:24 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/message/hibernate/UserMessage.hbm.xml 2012-02-14 20:27:19 +0000 @@ -19,5 +19,7 @@ + + === added file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/message/action/ToggleFollowUpAction.java' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/message/action/ToggleFollowUpAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/message/action/ToggleFollowUpAction.java 2012-02-14 20:27:19 +0000 @@ -0,0 +1,68 @@ +package org.hisp.dhis.dashboard.message.action; + +import org.hisp.dhis.message.MessageConversation; +import org.hisp.dhis.message.MessageService; +import org.hisp.dhis.user.CurrentUserService; + +import com.opensymphony.xwork2.Action; + +public class ToggleFollowUpAction +implements Action +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private MessageService messageService; + + public void setMessageService( MessageService messageService ) + { + this.messageService = messageService; + } + + private CurrentUserService currentUserService; + + public void setCurrentUserService( CurrentUserService currentUserService ) + { + this.currentUserService = currentUserService; + } + + // ------------------------------------------------------------------------- + // Input + // ------------------------------------------------------------------------- + + private Integer id; + + public void setId( Integer id ) + { + this.id = id; + } + + // ------------------------------------------------------------------------- + // Output + // ------------------------------------------------------------------------- + + private String message; + + public String getMessage() + { + return message; + } + + // ------------------------------------------------------------------------- + // Action implementation + // ------------------------------------------------------------------------- + + @Override + public String execute() + throws Exception + { + MessageConversation conversation = messageService.getMessageConversation( id ); + + message = String.valueOf( conversation.toggleFollowUp( currentUserService.getCurrentUser() ) ); + + messageService.updateMessageConversation( conversation ); + + return SUCCESS; + } +} === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml 2012-01-05 20:39:23 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml 2012-02-14 20:27:19 +0000 @@ -96,5 +96,11 @@ + + + + + === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/struts.xml 2011-08-04 11:10:11 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/struts.xml 2012-02-14 20:27:19 +0000 @@ -113,6 +113,11 @@ message.action + + + /dhis-web-commons/ajax/jsonResponseSuccess.vm + plainTextError + === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/message.js' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/message.js 2011-10-26 06:17:34 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/message.js 2012-02-14 20:27:19 +0000 @@ -70,9 +70,25 @@ } $( "#replyButton" ).attr( "disabled", "disabled" ); + setHeaderWaitMessage( i18n_sending_message ); - $.postUTF8( "sendReply.action", { id:id, text:text }, function() { + $.postUTF8( "sendReply.action", { id:id, text:text }, function() + { window.location.href = "readMessage.action?id=" + id; } ); } + +function toggleFollowUp( id, followUp ) +{ + var imageId = "followUp" + id; + + var url = "toggleFollowUp.action?id=" + id; + + $.getJSON( url, function( json ) + { + var imageSrc = json.message == "true" ? "../images/marked.png" : "../images/unmarked.png"; + + $( "#" + imageId ).attr( "src", imageSrc ); + } ); +} === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm 2012-02-14 19:19:27 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm 2012-02-14 20:27:19 +0000 @@ -12,13 +12,16 @@ + - + #foreach( $conversation in $conversations ) +
$i18n.getString( "sender" ) $i18n.getString( "subject" ) $i18n.getString( "date" )$i18n.getString( "operations" )
+ $encoder.htmlEncode( $conversation.lastSenderName ) $encoder.htmlEncode( $conversation.subject ) $format.formatDate( $conversation.lastUpdated )