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]