From 9b7570fecff000b1739d0b0662fa8d20a096da44 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 7 Sep 2012 18:08:09 +0200 Subject: [PATCH] OO-291: wizard to import users in a course --- .../member/AbstractMemberListController.java | 16 +++- ...ler.java => EditMembershipController.java} | 39 +++++++--- .../member/MembersOverviewController.java | 50 ++++++++++++ .../course/member/_content/edit_member.html | 5 +- .../member/_content/members_overview.html | 8 ++ .../member/_i18n/LocalStrings_de.properties | 3 + .../ImportMemberByUsernamesController.java | 69 +++++++++++++++++ .../wizard/ImportMemberMailController.java | 66 ++++++++++++++++ ...ortMemberOverviewIdentitiesController.java | 77 +++++++++++++++++++ ...mportMemberPermissionChoiceController.java | 68 ++++++++++++++++ .../ImportMember_1_ChooseMemberStep.java | 53 +++++++++++++ ...mportMember_2_ConfirmMemberChoiceStep.java | 53 +++++++++++++ .../ImportMember_3_ChoosePermissionStep.java | 58 ++++++++++++++ .../wizard/ImportMember_4_MailStep.java | 52 +++++++++++++ .../wizard/_content/confirm_identities.html | 1 + .../wizard/_content/edit_permissions.html | 0 .../wizard/_i18n/LocalStrings_de.properties | 7 ++ 17 files changed, 611 insertions(+), 14 deletions(-) rename src/main/java/org/olat/course/member/{EditMemberController.java => EditMembershipController.java} (89%) create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMemberMailController.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMemberOverviewIdentitiesController.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMemberPermissionChoiceController.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMember_1_ChooseMemberStep.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMember_2_ConfirmMemberChoiceStep.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMember_3_ChoosePermissionStep.java create mode 100644 src/main/java/org/olat/course/member/wizard/ImportMember_4_MailStep.java create mode 100644 src/main/java/org/olat/course/member/wizard/_content/confirm_identities.html create mode 100644 src/main/java/org/olat/course/member/wizard/_content/edit_permissions.html create mode 100644 src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties diff --git a/src/main/java/org/olat/course/member/AbstractMemberListController.java b/src/main/java/org/olat/course/member/AbstractMemberListController.java index 3e3fb77952d..e9d6db42e92 100644 --- a/src/main/java/org/olat/course/member/AbstractMemberListController.java +++ b/src/main/java/org/olat/course/member/AbstractMemberListController.java @@ -72,7 +72,8 @@ import org.olat.user.UserManager; public abstract class AbstractMemberListController extends BasicController { public static final String TABLE_ACTION_EDIT = "tbl_edit"; - public static final String TABLE_ACTION_REMOVE = "tbl_REMOVE"; + public static final String TABLE_ACTION_MAIL = "tbl_mail"; + public static final String TABLE_ACTION_REMOVE = "tbl_remove"; protected final MemberListTableModel memberListModel; protected final TableController memberListCtr; @@ -80,7 +81,7 @@ public abstract class AbstractMemberListController extends BasicController { private DialogBoxController leaveDialogBox; protected CloseableModalController cmc; - private EditMemberController editMemberCtrl; + private EditMembershipController editMemberCtrl; private final UserManager userManager; private final RepositoryEntry repoEntry; @@ -109,8 +110,13 @@ public abstract class AbstractMemberListController extends BasicController { int numOfColumns = initColumns(); memberListModel = new MemberListTableModel(numOfColumns); memberListCtr.setTableDataModel(memberListModel); + memberListCtr.setMultiSelect(true); + memberListCtr.addMultiSelectAction("table.header.edit", TABLE_ACTION_EDIT); + memberListCtr.addMultiSelectAction("table.header.mail", TABLE_ACTION_MAIL); + memberListCtr.addMultiSelectAction("table.header.remove", TABLE_ACTION_REMOVE); mainVC.put("memberList", memberListCtr.getInitialComponent()); + putInitialPanel(mainVC); } @@ -156,6 +162,10 @@ public abstract class AbstractMemberListController extends BasicController { List<MemberView> selectedItems = memberListModel.getObjects(te.getSelection()); if(TABLE_ACTION_REMOVE.equals(te.getAction())) { confirmDelete(ureq, selectedItems); + } else if(TABLE_ACTION_EDIT.equals(te.getAction())) { + //TODO + }if(TABLE_ACTION_MAIL.equals(te.getAction())) { + //TODO } } } else if (source == leaveDialogBox) { @@ -208,7 +218,7 @@ public abstract class AbstractMemberListController extends BasicController { protected void openEdit(UserRequest ureq, MemberView member) { Identity identity = securityManager.loadIdentityByKey(member.getIdentityKey()); - editMemberCtrl = new EditMemberController(ureq, getWindowControl(), identity, repoEntry); + editMemberCtrl = new EditMembershipController(ureq, getWindowControl(), identity, repoEntry); listenTo(editMemberCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), editMemberCtrl.getInitialComponent(), true, translate("edit.member")); diff --git a/src/main/java/org/olat/course/member/EditMemberController.java b/src/main/java/org/olat/course/member/EditMembershipController.java similarity index 89% rename from src/main/java/org/olat/course/member/EditMemberController.java rename to src/main/java/org/olat/course/member/EditMembershipController.java index fc35be8ecd8..e24a300ca52 100644 --- a/src/main/java/org/olat/course/member/EditMemberController.java +++ b/src/main/java/org/olat/course/member/EditMembershipController.java @@ -30,6 +30,7 @@ import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.impl.Form; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.MultipleSelectionElementImpl; @@ -56,11 +57,11 @@ import org.olat.repository.model.RepositoryEntryMembership; * * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com */ -public class EditMemberController extends FormBasicController { +public class EditMembershipController extends FormBasicController { private EditMemberTableDataModel tableDataModel; private MultipleSelectionElement repoRightsEl; - private final MemberInfoController infoController; + private MemberInfoController infoController; private static final String[] repoRightsKeys = {"owner", "tutor", "participant"}; @@ -75,7 +76,7 @@ public class EditMemberController extends FormBasicController { private static final String[] keys = new String[] { "ison" }; private static final String[] values = new String[] {""}; - public EditMemberController(UserRequest ureq, WindowControl wControl, Identity member, + public EditMembershipController(UserRequest ureq, WindowControl wControl, Identity member, RepositoryEntry repoEntry) { super(ureq, wControl, "edit_member"); this.member = member; @@ -90,11 +91,27 @@ public class EditMemberController extends FormBasicController { loadModel(member); } + public EditMembershipController(UserRequest ureq, WindowControl wControl, List<Identity> members, + RepositoryEntry repoEntry, Form rootForm) { + super(ureq, wControl, LAYOUT_CUSTOM, "edit_member", rootForm); + + this.member = null; + this.repoEntry = repoEntry; + repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); + businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); + + memberships = Collections.emptyList(); + + initForm(ureq); + loadModel(member); + } + private void loadModel(Identity member) { List<BusinessGroupView> groups = businessGroupService.findBusinessGroupViews(null, repoEntry.getOlatResource(), 0, -1); List<Long> businessGroupKeys = PersistenceHelper.toKeys(groups); - groupMemberships = businessGroupService.getBusinessGroupMembership(businessGroupKeys, member); + groupMemberships = member == null ? + Collections.<BusinessGroupMembership>emptyList() : businessGroupService.getBusinessGroupMembership(businessGroupKeys, member); List<MemberOption> options = new ArrayList<MemberOption>(); for(BusinessGroupView group:groups) { MemberOption option = new MemberOption(group); @@ -122,7 +139,9 @@ public class EditMemberController extends FormBasicController { if(formLayout instanceof FormLayoutContainer) { FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; - layoutCont.put("infos", infoController.getInitialComponent()); + if(infoController != null) { + layoutCont.put("infos", infoController.getInitialComponent()); + } String title = translate("edit.member.title", new String[]{ repoEntry.getDisplayname() }); layoutCont.contextPut("editTitle", title); @@ -133,10 +152,12 @@ public class EditMemberController extends FormBasicController { translate("role.owner"), translate("role.tutor"), translate("role.participant") }; repoRightsEl = uifactory.addCheckboxesVertical("repoRights", formLayout, repoRightsKeys, repoValues, null, 1); - RepoPermission repoPermission = PermissionHelper.getPermission(repoEntry, member, memberships); - repoRightsEl.select("owner", repoPermission.isOwner()); - repoRightsEl.select("tutor", repoPermission.isTutor()); - repoRightsEl.select("participant", repoPermission.isParticipant()); + if(member != null) { + RepoPermission repoPermission = PermissionHelper.getPermission(repoEntry, member, memberships); + repoRightsEl.select("owner", repoPermission.isOwner()); + repoRightsEl.select("tutor", repoPermission.isTutor()); + repoRightsEl.select("participant", repoPermission.isParticipant()); + } //group rights FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); diff --git a/src/main/java/org/olat/course/member/MembersOverviewController.java b/src/main/java/org/olat/course/member/MembersOverviewController.java index c873b22b64d..f840cee4339 100644 --- a/src/main/java/org/olat/course/member/MembersOverviewController.java +++ b/src/main/java/org/olat/course/member/MembersOverviewController.java @@ -21,6 +21,8 @@ package org.olat.course.member; import java.util.List; +import org.olat.collaboration.CollaborationTools; +import org.olat.collaboration.CollaborationToolsFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -30,16 +32,24 @@ import org.olat.core.gui.components.segmentedview.SegmentViewComponent; import org.olat.core.gui.components.segmentedview.SegmentViewEvent; import org.olat.core.gui.components.segmentedview.SegmentViewFactory; import org.olat.core.gui.components.velocity.VelocityContainer; +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.dtabs.Activateable2; +import org.olat.core.gui.control.generic.wizard.Step; +import org.olat.core.gui.control.generic.wizard.StepRunnerCallback; +import org.olat.core.gui.control.generic.wizard.StepsMainRunController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.resource.OresHelper; +import org.olat.course.member.wizard.ImportMember_1_ChooseMemberStep; +import org.olat.group.BusinessGroup; +import org.olat.group.ui.wizard.BGConfigBusinessGroup; import org.olat.repository.RepositoryEntry; import org.olat.util.logging.activity.LoggingResourceable; @@ -60,6 +70,9 @@ public class MembersOverviewController extends BasicController implements Activa private MemberListController tutorsCtrl; private MemberListController participantsCtrl; private MemberListController waitingCtrl; + private final Link importMemberLink, addMemberLink; + + private StepsMainRunController importMembersWizard; private final RepositoryEntry repoEntry; @@ -84,6 +97,13 @@ public class MembersOverviewController extends BasicController implements Activa segmentView.addSegment(searchLink, false); updateAllMembers(ureq); + + addMemberLink = LinkFactory.createButton("add.member", mainVC, this); + mainVC.put("addMembers", addMemberLink); + importMemberLink = LinkFactory.createButton("import.member", mainVC, this); + mainVC.put("importMembers", importMemberLink); + + putInitialPanel(mainVC); } @@ -116,8 +136,38 @@ public class MembersOverviewController extends BasicController implements Activa } else if (clickedLink == searchLink) { updateSearch(ureq); } + } else if (source == addMemberLink) { + + } else if (source == importMemberLink) { + doImportMembers(ureq); } } + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(source == importMembersWizard) { + System.out.println("Import!!!"); + } + super.event(ureq, source, event); + } + + private void doImportMembers(UserRequest ureq) { + removeAsListenerAndDispose(importMembersWizard); + + Step start = new ImportMember_1_ChooseMemberStep(ureq, repoEntry); + StepRunnerCallback finish = new StepRunnerCallback() { + @Override + public Step execute(UserRequest ureq, WindowControl wControl, StepsRunContext runContext) { + //configuration + System.out.println("Import!!!"); + return StepsMainRunController.DONE_MODIFIED; + } + }; + + importMembersWizard = new StepsMainRunController(ureq, getWindowControl(), start, finish, null, translate("import.member")); + listenTo(importMembersWizard); + getWindowControl().pushAsModalDialog(importMembersWizard.getInitialComponent()); + } private MemberListController updateAllMembers(UserRequest ureq) { if(allMemberListCtrl == null) { diff --git a/src/main/java/org/olat/course/member/_content/edit_member.html b/src/main/java/org/olat/course/member/_content/edit_member.html index a56efbc2c6e..9e5adaf9af4 100644 --- a/src/main/java/org/olat/course/member/_content/edit_member.html +++ b/src/main/java/org/olat/course/member/_content/edit_member.html @@ -1,5 +1,6 @@ -$r.render("infos") - +#if($r.available("infos")) + $r.render("infos") +#end <h4>$editTitle</h4> $r.render("repoRights") <h5>$r.translate("edit.member.groups")</h5> diff --git a/src/main/java/org/olat/course/member/_content/members_overview.html b/src/main/java/org/olat/course/member/_content/members_overview.html index b57b8ffe749..77bd534159b 100644 --- a/src/main/java/org/olat/course/member/_content/members_overview.html +++ b/src/main/java/org/olat/course/member/_content/members_overview.html @@ -1,3 +1,11 @@ +<div class="o_buttons_box_right"> + #if($r.available("addMembers")) + $r.render("addMembers") + #end + #if($r.available("importMembers")) + $r.render("importMembers") + #end +</div> <h4 class="b_with_small_icon_left b_group_icon"> $r.translate("menu.members") </h4> diff --git a/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties index 1a3aecae97b..639ce202ca2 100644 --- a/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/member/_i18n/LocalStrings_de.properties @@ -14,6 +14,8 @@ participants=Teilnehmer waitinglist=Warteliste search=Suche action=Aktion +add.member=Mitglieder hinzufügen +import.member=Mitglieder importieren edit.member=Mitglied bearbeiten edit.member.title=Mitgliederrechte Kurs "{0}" edit.member.groups=Gruppenmitgliedschaften @@ -30,6 +32,7 @@ table.header.edit=Bearbeiten table.header.remove=Entfernen table.header.firstName=Vorname table.header.lastName=Name +table.header.mail=Email table.header.firstTime=Beitritt table.header.lastTime=Zuletzt besucht table.header.role=Rolle diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java b/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java new file mode 100644 index 00000000000..896338743a3 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java @@ -0,0 +1,69 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.Form; +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.generic.wizard.StepFormBasicController; +import org.olat.core.gui.control.generic.wizard.StepsEvent; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMemberByUsernamesController extends StepFormBasicController { + private TextElement idata; + + public ImportMemberByUsernamesController(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext) { + super(ureq, wControl, rootForm, runContext, LAYOUT_DEFAULT, null); + + initForm (ureq); + } + + public boolean validate() { + return !idata.isEmpty("form.legende.mandatory"); + } + + public String getLoginsString() { + return idata.getValue(); + } + + @Override + protected void formOK(UserRequest ureq) { + fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + idata = uifactory.addTextAreaElement("addusers", "form.addusers", -1, 15, 40, true, " ", formLayout); + idata.setExampleKey ("form.names.example", null); + } + + @Override + protected void doDispose() { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberMailController.java b/src/main/java/org/olat/course/member/wizard/ImportMemberMailController.java new file mode 100644 index 00000000000..970dd644a32 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMemberMailController.java @@ -0,0 +1,66 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.Form; +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.generic.wizard.StepFormBasicController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMemberMailController extends StepFormBasicController { + private TextElement subject; + private TextElement content; + + public ImportMemberMailController(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext) { + super(ureq, wControl, rootForm, runContext, LAYOUT_DEFAULT, null); + + initForm (ureq); + } + + public boolean validate() { + return true; + } + + + + @Override + protected void formOK(UserRequest ureq) { + fireEvent (ureq, Event.DONE_EVENT); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + + } + + @Override + protected void doDispose() { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewIdentitiesController.java b/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewIdentitiesController.java new file mode 100644 index 00000000000..f3e1a8f9934 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewIdentitiesController.java @@ -0,0 +1,77 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import java.util.ArrayList; +import java.util.List; + +import org.olat.admin.securitygroup.gui.UserControllerFactory; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.table.TableController; +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.generic.wizard.StepFormBasicController; +import org.olat.core.gui.control.generic.wizard.StepsEvent; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.core.id.Identity; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMemberOverviewIdentitiesController extends StepFormBasicController { + private TableController identityTableCtrl; + + public ImportMemberOverviewIdentitiesController(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext) { + super(ureq, wControl, rootForm, runContext, LAYOUT_CUSTOM, "confirm_identities"); + + List<Identity> oks = new ArrayList<Identity>(); + identityTableCtrl = UserControllerFactory.createTableControllerFor(null, oks, ureq, getWindowControl(), null); + listenTo(identityTableCtrl); + + initForm (ureq); + } + + public boolean validate() { + return true; + } + + @Override + protected void formOK(UserRequest ureq) { + fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + if(formLayout instanceof FormLayoutContainer) { + FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; + layoutCont.put("identityList", identityTableCtrl.getInitialComponent()); + } + } + + @Override + protected void doDispose() { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberPermissionChoiceController.java b/src/main/java/org/olat/course/member/wizard/ImportMemberPermissionChoiceController.java new file mode 100644 index 00000000000..d7a7149571e --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMemberPermissionChoiceController.java @@ -0,0 +1,68 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.wizard.StepFormBasicController; +import org.olat.core.gui.control.generic.wizard.StepsEvent; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.course.member.EditMembershipController; +import org.olat.repository.RepositoryEntry; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMemberPermissionChoiceController extends StepFormBasicController { + private EditMembershipController permissionCtrl; + + public ImportMemberPermissionChoiceController(UserRequest ureq, WindowControl wControl, RepositoryEntry repoEntry, + Form rootForm, StepsRunContext runContext) { + super(ureq, wControl, rootForm, runContext, LAYOUT_VERTICAL, null); + + permissionCtrl = new EditMembershipController(ureq, getWindowControl(), null, repoEntry, rootForm); + listenTo(permissionCtrl); + + initForm (ureq); + } + + public boolean validate() { + return true; + } + + @Override + protected void formOK(UserRequest ureq) { + fireEvent (ureq, StepsEvent.ACTIVATE_NEXT); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + formLayout.add(permissionCtrl.getInitialFormItem()); + } + + @Override + protected void doDispose() { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMember_1_ChooseMemberStep.java b/src/main/java/org/olat/course/member/wizard/ImportMember_1_ChooseMemberStep.java new file mode 100644 index 00000000000..e68e65ac68f --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMember_1_ChooseMemberStep.java @@ -0,0 +1,53 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.wizard.BasicStep; +import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; +import org.olat.core.gui.control.generic.wizard.StepFormController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.repository.RepositoryEntry; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMember_1_ChooseMemberStep extends BasicStep { + + public ImportMember_1_ChooseMemberStep(UserRequest ureq, RepositoryEntry repoEntry) { + super(ureq); + setNextStep(new ImportMember_2_ConfirmMemberChoiceStep(ureq, repoEntry)); + setI18nTitleAndDescr("import.import.title", "import.import.title"); + } + + @Override + public PrevNextFinishConfig getInitialPrevNextFinishConfig() { + return new PrevNextFinishConfig(false, true, false); + } + + @Override + public StepFormController getStepController(UserRequest ureq, WindowControl wControl, StepsRunContext runContext, Form form) { + ImportMemberByUsernamesController controller = new ImportMemberByUsernamesController(ureq, wControl, form, runContext); + return controller; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMember_2_ConfirmMemberChoiceStep.java b/src/main/java/org/olat/course/member/wizard/ImportMember_2_ConfirmMemberChoiceStep.java new file mode 100644 index 00000000000..9655c680296 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMember_2_ConfirmMemberChoiceStep.java @@ -0,0 +1,53 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.wizard.BasicStep; +import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; +import org.olat.core.gui.control.generic.wizard.StepFormController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.repository.RepositoryEntry; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMember_2_ConfirmMemberChoiceStep extends BasicStep { + + public ImportMember_2_ConfirmMemberChoiceStep(UserRequest ureq, RepositoryEntry repoEntry) { + super(ureq); + setNextStep(new ImportMember_3_ChoosePermissionStep(ureq, repoEntry)); + setI18nTitleAndDescr("import.confirm.title", "import.confirm.title"); + } + + @Override + public PrevNextFinishConfig getInitialPrevNextFinishConfig() { + return new PrevNextFinishConfig(true, true, false); + } + + @Override + public StepFormController getStepController(UserRequest ureq, WindowControl wControl, StepsRunContext runContext, Form form) { + ImportMemberOverviewIdentitiesController controller = new ImportMemberOverviewIdentitiesController(ureq, wControl, form, runContext); + return controller; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/ImportMember_3_ChoosePermissionStep.java b/src/main/java/org/olat/course/member/wizard/ImportMember_3_ChoosePermissionStep.java new file mode 100644 index 00000000000..2ed72615c69 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMember_3_ChoosePermissionStep.java @@ -0,0 +1,58 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.wizard.BasicStep; +import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; +import org.olat.core.gui.control.generic.wizard.StepFormController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.repository.RepositoryEntry; + + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMember_3_ChoosePermissionStep extends BasicStep { + + private final RepositoryEntry repoEntry; + + public ImportMember_3_ChoosePermissionStep(UserRequest ureq, RepositoryEntry repoEntry) { + super(ureq); + this.repoEntry = repoEntry; + setNextStep(new ImportMember_4_MailStep(ureq)); + setI18nTitleAndDescr("import.permission.title", "import.permission.title"); + } + + @Override + public PrevNextFinishConfig getInitialPrevNextFinishConfig() { + return new PrevNextFinishConfig(true, true, false); + } + + @Override + public StepFormController getStepController(UserRequest ureq, WindowControl wControl, StepsRunContext runContext, Form form) { + ImportMemberPermissionChoiceController controller + = new ImportMemberPermissionChoiceController(ureq, wControl, repoEntry, form, runContext); + return controller; + } +} diff --git a/src/main/java/org/olat/course/member/wizard/ImportMember_4_MailStep.java b/src/main/java/org/olat/course/member/wizard/ImportMember_4_MailStep.java new file mode 100644 index 00000000000..2462129c9de --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/ImportMember_4_MailStep.java @@ -0,0 +1,52 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.member.wizard; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.wizard.BasicStep; +import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; +import org.olat.core.gui.control.generic.wizard.StepFormController; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class ImportMember_4_MailStep extends BasicStep { + + public ImportMember_4_MailStep(UserRequest ureq) { + super(ureq); + setNextStep(NOSTEP); + setI18nTitleAndDescr("import.mail.title", "import.mail.title"); + } + + @Override + public PrevNextFinishConfig getInitialPrevNextFinishConfig() { + return new PrevNextFinishConfig(true, false, true); + } + + @Override + public StepFormController getStepController(UserRequest ureq, WindowControl wControl, StepsRunContext runContext, Form form) { + ImportMemberMailController controller = new ImportMemberMailController(ureq, wControl, form, runContext); + return controller; + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/_content/confirm_identities.html b/src/main/java/org/olat/course/member/wizard/_content/confirm_identities.html new file mode 100644 index 00000000000..522feed2165 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/_content/confirm_identities.html @@ -0,0 +1 @@ +$r.render("identityList") \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/wizard/_content/edit_permissions.html b/src/main/java/org/olat/course/member/wizard/_content/edit_permissions.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties new file mode 100644 index 00000000000..08f1235c8f5 --- /dev/null +++ b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties @@ -0,0 +1,7 @@ +#Mon Mar 02 09:54:04 CET 2009 +import.import.title=Benutzernamen angeben +import.confirm.title=Überprüfen +import.permission.title=Berechtigungen +import.mail.title=E-Mail-Benachrichtigung +form.names.example=aoi,kanu, +form.addusers=Benutzername \ No newline at end of file -- GitLab