Merge branch 'mailProjectClass' into develop
* mailProjectClass: changed project class selection from dropbox to radio choice in the admin mail panel, so the user may pick more than one level
This commit is contained in:
commit
5519782b05
src/main/java/se/su/dsv/scipro
@ -9,7 +9,13 @@
|
||||
<div class="span-10">
|
||||
<div class="append-bottom">
|
||||
<label for="projectClassSelection">Filter recipients by project level: </label><br />
|
||||
<select id="projectClassSelection" wicket:id="projectClassSelection"></select><br />
|
||||
<div wicket:id="checkGroup">
|
||||
<label for="levelsListView">Level:</label>
|
||||
<div wicket:id="levelsListView">
|
||||
<input type="checkbox" wicket:id="levelCheckBox"></input> <span
|
||||
wicket:id="levelName"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<b>Filter recipients by project or project idea:</b>
|
||||
<div class="append-bottom" wicket:id="mainChoice">
|
||||
|
@ -11,21 +11,25 @@ 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.ajax.form.AjaxFormComponentUpdatingBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
|
||||
import org.apache.wicket.behavior.SimpleAttributeModifier;
|
||||
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Button;
|
||||
import org.apache.wicket.markup.html.form.CheckGroup;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.ListChoice;
|
||||
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.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.util.ListModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
@ -33,11 +37,11 @@ import org.apache.wicket.validation.validator.StringValidator;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
import se.su.dsv.scipro.components.DatePickerPanel;
|
||||
import se.su.dsv.scipro.components.ProjectClassSelector;
|
||||
import se.su.dsv.scipro.components.ProjectIdeaMailChoice;
|
||||
import se.su.dsv.scipro.components.ProjectMailChoice;
|
||||
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.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
import se.su.dsv.scipro.data.dataobjects.MailEvent;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
@ -56,6 +60,8 @@ public class AdminMailPanel extends Panel {
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao generalSystemSettingsDao;
|
||||
@SpringBean
|
||||
private ProjectClassDao projectClassDao;
|
||||
@SpringBean
|
||||
private MailFacade mailFacade;
|
||||
|
||||
private Set<User> userSet;
|
||||
@ -64,8 +70,7 @@ public class AdminMailPanel extends Panel {
|
||||
private final String PROJECT_IDEAS = "Project ideas";
|
||||
private AjaxLink<String> showList;
|
||||
private ListChoice<String> emailList;
|
||||
private ProjectClassSelector projectClassSelection;
|
||||
private ProjectClass projectClassModel;
|
||||
private Set<ProjectClass> projectClassList;
|
||||
private ProjectIdeaMailChoice ideaChoice;
|
||||
private ProjectMailChoice projectChoice;
|
||||
private RadioChoice<String> choice;
|
||||
@ -81,25 +86,50 @@ public class AdminMailPanel extends Panel {
|
||||
setOutputMarkupId(true);
|
||||
//Default value
|
||||
selectedRecipientSet = ProjectMailChoice.THESIS_SUPPORT;
|
||||
setUpClassSelection();
|
||||
setUpProjectClassCheckboxes();
|
||||
setUpDatePanel();
|
||||
setUpRadioButtons();
|
||||
setUpMailForm();
|
||||
}
|
||||
|
||||
private void setUpClassSelection() {
|
||||
projectClassSelection = new ProjectClassSelector("projectClassSelection");
|
||||
add(projectClassSelection);
|
||||
projectClassModel = projectClassSelection.getModelObject();
|
||||
projectClassSelection.add(new AjaxFormComponentUpdatingBehavior("onchange") {
|
||||
private void setUpProjectClassCheckboxes() {
|
||||
final List<ProjectClass> levels = projectClassDao.findAll();
|
||||
projectClassList = new HashSet<ProjectClass>(levels);
|
||||
CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(levels);
|
||||
CheckGroup<ProjectClass> checkGroup = new CheckGroup<ProjectClass>("checkGroup", new ArrayList<ProjectClass>());
|
||||
|
||||
ListView<ProjectClass> levelsListView = new ListView<ProjectClass>("levelsListView", levelModel) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final long serialVersionUID = -1107218480527526745L;
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
projectClassModel = projectClassSelection.getModelObject();
|
||||
updateUserSet(target);
|
||||
}
|
||||
});
|
||||
protected void populateItem(final ListItem<ProjectClass> item) {
|
||||
AjaxCheckBox ajaxCheck = new AjaxCheckBox("levelCheckBox", new Model<Boolean>()) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
boolean selected = this.getModelObject();
|
||||
if (selected) {
|
||||
projectClassList.add(item.getModelObject());
|
||||
updateUserSet(target);
|
||||
} else {
|
||||
if (projectClassList.contains(item.getModelObject()))
|
||||
projectClassList.remove(item.getModelObject());
|
||||
updateUserSet(target);
|
||||
}
|
||||
}
|
||||
};
|
||||
ajaxCheck.setDefaultModelObject(true);
|
||||
item.add(ajaxCheck);
|
||||
Label levelName = new Label("levelName", item.getModel().getObject().getName());
|
||||
item.add(levelName);
|
||||
}
|
||||
};
|
||||
|
||||
checkGroup.add(levelsListView);
|
||||
add(checkGroup);
|
||||
}
|
||||
|
||||
private void setUpDatePanel() {
|
||||
@ -135,7 +165,7 @@ public class AdminMailPanel extends Panel {
|
||||
projectChoice = new ProjectMailChoice("projectChoices");
|
||||
|
||||
userSet = new HashSet<User>();
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassModel);
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassList);
|
||||
|
||||
ideaChoice.setVisible(false);
|
||||
add(choice);
|
||||
@ -235,7 +265,7 @@ public class AdminMailPanel extends Panel {
|
||||
}
|
||||
|
||||
private void updateUserSet(AjaxRequestTarget target) {
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassModel);
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassList);
|
||||
showRecipients();
|
||||
target.addComponent(emailList);
|
||||
}
|
||||
@ -251,7 +281,7 @@ public class AdminMailPanel extends Panel {
|
||||
|
||||
}
|
||||
|
||||
private Set<User> getRecipients(String choiceInput, ProjectClass pc) {
|
||||
private Set<User> getRecipients(String choiceInput, Set<ProjectClass> pc) {
|
||||
Date startDate = dpp.getStartDate();
|
||||
Date endDate = dpp.getEndDate();
|
||||
Set<User> recipients = new HashSet<User>();
|
||||
@ -336,7 +366,7 @@ public class AdminMailPanel extends Panel {
|
||||
|
||||
@Override
|
||||
protected void onSubmit() {
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassModel);
|
||||
userSet = getRecipients(selectedRecipientSet, projectClassList);
|
||||
try {
|
||||
if(userSet != null && !userSet.isEmpty()) {
|
||||
MailEvent me = new MailEvent(mailSubjectField.getInput(), mailBodyField.getInput(), userSet, fromName, fromEmail);
|
||||
|
@ -35,55 +35,55 @@ public class MailFacade {
|
||||
private ProjectIdeaDao.Params projectIdeaParams;
|
||||
private Set<User> recipients;
|
||||
|
||||
public Set<User> addProjectAuthors(ProjectStatus ps, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addProjectAuthors(ProjectStatus ps, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectParams(ps, pc, startDate, endDate);
|
||||
return authorsFromProjects();
|
||||
}
|
||||
|
||||
public Set<User> addProjectSupervisors(ProjectStatus ps, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addProjectSupervisors(ProjectStatus ps, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectParams(ps, pc, startDate, endDate);
|
||||
return supervisorsFromProjects();
|
||||
}
|
||||
|
||||
public Set<User> addProjectCoSupervisors(ProjectStatus ps, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addProjectCoSupervisors(ProjectStatus ps, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectParams(ps, pc, startDate, endDate);
|
||||
return coSupervisorsFromProjects();
|
||||
}
|
||||
|
||||
public Set<User> addProjectReviewers(ProjectStatus ps, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addProjectReviewers(ProjectStatus ps, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectParams(ps, pc, startDate, endDate);
|
||||
return reviewersFromProjects();
|
||||
}
|
||||
|
||||
public Set<User> addIdeaAuthors(Status status, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addIdeaAuthors(Status status, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectIdeaParams(status, pc, startDate, endDate);
|
||||
return authorsFromProjectIdeas();
|
||||
}
|
||||
|
||||
public Set<User> addIdeaSupervisors(Status status, ProjectClass pc, Date startDate, Date endDate) {
|
||||
public Set<User> addIdeaSupervisors(Status status, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
setProjectIdeaParams(status, pc, startDate, endDate);
|
||||
return supervisorsFromProjectIdeas();
|
||||
}
|
||||
|
||||
|
||||
private void setProjectIdeaParams(Status matchStatus, ProjectClass projectClass, Date startDate, Date endDate) {
|
||||
private void setProjectIdeaParams(Status matchStatus, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
projectIdeaParams = new ProjectIdeaDao.Params();
|
||||
if(matchStatus != null)
|
||||
projectIdeaParams.setStatuses(Arrays.asList(new Status[]{matchStatus}));
|
||||
if(projectClass != null)
|
||||
projectIdeaParams.setProjectClasses(Arrays.asList(new ProjectClass[]{projectClass}));
|
||||
if(pc != null && !pc.isEmpty())
|
||||
projectIdeaParams.setProjectClasses(pc);
|
||||
if(startDate != null)
|
||||
projectIdeaParams.setSubmittedAfter(startDate);
|
||||
if(endDate != null)
|
||||
projectIdeaParams.setSubmittedBefore(endDate);
|
||||
}
|
||||
|
||||
private void setProjectParams(ProjectStatus status, ProjectClass projectClass, Date startDate, Date endDate) {
|
||||
private void setProjectParams(ProjectStatus status, Set<ProjectClass> pc, Date startDate, Date endDate) {
|
||||
projectParams = new ProjectDao.Params();
|
||||
if (status != null)
|
||||
projectParams.setProjectStatuses(Arrays.asList(new ProjectStatus[]{status}));
|
||||
if (projectClass != null)
|
||||
projectParams.setProjectClasses(Arrays.asList(new ProjectClass[]{projectClass}));
|
||||
if (pc != null&&!pc.isEmpty())
|
||||
projectParams.setProjectClasses(pc);
|
||||
if(startDate != null)
|
||||
projectParams.setStartedAfter(startDate);
|
||||
if(endDate != null)
|
||||
|
Loading…
x
Reference in New Issue
Block a user