started working on mass e-mail feature for admins. sending of e-mail seems to work. selection of recipients needs a lot of work.
This commit is contained in:
parent
f966336302
commit
9cd2fdc9dd
src/main/java/se/su/dsv/scipro/admin
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div class="span-22 last">
|
||||
<div wicket:id="adminMailPanel"></div>
|
||||
|
||||
</div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -2,6 +2,7 @@ package se.su.dsv.scipro.admin.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
|
||||
import se.su.dsv.scipro.admin.panels.AdminMailPanel;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@ -10,7 +11,8 @@ public class AdminMailPage extends AbstractAdminPage {
|
||||
|
||||
public AdminMailPage(PageParameters pp) {
|
||||
super(pp);
|
||||
// TODO Auto-generated constructor stub
|
||||
|
||||
add(new AdminMailPanel("adminMailPanel"));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<h5>Mail from administrator</h5>
|
||||
<div wicket:id="feedbackPanel"></div>
|
||||
<div class="append-bottom" wicket:id="radioChoices">
|
||||
<input type="radio"/>
|
||||
</div>
|
||||
<form wicket:id="mailForm">
|
||||
Subject:<br />
|
||||
<input type="text" wicket:id="mailSubject"><br />
|
||||
Message:<br />
|
||||
<textarea wicket:id="mailBody"></textarea><br />
|
||||
<div>
|
||||
<input type="submit" value="Send e-mail" wicket:id="submitButton" />
|
||||
</div>
|
||||
</form>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
150
src/main/java/se/su/dsv/scipro/admin/panels/AdminMailPanel.java
Normal file
150
src/main/java/se/su/dsv/scipro/admin/panels/AdminMailPanel.java
Normal file
@ -0,0 +1,150 @@
|
||||
package se.su.dsv.scipro.admin.panels;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
|
||||
import org.apache.wicket.behavior.SimpleAttributeModifier;
|
||||
import org.apache.wicket.markup.html.form.Button;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.RadioChoice;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.MailEventDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
import se.su.dsv.scipro.data.dataobjects.MailEvent;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
|
||||
public class AdminMailPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
@SpringBean
|
||||
private MailEventDao mailEventDao;
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao generalSystemSettingsDao;
|
||||
|
||||
private Set<User> userSet;
|
||||
private static final Logger logger = Logger.getLogger(AdminMailPanel.class);
|
||||
private final String AUTHORS_ALL = "Just me";
|
||||
// private final String AUTHORS_ALL = "All authors";
|
||||
// private final String AUTHORS_CONFIRMED = "Authors with confirmed project ideas";
|
||||
// private final String AUTHORS_UNCONFIRMED = "Authors with unconfirmed project ideas";
|
||||
private final String AUTHORS_REFUSED = "Authors with refused project ideas";
|
||||
private final String SUPERVISOR_ALL = "All supervisors";
|
||||
// private final String SUPERVISOR_CONFIRMED = "Supervisors with confirmed project ideas";
|
||||
private final String SUPERVISOR_UNCONFIRMED = "Supervisors with unconfirmed project ideas";
|
||||
// private final String AUTHORS = "authors";
|
||||
private final String THESISSUPPORT = "Thesis support";
|
||||
// private final String SUPERVISOR = "supervisor";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public AdminMailPanel(String id) {
|
||||
super(id);
|
||||
add(new FeedbackPanel("feedbackPanel"));
|
||||
setUpRadioButtons();
|
||||
setUpMailForm();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void setUpMailForm() {
|
||||
MailForm mailForm = new MailForm("mailForm");
|
||||
add(mailForm);
|
||||
}
|
||||
|
||||
public class MailForm extends Form<Void> {
|
||||
private TextField<String> mailSubject;
|
||||
private TextArea<String> mailBody;
|
||||
private String fromName;
|
||||
private String fromEmail;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public MailForm(String id) {
|
||||
super(id);
|
||||
|
||||
GeneralSystemSettings gsettings = generalSystemSettingsDao.getGeneralSystemSettingsInstance();
|
||||
fromName = gsettings.getMailFromName();
|
||||
fromEmail = gsettings.getSystemFromMail();
|
||||
|
||||
Button submitButton = new Button("submitButton");
|
||||
submitButton.add(new SimpleAttributeModifier(
|
||||
"onclick",
|
||||
"if (!confirm('Are you sure you want to send this e-mail to the selected recipients?')){ return false; }"));
|
||||
add(submitButton);
|
||||
mailSubject = new TextField<String>("mailSubject", new Model<String>());
|
||||
mailBody = new TextArea<String>("mailBody", new Model<String>());
|
||||
|
||||
add(mailSubject);
|
||||
add(mailBody);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSubmit() {
|
||||
|
||||
try {
|
||||
MailEvent me = new MailEvent(mailSubject.getInput(), mailBody.getInput(), userSet, fromName, fromEmail);
|
||||
me = mailEventDao.save(me);
|
||||
System.out.println("Mail to: " + me.getRecipients() );
|
||||
System.out.println("Mail subject: " + me.getSubject());
|
||||
System.out.println("Mail body: " + me.getMessageBody());
|
||||
info("E-mail sent successfully to the following users: " + me.getRecipients());
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.info("Failed to send e-mail");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void setUpRadioButtons() {
|
||||
List<String> myChoices = Arrays.asList(new String[]{AUTHORS_ALL,AUTHORS_REFUSED,THESISSUPPORT,SUPERVISOR_ALL, SUPERVISOR_UNCONFIRMED});
|
||||
final RadioChoice<String> rc = new RadioChoice<String>("radioChoices",new Model<String>(), myChoices);
|
||||
AjaxFormChoiceComponentUpdatingBehavior behavior = new AjaxFormChoiceComponentUpdatingBehavior() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
userSet = new HashSet<User>();
|
||||
userSet = getRecipients(rc.getModelObject());
|
||||
}
|
||||
};
|
||||
rc.add(behavior);
|
||||
add(rc);
|
||||
}
|
||||
|
||||
|
||||
private Set<User> getRecipients(String choiceInput) {
|
||||
Set<User> recipients = new HashSet<User>();
|
||||
if(choiceInput.equals(AUTHORS_ALL)) {
|
||||
recipients.add(userDao.getUserByEmail("emil-siv@dsv.su.se"));
|
||||
}
|
||||
else if(choiceInput.equals(AUTHORS_REFUSED)) {
|
||||
recipients.add(userDao.getUserByEmail("emil-siv@dsv.su.se"));
|
||||
//recipients.add(userDao.getUserByEmail("fred-fri@dsv.su.se"));
|
||||
}
|
||||
else if(choiceInput.equals(THESISSUPPORT)) {
|
||||
recipients.add(userDao.getUserByEmail("emil-siv@dsv.su.se"));
|
||||
//recipients.add(userDao.getUserByEmail("fred-fri@dsv.su.se"));
|
||||
//recipients.add(userDao.getUserByEmail("robi-ekl@dsv.su.se"));
|
||||
}
|
||||
else if(choiceInput.equals(SUPERVISOR_ALL)) {
|
||||
}
|
||||
else if(choiceInput.equals(SUPERVISOR_UNCONFIRMED)) {
|
||||
}
|
||||
return recipients;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user