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 6692b17e260886151d50a23f5b3db6449e7f5907..321bf903072b61232de03cf64ac435b4b919ad2b 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -134,18 +134,12 @@ public class BaseFullWebappController extends BasicController implements Generic private Panel initialPanel; private DTabs myDTabsImpl; private static Integer MAX_TAB; - - private boolean invitee = false; public BaseFullWebappController(UserRequest ureq, WindowControl ouisc_wControl, BaseFullWebappControllerParts baseFullWebappControllerParts) { // only-use-in-super-call, since we define our own super(ureq, null); - if(ureq != null && ureq.getUserSession() != null && ureq.getUserSession().getRoles() != null) { - invitee = ureq.getUserSession().getRoles().isInvitee(); - } - this.baseFullWebappControllerParts = baseFullWebappControllerParts; guiMessage = new GUIMessage(); @@ -759,33 +753,33 @@ public class BaseFullWebappController extends BasicController implements Generic } private void popTheTabState(UserRequest ureq) { - if(siteAndTabs.isEmpty()) { + if(siteAndTabs.isEmpty() && sites != null) { SiteInstance home = sites.get(0); BornSiteInstance bs = siteToBornSite.get(home); doActivateSite(home, bs.getGuiStackHandle()); - } - - TabState state = siteAndTabs.remove(siteAndTabs.size() - 1); - if(state.getSite() != null) { - // latest selected static tab - // activate previous chosen static site -> this site has already been - // constructed and is thus in the cache - SiteInstance si = state.getSite(); - BornSiteInstance bs = siteToBornSite.get(si); - // bs != null since clicked previously - GuiStack gsh = bs.getGuiStackHandle(); - doActivateSite(si, gsh); - if(siteToBusinessPath.containsValue(si)) { - ureq.getUserSession().addToHistory(ureq, siteToBusinessPath.get(si)); - } - } else if (state.getDtab() != null && !state.getDtab().getController().isDisposed()) { - DTab tab = state.getDtab(); - doActivateDTab(tab); - if(dtabToBusinessPath.containsKey(tab)) { - ureq.getUserSession().addToHistory(ureq, dtabToBusinessPath.get(tab)); + } else if(!siteAndTabs.isEmpty()) { + TabState state = siteAndTabs.remove(siteAndTabs.size() - 1); + if(state.getSite() != null) { + // latest selected static tab + // activate previous chosen static site -> this site has already been + // constructed and is thus in the cache + SiteInstance si = state.getSite(); + BornSiteInstance bs = siteToBornSite.get(si); + // bs != null since clicked previously + GuiStack gsh = bs.getGuiStackHandle(); + doActivateSite(si, gsh); + if(siteToBusinessPath.containsValue(si)) { + ureq.getUserSession().addToHistory(ureq, siteToBusinessPath.get(si)); + } + } else if (state.getDtab() != null && !state.getDtab().getController().isDisposed()) { + DTab tab = state.getDtab(); + doActivateDTab(tab); + if(dtabToBusinessPath.containsKey(tab)) { + ureq.getUserSession().addToHistory(ureq, dtabToBusinessPath.get(tab)); + } + } else { + popTheTabState(ureq); } - } else { - popTheTabState(ureq); } } @@ -1031,7 +1025,8 @@ public class BaseFullWebappController extends BasicController implements Generic * @return */ public boolean isCanCloseDTab(DTab dtab) { - return !invitee && !(sites == null || sites.isEmpty()); + //can close + return (sites != null && !sites.isEmpty()) || (dtabs != null && dtabs.size() > 1); } private void setCurrent(SiteInstance site, DTab tab) {