Aborting peer review features. Dialog in My requests and reviews added.

This commit is contained in:
Emil Siverhall 2011-08-10 09:38:12 +02:00
parent d60ca5da7c
commit 5c2c413ab3
5 changed files with 189 additions and 20 deletions

@ -63,6 +63,9 @@ public class PeerReview extends LazyDeletableDomainObject implements Commentable
@Lob
private String comment;
@Lob
private String abortReason;
@OneToOne(optional=true, mappedBy="peerReview")
private ReviewRating reviewRating;
@ -150,6 +153,14 @@ public class PeerReview extends LazyDeletableDomainObject implements Commentable
return aborted;
}
public void setAbortReason(String abortReason) {
this.abortReason = abortReason;
}
public String getAbortReason() {
return abortReason;
}
@Override
public String toString(){
return "PeerReview[Id="+id+"]";

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<span>Test</span>
<form wicket:id="abortReasonForm">
<table>
<tr>
<td>Why do you want to abort this peer review?:</td>
</tr>
<tr>
<td><input wicket:id="abortButton" type="submit" value="Abort review" />
</td>
<td><input wicket:id="cancelButton" type="submit"
value="Cancel" />
</td>
</tr>
</table>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,65 @@
package se.su.dsv.scipro.peer.panels;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerRequestDao;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerReviewDao;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
public class AbortReviewPanel extends Panel {
@SpringBean
PeerReviewDao peerReviewDao;
@SpringBean
PeerRequestDao peerRequestDao;
private static final long serialVersionUID = 1L;
public AbortReviewPanel(String id, IModel<PeerReview> model) {
super(id);
add(new AbortReasonForm("abortReasonForm", model));
}
private class AbortReasonForm extends Form<Void>{
private static final long serialVersionUID = 1L;
public AbortReasonForm(String id, final IModel<PeerReview> model) {
super(id);
final PeerReview pr = model.getObject();
final PeerRequest request = pr.getPeerRequest();
System.out.println(model.getObject().getPeerRequest().getProject().getTitle());
Button abortButton = new Button("abortButton"){
private static final long serialVersionUID = 1L;
@Override
public void onSubmit(){
PeerReview review = peerReviewDao.reLoad(pr);
review.setAborted(true);
review.setSubmitted(false);
review = peerReviewDao.save(review);
}
};
add(abortButton);
Button cancelButton = new Button("cancelButton"){
private static final long serialVersionUID = 1L;
@Override
public void onSubmit(){
}
};
add(cancelButton);
}
}
}

@ -5,6 +5,10 @@
>
<body>
<wicket:panel>
<!-- Edit/add dialog -->
<div wicket:id="dialog">
<div wicket:id="dialogContent"></div>
</div>
<div class="append-bottom">
<h6>Completed</h6>
<i wicket:id="noAcceptedReviewsCompletedMessage"></i>
@ -27,6 +31,9 @@
<span wicket:id="reviewDate"></span>
<span wicket:id="projectTitle"></span>
</a>
<a href="#" wicket:id="abortLink">
<img src="images/icons/delete_16x16.png" class="icon-8"/> Abort review
</a>
</li>
</ul>
</div>

@ -5,16 +5,23 @@ import java.util.List;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.datetime.PatternDateConverter;
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.ui.dialog.Dialog;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.admin.panels.AdminProjectClassPanel;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerRequestDao;
@ -22,6 +29,7 @@ import se.su.dsv.scipro.peer.data.dao.interfaces.PeerReviewDao;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
import se.su.dsv.scipro.peer.enums.RequestStatus;
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
public abstract class StudentPeerInfoReviewsPanel extends Panel {
@ -30,10 +38,25 @@ public abstract class StudentPeerInfoReviewsPanel extends Panel {
@SpringBean
private PeerReviewDao peerReviewDao;
@SpringBean
private PeerRequestDao peerRequestDao;
public StudentPeerInfoReviewsPanel(final String id, final Student student, final Project project) {
super(id);
setOutputMarkupId(true);
final PatternDateConverter dpc = new PatternDateConverter("yyyy-MM-dd", false);
/*
* Dialog for aborting reviews
*/
final Dialog dialog = new Dialog("dialog");
dialog.setModal(true);
dialog.setAutoOpen(false);
dialog.add(new EmptyPanel("dialogContent"));
dialog.setWidth(500);
dialog.setHeight(360);
add(dialog);
/*
* Reviews
@ -69,33 +92,73 @@ public abstract class StudentPeerInfoReviewsPanel extends Panel {
});
final List<PeerReview> acceptedInProgress = peerReviewDao.findAcceptedReviewsInProgress(student, project);
final LoadableDetachableModel<List<PeerReview>> acceptedInProgressModel =
new LoadableDetachableModel<List<PeerReview>>(){
private static final long serialVersionUID = 1L;
@Override
protected List<PeerReview> load() {
return peerReviewDao.findAcceptedReviewsInProgress(student, project);
}
};
//final List<PeerReview> acceptedInProgress = peerReviewDao.findAcceptedReviewsInProgress(student, project);
final ListView<PeerReview> acceptedInProgressList = new ListView<PeerReview>("acceptedInProgress", acceptedInProgressModel){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final ListItem<PeerReview> item) {
final PeerReview pr = item.getModelObject();
final PeerRequest request = pr.getPeerRequest();
PageParameters pp = new PageParameters();
pp.put(PeerReview.PP_PEER_REVIEW_ID, pr.getId());
BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>("reviewLink", getPeerReviewPageClass(), pp);
link.add(new DateLabel("reviewDate", new Model<Date>(pr.getDateCreated()), dpc));
link.add(new Label("projectTitle", request.getProject().getTitle(30)));
final AjaxLink<Void> abortLink = new AjaxLink<Void>("abortLink"){
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
//PeerReview review = peerReviewDao.reLoad(pr);
dialog.replace(new AbortReviewPanel("dialogContent", item.getModel()));
target.addComponent(dialog);
dialog.open(target);
/*PeerReview review = peerReviewDao.reLoad(pr);
PeerRequest prq = peerRequestDao.reLoad(request);
review.setAborted(true);
review.setSubmitted(false);
review = peerReviewDao.save(review);
prq.setStatus(RequestStatus.WAITING);
prq = peerRequestDao.save(prq);*/
}
@Override
public boolean isVisible(){
return pr.getReviewer().getUser().equals(SciProSession.get().getUser());
//return request.getRequester().getUser().equals(SciProSession.get().getUser());
}
};
item.add(link);
item.add(abortLink);
add(item);
}
};
add(acceptedInProgressList);
add(new Label("noAcceptedInProgressMessage", "No reviews in progress found"){
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible(){
return acceptedInProgress.size() == 0;
return acceptedInProgressList.size() == 0;
}
});
add(new ListView<PeerReview>("acceptedInProgress", acceptedInProgress){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<PeerReview> item) {
PeerReview pr = item.getModelObject();
PeerRequest request = pr.getPeerRequest();
PageParameters pp = new PageParameters();
pp.put(PeerReview.PP_PEER_REVIEW_ID, pr.getId());
BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>("reviewLink", getPeerReviewPageClass(), pp);
link.add(new DateLabel("reviewDate", new Model<Date>(pr.getDateCreated()), dpc));
link.add(new Label("projectTitle", request.getProject().getTitle(30)));
item.add(link);
add(item);
}
});
}