diff --git a/src/main/java/org/olat/core/gui/exception/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/gui/exception/_i18n/LocalStrings_de.properties index 0d14ca56a596b18c6d0679074b634941121d2591..a1b2be8ee3f6f795d272146ec9fdf51384723d64 100644 --- a/src/main/java/org/olat/core/gui/exception/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/gui/exception/_i18n/LocalStrings_de.properties @@ -4,7 +4,7 @@ error.addinfo=Zus\u00E4tzliche Informationen\: error.back=Zur\u00FCck error.businesspath=Business Pfad\: error.businesspath.unkown=Unbekannt -error.businesspath.previous=Vorherige Business Pfad\: +error.businesspath.previous=Vorheriger Business Pfad\: error.databaseexception=Unerwarteter Datenbankfehler. error.errnum=Fehlernummer\: error.header=Ups, da ging was schief! @@ -13,8 +13,8 @@ error.login=Login error.message1=Es ist ein Fehler aufgetreten, welcher vom System nicht automatisch behoben werden konnte. Wenn Sie den Support error.message2=kontaktieren m\u00F6chten, notieren Sie sich bitte folgende zus\u00E4tzliche Informationen. error.report=Fehlerinformation -error.report.tell=Bitte teilen Sie uns mit, welche Aktion zu diesem Fehler gef\u00FChrt hat. Im untenstehenden Formular k\u00f6nnen Sie beschreiben was Sie gemacht haben bevor der Fehler aufgetreten ist oder welche Aktion zu dem Fehler gef\u00fchrt hat. Sie helfen uns damit den Fehler zu finden und zu beheben, besten Dank\!<p /> Antwort erhalten Sie auf Ihre Mailadresse, die Sie in OLAT in Ihrem Profil angegeben haben. -error.securityexception=Unerwarteter Sicherheitsfehler\: Sie haben nicht gen\u00FCgend Berechtigung f\u00FCr diese Aktion. +error.report.tell=Bitte teilen Sie uns mit, welche Aktion zu diesem Fehler gef\u00FChrt hat. Im untenstehenden Formular k\u00F6nnen Sie beschreiben, was Sie gemacht haben, bevor der Fehler aufgetreten ist oder welche Aktion zu dem Fehler gef\u00FChrt hat. Sie helfen uns damit, den Fehler zu finden und zu beheben, besten Dank\!<p /> Antwort erhalten Sie auf Ihre Mailadresse, die Sie in OpenOlat in Ihrem Profil angegeben haben. +error.securityexception=Unerwarteter Sicherheitsfehler\: Sie haben nicht gen\u00FCgend Berechtigungen f\u00FCr diese Aktion. error.staleobjectexception=Das von Ihnen gew\u00E4hlte Objekt wurde in der Zwischenzeit von einem anderen Benutzer gel\u00F6scht oder von Ihnen ver\u00E4ndert. error.technical=Technische Informationen anzeigen error.time=Datum und Zeit\: diff --git a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java index 2674553d36ae2960f4ef5daafa24b36b5ade827c..e24ed82a68fd41df6c4202d49fd2f101a6782e3a 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java +++ b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java @@ -92,21 +92,30 @@ public class AssessmentModeEditController extends FormBasicController { private static final String[] onValues = new String[]{ "" }; private static final String[] startModeKeys = new String[] { "automatic", "manual" }; - private SingleSelection targetEl, startModeEl; - private IntegerElement leadTimeEl, followupTimeEl; - private DateChooser beginEl, endEl; + private SingleSelection targetEl; + private SingleSelection startModeEl; + private IntegerElement leadTimeEl; + private IntegerElement followupTimeEl; + private DateChooser beginEl; + private DateChooser endEl; private StaticTextElement startElementEl; private FormLink chooseGroupsButton; private FormLink chooseAreasButton; private FormLink chooseStartElementButton; private FormLink chooseElementsButton; private FormLink chooseCurriculumElementsButton; - private TextElement nameEl, ipListEl, safeExamBrowserKeyEl; - private RichTextElement descriptionEl, safeExamBrowserHintEl; - private FormLayoutContainer chooseGroupsCont, chooseElementsCont; - private MultipleSelectionElement ipsEl, safeExamBrowserEl, forCoachEl, courseElementsRestrictionEl; + private TextElement nameEl; + private TextElement ipListEl; + private TextElement safeExamBrowserKeyEl; + private RichTextElement descriptionEl; + private RichTextElement safeExamBrowserHintEl; + private FormLayoutContainer chooseGroupsCont; + private FormLayoutContainer chooseElementsCont; + private MultipleSelectionElement ipsEl; private MultipleSelectionElement ipsMultiselect; - private HashMap<String, String[]> ipOptionsMap; + private MultipleSelectionElement forCoachEl; + private MultipleSelectionElement safeExamBrowserEl; + private MultipleSelectionElement courseElementsRestrictionEl; private CloseableModalController cmc; private DialogBoxController confirmCtrl; @@ -124,6 +133,7 @@ public class AssessmentModeEditController extends FormBasicController { private List<String> curriculumElementNames; private List<String> elementKeys; private List<String> elementNames; + private HashMap<String, String[]> ipOptionsMap; private String startElementKey; private AssessmentMode assessmentMode; @@ -248,13 +258,13 @@ public class AssessmentModeEditController extends FormBasicController { KeyValues targetKeyValues = new KeyValues(); boolean curriculumEnabled = curriculumModule.isEnabled(); - String allLabel = curriculumEnabled ? translate("target.courseGroupsAndCurriculums") : translate("target.courseAndGroups"); - targetKeyValues.add(KeyValues.entry(AssessmentMode.Target.courseAndGroups.name(), allLabel)); targetKeyValues.add(KeyValues.entry(AssessmentMode.Target.course.name(), translate("target.course"))); targetKeyValues.add(KeyValues.entry(AssessmentMode.Target.groups.name(), translate("target.groups"))); if(curriculumEnabled) { targetKeyValues.add(KeyValues.entry(AssessmentMode.Target.curriculumEls.name(), translate("target.curriculumElements"))); } + String allLabel = curriculumEnabled ? translate("target.courseGroupsAndCurriculums") : translate("target.courseAndGroups"); + targetKeyValues.add(KeyValues.entry(AssessmentMode.Target.courseAndGroups.name(), allLabel)); targetEl = uifactory.addRadiosVertical("audience", "mode.target", formLayout, targetKeyValues.keys(), targetKeyValues.values()); targetEl.setElementCssClass("o_sel_assessment_mode_audience"); targetEl.setEnabled(status != Status.end); @@ -518,20 +528,17 @@ public class AssessmentModeEditController extends FormBasicController { endEl.setErrorKey("form.legende.mandatory", null); allOk &= false; } - if(beginEl.getDate() != null && endEl.getDate() != null) { - if(beginEl.getDate().compareTo(endEl.getDate()) >= 0) { - beginEl.setErrorKey("error.begin.after.end", null); - endEl.setErrorKey("error.begin.after.end", null); - allOk &= false; - } + if(beginEl.getDate() != null && endEl.getDate() != null + && beginEl.getDate().compareTo(endEl.getDate()) >= 0) { + beginEl.setErrorKey("error.begin.after.end", null); + endEl.setErrorKey("error.begin.after.end", null); + allOk &= false; } courseElementsRestrictionEl.clearError(); - if(courseElementsRestrictionEl.isAtLeastSelected(1)) { - if(elementKeys.isEmpty()) { - courseElementsRestrictionEl.setErrorKey("error.course.element.mandatory", null); - allOk &= false; - } + if(courseElementsRestrictionEl.isAtLeastSelected(1) && elementKeys.isEmpty()) { + courseElementsRestrictionEl.setErrorKey("error.course.element.mandatory", null); + allOk &= false; } targetEl.clearError(); diff --git a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties index 1bc25d0e78ea59761503435609eefccb9bbc4270..6fcd10e47c33db83078334f8fa4727574b519328 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties @@ -112,8 +112,8 @@ table.header.externalId=$org.olat.repository\:table.header.externalid table.header.externalRef=$org.olat.repository\:table.header.externalref table.header.status=Status table.header.target=F\u00FCr -target.courseAndGroups=Teilnehmer aus Kurs, Gruppen -target.courseGroupsAndCurriculums=Teilnehmer aus Kurs, Gruppen und Curriculum +target.courseAndGroups=Teilnehmer aus Kurs und ausgew\u00E4hlte Gruppen +target.courseGroupsAndCurriculums=Teilnehmer aus Kurs und ausgew\u00E4hlte Gruppen oder Curriculum target.curriculumElements=Nur Curriculumteilnehmer target.groups=Nur Gruppenteilnehmer target.course=Nur Kursteilnehmer diff --git a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_en.properties index 17800cf23d1f458da24d34212b5c425142038a7a..7fa271a41573b4c22f4e80a8bb10d9ac4294a8a1 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_en.properties @@ -113,8 +113,8 @@ table.header.name=Exam table.header.status=Status table.header.target=For target.course=Course participants only -target.courseAndGroups=Participants of courses, groups -target.courseGroupsAndCurriculums=Participants from course, groups and curriculums +target.courseAndGroups=Participants of courses and selected groups +target.courseGroupsAndCurriculums=Participants from course and selected groups or curriculums target.curriculumElements=Curriculum participants only target.groups=Group participants only time.formatted={0}m diff --git a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_fr.properties index 6ef50609b9ebeb5f1d48820f7215c18d62df079e..a6562bfd0e8cdc1c9fb4c997636b17475230bc91 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_fr.properties @@ -111,8 +111,8 @@ table.header.name=Evaluation table.header.status=Statut table.header.target=Pour target.course=Seulement les participants du cours -target.courseAndGroups=Participants du cours et des groupes -target.courseGroupsAndCurriculums=Participants du cours et des groupes et curriculums +target.courseAndGroups=Participants du cours et des groupes s\u00E9lectionn\u00E9s +target.courseGroupsAndCurriculums=Participants du cours et des groupes ou curriculums s\u00E9lectionn\u00E9s target.curriculumElements=Participants de curriculum seulement target.groups=Participants des groupes uniquement time.formatted={0}m diff --git a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_pt_BR.properties index affcbe29ea1557fc0130d0e7a66b2e571262329d..54e25ea3a4e2556e3b404139e0826f6e723facfb 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_pt_BR.properties @@ -111,8 +111,6 @@ table.header.name=Teste table.header.status=Status table.header.target=Para target.course=Apenas participantes do curso -target.courseAndGroups=Participantes do curso e grupos -target.courseGroupsAndCurriculums=Participantes do curso, grupos e curr\u00EDculos target.curriculumElements=Somente participantes do curr\u00EDculo target.groups=Apenas participantes do grupo time.formatted={0}m diff --git a/src/main/java/org/olat/modules/forms/manager/EvaluationFormSessionDAO.java b/src/main/java/org/olat/modules/forms/manager/EvaluationFormSessionDAO.java index af9307de70c86880fb8eccc533440a21c514dc01..68c000b9c50ecd3bc201758966a7bd027bd20a19 100644 --- a/src/main/java/org/olat/modules/forms/manager/EvaluationFormSessionDAO.java +++ b/src/main/java/org/olat/modules/forms/manager/EvaluationFormSessionDAO.java @@ -224,7 +224,7 @@ class EvaluationFormSessionDAO { sessionImpl.setFirstSubmissionDate(sessionImpl.getSubmissionDate()); } } - dbInstance.getCurrentEntityManager().merge(sessionImpl); + session = dbInstance.getCurrentEntityManager().merge(sessionImpl); } return session; } diff --git a/src/test/java/org/olat/selenium/page/LoginPage.java b/src/test/java/org/olat/selenium/page/LoginPage.java index 16dae3ef3a043ea83d47ecfb4c8ca14fc78f244e..b712b464565f6f0f17c5f2ffa98fef9a1798ecff 100644 --- a/src/test/java/org/olat/selenium/page/LoginPage.java +++ b/src/test/java/org/olat/selenium/page/LoginPage.java @@ -173,7 +173,11 @@ public class LoginPage { } //wait until the content appears - OOGraphene.waitElement(landingPointBy, 30, browser); + try { + OOGraphene.waitElement(landingPointBy, 30, browser); + } catch(Exception e) { + OOGraphene.takeScreenshot("Login", browser); + } return this; } diff --git a/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java b/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java index 6b8efc89bfcb549d2786bcf6ed47d86540741aa1..af6f2d3d6464a9edcbee89630f4625f829bb50a5 100644 --- a/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java +++ b/src/test/java/org/olat/selenium/page/course/MyCoursesPage.java @@ -52,16 +52,14 @@ public class MyCoursesPage { public MyCoursesPage openSearch() { By searchBy = By.className("o_sel_mycourses_search"); - WebElement searchLink = browser.findElement(searchBy); - searchLink.click(); + browser.findElement(searchBy).click(); OOGraphene.waitBusy(browser); return this; } public MyCoursesPage openCatalog() { By catalogBy = By.className("o_sel_mycourses_catlog"); - WebElement catalogLink = browser.findElement(catalogBy); - catalogLink.click(); + browser.findElement(catalogBy).click(); OOGraphene.waitBusy(browser); return this; } @@ -95,9 +93,8 @@ public class MyCoursesPage { */ public MyCoursesPage select(String title) { By titleBy = By.xpath("//h4[contains(@class,'o_title')]/a[span[text()[contains(.,'" + title + "')]]]"); - List<WebElement> titleLinks = browser.findElements(titleBy); - Assert.assertEquals(1, titleLinks.size()); - titleLinks.get(0).click(); + OOGraphene.waitElement(titleBy, browser); + browser.findElement(titleBy).click(); OOGraphene.waitBusy(browser); return this; } @@ -128,17 +125,14 @@ public class MyCoursesPage { public MyCoursesPage selectCatalogEntry(String shortTitle) { By titleBy = By.xpath("//div[contains(@class,'o_sublevel')]/div[contains(@class,'o_meta')]/h4/a[span[contains(.,'" + shortTitle + "')]]"); OOGraphene.waitElement(titleBy, browser); - List<WebElement> titleLinks = browser.findElements(titleBy); - Assert.assertEquals(1, titleLinks.size()); - titleLinks.get(0).click(); + browser.findElement(titleBy).click(); OOGraphene.waitBusy(browser); return this; } public void start() { By startBy = By.className("o_start"); - WebElement startLink = browser.findElement(startBy); - startLink.click(); + browser.findElement(startBy).click(); OOGraphene.waitBusy(browser); }