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 39d4a9dfa07bdbefb8217c8380a30348408e3004..ca08e4b90b49bdeb9f4debdd0532829712337bce 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManager.java +++ b/src/main/java/de/bps/course/nodes/den/DENManager.java @@ -47,13 +47,15 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.id.UserConstants; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; import org.olat.core.util.CodeHelper; -import org.olat.core.util.WebappHelper; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.SyncerExecutor; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactMessage; import org.olat.core.util.mail.MailTemplate; +import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseFactory; import org.olat.course.ICourse; import org.olat.course.nodes.CourseNodeFactory; @@ -854,12 +856,16 @@ public class DENManager { private void createKalendarEventLinks(ICourse course, DENCourseNode courseNode, KalendarEvent event) { List kalendarEventLinks = event.getKalendarEventLinks(); - StringBuilder extLink = new StringBuilder(); - extLink.append(WebappHelper.getContextRoot()).append("/auth/repo/go?rid="); RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(course, true); - extLink.append(re.getKey()).append("&par=").append(courseNode.getIdent()); + + OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("CourseNode", Long.valueOf(courseNode.getIdent())); + List<ContextEntry> ces = new ArrayList<ContextEntry>(); + ces.add(BusinessControlFactory.getInstance().createContextEntry(re)); + ces.add(BusinessControlFactory.getInstance().createContextEntry(oresNode)); + String extLink = BusinessControlFactory.getInstance().getAsURIString(ces, false); + String iconCssClass = CourseNodeFactory.getInstance().getCourseNodeConfiguration(courseNode.getType()).getIconCSSClass(); - KalendarEventLink link = new KalendarEventLink("COURSE", courseNode.getIdent(), courseNode.getShortTitle(), extLink.toString(), iconCssClass); + KalendarEventLink link = new KalendarEventLink("COURSE", courseNode.getIdent(), courseNode.getShortTitle(), extLink, iconCssClass); kalendarEventLinks.clear(); kalendarEventLinks.add(link); } diff --git a/src/main/java/org/olat/bookmark/BookmarkManager.java b/src/main/java/org/olat/bookmark/BookmarkManager.java index fb73b0e395f46624e64c0422a2494c6956a8daa6..4df68948153e930eb5d8dd268b82e00059cb3e56 100644 --- a/src/main/java/org/olat/bookmark/BookmarkManager.java +++ b/src/main/java/org/olat/bookmark/BookmarkManager.java @@ -54,7 +54,7 @@ public abstract class BookmarkManager extends BasicManager { * @param identity * @return a List of found bookmarks of given subject */ - public abstract List findBookmarksByIdentity(Identity identity); + public abstract List<Bookmark> findBookmarksByIdentity(Identity identity); /** * Finds bookmarks of a specific type for an identity @@ -63,7 +63,7 @@ public abstract class BookmarkManager extends BasicManager { * @param type * @return list of bookmarks for this identity */ - public abstract List findBookmarksByIdentity(Identity identity, String type); + public abstract List<Bookmark> findBookmarksByIdentity(Identity identity, String type); /** * @param changedBookmark diff --git a/src/main/java/org/olat/catalog/CatalogBookmarkHandler.java b/src/main/java/org/olat/catalog/CatalogBookmarkHandler.java index b99e319c16a7a7ca9b7fa73d291ab736e63c844a..ca80f3c77828b6b2c0690d2e5d5dd1f94982b047 100644 --- a/src/main/java/org/olat/catalog/CatalogBookmarkHandler.java +++ b/src/main/java/org/olat/catalog/CatalogBookmarkHandler.java @@ -19,6 +19,8 @@ */ package org.olat.catalog; +import java.util.Collections; + import org.olat.bookmark.Bookmark; import org.olat.bookmark.BookmarkHandler; import org.olat.bookmark.BookmarkManager; @@ -26,6 +28,9 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.dtabs.DTabs; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.site.RepositorySite; /** @@ -63,8 +68,10 @@ public class CatalogBookmarkHandler implements BookmarkHandler { public String createJumpInURL(Bookmark bookmark) { OLATResourceable reores = BookmarkManager.getInstance().getLaunchOlatResourceable(bookmark); // only create jump in urls for bookmarks of type catalog entry - if(reores.getResourceableTypeName().equals(CatalogManager.CATALOGENTRY)){ - return CatalogJumpInHandlerFactory.buildRepositoryDispatchURI(bookmark.getOlatreskey()); + if(reores.getResourceableTypeName().equals(CatalogManager.CATALOGENTRY)){ + OLATResourceable ores = OresHelper.createOLATResourceableInstance(CatalogManager.CATALOGENTRY, bookmark.getOlatreskey()); + ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(ores); + return BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(ce), false); } return null; } diff --git a/src/main/java/org/olat/catalog/CatalogJumpInHandlerFactory.java b/src/main/java/org/olat/catalog/CatalogJumpInHandlerFactory.java index ddd9f11021c06cdde5adeb956f75a0ebe9d16c69..591babd0b1f94795b323ad0418c6e678b13f8944 100644 --- a/src/main/java/org/olat/catalog/CatalogJumpInHandlerFactory.java +++ b/src/main/java/org/olat/catalog/CatalogJumpInHandlerFactory.java @@ -19,15 +19,11 @@ */ package org.olat.catalog; -import java.util.Locale; - -import org.olat.core.dispatcher.DispatcherAction; import org.olat.core.dispatcher.jumpin.JumpInHandlerFactory; import org.olat.core.dispatcher.jumpin.JumpInReceptionist; import org.olat.core.dispatcher.jumpin.JumpInResult; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; -import org.olat.core.helpers.Settings; import org.olat.core.id.OLATResourceable; import org.olat.core.util.resource.OresHelper; import org.olat.repository.site.RepositorySite; @@ -44,44 +40,11 @@ import org.olat.repository.site.RepositorySite; public class CatalogJumpInHandlerFactory implements JumpInHandlerFactory { public static final String CONST_CAID = "caid"; - private static final String CONST_EXTLINK = "cata/go"; public JumpInReceptionist createJumpInHandler(UserRequest ureq) { String catEntryId = ureq.getParameter(CONST_CAID); return new CatalogJumpInReceptionist(catEntryId); } - - /** - * Build a dispatch URI which a user can use to call re directly by entering - * the dispatch URI into his/her browser location bar. - * - * @param catEntryId The catalog entry key - * @return Complete dispatch URI. - */ - public static String buildRepositoryDispatchURI(long catEntryId) { - StringBuffer sb = new StringBuffer(); - sb.append(Settings.getServerContextPathURI()).append(DispatcherAction.PATH_AUTHENTICATED).append(CONST_EXTLINK).append("?").append( - CONST_CAID).append("=").append(catEntryId); - return sb.toString(); - } - - /** - * Build a dispatch URI which a guest user can use to call re directly by - * entering the dispatch URI into his/her browser location bar. - * <p> - * When displaying the URL in a HTML page, don't forget to format the URL with - * Formatter.esc() because this URL contains & characters. - * - * @param catEntryId The catalog entry key - * @param loc The users language - * @return Complete dispatch URI. - */ - public static String buildRepositoryDispatchGuestURI(long catEntryId, Locale loc) { - StringBuffer sb = new StringBuffer(); - sb.append(buildRepositoryDispatchURI(catEntryId)).append("&guest=true&lang=").append(loc.toString()); - return sb.toString(); - } - } /** diff --git a/src/main/java/org/olat/core/dispatcher/DispatcherAction.java b/src/main/java/org/olat/core/dispatcher/DispatcherAction.java index 9df9971e7add21f3f4c0a8d66a8777c1347c7248..71c33de88511d33774c8b2d7a9d9a30b9454eb8a 100644 --- a/src/main/java/org/olat/core/dispatcher/DispatcherAction.java +++ b/src/main/java/org/olat/core/dispatcher/DispatcherAction.java @@ -75,7 +75,6 @@ public class DispatcherAction implements Dispatcher { private Map<String, Dispatcher> dispatchers; // brasato::remove!! - // used by core.dispatcher.jumpin.JumpInManager.getJumpInUri // ............used by BusinessGroupMainRunController // ............used by DropboxScoringViewController // used by olat.basesecurity.AuthHelper.doLogin diff --git a/src/main/java/org/olat/core/dispatcher/jumpin/JumpInHandlerFactory.java b/src/main/java/org/olat/core/dispatcher/jumpin/JumpInHandlerFactory.java index 04469d036f20857645cf372f78e7bfa7de6f22f1..5b6a629d1d0e850d9cd15d07264674e3513ffa95 100644 --- a/src/main/java/org/olat/core/dispatcher/jumpin/JumpInHandlerFactory.java +++ b/src/main/java/org/olat/core/dispatcher/jumpin/JumpInHandlerFactory.java @@ -33,6 +33,7 @@ import org.olat.core.gui.UserRequest; * Initial Date: 23.02.2005 <br> * * @author Felix Jost + * @deprecated Use business path instead */ public interface JumpInHandlerFactory { public JumpInReceptionist createJumpInHandler(UserRequest ureq); diff --git a/src/main/java/org/olat/core/dispatcher/jumpin/JumpInManager.java b/src/main/java/org/olat/core/dispatcher/jumpin/JumpInManager.java index 6920cd60a5cfe3fffb83a602606ba32e44e9c609..d86ff9e1470a108a7d1e28305350ace18c6959f2 100644 --- a/src/main/java/org/olat/core/dispatcher/jumpin/JumpInManager.java +++ b/src/main/java/org/olat/core/dispatcher/jumpin/JumpInManager.java @@ -45,6 +45,7 @@ import org.olat.core.util.servlets.URLEncoder; * Initial Date: 23.02.2005 <br> * * @author Felix Jost + * @deprecated Use business path instead */ public class JumpInManager extends BasicManager { private static JumpInManager INSTANCE; diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index 756c5b6caeca24cf25b15eeac7b8d19c73f1a2a0..8583faa5c00da2c59f886d9c56e579d8cac77dc9 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -426,11 +426,6 @@ public class Window extends Container { long durationAfterHandleDirties = System.currentTimeMillis() - debug_start; Tracing.logDebug("Perf-Test: Window durationAfterHandleDirties=" + durationAfterHandleDirties, Window.class); } - //DUMP FOR EACH CLICK THE CURRENT JumpInPath -> for later usage and debugging. - //System.err.println("V^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^V"); - WindowControl current = (WindowControl)wbackofficeImpl.getWindow().getAttribute("BUSPATH"); - //System.err.println(current != null ? JumpInManager.getRestJumpInUri(current.getBusinessControl()) : "NONE"); - //System.err.println("T^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^T"); wbackofficeImpl.fireCycleEvent(AFTER_INLINE_RENDERING); if (co != null) { // see method handleDirties for the rare case of co == null even if there are dirty components; wbackofficeImpl.sendCommandTo(co); @@ -733,11 +728,6 @@ public class Window extends Container { debugMsg.append("inl_comp:").append(diff).append(LOG_SEPARATOR); } - //DUMP FOR EACH CLICK THE CURRENT JumpInPath -> for later usage and debugging. - //System.err.println("VV^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^VV"); - //WindowControl current = (WindowControl)wbackofficeImpl.getWindow().getAttribute("BUSPATH"); - //System.err.println(current != null ? JumpInManager.getRestJumpInUri(current.getBusinessControl()) : "NONE"); - //System.err.println("TT^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TT"); wbackofficeImpl.fireCycleEvent(AFTER_INLINE_RENDERING); ServletUtil.serveStringResource(request, response, result); if (isDebugLog) { diff --git a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java index 9d39b648c26a62b7a4c7aeb0c1e6ba621fba933f..a7641cbb606f0f67b85d232fc62a153bc438bead 100644 --- a/src/main/java/org/olat/core/id/context/BusinessControlFactory.java +++ b/src/main/java/org/olat/core/id/context/BusinessControlFactory.java @@ -339,7 +339,6 @@ public class BusinessControlFactory { retVal.append(Settings.getServerContextPathURI()) .append("/url/"); - //see code in JumpInManager, cannot be used, as it needs BusinessControl-Elements, not the path String lastEntryString = null; for (ContextEntry contextEntry : ceList) { String ceStr = contextEntry != null ? contextEntry.toString() : "NULL_ENTRY"; @@ -412,7 +411,6 @@ public class BusinessControlFactory { if(ceList == null || ceList.isEmpty()) return ""; StringBuilder retVal = new StringBuilder(); - //see code in JumpInManager, cannot be used, as it needs BusinessControl-Elements, not the path for (ContextEntry contextEntry : ceList) { String ceStr = contextEntry != null ? contextEntry.toString() : "NULL_ENTRY"; if(ceStr.startsWith("[path")) { diff --git a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java index 258c73bd4bcb2228bbabe40a9972fcdbbbe1dfaf..c45d4b57e1f977df39919a9482b513a4e8deac49 100644 --- a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java +++ b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java @@ -27,7 +27,6 @@ package org.olat.course.nodes.ta; import java.io.File; import java.util.List; -import java.util.Locale; import org.apache.velocity.VelocityContext; import org.olat.admin.quota.QuotaConstants; @@ -53,10 +52,13 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.gui.media.FileMediaResource; import org.olat.core.id.Identity; +import org.olat.core.id.OLATResourceable; import org.olat.core.id.UserConstants; +import org.olat.core.id.context.BusinessControl; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; -import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.mail.MailContext; import org.olat.core.util.mail.MailContextImpl; import org.olat.core.util.mail.MailTemplate; @@ -277,9 +279,12 @@ public class DropboxScoringViewController extends BasicController { Identity student = userCourseEnv.getIdentityEnvironment().getIdentity(); am.appendToUserNodeLog(node, coach, student, "FILE UPLOADED: " + folderEvent.getFilename()); String toMail = student.getUser().getProperty(UserConstants.EMAIL, ureq.getLocale()); - Locale locale = I18nManager.getInstance().getLocaleOrDefault(student.getUser().getPreferences().getLanguage()); - String nodeUrl = new URLEncoder().encode("[" + OresHelper.calculateTypeName(CourseNode.class) + ":" + node.getIdent() + "]"); - String link = JumpInManager.getJumpInUri(this.getWindowControl().getBusinessControl()) + nodeUrl; + + OLATResourceable ores = OresHelper.createOLATResourceableInstance(CourseNode.class, Long.valueOf(node.getIdent())); + ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(ores); + BusinessControl bc = BusinessControlFactory.getInstance().createBusinessControl(ce, getWindowControl().getBusinessControl()); + String link = BusinessControlFactory.getInstance().getAsURIString(bc, true); + log.debug("DEBUG : Returnbox notification email with link=" + link); MailTemplate mailTempl = new MailTemplate(translate("returnbox.email.subject"), translate( "returnbox.email.body", new String[] { userCourseEnv.getCourseEnvironment().getCourseTitle(), node.getShortTitle(), diff --git a/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java b/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java index e44698565dc438e6ef3b5efaa3bec033dbdf69ce..ce6ad4cf368e91cc6d883b3d8706f253c6d2db3d 100644 --- a/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java +++ b/src/main/java/org/olat/course/run/calendar/CourseLinkProviderController.java @@ -25,6 +25,7 @@ package org.olat.course.run.calendar; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -46,10 +47,11 @@ 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.helpers.Settings; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; import org.olat.core.util.Util; -import org.olat.course.CourseFactory; +import org.olat.core.util.resource.OresHelper; import org.olat.course.ICourse; import org.olat.course.nodes.CourseNode; import org.olat.repository.RepositoryEntry; @@ -115,12 +117,13 @@ public class CourseLinkProviderController extends BasicController implements Lin private void rebuildKalendarEventLinks(TreeNode node, List selectedNodeIDs, List kalendarEventLinks) { if (selectedNodeIDs.contains(node.getIdent())) { // assemble link - StringBuilder extLink = new StringBuilder(); - extLink.append(Settings.getServerContextPathURI()).append("/auth/repo/go?rid="); - ICourse course = CourseFactory.loadCourse(ores); - RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(course, true); - extLink.append(re.getKey()).append("&par=").append(node.getIdent()); - KalendarEventLink link = new KalendarEventLink(COURSE_LINK_PROVIDER, node.getIdent(), node.getTitle(), extLink.toString(), node.getIconCssClass()); + RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(ores, true); + OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("CourseNode", Long.valueOf(node.getIdent())); + List<ContextEntry> ces = new ArrayList<ContextEntry>(); + ces.add(BusinessControlFactory.getInstance().createContextEntry(re)); + ces.add(BusinessControlFactory.getInstance().createContextEntry(oresNode)); + String extLink = BusinessControlFactory.getInstance().getAsURIString(ces, false); + KalendarEventLink link = new KalendarEventLink(COURSE_LINK_PROVIDER, node.getIdent(), node.getTitle(), extLink, node.getIconCssClass()); kalendarEventLinks.add(link); node.setSelected(true); } diff --git a/src/main/java/org/olat/dispatcher/CatalogExportModuleDispatcher.java b/src/main/java/org/olat/dispatcher/CatalogExportModuleDispatcher.java index 3046c15af9f075b472149208d9191417a1de80da..e5eec43e202e502de8b7cd5408a55f2c7ecc1cf7 100644 --- a/src/main/java/org/olat/dispatcher/CatalogExportModuleDispatcher.java +++ b/src/main/java/org/olat/dispatcher/CatalogExportModuleDispatcher.java @@ -33,6 +33,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; +import java.util.Collections; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.List; @@ -65,12 +66,13 @@ import org.olat.core.gui.render.StringOutput; 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.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; import org.olat.core.util.Util; import org.olat.core.util.WebappHelper; import org.olat.core.util.i18n.I18nModule; -import org.olat.repository.RepoJumpInHandlerFactory; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryIconRenderer; import org.olat.repository.controllers.RepositoryDetailsController; @@ -271,13 +273,17 @@ public class CatalogExportModuleDispatcher implements Dispatcher { Element links = doc.createElement(XML_LINKS); // links container String tmp = ""; + + + ContextEntry contextEntry = BusinessControlFactory.getInstance().createContextEntry(re); + String url = BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(contextEntry), false); switch (re.getAccess()) { // Attention! This uses the switch-case-fall-through mechanism! case RepositoryEntry.ACC_USERS_GUESTS: tmp = catalogExportTranslator.translate(NLS_TABLE_HEADER_ACCESS_GUEST) + tmp; - appendLinkElement(doc, links, XML_LINKTYPE_GUEST, RepoJumpInHandlerFactory.buildRepositoryDispatchURI(re) + "&guest=true&lang=" + I18nModule.getDefaultLocale().toString().toLowerCase()); + appendLinkElement(doc, links, XML_LINKTYPE_GUEST, url + "&guest=true&lang=" + I18nModule.getDefaultLocale().toString().toLowerCase()); case RepositoryEntry.ACC_USERS: tmp = catalogExportTranslator.translate(NLS_TABLE_HEADER_ACCESS_USER) + tmp; case RepositoryEntry.ACC_OWNERS_AUTHORS: tmp = catalogExportTranslator.translate(NLS_TABLE_HEADER_ACCESS_AUTHOR) + tmp; case RepositoryEntry.ACC_OWNERS: tmp = catalogExportTranslator.translate(NLS_TABLE_HEADER_ACCESS_OWNER) + tmp; - appendLinkElement(doc, links, XML_LINKTYPE_LOGIN, RepoJumpInHandlerFactory.buildRepositoryDispatchURI(re)); + appendLinkElement(doc, links, XML_LINKTYPE_LOGIN, url); break; default: tmp = catalogExportTranslator.translate(NLS_TABLE_HEADER_ACCESS_USER); break; diff --git a/src/main/java/org/olat/group/BusinessGroupManagerImpl.java b/src/main/java/org/olat/group/BusinessGroupManagerImpl.java index 6e5883466c189fce2178535c69550e68bb161ffe..dc45582bc75a236045ea2691e9221d3d9252c93a 100644 --- a/src/main/java/org/olat/group/BusinessGroupManagerImpl.java +++ b/src/main/java/org/olat/group/BusinessGroupManagerImpl.java @@ -100,7 +100,6 @@ import org.olat.instantMessaging.InstantMessagingModule; import org.olat.instantMessaging.syncservice.SyncSingleUserTask; import org.olat.notifications.NotificationsManagerImpl; import org.olat.properties.Property; -import org.olat.repository.RepoJumpInHandlerFactory; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.resource.OLATResource; @@ -1548,32 +1547,6 @@ public class BusinessGroupManagerImpl extends BasicManager implements BusinessGr ////////////////// // Private Methods ////////////////// - /** - * Get all learning resources associated with the context from the given group - * and buid a direct jump url to this resources - * @param group - * @return String with direct-jumpin-urls - */ - private String getAllLearningResourcesFor(BusinessGroup group) { - // g - StringBuilder learningResources = new StringBuilder(); - if (group.getGroupContext() != null) { - BGContextManager contextManager = BGContextManagerImpl.getInstance(); - List repoEntries = contextManager.findRepositoryEntriesForBGContext(group.getGroupContext()); - Iterator iter = repoEntries.iterator(); - while (iter.hasNext()) { - RepositoryEntry entry = (RepositoryEntry) iter.next(); - String title = entry.getDisplayname(); - String url = RepoJumpInHandlerFactory.buildRepositoryDispatchURI(entry); - learningResources.append(title); - learningResources.append("\n"); - learningResources.append(url); - learningResources.append("\n\n"); - } - } - return learningResources.toString(); - } - private void addToRoster(Identity ureqIdentity, Identity identity, BusinessGroup group, BGConfigFlags flags) { if (flags.isEnabled(BGConfigFlags.BUDDYLIST)) { if (InstantMessagingModule.isEnabled()) { diff --git a/src/main/java/org/olat/group/ui/BGMailHelper.java b/src/main/java/org/olat/group/ui/BGMailHelper.java index 2b07f7dc812bb65532f1963db9995de3308419ff..5cff4734b895d858e1cdade874bae9d9599d7227 100644 --- a/src/main/java/org/olat/group/ui/BGMailHelper.java +++ b/src/main/java/org/olat/group/ui/BGMailHelper.java @@ -43,6 +43,7 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.User; import org.olat.core.id.UserConstants; +import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.Util; import org.olat.core.util.filter.FilterFactory; import org.olat.core.util.i18n.I18nManager; @@ -191,12 +192,10 @@ public class BGMailHelper { StringBuilder learningResources = new StringBuilder(); if (group.getGroupContext() != null) { BGContextManager contextManager = BGContextManagerImpl.getInstance(); - List repoEntries = contextManager.findRepositoryEntriesForBGContext(group.getGroupContext()); - Iterator iter = repoEntries.iterator(); - while (iter.hasNext()) { - RepositoryEntry entry = (RepositoryEntry) iter.next(); + List<RepositoryEntry> repoEntries = contextManager.findRepositoryEntriesForBGContext(group.getGroupContext()); + for (RepositoryEntry entry: repoEntries) { String title = entry.getDisplayname(); - String url = RepoJumpInHandlerFactory.buildRepositoryDispatchURI(entry); + String url = BusinessControlFactory.getInstance().getURLFromBusinessPathString("[RepositoryEntry:" + entry.getKey() + "]"); learningResources.append(title); learningResources.append(" ("); learningResources.append(url); diff --git a/src/main/java/org/olat/group/ui/management/BGManagementController.java b/src/main/java/org/olat/group/ui/management/BGManagementController.java index 2d2254bb74a1dfdf71db2e982691533c1089a070..0ab121f8eecbf5e942df63e78168884806722585 100644 --- a/src/main/java/org/olat/group/ui/management/BGManagementController.java +++ b/src/main/java/org/olat/group/ui/management/BGManagementController.java @@ -40,7 +40,6 @@ import org.olat.basesecurity.SecurityGroup; import org.olat.collaboration.CollaborationTools; import org.olat.collaboration.CollaborationToolsFactory; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; -import org.olat.core.dispatcher.jumpin.JumpInManager; import org.olat.core.gui.ShortName; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -72,6 +71,7 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.User; import org.olat.core.id.UserConstants; +import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.logging.AssertException; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; @@ -1267,7 +1267,7 @@ public class BGManagementController extends MainLayoutBasicController implements } } } - String resourceUrl = JumpInManager.getJumpInUri(this.getWindowControl().getBusinessControl()); + String resourceUrl = BusinessControlFactory.getInstance().getAsURIString(getWindowControl().getBusinessControl(), true); cmsg.setSubject( businessGroupTranslator.translate("businessgroup.contact.subject", new String[]{ this.currentGroup.getName()} ) ); cmsg.setBodyText( businessGroupTranslator.translate("businessgroup.contact.bodytext", new String[]{ this.currentGroup.getName(), resourceUrl} ) ); CollaborationTools collabTools = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(this.currentGroup); diff --git a/src/main/java/org/olat/modules/webFeed/FeedViewHelper.java b/src/main/java/org/olat/modules/webFeed/FeedViewHelper.java index 04c4bd11b542d7c9a71714e203e88149af029ea0..84f495855f03d74b49fda5c6400d78ea6bf4fd15 100644 --- a/src/main/java/org/olat/modules/webFeed/FeedViewHelper.java +++ b/src/main/java/org/olat/modules/webFeed/FeedViewHelper.java @@ -38,6 +38,7 @@ import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.core.util.filter.Filter; import org.olat.core.util.filter.FilterFactory; +import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseModule; import org.olat.modules.webFeed.dispatching.Path; import org.olat.modules.webFeed.managers.FeedManager; @@ -46,7 +47,6 @@ import org.olat.modules.webFeed.models.Feed; import org.olat.modules.webFeed.models.Item; import org.olat.modules.webFeed.models.ItemPublishDateComparator; import org.olat.modules.webFeed.portfolio.LiveBlogArtefactHandler; -import org.olat.repository.RepoJumpInHandlerFactory; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.resource.OLATResourceManager; @@ -341,12 +341,17 @@ public class FeedViewHelper { RepositoryManager resMgr = RepositoryManager.getInstance(); if (courseId != null && nodeId != null) { OLATResourceable oresCourse = OLATResourceManager.getInstance().findResourceable(courseId, CourseModule.getCourseTypeName()); + OLATResourceable oresNode = OresHelper.createOLATResourceableInstance("CourseNode", Long.valueOf(nodeId)); RepositoryEntry repositoryEntry = resMgr.lookupRepositoryEntry(oresCourse, false); - jumpInLink = RepoJumpInHandlerFactory.buildRepositoryDispatchURI(repositoryEntry, nodeId); + List<ContextEntry> ces = new ArrayList<ContextEntry>(); + ces.add(BusinessControlFactory.getInstance().createContextEntry(repositoryEntry)); + ces.add(BusinessControlFactory.getInstance().createContextEntry(oresNode)); + jumpInLink = BusinessControlFactory.getInstance().getAsURIString(ces, false); } else { RepositoryEntry repositoryEntry = resMgr.lookupRepositoryEntry(feed, false); if (repositoryEntry != null){ - jumpInLink = RepoJumpInHandlerFactory.buildRepositoryDispatchURI(repositoryEntry); + ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(repositoryEntry); + jumpInLink = BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(ce), false); } else { // its a liveblog-feed final BusinessControlFactory bCF = BusinessControlFactory.getInstance(); diff --git a/src/main/java/org/olat/notifications/SubscriptionJumpInHandlerFactory.java b/src/main/java/org/olat/notifications/SubscriptionJumpInHandlerFactory.java index eff285704c4cdd27a5a7dce52168e6a8dfc4f9f8..e0469537bf93d9cb6b20df2fd7bba13127b27709 100644 --- a/src/main/java/org/olat/notifications/SubscriptionJumpInHandlerFactory.java +++ b/src/main/java/org/olat/notifications/SubscriptionJumpInHandlerFactory.java @@ -46,6 +46,7 @@ import org.olat.group.BusinessGroupManagerImpl; * Description: <br> * Initial Date: 23.02.2005 <br> * @author Felix Jost + * @deprecated Use business path instead */ @Deprecated // not to be used after 6.3, all done with businessPaths. //FIXME:FG:6.4 Delete Class and remove from olatextconfig.xml diff --git a/src/main/java/org/olat/repository/RepoBookmarkHandler.java b/src/main/java/org/olat/repository/RepoBookmarkHandler.java index 9a7c3ed8ae9bf9502cf12ab5e66673554810bd35..47295e9a147722249b85b1bf1b75f97c36d17a88 100644 --- a/src/main/java/org/olat/repository/RepoBookmarkHandler.java +++ b/src/main/java/org/olat/repository/RepoBookmarkHandler.java @@ -19,6 +19,8 @@ */ package org.olat.repository; +import java.util.Collections; + import org.olat.ControllerFactory; import org.olat.bookmark.Bookmark; import org.olat.bookmark.BookmarkHandler; @@ -31,6 +33,8 @@ import org.olat.core.gui.control.generic.dtabs.DTab; import org.olat.core.gui.control.generic.dtabs.DTabs; import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.Util; @@ -100,7 +104,9 @@ public class RepoBookmarkHandler implements BookmarkHandler { RepositoryEntry re = rm.lookupRepositoryEntry(reores.getResourceableId()); // only create jump in urls for bookmarks of type repo entry if (re != null) { - return RepoJumpInHandlerFactory.buildRepositoryDispatchURI(re); + ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(reores); + String url = BusinessControlFactory.getInstance().getAsURIString(Collections.singletonList(ce), false); + return url; } return null; } diff --git a/src/main/java/org/olat/repository/RepoJumpInHandlerFactory.java b/src/main/java/org/olat/repository/RepoJumpInHandlerFactory.java index aea673d3208e25679a7f7a39e496b72449f9cf67..aad09716eaa1fd30600ef2c71aebe06f857a1ef4 100644 --- a/src/main/java/org/olat/repository/RepoJumpInHandlerFactory.java +++ b/src/main/java/org/olat/repository/RepoJumpInHandlerFactory.java @@ -25,14 +25,12 @@ package org.olat.repository; -import org.olat.core.dispatcher.DispatcherAction; import org.olat.core.dispatcher.jumpin.JumpInHandlerFactory; import org.olat.core.dispatcher.jumpin.JumpInReceptionist; import org.olat.core.dispatcher.jumpin.JumpInResult; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; -import org.olat.core.helpers.Settings; import org.olat.core.id.OLATResourceable; /** @@ -40,11 +38,11 @@ import org.olat.core.id.OLATResourceable; * * Initial Date: 23.02.2005 <br> * @author Felix Jost + * @deprecated Use business path instead */ public class RepoJumpInHandlerFactory implements JumpInHandlerFactory { private static final String CONST_RID = "rid"; static final String CONST_PAR = "par"; - private static final String CONST_EXTLINK = "repo/go"; /** * @@ -77,27 +75,7 @@ public class RepoJumpInHandlerFactory implements JumpInHandlerFactory { } - /** - * Build a dispatch URI which a user can use to call re directly by entering - * the dispatch URI into his/her browser location bar. - * - * @param re - * @return Complete dispatch URI. - */ - public static String buildRepositoryDispatchURI(RepositoryEntry re) { - return buildRepositoryDispatchURI(re, null); - } - //TODO DOCU + use this in NodeEditController - public static String buildRepositoryDispatchURI(RepositoryEntry re, String initialViewIdentifyer) { - StringBuilder sb = new StringBuilder(); - sb.append(Settings.getServerContextPathURI()).append(DispatcherAction.PATH_AUTHENTICATED).append(CONST_EXTLINK).append("?").append(CONST_RID) - .append("=").append(re.getKey()); - if (initialViewIdentifyer != null) { - sb.append("&").append(CONST_PAR).append("=").append(initialViewIdentifyer); - } - return sb.toString(); - } } diff --git a/src/main/java/org/olat/user/notification/UserJumpInHandlerFactory.java b/src/main/java/org/olat/user/notification/UserJumpInHandlerFactory.java index 01472c0b7da40c7558098ee2b2454bfcc1ce9dbd..6ae52a8a0e9d1c8ec8b1d667d18dfdd0f648f60e 100644 --- a/src/main/java/org/olat/user/notification/UserJumpInHandlerFactory.java +++ b/src/main/java/org/olat/user/notification/UserJumpInHandlerFactory.java @@ -36,10 +36,11 @@ import org.olat.core.id.Identity; * Initial Date: 19 august 2009 <br> * * @author srosse + * @deprecated Use business path instead */ public class UserJumpInHandlerFactory implements JumpInHandlerFactory { - public static final String CONST_EXTLINK = "user/go"; + private static final String CONST_EXTLINK = "user/go"; public static final String CONST_IDENTITY_ID = "idenid"; public JumpInReceptionist createJumpInHandler(UserRequest ureq) {