diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java index eb1688a97252d2a25937394e6b5eada3055ac868..e586886b2f6e7d99eda1194b80decfb001ab352a 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -62,10 +62,10 @@ import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.ScreenMode; +import org.olat.core.gui.control.ScreenMode.Mode; import org.olat.core.gui.control.VetoableCloseController; import org.olat.core.gui.control.WindowBackOffice; import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.ScreenMode.Mode; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.creator.ControllerCreator; import org.olat.core.gui.control.generic.dtabs.Activateable2; @@ -98,6 +98,7 @@ import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.i18n.I18nModule; import org.olat.core.util.prefs.Preferences; import org.olat.core.util.resource.OresHelper; +import org.olat.home.HomeSite; /** * Description:<br> @@ -148,6 +149,8 @@ public class BaseFullWebappController extends BasicController implements ChiefCo // used as link id which is load url safe (e.g. replayable private int dtabCreateCounter = 0; // the sites list + + private SiteInstance userTools; private List<SiteInstance> sites; private Map<SiteInstance, BornSiteInstance> siteToBornSite = new HashMap<SiteInstance, BornSiteInstance>(); //fxdiff BAKS-7 Resume function @@ -360,6 +363,7 @@ public class BaseFullWebappController extends BasicController implements ChiefCo dtabsControllers = new ArrayList<>(); // -- sites -- by definition the first site is activated at the beginning + userTools = new HomeSite(null); sites = baseFullWebappControllerParts.getSiteInstances(ureq, getWindowControl()); if (sites != null && sites.size() == 0) { sites = null; @@ -1057,12 +1061,16 @@ public class BaseFullWebappController extends BasicController implements ChiefCo * java.lang.String, java.lang.String) */ public void activateStatic(UserRequest ureq, String className, List<ContextEntry> entries) { - for (Iterator<SiteInstance> it_sites = sites.iterator(); it_sites.hasNext();) { - SiteInstance site = it_sites.next(); - String cName = site.getClass().getName(); - if (cName.equals(className)) { - activateSite(site, ureq, entries, false); - return; + if(className != null && className.endsWith("HomeSite")) { + activateSite(userTools, ureq, entries, false); + } else { + for (Iterator<SiteInstance> it_sites = sites.iterator(); it_sites.hasNext();) { + SiteInstance site = it_sites.next(); + String cName = site.getClass().getName(); + if (cName.equals(className)) { + activateSite(site, ureq, entries, false); + return; + } } } } diff --git a/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteInstance.java b/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteInstance.java index 805c7b36c7f55639142242de26c35d928919d770..58225588329792aae45d05aea446fc4befeefad9 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteInstance.java +++ b/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteInstance.java @@ -52,7 +52,7 @@ public abstract class AbstractSiteInstance implements SiteInstance { public final Controller createController(UserRequest ureq, WindowControl wControl) { SiteDefinitions siteDefinitions = CoreSpringFactory.getImpl(SiteDefinitions.class); SiteConfiguration config = siteDefinitions.getConfigurationSite(siteDef); - if(StringHelper.containsNonWhitespace(config.getSecurityCallbackBeanId())) { + if(config != null && StringHelper.containsNonWhitespace(config.getSecurityCallbackBeanId())) { String secCallbackBeanId = config.getSecurityCallbackBeanId(); Object siteSecCallback = CoreSpringFactory.getBean(secCallbackBeanId); if (siteSecCallback instanceof SiteSecurityCallback diff --git a/src/main/java/org/olat/home/HomeSite.java b/src/main/java/org/olat/home/HomeSite.java index 51051c96c8886636c7915190abfc17c7963cad0d..dd1e6fe96008bb8746add4d1ac86d47b31aaa7de 100644 --- a/src/main/java/org/olat/home/HomeSite.java +++ b/src/main/java/org/olat/home/HomeSite.java @@ -50,8 +50,7 @@ public class HomeSite extends AbstractSiteInstance { OLATResourceable ores = OresHelper.createOLATResourceableInstance(HomeSite.class, ureq.getIdentity().getKey()); ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, new StateSite(this), wControl, true); - MainLayoutController c = new HomeMainController(ureq, bwControl); - return c; + return new HomeMainController(ureq, bwControl); } /**