diff --git a/src/main/java/org/olat/modules/lecture/ui/LectureSettingsAdminController.java b/src/main/java/org/olat/modules/lecture/ui/LectureSettingsAdminController.java index 9402596c43ae973cc00c1f97b0d7a28ece113f8d..3676a11e45088bcfd97b04b0bed756d04ca3b40f 100644 --- a/src/main/java/org/olat/modules/lecture/ui/LectureSettingsAdminController.java +++ b/src/main/java/org/olat/modules/lecture/ui/LectureSettingsAdminController.java @@ -69,6 +69,8 @@ public class LectureSettingsAdminController extends FormBasicController { public LectureSettingsAdminController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl, "admin_settings"); initForm(ureq); + initializeValues(); + updateUI(); } @Override @@ -82,46 +84,25 @@ public class LectureSettingsAdminController extends FormBasicController { String[] onValues = new String[] { translate("on") }; enableEl = uifactory.addCheckboxesHorizontal("lecture.admin.enabled", courseCont, onKeys, onValues); enableEl.addActionListener(FormEvent.ONCHANGE); - if(lectureModule.isEnabled()) { - enableEl.select(onKeys[0], true); - } - + String[] yesNoValues = new String[]{ translate("yes"), translate("no") }; canOverrideStandardConfigEl = uifactory.addRadiosHorizontal("lecture.can.override.standard.configuration", courseCont, yesNoKeys, yesNoValues); canOverrideStandardConfigEl.addActionListener(FormEvent.ONCHANGE); - if(lectureModule.isCanOverrideStandardConfiguration()) { - canOverrideStandardConfigEl.select(yesNoKeys[0], true); - } else { - canOverrideStandardConfigEl.select(yesNoKeys[1], true); - } - + // roll call enabled rollCallEnableEl = uifactory.addCheckboxesHorizontal("lecture.rollcall.default.enabled", courseCont, onKeys, onValues); rollCallEnableEl.addActionListener(FormEvent.ONCHANGE); - if(lectureModule.isRollCallDefaultEnabled()) { - rollCallEnableEl.select(onKeys[0], true); - } - + // calculate attendance calculateAttendanceRateEnableEl = uifactory.addCheckboxesHorizontal("lecture.calculate.attendance.rate.default.enabled", courseCont, onKeys, onValues); - if(lectureModule.isRollCallCalculateAttendanceRateDefaultEnabled()) { - calculateAttendanceRateEnableEl.select(onKeys[0], true); - } - long attendanceRate = Math.round(lectureModule.getRequiredAttendanceRateDefault() * 100.0d); - String attendanceRateStr = Long.toString(attendanceRate); - attendanceRateEl = uifactory.addTextElement("lecture.attendance.rate.default", "lecture.attendance.rate.default", 2, attendanceRateStr, courseCont); + + attendanceRateEl = uifactory.addTextElement("lecture.attendance.rate.default", "lecture.attendance.rate.default", 2, "", courseCont); attendanceRateEl.setMandatory(true); attendanceRateEl.setDisplaySize(2); // sync calendars syncTeachersCalendarEnableEl = uifactory.addCheckboxesHorizontal("sync.teachers.calendar.enabled", courseCont, onKeys, onValues); - if(lectureModule.isTeacherCalendarSyncEnabledDefault()) { - syncTeachersCalendarEnableEl.select(onKeys[0], true); - } syncCourseCalendarEnableEl = uifactory.addCheckboxesHorizontal("sync.course.calendar.enabled", courseCont, onKeys, onValues); - if(lectureModule.isCourseCalendarSyncEnabledDefault()) { - syncCourseCalendarEnableEl.select(onKeys[0], true); - } //global configuration globalCont = FormLayoutContainer.createDefaultFormLayout("global", getTranslator()); @@ -130,82 +111,141 @@ public class LectureSettingsAdminController extends FormBasicController { formLayout.add("global", globalCont); partiallyDoneEnabledEl = uifactory.addCheckboxesVertical("lecture.status.partially.done.enabled", globalCont, onKeys, onValues, 1); - if(lectureModule.isStatusPartiallyDoneEnabled()) { - partiallyDoneEnabledEl.select(onKeys[0], true); - } String[] statusKeys = new String[]{ LectureBlockStatus.cancelled.name() }; String[] statusValues = new String[]{ translate(LectureBlockStatus.cancelled.name()) }; statusEnabledEl = uifactory.addCheckboxesVertical("lecture.status.enabled", globalCont, statusKeys, statusValues, 1); - if(lectureModule.isStatusCancelledEnabled()) { - statusEnabledEl.select(LectureBlockStatus.cancelled.name(), true); - } // reminder enabled reminderEnableEl = uifactory.addCheckboxesHorizontal("lecture.reminder.enabled", globalCont, onKeys, onValues); reminderEnableEl.addActionListener(FormEvent.ONCHANGE); + + reminderPeriodEl = uifactory.addTextElement("lecture.reminder.period", "lecture.reminder.period", 16, "", globalCont); + reminderPeriodEl.setMandatory(true); + + // auto close period + autoClosePeriodEl = uifactory.addTextElement("lecture.auto.close.period", "lecture.auto.close.period", 16, "", globalCont); + autoClosePeriodEl.setMandatory(true); + + authorizedAbsenceEnableEl = uifactory.addCheckboxesHorizontal("lecture.authorized.absence.enabled", globalCont, onKeys, onValues); + authorizedAbsenceEnableEl.addActionListener(FormEvent.ONCHANGE); + countAuthorizedAbsenceAsAttendantEl = uifactory.addCheckboxesHorizontal("lecture.count.authorized.absence.attendant", globalCont, onKeys, onValues); + absenceDefaultAuthorizedEl = uifactory.addCheckboxesHorizontal("lecture.absence.default.authorized", globalCont, onKeys, onValues); + teacherCanAuthorizeAbsenceEl = uifactory.addCheckboxesHorizontal("lecture.teacher.can.authorize.absence", globalCont, onKeys, onValues); + + // appeal enabled + appealAbsenceEnableEl = uifactory.addCheckboxesHorizontal("lecture.appeal.absence.enabled", globalCont, onKeys, onValues); + appealAbsenceEnableEl.addActionListener(FormEvent.ONCHANGE); + appealPeriodEl = uifactory.addTextElement("lecture.appeal.absence.period", "lecture.appeal.absence.period", 16, "", globalCont); + appealPeriodEl.setMandatory(true); + + //buttons + FormLayoutContainer buttonsWrapperCont = FormLayoutContainer.createDefaultFormLayout("global", getTranslator()); + buttonsWrapperCont.setRootForm(mainForm); + formLayout.add("buttonsWrapper", buttonsWrapperCont); + FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); + buttonsWrapperCont.add(buttonsCont); + uifactory.addFormSubmitButton("save", buttonsCont); + } + + private void initializeValues() { + if(lectureModule.isEnabled()) { + enableEl.select(onKeys[0], true); + } + + if(lectureModule.isCanOverrideStandardConfiguration()) { + canOverrideStandardConfigEl.select(yesNoKeys[0], true); + } else { + canOverrideStandardConfigEl.select(yesNoKeys[1], true); + } + + if(lectureModule.isRollCallDefaultEnabled()) { + rollCallEnableEl.select(onKeys[0], true); + } else { + rollCallEnableEl.uncheckAll(); + } + + if(lectureModule.isRollCallCalculateAttendanceRateDefaultEnabled()) { + calculateAttendanceRateEnableEl.select(onKeys[0], true); + } else { + calculateAttendanceRateEnableEl.uncheckAll(); + } + + long attendanceRate = Math.round(lectureModule.getRequiredAttendanceRateDefault() * 100.0d); + attendanceRateEl.setValue(Long.toString(attendanceRate)); + + if(lectureModule.isTeacherCalendarSyncEnabledDefault()) { + syncTeachersCalendarEnableEl.select(onKeys[0], true); + } else { + syncCourseCalendarEnableEl.uncheckAll(); + } + if(lectureModule.isCourseCalendarSyncEnabledDefault()) { + syncCourseCalendarEnableEl.select(onKeys[0], true); + } else { + syncCourseCalendarEnableEl.uncheckAll(); + } + + if(lectureModule.isStatusPartiallyDoneEnabled()) { + partiallyDoneEnabledEl.select(onKeys[0], true); + } else { + partiallyDoneEnabledEl.uncheckAll(); + } + + if(lectureModule.isStatusCancelledEnabled()) { + statusEnabledEl.select(LectureBlockStatus.cancelled.name(), true); + } else { + statusEnabledEl.uncheckAll(); + } + if(lectureModule.isRollCallReminderEnabled()) { reminderEnableEl.select(onKeys[0], true); + } else { + reminderEnableEl.uncheckAll(); } + String reminderPeriod = ""; if(lectureModule.getRollCallReminderPeriod() > 0) { reminderPeriod = Integer.toString(lectureModule.getRollCallReminderPeriod()); } - reminderPeriodEl = uifactory.addTextElement("lecture.reminder.period", "lecture.reminder.period", 16, reminderPeriod, globalCont); - reminderPeriodEl.setMandatory(true); - - // auto close period + reminderPeriodEl.setValue(reminderPeriod); + String autoClosePeriod = ""; if(lectureModule.getRollCallAutoClosePeriod() > 0) { autoClosePeriod = Integer.toString(lectureModule.getRollCallAutoClosePeriod()); } - autoClosePeriodEl = uifactory.addTextElement("lecture.auto.close.period", "lecture.auto.close.period", 16, autoClosePeriod, globalCont); - autoClosePeriodEl.setMandatory(true); - - authorizedAbsenceEnableEl = uifactory.addCheckboxesHorizontal("lecture.authorized.absence.enabled", globalCont, onKeys, onValues); - authorizedAbsenceEnableEl.addActionListener(FormEvent.ONCHANGE); + autoClosePeriodEl.setValue(autoClosePeriod); + if(lectureModule.isAuthorizedAbsenceEnabled()) { authorizedAbsenceEnableEl.select(onKeys[0], true); + } else { + authorizedAbsenceEnableEl.uncheckAll(); } - countAuthorizedAbsenceAsAttendantEl = uifactory.addCheckboxesHorizontal("lecture.count.authorized.absence.attendant", globalCont, onKeys, onValues); if(lectureModule.isCountAuthorizedAbsenceAsAttendant()) { countAuthorizedAbsenceAsAttendantEl.select(onKeys[0], true); + } else { + countAuthorizedAbsenceAsAttendantEl.uncheckAll(); } - absenceDefaultAuthorizedEl = uifactory.addCheckboxesHorizontal("lecture.absence.default.authorized", globalCont, onKeys, onValues); if(lectureModule.isAbsenceDefaultAuthorized()) { absenceDefaultAuthorizedEl.select(onKeys[0], true); + } else { + absenceDefaultAuthorizedEl.uncheckAll(); } - teacherCanAuthorizeAbsenceEl = uifactory.addCheckboxesHorizontal("lecture.teacher.can.authorize.absence", globalCont, onKeys, onValues); if(lectureModule.isTeacherCanAuthorizedAbsence()) { teacherCanAuthorizeAbsenceEl.select(onKeys[0], true); + } else { + teacherCanAuthorizeAbsenceEl.uncheckAll(); } - - // appeal enabled - appealAbsenceEnableEl = uifactory.addCheckboxesHorizontal("lecture.appeal.absence.enabled", globalCont, onKeys, onValues); - appealAbsenceEnableEl.addActionListener(FormEvent.ONCHANGE); if(lectureModule.isAbsenceAppealEnabled()) { appealAbsenceEnableEl.select(onKeys[0], true); + } else { + appealAbsenceEnableEl.uncheckAll(); } + String appealPeriod = ""; if(lectureModule.getAbsenceAppealPeriod() > 0) { appealPeriod = Integer.toString(lectureModule.getAbsenceAppealPeriod()); } - appealPeriodEl = uifactory.addTextElement("lecture.appeal.absence.period", "lecture.appeal.absence.period", 16, appealPeriod, globalCont); - appealPeriodEl.setMandatory(true); - - //buttons - FormLayoutContainer buttonsWrapperCont = FormLayoutContainer.createDefaultFormLayout("global", getTranslator()); - buttonsWrapperCont.setRootForm(mainForm); - formLayout.add("buttonsWrapper", buttonsWrapperCont); - FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); - buttonsWrapperCont.add(buttonsCont); - uifactory.addFormSubmitButton("save", buttonsCont); - updateUI(); - } - - @Override - protected void doDispose() { - // + appealPeriodEl.setValue(appealPeriod); } private void updateUI() { @@ -214,7 +254,6 @@ public class LectureSettingsAdminController extends FormBasicController { authorizedAbsenceEnableEl.setVisible(enabled); attendanceRateEl.setVisible(enabled); appealAbsenceEnableEl.setVisible(enabled); - authorizedAbsenceEnableEl.setVisible(enabled); reminderEnableEl.setVisible(enabled); syncTeachersCalendarEnableEl.setVisible(enabled); syncCourseCalendarEnableEl.setVisible(enabled); @@ -234,6 +273,12 @@ public class LectureSettingsAdminController extends FormBasicController { teacherCanAuthorizeAbsenceEl.setVisible(authorizedAbsenceEnableEl.isVisible() && authorizedAbsenceEnableEl.isAtLeastSelected(1)); } + @Override + protected void doDispose() { + // + } + + @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; @@ -296,6 +341,9 @@ public class LectureSettingsAdminController extends FormBasicController { @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(enableEl == source) { + if(enableEl.isAtLeastSelected(1)) { + initializeValues(); + } updateUI(); } else if(appealAbsenceEnableEl == source || reminderEnableEl == source || authorizedAbsenceEnableEl == source) { updateUI(); @@ -322,6 +370,8 @@ public class LectureSettingsAdminController extends FormBasicController { userToolsModule.setAvailableUserTools(aTools.toString()); } + lectureModule.setRollCallDefaultEnabled(rollCallEnableEl.isAtLeastSelected(1)); + int autoClosePeriod = Integer.parseInt(autoClosePeriodEl.getValue()); lectureModule.setRollCallAutoClosePeriod(autoClosePeriod); diff --git a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties index ae9363dc00a933b93fa82f1b432cc873394ebc59..4812b450d08a0b3d5f77cdaae305ce95e1f31d1c 100644 --- a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties @@ -114,7 +114,7 @@ lecture.teacher.reminder.body=Reminder lectures block "{0}" in course {3} lecture.teacher.reminder.subject=Reminder lectures block "{0}" lecture.title=Title lectures.admin.reasons=Reasons -lectures.admin.settings=Seetings lectures and absence management +lectures.admin.settings=Settings lectures and absence management lectures.print.title=Lectures and absences of {0} lectures.repository.print.title=Lectures and absences of {1} in course {0} lectures.table.closed=Closed lectures blocks