Skip to content
Snippets Groups Projects
Commit 75f48004 authored by srosse's avatar srosse
Browse files

OO-1068: +reactivate language selection

parent c07a3275
No related branches found
No related tags found
No related merge requests found
...@@ -121,6 +121,7 @@ public class BaseFullWebappController extends BasicController implements ChiefCo ...@@ -121,6 +121,7 @@ public class BaseFullWebappController extends BasicController implements ChiefCo
private Controller jsLoggerC; private Controller jsLoggerC;
private List<String> bodyCssClasses = new ArrayList<>(3); private List<String> bodyCssClasses = new ArrayList<>(3);
private Boolean reload;
private final ScreenMode screenMode = new ScreenMode(); private final ScreenMode screenMode = new ScreenMode();
private WindowBackOffice wbo; private WindowBackOffice wbo;
...@@ -783,6 +784,16 @@ public class BaseFullWebappController extends BasicController implements ChiefCo ...@@ -783,6 +784,16 @@ public class BaseFullWebappController extends BasicController implements ChiefCo
addCustomThemeJS(); addCustomThemeJS();
} }
@Override
public boolean wishReload(boolean erase) {
boolean screen = getScreenMode().wishScreenModeSwitch(erase);
boolean r = (reload == null ? false : reload.booleanValue());
if(erase && reload != null) {
reload = null;
}
return r || screen;
}
@Override @Override
public ScreenMode getScreenMode() { public ScreenMode getScreenMode() {
...@@ -1107,11 +1118,14 @@ public class BaseFullWebappController extends BasicController implements ChiefCo ...@@ -1107,11 +1118,14 @@ public class BaseFullWebappController extends BasicController implements ChiefCo
} }
} else if(event instanceof LanguageChangedEvent){ } else if(event instanceof LanguageChangedEvent){
LanguageChangedEvent lce = (LanguageChangedEvent)event; LanguageChangedEvent lce = (LanguageChangedEvent)event;
UserRequest ureq = lce.getCurrentUreq();
getTranslator().setLocale(lce.getNewLocale()); getTranslator().setLocale(lce.getNewLocale());
initialize(lce.getCurrentUreq()); initialize(ureq);
//TODO WindowManager winman = Windows.getWindows(ureq).getWindowManager();
//initialPanel.popContent(); initializeBase(ureq, winman, initialPanel);
//initialPanel.pushContent(mainVc); initialPanel.setContent(mainVc);
reload = Boolean.TRUE;
} else if (event instanceof ChiefControllerMessageEvent) { } else if (event instanceof ChiefControllerMessageEvent) {
// msg can be set to show only on one node or on all nodes // msg can be set to show only on one node or on all nodes
String msg = GlobalStickyMessage.getGlobalStickyMessage();//either null, or the global message or the per-node-message String msg = GlobalStickyMessage.getGlobalStickyMessage();//either null, or the global message or the per-node-message
......
...@@ -39,6 +39,7 @@ import org.json.JSONException; ...@@ -39,6 +39,7 @@ import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import org.olat.core.CoreSpringFactory; import org.olat.core.CoreSpringFactory;
import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.DBFactory;
import org.olat.core.dispatcher.DispatcherModule;
import org.olat.core.dispatcher.mapper.MapperService; import org.olat.core.dispatcher.mapper.MapperService;
import org.olat.core.gui.GUIInterna; import org.olat.core.gui.GUIInterna;
import org.olat.core.gui.GlobalSettings; import org.olat.core.gui.GlobalSettings;
...@@ -335,12 +336,12 @@ public class Window extends AbstractComponent { ...@@ -335,12 +336,12 @@ public class Window extends AbstractComponent {
// 2.) collect dirty components (top-down, return from sub-path when first dirty node met) // 2.) collect dirty components (top-down, return from sub-path when first dirty node met)
// 3.) return to sender... // 3.) return to sender...
boolean didDispatch = false; boolean didDispatch = false;
boolean switchScreenMode = false; boolean forceReload = false;
if (validForDispatching) { if (validForDispatching) {
DispatchResult dispatchResult = doDispatchToComponent(ureq, null); // FIXME:fj:c enable time stats for ajax-mode DispatchResult dispatchResult = doDispatchToComponent(ureq, null); // FIXME:fj:c enable time stats for ajax-mode
didDispatch = dispatchResult.isDispatch(); didDispatch = dispatchResult.isDispatch();
incTimestamp = dispatchResult.isIncTimestamp(); incTimestamp = dispatchResult.isIncTimestamp();
switchScreenMode = dispatchResult.isSwitchScreenMode(); forceReload = dispatchResult.isForceReload();
if (isDebugLog) { if (isDebugLog) {
long durationAfterDoDispatchToComponent = System.currentTimeMillis() - debug_start; long durationAfterDoDispatchToComponent = System.currentTimeMillis() - debug_start;
log.debug("Perf-Test: Window durationAfterDoDispatchToComponent=" + durationAfterDoDispatchToComponent); log.debug("Perf-Test: Window durationAfterDoDispatchToComponent=" + durationAfterDoDispatchToComponent);
...@@ -350,7 +351,7 @@ public class Window extends AbstractComponent { ...@@ -350,7 +351,7 @@ public class Window extends AbstractComponent {
MediaResource mmr = null; MediaResource mmr = null;
//REVIEW:PB: this will be the code allowing back forward navigation //REVIEW:PB: this will be the code allowing back forward navigation
//-----> if (didDispatch || inlineAfterBackForward) { //-----> if (didDispatch || inlineAfterBackForward) {
if (switchScreenMode) { if (forceReload) {
//force RELOAD with a redirect to itself //force RELOAD with a redirect to itself
String reRenderUri = buildURIFor(this, timestampID, null); String reRenderUri = buildURIFor(this, timestampID, null);
Command rmrcom = CommandFactory.createParentRedirectTo(reRenderUri); Command rmrcom = CommandFactory.createParentRedirectTo(reRenderUri);
...@@ -614,9 +615,11 @@ public class Window extends AbstractComponent { ...@@ -614,9 +615,11 @@ public class Window extends AbstractComponent {
debugMsg.append("sync_bdisp:").append(syncIntroDiff).append(LOG_SEPARATOR); debugMsg.append("sync_bdisp:").append(syncIntroDiff).append(LOG_SEPARATOR);
} }
boolean forceReload = false;
if (dispatch) { if (dispatch) {
DispatchResult dispatchResult = doDispatchToComponent(ureq, debugMsg); DispatchResult dispatchResult = doDispatchToComponent(ureq, debugMsg);
boolean didDispatch = dispatchResult.isDispatch(); boolean didDispatch = dispatchResult.isDispatch();
forceReload = dispatchResult.isForceReload();
incTimestamp = dispatchResult.isIncTimestamp(); incTimestamp = dispatchResult.isIncTimestamp();
if (isDebugLog) { if (isDebugLog) {
long dstop = System.currentTimeMillis(); long dstop = System.currentTimeMillis();
...@@ -670,8 +673,13 @@ public class Window extends AbstractComponent { ...@@ -670,8 +673,13 @@ public class Window extends AbstractComponent {
return; return;
} }
} }
if (inline) { if(forceReload) {
//force RELOAD with a redirect to itself (http redirect because we are in non-Ajax mode)
String reRenderUri = buildURIFor(this, timestampID, null);
String url = reRenderUri;
DispatcherModule.redirectTo(response, url);
} else if (inline) {
// do inline rendering. // do inline rendering.
ComponentCollection top = getContentPane(); ComponentCollection top = getContentPane();
...@@ -1189,9 +1197,8 @@ public class Window extends AbstractComponent { ...@@ -1189,9 +1197,8 @@ public class Window extends AbstractComponent {
} }
ChiefController chief = Windows.getWindows(ureq).getChiefController(); ChiefController chief = Windows.getWindows(ureq).getChiefController();
boolean switchScreenMode = chief == null ? boolean reload = chief == null ? false : chief.wishReload(true);
false : chief.getScreenMode().wishScreenModeSwitch(true); return new DispatchResult(toDispatch, incTimestamp, reload);
return new DispatchResult(toDispatch, incTimestamp, switchScreenMode);
} }
private void appendDispatchDebugInfos(Component target, StringBuilder debugMsg) { private void appendDispatchDebugInfos(Component target, StringBuilder debugMsg) {
...@@ -1319,20 +1326,20 @@ public class Window extends AbstractComponent { ...@@ -1319,20 +1326,20 @@ public class Window extends AbstractComponent {
class DispatchResult { class DispatchResult {
private final boolean dispatch; private final boolean dispatch;
private final boolean incTimestamp; private final boolean incTimestamp;
private final boolean switchScreenMode; private final boolean forceReload;
public DispatchResult(boolean dispatch, boolean incTimestamp, boolean switchScreenMode) { public DispatchResult(boolean dispatch, boolean incTimestamp, boolean forceReload) {
this.dispatch = dispatch; this.dispatch = dispatch;
this.incTimestamp = incTimestamp; this.incTimestamp = incTimestamp;
this.switchScreenMode = switchScreenMode; this.forceReload = forceReload;
} }
public boolean isDispatch() { public boolean isDispatch() {
return dispatch; return dispatch;
} }
public boolean isSwitchScreenMode() { public boolean isForceReload() {
return switchScreenMode; return forceReload;
} }
public boolean isIncTimestamp() { public boolean isIncTimestamp() {
......
...@@ -45,6 +45,8 @@ public interface ChiefController extends Controller { ...@@ -45,6 +45,8 @@ public interface ChiefController extends Controller {
public ScreenMode getScreenMode(); public ScreenMode getScreenMode();
public boolean wishReload(boolean erase);
/** /**
* Set a class to the &lt;body&gt; * Set a class to the &lt;body&gt;
* @param cssClass * @param cssClass
......
...@@ -63,6 +63,11 @@ public abstract class DefaultChiefController extends DefaultController implement ...@@ -63,6 +63,11 @@ public abstract class DefaultChiefController extends DefaultController implement
this.window = window; this.window = window;
} }
@Override
public boolean wishReload(boolean erase) {
return false;
}
@Override @Override
public ScreenMode getScreenMode() { public ScreenMode getScreenMode() {
return screenMode; return screenMode;
......
...@@ -26,6 +26,8 @@ package org.olat.login; ...@@ -26,6 +26,8 @@ package org.olat.login;
import org.olat.core.commons.fullWebApp.BaseFullWebappController; import org.olat.core.commons.fullWebApp.BaseFullWebappController;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.Windows;
import org.olat.core.gui.control.ChiefController;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.creator.AutoCreator; import org.olat.core.gui.control.creator.AutoCreator;
...@@ -42,11 +44,13 @@ import org.olat.core.gui.control.creator.ControllerCreator; ...@@ -42,11 +44,13 @@ import org.olat.core.gui.control.creator.ControllerCreator;
public class DMZContentControllerCreator implements ControllerCreator { public class DMZContentControllerCreator implements ControllerCreator {
@Override @Override
public Controller createController(UserRequest lureq, WindowControl lwControl) { public Controller createController(UserRequest ureq, WindowControl lwControl) {
DmzBFWCParts dmzSitesAndNav = new DmzBFWCParts(); DmzBFWCParts dmzSitesAndNav = new DmzBFWCParts();
AutoCreator contentControllerCreator = new AutoCreator(); AutoCreator contentControllerCreator = new AutoCreator();
contentControllerCreator.setClassName(LoginAuthprovidersController.class.getName()); contentControllerCreator.setClassName(LoginAuthprovidersController.class.getName());
dmzSitesAndNav.setContentControllerCreator(contentControllerCreator); dmzSitesAndNav.setContentControllerCreator(contentControllerCreator);
return new BaseFullWebappController(lureq, dmzSitesAndNav); ChiefController cc = new BaseFullWebappController(ureq, dmzSitesAndNav);
Windows.getWindows(ureq.getUserSession()).setChiefController(cc);
return cc;
} }
} }
\ 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