Skip to content
Snippets Groups Projects
Commit 8f2b53b5 authored by srosse's avatar srosse
Browse files

OO-2329: reviewers must evaluate the user and only after they can see the...

OO-2329: reviewers must evaluate the user and only after they can see the comparison and the auto evaluation (if allowed)
parent 200ecd24
No related branches found
No related tags found
No related merge requests found
......@@ -41,6 +41,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.id.Identity;
import org.olat.core.util.StringHelper;
......@@ -327,13 +328,13 @@ public class EvaluationFormController extends FormBasicController {
@Override
protected void formOK(UserRequest ureq) {
doSaveAsDone();
doSaveAsDone(ureq);
}
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if(saveAsDoneButton == source) {
doSaveAsDone();
doSaveAsDone(ureq);
} else if(source instanceof SingleSelection) {
SingleSelection radioEl = (SingleSelection)source;
Object uobject = radioEl.getUserObject();
......@@ -378,7 +379,7 @@ public class EvaluationFormController extends FormBasicController {
}
}
private void doSaveAsDone() {
private void doSaveAsDone(UserRequest ureq) {
@SuppressWarnings("unchecked")
List<EvaluationFormElementWrapper> elementWrappers = (List<EvaluationFormElementWrapper>)flc.contextGet("elements");
for(EvaluationFormElementWrapper elementWrapper:elementWrappers) {
......@@ -396,6 +397,9 @@ public class EvaluationFormController extends FormBasicController {
loadResponses();
updateElements();
saveAsDoneButton.setVisible(false);
dbInstance.commit();
fireEvent(ureq, Event.DONE_EVENT);
}
@Override
......
......@@ -100,7 +100,8 @@ public class EvaluationFormHandler implements PageElementHandler {
} else if(hasRole(PortfolioRoles.coach, ureq.getIdentity(), accessRights)) {
Identity owner = getOwner(accessRights);
return new EvaluationFormController(ureq, wControl, owner, body, re, true, false).getInitialComponent();
} else if(hasRole(PortfolioRoles.reviewer, ureq.getIdentity(), accessRights)) {
} else if(hasRole(PortfolioRoles.reviewer, ureq.getIdentity(), accessRights)
|| hasRole(PortfolioRoles.invitee, ureq.getIdentity(), accessRights)) {
if(assignment.isReviewerSeeAutoEvaluation()) {
Identity owner = getOwner(accessRights);
return new EvaluationFormController(ureq, wControl, owner, body, re, true, false).getInitialComponent();
......@@ -112,21 +113,21 @@ public class EvaluationFormHandler implements PageElementHandler {
Identity owner = getOwner(accessRights);
List<Identity> coachesAndReviewers = getCoachesAndReviewers(accessRights);
if(coachesAndReviewers.size() > 0) {
return new MultiEvaluationFormController(ureq, wControl, owner, coachesAndReviewers, body, re, readOnly, anonym).getInitialComponent();
return new MultiEvaluationFormController(ureq, wControl, owner, coachesAndReviewers, body, re, false, readOnly, anonym).getInitialComponent();
}
return new EvaluationFormController(ureq, wControl, ureq.getIdentity(), body, re, readOnly, false).getInitialComponent();
} else if(hasRole(PortfolioRoles.coach, ureq.getIdentity(), accessRights)) {
Identity owner = getOwner(accessRights);
List<Identity> coachesAndReviewers = getCoachesAndReviewers(accessRights);
boolean readOnly = (pageStatus == PageStatus.draft) || (pageStatus == PageStatus.closed) || (pageStatus == PageStatus.deleted);
return new MultiEvaluationFormController(ureq, wControl, owner, coachesAndReviewers, body, re, readOnly, anonym).getInitialComponent();
} else if(hasRole(PortfolioRoles.reviewer, ureq.getIdentity(), accessRights)) {
boolean seeAutoEvaluation = assignment.isReviewerSeeAutoEvaluation();
return new MultiEvaluationFormController(ureq, wControl, owner, coachesAndReviewers, body, re, false, readOnly, anonym).getInitialComponent();
} else if(hasRole(PortfolioRoles.reviewer, ureq.getIdentity(), accessRights)
|| hasRole(PortfolioRoles.invitee, ureq.getIdentity(), accessRights)) {
boolean readOnly = (pageStatus == PageStatus.draft) || (pageStatus == PageStatus.closed) || (pageStatus == PageStatus.deleted);
if(seeAutoEvaluation) {
if(assignment.isReviewerSeeAutoEvaluation()) {
Identity owner = getOwner(accessRights);
List<Identity> reviewers = Collections.singletonList(ureq.getIdentity());
return new MultiEvaluationFormController(ureq, wControl, owner, reviewers, body, re, readOnly, anonym).getInitialComponent();
return new MultiEvaluationFormController(ureq, wControl, owner, reviewers, body, re, true, readOnly, anonym).getInitialComponent();
} else {
return new EvaluationFormController(ureq, wControl, ureq.getIdentity(), body, re, readOnly, !readOnly).getInitialComponent();
}
......@@ -153,7 +154,7 @@ public class EvaluationFormHandler implements PageElementHandler {
private List<Identity> getCoachesAndReviewers(List<AccessRights> accessRights) {
List<Identity> identities = new ArrayList<>(accessRights.size());
for(AccessRights accessRight:accessRights) {
if(PortfolioRoles.coach == accessRight.getRole() || PortfolioRoles.reviewer == accessRight.getRole()) {
if(PortfolioRoles.coach == accessRight.getRole() || PortfolioRoles.reviewer == accessRight.getRole() || PortfolioRoles.invitee == accessRight.getRole()) {
identities.add(accessRight.getIdentity());
}
}
......
......@@ -30,10 +30,14 @@ import org.olat.core.gui.components.segmentedview.SegmentViewComponent;
import org.olat.core.gui.components.segmentedview.SegmentViewEvent;
import org.olat.core.gui.components.segmentedview.SegmentViewFactory;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.core.id.Identity;
import org.olat.modules.forms.EvaluationFormManager;
import org.olat.modules.forms.EvaluationFormSession;
import org.olat.modules.forms.EvaluationFormSessionStatus;
import org.olat.modules.forms.ui.CompareEvaluationsFormController;
import org.olat.modules.forms.ui.EvaluationFormController;
import org.olat.modules.forms.ui.model.Evaluator;
......@@ -54,6 +58,7 @@ public class MultiEvaluationFormController extends BasicController {
private final PageBody anchor;
private final Identity owner;
private final boolean readOnly;
private final boolean doneFirst;
private final RepositoryEntry formEntry;
private Link ownerLink;
......@@ -64,34 +69,47 @@ public class MultiEvaluationFormController extends BasicController {
private List<Evaluator> evaluators = new ArrayList<>();
private List<Link> otherEvaluatorLinks = new ArrayList<>();
private EvaluationFormController currentEvalutionFormCtrl;
private CompareEvaluationsFormController compareEvaluationCtrl;
@Autowired
private UserManager userManager;
@Autowired
private EvaluationFormManager evaluationFormManager;
public MultiEvaluationFormController(UserRequest ureq, WindowControl wControl,
Identity owner, List<Identity> otherEvaluators, PageBody anchor,
RepositoryEntry formEntry, boolean readOnly, boolean anonym) {
Identity owner, List<Identity> otherEvaluators, PageBody anchor, RepositoryEntry formEntry,
boolean doneFirst, boolean readOnly, boolean anonym) {
super(ureq, wControl);
this.owner = owner;
this.anchor = anchor;
this.readOnly = readOnly;
this.doneFirst = doneFirst;
this.formEntry = formEntry;
mainVC = createVelocityContainer("multi_evaluation_form");
segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this);
boolean viewOthers;
if(doneFirst) {
EvaluationFormSession session = evaluationFormManager.getSessionForPortfolioEvaluation(getIdentity(), anchor);
viewOthers = session == null ? false : session.getEvaluationFormSessionStatus() == EvaluationFormSessionStatus.done;
} else {
viewOthers = true;
}
if(owner != null) {
String ownerFullname = userManager.getUserDisplayName(owner);
evaluators.add(new Evaluator(owner, ownerFullname));
String id = "eva-" + (count++);
ownerLink = LinkFactory.createCustomLink(id, id, ownerFullname, Link.BUTTON | Link.NONTRANSLATED, mainVC, this);
ownerLink.setUserObject(owner);
boolean selected = owner.equals(ureq.getIdentity());
segmentView.addSegment(ownerLink, selected);
if(selected) {
boolean me = owner.equals(ureq.getIdentity());
segmentView.addSegment(ownerLink, me);
if(me) {
doOpenEvalutationForm(ureq, owner);
}
evaluators.add(new Evaluator(owner, ownerFullname));
}
if(otherEvaluators != null && otherEvaluators.size() > 0) {
......@@ -105,6 +123,7 @@ public class MultiEvaluationFormController extends BasicController {
} else {
evaluatorFullname = userManager.getUserDisplayName(evaluator);
}
evaluators.add(new Evaluator(evaluator, evaluatorFullname));
String id = "eva-" + (count++);
Link evaluatorLink = LinkFactory.createCustomLink(id, id, evaluatorFullname, Link.BUTTON | Link.NONTRANSLATED, mainVC, this);
......@@ -114,7 +133,6 @@ public class MultiEvaluationFormController extends BasicController {
if(me) {
doOpenEvalutationForm(ureq, evaluator);
}
evaluators.add(new Evaluator(evaluator, evaluatorFullname));
}
}
......@@ -124,6 +142,7 @@ public class MultiEvaluationFormController extends BasicController {
segmentView.addSegment(compareLink, false);
}
segmentView.setVisible(viewOthers);
mainVC.put("segments", segmentView);
putInitialPanel(mainVC);
}
......@@ -133,6 +152,22 @@ public class MultiEvaluationFormController extends BasicController {
//
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if(currentEvalutionFormCtrl == source) {
if(event == Event.DONE_EVENT) {
if(doneFirst) {
// check if it's really done
EvaluationFormSession session = evaluationFormManager.getSessionForPortfolioEvaluation(getIdentity(), anchor);
if(session != null && session.getEvaluationFormSessionStatus() == EvaluationFormSessionStatus.done) {
segmentView.setVisible(true);
}
}
}
}
super.event(ureq, source, event);
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if(source == segmentView) {
......@@ -158,9 +193,9 @@ public class MultiEvaluationFormController extends BasicController {
private void doOpenEvalutationForm(UserRequest ureq, Identity evaluator) {
boolean ro = readOnly || !evaluator.equals(getIdentity());
boolean doneButton = !ro && evaluator.equals(getIdentity()) && (owner == null || !owner.equals(evaluator));
EvaluationFormController evalutionFormCtrl = new EvaluationFormController(ureq, getWindowControl(), evaluator, anchor, formEntry, ro, doneButton);
listenTo(evalutionFormCtrl);
mainVC.put("segmentCmp", evalutionFormCtrl.getInitialComponent());
currentEvalutionFormCtrl = new EvaluationFormController(ureq, getWindowControl(), evaluator, anchor, formEntry, ro, doneButton);
listenTo(currentEvalutionFormCtrl);
mainVC.put("segmentCmp", currentEvalutionFormCtrl.getInitialComponent());
}
private void doOpenOverview(UserRequest ureq) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment