diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index 26ffcbb1d8843142ae6baafe0b82af0be6506718..ada59dae81e69c54b730408aa2e60e7ef41a3b2d 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -47,6 +47,7 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; import org.olat.core.gui.components.form.flexible.impl.InvalidRequestParameterException; import org.olat.core.gui.components.htmlheader.jscss.CustomCSS; +import org.olat.core.gui.components.htmlheader.jscss.CustomCSSDelegate; import org.olat.core.gui.components.panel.Panel; import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.control.Controller; @@ -95,7 +96,7 @@ import org.olat.core.util.component.ComponentVisitor; * * @author Felix Jost */ -public class Window extends AbstractComponent { +public class Window extends AbstractComponent implements CustomCSSDelegate { private static final OLog log = Tracing.createLoggerFor(Window.class); private static final DispatchResult NO_DISPATCHRESULT = new DispatchResult(false, false, false); @@ -843,6 +844,7 @@ public class Window extends AbstractComponent { this.dTabs = dTabs; } + @Override public CustomCSS getCustomCSS() { return customCSS; } diff --git a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java index 418d18f629f2df24d73c4f6b5240aca4d08fbb4d..119508d36019289ec1ea599f806f604229f455c6 100644 --- a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java +++ b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSS.java @@ -27,7 +27,6 @@ import org.olat.core.dispatcher.mapper.MapperService; import org.olat.core.dispatcher.mapper.manager.MapperKey; import org.olat.core.gui.control.Disposable; import org.olat.core.gui.control.JSAndCSSAdder; -import org.olat.core.logging.LogDelegator; import org.olat.core.util.CodeHelper; import org.olat.core.util.UserSession; import org.olat.core.util.vfs.VFSContainer; @@ -46,7 +45,7 @@ import org.olat.core.util.vfs.VFSManager; * * @author gnaegi */ -public class CustomCSS extends LogDelegator implements Disposable { +public class CustomCSS implements Disposable { private final String relCssFilename; private final String relCssFileIframe; @@ -91,7 +90,6 @@ public class CustomCSS extends LogDelegator implements Disposable { String fulluri = cssUriMapperKey.getUrl() + relCssFilename; // load CSS after the theme jsAndCssComp.addAutoRemovedCssPathName(fulluri, JSAndCSSAdder.CSS_INDEX_AFTER_THEME); - } /** diff --git a/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java new file mode 100644 index 0000000000000000000000000000000000000000..cb970d2bc897b4ee885d8ee17823b55337387933 --- /dev/null +++ b/src/main/java/org/olat/core/gui/components/htmlheader/jscss/CustomCSSDelegate.java @@ -0,0 +1,32 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.gui.components.htmlheader.jscss; + +/** + * + * Initial date: 15 mars 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public interface CustomCSSDelegate { + + public CustomCSS getCustomCSS(); + +} diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java index 9a4ffa0e4afb6e5f6fce9c7bfa4237cb0b859723..43ac1cca8d5343a2e236191f7f270caaade266d9 100644 --- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java +++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java @@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletRequest; import org.olat.core.dispatcher.impl.StaticMediaDispatcher; import org.olat.core.dispatcher.mapper.Mapper; +import org.olat.core.gui.components.htmlheader.jscss.CustomCSSDelegate; import org.olat.core.gui.media.MediaResource; import org.olat.core.gui.media.NotFoundMediaResource; import org.olat.core.gui.media.StringMediaResource; @@ -75,6 +76,7 @@ public class IFrameDeliveryMapper implements Mapper { private String frameId; private String customCssURL; + private CustomCSSDelegate customCssDelegate; private String themeBaseUri; private String customHeaderContent; @@ -169,6 +171,10 @@ public class IFrameDeliveryMapper implements Mapper { public void setCustomCssURL(String customCssURL) { this.customCssURL = customCssURL; } + + public void setCustomCssDelegate(CustomCSSDelegate customCssDelegate) { + this.customCssDelegate = customCssDelegate; + } @Override public MediaResource handle(String relPath, HttpServletRequest request) { @@ -325,6 +331,10 @@ public class IFrameDeliveryMapper implements Mapper { if (customCssURL != null) { // add the custom CSS, e.g. the course css that overrides the standard content css sb.appendCss(customCssURL, "customcss"); + } else if(customCssDelegate != null && customCssDelegate.getCustomCSS() != null + && customCssDelegate.getCustomCSS().getCSSURLIFrame() != null) { + String customCssURL = customCssDelegate.getCustomCSS().getCSSURLIFrame(); + sb.appendCss(customCssURL, "customcss"); } } diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java index a4447acec8edfceaac3ace1af06fe039258eebf0..dcbc6111adb630a2d59c0756359fac34e2d77f36 100644 --- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java +++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java @@ -433,6 +433,7 @@ public class IFrameDisplayController extends BasicController implements GenericE * this event gets fired from the TextMarkerController when the user swiches on/off textmarking * @see org.olat.core.util.event.GenericEventListener#event(org.olat.core.gui.control.Event) */ + @Override public void event(Event event) { if (event instanceof MultiUserEvent) { if (event.getCommand().equals("glossaryOn")) { @@ -440,8 +441,7 @@ public class IFrameDisplayController extends BasicController implements GenericE } else if (event.getCommand().equals("glossaryOff")) { contentMapper.setEnableTextmarking(false); } - } - else if (event.equals(Window.BEFORE_INLINE_RENDERING)){ + } else if (event.equals(Window.BEFORE_INLINE_RENDERING)){ // Set the custom CSS URL that is used by the current tab or site if // available. The reason why we do this here and not in the constructor is // that during the constructing phase this property is not yet set on the @@ -449,7 +449,7 @@ public class IFrameDisplayController extends BasicController implements GenericE Window myWindow = getWindowControl().getWindowBackOffice().getWindow(); CustomCSS currentCustomCSS = myWindow.getCustomCSS(); if (currentCustomCSS != null) { - contentMapper.setCustomCssURL(currentCustomCSS.getCSSURLIFrame()); + contentMapper.setCustomCssDelegate(myWindow); } // done, remove us as listener getWindowControl().getWindowBackOffice().removeCycleListener(this);