Skip to content
Snippets Groups Projects
Commit a34655cf authored by srosse's avatar srosse
Browse files

OO-3719: build business path activation chain in user management

parent f6d86937
No related branches found
No related tags found
No related merge requests found
...@@ -54,9 +54,11 @@ import org.olat.core.gui.control.generic.dtabs.Activateable2; ...@@ -54,9 +54,11 @@ import org.olat.core.gui.control.generic.dtabs.Activateable2;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.Organisation; import org.olat.core.id.Organisation;
import org.olat.core.id.Roles; import org.olat.core.id.Roles;
import org.olat.core.id.context.BusinessControlFactory;
import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.ContextEntry;
import org.olat.core.id.context.StateEntry; import org.olat.core.id.context.StateEntry;
import org.olat.core.util.WebappHelper; import org.olat.core.util.WebappHelper;
import org.olat.core.util.resource.OresHelper;
import org.olat.core.util.vfs.QuotaManager; import org.olat.core.util.vfs.QuotaManager;
import org.olat.course.certificate.ui.CertificateAndEfficiencyStatementListController; import org.olat.course.certificate.ui.CertificateAndEfficiencyStatementListController;
import org.olat.ldap.LDAPLoginManager; import org.olat.ldap.LDAPLoginManager;
...@@ -116,6 +118,7 @@ public class UserAdminController extends BasicController implements Activateable ...@@ -116,6 +118,7 @@ public class UserAdminController extends BasicController implements Activateable
private Identity editedIdentity; private Identity editedIdentity;
private final Roles editedRoles; private final Roles editedRoles;
private final boolean allowedToManage; private final boolean allowedToManage;
private int rolesTab;
// controllers used in tabbed pane // controllers used in tabbed pane
private TabbedPane userTabP; private TabbedPane userTabP;
...@@ -206,9 +209,13 @@ public class UserAdminController extends BasicController implements Activateable ...@@ -206,9 +209,13 @@ public class UserAdminController extends BasicController implements Activateable
if(entries == null || entries.isEmpty()) return; if(entries == null || entries.isEmpty()) return;
String entryPoint = entries.get(0).getOLATResourceable().getResourceableTypeName(); String entryPoint = entries.get(0).getOLATResourceable().getResourceableTypeName();
if("tab".equals(entryPoint)) { if("tab".equalsIgnoreCase(entryPoint)) {
userTabP.activate(ureq, entries, state); userTabP.activate(ureq, entries, state);
} else if("table".equals(entryPoint)) { } else if("roles".equalsIgnoreCase(entryPoint) && rolesTab >= 0) {
List<ContextEntry> tabEntries = BusinessControlFactory.getInstance()
.createCEListFromString(OresHelper.createOLATResourceableInstance("tab", Long.valueOf(rolesTab)));
userTabP.activate(ureq, tabEntries, state);
} else if("table".equalsIgnoreCase(entryPoint)) {
if(entries.size() > 2) { if(entries.size() > 2) {
List<ContextEntry> subEntries = entries.subList(2, entries.size()); List<ContextEntry> subEntries = entries.subList(2, entries.size());
userTabP.activate(ureq, subEntries, state); userTabP.activate(ureq, subEntries, state);
...@@ -430,7 +437,7 @@ public class UserAdminController extends BasicController implements Activateable ...@@ -430,7 +437,7 @@ public class UserAdminController extends BasicController implements Activateable
} }
// the controller manager is read-write permissions // the controller manager is read-write permissions
userTabP.addTab(translate(NLS_EDIT_UROLES), uureq -> { rolesTab = userTabP.addTab(translate(NLS_EDIT_UROLES), uureq -> {
rolesCtr = new SystemRolesAndRightsController(getWindowControl(), uureq, identity); rolesCtr = new SystemRolesAndRightsController(getWindowControl(), uureq, identity);
listenTo(rolesCtr); listenTo(rolesCtr);
return rolesCtr.getInitialComponent(); return rolesCtr.getInitialComponent();
......
...@@ -24,8 +24,11 @@ ...@@ -24,8 +24,11 @@
*/ */
package org.olat.admin.user; package org.olat.admin.user;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.olat.basesecurity.BaseSecurity;
import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.BaseSecurityModule;
import org.olat.basesecurity.SearchIdentityParams; import org.olat.basesecurity.SearchIdentityParams;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
...@@ -78,6 +81,8 @@ public class UsermanagerUserSearchController extends BasicController implements ...@@ -78,6 +81,8 @@ public class UsermanagerUserSearchController extends BasicController implements
@Autowired @Autowired
private UserManager userManager; private UserManager userManager;
@Autowired @Autowired
private BaseSecurity securityManager;
@Autowired
private BaseSecurityModule securityModule; private BaseSecurityModule securityModule;
/** /**
...@@ -178,11 +183,19 @@ public class UsermanagerUserSearchController extends BasicController implements ...@@ -178,11 +183,19 @@ public class UsermanagerUserSearchController extends BasicController implements
if(entries != null && !entries.isEmpty()) { if(entries != null && !entries.isEmpty()) {
String table = entries.get(0).getOLATResourceable().getResourceableTypeName(); String table = entries.get(0).getOLATResourceable().getResourceableTypeName();
if("table".equals(table)) { if("table".equalsIgnoreCase(table)) {
entries.remove(0); entries.remove(0);
event(ureq, searchFormCtrl, Event.DONE_EVENT); event(ureq, searchFormCtrl, Event.DONE_EVENT);
} }
} }
} else {
if(entries != null && entries.size()> 1) {
String table = entries.get(0).getOLATResourceable().getResourceableTypeName();
String identity = entries.get(1).getOLATResourceable().getResourceableTypeName();
if("table".equalsIgnoreCase(table) && "Identity".equalsIgnoreCase(identity)) {
doActivateUser(ureq, entries.subList(1, entries.size()));
}
}
} }
} }
...@@ -191,6 +204,20 @@ public class UsermanagerUserSearchController extends BasicController implements ...@@ -191,6 +204,20 @@ public class UsermanagerUserSearchController extends BasicController implements
// //
} }
private void doActivateUser(UserRequest ureq, List<ContextEntry> entries) {
Long identityKey = entries.get(0).getOLATResourceable().getResourceableId();
Identity searchedIdentity = securityManager.loadIdentityByKey(identityKey);
StateMapped searchState = new StateMapped();
Map<String,String> states = new HashMap<>();
states.put("login", searchedIdentity.getName());
searchState.setDelegate(states);
searchFormCtrl.setStateEntry(searchState);
doPushSearch(ureq);
tableCtr.activate(ureq, entries, null);
}
private void doPushSearch(UserRequest ureq) { private void doPushSearch(UserRequest ureq) {
identityQueryParams = searchFormCtrl.getSearchIdentityParams(); identityQueryParams = searchFormCtrl.getSearchIdentityParams();
if(identityQueryParams.getOrganisations() == null || identityQueryParams.getOrganisations().isEmpty()) { if(identityQueryParams.getOrganisations() == null || identityQueryParams.getOrganisations().isEmpty()) {
......
...@@ -317,13 +317,11 @@ public class UsermanagerUserSearchForm extends FormBasicController { ...@@ -317,13 +317,11 @@ public class UsermanagerUserSearchForm extends FormBasicController {
protected StateMapped getStateEntry() { protected StateMapped getStateEntry() {
StateMapped state = new StateMapped(); StateMapped state = new StateMapped();
if(items != null) { for(Map.Entry<String, FormItem> itemEntry : items.entrySet()) {
for(Map.Entry<String, FormItem> itemEntry : items.entrySet()) { String key = itemEntry.getKey();
String key = itemEntry.getKey(); FormItem f = itemEntry.getValue();
FormItem f = itemEntry.getValue(); if (f instanceof TextElement) {
if (f instanceof TextElement) { state.getDelegate().put(key, ((TextElement) f).getValue());
state.getDelegate().put(key, ((TextElement) f).getValue());
}
} }
} }
return state; return state;
......
...@@ -33,7 +33,7 @@ import java.util.Map; ...@@ -33,7 +33,7 @@ import java.util.Map;
public class StateMapped implements StateEntry{ public class StateMapped implements StateEntry{
private static final long serialVersionUID = -164313132644246934L; private static final long serialVersionUID = -164313132644246934L;
private Map<String,String> delegate = new HashMap<String,String>(); private Map<String,String> delegate = new HashMap<>();
public StateMapped() { public StateMapped() {
//make XStream happy //make XStream happy
......
...@@ -279,9 +279,9 @@ public class RegistrationManager implements UserDataDeletable, UserDataExportabl ...@@ -279,9 +279,9 @@ public class RegistrationManager implements UserDataDeletable, UserDataExportabl
return; return;
} }
// http://localhost:8080/auth/UserAdminSite/0/usearch/0/table/0/Identity/720896/tab/10 // http://localhost:8080/auth/UserAdminSite/0/usearch/0/table/0/Identity/720896/roles/0
String userPath = "[UserAdminSite:0][usearch:0][table:0][Identity:" + newIdentity.getKey() + "][tab:10]"; String userPath = "[UserAdminSite:0][usearch:0][table:0][Identity:" + newIdentity.getKey() + "][roles:0]";
String url = BusinessControlFactory.getInstance().getURLFromBusinessPathString(userPath); String url = BusinessControlFactory.getInstance().getURLFromBusinessPathString(userPath);
MailerResult result = new MailerResult(); MailerResult result = new MailerResult();
......
...@@ -62,12 +62,15 @@ import org.olat.core.gui.control.Controller; ...@@ -62,12 +62,15 @@ import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event; import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
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.Step;
import org.olat.core.gui.control.generic.wizard.StepRunnerCallback; 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.StepsMainRunController;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.OLATResourceable; import org.olat.core.id.OLATResourceable;
import org.olat.core.id.Roles; import org.olat.core.id.Roles;
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.logging.activity.ThreadLocalUserActivityLogger;
import org.olat.core.util.Util; import org.olat.core.util.Util;
import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactList;
...@@ -87,7 +90,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -87,7 +90,7 @@ import org.springframework.beans.factory.annotation.Autowired;
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
* *
*/ */
public class UserSearchTableController extends FormBasicController { public class UserSearchTableController extends FormBasicController implements Activateable2 {
private static final String USER_PROPS_ID = ExtendedIdentitiesTableDataModel.class.getCanonicalName(); private static final String USER_PROPS_ID = ExtendedIdentitiesTableDataModel.class.getCanonicalName();
public static final int USER_PROPS_OFFSET = 500; public static final int USER_PROPS_OFFSET = 500;
...@@ -205,6 +208,22 @@ public class UserSearchTableController extends FormBasicController { ...@@ -205,6 +208,22 @@ public class UserSearchTableController extends FormBasicController {
// //
} }
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty()) return;
String type = entries.get(0).getOLATResourceable().getResourceableTypeName();
if("Identity".equalsIgnoreCase(type)) {
Long identityKey = entries.get(0).getOLATResourceable().getResourceableId();
List<IdentityPropertiesRow> rows = tableModel.getObjects();
for(IdentityPropertiesRow row:rows) {
if(row != null && row.getIdentityKey().equals(identityKey)) {
doSelectIdentity(ureq, row).activate(ureq, entries.subList(1, entries.size()), null);
}
}
}
}
@Override @Override
protected void event(UserRequest ureq, Controller source, Event event) { protected void event(UserRequest ureq, Controller source, Event event) {
if(userBulkChangesController == source) { if(userBulkChangesController == source) {
...@@ -302,7 +321,7 @@ public class UserSearchTableController extends FormBasicController { ...@@ -302,7 +321,7 @@ public class UserSearchTableController extends FormBasicController {
} }
} }
private void doSelectIdentity(UserRequest ureq, IdentityPropertiesRow userRow) { private UserAdminController doSelectIdentity(UserRequest ureq, IdentityPropertiesRow userRow) {
removeAsListenerAndDispose(userAdminCtr); removeAsListenerAndDispose(userAdminCtr);
Identity identity = securityManager.loadIdentityByKey(userRow.getIdentityKey()); Identity identity = securityManager.loadIdentityByKey(userRow.getIdentityKey());
...@@ -319,7 +338,8 @@ public class UserSearchTableController extends FormBasicController { ...@@ -319,7 +338,8 @@ public class UserSearchTableController extends FormBasicController {
stackPanel.pushController(fullName, userAdminCtr); stackPanel.pushController(fullName, userAdminCtr);
stackPanel.addTool(previousLink, Align.rightEdge, false, "o_tool_previous"); stackPanel.addTool(previousLink, Align.rightEdge, false, "o_tool_previous");
stackPanel.addTool(nextLink, Align.rightEdge, false, "o_tool_next"); stackPanel.addTool(nextLink, Align.rightEdge, false, "o_tool_next");
updateNextPrevious(userRow, false); updateNextPrevious(userRow, false);
return userAdminCtr;
} }
private void doSelectVcard(UserRequest ureq, IdentityPropertiesRow userRow) { private void doSelectVcard(UserRequest ureq, IdentityPropertiesRow userRow) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment