Support for enabling/disabling peer-ratings
Change-Id: I56ebe733e9d67f6fdc3e4c9f49435cd2bb39e7aa
This commit is contained in:
parent
4924108096
commit
b929c74d3b
src/main/java/se/su/dsv/scipro
admin/pages/settings
components
data
peer
@ -5,8 +5,21 @@
|
||||
<wicket:extend>
|
||||
|
||||
<div class="append-bottom">
|
||||
<h5 class="peer-title">Settings for levels</h5>
|
||||
<h5 class="peer-title">General settings</h5>
|
||||
<form wicket:id="peerSettingsForm">
|
||||
<form wicket:id="peerRatingsSettingsForm">
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="peerRatingsEnabled">Enable peers to rate reviews and the display of ratings: </label></td>
|
||||
<td><input type="checkbox" wicket:id="peerRatingsEnabled" name="peerRatingsEnabled"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="peerDisplayNumberOfReviewsPerformed">Display users number of reviews performed on portal page</label></td>
|
||||
<td><input type="checkbox" wicket:id="peerDisplayNumberOfReviewsPerformed" name="peerDisplayNumberOfReviewsPerformed"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<h5 class="peer-title">Settings for levels</h5>
|
||||
<ul class="no-list-style">
|
||||
<li wicket:id="projectClassList" class="append-bottom">
|
||||
<h5 wicket:id="projectClassName" class="peer-box-subtitle"></h5>
|
||||
|
@ -3,15 +3,19 @@ package se.su.dsv.scipro.admin.pages.settings;
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Button;
|
||||
import org.apache.wicket.markup.html.form.CheckBox;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
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.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.admin.pages.AbstractAdminSettingsPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClassSettings;
|
||||
|
||||
@ -19,6 +23,8 @@ public class AdminPeerSettingsPage extends AbstractAdminSettingsPage {
|
||||
|
||||
@SpringBean
|
||||
private ProjectClassDao projectClassDao;
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao generalSystemSettingsDao;
|
||||
|
||||
public AdminPeerSettingsPage(final PageParameters pp){
|
||||
super(pp);
|
||||
@ -43,11 +49,30 @@ public class AdminPeerSettingsPage extends AbstractAdminSettingsPage {
|
||||
}
|
||||
|
||||
});
|
||||
CompoundPropertyModel<GeneralSystemSettings> ratingsModel = new CompoundPropertyModel<GeneralSystemSettings>(generalSystemSettingsDao.getGeneralSystemSettingsInstance());
|
||||
PeerRatingsSettingsForm peerRatingsSettingsForm = new PeerRatingsSettingsForm("peerRatingsSettingsForm", ratingsModel);
|
||||
peerSettingsForm.add(peerRatingsSettingsForm);
|
||||
|
||||
peerSettingsForm.add(new Button("submit"));
|
||||
add(peerSettingsForm);
|
||||
}
|
||||
|
||||
private class PeerRatingsSettingsForm extends Form<GeneralSystemSettings> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
public PeerRatingsSettingsForm(String id, IModel<GeneralSystemSettings> model) {
|
||||
super(id, model);
|
||||
|
||||
CheckBox peerRatingsEnabled = new CheckBox("peerRatingsEnabled");
|
||||
add(peerRatingsEnabled);
|
||||
CheckBox peerDisplayNumberOfReviewsPerformed = new CheckBox("peerDisplayNumberOfReviewsPerformed");
|
||||
add(peerDisplayNumberOfReviewsPerformed);
|
||||
}
|
||||
@Override
|
||||
public void onSubmit(){
|
||||
setModelObject(generalSystemSettingsDao.save(getModelObject()));
|
||||
}
|
||||
}
|
||||
|
||||
private class PeerProjectClassSettingsForm extends Form<ProjectClassSettings> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
@ -0,0 +1,21 @@
|
||||
package se.su.dsv.scipro.components;
|
||||
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
/**
|
||||
* An invisible Panel that can trigger the hiding of wicket-enclosures which EmptyPanel doesn't do.
|
||||
* @author Martin Peters - mpeters@dsv.su.se
|
||||
*
|
||||
*/
|
||||
public final class InvisiblePanel extends WebMarkupContainer {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public InvisiblePanel(String id) {
|
||||
super(id);
|
||||
}
|
||||
@Override
|
||||
public boolean isVisible(){
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -1,31 +1,44 @@
|
||||
package se.su.dsv.scipro.data.dao.jpa;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
|
||||
/**
|
||||
* @author Johan Aschan - aschan@dsv.su.se
|
||||
* @author Martin Peters
|
||||
*
|
||||
*/
|
||||
|
||||
@Repository("generalSystemSettingsDao")
|
||||
public class GeneralSystemSettingsDaoJPAImp extends AbstractDaoJPAImp<GeneralSystemSettings>
|
||||
implements GeneralSystemSettingsDao {
|
||||
|
||||
|
||||
private static final long INSTANCE_ID = 1L;
|
||||
|
||||
public GeneralSystemSettingsDaoJPAImp() {
|
||||
super(GeneralSystemSettings.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = false)
|
||||
public GeneralSystemSettings getGeneralSystemSettingsInstance(){
|
||||
GeneralSystemSettings generalSystemSettings = load(1L);
|
||||
GeneralSystemSettings generalSystemSettings = load(INSTANCE_ID);
|
||||
if (generalSystemSettings == null) {
|
||||
generalSystemSettings = new GeneralSystemSettings();
|
||||
generalSystemSettings = new GeneralSystemSettings(INSTANCE_ID);
|
||||
save(generalSystemSettings);
|
||||
}
|
||||
return generalSystemSettings;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = false)
|
||||
public GeneralSystemSettings save(GeneralSystemSettings object){
|
||||
if(object.getId() == null)
|
||||
throw new UnsupportedOperationException("You're not supposed to be creating new instances of this object manually!");
|
||||
return super.save(object);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,6 @@ package se.su.dsv.scipro.data.dataobjects;
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Cacheable;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@ -27,8 +26,9 @@ public class GeneralSystemSettings extends DomainObject{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
private Long id = null;
|
||||
@Override
|
||||
public Long getId() { return id; }
|
||||
|
||||
@Basic(optional=false)
|
||||
private int finalSeminarMaxActiveParticipants = 6;
|
||||
@ -40,7 +40,26 @@ public class GeneralSystemSettings extends DomainObject{
|
||||
private int daysBeforeFinalSeminarCanRegisterAsOpponent = 3;
|
||||
|
||||
@Basic(optional=true)
|
||||
private int projectPartnerDaysToLive;
|
||||
private int projectPartnerDaysToLive;
|
||||
|
||||
@Basic(optional=false)
|
||||
private boolean finalSeminarThesisMustBeAPDF = false;
|
||||
|
||||
@Basic(optional=false)
|
||||
private boolean peerRatingsEnabled = true;
|
||||
|
||||
@Basic(optional=false)
|
||||
private boolean peerDisplayNumberOfReviewsPerformed = true;
|
||||
|
||||
public GeneralSystemSettings(){
|
||||
}
|
||||
/**
|
||||
* Not part of the public API, do NOT USE
|
||||
*/
|
||||
public GeneralSystemSettings(Long id){
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
public int getProjectPartnerDaysToLive() {
|
||||
return projectPartnerDaysToLive;
|
||||
@ -50,10 +69,6 @@ public class GeneralSystemSettings extends DomainObject{
|
||||
this.projectPartnerDaysToLive = projectPartnerDaysToLive;
|
||||
}
|
||||
|
||||
@Basic(optional=false)
|
||||
private boolean finalSeminarThesisMustBeAPDF = false;
|
||||
|
||||
|
||||
public int getDaysBeforeFinalSeminarCanRegisterAsActiveParticipant() {
|
||||
return daysBeforeFinalSeminarCanRegisterAsActiveParticipant;
|
||||
}
|
||||
@ -80,26 +95,27 @@ public class GeneralSystemSettings extends DomainObject{
|
||||
this.finalSeminarMaxActiveParticipants = finalSeminarMaxActiveParticipants;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return the finalSeminarThesisMustBeAPDF
|
||||
*/
|
||||
public boolean isFinalSeminarThesisMustBeAPDF() {
|
||||
return finalSeminarThesisMustBeAPDF;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param finalSeminarThesisMustBeAPDF the finalSeminarThesisMustBeAPDF to set
|
||||
*/
|
||||
public void setFinalSeminarThesisMustBeAPDF(boolean finalSeminarThesisMustBeAPDF) {
|
||||
this.finalSeminarThesisMustBeAPDF = finalSeminarThesisMustBeAPDF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
return id;
|
||||
|
||||
public void setPeerRatingsEnabled(boolean peerRatingsEnabled) {
|
||||
this.peerRatingsEnabled = peerRatingsEnabled;
|
||||
}
|
||||
public boolean isPeerRatingsEnabled() {
|
||||
return peerRatingsEnabled;
|
||||
}
|
||||
public void setPeerDisplayNumberOfReviewsPerformed(boolean peerDisplayNumberOfReviewsPerformed) {
|
||||
this.peerDisplayNumberOfReviewsPerformed = peerDisplayNumberOfReviewsPerformed;
|
||||
}
|
||||
public boolean isPeerDisplayNumberOfReviewsPerformed() {
|
||||
return peerDisplayNumberOfReviewsPerformed;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,55 +0,0 @@
|
||||
package se.su.dsv.scipro.peer.pages;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.basepages.MenuPage;
|
||||
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.MailEvent;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.peer.data.dao.interfaces.QuestionDao;
|
||||
import se.su.dsv.scipro.peer.data.dao.interfaces.ReviewTemplateDao;
|
||||
import se.su.dsv.scipro.peer.data.dataobjects.Question;
|
||||
import se.su.dsv.scipro.peer.data.dataobjects.QuestionOption;
|
||||
import se.su.dsv.scipro.peer.data.dataobjects.ReviewTemplate;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@Authorization(authorizedRoles={Roles.SYSADMIN})
|
||||
public class PeerTestPage extends MenuPage {
|
||||
|
||||
@SpringBean
|
||||
private QuestionDao questionDao;
|
||||
@SpringBean
|
||||
private ReviewTemplateDao rtDao;
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
@SpringBean
|
||||
private MailEventDao mailEventDao;
|
||||
|
||||
public PeerTestPage(){
|
||||
ReviewTemplate rt = new ReviewTemplate();
|
||||
rt.setName("Template for something");
|
||||
Question q = new Question();
|
||||
q.setQuestion("Really?");
|
||||
q.setRadioChoiceQuestion(true);
|
||||
q.setReviewTemplate(rt);
|
||||
q.getRadioOptions().add(new QuestionOption(q, "Yes"));
|
||||
q.getRadioOptions().add(new QuestionOption(q, "No"));
|
||||
|
||||
rt.getQuestions().add(q);
|
||||
//rt = rtDao.save(rt);
|
||||
System.out.println(questionDao.findAll());
|
||||
System.out.println(questionDao.findAll().get(0).getRadioOptions());
|
||||
|
||||
User recipient = userDao.getUserByUsername("mpeters");
|
||||
User replyUser = userDao.getUserByUsername("dan-kjel");
|
||||
ArrayList<User> senderstmp = new ArrayList<User>();
|
||||
senderstmp.add(replyUser);
|
||||
MailEvent me = new MailEvent("subject åäö","this is the message åäö",recipient,"SciPro-avsändare åäö","no-reply@thesis.dsv.su.se", senderstmp,null);
|
||||
me = mailEventDao.save(me);
|
||||
}
|
||||
|
||||
}
|
@ -72,10 +72,13 @@
|
||||
</div>
|
||||
<!-- End left column -->
|
||||
<div class="span-6 last">
|
||||
<wicket:enclosure>
|
||||
<div class="rounded-box">
|
||||
<span class="box-title">Most frequent reviewers</span>
|
||||
<div wicket:id="mostFrequentPanel" class="append-bottom"></div>
|
||||
</div>
|
||||
</wicket:enclosure>
|
||||
<wicket:enclosure>
|
||||
<div class="rounded-box">
|
||||
<span class="box-title">Best rated reviewers</span>
|
||||
<div wicket:id="bestRatedPanel" class="append-bottom"></div>
|
||||
@ -83,6 +86,7 @@
|
||||
<div>
|
||||
<i><span class="small right">Last 12 months</span></i>
|
||||
</div>
|
||||
</wicket:enclosure>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
|
@ -11,6 +11,7 @@ import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.PageableListView;
|
||||
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
@ -19,7 +20,10 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.apache.wicket.util.string.Strings;
|
||||
|
||||
import se.su.dsv.scipro.components.ExpandableMultiLineLabel;
|
||||
import se.su.dsv.scipro.components.InvisiblePanel;
|
||||
import se.su.dsv.scipro.components.SciProTooltipBehavior;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClassSettings;
|
||||
@ -46,6 +50,8 @@ public class PeerPortalPanel extends Panel {
|
||||
private PeerPortalController peerPortalController;
|
||||
@SpringBean
|
||||
private PeerReviewDao peerReviewDao;
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao generalSystemSettingsDao;
|
||||
|
||||
|
||||
public PeerPortalPanel(final String id, final ProjectClass projectClass){
|
||||
@ -208,10 +214,20 @@ public class PeerPortalPanel extends Panel {
|
||||
PagingNavigator bottomRequestListNavigator = new RequestListNavigator("bottomNavigator", requestList);
|
||||
add(bottomRequestListNavigator);
|
||||
|
||||
|
||||
|
||||
add(new MostFrequentReviewersPanel("mostFrequentPanel"));
|
||||
add(new BestRatedReviewersPanel("bestRatedPanel"));
|
||||
GeneralSystemSettings gsettings = generalSystemSettingsDao.getGeneralSystemSettingsInstance();
|
||||
final String mostFrequentPanel = "mostFrequentPanel";
|
||||
final String bestRatedPanel = "bestRatedPanel";
|
||||
|
||||
if(gsettings.isPeerDisplayNumberOfReviewsPerformed()){
|
||||
add(new MostFrequentReviewersPanel(mostFrequentPanel));
|
||||
} else {
|
||||
add(new InvisiblePanel(mostFrequentPanel));
|
||||
}
|
||||
if( gsettings.isPeerRatingsEnabled() ){
|
||||
add(new BestRatedReviewersPanel(bestRatedPanel));
|
||||
} else {
|
||||
add(new InvisiblePanel(bestRatedPanel));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,8 +15,10 @@
|
||||
</ul>
|
||||
|
||||
<div>
|
||||
<wicket:enclosure>
|
||||
<strong>Review rating:</strong>
|
||||
<div wicket:id="ratingPanel"></div>
|
||||
</wicket:enclosure>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
|
@ -8,15 +8,13 @@ import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.components.InvisiblePanel;
|
||||
import se.su.dsv.scipro.data.DomainObjectDetachableModel;
|
||||
import se.su.dsv.scipro.data.dataobjects.FileDescription;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
|
||||
import se.su.dsv.scipro.peer.data.dao.interfaces.PeerReviewDao;
|
||||
import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
|
||||
import se.su.dsv.scipro.repository.components.FileDownloadLink;
|
||||
import se.su.dsv.scipro.repository.components.FileOpenLink;
|
||||
|
||||
public class ReviewPageReviewDetailsPanel extends Panel {
|
||||
|
||||
@ -24,6 +22,8 @@ public class ReviewPageReviewDetailsPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private PeerReviewDao peerReviewDao;
|
||||
@SpringBean
|
||||
private GeneralSystemSettingsDao generalSystemSettingsDao;
|
||||
|
||||
public ReviewPageReviewDetailsPanel(final String id, final PeerReview review) {
|
||||
super(id);
|
||||
@ -36,7 +36,13 @@ public class ReviewPageReviewDetailsPanel extends Panel {
|
||||
add(review.getReviewer().getUser().getDisplayComponent("reviewer"));
|
||||
add(review.getProject().getHeadSupervisor().getUser().getDisplayComponent("supervisor"));
|
||||
add(new DateLabel("acceptDate", new Model<Date>(review.getDateCreated()), dpc));
|
||||
add(new PeerReviewRatingPanel("ratingPanel", reviewModel ));
|
||||
|
||||
final String ratingPanel = "ratingPanel";
|
||||
if(generalSystemSettingsDao.getGeneralSystemSettingsInstance().isPeerRatingsEnabled()){
|
||||
add(new PeerReviewRatingPanel(ratingPanel, reviewModel ));
|
||||
} else {
|
||||
add(new InvisiblePanel(ratingPanel));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user