diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java index 432ebece1240012c68a7ba9df509287485396a60..c6f8871c33127426687f1d8b1c0a720774db68d6 100644 --- a/src/main/java/org/olat/repository/RepositoryManager.java +++ b/src/main/java/org/olat/repository/RepositoryManager.java @@ -600,6 +600,10 @@ public class RepositoryManager extends BasicManager { * @throws AssertException if the softkey could not be found (strict=true) */ public RepositoryEntry lookupRepositoryEntryBySoftkey(String softkey, boolean strict) { + if(softkey == null || "sf.notconfigured".equals(softkey)) { + return null; + } + StringBuilder sb = new StringBuilder(); sb.append("select v from ").append(RepositoryEntry.class.getName()).append(" v") .append(" inner join fetch v.olatResource as ores ") diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java index 415a7ee7859f0e5e1513fc7f451e56c75be0836c..fe71742f41df0eb5c5793f7301b51df1e9919c2b 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java @@ -582,9 +582,9 @@ public class RepositoryDetailsController extends BasicController implements Gene doCloseDetailView(ureq); return; } else if (sourceLink == downloadButton){ - doDownload(ureq, false); + doDownload(ureq, repositoryEntry, false); } else if (sourceLink == launchButton){ - doLaunch(ureq); + doLaunch(ureq, repositoryEntry); } else if (sourceLink == loginLink){ DispatcherAction.redirectToDefaultDispatcher(ureq.getHttpResp()); } else if (sourceLink.getUserObject() instanceof IdentityShort) { @@ -617,7 +617,7 @@ public class RepositoryDetailsController extends BasicController implements Gene private void doCloseDetailView(UserRequest ureq) { // REVIEW:pb:note:handles jumps from Catalog and Course if (jumpfromcourse && repositoryEntry.getCanLaunch()) { - doLaunch(ureq); + doLaunch(ureq, repositoryEntry); } else { fireEvent(ureq, Event.DONE_EVENT); } @@ -654,28 +654,28 @@ public class RepositoryDetailsController extends BasicController implements Gene * * @param ureq */ - boolean doLaunch(UserRequest ureq) { - RepositoryHandler typeToLaunch = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry); + boolean doLaunch(UserRequest ureq, RepositoryEntry re) { + RepositoryHandler typeToLaunch = RepositoryHandlerFactory.getInstance().getRepositoryHandler(re); if (typeToLaunch == null){ StringBuilder sb = new StringBuilder(translate("error.launch")); sb.append(": No launcher for repository entry: "); - sb.append(repositoryEntry.getKey()); + sb.append(re.getKey()); throw new OLATRuntimeException(RepositoryDetailsController.class,sb.toString(), null); } - if (RepositoryManager.getInstance().lookupRepositoryEntry(repositoryEntry.getKey()) == null) { + if (RepositoryManager.getInstance().lookupRepositoryEntry(re.getKey()) == null) { showInfo("info.entry.deleted"); return false; } try { - String businessPath = "[RepositoryEntry:" + repositoryEntry.getKey() + "]"; + String businessPath = "[RepositoryEntry:" + re.getKey() + "]"; boolean ok = NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl()); if(ok) { fireEvent(ureq, LAUNCHED_EVENT); } return ok; } catch (CorruptedCourseException e) { - logError("Corrupted course: " + repositoryEntry, e); + logError("Corrupted course: " + re, e); return false; } } @@ -731,16 +731,16 @@ public class RepositoryDetailsController extends BasicController implements Gene * * @param ureq */ - void doDownload(UserRequest ureq, boolean backwardsCompatible) { - RepositoryHandler typeToDownload = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry); + void doDownload(UserRequest ureq, RepositoryEntry re, boolean backwardsCompatible) { + RepositoryHandler typeToDownload = RepositoryHandlerFactory.getInstance().getRepositoryHandler(re); if (typeToDownload == null){ StringBuilder sb = new StringBuilder(translate("error.download")); sb.append(": No download handler for repository entry: "); - sb.append(repositoryEntry.getKey()); + sb.append(re.getKey()); throw new OLATRuntimeException(RepositoryDetailsController.class, sb.toString(), null); } - OLATResource ores = OLATResourceManager.getInstance().findResourceable(repositoryEntry.getOlatResource()); + OLATResource ores = OLATResourceManager.getInstance().findResourceable(re.getOlatResource()); if (ores == null) { showError("error.download"); return; @@ -751,7 +751,7 @@ public class RepositoryDetailsController extends BasicController implements Gene if(lockResult==null || (lockResult!=null && lockResult.isSuccess() && !isAlreadyLocked)) { MediaResource mr = typeToDownload.getAsMediaResource(ores, backwardsCompatible); if(mr!=null) { - RepositoryManager.getInstance().incrementDownloadCounter(repositoryEntry); + RepositoryManager.getInstance().incrementDownloadCounter(re); ureq.getDispatchResult().setResultingMediaResource(mr); } else { showError("error.export"); @@ -876,12 +876,12 @@ public class RepositoryDetailsController extends BasicController implements Gene // } else if (source == detailsToolC) { if (cmd.equals(ACTION_DOWNLOAD)) { // download - doDownload(ureq, false); + doDownload(ureq, repositoryEntry, false); return; } else if (cmd.equals(ACTION_DOWNLOAD_BACKWARD_COMPAT)) { - doDownload(ureq, true); + doDownload(ureq, repositoryEntry, true); } else if (cmd.equals(ACTION_LAUNCH)) { // launch resource - doLaunch(ureq); + doLaunch(ureq, repositoryEntry); return; } else if (cmd.equals(ACTION_EDIT)) { // start editor doEdit(ureq); diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java index 4c91c4c374dcfdba8de0d77dde4c4c95bb1968c9..ac086a6c6bd221fe4a06ca99fec59a6dd340c88c 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java @@ -71,7 +71,6 @@ import org.olat.fileresource.types.ScormCPFileResource; import org.olat.fileresource.types.SharedFolderFileResource; import org.olat.fileresource.types.WikiResource; import org.olat.group.BusinessGroupService; -import org.olat.group.model.SearchBusinessGroupParams; import org.olat.ims.qti.fileresource.SurveyFileResource; import org.olat.ims.qti.fileresource.TestFileResource; import org.olat.portfolio.EPTemplateMapResource; @@ -536,8 +535,9 @@ public class RepositoryMainController extends MainLayoutBasicController implemen if (event.equals(Event.CHANGED_EVENT)) { getWindowControl().pop(); removeAsListenerAndDispose(creationWizardController); - detailsController.setEntry(chooseStepsController.getCourseRepositoryEntry(), urequest, false); - detailsController.doLaunch(urequest); + RepositoryEntry re = chooseStepsController.getCourseRepositoryEntry(); + detailsController.setEntry(re, urequest, false); + detailsController.doLaunch(urequest, re); } else if (event.equals(Event.CANCELLED_EVENT)) { // delete entry when the wizard was cancelled detailsController.deleteRepositoryEntry(urequest, getWindowControl(), (RepositoryEntry) chooseStepsController.getCourseRepositoryEntry()); @@ -599,17 +599,19 @@ public class RepositoryMainController extends MainLayoutBasicController implemen if (event.getCommand().equals(RepositoryTableModel.TABLE_ACTION_SELECT_ENTRY)) { // entry has been selected to be launched in the // searchController - ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false); + if (selectedEntry.getCanLaunch()) { - if(!detailsController.doLaunch(urequest)) { + if(!detailsController.doLaunch(urequest, selectedEntry)) { //cannot launch -> open details + ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false); Component toolComp = (toolC == null ? null : toolC.getInitialComponent()); columnsLayoutCtr.setCol2(toolComp); mainPanel.setContent(detailsController.getInitialComponent()); } } else if (selectedEntry.getCanDownload()) { - detailsController.doDownload(urequest, false); + detailsController.doDownload(urequest, selectedEntry, false); } else { // offer details view + ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false); Component toolComp = (toolC == null ? null : toolC.getInitialComponent()); columnsLayoutCtr.setCol2(toolComp); mainPanel.setContent(detailsController.getInitialComponent()); @@ -625,25 +627,19 @@ public class RepositoryMainController extends MainLayoutBasicController implemen } } else if (source == detailsController) { // back from details //fxdiff FXOLAT-128: back/resume function - if (event.equals(Event.DONE_EVENT) || event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) { + if (event.equals(Event.DONE_EVENT)) { if (backtocatalog) { backtocatalog = false; ToolController toolC = catalogCntrllr.createCatalogToolController(); Component toolComp = (toolC == null ? null : toolC.getInitialComponent()); columnsLayoutCtr.setCol2(toolComp); mainPanel.setContent(catalogCntrllr.getInitialComponent()); - //fxdiff BAKS-7 Resume function - if(!event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) { - catalogCntrllr.updateHistory(urequest); - } + catalogCntrllr.updateHistory(urequest); } else { Component toolComp = (mainToolC == null ? null : mainToolC.getInitialComponent()); columnsLayoutCtr.setCol2(toolComp); mainPanel.setContent(main); - //fxdiff BAKS-7 Resume function - if(!event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) { - addToHistory(urequest, searchWindowControl); - } + addToHistory(urequest, searchWindowControl); } } else if (event instanceof EntryChangedEvent) { Component toolComp = (mainToolC == null ? null : mainToolC.getInitialComponent());