Author: simoneg
Date: Mon Oct 19 23:57:59 2009
New Revision: 826899

URL: http://svn.apache.org/viewvc?rev=826899&view=rev
Log:
LABS-487 contributed fragment newsletter

Added:
    labs/magma/trunk/fragment-newsletter-web/pom.xml
    labs/magma/trunk/fragment-newsletter-web/src/
    labs/magma/trunk/fragment-newsletter-web/src/main/
    labs/magma/trunk/fragment-newsletter-web/src/main/java/
    labs/magma/trunk/fragment-newsletter-web/src/main/java/org/
    labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/
    labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/
    labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/InstallCrudNewsletterIntoRoot.aj
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
    
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/UserSettingsAddition.aj
    labs/magma/trunk/fragment-newsletter-web/src/main/resources/
    labs/magma/trunk/fragment-newsletter-web/src/main/resources/META-INF/
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/courtesyPage.vm
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletter.vm
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletterStatus.vm
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/progress.vm
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sending.vm
    
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sent.vm
    labs/magma/trunk/fragment-newsletter-web/src/test/
    labs/magma/trunk/fragment-newsletter-web/src/test/java/
    labs/magma/trunk/fragment-newsletter-web/src/test/resources/

Added: labs/magma/trunk/fragment-newsletter-web/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/pom.xml?rev=826899&view=auto
==============================================================================
--- labs/magma/trunk/fragment-newsletter-web/pom.xml (added)
+++ labs/magma/trunk/fragment-newsletter-web/pom.xml Mon Oct 19 23:57:59 2009
@@ -0,0 +1,54 @@
+<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-newsletter-web</artifactId>
+  <packaging>magma</packaging>
+  <version>0.0.2-SNAPSHOT</version>
+  <dependencies>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>fragment-newsletter-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>website-administration</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>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>website-jobs</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
+</project>

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,41 @@
+package org.apache.magma.web.newsletter;
+
+import org.apache.magma.database.Database;
+import org.apache.magma.domain.newsletter.Newsletter;
+import org.apache.magma.domain.newsletter.Newsletter.ProgressStatus;
+import org.apache.magma.jobs.JobStatus;
+import org.apache.magma.jobs.Scheduler;
+import org.apache.magma.website.CompoundType;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.admin.CompleteCrudHandler;
+import org.apache.magma.website.beansview.ShowBean;
+import org.apache.magma.website.producers.TemplatingProducer;
+
+public class CrudNewsletter extends CompleteCrudHandler<Newsletter>{
+       public CrudNewsletter(){
+               super(Newsletter.class);
+       }
+       @Override
+       public HtmlProducer doShow(Newsletter n){
+               HtmlProducer footer = new 
TemplatingProducer("newsletterStatus").addParameter("bean", n);
+               ShowBean showBean = new ShowBean(n);
+               showBean.compoundWith(footer, CompoundType.AFTER);
+               return showBean;
+       }
+       public HtmlProducer doSend(Newsletter n){
+               if(n.getProgress().equals(n.getProgress().EDITING)){
+                       SendNewsletter sender = new SendNewsletter();
+                       sender.setNewsletter(n);
+                       Scheduler sched = new Scheduler();
+                       JobStatus run = sched.run("Sending newsletter", sender);
+                       n.setProgress(ProgressStatus.SENDING);
+                       new Database().save(n);
+                       return new 
TemplatingProducer("progress").addParameter("job", run.getId());
+               } else if(n.getProgress().equals(n.getProgress().SENDING)){
+                       return new TemplatingProducer("sending");
+               } else if(n.getProgress().equals(n.getProgress().SENT)){
+                       return new TemplatingProducer("sent");
+               }
+               return new TemplatingProducer();
+       }
+}

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/InstallCrudNewsletterIntoRoot.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/InstallCrudNewsletterIntoRoot.aj?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/InstallCrudNewsletterIntoRoot.aj
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/InstallCrudNewsletterIntoRoot.aj
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,13 @@
+package org.apache.magma.web.newsletter;
+
+import org.apache.magma.domain.newsletter.Newsletter;
+import org.apache.magma.website.admin.Manages;
+import org.apache.magma.website.admin.AdminWebHandler;
+
+public aspect InstallCrudNewsletterIntoRoot {
+       @Manages(Newsletter.class)
+               public CrudNewsletter AdminWebHandler.handleNewsletter(){
+                       return new CrudNewsletter();
+               }
+       }
+

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,58 @@
+package org.apache.magma.web.newsletter;
+
+import java.util.List;
+
+import org.apache.magma.database.Database;
+import org.apache.magma.domain.newsletter.Newsletter;
+import org.apache.magma.domain.newsletter.Newsletter.ProgressStatus;
+import org.apache.magma.domain.user.User;
+import org.apache.magma.email.Email;
+import org.apache.magma.jobs.Job;
+import org.apache.magma.jobs.Report;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.producers.TemplatingProducer;
+
+public class SendNewsletter implements Job{
+       
+       private Report report;
+       private Newsletter newsletter;
+       
+       public void run(){
+               Database db = new Database();
+               newsletter = db.load(Newsletter.class, newsletter.getId());
+               report.setState("Searching for users...");
+               List<User> list = db.query(User.class, "where x.activate=?1 and 
x.newsletter=?2", true, true);
+               report.setTotal(list.size());
+               for(User user : list){
+                       report.setState("Sending to " + user.getEmail());
+                       try{
+                               Email mail = new Email();
+                               mail.to(user.getEmail());
+                               mail.subject(newsletter.getTitle());
+                               HtmlProducer prod = new 
TemplatingProducer("newsletter")
+                                       .addParameter("letter", newsletter)
+                                       .addParameter("user", user);
+                               mail.html(prod);
+                               mail.send();
+                               report.step();                          
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                       }
+               }
+               newsletter.setProgress(ProgressStatus.SENT);
+               db.save(newsletter);
+       }
+       
+       public void setReport (Report report){
+               this.report = report;
+       }
+       
+       public Newsletter getNewsletter(){
+               return newsletter;
+       }
+       public void setNewsletter (Newsletter newsletter){
+               this.newsletter = newsletter;
+       }
+       
+       
+}

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/UserSettingsAddition.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/UserSettingsAddition.aj?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/UserSettingsAddition.aj
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/UserSettingsAddition.aj
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,22 @@
+package org.apache.magma.web.newsletter;
+
+import org.apache.magma.domain.user.User;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.RootWebHandler;
+import org.apache.magma.website.producers.TemplatingProducer;
+import org.apache.magma.database.Database;
+import org.apache.magma.web.user.SettingsWebHandler;
+
+public aspect UserSettingsAddition {
+       private User SettingsWebHandler.sessionUser;
+                       
+       public HtmlProducer SettingsWebHandler.doNewsLetter(boolean b) {
+               if (this.sessionUser == null) {
+                       return 
RootWebHandler.getInstance().handleLogin().handleRequest().doShow();
+               } else {                                
+                       this.sessionUser.setNewsletter(b);
+                       new Database().save(sessionUser);
+                       return new 
TemplatingProducer("courtesyPage.vm").addParameter(this.sessionUser);
+               }       
+       }
+}

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/courtesyPage.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/courtesyPage.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/courtesyPage.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/courtesyPage.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,20 @@
+<h1>$i18n.tr("Account Settings")</h1>
+
+$i18n.tr("Hi ") $user.name
+
+#if($user.getNewsletter())
+       <div class="magmaCourtesy">
+       <p>$i18n.tr("Thanks for subscribing our newsletter!")</p>
+       <a href="magma:/">$i18n.tr("HomePage")</a>
+       </div>
+#elseif(!$user.getNewsletter())
+       <div class="magmaCourtesy">
+       <p>$i18n.tr("Your settings are been changed, you will not receive other 
newsletter's email")</p>
+       <a href="magma:/">$i18n.tr("HomePage")</a>
+       </div>
+#elseif($user == -1)
+       <div class="magmaCourtesy">
+       <p>$i18n.tr("You have to be logged in to access this option.")</p>
+       <a href="magma:/">$i18n.tr("HomePage")</a>
+       </div>
+#end           
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletter.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletter.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletter.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletter.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,2 @@
+<h1>$letter.title</h1>
+<div class="magmaNLContent">$letter.content</div>
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletterStatus.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletterStatus.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletterStatus.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/newsletterStatus.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,3 @@
+<div class="magmaNLStatus">
+       <p>Status : $bean.progress</p>
+       </div>
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/progress.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/progress.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/progress.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/progress.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,6 @@
+<h1>$i18n.tr("Sending...")</h1>
+<div class="magmaNLStatus">
+<p>
+<a href="magma:/administration/jobs/details-$job">$i18n.tr("The newsletter 
sending process")</a>$i18n.tr(" is in progress").
+</p>
+</div> 
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sending.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sending.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sending.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sending.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1,6 @@
+<h1>$i18n.tr("Sending...")</h1>
+<div class="magmaNLStatus">
+<p>
+       <a href="magma:/aministration/jobs/list">$i18n.tr("The newsletter 
sending process")</a>$i18n.tr(" is in progress").
+</p>
+</div> 
\ No newline at end of file

Added: 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sent.vm
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sent.vm?rev=826899&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sent.vm
 (added)
+++ 
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org.apache.magma.web.newsletter/sent.vm
 Mon Oct 19 23:57:59 2009
@@ -0,0 +1 @@
+<h1>$i18n.tr("Newsletter already sent.")</h1>
\ No newline at end of file



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

Reply via email to