From ff4ed73342acc2b4d2ea33017c7d27691487dbde Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 30 Jan 2013 14:06:32 +0100 Subject: [PATCH] OO-524: split and wrap the panel to make 2 different and independent forms, the OK button isn't highlighted anymore after selecting "home" or "contact" --- .../ui/main/AbstractMemberListController.java | 35 +++++---- .../ui/main/EditMembershipController.java | 22 ------ .../main/EditSingleMembershipController.java | 74 +++++++++++++++++++ .../group/ui/main/MemberInfoController.java | 5 +- .../group/ui/main/_content/edit_member.html | 3 - .../ui/main/_content/edit_single_member.html | 2 + 6 files changed, 98 insertions(+), 43 deletions(-) create mode 100644 src/main/java/org/olat/group/ui/main/EditSingleMembershipController.java create mode 100644 src/main/java/org/olat/group/ui/main/_content/edit_single_member.html diff --git a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java index 350101efbd2..9b67c798606 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java @@ -105,7 +105,8 @@ public abstract class AbstractMemberListController extends BasicController imple protected final VelocityContainer mainVC; protected CloseableModalController cmc; - private EditMembershipController editMemberCtrl; + private EditMembershipController editMembersCtrl; + private EditSingleMembershipController editSingleMemberCtrl; private ContactFormController contactCtrl; private MemberLeaveConfirmationController leaveDialogBox; private DialogBoxController confirmSendMailBox; @@ -263,15 +264,17 @@ public abstract class AbstractMemberListController extends BasicController imple } cmc.deactivate(); cleanUpPopups(); - } else if(source == editMemberCtrl) { + } else if(source == editMembersCtrl) { cmc.deactivate(); if(event instanceof MemberPermissionChangeEvent) { MemberPermissionChangeEvent e = (MemberPermissionChangeEvent)event; - if(e.getMember() != null) { - doConfirmChangePermission(ureq, e, null); - } else { - doConfirmChangePermission(ureq, e, editMemberCtrl.getMembers()); - } + doConfirmChangePermission(ureq, e, editMembersCtrl.getMembers()); + } + } else if(source == editSingleMemberCtrl) { + cmc.deactivate(); + if(event instanceof MemberPermissionChangeEvent) { + MemberPermissionChangeEvent e = (MemberPermissionChangeEvent)event; + doConfirmChangePermission(ureq, e, null); } } else if(confirmSendMailBox == source) { boolean sendMail = DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isOkEvent(event); @@ -295,13 +298,15 @@ public abstract class AbstractMemberListController extends BasicController imple */ protected void cleanUpPopups() { removeAsListenerAndDispose(cmc); - removeAsListenerAndDispose(editMemberCtrl); + removeAsListenerAndDispose(editMembersCtrl); + removeAsListenerAndDispose(editSingleMemberCtrl); removeAsListenerAndDispose(leaveDialogBox); removeAsListenerAndDispose(contactCtrl); cmc = null; contactCtrl = null; leaveDialogBox = null; - editMemberCtrl = null; + editMembersCtrl = null; + editSingleMemberCtrl = null; } protected void confirmDelete(UserRequest ureq, List<MemberView> members) { @@ -333,9 +338,9 @@ public abstract class AbstractMemberListController extends BasicController imple protected void openEdit(UserRequest ureq, MemberView member) { Identity identity = securityManager.loadIdentityByKey(member.getIdentityKey()); - editMemberCtrl = new EditMembershipController(ureq, getWindowControl(), identity, repoEntry, businessGroup); - listenTo(editMemberCtrl); - cmc = new CloseableModalController(getWindowControl(), translate("close"), editMemberCtrl.getInitialComponent(), + editSingleMemberCtrl = new EditSingleMembershipController(ureq, getWindowControl(), identity, repoEntry, businessGroup); + listenTo(editSingleMemberCtrl); + cmc = new CloseableModalController(getWindowControl(), translate("close"), editSingleMemberCtrl.getInitialComponent(), true, translate("edit.member")); cmc.activate(); listenTo(cmc); @@ -344,9 +349,9 @@ public abstract class AbstractMemberListController extends BasicController imple protected void openEdit(UserRequest ureq, List<MemberView> members) { List<Long> identityKeys = getMemberKeys(members); List<Identity> identities = securityManager.loadIdentityByKeys(identityKeys); - editMemberCtrl = new EditMembershipController(ureq, getWindowControl(), identities, repoEntry, businessGroup); - listenTo(editMemberCtrl); - cmc = new CloseableModalController(getWindowControl(), translate("close"), editMemberCtrl.getInitialComponent(), + editMembersCtrl = new EditMembershipController(ureq, getWindowControl(), identities, repoEntry, businessGroup); + listenTo(editMembersCtrl); + cmc = new CloseableModalController(getWindowControl(), translate("close"), editMembersCtrl.getInitialComponent(), true, translate("edit.member")); cmc.activate(); listenTo(cmc); 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 757bbaf7128..77648487ac9 100644 --- a/src/main/java/org/olat/group/ui/main/EditMembershipController.java +++ b/src/main/java/org/olat/group/ui/main/EditMembershipController.java @@ -29,12 +29,10 @@ import java.util.UUID; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.gui.UserRequest; -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.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.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.MultipleSelectionElementImpl; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; @@ -68,8 +66,6 @@ public class EditMembershipController extends FormBasicController { private EditMemberTableDataModel tableDataModel; private MultipleSelectionElement repoRightsEl; - private MemberInfoController infoController; - private boolean needMemberInfoController = false; private boolean withButtons; private static final String[] repoRightsKeys = {"owner", "tutor", "participant"}; @@ -99,7 +95,6 @@ public class EditMembershipController extends FormBasicController { businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); memberships = repositoryManager.getRepositoryEntryMembership(repoEntry, member); - needMemberInfoController = true; initForm(ureq); loadModel(member); @@ -121,7 +116,6 @@ public class EditMembershipController extends FormBasicController { } } } - infoController.setMembershipCreation(membershipCreation); } public EditMembershipController(UserRequest ureq, WindowControl wControl, List<Identity> members, @@ -202,13 +196,6 @@ public class EditMembershipController extends FormBasicController { if(formLayout instanceof FormLayoutContainer) { FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; - if(needMemberInfoController) { - infoController = new MemberInfoController(ureq, getWindowControl(), member, repoEntry, mainForm); - listenTo(infoController); - layoutCont.add(infoController.getInitialFormItem()); - layoutCont.add("infos", infoController.getInitialFormItem()); - } - String name = repoEntry == null ? businessGroup.getName() : repoEntry.getDisplayname(); String title = translate("edit.member.title", new String[]{ name }); layoutCont.contextPut("editTitle", title); @@ -274,15 +261,6 @@ public class EditMembershipController extends FormBasicController { protected void formCancelled(UserRequest ureq) { fireEvent(ureq, Event.CANCELLED_EVENT); } - - @Override - protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - super.formInnerEvent(ureq, source, event); - if(infoController != null) { - //the inner event are not naturally propagated to the sub controller - infoController.formInnerEvent(ureq, source, event); - } - } public void collectRepoChanges(MemberPermissionChangeEvent e) { if(repoEntry == null) return; diff --git a/src/main/java/org/olat/group/ui/main/EditSingleMembershipController.java b/src/main/java/org/olat/group/ui/main/EditSingleMembershipController.java new file mode 100644 index 00000000000..bffaa3c5f76 --- /dev/null +++ b/src/main/java/org/olat/group/ui/main/EditSingleMembershipController.java @@ -0,0 +1,74 @@ +/** + * <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.group.ui.main; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +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.id.Identity; +import org.olat.group.BusinessGroup; +import org.olat.repository.RepositoryEntry; + +/** + * + * Initial date: 30.01.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class EditSingleMembershipController extends BasicController { + + private final MemberInfoController infoCtrl; + private final EditMembershipController membershipCtrl; + + public EditSingleMembershipController(UserRequest ureq, WindowControl wControl, Identity identity, + RepositoryEntry repoEntry, BusinessGroup group) { + super(ureq, wControl); + + VelocityContainer mainVC = createVelocityContainer("edit_single_member"); + infoCtrl = new MemberInfoController(ureq, wControl, identity, repoEntry); + listenTo(infoCtrl); + mainVC.put("infos", infoCtrl.getInitialComponent()); + + membershipCtrl = new EditMembershipController(ureq, wControl, identity, repoEntry, group); + listenTo(membershipCtrl); + mainVC.put("edit", membershipCtrl.getInitialComponent()); + + putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + fireEvent(ureq, event); + } + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + fireEvent(ureq, event); + } +} diff --git a/src/main/java/org/olat/group/ui/main/MemberInfoController.java b/src/main/java/org/olat/group/ui/main/MemberInfoController.java index 5d94bf68a87..93dd982b6d8 100644 --- a/src/main/java/org/olat/group/ui/main/MemberInfoController.java +++ b/src/main/java/org/olat/group/ui/main/MemberInfoController.java @@ -29,7 +29,6 @@ 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.FormLink; import org.olat.core.gui.components.form.flexible.elements.StaticTextElement; -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.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; @@ -62,8 +61,8 @@ public class MemberInfoController extends FormBasicController { private final UserCourseInformationsManager efficiencyStatementManager; public MemberInfoController(UserRequest ureq, WindowControl wControl, Identity identity, - RepositoryEntry repoEntry, Form rootForm) { - super(ureq, wControl, LAYOUT_CUSTOM, "info_member", rootForm); + RepositoryEntry repoEntry) { + super(ureq, wControl, "info_member"); setTranslator(Util.createPackageTranslator(UserPropertyHandler.class, ureq.getLocale(), getTranslator())); userManager = CoreSpringFactory.getImpl(UserManager.class); 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 a9d9b08270e..2bde8eae942 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 @@ -1,6 +1,3 @@ -#if($r.available("infos")) - $r.render("infos")<br/> -#end #if($r.available("repoRights")) <fieldset> <legend>$editTitle</legend> diff --git a/src/main/java/org/olat/group/ui/main/_content/edit_single_member.html b/src/main/java/org/olat/group/ui/main/_content/edit_single_member.html new file mode 100644 index 00000000000..1941711c936 --- /dev/null +++ b/src/main/java/org/olat/group/ui/main/_content/edit_single_member.html @@ -0,0 +1,2 @@ +$r.render("infos")<br/> +$r.render("edit") \ No newline at end of file -- GitLab