diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java index 6579ff826a7f8539185e8be003a61f1edd17e4d4..424b147f78b972231163e64ca03e1a9e60bdee2c 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java @@ -286,7 +286,7 @@ public class GTACoachController extends GTAAbstractController implements Assessm } submitCorrectionsCtrl = new SubmitDocumentsController(ureq, getWindowControl(), task, documentsDir, documentsContainer, -1, - gtaNode, courseEnv, "coach.document"); + gtaNode, courseEnv, null, "coach.document"); listenTo(submitCorrectionsCtrl); mainVC.put("corrections", submitCorrectionsCtrl.getInitialComponent()); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java index 16e3e975a18ca60bca2e5f9da42a8c8347f9db16..05a638c2a6d6e2bca3c396c366cca717d28e9108 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java @@ -236,7 +236,7 @@ public class GTACoachRevisionAndCorrectionsController extends BasicController { } uploadCorrectionsCtrl = new SubmitDocumentsController(ureq, getWindowControl(), task, documentsDir, documentsContainer, -1, - gtaNode, courseEnv, "coach.document"); + gtaNode, courseEnv, null, "coach.document"); listenTo(uploadCorrectionsCtrl); mainVC.put("uploadCorrections", uploadCorrectionsCtrl.getInitialComponent()); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java index 4b5758fdd0c61d4ef96f13d185d21c16f4a1690c..5e3d1c11ba929be6ca85e05d8f1b3e1d61802911 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java @@ -243,9 +243,11 @@ public class GTAParticipantController extends GTAAbstractController { documentsContainer = gtaManager.getSubmitContainer(courseEnv, gtaNode, getIdentity()); } + DueDate dueDate = getSubmissionDueDate(task); + Date deadline = dueDate == null ? null : dueDate.getDueDate(); int maxDocs = config.getIntegerSafe(GTACourseNode.GTASK_MAX_SUBMITTED_DOCS, -1); submitDocCtrl = new SubmitDocumentsController(ureq, getWindowControl(), task, documentsDir, documentsContainer, maxDocs, - gtaNode, courseEnv, "document"); + gtaNode, courseEnv, deadline, "document"); listenTo(submitDocCtrl); mainVC.put("submitDocs", submitDocCtrl.getInitialComponent()); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java index ca7df5075e42393dd9bc9e02597b3605d7adaf0b..c7365a4205ea263bfdc7e9e0c7af87fd21c08b0d 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java @@ -168,7 +168,7 @@ public class GTAParticipantRevisionAndCorrectionsController extends BasicControl documentsContainer = gtaManager.getRevisedDocumentsContainer(courseEnv, gtaNode, iteration, getIdentity()); } uploadRevisionsCtrl = new SubmitDocumentsController(ureq, getWindowControl(), task, documentsDir, documentsContainer, -1, - gtaNode, courseEnv, "document"); + gtaNode, courseEnv, null, "document"); listenTo(uploadRevisionsCtrl); mainVC.put("uploadRevisions", uploadRevisionsCtrl.getInitialComponent()); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java b/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java index c0914a1cc3812a5557819d3b8935b2ed4c1bd972..8b8181b5294c187f85e7c727db07336a42eb6d5d 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java @@ -26,6 +26,7 @@ import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.List; import org.olat.core.commons.editor.htmleditor.HTMLEditorController; @@ -98,6 +99,7 @@ class SubmitDocumentsController extends FormBasicController { private final SubscriptionContext subscriptionContext; private boolean open = true; + private final Date deadline; @Autowired private UserManager userManager; @@ -108,13 +110,14 @@ class SubmitDocumentsController extends FormBasicController { public SubmitDocumentsController(UserRequest ureq, WindowControl wControl, Task assignedTask, File documentsDir, VFSContainer documentsContainer, int maxDocs, GTACourseNode cNode, - CourseEnvironment courseEnv, String docI18nKey) { + CourseEnvironment courseEnv, Date deadline, String docI18nKey) { super(ureq, wControl, "documents"); this.assignedTask = assignedTask; this.documentsDir = documentsDir; this.documentsContainer = documentsContainer; this.maxDocs = maxDocs; this.docI18nKey = docI18nKey; + this.deadline = deadline; this.config = cNode.getModuleConfiguration(); subscriptionContext = gtaManager.getSubscriptionContext(courseEnv, cNode); initForm(ureq); @@ -230,6 +233,7 @@ class SubmitDocumentsController extends FormBasicController { notificationsManager.markPublisherNews(subscriptionContext, null, false); } cleanUp(); + checkDeadline(ureq); } else if(uploadCtrl == source) { if(event == Event.DONE_EVENT) { String filename = uploadCtrl.getUploadedFilename(); @@ -239,6 +243,7 @@ class SubmitDocumentsController extends FormBasicController { } cmc.deactivate(); cleanUp(); + checkDeadline(ureq); } else if(replaceCtrl == source) { if(event == Event.DONE_EVENT) { String filename = replaceCtrl.getUploadedFilename(); @@ -248,6 +253,7 @@ class SubmitDocumentsController extends FormBasicController { } cmc.deactivate(); cleanUp(); + checkDeadline(ureq); } else if(newDocCtrl == source) { String filename = newDocCtrl.getFilename(); cmc.deactivate(); @@ -257,6 +263,7 @@ class SubmitDocumentsController extends FormBasicController { doCreateDocumentEditor(ureq, filename); updateModel(); } + checkDeadline(ureq); } else if(newDocumentEditorCtrl == source) { if(event == Event.DONE_EVENT) { updateModel(); @@ -265,6 +272,7 @@ class SubmitDocumentsController extends FormBasicController { } cmc.deactivate(); cleanUp(); + checkDeadline(ureq); } else if(editDocumentEditorCtrl == source) { if(event == Event.DONE_EVENT) { updateModel(); @@ -273,6 +281,7 @@ class SubmitDocumentsController extends FormBasicController { } cmc.deactivate(); cleanUp(); + checkDeadline(ureq); } else if(cmc == source) { cleanUp(); } @@ -302,15 +311,15 @@ class SubmitDocumentsController extends FormBasicController { @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(uploadDocButton == source) { - if(checkOpen(ureq)) { + if(checkOpen(ureq) && checkDeadline(ureq)) { doOpenDocumentUpload(ureq); } } else if(createDocButton == source) { - if(checkOpen(ureq)) { + if(checkOpen(ureq) && checkDeadline(ureq)) { doChooseFilename(ureq); } } else if(tableEl == source) { - if(checkOpen(ureq) && event instanceof SelectionEvent) { + if(checkOpen(ureq) && checkDeadline(ureq) && event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; SubmittedSolution row = model.getObject(se.getIndex()); if("delete".equals(se.getCommand())) { @@ -328,6 +337,13 @@ class SubmitDocumentsController extends FormBasicController { super.formInnerEvent(ureq, source, event); } + private boolean checkDeadline(UserRequest ureq) { + if(deadline == null || deadline.after(new Date())) return true; + showWarning("warning.tasks.submitted"); + fireEvent(ureq, Event.DONE_EVENT); + return false; + } + private boolean checkOpen(UserRequest ureq) { if(open) return true; showWarning("warning.tasks.submitted");