diff --git a/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java b/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java index ac651442788638589f7d5a4e5e0364d6faca8a48..e5a4739abfc9b770ba1ae81fd84cc81bb8edfbff 100644 --- a/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java +++ b/src/main/java/de/bps/course/nodes/den/DENCourseNodeConfiguration.java @@ -19,10 +19,8 @@ */ package de.bps.course.nodes.den; -import java.util.List; import java.util.Locale; -import org.olat.core.extensions.ExtensionResource; import org.olat.core.gui.translator.Translator; import org.olat.core.util.Util; import org.olat.course.nodes.AbstractCourseNodeConfiguration; @@ -57,17 +55,4 @@ public class DENCourseNodeConfiguration extends AbstractCourseNodeConfiguration Translator translator = Util.createPackageTranslator(this.getClass(), locale, fallback); return translator.translate("title_den"); } - - public ExtensionResource getExtensionCSS() { - return null; - } - - public List getExtensionResources() { - return null; - } - - public String getName() { - return getAlias(); - } - } diff --git a/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java b/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java index 56ea0b5be5dcfd01e4e4c213d9e59d18635fdb19..de29c0054738a57cf88ec3d562107a05329dc37f 100644 --- a/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java +++ b/src/main/java/de/bps/course/nodes/den/DENListTableDataModel.java @@ -94,7 +94,7 @@ public class DENListTableDataModel extends DefaultTableDataModel<KalendarEvent> return ""; for( String participant : event.getParticipants() ) { Identity identity = BaseSecurityManager.getInstance().findIdentityByName(participant); - usernames.append(identity.getName() + "<br>");//TODO username + usernames.append(identity.getName() + "<br>"); } return usernames.toString(); case 7: diff --git a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java index 4fc94a693acfa9e18ce3d5797e3e652e58892ce5..d0dbe2884416e28e9cb14e8357034eab2e9b4e4c 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java +++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java @@ -337,12 +337,7 @@ public class DENManageParticipantsController extends BasicController { private void createParticipantsMail(UserRequest ureq, List<Identity> participants) { VelocityContainer sendMessageVC = createVelocityContainer("sendmessage"); ContactMessage cmsg = new ContactMessage(ureq.getIdentity()); - ContactList contactList = null; - if(participants.size() == 1) { - contactList = new ContactList(participants.get(0).getName());//TODO username - } else { - contactList = new ContactList(translate("participants.message.to")); - } + ContactList contactList = new ContactList(translate("participants.message.to")); contactList.addAllIdentites(participants); cmsg.addEmailTo(contactList); diff --git a/src/main/java/de/bps/course/nodes/den/DENManager.java b/src/main/java/de/bps/course/nodes/den/DENManager.java index 7105f47558048bfb2800abb5e4622ccd9d1071bd..2a0ff5df83a1fd460b5efeb2e3d54252ff89184b 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManager.java +++ b/src/main/java/de/bps/course/nodes/den/DENManager.java @@ -30,11 +30,13 @@ import java.util.StringTokenizer; import org.apache.velocity.VelocityContext; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.commons.calendar.CalendarManager; import org.olat.commons.calendar.CalendarManagerFactory; import org.olat.commons.calendar.model.Kalendar; import org.olat.commons.calendar.model.KalendarEvent; import org.olat.commons.calendar.model.KalendarEventLink; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.BooleanColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -188,7 +190,6 @@ public class DENManager { DENStatus status = new DENStatus(); ICourse course = CourseFactory.loadCourse(ores); Kalendar cal = calManager.getCourseCalendar(course).getKalendar(); - Collection<KalendarEvent> collEvents = cal.getEvents(); //check if identity is enrolled if( !isEnrolledInDate(identity, event) ) { status.setCancelled(false); @@ -355,7 +356,7 @@ public class DENManager { */ public int getEventCount(Long courseId, String courseNodeId) { if(courseId != null && courseNodeId != null) { - List events = null; + List<KalendarEvent> events = null; try { events = getDENEvents(courseId, courseNodeId); } catch(Exception e) { @@ -498,7 +499,7 @@ public class DENManager { userNewEvent.setLocation(newEvent.getLocation()); userNewEvent.setSourceNodeId(newEvent.getSourceNodeId()); userNewEvent.setClassification(KalendarEvent.CLASS_PRIVATE); - List kalendarEventLinks = userNewEvent.getKalendarEventLinks(); + List<KalendarEventLink> kalendarEventLinks = userNewEvent.getKalendarEventLinks(); kalendarEventLinks.clear(); kalendarEventLinks.addAll(newEvent.getKalendarEventLinks()); calManager.addEventTo(userCal, userNewEvent); @@ -608,7 +609,12 @@ public class DENManager { tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.duration", 2, null, ureq.getLocale())); tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.comment", 4, null, ureq.getLocale())); tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.name", 5, null, ureq.getLocale())); - tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale())); + + boolean isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(ureq.getUserSession().getRoles()); + if(isAdministrativeUser) { + tableCntrl.addColumnDescriptor(new DefaultColumnDescriptor("dates.table.participant.username", 6, null, ureq.getLocale())); + } + tableCntrl.addColumnDescriptor(new BooleanColumnDescriptor("participants", 7, DENListTableDataModel.CHANGE_ACTION, trans.translate("dates.table.participant.manage"), "")); tableCntrl.addMultiSelectAction("dates.table.list.email", DENListTableDataModel.MAIL_ACTION); @@ -855,7 +861,7 @@ public class DENManager { } private void createKalendarEventLinks(ICourse course, DENCourseNode courseNode, KalendarEvent event) { - List kalendarEventLinks = event.getKalendarEventLinks(); + List<KalendarEventLink> kalendarEventLinks = event.getKalendarEventLinks(); RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(course, true); OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("CourseNode", Long.valueOf(courseNode.getIdent())); diff --git a/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java b/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java index 36fe158fb8f0c8dfeb421bcd7c3d3deb7d05f11b..217b1920ac6fbbc51ef3fecd756d7c269491249d 100644 --- a/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java +++ b/src/main/java/de/bps/course/nodes/den/DENParticipantsTableDataModel.java @@ -29,14 +29,14 @@ import org.olat.core.id.UserConstants; * Table data model for the view of participants enrolled in an event * @author skoeber */ -class DENParticipantsTableDataModel extends DefaultTableDataModel { +class DENParticipantsTableDataModel extends DefaultTableDataModel<Identity> { public static final String MAIL_ACTION = "denSendMail"; public static final String REMOVE_ACTION = "denRemoveParticipant"; private static final int COLUMN_COUNT = 2; - public DENParticipantsTableDataModel(List objects) { + public DENParticipantsTableDataModel(List<Identity> objects) { super(objects); } @@ -47,7 +47,7 @@ class DENParticipantsTableDataModel extends DefaultTableDataModel { @Override public Object getValueAt(int row, int col) { - Identity identity = (Identity)objects.get(row); + Identity identity = objects.get(row); switch (col) { case 0: diff --git a/src/main/java/org/olat/_spring/extensionContext.xml b/src/main/java/org/olat/_spring/extensionContext.xml index 0759fd7a70257e9b1cb99ff293efc76e85a11ad9..0ed40f525c1693004f961486c0a1ac327831634b 100644 --- a/src/main/java/org/olat/_spring/extensionContext.xml +++ b/src/main/java/org/olat/_spring/extensionContext.xml @@ -243,7 +243,27 @@ <value>org.olat.admin.SystemAdminMainController</value> </list> </property> - </bean> + </bean> + + <!-- Privacy admin. panel --> + <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> + <property name="order" value="7423" /> + <property name="actionController"> + <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> + <property name="className" value="org.olat.admin.privacy.PrivacyAdminController"/> + </bean> + </property> + <property name="navigationKey" value="privacy" /> + <property name="i18nActionKey" value="admin.menu.title"/> + <property name="i18nDescriptionKey" value="admin.menu.title.alt"/> + <property name="translationPackage" value="org.olat.admin.privacy"/> + <property name="parentTreeNodeIdentifier" value="modulesParent" /> + <property name="extensionPoints"> + <list> + <value>org.olat.admin.SystemAdminMainController</value> + </list> + </property> + </bean> diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java index 03e31c46b5d47dd3c43f5ee41a8c9692febf4664..ebd8cc8c8d1b9ebb91228280562b4e07514aa990 100644 --- a/src/main/java/org/olat/admin/UserAdminMainController.java +++ b/src/main/java/org/olat/admin/UserAdminMainController.java @@ -74,6 +74,7 @@ import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.LockResult; import org.olat.core.util.resource.OresHelper; +import org.olat.user.UserManager; import org.olat.util.logging.activity.LoggingResourceable; /** @@ -104,6 +105,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement private String activatePaneInDetailView = null; private LockResult lock; + private final UserManager userManager; /** * Constructor of the home main controller @@ -112,6 +114,9 @@ public class UserAdminMainController extends MainLayoutBasicController implement */ public UserAdminMainController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); + + userManager = UserManager.getInstance(); + olatMenuTree = new MenuTree("olatMenuTree"); olatMenuTree.setExpandSelectedNode(false); TreeModel tm = buildTreeModel(ureq); @@ -513,8 +518,8 @@ public class UserAdminMainController extends MainLayoutBasicController implement OLATResourceable lockResourceable = OresHelper.createOLATResourceableTypeWithoutCheck(TabbedPaneController.class.getName()); lock = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(lockResourceable, ureq.getIdentity(), "deleteGroup"); if (!lock.isSuccess()) { - //TODO username - String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{lock.getOwner().getName()}); + String fullname = userManager.getUserDisplayName(lock.getOwner()); + String text = getTranslator().translate("error.deleteworkflow.locked.by", new String[]{ fullname }); Controller monoCtr = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), null, text); return monoCtr; } diff --git a/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java b/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java new file mode 100644 index 0000000000000000000000000000000000000000..a605ee7418a0c1ad343eed16ccd839f664ed3830 --- /dev/null +++ b/src/main/java/org/olat/admin/privacy/PrivacyAdminController.java @@ -0,0 +1,97 @@ +/** + * <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.admin.privacy; + +import java.util.Set; + +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; +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.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; + +/** + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class PrivacyAdminController extends FormBasicController { + + private MultipleSelectionElement adminPropsEl; + + private final BaseSecurityModule module; + + private String[] adminPropKeys = new String[]{ + "users","authors", "usermanagers", "groupmanagers", "administrators" + }; + + public PrivacyAdminController(UserRequest ureq, WindowControl wControl) { + super(ureq, wControl); + module = CoreSpringFactory.getImpl(BaseSecurityModule.class); + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormTitle("admin.menu.title"); + setFormDescription("admin.props.desc"); + + String[] adminPropValues = new String[]{ + translate("admin.props.users"), + translate("admin.props.authors"), + translate("admin.props.usermanagers"), + translate("admin.props.groupmanagers"), + translate("admin.props.administrators") + }; + adminPropsEl = uifactory.addCheckboxesVertical("admin.props", formLayout, adminPropKeys, adminPropValues, null, 1); + adminPropsEl.select("users", "enabled".equals(module.getUserSearchAdminPropsForUsers())); + adminPropsEl.select("authors", "enabled".equals(module.getUserSearchAdminPropsForAuthors())); + adminPropsEl.select("usermanagers", "enabled".equals(module.getUserSearchAdminPropsForUsermanagers())); + adminPropsEl.select("groupmanagers", "enabled".equals(module.getUserSearchAdminPropsForGroupmanagers())); + adminPropsEl.select("administrators", "enabled".equals(module.getUserSearchAdminPropsForAdministrators())); + adminPropsEl.addActionListener(this, FormEvent.ONCHANGE); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if(source == adminPropsEl) { + Set<String> enrolmentSelectedKeys = adminPropsEl.getSelectedKeys(); + module.setUserSearchAdminPropsForUsers(enrolmentSelectedKeys.contains("users") ? "enabled" : "disabled"); + module.setUserSearchAdminPropsForAuthors(enrolmentSelectedKeys.contains("authors") ? "enabled" : "disabled"); + module.setUserSearchAdminPropsForUsermanagers(enrolmentSelectedKeys.contains("usermanagers") ? "enabled" : "disabled"); + module.setUserSearchAdminPropsForGroupmanagers(enrolmentSelectedKeys.contains("groupmanagers") ? "enabled" : "disabled"); + module.setUserSearchAdminPropsForAdministrators(enrolmentSelectedKeys.contains("administrators") ? "enabled" : "disabled"); + } + } + + @Override + protected void formOK(UserRequest ureq) { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..c4edfc67c9552ff6b8dc60d40a73f96494b08b6f --- /dev/null +++ b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_de.properties @@ -0,0 +1,10 @@ +#Mon Mar 02 09:54:03 CET 2009 +admin.menu.title=Datenschutz +admin.menu.title.alt=Datenschutz +admin.props=Admin. properties +admin.props.desc=Roles die den Admin. Properties sehen darf. +admin.props.administrators=Systemadministratoren +admin.props.authors=Kursautoren +admin.props.groupmanagers=Gruppenverwalter +admin.props.usermanagers=Benutzerverwalter +admin.props.users=Lernende \ No newline at end of file diff --git a/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties new file mode 100644 index 0000000000000000000000000000000000000000..9a9ac7942507e398fb611346d2c3544a433020c4 --- /dev/null +++ b/src/main/java/org/olat/admin/privacy/_i18n/LocalStrings_en.properties @@ -0,0 +1,8 @@ +#Sat Jan 22 17:29:25 CET 2011 +admin.menu.title=Privacy +admin.menu.title.alt=Privacy +admin.props.administrators=System administrators +admin.props.authors=Course authors +admin.props.groupmanagers=Group administrators +admin.props.usermanagers=User managers +admin.props.users=Learner \ No newline at end of file diff --git a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java index d96fd1c991aaa2c41be6c44b696ef35bacf90b6b..d55ee14e3794808331fbf97a822105ab061267c0 100644 --- a/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java +++ b/src/main/java/org/olat/admin/properties/AdvancedPropertiesController.java @@ -27,6 +27,8 @@ package org.olat.admin.properties; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; @@ -39,6 +41,7 @@ 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.Roles; import org.olat.properties.Property; import org.olat.properties.PropertyManager; @@ -55,6 +58,7 @@ public class AdvancedPropertiesController extends BasicController { private VelocityContainer vcSearchForm; private TableController tableCtr; + private final boolean isAdministrativeUser; /** * caller of this constructor must make sure only olat admins come here @@ -63,7 +67,10 @@ public class AdvancedPropertiesController extends BasicController { * @param wControl */ public AdvancedPropertiesController(UserRequest ureq, WindowControl wControl) { - super(ureq,wControl); + super(ureq,wControl); + + Roles roles = ureq.getUserSession().getRoles(); + isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); //TODO: make special security check as soon as this controller can also modify polices (at the moment: read only) @@ -101,25 +108,27 @@ public class AdvancedPropertiesController extends BasicController { String propertyName = searchForm.getPropertyName(); if (propertyName != null && propertyName.equals("")) propertyName = null; - List<Property> entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName); - PropertiesTableDataModel ptdm = new PropertiesTableDataModel(entries); + List<Property> entries = PropertyManager.getInstance().listProperties(searchForm.getIdentity(), null, resourceTypeName, resTypeId, category, propertyName); + + + PropertiesTableDataModel ptdm = new PropertiesTableDataModel(entries, isAdministrativeUser); TableGuiConfiguration tableConfig = new TableGuiConfiguration(); removeAsListenerAndDispose(tableCtr); tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); //use null as listener argument because we are using listenTo(..) from basiccontroller - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.userName", 0, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeName", 1, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeId", 2, null, ureq.getLocale(),ColumnDescriptor.ALIGNMENT_RIGHT)); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.category", 3, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", 4, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.floatValue", 5, null, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT)); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.stringValue", 6, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.longValue", 10, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.textValue", 7, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.creationdate", 8, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.lastmodified", 9, null, ureq.getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.userName", 0, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeName", 1, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceTypeId", 2, null, getLocale(),ColumnDescriptor.ALIGNMENT_RIGHT)); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.category", 3, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", 4, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.floatValue", 5, null, getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT)); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.stringValue", 6, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.longValue", 10, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.textValue", 7, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.creationdate", 8, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.lastmodified", 9, null, getLocale())); tableCtr.setTableDataModel(ptdm); listenTo(tableCtr); diff --git a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java index 0464b11c1fa0b6f723d7fe94bd3fae73eadf8596..f28bdc9e8bb807eea89701c5f0dc25aa5643955f 100644 --- a/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java +++ b/src/main/java/org/olat/admin/properties/PropertiesTableDataModel.java @@ -31,6 +31,7 @@ import java.util.List; import org.olat.core.gui.components.table.DefaultTableDataModel; import org.olat.core.id.Identity; import org.olat.properties.Property; +import org.olat.user.UserManager; /** * Description:<br> @@ -40,20 +41,25 @@ import org.olat.properties.Property; */ public class PropertiesTableDataModel extends DefaultTableDataModel<Property> { - + private final boolean isAdministrativeUser; + private final UserManager userManager; + /** * Default constructor. */ - public PropertiesTableDataModel() { - this(new ArrayList<Property>()); + public PropertiesTableDataModel(boolean isAdministrativeUser) { + this(new ArrayList<Property>(), isAdministrativeUser); + } /** * Initialize table model with objects. * @param objects */ - public PropertiesTableDataModel(List<Property> objects) { + public PropertiesTableDataModel(List<Property> objects, boolean isAdministrativeUser) { super(objects); + this.isAdministrativeUser = isAdministrativeUser; + userManager = UserManager.getInstance(); } /** @@ -73,7 +79,13 @@ public class PropertiesTableDataModel extends DefaultTableDataModel<Property> { switch(col) { case 0: Identity id = p.getIdentity(); - return ((id != null) ? (p.getIdentity().getName()): (null));//TODO username + if(id == null) { + return null; + } + if(isAdministrativeUser) { + return id.getName(); + } + return userManager.getUserDisplayName(id); case 1: return p.getResourceTypeName(); case 2: diff --git a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java index b7ce7f970beec3030f99cbfeeeaa01bc7445d410..2ddf6cd41113714870ec8c2a666eb68451a53403 100644 --- a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java +++ b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java @@ -369,7 +369,8 @@ public class GroupController extends BasicController { if (toAdd.size() == 1) { //check if already in group [makes only sense for a single choosen identity] if (securityManager.isIdentityInSecurityGroup(toAdd.get(0), securityGroup)) { - getWindowControl().setInfo(translate("msg.subjectalreadyingroup", new String[]{toAdd.get(0).getName()}));//TODO username + String fullName = userManager.getUserDisplayName(toAdd.get(0)); + getWindowControl().setInfo(translate("msg.subjectalreadyingroup", new String[]{ fullName })); return; } } else if (toAdd.size() > 1) { @@ -384,7 +385,8 @@ public class GroupController extends BasicController { if (!alreadyInGroup.isEmpty()) { StringBuilder names = new StringBuilder(); for(Identity ident: alreadyInGroup) { - names.append(" ").append(ident.getName());//TODO username + if(names.length() > 0) names.append(", "); + names.append(userManager.getUserDisplayName(ident)); toAdd.remove(ident); } getWindowControl().setInfo(translate("msg.subjectsalreadyingroup", names.toString())); @@ -502,10 +504,10 @@ public class GroupController extends BasicController { if (confirmDelete != null) confirmDelete.dispose(); StringBuilder names = new StringBuilder(); for (Identity identity : toRemove) { - names.append(identity.getName()).append(" ");//TODO username + if(names.length() > 0) names.append(", "); + names.append(userManager.getUserDisplayName(identity)); } confirmDelete = activateYesNoDialog(ureq, null, translate("remove.text", names.toString()), confirmDelete); - return; } private void doRemoveIdentitiesFromGroup(UserRequest ureq, List<Identity> toBeRemoved, MailTemplate mailTemplate) { @@ -561,10 +563,10 @@ public class GroupController extends BasicController { // build info message for identities which could be added. StringBuilder infoMessage = new StringBuilder(); for (Identity identity : identitiesAddedEvent.getIdentitiesWithoutPermission()) { - infoMessage.append(translate("msg.isingroupanonymous", identity.getName())).append("<br />");//TODO username + infoMessage.append(translate("msg.isingroupanonymous", userManager.getUserDisplayName(identity))).append("<br />"); } for (Identity identity : identitiesAddedEvent.getIdentitiesAlreadyInGroup()) { - infoMessage.append(translate("msg.subjectalreadyingroup", identity.getName())).append("<br />");//TODO username + infoMessage.append(translate("msg.subjectalreadyingroup", userManager.getUserDisplayName(identity))).append("<br />"); } // send the notification mail fro added users StringBuilder errorMessage = new StringBuilder(); diff --git a/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java b/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java index d015055f6acc705e47361a5498e2601e0c6ae884..810f9d25f4f93b64112a87d1e9a18edfc11b8638 100644 --- a/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java +++ b/src/main/java/org/olat/admin/securitygroup/gui/IdentitiesOfGroupTableDataModel.java @@ -63,7 +63,7 @@ public class IdentitiesOfGroupTableDataModel extends DefaultTableDataModel<Group public final Object getValueAt(int row, int col) { GroupMemberView co = getObject(row); switch(col) { - case 0: return co.getIdentity().getName();//TODO username + case 0: return co.getIdentity().getName(); case 1: return co.getOnlineStatus(); case 2: return co.getAddedAt(); default: { diff --git a/src/main/java/org/olat/admin/sysinfo/LockController.java b/src/main/java/org/olat/admin/sysinfo/LockController.java index 1d7377ed08f74bbcf40d026d9eebf7f15f248dfd..efa379c073da5aca5542c7dfe8871c964869b07c 100644 --- a/src/main/java/org/olat/admin/sysinfo/LockController.java +++ b/src/main/java/org/olat/admin/sysinfo/LockController.java @@ -27,6 +27,9 @@ package org.olat.admin.sysinfo; import java.util.List; +import org.olat.admin.sysinfo.LockTableModel.Cols; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -78,9 +81,14 @@ public class LockController extends BasicController { TableGuiConfiguration tableConfig = new TableGuiConfiguration(); tableConfig.setDownloadOffered(false); tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.key", 0, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", 1, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.aquiretime", 2, null, ureq.getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.key", Cols.key.ordinal(), null, getLocale())); + + BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + if(securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles())) { + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", Cols.ownerName.ordinal(), null, getLocale())); + } + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.owner", Cols.ownerFullname.ordinal(), null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("lock.aquiretime", Cols.acquiredTime.ordinal(), null, getLocale())); tableCtr.addColumnDescriptor(new StaticColumnDescriptor("lock.release", "lock.release", translate("lock.release"))); listenTo(tableCtr); resetTableModel(); diff --git a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java index 975156f4aa6abe597f959fb3cbb3e7b446ed773a..745c53f6922c2de286c0ec260dd3fe466c78994f 100644 --- a/src/main/java/org/olat/admin/sysinfo/LockTableModel.java +++ b/src/main/java/org/olat/admin/sysinfo/LockTableModel.java @@ -29,9 +29,9 @@ import java.util.Date; import java.util.List; import org.olat.core.gui.components.table.DefaultTableDataModel; -import org.olat.core.id.UserConstants; import org.olat.core.util.Formatter; import org.olat.core.util.coordinate.LockEntry; +import org.olat.user.UserManager; /** * @@ -40,16 +40,20 @@ import org.olat.core.util.coordinate.LockEntry; public class LockTableModel extends DefaultTableDataModel<LockEntry> { + private final UserManager userManager; + /** * @param list of locks */ public LockTableModel(List<LockEntry> locks) { super(locks); + userManager = UserManager.getInstance(); } /** * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount() */ + @Override public int getColumnCount() { return 4; } @@ -57,15 +61,22 @@ public class LockTableModel extends DefaultTableDataModel<LockEntry> { /** * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int) */ + @Override public Object getValueAt(int row, int col) { LockEntry lock = getObject(row); - switch (col) { - case 0: return lock.getKey();//TODO username - case 1: return lock.getOwner().getName() + ", " + lock.getOwner().getUser().getProperty(UserConstants.FIRSTNAME, null) - + " " + lock.getOwner().getUser().getProperty(UserConstants.LASTNAME, null); - case 2: return Formatter.formatDatetime(new Date(lock.getLockAquiredTime())); + switch (Cols.values()[col]) { + case key: return lock.getKey(); + case ownerName: return lock.getOwner().getName(); + case ownerFullname: return userManager.getUserDisplayName(lock.getOwner()); + case acquiredTime: return Formatter.formatDatetime(new Date(lock.getLockAquiredTime())); default: return "Error"; } } - + + public enum Cols { + key, + ownerName, + ownerFullname, + acquiredTime + } } diff --git a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java index 0cf66325cff87e32278b4aac7f02f6e02ee91a18..643332cb140267eaff32aa9a3a3f249e94f1942c 100644 --- a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java +++ b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableControllerFactory.java @@ -29,14 +29,11 @@ import java.util.List; import java.util.Locale; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.table.DefaultColumnDescriptor; -import org.olat.core.gui.components.table.StaticColumnDescriptor; import org.olat.core.gui.components.table.TableController; import org.olat.core.gui.components.table.TableGuiConfiguration; -import org.olat.core.gui.control.ControllerEventListener; import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; +import org.olat.core.id.Identity; import org.olat.core.util.Util; import org.olat.user.UserManager; @@ -52,17 +49,15 @@ import org.olat.user.UserManager; * itself is work in progress. */ public class ExtendedIdentitiesTableControllerFactory { - private static final String PACKAGE = Util.getPackageName(ExtendedIdentitiesTableControllerFactory.class); public static final String COMMAND_VCARD = "show.vcard"; public static final String COMMAND_SELECTUSER = "select.user"; - /** * @param args */ public static TableController createController(ExtendedIdentitiesTableDataModel dataModel, UserRequest ureq, WindowControl wControl, boolean actionEnabled) { Locale loc = ureq.getLocale(); - Translator trans = new PackageTranslator(PACKAGE, loc); + Translator trans = Util.createPackageTranslator(ExtendedIdentitiesTableControllerFactory.class, loc); TableGuiConfiguration tableConfig = new TableGuiConfiguration(); tableConfig.setDownloadOffered(true); tableConfig.setPreferencesOffered(true, "ExtendedIdentitiesTable"); @@ -75,7 +70,7 @@ public class ExtendedIdentitiesTableControllerFactory { return tableCtr; } - public static ExtendedIdentitiesTableDataModel createTableDataModel(UserRequest ureq, List identities, boolean actionEnabled) { + public static ExtendedIdentitiesTableDataModel createTableDataModel(UserRequest ureq, List<Identity> identities, boolean actionEnabled) { return new ExtendedIdentitiesTableDataModel(ureq, identities, actionEnabled); } } \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java index 48687de2f51fb8b9adb9c0cdf9b9f1f7405c4c50..bceeba683ecd26bb8587ce8a2c8411c1bf1687c3 100644 --- a/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java +++ b/src/main/java/org/olat/admin/user/ExtendedIdentitiesTableDataModel.java @@ -29,6 +29,8 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.DefaultColumnDescriptor; import org.olat.core.gui.components.table.DefaultTableDataModel; @@ -50,9 +52,10 @@ import org.olat.user.propertyhandlers.UserPropertyHandler; * user and its creation date. The idea is to extend the functionality further * to display more information using a wrapper object. */ -public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel { +public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel<Identity> { - private boolean actionEnabled; + private final boolean actionEnabled; + private final boolean isAdministrativeUser; private int colCount = 0; private List<UserPropertyHandler> userPropertyHandlers; private static final String usageIdentifyer = ExtendedIdentitiesTableDataModel.class.getCanonicalName(); @@ -64,12 +67,12 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel { * @param actionEnabled true: the action button is enabled; false: list * without action button */ - ExtendedIdentitiesTableDataModel(UserRequest ureq, List identities, boolean actionEnabled) { + ExtendedIdentitiesTableDataModel(UserRequest ureq, List<Identity> identities, boolean actionEnabled) { super(identities); this.actionEnabled = actionEnabled; Roles roles = ureq.getUserSession().getRoles(); - boolean isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser); } @@ -83,27 +86,26 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel { setLocale(trans.getLocale()); // first column is users login name // default rows - DefaultColumnDescriptor cd0 = new DefaultColumnDescriptor("table.identity.name", 0, - (actionEnabled ? ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD : null), getLocale()); - cd0 - .setIsPopUpWindowAction(true, - "height=700, width=900, location=no, menubar=no, resizable=yes, status=no, scrollbars=yes, toolbar=no"); - tableCtr.addColumnDescriptor(cd0); - colCount++; + + if(isAdministrativeUser) { + String action = (actionEnabled ? ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD : null); + DefaultColumnDescriptor cd0 = new DefaultColumnDescriptor("table.identity.name", colCount++, action, getLocale()); + cd0.setIsPopUpWindowAction(true, "height=700, width=900, location=no, menubar=no, resizable=yes, status=no, scrollbars=yes, toolbar=no"); + tableCtr.addColumnDescriptor(cd0); + } + UserManager um = UserManager.getInstance(); // followed by the users fields for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); boolean visible = um.isMandatoryUserProperty(usageIdentifyer, userPropertyHandler); - tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i + 1, null, getLocale())); - colCount++; + tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(colCount++, null, getLocale())); } // in the end the last login and creation date - tableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.identity.lastlogin", colCount, null, getLocale())); - colCount++; + tableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.identity.lastlogin", colCount++, null, getLocale())); // creation date at the end, enabled by default - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.identity.creationdate", colCount, null, getLocale())); - colCount++; + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.identity.creationdate", colCount++, null, getLocale())); + if (actionEnabled) { tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ExtendedIdentitiesTableControllerFactory.COMMAND_SELECTUSER, "table.identity.action", trans.translate("action.select"))); @@ -114,41 +116,32 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel { * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int) */ public final Object getValueAt(int row, int col) { - Identity identity = getIdentityAt(row); + Identity identity = getObject(row); User user = identity.getUser(); - if (col == 0) { - return identity.getName();//TODO username - - } else if (col > 0 && col < userPropertyHandlers.size() + 1) { + int offSet = isAdministrativeUser ? 1 : 0; + if (col == 0 && isAdministrativeUser) { + return identity.getName(); + } + if (col >= offSet && col < userPropertyHandlers.size() + offSet) { // get user property for this column - UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col - 1); + UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col - offSet); String value = userPropertyHandler.getUserProperty(user, getLocale()); return (value == null ? "n/a" : value); - - } else if (col == userPropertyHandlers.size() + 1) { + } + if (col == userPropertyHandlers.size() + offSet) { return identity.getLastLogin(); - } else if (col == userPropertyHandlers.size() + 2) { - return user.getCreationDate(); - - } else { - return "error"; } + if (col == userPropertyHandlers.size() + offSet + 1) { + return user.getCreationDate(); + } + return "error"; } /** * @see org.olat.core.gui.components.table.TableDataModel#getColumnCount() */ public int getColumnCount() { - return colCount; - } - - /** - * @param rowid - * @return The identity at the given position in the table - */ - public Identity getIdentityAt(int rowid) { - Identity ident = (Identity) getObject(rowid); - return ident; + return colCount + 1; } /** @@ -158,10 +151,9 @@ public class ExtendedIdentitiesTableDataModel extends DefaultTableDataModel { public List<Identity> getIdentities(BitSet selection) { List<Identity> identities = new ArrayList<Identity>(); for (int i = selection.nextSetBit(0); i >= 0; i = selection.nextSetBit(i + 1)) { - Identity identityAt = getIdentityAt(i); + Identity identityAt = getObject(i); identities.add(identityAt); } return identities; } - } \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java index a648e3ef4ec56861158c1edb80e79aa5221aacae..ec97ce5046b3b3cd84eb4bb63c940e03edfc42e8 100644 --- a/src/main/java/org/olat/admin/user/UserAdminController.java +++ b/src/main/java/org/olat/admin/user/UserAdminController.java @@ -36,6 +36,7 @@ import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.Constants; import org.olat.basesecurity.SecurityGroup; +import org.olat.core.CoreSpringFactory; import org.olat.core.commons.modules.bc.FolderConfig; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; @@ -109,6 +110,8 @@ public class UserAdminController extends BasicController implements Activateable private ProfileAndHomePageEditController userProfileCtr; private GroupOverviewController grpCtr; + private final boolean isAdministrativeUser; + private final BaseSecurityModule securityModule; /** * Constructor that creates a back - link as default @@ -118,6 +121,10 @@ public class UserAdminController extends BasicController implements Activateable */ public UserAdminController(UserRequest ureq, WindowControl wControl, Identity identity) { super(ureq, wControl); + + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles()); + BaseSecurity mgr = BaseSecurityManager.getInstance(); if (!mgr.isIdentityPermittedOnResourceable( ureq.getIdentity(), @@ -153,7 +160,7 @@ public class UserAdminController extends BasicController implements Activateable if("tab".equals(entryPoint)) { userTabP.activate(ureq, entries, state); } else if (userTabP != null) { - userTabP.setSelectedPane(translate(entryPoint)); + userTabP.setSelectedPane(translate(entryPoint)); } } @@ -339,11 +346,6 @@ public class UserAdminController extends BasicController implements Activateable * @param identity */ private void exposeUserDataToVC(UserRequest ureq, Identity identity) { - Locale loc = ureq.getLocale(); - myContent.contextPut("foundUserName", identity.getName());//TODO username - myContent.contextPut("foundFirstName", identity.getUser().getProperty(UserConstants.FIRSTNAME, loc)); - myContent.contextPut("foundLastName", identity.getUser().getProperty(UserConstants.LASTNAME, loc)); - myContent.contextPut("foundEmail", identity.getUser().getProperty(UserConstants.EMAIL, loc)); removeAsListenerAndDispose(portraitCtr); portraitCtr = new DisplayPortraitController(ureq, getWindowControl(), identity, true, true); myContent.put("portrait", portraitCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java index d28f3ba48e066c78f5ecb2f55f1ec9d7113c0f31..5a098396cd78fb7a4266e0a7cb8f830d8e8f4709 100644 --- a/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java +++ b/src/main/java/org/olat/admin/user/UserAuthenticationsEditorController.java @@ -46,6 +46,7 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.id.Identity; +import org.olat.user.UserManager; /** * Initial Date: Aug 27, 2004 @@ -117,9 +118,10 @@ public class UserAuthenticationsEditorController extends BasicController{ String actionid = te.getActionId(); if (actionid.equals("delete")) { int rowid = te.getRowId(); - Authentication auth = (Authentication) authTableModel.getObject(rowid); - //TODO username - confirmationDialog = activateYesNoDialog(ureq, null, getTranslator().translate("authedit.delete.confirm", new String[] { auth.getProvider(), changeableIdentity.getName() }), confirmationDialog); + Authentication auth = authTableModel.getObject(rowid); + String fullname = UserManager.getInstance().getUserDisplayName(auth.getIdentity()); + String msg = translate("authedit.delete.confirm", new String[] { auth.getProvider(), fullname }); + confirmationDialog = activateYesNoDialog(ureq, null, msg, confirmationDialog); confirmationDialog.setUserObject(auth); return; } diff --git a/src/main/java/org/olat/admin/user/UserSearchController.java b/src/main/java/org/olat/admin/user/UserSearchController.java index 7be8d957d74db1080fafff25780c961e7c38fd64..4bf21a0ce67f91f1a78f1c8185abf7a277d41dda 100644 --- a/src/main/java/org/olat/admin/user/UserSearchController.java +++ b/src/main/java/org/olat/admin/user/UserSearchController.java @@ -181,8 +181,8 @@ public class UserSearchController extends BasicController { } Roles roles = ureq.getUserSession().getRoles(); - boolean isAdmin = securityModule.isUserAllowedAdminProps(roles); - searchform = new UserSearchForm(ureq, wControl, isAdmin, cancelbutton); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); + searchform = new UserSearchForm(ureq, wControl, isAdministrativeUser, cancelbutton); listenTo(searchform); searchPanel.setContent(searchform.getInitialComponent()); @@ -194,7 +194,7 @@ public class UserSearchController extends BasicController { if (ajax && autoCompleteAllowed) { // insert a autocompleter search ListProvider provider = new UserSearchListProvider(); - autocompleterC = new AutoCompleterController(ureq, getWindowControl(), provider, null, isAdmin, 60, 3, null); + autocompleterC = new AutoCompleterController(ureq, getWindowControl(), provider, null, isAdministrativeUser, 60, 3, null); listenTo(autocompleterC); myContent.put("autocompletionsearch", autocompleterC.getInitialComponent()); } @@ -204,9 +204,6 @@ public class UserSearchController extends BasicController { tableConfig.setDownloadOffered(false);// no download because user should not download user-list tableCtr = new TableController(tableConfig, ureq, getWindowControl(), myContent.getTranslator()); listenTo(tableCtr); - - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); - putInitialPanel(myContent); } diff --git a/src/main/java/org/olat/admin/user/UserSearchForm.java b/src/main/java/org/olat/admin/user/UserSearchForm.java index d419349655b562d703f8c9f6fa0a348d691e1cda..fb691653f9b62064574bb10ccd1ac35bce4fa904 100644 --- a/src/main/java/org/olat/admin/user/UserSearchForm.java +++ b/src/main/java/org/olat/admin/user/UserSearchForm.java @@ -159,6 +159,7 @@ public class UserSearchForm extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout); + login.setVisible(isAdminProps); UserManager um = UserManager.getInstance(); Translator tr = Util.createPackageTranslator( diff --git a/src/main/java/org/olat/admin/user/UserShortDescription.java b/src/main/java/org/olat/admin/user/UserShortDescription.java index 029cda4eacfda11e1e3a8ad592dcc3c392dbd20b..761eca26a6d88b92e5987046340412bdfda88745 100644 --- a/src/main/java/org/olat/admin/user/UserShortDescription.java +++ b/src/main/java/org/olat/admin/user/UserShortDescription.java @@ -27,6 +27,8 @@ package org.olat.admin.user; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -60,17 +62,21 @@ public class UserShortDescription extends BasicController { String usernameLabel = translate("table.user.login"); //use the PropertyHandlerTranslator for the velocityContainer setTranslator(UserManager.getInstance().getPropertyHandlerTranslator(getTranslator())); - velocityContainer = this.createVelocityContainer("userShortDescription"); + velocityContainer = createVelocityContainer("userShortDescription"); Roles roles = ureq.getUserSession().getRoles(); - boolean isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + boolean isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); + //(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser); velocityContainer.contextPut("userPropertyHandlers", userPropertyHandlers); velocityContainer.contextPut("user", identity.getUser()); - velocityContainer.contextPut("username", identity.getName()); + + if(getIdentity().equals(identity) || isAdministrativeUser) { + velocityContainer.contextPut("username", identity.getName()); + } velocityContainer.contextPut("usernameLabel", usernameLabel); - this.putInitialPanel(velocityContainer); + putInitialPanel(velocityContainer); } @Override diff --git a/src/main/java/org/olat/admin/user/UserTableDataModel.java b/src/main/java/org/olat/admin/user/UserTableDataModel.java index 706b3da4ad3f80d479c90765d1ba50ff1c548ba7..0de7118a3a33cf402ccd3e1e483471ca67b82206 100644 --- a/src/main/java/org/olat/admin/user/UserTableDataModel.java +++ b/src/main/java/org/olat/admin/user/UserTableDataModel.java @@ -49,12 +49,14 @@ import org.olat.user.propertyhandlers.UserPropertyHandler; */ public class UserTableDataModel extends DefaultTableDataModel<Identity> { - private List<UserPropertyHandler> userPropertyHandlers; + private final boolean isAdministrativeUser; + private final List<UserPropertyHandler> userPropertyHandlers; private static final String usageIdentifyer = UserTableDataModel.class.getCanonicalName(); - private UserTableDataModel(Locale locale, List<UserPropertyHandler> userPropertyHandlers) { + private UserTableDataModel(Locale locale, List<UserPropertyHandler> userPropertyHandlers, boolean isAdministrativeUser) { super(new ArrayList<Identity>()); setLocale(locale); + this.isAdministrativeUser = isAdministrativeUser; this.userPropertyHandlers = userPropertyHandlers; } @@ -64,6 +66,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> { public UserTableDataModel(List<Identity> objects, Locale locale, boolean isAdministrativeUser) { super(objects); setLocale(locale); + this.isAdministrativeUser = isAdministrativeUser; userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser); } @@ -76,12 +79,14 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> { */ public void addColumnDescriptors(TableController tableCtr, String actionCommand) { // first column is users login name - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale())); + if(isAdministrativeUser) { + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale())); + } // followed by the users fields for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer , userPropertyHandler); - tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale())); + tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, actionCommand, getLocale())); } } @@ -92,7 +97,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> { Identity identity = getObject(row); User user = identity.getUser(); if (col == 0) { - return identity.getName();//TODO username + return identity.getName(); } else if ((col-1) < userPropertyHandlers.size()) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1); @@ -113,7 +118,7 @@ public class UserTableDataModel extends DefaultTableDataModel<Identity> { @Override public Object createCopyWithEmptyList() { - return new UserTableDataModel(getLocale(), userPropertyHandlers); + return new UserTableDataModel(getLocale(), userPropertyHandlers, isAdministrativeUser); } /** diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java index ae2d7e54b3c0e8ea969fb29be1a5b72b04ac2c42..05919f373dd464a674f08d17082fbb591270be70 100644 --- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java +++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java @@ -37,9 +37,11 @@ import org.olat.admin.user.bulkChange.UserBulkChangeManager; import org.olat.admin.user.bulkChange.UserBulkChangeStep00; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.PermissionOnResourceable; import org.olat.basesecurity.SecurityGroup; import org.olat.basesecurity.events.SingleIdentityChosenEvent; +import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayoutFactory; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.PersistenceHelper; @@ -79,7 +81,6 @@ import org.olat.core.gui.control.generic.wizard.StepsRunContext; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; -import org.olat.core.id.Roles; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.id.context.StateMapped; @@ -130,7 +131,8 @@ public class UsermanagerUserSearchController extends BasicController implements private Link backFromList; private boolean showEmailButton = true; private StepsMainRunController userBulkChangeStepsController; - private boolean isAdministrativeUser = false; + private final boolean isAdministrativeUser; + private final BaseSecurityModule securityModule; /** * Constructor to trigger the user search workflow using a generic search form @@ -140,7 +142,10 @@ public class UsermanagerUserSearchController extends BasicController implements */ public UsermanagerUserSearchController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); - + + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles()); + userSearchVC = createVelocityContainer("usermanagerUsersearch"); mailVC = createVelocityContainer("usermanagerMail"); @@ -154,7 +159,7 @@ public class UsermanagerUserSearchController extends BasicController implements userListVC.contextPut("emptyList", Boolean.FALSE); userListVC.contextPut("showTitle", Boolean.TRUE); - searchform = new UsermanagerUserSearchForm(ureq, wControl); + searchform = new UsermanagerUserSearchForm(ureq, wControl, isAdministrativeUser); listenTo(searchform); userSearchVC.put("usersearch", searchform.getInitialComponent()); @@ -179,6 +184,9 @@ public class UsermanagerUserSearchController extends BasicController implements PermissionOnResourceable[] searchPermissionOnResources, String[] searchAuthProviders, Date searchCreatedAfter, Date searchCreatedBefore, Integer status, boolean showEmailButton) { super(ureq, wControl); + + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles()); mailVC = createVelocityContainer("usermanagerMail"); @@ -213,6 +221,9 @@ public class UsermanagerUserSearchController extends BasicController implements public UsermanagerUserSearchController(UserRequest ureq, WindowControl wControl, List<Identity> identitiesList, Integer status, boolean showEmailButton, boolean showTitle) { super(ureq, wControl); + + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(ureq.getUserSession().getRoles()); mailVC = createVelocityContainer("usermanagerMail"); @@ -426,13 +437,13 @@ public class UsermanagerUserSearchController extends BasicController implements String actionid = te.getActionId(); if (actionid.equals(ExtendedIdentitiesTableControllerFactory.COMMAND_SELECTUSER)) { int rowid = te.getRowId(); - foundIdentity = tdm.getIdentityAt(rowid); + foundIdentity = tdm.getObject(rowid); // Tell parentController that a subject has been found fireEvent(ureq, new SingleIdentityChosenEvent(foundIdentity)); } else if (actionid.equals(ExtendedIdentitiesTableControllerFactory.COMMAND_VCARD)) { - // get identitiy and open new visiting card controller in new window + // get identity and open new visiting card controller in new window int rowid = te.getRowId(); - final Identity identity = tdm.getIdentityAt(rowid); + final Identity identity = tdm.getObject(rowid); ControllerCreator userInfoMainControllerCreator = new ControllerCreator() { public Controller createController(UserRequest lureq, WindowControl lwControl) { return new UserInfoMainController(lureq, lwControl, identity); @@ -460,9 +471,7 @@ public class UsermanagerUserSearchController extends BasicController implements final UserBulkChangeManager ubcMan = UserBulkChangeManager.getInstance(); // valid selection: load in wizard Step start = new UserBulkChangeStep00(ureq, selectedIdentities); - Roles roles = ureq.getUserSession().getRoles(); - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); - + // callback executed in case wizard is finished. StepRunnerCallback finish = new StepRunnerCallback() { public Step execute(UserRequest ureq1, WindowControl wControl1, StepsRunContext runContext) { @@ -617,13 +626,15 @@ class UsermanagerUserSearchForm extends FormBasicController { private String[] roleKeys, roleValues; private String[] authKeys, authValues; - Map <String,FormItem>items; + private Map <String,FormItem>items; + private final boolean isAdministrativeUser; /** * @param binderName * @param cancelbutton */ - public UsermanagerUserSearchForm(UserRequest ureq, WindowControl wControl) { + public UsermanagerUserSearchForm(UserRequest ureq, WindowControl wControl, boolean isAdministrativeUser) { super(ureq, wControl); + this.isAdministrativeUser = isAdministrativeUser; UserManager um = UserManager.getInstance(); Translator decoratedTranslator = um.getPropertyHandlerTranslator(this.getTranslator()); @@ -794,10 +805,10 @@ class UsermanagerUserSearchForm extends FormBasicController { } @Override - @SuppressWarnings("unused") protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { login = uifactory.addTextElement("login", "search.form.login", 128, "", formLayout); + login.setVisible(isAdministrativeUser); items.put("login", login); Translator tr = Util.createPackageTranslator( @@ -863,18 +874,6 @@ class UsermanagerUserSearchForm extends FormBasicController { userLoginBefore = uifactory.addDateChooser("search.form.userLoginBeforeDate", null, formLayout); userLoginBefore.setValidDateCheck("error.search.form.no.valid.datechooser"); - // creation date constraints - /* - addFormElement("space3", new SpacerElement(true, false)); - addFormElement("title.date", new TitleElement("search.form.title.date")); - afterDate = new DateElement("search.form.afterDate", getLocale()); - addFormElement("afterDate", afterDate); - beforeDate = new DateElement("search.form.beforeDate", getLocale()); - addFormElement("beforeDate", beforeDate); - - addSubmitKey("submit.search", "submit.search"); - */ - uifactory.addSpacerElement("spaceBottom", formLayout, false); // Don't use submit button, form should not be marked as dirty since this is @@ -890,7 +889,6 @@ class UsermanagerUserSearchForm extends FormBasicController { * org.olat.core.gui.components.form.flexible.impl.FormEvent) */ @Override - @SuppressWarnings("unused") protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (source == searchButton) { source.getRootForm().submit(ureq); diff --git a/src/main/java/org/olat/admin/user/_content/userShortDescription.html b/src/main/java/org/olat/admin/user/_content/userShortDescription.html index bb84c5950fe2ab5c084cf6c55fd55eac80c49f2d..42bb5530fdd4563bbe0224650e4a67b2a43a8bf4 100644 --- a/src/main/java/org/olat/admin/user/_content/userShortDescription.html +++ b/src/main/java/org/olat/admin/user/_content/userShortDescription.html @@ -1,9 +1,10 @@ <table class="b_table"> + #if($username) <tr> <td><b>$usernameLabel</b></td> <td>$username</td> </tr> - + #end #foreach( $propertyHandler in $userPropertyHandlers ) #if ($propertyHandler.getUserPropertyAsHTML($user, $locale) && $propertyHandler.getUserPropertyAsHTML($user, $locale) != "") <tr> diff --git a/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java b/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java index 467c308b832f16b5d3442c3e39132c1dd4b82b4b..12f116cba1310d849ceb52c2a1d3906befb03d83 100644 --- a/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java +++ b/src/main/java/org/olat/admin/user/delete/DirectDeleteController.java @@ -44,6 +44,7 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.id.Identity; import org.olat.core.logging.AssertException; +import org.olat.user.UserManager; /** * Controller for 'Direct User Deletion' tab. @@ -60,15 +61,19 @@ public class DirectDeleteController extends BasicController { private BulkDeleteController bdc; private CloseableModalController cmc; + private final UserManager userManager; + public DirectDeleteController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); + + userManager = UserManager.getInstance(); + myContent = createVelocityContainer("directdelete"); initializeUserSearchController(ureq); initializeUserListForm(ureq); putInitialPanel(myContent); - } /** @@ -103,7 +108,8 @@ public class DirectDeleteController extends BasicController { showInfo("info.is.not.ready.to.delete"); return; } - deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", buildUserNameList(toDelete) ), deleteConfirmController); + String names = buildUserNameList(toDelete); + deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", names), deleteConfirmController); return; } else if (event instanceof SingleIdentityChosenEvent) { // single choose event may come from autocompleter user search @@ -115,8 +121,8 @@ public class DirectDeleteController extends BasicController { toDelete = new ArrayList<Identity>(); toDelete.add(uce.getChosenIdentity()); - //TODO username - deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", uce.getChosenIdentity().getName()), deleteConfirmController); + String fullname = userManager.getUserDisplayName(uce.getChosenIdentity()); + deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", fullname), deleteConfirmController); return; } else { throw new AssertException("unknown event ::" + event.getCommand()); @@ -136,8 +142,8 @@ public class DirectDeleteController extends BasicController { toDelete = bdc.getToDelete(); cmc.deactivate(); - deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", buildUserNameList(toDelete)), deleteConfirmController); - + String names = buildUserNameList(toDelete); + deleteConfirmController = activateOkCancelDialog(ureq, null, translate("readyToDelete.delete.confirm", names), deleteConfirmController); } else if (sourceController == cmc) { if (event == Event.CANCELLED_EVENT) { cmc.deactivate(); @@ -157,7 +163,7 @@ public class DirectDeleteController extends BasicController { } /** - * Build comma seperated list of usernames. + * Build comma separated list of usernames. * @param toDelete * @return */ @@ -165,10 +171,9 @@ public class DirectDeleteController extends BasicController { StringBuilder buf = new StringBuilder(); for (Identity identity : toDeleteIdentities) { if (buf.length() > 0) { - buf.append(","); + buf.append(", "); } - //TODO username - buf.append(identity.getName()); + buf.append(userManager.getUserDisplayName(identity)); } return buf.toString(); } @@ -186,7 +191,7 @@ public class DirectDeleteController extends BasicController { usc = new DeletableUserSearchController(ureq, getWindowControl()); listenTo(usc); myContent.put("usersearch", usc.getInitialComponent()); - myContent.contextPut("deletedusers", new ArrayList()); + myContent.contextPut("deletedusers", new ArrayList<Identity>()); } private void initializeUserListForm(UserRequest ureq) { diff --git a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java index f73bd925f08716584df88711c1003116a6c36da4..4a8d08f8d10cfb866163d347bc42d2815343e918 100644 --- a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java +++ b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java @@ -31,6 +31,8 @@ import java.util.List; import org.olat.admin.user.UserSearchController; import org.olat.admin.user.delete.service.UserDeletionManager; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -48,7 +50,6 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.Roles; @@ -62,8 +63,6 @@ import org.olat.user.UserManager; * @author Christian Guretzki */ public class ReadyToDeleteController extends BasicController { - private static final String MY_PACKAGE = Util.getPackageName(ReadyToDeleteController.class); - private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class); private static final String ACTION_SINGLESELECT_CHOOSE = "ssc"; private static final String ACTION_MULTISELECT_CHOOSE = "msc"; @@ -87,8 +86,8 @@ public class ReadyToDeleteController extends BasicController { super(ureq, wControl); - PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale()); - this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) ); + Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, ureq.getLocale()); + setTranslator(Util.createPackageTranslator(ReadyToDeleteController.class, ureq.getLocale(), fallbackTrans)); // use the PropertyHandlerTranslator as tableCtr translator propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()); @@ -98,7 +97,8 @@ public class ReadyToDeleteController extends BasicController { myContent.put("panel", readyToDeletePanel); Roles roles = ureq.getUserSession().getRoles(); - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); + //(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); initializeTableController(ureq); initializeContent(); @@ -183,8 +183,8 @@ public class ReadyToDeleteController extends BasicController { tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator); listenTo(tableCtr); - List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); - tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser); + List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); + tdm = new UserDeleteTableModel(l, getLocale(), isAdministrativeUser); tdm.addColumnDescriptors(tableCtr, null,"table.identity.deleteEmail"); tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate"))); tableCtr.addMultiSelectAction("action.ready.to.delete", ACTION_MULTISELECT_CHOOSE); @@ -202,7 +202,7 @@ public class ReadyToDeleteController extends BasicController { } protected void updateUserList() { - List l = UserDeletionManager.getInstance().getIdentitiesReadyToDelete(UserDeletionManager.getInstance().getDeleteEmailDuration()); + List<Identity> l = UserDeletionManager.getInstance().getIdentitiesReadyToDelete(UserDeletionManager.getInstance().getDeleteEmailDuration()); tdm.setObjects(l); tableCtr.setTableDataModel(tdm); } diff --git a/src/main/java/org/olat/admin/user/delete/SelectionController.java b/src/main/java/org/olat/admin/user/delete/SelectionController.java index 90f9d60ddcb2f851a432fad60ac3a744f22910e5..2e436db1448782afe6d4a54d4015bd05d87826b4 100644 --- a/src/main/java/org/olat/admin/user/delete/SelectionController.java +++ b/src/main/java/org/olat/admin/user/delete/SelectionController.java @@ -30,6 +30,8 @@ import java.util.List; import org.apache.velocity.VelocityContext; import org.olat.admin.user.UserSearchController; import org.olat.admin.user.delete.service.UserDeletionManager; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -51,7 +53,6 @@ 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.closablewrapper.CloseableModalController; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.Roles; @@ -67,8 +68,6 @@ import org.olat.user.UserManager; * @author Christian Guretzki */ public class SelectionController extends BasicController { - private static final String MY_PACKAGE = Util.getPackageName(SelectionController.class); - private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class); private static final String ACTION_SINGLESELECT_CHOOSE = "ssc"; private static final String ACTION_MULTISELECT_CHOOSE = "msc"; @@ -84,7 +83,7 @@ public class SelectionController extends BasicController { private VelocityContainer selectionListContent; private Link editParameterLink; private MailNotificationEditController deleteUserMailCtr; - private List selectedIdentities; + private List<Identity> selectedIdentities; private boolean isAdministrativeUser; private Translator propertyHandlerTranslator; @@ -98,15 +97,16 @@ public class SelectionController extends BasicController { public SelectionController(UserRequest ureq, WindowControl wControl) { super (ureq, wControl); - PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale()); - this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) ); + Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, getLocale()); + setTranslator(Util.createPackageTranslator(SelectionController.class, getLocale(), fallbackTrans)); //use the PropertyHandlerTranslator as tableCtr translator propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()); myContent = this.createVelocityContainer("panel"); Roles roles = ureq.getUserSession().getRoles(); - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); + //(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); userSelectionPanel = new Panel("userSelectionPanel"); userSelectionPanel.addListener(this); @@ -114,7 +114,7 @@ public class SelectionController extends BasicController { initializeContent(); myContent.put("panel", userSelectionPanel); - this.putInitialPanel(myContent); + putInitialPanel(myContent); } private void initializeContent() { @@ -216,7 +216,7 @@ public class SelectionController extends BasicController { cmc.activate(); } else { - this.showWarning("nothing.selected.msg"); + showWarning("nothing.selected.msg"); } } @@ -228,7 +228,7 @@ public class SelectionController extends BasicController { tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator); listenTo(tableCtr); - List l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration()); + List<Identity> l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration()); tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser); tdm.addColumnDescriptors(tableCtr, null); tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate"))); @@ -238,7 +238,7 @@ public class SelectionController extends BasicController { } public void updateUserList() { - List l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration()); + List<Identity> l = UserDeletionManager.getInstance().getDeletableIdentities(UserDeletionManager.getInstance().getLastLoginDuration()); tdm.setObjects(l); tableCtr.setTableDataModel(tdm); } diff --git a/src/main/java/org/olat/admin/user/delete/StatusController.java b/src/main/java/org/olat/admin/user/delete/StatusController.java index 4359abefb83cb99df12f5f59aee8699a77d378dd..b46eca345bd81a45428984f9a292abd751f77ec0 100644 --- a/src/main/java/org/olat/admin/user/delete/StatusController.java +++ b/src/main/java/org/olat/admin/user/delete/StatusController.java @@ -29,6 +29,8 @@ import java.util.List; import org.olat.admin.user.UserSearchController; import org.olat.admin.user.delete.service.UserDeletionManager; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; @@ -42,7 +44,6 @@ 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.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.Roles; @@ -55,8 +56,6 @@ import org.olat.user.UserManager; * @author Christian Guretzki */ public class StatusController extends BasicController { - private static final String MY_PACKAGE = Util.getPackageName(StatusController.class); - private static final String PACKAGE_USER_SEARCH = Util.getPackageName(UserSearchController.class); private static final String ACTION_SINGLESELECT_CHOOSE = "ssc"; @@ -76,15 +75,16 @@ public class StatusController extends BasicController { */ public StatusController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); - PackageTranslator fallbackTrans = new PackageTranslator(PACKAGE_USER_SEARCH, ureq.getLocale()); - this.setTranslator( new PackageTranslator( MY_PACKAGE, ureq.getLocale(), fallbackTrans) ); + Translator fallbackTrans = Util.createPackageTranslator(UserSearchController.class, getLocale()); + setTranslator(Util.createPackageTranslator(StatusController.class, getLocale(), fallbackTrans)); // use the PropertyHandlerTranslator as tableCtr translator propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()); - myContent = this.createVelocityContainer("deletestatus"); + myContent = createVelocityContainer("deletestatus"); Roles roles = ureq.getUserSession().getRoles(); - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + isAdministrativeUser = CoreSpringFactory.getImpl(BaseSecurityModule.class).isUserAllowedAdminProps(roles); + //(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); userDeleteStatusPanel = new Panel("userDeleteStatusPanel"); userDeleteStatusPanel.addListener(this); @@ -94,7 +94,7 @@ public class StatusController extends BasicController { initializeTableController(ureq); - this.putInitialPanel(myContent); + putInitialPanel(myContent); } /** @@ -133,7 +133,7 @@ public class StatusController extends BasicController { tableCtr = new TableController(tableConfig, ureq, getWindowControl(), this.propertyHandlerTranslator); listenTo(tableCtr); - List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); + List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); tdm = new UserDeleteTableModel(l, ureq.getLocale(), isAdministrativeUser); tdm.addColumnDescriptors(tableCtr, null,"table.identity.deleteEmail"); tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", translate("action.activate"))); @@ -144,7 +144,7 @@ public class StatusController extends BasicController { } protected void updateUserList() { - List l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); + List<Identity> l = UserDeletionManager.getInstance().getIdentitiesInDeletionProcess(UserDeletionManager.getInstance().getDeleteEmailDuration()); tdm.setObjects(l); tableCtr.setTableDataModel(tdm); } diff --git a/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java b/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java index e498a769b930ba2756a3ada3438aa33c19ddb7c0..4e7cd6f07a377d253387ab10178e21547fdade7a 100644 --- a/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java +++ b/src/main/java/org/olat/admin/user/delete/UserDeleteTableModel.java @@ -46,9 +46,10 @@ import org.olat.user.propertyhandlers.UserPropertyHandler; * * @author Christian Guretzki */ -public class UserDeleteTableModel extends DefaultTableDataModel { +public class UserDeleteTableModel extends DefaultTableDataModel<Identity> { - private List<UserPropertyHandler> userPropertyHandlers; + private final List<UserPropertyHandler> userPropertyHandlers; + private final boolean isAdministrativeUser; private static final String usageIdentifyer = UserDeleteTableModel.class.getCanonicalName(); /** @@ -57,9 +58,10 @@ public class UserDeleteTableModel extends DefaultTableDataModel { * @param locale * @param isAdministrativeUser */ - public UserDeleteTableModel(List objects, Locale locale, boolean isAdministrativeUser) { + public UserDeleteTableModel(List<Identity> objects, Locale locale, boolean isAdministrativeUser) { super(objects); - setLocale(locale); + setLocale(locale); + this.isAdministrativeUser = isAdministrativeUser; userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser); } @@ -74,14 +76,16 @@ public class UserDeleteTableModel extends DefaultTableDataModel { */ public void addColumnDescriptors(TableController tableCtr, String actionCommand) { // first column is the username - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 0, actionCommand, getLocale())); + if(isAdministrativeUser) { + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.login", 301, actionCommand, getLocale())); + } // followed by the users fields for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); boolean visible = UserManager.getInstance().isMandatoryUserProperty(usageIdentifyer , userPropertyHandler); - tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale())); + tableCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i, null, getLocale())); } - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.lastlogin", getColumnCount()-2, actionCommand, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.user.lastlogin", 302, actionCommand, getLocale())); } /** @@ -92,7 +96,7 @@ public class UserDeleteTableModel extends DefaultTableDataModel { */ public void addColumnDescriptors(TableController tableCtr, String actionCommand, String deleteEmailKey) { addColumnDescriptors(tableCtr, actionCommand); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor(deleteEmailKey, getColumnCount()-1, actionCommand, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor(deleteEmailKey, 303, actionCommand, getLocale())); } /** @@ -100,18 +104,19 @@ public class UserDeleteTableModel extends DefaultTableDataModel { * @see org.olat.core.gui.components.table.DefaultTableDataModel#getValueAt(int, int) */ public Object getValueAt(int row, int col) { - Identity identity = (Identity) getObject(row); + Identity identity = getObject(row); User user = identity.getUser(); - if (col == 0) { - return identity.getName();//TODO username - } else if (col < userPropertyHandlers.size()+1) { - UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col-1); + + if (col == 301) { + return identity.getName(); + } else if (col < userPropertyHandlers.size()) { + UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(col); String value = userPropertyHandler.getUserProperty(user, getLocale()); return (value == null ? "n/a" : value); - } else if(col == userPropertyHandlers.size()+1) { + } else if(col == 302) { Date lastLogin= identity.getLastLogin(); return (lastLogin == null ? "n/a" : lastLogin); - } else if(col == userPropertyHandlers.size()+2) { + } else if(col == 303) { LifeCycleEntry lcEvent = LifeCycleManager.createInstanceFor(identity).lookupLifeCycleEntry(UserDeletionManager.SEND_DELETE_EMAIL_ACTION); if (lcEvent == null) { return "n/a"; diff --git a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java index bc8821b459450ba7f14a761c8469d7cb8f732068..c785f614e444f7e20976b64c350a05f54ea6a976 100644 --- a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java +++ b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java @@ -184,7 +184,7 @@ public class UserDeletionManager extends BasicManager { * @param lastLoginDuration last-login duration in month * @return List of Identity objects */ - public List getDeletableIdentities(int lastLoginDuration) { + public List<Identity> getDeletableIdentities(int lastLoginDuration) { Calendar lastLoginLimit = Calendar.getInstance(); lastLoginLimit.add(Calendar.MONTH, - lastLoginDuration); logDebug("lastLoginLimit=" + lastLoginLimit); @@ -194,7 +194,7 @@ public class UserDeletionManager extends BasicManager { + " and (ident.lastLogin = null or ident.lastLogin < :lastLogin)"; DBQuery dbq = DBFactory.getInstance().createQuery(queryStr); dbq.setDate("lastLogin", lastLoginLimit.getTime()); - List identities = dbq.list(); + List<Identity> identities = dbq.list(); // 2. get all 'active' identities in deletion process queryStr = "select ident from org.olat.core.id.Identity as ident" + " , org.olat.commons.lifecycle.LifeCycleEntry as le" @@ -202,7 +202,7 @@ public class UserDeletionManager extends BasicManager { + " and le.persistentTypeName ='" + IdentityImpl.class.getName() + "'" + " and le.action ='" + SEND_DELETE_EMAIL_ACTION + "' "; dbq = DBFactory.getInstance().createQuery(queryStr); - List identitiesInProcess = dbq.list(); + List<Identity> identitiesInProcess = dbq.list(); // 3. Remove all identities in deletion-process from all inactive-identities identities.removeAll(identitiesInProcess); return identities; @@ -214,7 +214,7 @@ public class UserDeletionManager extends BasicManager { * @param deleteEmailDuration Duration of user-deletion-process in days * @return List of Identity objects */ - public List getIdentitiesInDeletionProcess(int deleteEmailDuration) { + public List<Identity> getIdentitiesInDeletionProcess(int deleteEmailDuration) { Calendar deleteEmailLimit = Calendar.getInstance(); deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration-1)); logDebug("deleteEmailLimit=" + deleteEmailLimit); @@ -235,7 +235,7 @@ public class UserDeletionManager extends BasicManager { * @param deleteEmailDuration Duration of user-deletion-process in days * @return List of Identity objects */ - public List getIdentitiesReadyToDelete(int deleteEmailDuration) { + public List<Identity> getIdentitiesReadyToDelete(int deleteEmailDuration) { Calendar deleteEmailLimit = Calendar.getInstance(); deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1)); logDebug("deleteEmailLimit=" + deleteEmailLimit); diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java index ec426c3e7ca636ce5cdd6c0c7e7b852d2d536f9d..5a5802efaee7a18266b92733a915d6749a213d05 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java @@ -62,13 +62,13 @@ public class BaseSecurityModule extends AbstractOLATModule { private static final String USERSEARCH_ADMINPROPS_USERS = "userSearchAdminPropsForUsers"; private static final String USERSEARCH_ADMINPROPS_AUTHORS = "userSearchAdminPropsForAuthors"; private static final String USERSEARCH_ADMINPROPS_USERMANAGERS = "userSearchAdminPropsForUsermanagers"; - private static final String USERSEARCH_ADMINPROPS_GROUPMANAGERS = "userSearchAdminPropsForUsermanagers"; + private static final String USERSEARCH_ADMINPROPS_GROUPMANAGERS = "userSearchAdminPropsForGroupmanagers"; private static final String USERSEARCH_ADMINPROPS_ADMINISTRATORS = "userSearchAdminPropsForAdministrators"; private static final String USERSEARCHAUTOCOMPLETE_USERS = "userSearchAutocompleteForUsers"; private static final String USERSEARCHAUTOCOMPLETE_AUTHORS = "userSearchAutocompleteForAuthors"; private static final String USERSEARCHAUTOCOMPLETE_USERMANAGERS = "userSearchAutocompleteForUsermanagers"; - private static final String USERSEARCHAUTOCOMPLETE_GROUPMANAGERS = "userSearchAutocompleteForUsermanagers"; + private static final String USERSEARCHAUTOCOMPLETE_GROUPMANAGERS = "userSearchAutocompleteForGroupmanagers"; private static final String USERSEARCHAUTOCOMPLETE_ADMINISTRATORS = "userSearchAutocompleteForAdministrators"; private static final String USERSEARCH_MAXRESULTS = "userSearchMaxResults"; diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java index 35f4650694418184ce430cbe41681732cb17bfa0..07707fee3e87b8a288a80d2ec42fc8e2ec42bcae 100644 --- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java +++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java @@ -53,6 +53,7 @@ import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.version.Versionable; +import org.olat.user.UserManager; /** * Description:<br> @@ -169,8 +170,9 @@ public class HTMLEditorController extends FormBasicController { VelocityContainer vc = (VelocityContainer) flc.getComponent(); if (!lock.isSuccess()) { vc.contextPut("locked", Boolean.TRUE); - vc.contextPut("lockOwner", lock.getOwner().getName());//TODO username - this.editable = false; + String fullname = UserManager.getInstance().getUserDisplayName(lock.getOwner()); + vc.contextPut("lockOwner", fullname); + editable = false; return; } else { vc.contextPut("locked", Boolean.FALSE); diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java index 125983208b4bbd2c35b941bd2f07a613e87db8c7..5f72aba51b4b557bac7c72df3d2272ca31b15a76 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java @@ -52,14 +52,11 @@ import org.dom4j.Document; import org.dom4j.Element; import org.olat.basesecurity.BaseSecurityManager; import org.olat.core.commons.modules.bc.FolderConfig; -import org.olat.core.commons.modules.bc.meta.MetaInfo; import org.olat.core.commons.services.thumbnail.CannotGenerateThumbnailException; import org.olat.core.commons.services.thumbnail.FinalSize; import org.olat.core.commons.services.thumbnail.ThumbnailService; import org.olat.core.gui.util.CSSHelper; import org.olat.core.id.Identity; -import org.olat.core.id.User; -import org.olat.core.id.UserConstants; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; @@ -70,6 +67,7 @@ import org.olat.core.util.vfs.OlatRelPathImpl; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.xml.XMLParser; +import org.olat.user.UserManager; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXParseException; @@ -621,22 +619,15 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo { if (authorIdentKey == null) { return "-"; } else { - Identity identity = BaseSecurityManager.getInstance().loadIdentityByKey(authorIdentKey); - if (identity == null) { - log.warn("Found no idenitiy with key='" + authorIdentKey + "'"); + String fullName = UserManager.getInstance().getUserDisplayName(authorIdentKey); + if (fullName == null) { + log.warn("Found no identity with key='" + authorIdentKey + "'"); return "-"; } - User user = identity.getUser(); - String formattedName = user.getProperty(UserConstants.FIRSTNAME, null); - formattedName = formattedName + " " + user.getProperty(UserConstants.LASTNAME, null); - //TODO: add link to user profile when checking in 4289/4295 and remove reference to loginname - formattedName = formattedName + " (" + identity.getName() + ")";//TODO username - return formattedName; + return fullName; } } - - /** * @return comment */ diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java b/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java index 69041589b1b90c3ef8aae4aaf388863c4ef12862..c54fc0d6480bc2d2ab09fdd36436c4dae0002c59 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/version/DeletedFileListController.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.modules.bc.commands.FolderCommand; import org.olat.core.commons.modules.bc.commands.FolderCommandStatus; @@ -98,7 +99,8 @@ public class DeletedFileListController extends BasicController { deletedFiles = VersionsManager.getInstance().getDeletedFiles(container); userManager = CoreSpringFactory.getImpl(UserManager.class); - isAdmin = ureq.getUserSession().getRoles().isOLATAdmin(); + isAdmin = CoreSpringFactory.getImpl(BaseSecurityModule.class) + .isUserAllowedAdminProps(ureq.getUserSession().getRoles()); TableGuiConfiguration summaryTableConfig = new TableGuiConfiguration(); summaryTableConfig.setDownloadOffered(false); diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java b/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java index 57af17e98a04c3e756da98ba859a1d7a68edb8a4..9fa94027df9d21bd29b648644493dd66517afa69 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/version/RevisionListController.java @@ -32,6 +32,7 @@ import java.util.Locale; import java.util.Map; import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.IdentityShort; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.modules.bc.commands.FolderCommand; @@ -99,7 +100,8 @@ public class RevisionListController extends BasicController { public RevisionListController(UserRequest ureq, WindowControl wControl, Versionable versionedFile, String title, String description) { super(ureq, wControl); - isAdmin = ureq.getUserSession().getRoles().isOLATAdmin(); + isAdmin = CoreSpringFactory.getImpl(BaseSecurityModule.class) + .isUserAllowedAdminProps(ureq.getUserSession().getRoles()); userManager = CoreSpringFactory.getImpl(UserManager.class); //reload the file with all possible precautions @@ -336,7 +338,7 @@ public class RevisionListController extends BasicController { StringBuilder sb = new StringBuilder(); sb.append(userManager.getUserDisplayName(id)); if(isAdmin) { - sb.append(" (").append(name).append(")");//TODO username + sb.append(" (").append(name).append(")"); } return sb.toString(); } diff --git a/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java b/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java index 2c8958a61c20acb176617932ec331ac881437a4d..a3687157edd48341bd7f1267ed067a96bb023b0b 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/version/VersionCommentController.java @@ -61,7 +61,6 @@ public class VersionCommentController extends FormBasicController { initForm(ureq); } - @SuppressWarnings("unused") @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { if(comment && lock) { diff --git a/src/main/java/org/olat/core/util/mail/MailHelper.java b/src/main/java/org/olat/core/util/mail/MailHelper.java index f265da30f50e254991ec0bc3b44daaa3f9ba8b7d..40140429518075ad2cf6f8bf797f02668f1dd0f5 100644 --- a/src/main/java/org/olat/core/util/mail/MailHelper.java +++ b/src/main/java/org/olat/core/util/mail/MailHelper.java @@ -197,8 +197,13 @@ public class MailHelper { for (Identity identity : failedIdentites) { User user = identity.getUser(); warnings.append("<li>"); - warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { user.getProperty(UserConstants.FIRSTNAME, null), user.getProperty(UserConstants.LASTNAME, null), - user.getProperty(UserConstants.EMAIL, null), identity.getName() }));//TODO username + String fullname = UserManager.getInstance().getUserDisplayName(identity); + warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { + user.getProperty(UserConstants.FIRSTNAME, null), + user.getProperty(UserConstants.LASTNAME, null), + user.getProperty(UserConstants.EMAIL, null), + fullname + })); warnings.append("</li>"); } warnings.append("</ul></p>"); diff --git a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java index 107acd347225bc10030cbb4b81d70b1c49bea4b2..7b45463e3107220c9ecea1581038459312fd579f 100644 --- a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java +++ b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java @@ -54,7 +54,7 @@ import org.olat.user.propertyhandlers.UserPropertyHandler; * Initial Date: Jun 23, 2004 * @author gnaegi */ -public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { +public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel<AssessedIdentityWrapper> { private int colCount; private AssessableCourseNode courseNode; @@ -73,7 +73,8 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { private List<String> colMapping; private List<String> userPropertyNameList; - private List<UserPropertyHandler> userPropertyHandlers; + private final boolean isAdministrativeUser; + private final List<UserPropertyHandler> userPropertyHandlers; private static final String usageIdentifyer = AssessedIdentitiesTableDataModel.class.getCanonicalName(); private Translator translator; @@ -83,17 +84,18 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { * @param objects List of wrapped identities (AssessedIdentityWrapper) * @param courseNode the current courseNode */ - public AssessedIdentitiesTableDataModel(List objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser) { + public AssessedIdentitiesTableDataModel(List<AssessedIdentityWrapper> objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser) { this(objects, courseNode, locale, isAdministrativeUser, false); } - public AssessedIdentitiesTableDataModel(List objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser, + public AssessedIdentitiesTableDataModel(List<AssessedIdentityWrapper> objects, AssessableCourseNode courseNode, Locale locale, boolean isAdministrativeUser, boolean compatibilityUserProperties) { super(objects); this.courseNode = courseNode; this.setLocale(locale); this.translator = Util.createPackageTranslator(this.getClass(), locale); + this.isAdministrativeUser = isAdministrativeUser; //fxdiff FXOLAT-108: improve results table of tests identifyer = compatibilityUserProperties ? UserTableDataModel.class.getCanonicalName() : usageIdentifyer; userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor(identifyer, isAdministrativeUser); @@ -141,20 +143,12 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { return colCount; } - /** - * @param row The row number - * @return The wrapped identity for this row - */ - public AssessedIdentityWrapper getWrappedIdentity(int row) { - return (AssessedIdentityWrapper) getObject(row); - } - /** * @param row The row number * @return The identity for this row */ public Identity getIdentity(int row) { - AssessedIdentityWrapper wrappedIdentity = getWrappedIdentity(row); + AssessedIdentityWrapper wrappedIdentity = getObject(row); return wrappedIdentity.getIdentity(); } @@ -162,13 +156,13 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { * @see org.olat.core.gui.components.table.TableDataModel#getValueAt(int, int) */ public Object getValueAt(int row, int col) { - AssessedIdentityWrapper wrappedIdentity = (AssessedIdentityWrapper) getObject(row); + AssessedIdentityWrapper wrappedIdentity = getObject(row); Identity identity = wrappedIdentity.getIdentity(); // lookup the column name first and // deliver value based on the column name String colName = colMapping.get(col); - if (colName.equals(COL_NAME)) return identity.getName();//TODO username + if (colName.equals(COL_NAME)) return identity.getName(); else if (userPropertyNameList.contains(colName)) return identity.getUser().getProperty(colName, getLocale()); else if (colName.equals(COL_DETAILS)) return wrappedIdentity.getDetailsListView(); else if (colName.equals(COL_ATTEMPTS)) return wrappedIdentity.getNodeAttempts(); @@ -235,13 +229,16 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { editCmd = actionCommand; // only selectable if editable } int colCount = 0; - userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", colCount++, editCmd, getLocale())); + + if(isAdministrativeUser) { + userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.name", colCount++, editCmd, getLocale())); + } for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); //fxdiff FXOLAT-108: improve results table of tests boolean visible = UserManager.getInstance().isMandatoryUserProperty(identifyer , userPropertyHandler); - userListCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, null, getLocale())); + userListCtr.addColumnDescriptor(visible, userPropertyHandler.getColumnDescriptor(i+1, editCmd, getLocale())); colCount++; } if ( (courseNode != null) && isNodeOrGroupFocus) { diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java index 0ee9a7861ff149437eb1375eaa0ec496b03da1d9..f5be0532a46b1f94d652e85da5187b4df556c643 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java +++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java @@ -37,6 +37,7 @@ import org.apache.commons.lang.StringEscapeUtils; import org.olat.admin.user.UserTableDataModel; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.SecurityGroup; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; @@ -222,7 +223,9 @@ public class AssessmentMainController extends MainLayoutBasicController implemen propertyHandlerTranslator = UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()); Roles roles = ureq.getUserSession().getRoles(); - isAdministrativeUser = (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); + //was: (roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); main = new Panel("assessmentmain"); @@ -491,7 +494,7 @@ public class AssessmentMainController extends MainLayoutBasicController implemen } else { // all other cases where user can be choosen the assessed identity wrapper is used AssessedIdentitiesTableDataModel userListModel = (AssessedIdentitiesTableDataModel) userListCtr.getTableDataModel(); - this.assessedIdentityWrapper = userListModel.getWrappedIdentity(rowid); + this.assessedIdentityWrapper = userListModel.getObject(rowid); } // init edit controller for this identity and this course node // or use identity assessment overview if no course node is defined @@ -800,7 +803,7 @@ public class AssessmentMainController extends MainLayoutBasicController implemen } // Add the wrapped identities to the table data model - AssessedIdentitiesTableDataModel tdm = new AssessedIdentitiesTableDataModel(wrappedIdentities, courseNode, ureq.getLocale(), isAdministrativeUser, mode == MODE_USERFOCUS); + AssessedIdentitiesTableDataModel tdm = new AssessedIdentitiesTableDataModel(wrappedIdentities, courseNode, getLocale(), isAdministrativeUser, mode == MODE_USERFOCUS); tdm.addColumnDescriptors(userListCtr, CMD_CHOOSE_USER, mode == MODE_NODEFOCUS || mode == MODE_GROUPFOCUS || mode == MODE_USERFOCUS); userListCtr.setTableDataModel(tdm); diff --git a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java index 662c6bdad2610b8745efd3c8360e10d73d8900ea..5c904b4f2ca788215ad829622d08a45e752f6a11 100644 --- a/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java +++ b/src/main/java/org/olat/course/assessment/EfficiencyStatementManager.java @@ -38,8 +38,6 @@ import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.DBQuery; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; -import org.olat.core.id.User; -import org.olat.core.id.UserConstants; import org.olat.core.manager.BasicManager; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.SyncerExecutor; @@ -56,6 +54,7 @@ import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.user.UserDataDeletable; +import org.olat.user.UserManager; import com.thoughtworks.xstream.XStream; @@ -77,6 +76,7 @@ public class EfficiencyStatementManager extends BasicManager implements UserData private static EfficiencyStatementManager INSTANCE; private DB dbInstance; + private UserManager userManager; private RepositoryManager repositoryManager; private final XStream xstream = XStreamHelper.createXStreamInstance(); @@ -111,6 +111,14 @@ public class EfficiencyStatementManager extends BasicManager implements UserData public void setRepositoryManager(RepositoryManager repositoryManager) { this.repositoryManager = repositoryManager; } + + /** + * [used by Spring] + * @param userManager + */ + public void setUserManager(UserManager userManager) { + this.userManager = userManager; + } /** * Updates the users efficiency statement for this course. <p> @@ -145,8 +153,8 @@ public class EfficiencyStatementManager extends BasicManager implements UserData efficiencyStatement.setAssessmentNodes(assessmentNodes); efficiencyStatement.setCourseTitle(userCourseEnv.getCourseEnvironment().getCourseTitle()); efficiencyStatement.setCourseRepoEntryKey(repoEntryKey); - User user = identity.getUser(); - efficiencyStatement.setDisplayableUserInfo(user.getProperty(UserConstants.FIRSTNAME, null) + " " + user.getProperty(UserConstants.LASTNAME, null) + " (" + identity.getName() + ")");//TODO username + String userInfos = userManager.getUserDisplayName(identity); + efficiencyStatement.setDisplayableUserInfo(userInfos); efficiencyStatement.setLastUpdated(System.currentTimeMillis()); UserEfficiencyStatementImpl efficiencyProperty = getUserEfficiencyStatementFull(repoEntryKey, identity); diff --git a/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml b/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml index e8661cafa44b81cb24dc39d0e3cd5f212e0bf1bc..eefed18b2da447bd484a7b8b2e2ca1b9b51e79b5 100644 --- a/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml +++ b/src/main/java/org/olat/course/assessment/_spring/assessmentContext.xml @@ -16,6 +16,7 @@ <bean id="org.olat.course.assessment.EfficiencyStatementManager" class="org.olat.course.assessment.EfficiencyStatementManager"> <property name="dbInstance" ref="database"/> + <property name="userManager" ref="userManager"/> <property name="repositoryManager" ref="repositoryManager"/> </bean> diff --git a/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java b/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java index 4596ae5455ed725d15ca31529c9e5707fd764c0a..fda347cd63edfb0ce2798b0b383d4c776c541f7e 100644 --- a/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java +++ b/src/main/java/org/olat/course/run/preview/PreviewCoursePropertyManager.java @@ -52,7 +52,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP /** * Hashmap contains hasmaps */ - private Map properties = new HashMap(); + private Map<String,List<Property>> properties = new HashMap<String,List<Property>>(); /** * Creates a new course proprerty manager that stores properties per instance. @@ -87,7 +87,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP * @see org.olat.course.properties.CoursePropertyManager#deleteProperty(org.olat.properties.Property) */ public void deleteProperty(Property p) { - List propertyList = getListOfProperties(p); + List<Property> propertyList = getListOfProperties(p); for (int i=0; i < propertyList.size(); i++) { Property propertyElement = (Property)propertyList.get(i); if (propertyElement.getLongValue().equals(p.getLongValue()) @@ -104,7 +104,7 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP * @see org.olat.course.properties.CoursePropertyManager#saveProperty(org.olat.properties.Property) */ public void saveProperty(Property p) { - List propertyList = getListOfProperties(p); + List<Property> propertyList = getListOfProperties(p); // since this is a save (only done once after creation) we // can safely add it to the list without looking for duplicates propertyList.add(p); @@ -120,16 +120,16 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP /** * @see org.olat.course.properties.CoursePropertyManager#listCourseNodeProperties(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String) */ - public List listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { + public List<Property> listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { throw new AssertException("Not implemented for preview."); } /** * @see org.olat.course.properties.CoursePropertyManager#findCourseNodeProperties(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String) */ - public List findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { - List propertiesList = (List)properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? "" : identity.getName()), grp, name)); - if (propertiesList == null) propertiesList = new ArrayList(); + public List<Property> findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { + List<Property> propertiesList = properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? 0l : identity.getKey()), grp, name)); + if (propertiesList == null) propertiesList = new ArrayList<Property>(); return propertiesList; } @@ -137,9 +137,9 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP * @see org.olat.course.properties.CoursePropertyManager#findCourseNodeProperty(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, org.olat.group.BusinessGroup, java.lang.String) */ public Property findCourseNodeProperty(CourseNode node, Identity identity, BusinessGroup grp, String name) { - List propertyList = (List)properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? "" : identity.getName()), grp, name)); + List<Property> propertyList = properties.get(buildPropertyHashKey(buildCourseNodePropertyCategory(node), (identity == null ? 0l : identity.getKey()), grp, name)); if (propertyList == null) return null; - return (Property)propertyList.get(0); + return propertyList.get(0); } @Override @@ -169,23 +169,23 @@ final class PreviewCoursePropertyManager extends BasicManager implements CourseP * @param p * @return list of properties with the same key */ - private List getListOfProperties(Property p) { + private List<Property> getListOfProperties(Property p) { String propertyKey = buildPropertyHashKey(p); // get the list of properties for this key... - List propertyList = (List)properties.get(propertyKey); + List<Property> propertyList = properties.get(propertyKey); if (propertyList == null) { - propertyList = new ArrayList(); + propertyList = new ArrayList<Property>(); properties.put(propertyKey, propertyList); } return propertyList; } - private String buildPropertyHashKey(Property p) {//TODO username - return buildPropertyHashKey(p.getCategory(), (p.getIdentity() == null) ? "" : p.getIdentity().getName(), p.getGrp(), p.getName()); + private String buildPropertyHashKey(Property p) { + return buildPropertyHashKey(p.getCategory(), (p.getIdentity() == null) ? 0l : p.getIdentity().getKey(), p.getGrp(), p.getName()); } - private String buildPropertyHashKey(String category, String identityName, BusinessGroup group, String name) { - return (category + identityName + (group == null ? "" : group.getKey().toString()) + name); + private String buildPropertyHashKey(String category, Long identityKey, BusinessGroup group, String name) { + return (category + identityKey + (group == null ? "" : group.getKey().toString()) + name); } private String buildCourseNodePropertyCategory(CourseNode node) { diff --git a/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java b/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java index 5414e22d3c3b112ea77ce09f244e9ba9f83635ec..ed0492f5930f659c018b1d5fe427c3bf59e64765 100644 --- a/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java +++ b/src/main/java/org/olat/ims/qti/render/ResultsBuilder.java @@ -117,8 +117,7 @@ public class ResultsBuilder { // Add User information Element context = result.addElement("context"); User user = identity.getUser(); - //TODO username - String name = user.getProperty(UserConstants.FIRSTNAME, locale) + " " + user.getProperty(UserConstants.LASTNAME, locale) + " (" + identity.getName() + ")"; + String name = user.getProperty(UserConstants.FIRSTNAME, locale) + " " + user.getProperty(UserConstants.LASTNAME, locale); String instId = user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale); String instName = user.getProperty(UserConstants.INSTITUTIONALNAME, locale); diff --git a/src/main/java/org/olat/ldap/ui/DeletStep00.java b/src/main/java/org/olat/ldap/ui/DeletStep00.java index ea7659ab08f0caea54e6c07c8e8755792932e560..ac43f31877c103a5bdf4fc6b06a44e2d71832457 100644 --- a/src/main/java/org/olat/ldap/ui/DeletStep00.java +++ b/src/main/java/org/olat/ldap/ui/DeletStep00.java @@ -101,8 +101,7 @@ public class DeletStep00 extends BasicStep{ @Override protected void doDispose() { - // TODO Auto-generated method stub - + // } @Override @@ -116,7 +115,6 @@ public class DeletStep00 extends BasicStep{ } @Override - @SuppressWarnings("unused") protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (source == selectAllLink) { multiSelectTree.selectAll(); @@ -128,14 +126,6 @@ public class DeletStep00 extends BasicStep{ } } - - protected boolean validateFormLogic(@SuppressWarnings("unused") - UserRequest ureq){ - return true; - } - - - @SuppressWarnings("unused") @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { textContainer = FormLayoutContainer.createCustomFormLayout("index", getTranslator(), this.velocity_root + "/delet_step00.html"); diff --git a/src/main/java/org/olat/modules/fo/FilterForUserController.java b/src/main/java/org/olat/modules/fo/FilterForUserController.java index a390eba44b0a0c126e47105b2b56057939c34d6e..fb391de1989db2a291e7a8c6f365437a2721a5c1 100644 --- a/src/main/java/org/olat/modules/fo/FilterForUserController.java +++ b/src/main/java/org/olat/modules/fo/FilterForUserController.java @@ -480,7 +480,7 @@ public class FilterForUserController extends BasicController { searchValue = searchValue == null ? null : searchValue.toLowerCase(); for(UserInfo info:stats) { Identity identity = info.getIdentity(); - String name = identity.getName();//TODO username + String name = identity.getName(); if(identity.getName().startsWith(searchValue)) { receiver.addEntry(name, name, info.getLastName() + " " + info.getFirstName(), CSSHelper.CSS_CLASS_USER); @@ -530,7 +530,7 @@ public class FilterForUserController extends BasicController { /** * TableDataModel for the overview of all users in the forum */ - public class UsersTableModel extends BaseTableDataModelWithoutFilter implements TableDataModel { + public class UsersTableModel extends BaseTableDataModelWithoutFilter<UserInfo> implements TableDataModel<UserInfo> { private final List<UserInfo> infos; public UsersTableModel(List<UserInfo> infos) { @@ -540,7 +540,7 @@ public class FilterForUserController extends BasicController { public UserInfo getUserInfo(String username) { for(UserInfo info:infos) { Identity id = info.getIdentity(); - if(username.equals(id.getName())) {//TODO username + if(username.equals(id.getName())) { return info; } } diff --git a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java index eb86a7a4088bb6cdc12d25ee5c247588f87e6950..123e4402cfe66a8de2f0a014bd8bacc5aeb92edc 100644 --- a/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java +++ b/src/main/java/org/olat/modules/wiki/MediaFilesTableModel.java @@ -27,7 +27,6 @@ package org.olat.modules.wiki; import java.util.Date; import java.util.List; -import org.olat.basesecurity.BaseSecurityManager; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.components.table.CustomCssCellRenderer; import org.olat.core.gui.components.table.CustomRenderColumnDescriptor; @@ -86,13 +85,13 @@ public class MediaFilesTableModel extends DefaultTableDataModel<MediaFileElement case 1: long identKey = entry.getCreatedBy(); if (identKey == 0) return "---"; - return userManager.getUserDisplayName(new Long(identKey));//TODO username + return userManager.getUserDisplayName(new Long(identKey)); case 2: return formatter.formatDateAndTime(new Date(entry.getCreationDate())); case 3: long key = entry.getDeletedBy(); if (key == 0) return "---"; - return userManager.getUserDisplayName(new Long(key));//TODO username + return userManager.getUserDisplayName(new Long(key)); case 4: long delDate = entry.getDeletionDate(); if (delDate == 0) return "---"; diff --git a/src/main/java/org/olat/notifications/PersonalRSSFeed.java b/src/main/java/org/olat/notifications/PersonalRSSFeed.java index c671e92395dc46b6016cb802b2e15881e7100698..3a57ca7ab6ab8b105795f7fa9cfe0b8d40abf2cd 100644 --- a/src/main/java/org/olat/notifications/PersonalRSSFeed.java +++ b/src/main/java/org/olat/notifications/PersonalRSSFeed.java @@ -38,6 +38,7 @@ import org.olat.core.util.notifications.NotificationsManager; import org.olat.core.util.notifications.Subscriber; import org.olat.core.util.notifications.SubscriptionInfo; import org.olat.core.util.notifications.SubscriptionItem; +import org.olat.user.UserManager; import com.sun.syndication.feed.synd.SyndContent; import com.sun.syndication.feed.synd.SyndContentImpl; @@ -58,6 +59,8 @@ import com.sun.syndication.feed.synd.SyndImageImpl; public class PersonalRSSFeed extends SyndFeedImpl { + private static final long serialVersionUID = -5246221887165246074L; + /** * Constructor for a RSS document that contains all the users personal * notifications @@ -74,11 +77,11 @@ public class PersonalRSSFeed extends SyndFeedImpl { Locale locale = I18nManager.getInstance().getLocaleOrDefault(user.getPreferences().getLanguage()); Translator translator = Util.createPackageTranslator(PersonalRSSFeed.class, locale); NotificationsManager man = NotificationsManager.getInstance(); - //TODO bookmark List<Bookmark> bookmarks = BookmarkManager.getInstance().findBookmarksByIdentity(identity); - - setTitle(translator.translate("rss.title", new String[] { identity.getName() }));//TODO username + String fullName = UserManager.getInstance().getUserDisplayName(identity); + + setTitle(translator.translate("rss.title", new String[] { fullName })); setLink(RSSUtil.URI_SERVER); - setDescription(translator.translate("rss.description", new String[] { identity.getName() }));//TODO username + setDescription(translator.translate("rss.description", new String[] { fullName })); // create and add an image to the feed SyndImage image = new SyndImageImpl(); @@ -97,21 +100,6 @@ public class PersonalRSSFeed extends SyndFeedImpl { entry.setDescription(description); entries.add(entry); - //TODO bookmark bookmark news - /* - for (Bookmark bookmark : bookmarks) { - SyndEntry item = new SyndEntryImpl(); - item.setTitle(translator.translate("rss.bookmark.title", new String[] { bookmark.getTitle() })); - // create jump in link with factory method from manager - String itemLink = BookmarkManager.getInstance().createJumpInURL(bookmark); - item.setLink(itemLink); - SyndContent itemDescription = new SyndContentImpl(); - itemDescription.setType("text/plain"); - itemDescription.setValue(bookmark.getDescription()); - item.setDescription(itemDescription); - entries.add(item); - }*/ - // notification news // we are only interested in subscribers which listen to a valid publisher List<Subscriber> subs = man.getValidSubscribers(identity); diff --git a/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java b/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java index 1ef1b191a93e377becb714914e18fa5b09aa7b42..b1f04b10f7980a81d6ab6ef74f73cf1ebeb5df15 100644 --- a/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java +++ b/src/main/java/org/olat/repository/delete/service/RepositoryDeletionManager.java @@ -32,6 +32,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Locale; +import java.util.Map; import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.SecurityGroup; @@ -40,7 +42,6 @@ import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.UserConstants; @@ -60,6 +61,7 @@ import org.olat.repository.handlers.RepositoryHandlerFactory; import org.olat.resource.OLATResourceManager; import org.olat.resource.references.ReferenceManager; import org.olat.user.UserDataDeletable; +import org.olat.user.UserManager; /** @@ -81,7 +83,6 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD private static final int DEFAULT_DELETE_EMAIL_DURATION = 30; private static RepositoryDeletionManager INSTANCE; - private static final String PACKAGE = Util.getPackageName(SelectionController.class); public static final String SEND_DELETE_EMAIL_ACTION = "sendDeleteEmail"; private static final String REPOSITORY_DELETED_ACTION = "respositoryEntryDeleted"; @@ -156,14 +157,14 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD return getPropertyByName(DELETE_EMAIL_DURATION_PROPERTY_NAME, DEFAULT_DELETE_EMAIL_DURATION); } - public String sendDeleteEmailTo(List selectedRepositoryEntries, MailTemplate mailTemplate, boolean isTemplateChanged, String key_email_subject, + public String sendDeleteEmailTo(List<RepositoryEntry> selectedRepositoryEntries, MailTemplate mailTemplate, boolean isTemplateChanged, String key_email_subject, String key_email_body, Identity sender, Translator pT) { StringBuilder buf = new StringBuilder(); if (mailTemplate != null) { - HashMap identityRepositoryList = collectRepositoryEntriesForIdentities(selectedRepositoryEntries); + Map<Identity, List<RepositoryEntry>> identityRepositoryList = collectRepositoryEntriesForIdentities(selectedRepositoryEntries); // loop over identity list and send email - for (Iterator iterator = identityRepositoryList.keySet().iterator(); iterator.hasNext();) { - String result = sendEmailToIdentity((Identity) iterator.next(), identityRepositoryList, mailTemplate, isTemplateChanged, key_email_subject, + for (Iterator<Identity> iterator = identityRepositoryList.keySet().iterator(); iterator.hasNext();) { + String result = sendEmailToIdentity(iterator.next(), identityRepositoryList, mailTemplate, isTemplateChanged, key_email_subject, key_email_body, sender, pT); if (result != null) { buf.append(result).append("\n"); @@ -171,8 +172,8 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD } } else { // no template => User decides to sending no delete-email, mark only in lifecycle table 'sendEmail' - for (Iterator iter = selectedRepositoryEntries.iterator(); iter.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry)iter.next(); + for (Iterator<RepositoryEntry> iter = selectedRepositoryEntries.iterator(); iter.hasNext();) { + RepositoryEntry repositoryEntry = iter.next(); logAudit("Repository-Deletion: Move in 'Email sent' section without sending email, repositoryEntry=" + repositoryEntry ); markSendEmailEvent(repositoryEntry); } @@ -186,10 +187,10 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD * @param repositoryList * @return HashMap with Identity as key elements, List of RepositoryEntry as objects */ - private HashMap collectRepositoryEntriesForIdentities(List repositoryList) { - HashMap identityRepositoryList = new HashMap(); - for (Iterator iter = repositoryList.iterator(); iter.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry)iter.next(); + private Map<Identity, List<RepositoryEntry>> collectRepositoryEntriesForIdentities(List<RepositoryEntry> repositoryList) { + Map<Identity, List<RepositoryEntry>> identityRepositoryList = new HashMap<Identity, List<RepositoryEntry>>(); + for (Iterator<RepositoryEntry> iter = repositoryList.iterator(); iter.hasNext();) { + RepositoryEntry repositoryEntry = iter.next(); // Build owner group, list of identities SecurityGroup ownerGroup = repositoryEntry.getOwnerGroup(); @@ -206,10 +207,10 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD for (Iterator<Identity> iterator = ownerIdentities.iterator(); iterator.hasNext();) { Identity identity = iterator.next(); if (identityRepositoryList.containsKey(identity) ) { - List repositoriesOfIdentity = (List)identityRepositoryList.get(identity); + List<RepositoryEntry> repositoriesOfIdentity = identityRepositoryList.get(identity); repositoriesOfIdentity.add(repositoryEntry); } else { - List repositoriesOfIdentity = new ArrayList(); + List<RepositoryEntry> repositoriesOfIdentity = new ArrayList<RepositoryEntry>(); repositoriesOfIdentity.add(repositoryEntry); identityRepositoryList.put(identity, repositoriesOfIdentity); } @@ -220,20 +221,21 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD } - private String sendEmailToIdentity(Identity identity,HashMap identityRepositoryList, MailTemplate template, + private String sendEmailToIdentity(Identity identity, Map<Identity, List<RepositoryEntry>> identityRepositoryList, MailTemplate template, boolean isTemplateChanged, String keyEmailSubject, String keyEmailBody, Identity sender, Translator pT) { MailerWithTemplate mailer = MailerWithTemplate.getInstance(); template.addToContext("responseTo", deletionModule.getEmailResponseTo()); if (!isTemplateChanged) { // Email template has NOT changed => take translated version of subject and body text - Translator identityTranslator = new PackageTranslator(PACKAGE, I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage())); + Locale locale = I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage()); + Translator identityTranslator = Util.createPackageTranslator(SelectionController.class, locale); template.setSubjectTemplate(identityTranslator.translate(keyEmailSubject)); template.setBodyTemplate(identityTranslator.translate(keyEmailBody)); } // loop over all repositoriesOfIdentity to build email message StringBuilder buf = new StringBuilder(); - for (Iterator repoIterator = ((List)identityRepositoryList.get(identity)).iterator(); repoIterator.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry) repoIterator.next(); + for (Iterator<RepositoryEntry> repoIterator = identityRepositoryList.get(identity).iterator(); repoIterator.hasNext();) { + RepositoryEntry repositoryEntry = repoIterator.next(); buf.append("\n ").append( repositoryEntry.getDisplayname() ).append(" / ").append(trimDescription(repositoryEntry.getDescription(), 60)); } template.addToContext("repositoryList", buf.toString()); @@ -248,15 +250,15 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD MailerResult mailerResult = mailer.sendMailAsSeparateMails(null, Collections.singletonList(identity), ccIdentities, template, sender); if (mailerResult.getReturnCode() == MailerResult.OK) { // Email sended ok => set deleteEmailDate - for (Iterator repoIterator = ((List)identityRepositoryList.get(identity)).iterator(); repoIterator.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry) repoIterator.next(); + for (Iterator<RepositoryEntry> repoIterator = identityRepositoryList.get(identity).iterator(); repoIterator.hasNext();) { + RepositoryEntry repositoryEntry = repoIterator.next(); logAudit("Repository-Deletion: Delete-email for repositoryEntry=" + repositoryEntry + "send to identity=" + identity.getName()); markSendEmailEvent(repositoryEntry); } return null; // Send ok => return null } else { - //TODO username - return pT.translate("email.error.send.failed", new String[] {identity.getUser().getProperty(UserConstants.EMAIL, null), identity.getName()} ); + String fullname = UserManager.getInstance().getUserDisplayName(identity); + return pT.translate("email.error.send.failed", new String[] { identity.getUser().getProperty(UserConstants.EMAIL, null), fullname } ); } } @@ -275,7 +277,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD } - public List getDeletableReprositoryEntries(int lastLoginDuration) { + public List<RepositoryEntry> getDeletableReprositoryEntries(int lastLoginDuration) { Calendar lastUsageLimit = Calendar.getInstance(); lastUsageLimit.add(Calendar.MONTH, - lastLoginDuration); logDebug("lastLoginLimit=" + lastUsageLimit); @@ -302,12 +304,12 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD } - private List filterRepositoryWithReferences(List repositoryList) { + private List<RepositoryEntry> filterRepositoryWithReferences(List<RepositoryEntry> repositoryList) { logDebug("filterRepositoryWithReferences repositoryList.size=" + repositoryList.size()); - List filteredList = new ArrayList(); + List<RepositoryEntry> filteredList = new ArrayList<RepositoryEntry>(); int loopCounter = 0; - for (Iterator iter = repositoryList.iterator(); iter.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry) iter.next(); + for (Iterator<RepositoryEntry> iter = repositoryList.iterator(); iter.hasNext();) { + RepositoryEntry repositoryEntry = iter.next(); logDebug("filterRepositoryWithReferences repositoryEntry=" + repositoryEntry); logDebug("filterRepositoryWithReferences repositoryEntry.getOlatResource()=" + repositoryEntry.getOlatResource()); if (OLATResourceManager.getInstance().findResourceable(repositoryEntry.getOlatResource()) != null) { @@ -333,7 +335,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD return filteredList; } - public List getReprositoryEntriesInDeletionProcess(int deleteEmailDuration) { + public List<RepositoryEntry> getReprositoryEntriesInDeletionProcess(int deleteEmailDuration) { Calendar deleteEmailLimit = Calendar.getInstance(); deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1)); logDebug("deleteEmailLimit=" + deleteEmailLimit); @@ -348,7 +350,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD return filterRepositoryWithReferences(dbq.list()); } - public List getReprositoryEntriesReadyToDelete(int deleteEmailDuration) { + public List<RepositoryEntry> getReprositoryEntriesReadyToDelete(int deleteEmailDuration) { Calendar deleteEmailLimit = Calendar.getInstance(); deleteEmailLimit.add(Calendar.DAY_OF_MONTH, - (deleteEmailDuration - 1)); logDebug("deleteEmailLimit=" + deleteEmailLimit); @@ -363,9 +365,9 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD return filterRepositoryWithReferences(dbq.list()); } - public void deleteRepositoryEntries(UserRequest ureq, WindowControl wControl, List repositoryEntryList) { - for (Iterator iter = repositoryEntryList.iterator(); iter.hasNext();) { - RepositoryEntry repositoryEntry = (RepositoryEntry) iter.next(); + public void deleteRepositoryEntries(UserRequest ureq, WindowControl wControl, List<RepositoryEntry> repositoryEntryList) { + for (Iterator<RepositoryEntry> iter = repositoryEntryList.iterator(); iter.hasNext();) { + RepositoryEntry repositoryEntry = iter.next(); RepositoryHandler repositoryHandler = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry); File archiveDir = new File(getArchivFilePath()); if (!archiveDir.exists()) { @@ -400,7 +402,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD // Private Methods ////////////////// private int getPropertyByName(String name, int defaultValue) { - List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name); + List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name); if (properties.size() == 0) { return defaultValue; } else { @@ -409,7 +411,7 @@ public class RepositoryDeletionManager extends BasicManager implements UserDataD } private void setProperty(String propertyName, int value) { - List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName); + List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName); Property property = null; if (properties.size() == 0) { property = PropertyManager.getInstance().createPropertyInstance(null, null, null, PROPERTY_CATEGORY, propertyName, null, new Long(value), null, null); diff --git a/src/main/java/org/olat/search/service/document/InfoMessageDocument.java b/src/main/java/org/olat/search/service/document/InfoMessageDocument.java index 8ccde62c8bc1cc3d94e360071486ef951e11b651..32dbc0368328cf71ed56d5a4d69d8189a8b5054b 100644 --- a/src/main/java/org/olat/search/service/document/InfoMessageDocument.java +++ b/src/main/java/org/olat/search/service/document/InfoMessageDocument.java @@ -44,7 +44,7 @@ public class InfoMessageDocument extends OlatDocument { messageDocument.setTitle(message.getTitle()); messageDocument.setContent(message.getMessage()); - messageDocument.setAuthor(message.getAuthor().getName());//TODO username + messageDocument.setAuthor(message.getAuthor().getName()); messageDocument.setCreatedDate(message.getCreationDate()); messageDocument.setLastChange(message.getCreationDate()); messageDocument.setResourceUrl(searchResourceContext.getResourceUrl());