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


Reply via email to