Merge branch 'm3_first_meeting' into develop
This commit is contained in:
commit
47b36f75f6
src/main/java/se/su/dsv/scipro
project
pages
panels
springdata
@ -2,34 +2,22 @@ package se.su.dsv.scipro.project.pages;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.Cookie;
|
|
||||||
|
|
||||||
import org.apache.wicket.PageParameters;
|
import org.apache.wicket.PageParameters;
|
||||||
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
|
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
|
||||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||||
import org.apache.wicket.markup.html.basic.Label;
|
|
||||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
|
||||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||||
import org.apache.wicket.model.IModel;
|
|
||||||
import org.apache.wicket.model.Model;
|
import org.apache.wicket.model.Model;
|
||||||
import org.apache.wicket.protocol.http.WebRequest;
|
|
||||||
import org.apache.wicket.protocol.http.WebResponse;
|
|
||||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||||
import org.apache.wicket.util.time.Duration;
|
import org.apache.wicket.util.time.Duration;
|
||||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||||
|
|
||||||
import se.su.dsv.scipro.SciProSession;
|
|
||||||
import se.su.dsv.scipro.data.DomainObjectDetachableModel;
|
|
||||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
|
|
||||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
|
||||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||||
import se.su.dsv.scipro.data.dataobjects.User;
|
import se.su.dsv.scipro.data.dataobjects.User;
|
||||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
|
||||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||||
import se.su.dsv.scipro.project.panels.AcceptIdeaDialogPanel;
|
import se.su.dsv.scipro.project.panels.AcceptIdeaDialogPanel;
|
||||||
import se.su.dsv.scipro.project.panels.CompleteIdeaDialogPanel;
|
import se.su.dsv.scipro.project.panels.CompleteIdeaDialogPanel;
|
||||||
import se.su.dsv.scipro.project.panels.ProjectIdeaTabMenuPanel;
|
import se.su.dsv.scipro.project.panels.ProjectIdeaTabMenuPanel;
|
||||||
import se.su.dsv.scipro.project.panels.ProjectSubTabMenuPanel;
|
|
||||||
import se.su.dsv.scipro.springdata.services.StudentService;
|
import se.su.dsv.scipro.springdata.services.StudentService;
|
||||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||||
/**
|
/**
|
||||||
@ -121,8 +109,7 @@ public abstract class AbstractProjectIdeaPage extends ProjectPage {
|
|||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else
|
}
|
||||||
System.out.println("No confirmed ideas");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,15 @@ import se.su.dsv.scipro.project.panels.CheatSheetPanel;
|
|||||||
import se.su.dsv.scipro.project.panels.ProjectIdeaSubmissionPanel;
|
import se.su.dsv.scipro.project.panels.ProjectIdeaSubmissionPanel;
|
||||||
import se.su.dsv.scipro.security.auth.Authorization;
|
import se.su.dsv.scipro.security.auth.Authorization;
|
||||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||||
|
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||||
|
|
||||||
@Authorization(authorizedRoles={Roles.STUDENT})
|
@Authorization(authorizedRoles={Roles.STUDENT})
|
||||||
public class ProjectIdeaSubmissionPage extends AbstractProjectIdeaPage implements MenuHighlightProjectIdeas {
|
public class ProjectIdeaSubmissionPage extends AbstractProjectIdeaPage implements MenuHighlightProjectIdeas {
|
||||||
|
|
||||||
@SpringBean
|
@SpringBean
|
||||||
private ProjectIdeaDao projectIdeaDao;
|
private ProjectIdeaDao projectIdeaDao;
|
||||||
|
@SpringBean
|
||||||
|
private SupervisorIdeaService ideaService;
|
||||||
|
|
||||||
public ProjectIdeaSubmissionPage(PageParameters pp) {
|
public ProjectIdeaSubmissionPage(PageParameters pp) {
|
||||||
super(pp);
|
super(pp);
|
||||||
@ -38,12 +41,14 @@ public class ProjectIdeaSubmissionPage extends AbstractProjectIdeaPage implement
|
|||||||
for(Student s: authorRoles){
|
for(Student s: authorRoles){
|
||||||
authors.add(s.getUser());
|
authors.add(s.getUser());
|
||||||
}
|
}
|
||||||
if(!authors.contains(SciProSession.get().getUser())){
|
if(!authors.contains(getUser())){
|
||||||
failAndRedirect();
|
failAndRedirect();
|
||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
idea = new ProjectIdea();
|
idea = new ProjectIdea();
|
||||||
add(new ProjectIdeaSubmissionPanel("projectIdeaPanel", getUser(), idea));
|
|
||||||
|
boolean alreadyParticipating = ideaService.authorParticipatingOnIdea(getUser());
|
||||||
|
add(new ProjectIdeaSubmissionPanel("projectIdeaPanel", getUser(), idea, alreadyParticipating));
|
||||||
add(new CheatSheetPanel("cheatSheetPanel"));
|
add(new CheatSheetPanel("cheatSheetPanel"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,11 +17,13 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
|
|||||||
import se.su.dsv.scipro.SciProSession;
|
import se.su.dsv.scipro.SciProSession;
|
||||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.User;
|
||||||
import se.su.dsv.scipro.data.facade.ProjectIdeaFacade;
|
import se.su.dsv.scipro.data.facade.ProjectIdeaFacade;
|
||||||
import se.su.dsv.scipro.icons.ImageObject;
|
import se.su.dsv.scipro.icons.ImageObject;
|
||||||
import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao;
|
import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao;
|
||||||
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
import se.su.dsv.scipro.project.pages.ProjectIdeaSubmissionPage;
|
import se.su.dsv.scipro.project.pages.ProjectIdeaSubmissionPage;
|
||||||
|
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||||
import se.su.dsv.scipro.util.DateFormatter;
|
import se.su.dsv.scipro.util.DateFormatter;
|
||||||
|
|
||||||
public class ProjectIdeaPeriodPanel extends Panel {
|
public class ProjectIdeaPeriodPanel extends Panel {
|
||||||
@ -34,6 +36,8 @@ public class ProjectIdeaPeriodPanel extends Panel {
|
|||||||
private ProjectClassDao projectClassDao;
|
private ProjectClassDao projectClassDao;
|
||||||
@SpringBean
|
@SpringBean
|
||||||
private ProjectIdeaFacade projectIdeaFacade;
|
private ProjectIdeaFacade projectIdeaFacade;
|
||||||
|
@SpringBean
|
||||||
|
private SupervisorIdeaService ideaService;
|
||||||
|
|
||||||
private WebMarkupContainer periodContainer;
|
private WebMarkupContainer periodContainer;
|
||||||
|
|
||||||
@ -123,7 +127,9 @@ public class ProjectIdeaPeriodPanel extends Panel {
|
|||||||
alreadySubmittedLabel.setVisible(false);
|
alreadySubmittedLabel.setVisible(false);
|
||||||
periodContainer.add(alreadySubmittedLabel);
|
periodContainer.add(alreadySubmittedLabel);
|
||||||
|
|
||||||
if (projectIdeaFacade.projectIdeaAlreadySubmittedThisPeriod(SciProSession.get().getUser(), currentPeriods)){
|
User currentUser = SciProSession.get().getUser();
|
||||||
|
|
||||||
|
if (projectIdeaFacade.projectIdeaAlreadySubmittedThisPeriod(currentUser, currentPeriods)||ideaService.authorParticipatingOnIdea(currentUser)){
|
||||||
newIdeaLink.setVisible(false);
|
newIdeaLink.setVisible(false);
|
||||||
alreadySubmittedLabel.setVisible(true);
|
alreadySubmittedLabel.setVisible(true);
|
||||||
}
|
}
|
||||||
|
@ -51,8 +51,8 @@ import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao;
|
|||||||
import se.su.dsv.scipro.match.dao.interfaces.AuthorDao;
|
import se.su.dsv.scipro.match.dao.interfaces.AuthorDao;
|
||||||
import se.su.dsv.scipro.match.dao.interfaces.ExemptionDao;
|
import se.su.dsv.scipro.match.dao.interfaces.ExemptionDao;
|
||||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
|
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
|
||||||
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
|
|
||||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao.TYPE;
|
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao.TYPE;
|
||||||
|
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
|
||||||
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
import se.su.dsv.scipro.match.dataobject.Keyword;
|
import se.su.dsv.scipro.match.dataobject.Keyword;
|
||||||
import se.su.dsv.scipro.match.dataobject.KeywordType;
|
import se.su.dsv.scipro.match.dataobject.KeywordType;
|
||||||
@ -99,10 +99,10 @@ public class ProjectIdeaSubmissionPanel extends Panel {
|
|||||||
* @param idea
|
* @param idea
|
||||||
* The project idea, that is submitted
|
* The project idea, that is submitted
|
||||||
*/
|
*/
|
||||||
public ProjectIdeaSubmissionPanel(String id, User user, ProjectIdea idea) {
|
public ProjectIdeaSubmissionPanel(String id, User user, ProjectIdea idea, boolean alreadyParticipating) {
|
||||||
super(id);
|
super(id);
|
||||||
add(new FeedbackPanel("feedback"));
|
add(new FeedbackPanel("feedback"));
|
||||||
add(new ProjectIdeaForm("projectIdeaForm", user, new Model<ProjectIdea>(idea)));
|
add(new ProjectIdeaForm("projectIdeaForm", user, new Model<ProjectIdea>(idea)).setEnabled(!alreadyParticipating));
|
||||||
dialogSetup();
|
dialogSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,6 +284,12 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
|||||||
return supervisorIdeaRepo.countIdeasByAuthorAndStatus(author, status);
|
return supervisorIdeaRepo.countIdeasByAuthorAndStatus(author, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean authorParticipatingOnIdea(User user) {
|
||||||
|
Student author = studentService.findByUser(user);
|
||||||
|
return alreadyParticipatingOnIdea(author);
|
||||||
|
}
|
||||||
|
|
||||||
private Predicate predicateFromParams(FilterParams params) {
|
private Predicate predicateFromParams(FilterParams params) {
|
||||||
return levelFilter(params.getLevels()).and(bySupervisor(params.getSupervisor()));
|
return levelFilter(params.getLevels()).and(bySupervisor(params.getSupervisor()));
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,7 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo
|
|||||||
|
|
||||||
boolean hasTakenIdeas(User authorUser, boolean confirmed);
|
boolean hasTakenIdeas(User authorUser, boolean confirmed);
|
||||||
boolean isIdeaEditable(SupervisorIdea idea, User currentUser);
|
boolean isIdeaEditable(SupervisorIdea idea, User currentUser);
|
||||||
|
boolean authorParticipatingOnIdea(User user);
|
||||||
|
|
||||||
Pair<Boolean, String> validateIdeaAcceptance(SupervisorIdea idea, User loggedInUser, SortedSet<Student> students);
|
Pair<Boolean, String> validateIdeaAcceptance(SupervisorIdea idea, User loggedInUser, SortedSet<Student> students);
|
||||||
Pair<Boolean, String> validatePartnerAcceptance(User loggedInUser);
|
Pair<Boolean, String> validatePartnerAcceptance(User loggedInUser);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user