diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index 72c1be1244adb179ae557de63489e736fc692928..0d1b77e758a275fc322a28e5875bfb357b927f73 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -854,27 +854,29 @@ public class IdentityListCourseNodeController extends FormBasicController } else if(courseNode instanceof AssessableCourseNode) { ICourse course = CourseFactory.loadCourse(courseEntry); AssessableCourseNode assessableCourseNode = (AssessableCourseNode)courseNode; - for(AssessedIdentityElementRow row:rows) { Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentityKey()); - - Roles roles = securityManager.getRoles(assessedIdentity); - - IdentityEnvironment identityEnv = new IdentityEnvironment(assessedIdentity, roles); - UserCourseEnvironment assessedUserCourseEnv = new UserCourseEnvironmentImpl(identityEnv, course.getCourseEnvironment(), coachCourseEnv.isCourseReadOnly()); - assessedUserCourseEnv.getScoreAccounting().evaluateAll(); - - ScoreEvaluation scoreEval = assessableCourseNode.getUserScoreEvaluation(assessedUserCourseEnv); - ScoreEvaluation doneEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), - AssessmentEntryStatus.done, null, scoreEval.getFullyAssessed(), - scoreEval.getCurrentRunCompletion(), scoreEval.getCurrentRunStatus(), scoreEval.getAssessmentID()); - assessableCourseNode.updateUserScoreEvaluation(doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + doSetDone(assessedIdentity, assessableCourseNode, course); } - loadModel(ureq); } } + protected void doSetDone(Identity assessedIdentity, AssessableCourseNode assessableCourseNode, ICourse course) { + Roles roles = securityManager.getRoles(assessedIdentity); + + IdentityEnvironment identityEnv = new IdentityEnvironment(assessedIdentity, roles); + UserCourseEnvironment assessedUserCourseEnv = new UserCourseEnvironmentImpl(identityEnv, course.getCourseEnvironment(), coachCourseEnv.isCourseReadOnly()); + assessedUserCourseEnv.getScoreAccounting().evaluateAll(); + + ScoreEvaluation scoreEval = assessableCourseNode.getUserScoreEvaluation(assessedUserCourseEnv); + ScoreEvaluation doneEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), + AssessmentEntryStatus.done, null, scoreEval.getFullyAssessed(), + scoreEval.getCurrentRunCompletion(), scoreEval.getCurrentRunStatus(), scoreEval.getAssessmentID()); + assessableCourseNode.updateUserScoreEvaluation(doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + + } + private void doUpdateCompletion(Double completion, AssessmentRunStatus status, Long assessedIdentityKey) { List<AssessedIdentityElementRow> rows = usersTableModel.getObjects(); for(AssessedIdentityElementRow row:rows) { diff --git a/src/main/java/org/olat/course/assessment/ui/tool/tools/AbstractToolsController.java b/src/main/java/org/olat/course/assessment/ui/tool/tools/AbstractToolsController.java index 5415d1822873d0a56e23edfcf147873c5f95c725..5a23115242cfe6548d5c8da4b396984a53e68a31 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/tools/AbstractToolsController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/tools/AbstractToolsController.java @@ -45,6 +45,7 @@ import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.modules.assessment.Role; import org.olat.modules.assessment.model.AssessmentEntryStatus; import org.olat.modules.assessment.model.AssessmentRunStatus; +import org.olat.repository.RepositoryEntry; /** * @@ -71,6 +72,7 @@ public abstract class AbstractToolsController extends BasicController { private final boolean courseReadonly; protected final Identity assessedIdentity; + private final RepositoryEntry courseEntry; private final AssessmentEvaluation scoreEval; protected final AssessableCourseNode courseNode; protected final UserCourseEnvironment assessedUserCourseEnv; @@ -88,6 +90,7 @@ public abstract class AbstractToolsController extends BasicController { this.courseNode = courseNode; this.assessedIdentity = assessedIdentity; courseReadonly = coachCourseEnv.isCourseReadOnly(); + courseEntry = coachCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); assessedUserCourseEnv = AssessmentHelper .createAndInitUserCourseEnvironment(assessedIdentity, coachCourseEnv.getCourseEnvironment()); @@ -98,6 +101,10 @@ public abstract class AbstractToolsController extends BasicController { return courseReadonly; } + public RepositoryEntry getCourseRepositoryEntry() { + return courseEntry; + } + protected final void initTools() { initDetails(); initStatus(); @@ -219,26 +226,34 @@ public abstract class AbstractToolsController extends BasicController { private void doReopen(UserRequest ureq) { if (scoreEval != null) { - ScoreEvaluation reopenedEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), - AssessmentEntryStatus.inReview, scoreEval.getUserVisible(), scoreEval.getFullyAssessed(), - scoreEval.getCurrentRunCompletion(), AssessmentRunStatus.running, - scoreEval.getAssessmentID()); - courseNode.updateUserScoreEvaluation(reopenedEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + reopenEvaluation(); } fireEvent(ureq, Event.CHANGED_EVENT); } + protected void reopenEvaluation() { + ScoreEvaluation reopenedEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), + AssessmentEntryStatus.inReview, scoreEval.getUserVisible(), scoreEval.getFullyAssessed(), + scoreEval.getCurrentRunCompletion(), AssessmentRunStatus.running, + scoreEval.getAssessmentID()); + courseNode.updateUserScoreEvaluation(reopenedEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + } + private void doSetDone(UserRequest ureq) { if (scoreEval != null) { - ScoreEvaluation doneEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), - AssessmentEntryStatus.done, scoreEval.getUserVisible(), scoreEval.getFullyAssessed(), - scoreEval.getCurrentRunCompletion(), scoreEval.getCurrentRunStatus(), - scoreEval.getAssessmentID()); - courseNode.updateUserScoreEvaluation(doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + doneEvalution(); } fireEvent(ureq, Event.CHANGED_EVENT); } + protected void doneEvalution() { + ScoreEvaluation doneEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), + AssessmentEntryStatus.done, scoreEval.getUserVisible(), scoreEval.getFullyAssessed(), + scoreEval.getCurrentRunCompletion(), scoreEval.getCurrentRunStatus(), + scoreEval.getAssessmentID()); + courseNode.updateUserScoreEvaluation(doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + } + private void doSetVisibility(UserRequest ureq, boolean visible) { if (scoreEval != null) { ScoreEvaluation doneEval = new ScoreEvaluation(scoreEval.getScore(), scoreEval.getPassed(), diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeController.java index 35ca370aca0246bc338de5c253223354211bd04c..90925fe07e02b066f84a9c9315eb0f837907bb46 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeController.java @@ -36,7 +36,9 @@ 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.generic.closablewrapper.CloseableModalController; +import org.olat.core.id.Identity; import org.olat.core.util.StringHelper; +import org.olat.course.ICourse; import org.olat.course.archiver.ArchiveResource; import org.olat.course.assessment.bulk.BulkAssessmentToolController; import org.olat.course.assessment.ui.tool.IdentityListCourseNodeController; @@ -48,10 +50,12 @@ import org.olat.course.nodes.gta.GTAManager; import org.olat.course.nodes.gta.GTAType; import org.olat.course.nodes.gta.Task; import org.olat.course.nodes.gta.TaskList; +import org.olat.course.nodes.gta.TaskProcess; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.group.BusinessGroup; import org.olat.modules.ModuleConfiguration; import org.olat.modules.assessment.AssessmentToolOptions; +import org.olat.modules.assessment.Role; import org.olat.modules.assessment.ui.AssessedIdentityElementRow; import org.olat.modules.assessment.ui.AssessmentToolContainer; import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback; @@ -69,7 +73,8 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class GTAIdentityListCourseNodeController extends IdentityListCourseNodeController { - private FormLink downloadButton, groupAssessmentButton; + private FormLink downloadButton; + private FormLink groupAssessmentButton; private GroupAssessmentController assessmentCtrl; @@ -198,6 +203,23 @@ public class GTAIdentityListCourseNodeController extends IdentityListCourseNodeC super.cleanUp(); } + @Override + protected Controller createCalloutController(UserRequest ureq, Identity assessedIdentity) { + return new GTAIdentityListCourseNodeToolsController(ureq, getWindowControl(), + (AssessableCourseNode)courseNode, assessedIdentity, coachCourseEnv); + } + + @Override + protected void doSetDone(Identity assessedIdentity, AssessableCourseNode assessableCourseNode, ICourse course) { + super.doSetDone(assessedIdentity, assessableCourseNode, course); + + TaskList taskList = gtaManager.getTaskList(getCourseRepositoryEntry(), (GTACourseNode)assessableCourseNode); + Task task = gtaManager.getTask(assessedIdentity, taskList); + if(task != null) { + gtaManager.updateTask(task, TaskProcess.graded, (GTACourseNode)assessableCourseNode, Role.coach); + } + } + private void doDownload(UserRequest ureq) { AssessmentToolOptions asOptions = getOptions(); OLATResource courseOres = getCourseRepositoryEntry().getOlatResource(); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeToolsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeToolsController.java new file mode 100644 index 0000000000000000000000000000000000000000..5a3c6abf42f2dadf9a36e2984422cf623407991f --- /dev/null +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAIdentityListCourseNodeToolsController.java @@ -0,0 +1,77 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.gta.ui; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.id.Identity; +import org.olat.course.assessment.ui.tool.tools.AbstractToolsController; +import org.olat.course.nodes.AssessableCourseNode; +import org.olat.course.nodes.GTACourseNode; +import org.olat.course.nodes.gta.GTAManager; +import org.olat.course.nodes.gta.Task; +import org.olat.course.nodes.gta.TaskList; +import org.olat.course.nodes.gta.TaskProcess; +import org.olat.course.run.userview.UserCourseEnvironment; +import org.olat.modules.assessment.Role; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 26 Oct 2018<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class GTAIdentityListCourseNodeToolsController extends AbstractToolsController { + + @Autowired + private GTAManager gtaManager; + + public GTAIdentityListCourseNodeToolsController(UserRequest ureq, WindowControl wControl, + AssessableCourseNode courseNode, Identity assessedIdentity, UserCourseEnvironment coachCourseEnv) { + super(ureq, wControl, courseNode, assessedIdentity, coachCourseEnv); + + initTools(); + } + + + + @Override + protected void reopenEvaluation() { + super.reopenEvaluation(); + + TaskList taskList = gtaManager.getTaskList(getCourseRepositoryEntry(), (GTACourseNode)courseNode); + Task task = gtaManager.getTask(assessedIdentity, taskList); + if(task != null && task.getTaskStatus() == TaskProcess.graded) { + gtaManager.updateTask(task, TaskProcess.grading, (GTACourseNode)courseNode, Role.coach); + } + } + + @Override + protected void doneEvalution() { + super.doneEvalution(); + + TaskList taskList = gtaManager.getTaskList(getCourseRepositoryEntry(), (GTACourseNode)courseNode); + Task task = gtaManager.getTask(assessedIdentity, taskList); + if(task != null) { + gtaManager.updateTask(task, TaskProcess.graded, (GTACourseNode)courseNode, Role.coach); + } + } +} diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_fr.properties index 7c0ed4dd7eb60aad752dc63d09d9853239cfdfb8..312687216a1fdfc38fa990296e1f573b8d1d8a07 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_fr.properties @@ -183,7 +183,7 @@ process.assignment=Affectation process.assignment.explanation=L'utilisateur est en train de choisir un devoir. process.correction=Corrections process.correction.explanation=Le coach corrige un document d\u00E9j\u00E0 r\u00E9vis\u00E9 -process.graded=Evaluation +process.graded=Evalu\u00E9 process.grading=Evaluation process.grading.explanation=Le coach \u00E9value un devoir. process.no=Affectation