Skip to content
Snippets Groups Projects
Commit 065f4adf authored by srosse's avatar srosse
Browse files

OO-2011: student must confirm submission of a revision

parent 991c0c60
No related branches found
No related tags found
No related merge requests found
......@@ -33,7 +33,11 @@ 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.gui.control.generic.modal.DialogBoxController;
import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
import org.olat.core.id.Identity;
import org.olat.core.util.StringHelper;
import org.olat.core.util.io.SystemFilenameFilter;
import org.olat.core.util.vfs.VFSContainer;
import org.olat.course.CourseFactory;
import org.olat.course.ICourse;
......@@ -61,9 +65,10 @@ public class GTAParticipantRevisionAndCorrectionsController extends BasicControl
private Link submitRevisionButton;
private final VelocityContainer mainVC;
private DirectoryController correctionsCtrl, revisionsCtrl;
private DialogBoxController confirmSubmitDialog;
private SubmitDocumentsController uploadRevisionsCtrl;
private DirectoryController correctionsCtrl, revisionsCtrl;
private Task assignedTask;
private final boolean businessGroupTask;
......@@ -210,16 +215,50 @@ public class GTAParticipantRevisionAndCorrectionsController extends BasicControl
Task aTask = uploadRevisionsCtrl.getAssignedTask();
gtaManager.log("Revision", (SubmitEvent)event, aTask, getIdentity(), getIdentity(), assessedGroup, courseEnv, gtaNode);
}
} else if(confirmSubmitDialog == source) {
if(DialogBoxUIFactory.isOkEvent(event) || DialogBoxUIFactory.isYesEvent(event)) {
doSubmitRevisions();
fireEvent(ureq, Event.DONE_EVENT);
}
cleanUp();
}
super.event(ureq, source, event);
}
private void cleanUp() {
removeAsListenerAndDispose(confirmSubmitDialog);
confirmSubmitDialog = null;
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if(submitRevisionButton == source) {
doSubmitRevisions();
fireEvent(ureq, Event.DONE_EVENT);
doConfirmSubmit(ureq);
}
}
private void doConfirmSubmit(UserRequest ureq) {
int iteration = assignedTask.getRevisionLoop();
String title = translate("run.submit.revision.button");
String text;
if(GTAType.group.name().equals(gtaNode.getModuleConfiguration().getStringValue(GTACourseNode.GTASK_TYPE))) {
File documentsDir = gtaManager.getRevisedDocumentsDirectory(courseEnv, gtaNode, iteration, assessedGroup);
File[] submittedDocuments = documentsDir.listFiles(new SystemFilenameFilter(true, false));
if(submittedDocuments.length == 0) {
text = "<div class='o_warning'>" + translate("run.submit.revision.confirm.warning.group", new String[]{ StringHelper.escapeHtml(assessedGroup.getName()) }) + "</div>";
} else {
text = translate("run.submit.revision.confirm.group", new String[]{ StringHelper.escapeHtml(assessedGroup.getName()) });
}
} else {
File documentsDir = gtaManager.getRevisedDocumentsDirectory(courseEnv, gtaNode, iteration, getIdentity());
File[] submittedDocuments = documentsDir.listFiles(new SystemFilenameFilter(true, false));
if(submittedDocuments.length == 0) {
text = "<div class='o_warning'>" + translate("run.submit.revision.confirm.warning") + "</div>";
} else {
text = translate("run.submit.revision.confirm");
}
}
confirmSubmitDialog = activateOkCancelDialog(ureq, title, text, confirmSubmitDialog);
}
private void doSubmitRevisions() {
......
......@@ -187,6 +187,10 @@ run.submit.individual.description.all=Geben Sie Ihre L\u00F6sung ab indem Sie en
run.submit.individual.description.editor=Schreiben Sie Ihre L\u00F6sung direkt im Editor.
run.submit.individual.description.upload=Laden Sie Ihre L\u00F6sung als fertiges Dokument hoch.
run.submit.revision.button=\u00DCberarbeitung abgeben
run.submit.revision.confirm=Bitte best\u00E4tigen Sie die Abgabe der \u00DCberarbeitung. Die Abgabe der \u00DCberarbeitung ist endg\u00FCltig und kann nicht zur\u00FCckgezogen werden.
run.submit.revision.confirm.group=$\:run.submit.revision.confirm<br/>Dies ist eine Gruppenaufgabe\! Die hier getroffene Auswahl ist f\u00FCr alle Mitglieder der Gruppe "{0}" g\u00FCltig\!
run.submit.revision.confirm.warning=Sie haben noch kein Dokument hochgeladen bzw. erstellt. M\u00F6chten Sie trotzdem die \u00FCberarbeitende Aufgabe abgeben? Die \u00DCberarbeitung ist endg\u00FCltig und kann nicht widerrufen werden. <br/><br/> Sie k\u00F6nnen danach keine Dokumente mehr hochladen.<br/>
run.submit.revision.confirm.warning.group=$\:run.submit.revision.confirm.warning<br/>Dies ist eine Gruppenaufgabe\! Die hier getroffene Auswahl ist f\u00FCr alle Mitglieder der Gruppe "{0}" g\u00FCltig\!
run.submitted.description=Die folgenden L\u00F6sungen wurden von Ihnen abgegeben\:
run.submitted.nofiles=Die Abgabe erfolgte ohne Dokumente.
sample.solution=Musterl\u00F6sungen
......
......@@ -187,6 +187,10 @@ run.submit.individual.description.all=Submit your solution by either uploading a
run.submit.individual.description.editor=Submit your solution by using the editor to write your solution right here.
run.submit.individual.description.upload=Submit your solution by uploading a document you created on your computer.
run.submit.revision.button=Submit revision
run.submit.revision.confirm=Please confirm the submission for this revision. The submission of the revision is final and can not be undone.
run.submit.revision.confirm.group=$\:run.submit.revision.confirm<br/>This is a group task\! The submitted document is valid for all members of the group "{0}"\!
run.submit.revision.confirm.warning=You have not yet uploaded / created a document. Do you still wish to submit? The submission of the revised task is final and can not be undone. <br/> The drop box is closed. You will not be able to upload any documents.
run.submit.revision.confirm.warning.group=$\:run.submit.revision.confirm.warning<br/>This is a group task\! The submitted document is valid for all members of the group "{0}"\!
run.submitted.description=The following solutions have been submitted by you\:
run.submitted.nofiles=The submission was done without documents
sample.solution=Sample solution
......
......@@ -180,12 +180,16 @@ run.submit.button=Transmettre le devoir
run.submit.confirm=Le d\u00E9p\u00F4t de votre devoir est d\u00E9finitif.
run.submit.confirm.group=$\:run.submit.confirm<br/>C'est un devoir de groupe\! La s\u00E9lection effectu\u00E9e ici est valable pour tous les participants du groupe "{0}"\!
run.submit.confirm.warning=Vous n'avez pas t\u00E9l\u00E9charger ou cr\u00E9er de document. Souhaitez toujours soumettre votre devoir? La remise du devoir est d\u00E9finitive et ne peut \u00EAtre r\u00E9voqu\u00E9e. Vous ne pourrez plus t\u00E9l\u00E9charger de documents ensuite.
run.submit.confirm.warning.group=$\:run.submit.confirm.warning<br/>C'ist un de vor de groupe\! Les actions effectu\u00E9es ici le sont au nom de tous les membres du groupe "{0}"\!
run.submit.confirm.warning.group=$\:run.submit.confirm.warning<br/>C'est un devoir de groupe\! Les actions effectu\u00E9es ici le sont au nom de tous les membres du groupe "{0}"\!
run.submit.due.date=D\u00E9lai de d\u00E9p\u00F4t\: {0}
run.submit.individual.description.all=Entrez votre solution soit en t\u00E9l\u00E9chargeant un document ou en utilisant l'\u00E9diteur int\u00E9gr\u00E9 mis \u00E0 votre disposition.
run.submit.individual.description.editor=Ecrivez directement votre solution dans l'\u00E9diteur.
run.submit.individual.description.upload=T\u00E9l\u00E9chargez un document termin\u00E9 en tant que solution.
run.submit.revision.button=Soumettre les remaniements
run.submit.revision.confirm=Le d\u00E9p\u00F4t de votre ou vos documents remani\u00E9s est d\u00E9finitif.
run.submit.revision.confirm.group=$\:run.submit.revision.confirm<br/>C'est un devoir de groupe\! La s\u00E9lection effectu\u00E9e ici est valable pour tous les participants du groupe "{0}"\!
run.submit.revision.confirm.warning=Vous n'avez pas t\u00E9l\u00E9charger ou cr\u00E9er de document. Souhaitez toujours soumettre votre devoir remani\u00E9? La remise du devoir est d\u00E9finitive et ne peut \u00EAtre r\u00E9voqu\u00E9e. Vous ne pourrez plus t\u00E9l\u00E9charger de documents ensuite.
run.submit.revision.confirm.warning.group=$\:run.submit.revision.confirm.warning<br/>C'est un devoir de groupe\! Les actions effectu\u00E9es ici le sont au nom de tous les membres du groupe "{0}"\!
run.submitted.description=Vous avez rendus les solutions suivantes\:
run.submitted.nofiles=Le devoir a \u00E9t\u00E9 soumis sans le moindre document.
sample.solution=Solutions
......
......@@ -128,10 +128,7 @@ public class GroupTaskPage {
OOGraphene.waitBusy(browser);
//confirm
By confirmButtonBy = By.cssSelector("div.modal-dialog div.modal-footer a");
List<WebElement> buttonsEl = browser.findElements(confirmButtonBy);
buttonsEl.get(0).click();
OOGraphene.waitBusy(browser);
confirmDialog();
OOGraphene.waitAndCloseBlueMessageWindow(browser);
return this;
}
......@@ -140,6 +137,17 @@ public class GroupTaskPage {
By submitBy = By.cssSelector("#o_step_revision_content .o_sel_course_gta_submit_revisions");
browser.findElement(submitBy).click();
OOGraphene.waitBusy(browser);
return confirmDialog();
}
/**
* Confirm a yes / no dialog box
*/
private GroupTaskPage confirmDialog() {
By confirmButtonBy = By.cssSelector("div.modal-dialog div.modal-footer a");
OOGraphene.waitElement(confirmButtonBy, 5, browser);
browser.findElement(confirmButtonBy).click();
OOGraphene.waitBusy(browser);
return this;
}
......
......@@ -44,7 +44,8 @@ import org.openqa.selenium.WebElement;
*/
public class OOGraphene {
private static final long poolingDuration = 25;
private static final long poolingDuration = 25;//ms
private static final long waitTinyDuration = 15;//seconds
private static final By closeBlueBoxButtonBy = By.cssSelector("div.o_alert_info div.o_sel_info_message a.o_alert_close");
private static final By closeModalDialogButtonBy = By.cssSelector("div.modal-dialog div.modal-header button.close");
......@@ -84,7 +85,7 @@ public class OOGraphene {
// top.tinymce.get('o_fi1000000416').setContent('<p>Hacked</p>');
// <div id="o_fi1000000416_diw" class="o_richtext_mce"> <iframe id="o_fi1000000416_ifr">
public static final void tinymce(String content, WebDriver browser) {
Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS)
Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS)
.pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new TinyMCELoadedPredicate());
((JavascriptExecutor)browser).executeScript("top.tinymce.activeEditor.setContent('" + content + "')");
}
......
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