Author: simoneg
Date: Tue Oct 20 00:26:47 2009
New Revision: 826914

URL: http://svn.apache.org/viewvc?rev=826914&view=rev
Log:
LABS-486 contributed fragment messaging

Added:
    labs/magma/trunk/fragment-messaging-web/pom.xml
    labs/magma/trunk/fragment-messaging-web/src/
    labs/magma/trunk/fragment-messaging-web/src/main/
    labs/magma/trunk/fragment-messaging-web/src/main/java/
    labs/magma/trunk/fragment-messaging-web/src/main/java/org/
    labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/
    labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/
    labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/
    
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/
    
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/AddUndreadMessages.aj
    
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/InstallMessagingWebHandlerIntoRoot.aj
    
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/MessagingWebHandler.java
    labs/magma/trunk/fragment-messaging-web/src/main/resources/
    labs/magma/trunk/fragment-messaging-web/src/main/resources/org/
    labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/
    labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/inboxHeader.vm
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/newPMHeader.vm
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/outboxHeader.vm
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/replyHeader.vm
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/showHeader.vm
    
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/unreadBox.vm

Added: labs/magma/trunk/fragment-messaging-web/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/pom.xml?rev=826914&view=auto
==============================================================================
--- labs/magma/trunk/fragment-messaging-web/pom.xml (added)
+++ labs/magma/trunk/fragment-messaging-web/pom.xml Tue Oct 20 00:26:47 2009
@@ -0,0 +1,44 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>fragment-messaging-web</artifactId>
+  <packaging>magma</packaging>
+  <version>0.0.2-SNAPSHOT</version>
+<dependencies>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>fragment-messaging-domain</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-website</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>website-beansview</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>fragment-user-web</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+           <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-database</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>website-velocity</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
+</project>

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/AddUndreadMessages.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/AddUndreadMessages.aj?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/AddUndreadMessages.aj
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/AddUndreadMessages.aj
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,19 @@
+package org.apache.magma.web.messaging;
+
+import org.apache.magma.website.producers.TemplatingProducer;
+import org.apache.magma.website.CompoundType;
+import org.apache.magma.website.RootWebHandler;
+import org.apache.magma.web.user.LoginWebHandler;
+
+public aspect AddUndreadMessages {
+       
+       after(String s) returning (TemplatingProducer p) : 
+               call(TemplatingProducer.new(String)) &&
+               within(LoginWebHandler) && args(s) 
+               {
+               if (s != null && s.equals("loginMenu")) {
+                       
p.compoundWith(RootWebHandler.getInstance().handleMessaging().doUnreadMessageBox(),
 CompoundType.AFTER);
+               }
+       }
+
+}

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/InstallMessagingWebHandlerIntoRoot.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/InstallMessagingWebHandlerIntoRoot.aj?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/InstallMessagingWebHandlerIntoRoot.aj
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/InstallMessagingWebHandlerIntoRoot.aj
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,9 @@
+package org.apache.magma.web.messaging;
+
+import org.apache.magma.website.RootWebHandler;
+
+public aspect InstallMessagingWebHandlerIntoRoot {
+       public MessagingWebHandler RootWebHandler.handleMessaging(){
+               return new MessagingWebHandler();
+       }
+}

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/MessagingWebHandler.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/MessagingWebHandler.java?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/MessagingWebHandler.java
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/java/org/apache/magma/web/messaging/MessagingWebHandler.java
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,105 @@
+package org.apache.magma.web.messaging;
+
+import java.util.List;
+
+import org.apache.magma.database.Database;
+import org.apache.magma.domain.messaging.PrivateMessage;
+import org.apache.magma.domain.user.User;
+import org.apache.magma.view.tree.SimpleViewFilter;
+import org.apache.magma.view.tree.ViewCustomizer;
+import org.apache.magma.website.CompoundType;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
+import org.apache.magma.website.beansview.ShowBean;
+import org.apache.magma.website.beansview.ShowList;
+import org.apache.magma.website.beansview.SmartForm;
+import org.apache.magma.website.beansview.SmartList;
+import org.apache.magma.website.producers.TemplatingProducer;
+
+public class MessagingWebHandler extends WebHandler{
+       private User sessionUser;
+       protected ViewCustomizer newMessage = new SimpleViewFilter("-sender", 
"-date", "-read");
+       protected ViewCustomizer inbox = new SimpleViewFilter ("-receiver");
+       protected ViewCustomizer outbox = new SimpleViewFilter ("-sender");
+       protected ViewCustomizer reply = new SimpleViewFilter 
("-receiver","-sender", "-date", "-read");
+       
+       public SmartForm handleNewMessage(){
+               if (this.sessionUser == null) {
+                       return root().handleLogin().handleRequest();
+               }else{                                          
+                       PrivateMessage pm = new PrivateMessage();
+                       pm.setSender(sessionUser);
+                       HtmlProducer header = new 
TemplatingProducer("newPMHeader");
+                       return new SmartForm(pm, "hiddenNewMessage", 
header).setFilter(newMessage);
+               }               
+       }
+       public HtmlProducer hiddenNewMessage(PrivateMessage pm){
+               sessionUser.getOutbox().add(pm);
+               Database db = new Database();
+               db.save(sessionUser);
+               return doShowMessage(pm);
+       }
+       public HtmlProducer doShowMessage(PrivateMessage pm){
+               ShowBean showBean = new ShowBean(pm);
+               HtmlProducer header = new TemplatingProducer("showHeader")
+                       .addParameter("pm", pm)
+                       .addParameter("sessionUser", sessionUser);
+               Database db = new Database();
+               if(sessionUser == pm.getReceiver()){
+                       pm.setAlreadyRead(true);
+                       db.save(pm);
+               }
+               showBean.compoundWith(header, CompoundType.HEAD);
+               return showBean;
+       }
+       
+       public SmartForm handleReply(PrivateMessage message){
+               PrivateMessage pm = new PrivateMessage();
+               pm.setSender(sessionUser);
+               pm.setReceiver(message.getSender());
+               pm.setTitle("RE : " + message.getTitle());
+               HtmlProducer header = new 
TemplatingProducer("replyHeader").addParameter("user", message.getSender());    
              
+               return new SmartForm(pm, "hiddenReply", 
header).setFilter(reply);
+       }
+       public HtmlProducer hiddenReply(PrivateMessage pm){
+               sessionUser.getOutbox().add(pm);
+               Database db = new Database();
+               db.save(sessionUser);
+               return doShowMessage(pm);
+       }
+       
+       public SmartList handleOutbox(){
+               HtmlProducer header = new 
TemplatingProducer("outboxHeader").addParameter("user", sessionUser);
+               SmartList sl = new SmartList(PrivateMessage.class,  "where 
x.sender=?1", sessionUser);
+               sl.setLink("doShowMessage");
+               sl.addSortable("date");
+               sl.setHeader(header);
+               sl.setFilter(outbox);
+               return sl;
+       }
+       public SmartList handleInbox(){
+               HtmlProducer header = new 
TemplatingProducer("inboxHeader").addParameter("user", sessionUser);
+               SmartList sl = new SmartList(PrivateMessage.class,  "where 
x.receiver=?1", sessionUser);
+               sl.setLink("doShowMessage");
+               sl.addSortable("date");
+               sl.setHeader(header);
+               sl.setFilter(inbox);
+               return sl;
+       }
+       public SmartList handleNotRead(){
+               HtmlProducer header = new 
TemplatingProducer("inboxHeader").addParameter("user", sessionUser);
+               SmartList sl = new SmartList(PrivateMessage.class,  "where 
x.receiver=?1 and x.alreadyRead=?2", sessionUser, false);
+               sl.setLink("doShowMessage");
+               sl.addSortable("date");
+               sl.setHeader(header);
+               sl.setFilter(inbox);
+               return sl;
+       }
+       public HtmlProducer doUnreadMessageBox(){
+               List<PrivateMessage> list = new 
Database().query(PrivateMessage.class, "where x.receiver=?1 and 
x.alreadyRead=?2", sessionUser, false);
+               Number unread = list.size();
+               return new 
TemplatingProducer("unreadBox").addParameter("unread", unread);
+       }
+       
+       
+}

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/inboxHeader.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/inboxHeader.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/inboxHeader.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/inboxHeader.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,2 @@
+<h1>$i18n.tr("Inbox")</h1>
+<div class="magmaMessages">$i18n.tr("you have ")$user.getInbox().size() 
$i18n.tr(" message(s) in your inbox.")</div>
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/newPMHeader.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/newPMHeader.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/newPMHeader.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/newPMHeader.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1 @@
+<h1>$i18n.tr("New Message")</h1>

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/outboxHeader.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/outboxHeader.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/outboxHeader.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/outboxHeader.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,2 @@
+<h1>$i18n.tr("Outbox")</h1>
+<div class="magmaMessages">$i18n.tr("you have {0} message(s) in your 
outbox.",$user.getInbox().size())</div>
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/replyHeader.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/replyHeader.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/replyHeader.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/replyHeader.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1 @@
+<h1>$i18n.tr("Reply to {0}", $user.toUser())</h1>
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/showHeader.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/showHeader.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/showHeader.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/showHeader.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,6 @@
+#if($pm.getSender() != $sessionUser)
+<h1>$i18n.tr("{0} has wrote :",  $pm.getSender().toUser())</h1>
+<div class="magmaButtons"><a href="reply!$pm.id">$i18n.tr("Reply to {0}", 
$pm.sender.toUser())</a></div>
+#else
+<h1>$i18n.tr("Message sent to {0}",  $pm.getReceiver().toUser())</h1>
+#end
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/unreadBox.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/unreadBox.vm?rev=826914&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/unreadBox.vm
 (added)
+++ 
labs/magma/trunk/fragment-messaging-web/src/main/resources/org/apache/magma/web/messaging/unreadBox.vm
 Tue Oct 20 00:26:47 2009
@@ -0,0 +1,11 @@
+<h2>$i18n.tr("Private Messaging")</h2>
+
+<ul class="magmaMessagesMenu">
+<li><a href="newMessage">$i18n.tr("New Message")</a></li>
+#if($unread > 0)
+<li><a href="inbox">$i18n.tr("Inbox({0})", $unread)</a></li>
+#else
+<li><a href="inbox">$i18n.tr("Inbox")</a></li>
+#end
+<li><a href="outbox">$i18n.tr("Outbox")</a></li>
+</ul>
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to