diff --git a/src/main/java/org/olat/group/ui/main/EditMembershipController.java b/src/main/java/org/olat/group/ui/main/EditMembershipController.java index 1bfbb839cbbfa86fe086faabde2619989f667ea1..dde0edb1896ac0c5231e485c6c46bba21ee3aa5b 100644 --- a/src/main/java/org/olat/group/ui/main/EditMembershipController.java +++ b/src/main/java/org/olat/group/ui/main/EditMembershipController.java @@ -34,6 +34,7 @@ import org.olat.core.gui.components.EscapeMode; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; +import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement.Layout; import org.olat.core.gui.components.form.flexible.impl.Form; @@ -50,6 +51,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer; +import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -96,6 +98,9 @@ public class EditMembershipController extends FormBasicController { private FlexiTableElement groupTableEl; private FlexiTableElement curriculumTableEl; private MultipleSelectionElement repoRightsEl; + private FormLink selectAllCurriculumOwnersButton; + private FormLink selectAllCurriculumCoachesButton; + private FormLink selectAllCurriculumParticipantsButton; private EditGroupMembershipTableDataModel groupTableDataModel; private EditCurriculumMembershipTableDataModel curriculumTableDataModel; @@ -389,6 +394,16 @@ public class EditMembershipController extends FormBasicController { curriculumTableEl = uifactory.addTableElement(getWindowControl(), "curriculumList", curriculumTableDataModel, getTranslator(), formLayout); curriculumTableEl.setCustomizeColumns(false); curriculumTableEl.setNumOfRowsEnabled(false); + + selectAllCurriculumOwnersButton = uifactory.addFormLink("select.all.curriculum.owners", formLayout, Link.BUTTON_SMALL); + selectAllCurriculumOwnersButton.setIconLeftCSS("o_icon o_icon_check_on"); + selectAllCurriculumOwnersButton.setUserObject(Boolean.TRUE); + selectAllCurriculumCoachesButton = uifactory.addFormLink("select.all.curriculum.coaches", formLayout, Link.BUTTON_SMALL); + selectAllCurriculumCoachesButton.setIconLeftCSS("o_icon o_icon_check_on"); + selectAllCurriculumCoachesButton.setUserObject(Boolean.TRUE); + selectAllCurriculumParticipantsButton = uifactory.addFormLink("select.all.curriculum.participants", formLayout, Link.BUTTON_SMALL); + selectAllCurriculumParticipantsButton.setIconLeftCSS("o_icon o_icon_check_on"); + selectAllCurriculumParticipantsButton.setUserObject(Boolean.TRUE); if(withButtons) { FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator()); @@ -446,9 +461,40 @@ public class EditMembershipController extends FormBasicController { } } } + } else if(selectAllCurriculumOwnersButton == source) { + toogleCurriculumMembership(selectAllCurriculumOwnersButton, GroupRoles.owner, + "select.all.curriculum.owners", "deselect.all.curriculum.owners"); + } else if(selectAllCurriculumCoachesButton == source) { + toogleCurriculumMembership(selectAllCurriculumCoachesButton, GroupRoles.coach, + "select.all.curriculum.coaches", "deselect.all.curriculum.coaches"); + } else if(selectAllCurriculumParticipantsButton == source) { + toogleCurriculumMembership(selectAllCurriculumParticipantsButton, GroupRoles.participant, + "select.all.curriculum.participants", "deselect.all.curriculum.participants"); } super.formInnerEvent(ureq, source, event); } + + private void toogleCurriculumMembership(FormLink link, GroupRoles role, String selectI18nKey, String deselectI18nKey) { + Boolean enabled = (Boolean)link.getUserObject(); + + List<MemberCurriculumOption> memberOptions = curriculumTableDataModel.getObjects(); + for(MemberCurriculumOption memberOption:memberOptions) { + MultipleSelectionElement element = memberOption.getSelection(role); + if(element.isEnabled()) { + element.select(keys[0], enabled.booleanValue()); + } + } + + boolean newValue = !enabled.booleanValue(); + link.setUserObject(Boolean.valueOf(newValue)); + if(newValue) { + link.setIconLeftCSS("o_icon o_icon_check_on"); + link.setI18nKey(selectI18nKey); + } else { + link.setIconLeftCSS("o_icon o_icon_check_off"); + link.setI18nKey(deselectI18nKey); + } + } public void collectRepoChanges(MemberPermissionChangeEvent e) { if(repoEntry == null) return; @@ -541,7 +587,16 @@ public class EditMembershipController extends FormBasicController { public void setParticipant(MultipleSelectionElement participant) { this.participant = participant; - } + } + + public MultipleSelectionElement getSelection(GroupRoles role) { + switch(role) { + case owner: return owner; + case coach: return coach; + case participant: return participant; + default: return null; + } + } } private static class MemberGroupOption { diff --git a/src/main/java/org/olat/group/ui/main/_content/edit_member.html b/src/main/java/org/olat/group/ui/main/_content/edit_member.html index b3473d896e136aec2b886a15fce5fc98c85bb8a9..e9d33bf8c0cb784fc0a2e4a02c6f59a664719eb8 100644 --- a/src/main/java/org/olat/group/ui/main/_content/edit_member.html +++ b/src/main/java/org/olat/group/ui/main/_content/edit_member.html @@ -14,6 +14,11 @@ #if($r.visible("curriculumList")) <fieldset> <legend>$r.translate("edit.member.curriculums")</legend> + <div class="o_button_group o_button_group_right"><div class="btn-group"> + $r.render("select.all.curriculum.owners") + $r.render("select.all.curriculum.coaches") + $r.render("select.all.curriculum.participants") + </div></div> $r.render("curriculumList") </fieldset> #end diff --git a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties index 32185fdb51d77c6c9a4de425ac14d60d4a2765cf..a13191dd59a3fdc4cb338384cf6c6b8583347c09 100644 --- a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_de.properties @@ -4,6 +4,9 @@ create.group=Gruppe erstellen create.group.description=Erzeugen Sie eine neue Gruppe mit der unten stehenden Schaltfl\u00E4che. Als Betreuer dieser Gruppe k\u00F6nnen Sie danach die Gruppenwerkzeuge freischalten, Benutzer hinzuf\u00FCgen oder die Gruppe ver\u00F6ffentlichen. confirm.leave=Entfernen copy.group=Kopieren +deselect.all.curriculum.owners=In alle Elemente als Kursbesitzer austragen +deselect.all.curriculum.coaches=In alle Elemente als Betreuer austragen +deselect.all.curriculum.participants=In alle Elemente als Teilnehmer austragen deup.members=Mitglieder bereinigen dedup.members.typ=Rolle dedup.members.coaches=Betreuer @@ -87,6 +90,9 @@ cif.coursetitle=Kurstitel cif.error.allempty=Bitte f\u00FCllen Sie mindestens ein Formularfeld aus. search.limit.type=Typ group.access.success=Zugriff auf Gruppe ist erfolgreich. +select.all.curriculum.owners=In alle Elemente als Kursbesitzer eintragen +select.all.curriculum.coaches=In alle Elemente als Betreuer eintragen +select.all.curriculum.participants=In alle Elemente als Teilnehmer eintragen table.header.ac=Aktion table.header.ac.method=Zugang table.header.bgname=Name diff --git a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_en.properties index 6ee58f535df11c6683d299c2be69d213dc45fe41..173605186396c7d68d218666590fd0e23a589969 100644 --- a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_en.properties @@ -22,6 +22,9 @@ course.numOfVisits=Visits create.form.title=Create a new group create.group=Create group create.group.description=Create a new group with the button below. As coach of this group you may then unlock the group tools, add users or publish the group. +deselect.all.curriculum.owners=Remove as course owner in all elements +deselect.all.curriculum.coaches=Remove as coach in all elements +deselect.all.curriculum.participants=Remove as participant in all elements dedup.members.coaches=Coach dedup.members.info1=Do you really want to purge all members? dedup.members.info2={0} members have been found that have both a course and a group memberships of this course. The group memberships will not be modified, access to the course remains unchanged. @@ -129,6 +132,9 @@ search.resources=Linked with courses search.roles=Role search.waiting=Waiting list search.yes=yes +select.all.curriculum.owners=Add as course owner in all elements +select.all.curriculum.coaches=Add as coach in all elements +select.all.curriculum.participants=Add as participant in all elements show=More information table.access=Book table.access.waitingList=Add to waiting list diff --git a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_fr.properties index fdabadfb106ca5beeae3b4468aa666d1dd84a36b..a991449280d1621349c0bbc2700180c3140e9be0 100644 --- a/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/group/ui/main/_i18n/LocalStrings_fr.properties @@ -29,6 +29,9 @@ dedup.members.info3={0} utilisateurs ont trouv\u00E9 qui sont \u00E0 la fois mem dedup.members.info4=S\u00E9lectionnez si la correction s'applique aux coaches et / ou aux participants. dedup.members.particpants=Participant dedup.members.typ=R\u00F4les +deselect.all.curriculum.owners=Enlever partout le r\u00F4le propriƩtaire de cours +deselect.all.curriculum.coaches=Enlever partout le r\u00F4le coach +deselect.all.curriculum.participants=Enlever partout le r\u00F4le participant deup.members=Corriger les membres dialog.modal.bg.asktoleave.title=Demande pour quitter le groupe dialog.modal.bg.delete.text=Voulez-vous vraiment effacer le groupe de travail "{0}"?<p> @@ -129,6 +132,9 @@ search.resources=Utilis\u00E9 dans un cours search.roles=R\u00F4le search.waiting=Liste d'attente search.yes=Oui +select.all.curriculum.owners=Ajouter partout comme propriƩtaire de cours +select.all.curriculum.coaches=Ajouter partout comme coach +select.all.curriculum.participants=Ajouter partout comme participant show=Plus d'informations table.access=Souscrire table.access.waitingList=Souscrire \u00E0 la liste d'attente