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

Merge OpenOLAT default branch to OpenOLAT qti with f2da2de8d7deb2eac84f88cc95e95ce804c492b4

parents dc369b5f 7376e246
No related branches found
No related tags found
No related merge requests found
...@@ -103,7 +103,8 @@ public class ResumeController extends FormBasicController implements SupportsAft ...@@ -103,7 +103,8 @@ public class ResumeController extends FormBasicController implements SupportsAft
boolean interception = false; boolean interception = false;
if(isREST(ureq)) { if(isREST(ureq)) {
//do nothing String url = getRESTRedirectURL(ureq);
redirect(ureq, url);
} else if(!historyModule.isResumeEnabled()) { } else if(!historyModule.isResumeEnabled()) {
String url = toUrl(getLandingBC(ureq)); String url = toUrl(getLandingBC(ureq));
redirect(ureq, url); redirect(ureq, url);
...@@ -170,6 +171,18 @@ public class ResumeController extends FormBasicController implements SupportsAft ...@@ -170,6 +171,18 @@ public class ResumeController extends FormBasicController implements SupportsAft
if(usess.getEntry("AuthDispatcher:entryUrl") != null) return true; if(usess.getEntry("AuthDispatcher:entryUrl") != null) return true;
return false; return false;
} }
private String getRESTRedirectURL(UserRequest ureq) {
UserSession usess = ureq.getUserSession();
String url = (String)usess.getEntry("AuthDispatcher:businessPath");
if(url == null) {
url = (String)usess.getEntry("AuthDispatcher:entryUrl");
}
List<ContextEntry> ces = BusinessControlFactory.getInstance().createCEListFromString(url);
return BusinessControlFactory.getInstance().getAsRestPart(ces, true);
}
@Override @Override
protected void doDispose() { protected void doDispose() {
......
...@@ -250,7 +250,8 @@ public class BaseFullWebappController extends BasicController implements DTabs, ...@@ -250,7 +250,8 @@ public class BaseFullWebappController extends BasicController implements DTabs,
} }
if(assessmentGuardCtrl == null && (aftLHookCtr == null || aftLHookCtr.isDisposed()) if(assessmentGuardCtrl == null && (aftLHookCtr == null || aftLHookCtr.isDisposed())
&& usess.getEntry("AuthDispatcher:entryUrl") == null) { && usess.getEntry("AuthDispatcher:entryUrl") == null
&& usess.getEntry("AuthDispatcher:businessPath") == null) {
String bc = initializeDefaultSite(ureq); String bc = initializeDefaultSite(ureq);
if(StringHelper.containsNonWhitespace(bc) && usess.getEntry("redirect-bc") == null) { if(StringHelper.containsNonWhitespace(bc) && usess.getEntry("redirect-bc") == null) {
usess.putEntry("redirect-bc", bc); usess.putEntry("redirect-bc", bc);
......
...@@ -20,15 +20,26 @@ ...@@ -20,15 +20,26 @@
package org.olat.repository; package org.olat.repository;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.olat.core.CoreSpringFactory;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.navigation.SiteConfiguration;
import org.olat.core.gui.control.navigation.SiteDefinitions;
import org.olat.core.gui.control.navigation.SiteSecurityCallback;
import org.olat.core.id.OLATResourceable;
import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.ContextEntry;
import org.olat.core.id.context.ContextEntryControllerCreator; import org.olat.core.id.context.ContextEntryControllerCreator;
import org.olat.core.id.context.DefaultContextEntryControllerCreator; import org.olat.core.id.context.DefaultContextEntryControllerCreator;
import org.olat.core.id.context.TabContext;
import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.core.util.StringHelper;
import org.olat.repository.site.CatalogSite; import org.olat.repository.site.CatalogSite;
import org.olat.repository.site.RepositorySite; import org.olat.repository.site.CatalogSiteDef;
import org.olat.repository.site.MyCoursesSite;
/** /**
* Description:<br> * Description:<br>
...@@ -39,6 +50,8 @@ import org.olat.repository.site.RepositorySite; ...@@ -39,6 +50,8 @@ import org.olat.repository.site.RepositorySite;
*/ */
public class CatalogContextEntryControllerCreator extends DefaultContextEntryControllerCreator { public class CatalogContextEntryControllerCreator extends DefaultContextEntryControllerCreator {
private static final OLog log = Tracing.createLoggerFor(CatalogContextEntryControllerCreator.class);
private final RepositoryModule repositoryModule; private final RepositoryModule repositoryModule;
public CatalogContextEntryControllerCreator(RepositoryModule repositoryModule) { public CatalogContextEntryControllerCreator(RepositoryModule repositoryModule) {
...@@ -52,10 +65,32 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon ...@@ -52,10 +65,32 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon
@Override @Override
public String getSiteClassName(List<ContextEntry> ces, UserRequest ureq) { public String getSiteClassName(List<ContextEntry> ces, UserRequest ureq) {
if(repositoryModule.isCatalogSiteEnabled()) { if(isCatalogSiteVisible(ureq)) {
return CatalogSite.class.getName(); return CatalogSite.class.getName();
} else { } else {
return RepositorySite.class.getName(); return MyCoursesSite.class.getName();
}
}
private boolean isCatalogSiteVisible(UserRequest ureq) {
if(repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogSiteEnabled()) {
try {
CatalogSiteDef siteDef = CoreSpringFactory.getImpl(CatalogSiteDef.class);
SiteDefinitions siteDefinitions = CoreSpringFactory.getImpl(SiteDefinitions.class);
SiteConfiguration config = siteDefinitions.getConfigurationSite(siteDef);
if(config != null && StringHelper.containsNonWhitespace(config.getSecurityCallbackBeanId())) {
String secCallbackBeanId = config.getSecurityCallbackBeanId();
Object siteSecCallback = CoreSpringFactory.getBean(secCallbackBeanId);
if (siteSecCallback instanceof SiteSecurityCallback && !((SiteSecurityCallback)siteSecCallback).isAllowedToLaunchSite(ureq)) {
return false;
}
}
} catch (Exception e) {
log.error("Cannot find if the user is allowed to launch the catalog.", e);
}
return true;
} else {
return false;
} }
} }
...@@ -63,4 +98,17 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon ...@@ -63,4 +98,17 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon
public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) { public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) {
return repositoryModule.isCatalogEnabled(); return repositoryModule.isCatalogEnabled();
} }
@Override
public TabContext getTabContext(UserRequest ureq, OLATResourceable ores, ContextEntry mainEntry, List<ContextEntry> entries) {
//My courses need the catalog entry
List<ContextEntry> redirectEntries = new ArrayList<>();
if(entries == null || entries.isEmpty() || !entries.get(0).equals(mainEntry)) {
redirectEntries.add(mainEntry);
}
if(entries != null && entries.size() > 0) {
redirectEntries.addAll(entries);
}
return new TabContext(getTabName(mainEntry, ureq), ores, redirectEntries);
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment