Author: simoneg
Date: Wed Apr 14 19:01:22 2010
New Revision: 934121
URL: http://svn.apache.org/viewvc?rev=934121&view=rev
Log:
Newsletter preview from job
Added:
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
Modified:
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/SendNewsletter.java
Modified:
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=934121&r1=934120&r2=934121&view=diff
==============================================================================
---
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
(original)
+++
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/CrudNewsletter.java
Wed Apr 14 19:01:22 2010
@@ -3,15 +3,20 @@ 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.domain.user.User;
+import org.apache.magma.email.Email;
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.beansview.SmartForm;
import org.apache.magma.website.producers.TemplatingProducer;
public class CrudNewsletter extends CompleteCrudHandler<Newsletter>{
+ protected User sessionUser;
+
public CrudNewsletter(){
super(Newsletter.class);
}
@@ -38,4 +43,22 @@ public class CrudNewsletter extends Comp
}
return new TemplatingProducer();
}
+
+ public SmartForm handlePreview(Newsletter n) {
+ PreviewRequest pr = new PreviewRequest();
+ pr.setNewsletter(n);
+ SmartForm ret = new SmartForm(pr, "hiddenPreview");
+ return ret;
+ }
+
+ public HtmlProducer hiddenPreview(PreviewRequest req) {
+ SendNewsletter sender = new SendNewsletter();
+ sender.setNewsletter(n);
+ req.setUser(this.sessionUser);
+ sender.setPreview(req);
+ Scheduler sched = new Scheduler();
+ JobStatus run = sched.run("Sending newsletter preview", sender);
+ return new TemplatingProducer("previewSent");
+ }
+
}
Added:
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
URL:
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java?rev=934121&view=auto
==============================================================================
---
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
(added)
+++
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/PreviewRequest.java
Wed Apr 14 19:01:22 2010
@@ -0,0 +1,44 @@
+package org.apache.magma.web.newsletter;
+
+import org.apache.magma.beans.MagReadOnly;
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.domain.newsletter.Newsletter;
+import org.apache.magma.domain.user.User;
+import org.apache.magma.validation.validators.Email;
+import org.apache.magma.validation.validators.Required;
+import org.apache.magma.view.MagView;
+
+...@magmabean
+public class PreviewRequest {
+
+ private String targetEmail;
+ private Newsletter newsletter;
+ private User user;
+
+ @MagView(order=1)
+ @Required
+ @Email
+ public String getTargetEmail() {
+ return targetEmail;
+ }
+ public void setTargetEmail(String targetEmail) {
+ this.targetEmail = targetEmail;
+ }
+
+ public Newsletter getNewsletter() {
+ return newsletter;
+ }
+ public void setNewsletter(Newsletter newsletter) {
+ this.newsletter = newsletter;
+ }
+
+ @MagView(order=2, label="Test user")
+ @MagReadOnly
+ public User getUser() {
+ return user;
+ }
+ public void setUser(User user) {
+ this.user = user;
+ }
+
+}
Modified:
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=934121&r1=934120&r2=934121&view=diff
==============================================================================
---
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
(original)
+++
labs/magma/trunk/fragment-newsletter-web/src/main/java/org/apache/magma/web/newsletter/SendNewsletter.java
Wed Apr 14 19:01:22 2010
@@ -16,34 +16,48 @@ public class SendNewsletter implements J
private Report report;
private Newsletter newsletter;
+ private PreviewRequest preview;
public void run(){
try {
Thread.sleep(1000);
} catch (Exception e) {}
- 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.active=?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("/org/apache/magma/web/newsletter/newsletter")
- .addParameter("letter", newsletter)
- .addParameter("user", user);
- mail.html(prod);
- mail.send();
- report.step();
- } catch (Exception e) {
- e.printStackTrace();
+ if (preview != null) {
+ report.setState("Sending preview");
+ Email mail = new Email();
+ mail.to(preview.getTargetEmail());
+ mail.subject(newsletter.getTitle());
+ HtmlProducer prod = new
TemplatingProducer("/org/apache/magma/web/newsletter/newsletter")
+ .addParameter("letter", newsletter)
+ .addParameter("user", preview.getUser());
+ mail.html(prod);
+ mail.send();
+ report.finished();
+ } else {
+ 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.active=?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("/org/apache/magma/web/newsletter/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);
}
- newsletter.setProgress(ProgressStatus.SENT);
- db.save(newsletter);
}
public void setReport (Report report){
@@ -56,6 +70,14 @@ public class SendNewsletter implements J
public void setNewsletter (Newsletter newsletter){
this.newsletter = newsletter;
}
+
+ public PreviewRequest getPreview() {
+ return preview;
+ }
+
+ public void setPreview(PreviewRequest preview) {
+ this.preview = preview;
+ }
}
Added:
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
URL:
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm?rev=934121&view=auto
==============================================================================
---
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
(added)
+++
labs/magma/trunk/fragment-newsletter-web/src/main/resources/org/apache/magma/web/newsletter/previewSent.vm
Wed Apr 14 19:01:22 2010
@@ -0,0 +1 @@
+<p>$mag.tr("Preview sent")</p>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]