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);