You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2013/07/12 05:15:32 UTC

svn commit: r1502413 - in /openmeetings/trunk/singlewebapp: WebContent/openmeetings/css/ src/org/apache/openmeetings/data/user/dao/ src/org/apache/openmeetings/web/user/profile/

Author: solomax
Date: Fri Jul 12 03:15:30 2013
New Revision: 1502413

URL: http://svn.apache.org/r1502413
Log:
[OPENMEETINGS-615] Read/Unread messages is implemented

Modified:
    openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java

Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1502413&r1=1502412&r2=1502413&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Fri Jul 12 03:15:30 2013
@@ -880,3 +880,6 @@ select.messages.selector {
 #messagesTable tr.selected {
 	background-color: #d7ebf9;
 }
+#messagesTable tr.unread {
+	font-weight: bold;
+}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java?rev=1502413&r1=1502412&r2=1502413&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/user/dao/PrivateMessagesDao.java Fri Jul 12 03:15:30 2013
@@ -492,7 +492,7 @@ public class PrivateMessagesDao implemen
 		return -1;
 	}
 	
-	public int updatePrivateMessagesReadStatus(List<Long> privateMessageIds, Boolean isRead) {
+	public int updatePrivateMessagesReadStatus(Collection<Long> privateMessageIds, Boolean isRead) {
 		try {
 			Query query = em.createNamedQuery("updatePrivateMessagesReadStatus"); 
 			query.setParameter("isRead", isRead);

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1502413&r1=1502412&r2=1502413&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html Fri Jul 12 03:15:30 2013
@@ -59,9 +59,9 @@
 				</table>
 				<div>
 					<select><option>[stab]select</option></select>
-					<input wicket:id="delete" type="button" wicket:ommessage="value:1245"/>
-					<input type="button" wicket:ommessage="value:1248"/>
-					<input type="button" wicket:ommessage="value:1247"/>
+					<input wicket:id="deleteBtn" type="button" wicket:ommessage="value:1245"/>
+					<input wicket:id="readBtn" type="button" wicket:ommessage="value:1248"/>
+					<input wicket:id="unreadBtn" type="button" wicket:ommessage="value:1247"/>
 					<select><option>[stab]move</option></select>
 				</div>
 				<div wicket:id="selectedMessage">

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1502413&r1=1502412&r2=1502413&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java Fri Jul 12 03:15:30 2013
@@ -79,7 +79,9 @@ public class MessagesContactsPanel exten
 	private final MessageDialog newMessage;
 	private final DataViewContainer<PrivateMessage> dataContainer;
 	private final Set<Long> selectedMessages = new HashSet<Long>();
-	private final Button deleteBtn = new Button("delete");
+	private final Button deleteBtn = new Button("deleteBtn");
+	private final Button readBtn = new Button("readBtn");
+	private final Button unreadBtn = new Button("unreadBtn");
 	
 	private void setDefaultFolderClass() {
 		inbox.add(AttributeAppender.replace("class", "email inbox clickable"));
@@ -105,7 +107,9 @@ public class MessagesContactsPanel exten
 		selectedMessage.addOrReplace(new Label("subj", msg == null ? "" : msg.getSubject()));
 		selectedMessage.addOrReplace(new Label("body", msg == null ? "" : msg.getMessage()));
 		if (target != null) {
-			target.add(selectedMessage, deleteBtn.setEnabled(!selectedMessages.isEmpty()));
+			target.add(selectedMessage, deleteBtn.setEnabled(!selectedMessages.isEmpty())
+				, readBtn.setEnabled(TRASH_FOLDER_ID != selectedModel.getObject() && !selectedMessages.isEmpty())
+				, unreadBtn.setEnabled(TRASH_FOLDER_ID != selectedModel.getObject() && !selectedMessages.isEmpty()));
 		}
 	}
 	
@@ -115,8 +119,11 @@ public class MessagesContactsPanel exten
 		selectFolder(folder);
 		emptySelection(target);
 		deleteBtn.add(AttributeModifier.replace("value", WebSession.getString(TRASH_FOLDER_ID == id ? 1256 : 1245)));
+		readBtn.setEnabled(false);
+		unreadBtn.setEnabled(false);
 		container.add(new FixedHeaderTableBehavior("#messagesTable", new Options("height", 100)));
-		unread.setDefaultModelObject(getBean(PrivateMessagesDao.class).count(getUserId(), null, false, false));
+		//FIXME it is not working! (at least for the SENT folder)
+		unread.setDefaultModelObject(getBean(PrivateMessagesDao.class).count(getUserId(), id > 0 ? id : null, false, TRASH_FOLDER_ID == id));
 		if (target != null) {
 			target.add(folders, container, unread);
 			target.add(dataContainer.container, dataContainer.navigator);
@@ -307,7 +314,14 @@ public class MessagesContactsPanel exten
 						target.add(container);
 					}
 				});
-				item.add(AttributeModifier.replace("class", selectedMessages.contains(id) ? "selected" : ""));
+				StringBuilder cssClass = new StringBuilder(Boolean.TRUE.equals(m.getIsRead()) ? "unread" : "");
+				if (selectedMessages.contains(id)) {
+					if (cssClass.length() > 0) {
+						cssClass.append(" ");
+					}
+					cssClass.append("selected");
+				}
+				item.add(AttributeModifier.replace("class", cssClass.toString()));
 			}
 		};
 		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dv) {
@@ -347,6 +361,28 @@ public class MessagesContactsPanel exten
 					target.add(container);
 				}
 			}));
+		add(readBtn.setOutputMarkupId(true).setEnabled(!selectedMessages.isEmpty())
+			.add(new AjaxEventBehavior("click") {
+				private static final long serialVersionUID = 1L;
+				
+				@Override
+				protected void onEvent(AjaxRequestTarget target) {
+					getBean(PrivateMessagesDao.class).updatePrivateMessagesReadStatus(selectedMessages, false);
+					emptySelection(target);
+					target.add(container);
+				}
+			}));
+		add(unreadBtn.setOutputMarkupId(true).setEnabled(!selectedMessages.isEmpty())
+			.add(new AjaxEventBehavior("click") {
+				private static final long serialVersionUID = 1L;
+				
+				@Override
+				protected void onEvent(AjaxRequestTarget target) {
+					getBean(PrivateMessagesDao.class).updatePrivateMessagesReadStatus(selectedMessages, true);
+					emptySelection(target);
+					target.add(container);
+				}
+			}));
 		add(container.add(dv).setOutputMarkupId(true));
 		//TODO add valid autoupdate add(new AjaxSelfUpdatingTimerBehavior(seconds(15)));
 		add(newMessage);