diff --git a/src/main/java/de/bps/course/nodes/cl/ChecklistCourseNodeConfiguration.java b/src/main/java/de/bps/course/nodes/cl/ChecklistCourseNodeConfiguration.java index 6e630ec21dccefe55d068383d909a7a3c81dac90..90949a971d8fa9ecf0f9dd108bb341dbd9695ad7 100644 --- a/src/main/java/de/bps/course/nodes/cl/ChecklistCourseNodeConfiguration.java +++ b/src/main/java/de/bps/course/nodes/cl/ChecklistCourseNodeConfiguration.java @@ -19,10 +19,8 @@ */ package de.bps.course.nodes.cl; -import java.util.List; import java.util.Locale; -import org.olat.core.extensions.ExtensionResource; import org.olat.core.gui.translator.Translator; import org.olat.core.util.Util; import org.olat.course.nodes.AbstractCourseNodeConfiguration; @@ -81,26 +79,4 @@ public class ChecklistCourseNodeConfiguration extends AbstractCourseNodeConfigur Translator translator = Util.createPackageTranslator(this.getClass(), locale, fallback); return translator.translate("title_cl"); } - - /** - * @see org.olat.core.extensions.OLATExtension#getExtensionCSS() - */ - public ExtensionResource getExtensionCSS() { - return null; - } - - /** - * @see org.olat.core.extensions.OLATExtension#getExtensionResources() - */ - public List getExtensionResources() { - return null; - } - - /** - * @see org.olat.core.extensions.OLATExtension#getName() - */ - public String getName() { - return getAlias(); - } - } diff --git a/src/main/java/org/olat/_spring/extensionContext.xml b/src/main/java/org/olat/_spring/extensionContext.xml index 4015e1c541281908414843f3ba5d87a7ed9d5f1a..ee1ab52c43d2b4dba331f6d3ecaf250eacd3b630 100644 --- a/src/main/java/org/olat/_spring/extensionContext.xml +++ b/src/main/java/org/olat/_spring/extensionContext.xml @@ -264,8 +264,6 @@ </list> </property> </bean> - - <!-- the "systemconfig" parent node --> <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> @@ -363,6 +361,25 @@ </list> </property> </bean> + <!-- Security admin. panel --> + <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> + <property name="order" value="7205" /> + <property name="actionController"> + <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> + <property name="className" value="org.olat.admin.security.SecurityAdminController"/> + </bean> + </property> + <property name="navigationKey" value="secadmin" /> + <property name="i18nActionKey" value="admin.menu.title"/> + <property name="i18nDescriptionKey" value="admin.menu.title.alt"/> + <property name="translationPackage" value="org.olat.admin.security"/> + <property name="parentTreeNodeIdentifier" value="sysconfigParent" /> + <property name="extensionPoints"> + <list> + <value>org.olat.admin.SystemAdminMainController</value> + </list> + </property> + </bean> <!-- the folder menu-entry (reset thumbnails...) --> <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints" > diff --git a/src/main/java/org/olat/admin/security/SecurityAdminController.java b/src/main/java/org/olat/admin/security/SecurityAdminController.java new file mode 100644 index 0000000000000000000000000000000000000000..139c36d0bd101bf4b4127cc2bce978ad7c0161e5 --- /dev/null +++ b/src/main/java/org/olat/admin/security/SecurityAdminController.java @@ -0,0 +1,93 @@ +/** + * <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.admin.security; + +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; + +/** + * + * Initial date: 23.12.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SecurityAdminController extends FormBasicController { + + private MultipleSelectionElement wikiEl, topFrameEl; + private final BaseSecurityModule securityModule; + + public SecurityAdminController(UserRequest ureq, WindowControl wControl) { + super(ureq, wControl); + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormTitle("sec.title"); + setFormDescription("sec.description"); + setFormContextHelp("org.olat.admin.security", "ced-sec.html", "help.hover.sec"); + + String[] frameKeys = new String[]{ "on" }; + String[] frameValues = new String[]{ "" }; + + topFrameEl = uifactory.addCheckboxesHorizontal("sec.topframe", "sec.topframe", formLayout, frameKeys, frameValues, null); + topFrameEl.select("on", securityModule.isForceTopFrame()); + topFrameEl.addActionListener(this, FormEvent.ONCHANGE); + + wikiEl = uifactory.addCheckboxesHorizontal("sec.wiki", "sec.wiki", formLayout, frameKeys, frameValues, null); + wikiEl.select("on", securityModule.isWikiEnabled()); + wikiEl.addActionListener(this, FormEvent.ONCHANGE); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if(topFrameEl == source) { + boolean enabled = topFrameEl.isAtLeastSelected(1); + securityModule.setForceTopFrame(enabled); + } else if(wikiEl == source) { + boolean enabled = wikiEl.isAtLeastSelected(1); + securityModule.setWikiEnabled(enabled); + } + super.formInnerEvent(ureq, source, event); + } + + @Override + protected void formOK(UserRequest ureq) { + // + } + + + + +} diff --git a/src/main/java/org/olat/admin/security/_chelp/ced-sec.html b/src/main/java/org/olat/admin/security/_chelp/ced-sec.html new file mode 100644 index 0000000000000000000000000000000000000000..d8d2bace3d578cfe2ea100f00f39e2acef78f017 --- /dev/null +++ b/src/main/java/org/olat/admin/security/_chelp/ced-sec.html @@ -0,0 +1 @@ +$r.translate("chelp.sec1") diff --git a/src/main/java/org/olat/admin/security/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/security/_i18n/LocalStrings_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..7f234fe55cff3cef04235ed9d02f7f8a3cd3ead6 --- /dev/null +++ b/src/main/java/org/olat/admin/security/_i18n/LocalStrings_de.properties @@ -0,0 +1,11 @@ +#Thu Aug 06 11:28:42 CEST 2009 +admin.menu.title=Sicherheit +admin.menu.title.alt=Sicherheitsaspekten von OpenOLAT konfigurieren +chelp.sec1=Sicherheitsaspekten von OpenOLAT... +chelp.ced-sec.title=Sicherheitsaspekten von OpenOLAT +help.hover.sec=Hilfe zur Sicherheits in OpenOLAT konfigurieren +sec.title=Sicherheitsaspekten von OpenOLAT +sec.description=Sie k\u00F6nnen hier ein paar Sicherheitsentscheidung nehmen +sec.topframe=Enforce top frame +sec.wiki=Wiki + diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java index ae24edd79328307421f670ff7b22b045847db6cb..b884a1cbbef0f5421edd88a80b183e3f7b7343dd 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java @@ -81,7 +81,9 @@ public class BaseSecurityModule extends AbstractOLATModule { private static final String USERINFOS_TUNNEL_CBB = "userInfosTunnelCourseBuildingBlock"; - + private static final String FORCE_TOP_FRAME = "forceTopFrame"; + private static final String WIKI_ENABLED = "wiki"; + /** * default values */ @@ -124,6 +126,9 @@ public class BaseSecurityModule extends AbstractOLATModule { private String userSearchAutocompleteForAdministrators; private String userInfosTunnelCourseBuildingBlock; + + private String forceTopFrame; + private String wikiEnabled; private BaseSecurityModule(String defaultAuthProviderIdentifier) { @@ -189,6 +194,9 @@ public class BaseSecurityModule extends AbstractOLATModule { userSearchMaxResults = getStringConfigParameter(USERSEARCH_MAXRESULTS, "-1", true); userInfosTunnelCourseBuildingBlock = getStringConfigParameter(USERINFOS_TUNNEL_CBB, "disabled", true); + + forceTopFrame = getStringConfigParameter(FORCE_TOP_FRAME, "disabled", true); + wikiEnabled = getStringConfigParameter(WIKI_ENABLED, "enabled", true); } @Override @@ -269,6 +277,15 @@ public class BaseSecurityModule extends AbstractOLATModule { if(StringHelper.containsNonWhitespace(enabled)) { userInfosTunnelCourseBuildingBlock = enabled; } + + enabled = getStringPropertyValue(FORCE_TOP_FRAME, true); + if(StringHelper.containsNonWhitespace(enabled)) { + forceTopFrame = enabled; + } + enabled = getStringPropertyValue(WIKI_ENABLED, true); + if(StringHelper.containsNonWhitespace(enabled)) { + wikiEnabled = enabled; + } } @Override @@ -482,6 +499,22 @@ public class BaseSecurityModule extends AbstractOLATModule { public void setUserInfosTunnelCourseBuildingBlock(String enable) { setStringProperty(USERINFOS_TUNNEL_CBB, enable, true); } - - + + public boolean isForceTopFrame() { + return "enabled".equals(forceTopFrame); + } + + public void setForceTopFrame(boolean enable) { + String enabled = enable ? "enabled" : "disabled"; + setStringProperty(FORCE_TOP_FRAME, enabled, true); + } + + public boolean isWikiEnabled() { + return "enabled".equals(wikiEnabled); + } + + public void setWikiEnabled(boolean enable) { + String enabled = enable ? "enabled" : "disabled"; + setStringProperty(WIKI_ENABLED, enabled, true); + } } \ No newline at end of file diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/BaseChiefController.java b/src/main/java/org/olat/core/commons/chiefcontrollers/BaseChiefController.java index 01a305bff17f52e8ef97c18d4f32057760d23103..3051fb0247442c9d795ee26ecc8dfb1983f724da 100644 --- a/src/main/java/org/olat/core/commons/chiefcontrollers/BaseChiefController.java +++ b/src/main/java/org/olat/core/commons/chiefcontrollers/BaseChiefController.java @@ -29,6 +29,8 @@ package org.olat.core.commons.chiefcontrollers; import java.util.HashSet; import java.util.Set; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.dispatcher.Dispatcher; import org.olat.core.dispatcher.mapper.GlobalMapperRegistry; import org.olat.core.dispatcher.mapper.Mapper; @@ -137,6 +139,10 @@ public class BaseChiefController extends DefaultChiefController implements Conte // component-id of mainPanel for the window id mainvc.contextPut("o_winid", mainPanel.getDispatchID()); + + BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + mainvc.contextPut("enforceTopFrame", securityModule.isForceTopFrame()); + // add jsMath library mainvc.contextPut("jsMathEnabled", Boolean.TRUE); // add optional css classes diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/_screenreader/baselayout.html b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/_screenreader/baselayout.html index 5f3709fab1047dfbf9259d483e62f71c1c18a336..938937d486c077f7235bd8c5198e766fdb4b8cad 100644 --- a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/_screenreader/baselayout.html +++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/_screenreader/baselayout.html @@ -24,9 +24,13 @@ o_info.uriprefix="$r.relWinLink()"; o_info.bc="$o_bc"; o_info.dirty_form = "$r.translate("form.dirty")"; o_info.hasFocus = false; -function o2start(){o_init(); +#if($enforceTopFrame) +if (top!=self){top.location=self.location+"?o_winrndo=1";} +#end +function o2start(){ + o_init(); ## js B -$r.renderBodyOnLoadJSFunctionCall() + $r.renderBodyOnLoadJSFunctionCall() ## js E } </script> diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html index f1ff7ed595e5228d9bf00f3cc87c3cfe67cef764..c12271d392190213bb1a6502a90e0c2154d992dc 100644 --- a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html +++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html @@ -37,7 +37,9 @@ o_info.i18n_noresponse_title = "$r.escapeDoubleQuotes($r.translate("server.no.re o_info.i18n_noresponse = "$r.escapeDoubleQuotes($r.translate("server.no.response"))"; ## Initialize zindex manager o_info.zseed = 0; - +#if($enforceTopFrame) +if (top!=self){top.location=self.location+"?o_winrndo=1";} +#end function b_start(){ o_init(); ## js B diff --git a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java index 029e6a6ca45719dd673a96a4c8d3a16911fb3c97..33b19ec06e907e2ed909341633a9ab5194bc4799 100644 --- a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java +++ b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java @@ -78,7 +78,7 @@ public class WindowManagerImpl extends BasicManager implements WindowManager { private InterceptHandler screenreader_interceptHandler = null; - private Map<Class,ComponentRenderer> screenReaderRenderers = new HashMap<Class,ComponentRenderer>(); + private Map<Class<? extends Component>,ComponentRenderer> screenReaderRenderers = new HashMap<>(); private PopupBrowserWindowControllerCreator pbwcc; diff --git a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java index a2f8d900a1c6100018775f3b6a1986e969c4184b..6c5fb20da0a176386cd0b2bb4f5dd6eb70e52e5f 100644 --- a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java +++ b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java @@ -30,6 +30,8 @@ package org.olat.core.gui.exception; import java.util.Date; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.WindowSettings; import org.olat.core.gui.Windows; @@ -50,6 +52,7 @@ import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.HistoryPoint; import org.olat.core.logging.KnownIssueException; import org.olat.core.logging.OLATRuntimeException; +import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; @@ -64,6 +67,7 @@ import org.olat.core.util.i18n.I18nManager; * @author Felix Jost */ public class ExceptionWindowController extends DefaultChiefController { + private static final OLog log = Tracing.createLoggerFor(ExceptionWindowController.class); private static final String PACKAGE = Util.getPackageName(ExceptionWindowController.class); private static final String VELOCITY_ROOT = Util.getPackageVelocityRoot(ExceptionWindowController.class); @@ -78,7 +82,7 @@ public class ExceptionWindowController extends DefaultChiefController { // the idea is that at this stage the throwable still contains a stacktrace but passed into the OLATRuntimeException // below as the cause it somehow gets lost. If this does not turn out to be true then the line below can be removed. // in any case, it is just a log.warn - Tracing.logWarn("ExceptionWindowController<init>: Throwable occurred, logging the full stacktrace:", th, getClass()); + log.warn("ExceptionWindowController<init>: Throwable occurred, logging the full stacktrace:", th); // Disable inline translation mode whenever an exception occurs I18nManager i18nMgr = I18nManager.getInstance(); @@ -87,10 +91,14 @@ public class ExceptionWindowController extends DefaultChiefController { allowBackButton = false; i18nMgr.setMarkLocalizedStringsEnabled(ureq.getUserSession(), false); } - // + Translator trans = new PackageTranslator(PACKAGE, ureq.getLocale()); Formatter formatter = Formatter.getInstance(ureq.getLocale()); msg = new VelocityContainer("olatmain", VELOCITY_ROOT + "/exception_page.html", trans, this); + + BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + msg.contextPut("enforceTopFrame", new Boolean(securityModule.isForceTopFrame())); + // Disallow wrapping of divs around the panel and the main velocity page // (since it contains the "<html><head... intro of the html page, // and thus has better to be replaced as a whole (new page load) instead of diff --git a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html index 925fa9828a9ac728a476ad4a88fe466e3d87473d..a9821b94f731323dd2cff6be7676cbc8f1d08acc 100644 --- a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html +++ b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html @@ -10,7 +10,10 @@ <meta http-equiv="pragma-directive" content="no-cache" /> <meta http-equiv="cache-directive" content="no-cache" /> <script type="text/javascript"> -/* <![CDATA[ */ +/* <![CDATA[ */ +#if($enforceTopFrame) +if (top!=self){top.location=self.location+"?o_winrndo=1";} +#end var o_info = new Object(); /* ]]> */ </script> diff --git a/src/main/java/org/olat/course/nodes/WikiCourseNode.java b/src/main/java/org/olat/course/nodes/WikiCourseNode.java index 2affe7b77c64a46e50fe25aa57ef460b9a130d35..9a661ded554c213fceea4ed5978bbda83b96d03c 100644 --- a/src/main/java/org/olat/course/nodes/WikiCourseNode.java +++ b/src/main/java/org/olat/course/nodes/WikiCourseNode.java @@ -76,7 +76,8 @@ import org.olat.repository.RepositoryManager; * @author Felix Jost */ public class WikiCourseNode extends AbstractAccessableCourseNode { - + private static final long serialVersionUID = -5800975339569440113L; + private static final OLog log = Tracing.createLoggerFor(WikiCourseNode.class); public static final String TYPE = "wiki"; diff --git a/src/main/java/org/olat/course/nodes/_spring/buildingblockContext.xml b/src/main/java/org/olat/course/nodes/_spring/buildingblockContext.xml index e6f97e846bc72449c2586b12b7589c33a5f8f72d..49ed53ecfd94298a2933764a80c9c647b37d558f 100644 --- a/src/main/java/org/olat/course/nodes/_spring/buildingblockContext.xml +++ b/src/main/java/org/olat/course/nodes/_spring/buildingblockContext.xml @@ -4,9 +4,9 @@ xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd"> + http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="org.olat.course.nodes.en" /> diff --git a/src/main/java/org/olat/course/nodes/wiki/WikiCourseNodeConfiguration.java b/src/main/java/org/olat/course/nodes/wiki/WikiCourseNodeConfiguration.java index 7e1124acfb72e81aaa953bfe433b9dabaab58d73..9044945500bcb1123d3407befca106b8a8dbc6a9 100644 --- a/src/main/java/org/olat/course/nodes/wiki/WikiCourseNodeConfiguration.java +++ b/src/main/java/org/olat/course/nodes/wiki/WikiCourseNodeConfiguration.java @@ -28,6 +28,8 @@ package org.olat.course.nodes.wiki; import java.util.List; import java.util.Locale; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.extensions.ExtensionResource; import org.olat.core.gui.translator.Translator; import org.olat.core.util.Util; @@ -39,7 +41,7 @@ import org.olat.modules.wiki.Wiki; /** * * Description:<br> - * TODO: guido Class Description for WikiCourseNodeConfiguration + * Configuration of the wiki course node * */ public class WikiCourseNodeConfiguration extends AbstractCourseNodeConfiguration implements CourseNodeConfiguration { @@ -52,6 +54,11 @@ public class WikiCourseNodeConfiguration extends AbstractCourseNodeConfiguration return new WikiCourseNode(); } + @Override + public boolean isEnabled() { + return CoreSpringFactory.getImpl(BaseSecurityModule.class).isWikiEnabled() && super.isEnabled(); + } + /** * @see org.olat.course.nodes.CourseNodeConfiguration#getLinkText(java.util.Locale) */ diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java index aa1b03271c4af0372e8aba193688ac91eaf98d6b..84d9b50138167c91e64312a555eb320d6713fd28 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java @@ -27,6 +27,7 @@ package org.olat.repository.controllers; import java.util.List; +import org.olat.basesecurity.BaseSecurityModule; import org.olat.catalog.CatalogEntry; import org.olat.catalog.CatalogModule; import org.olat.catalog.ui.CatalogController; @@ -151,6 +152,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen private final CatalogModule catalogModule; private final RepositoryModule repositoryModule; private final RepositoryManager repositoryManager; + private final BaseSecurityModule securityModule; /** * The check for author rights is executed on construction time and then @@ -169,6 +171,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen catalogModule = CoreSpringFactory.getImpl(CatalogModule.class); repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); + securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); // use i18n from RepositoryManager level setTranslator(Util.createPackageTranslator(RepositoryManager.class, ureq.getLocale())); @@ -235,7 +238,9 @@ public class RepositoryMainController extends MainLayoutBasicController implemen mainToolC.addLink(RepositoryAddController.ACTION_ADD_COURSE, translate("tools.add.course"), RepositoryAddController.ACTION_ADD_COURSE, "o_toolbox_course o_sel_repo_import_course"); mainToolC.addLink(RepositoryAddController.ACTION_ADD_CP, translate("tools.add.cp"), RepositoryAddController.ACTION_ADD_CP, "o_toolbox_content o_sel_repo_import_cp"); mainToolC.addLink(RepositoryAddController.ACTION_ADD_SCORM, translate("tools.add.scorm"), RepositoryAddController.ACTION_ADD_SCORM, "o_toolbox_scorm o_sel_repo_import_scorm"); - mainToolC.addLink(RepositoryAddController.ACTION_ADD_WIKI, translate("tools.add.wiki"), RepositoryAddController.ACTION_ADD_WIKI, "o_toolbox_wiki o_sel_repo_import_wiki"); + if(securityModule.isWikiEnabled()) { + mainToolC.addLink(RepositoryAddController.ACTION_ADD_WIKI, translate("tools.add.wiki"), RepositoryAddController.ACTION_ADD_WIKI, "o_toolbox_wiki o_sel_repo_import_wiki"); + } mainToolC.addLink(RepositoryAddController.ACTION_ADD_PODCAST, translate("tools.add.podcast"), RepositoryAddController.ACTION_ADD_PODCAST, "o_toolbox_podcast o_sel_repo_import_podcast"); mainToolC.addLink(RepositoryAddController.ACTION_ADD_BLOG, translate("tools.add.blog"), RepositoryAddController.ACTION_ADD_BLOG, "o_toolbox_blog o_sel_repo_import_blog"); mainToolC.addLink(RepositoryAddController.ACTION_ADD_TEST, translate("tools.add.test"), RepositoryAddController.ACTION_ADD_TEST, "o_toolbox_test o_sel_repo_import_test"); @@ -246,7 +251,9 @@ public class RepositoryMainController extends MainLayoutBasicController implemen mainToolC.addHeader(translate("tools.new.header")); mainToolC.addLink(ACTION_NEW_CREATECOURSE, translate("tools.new.createcourse"), ACTION_NEW_CREATECOURSE, "o_toolbox_course o_sel_repo_new_course"); mainToolC.addLink(ACTION_NEW_CREATECP, translate("tools.new.createcp"), ACTION_NEW_CREATECP, "o_toolbox_content o_sel_repo_new_cp"); - mainToolC.addLink(ACTION_NEW_WIKI, translate("tools.new.wiki"), ACTION_NEW_WIKI, "o_toolbox_wiki o_sel_repo_new_wiki"); + if(securityModule.isWikiEnabled()) { + mainToolC.addLink(ACTION_NEW_WIKI, translate("tools.new.wiki"), ACTION_NEW_WIKI, "o_toolbox_wiki o_sel_repo_new_wiki"); + } mainToolC.addLink(ACTION_NEW_PODCAST, translate("tools.new.podcast"), ACTION_NEW_PODCAST, "o_toolbox_podcast o_sel_repo_new_podcast"); mainToolC.addLink(ACTION_NEW_BLOG, translate("tools.new.blog"), ACTION_NEW_BLOG, "o_toolbox_blog o_sel_repo_new_blog"); if (portfolioModule.isEnabled()){ @@ -321,9 +328,11 @@ public class RepositoryMainController extends MainLayoutBasicController implemen node = new GenericTreeNode(translate("search.scorm"), "search.scorm"); node.setCssClass("o_sel_repo_scorm"); rootNode.addChild(node); - node = new GenericTreeNode(translate("search.wiki"), "search.wiki"); - node.setCssClass("o_sel_repo_wiki"); - rootNode.addChild(node); + if(securityModule.isWikiEnabled()) { + node = new GenericTreeNode(translate("search.wiki"), "search.wiki"); + node.setCssClass("o_sel_repo_wiki"); + rootNode.addChild(node); + } node = new GenericTreeNode(translate("search.podcast"), "search.podcast" ); node.setCssClass("o_sel_repo_podcast"); rootNode.addChild(node); @@ -450,10 +459,12 @@ public class RepositoryMainController extends MainLayoutBasicController implemen searchController.enableBackToSearchFormLink(false); } else if (userObject.equals("search.wiki")) { // search // wiki - main.setPage(VELOCITY_ROOT + "/index2.html"); - mainPanel.setContent(main); - searchController.doSearchByTypeLimitAccess(WikiResource.TYPE_NAME, ureq); - searchController.enableBackToSearchFormLink(false); + if(securityModule.isWikiEnabled()) { + main.setPage(VELOCITY_ROOT + "/index2.html"); + mainPanel.setContent(main); + searchController.doSearchByTypeLimitAccess(WikiResource.TYPE_NAME, ureq); + searchController.enableBackToSearchFormLink(false); + } } else if (userObject.equals("search.podcast")) { // search // podcast main.setPage(VELOCITY_ROOT + "/index2.html"); @@ -788,6 +799,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen cmc.activate(); return; } else if (event.getCommand().equals(ACTION_NEW_WIKI)) { + if(!securityModule.isWikiEnabled()) return; removeAsListenerAndDispose(addController); addController = new RepositoryAddController(urequest, getWindowControl(), RepositoryAddController.ACTION_NEW_WIKI); listenTo(addController); diff --git a/src/main/java/org/olat/shibboleth/MessageWindowController.java b/src/main/java/org/olat/shibboleth/MessageWindowController.java index 4fa734f56860786d8716fb4cfaa46dd72ff4cf16..d56b0a5973b0776a3a14540ba93737edf29c5934 100644 --- a/src/main/java/org/olat/shibboleth/MessageWindowController.java +++ b/src/main/java/org/olat/shibboleth/MessageWindowController.java @@ -26,6 +26,8 @@ package org.olat.shibboleth; +import org.olat.basesecurity.BaseSecurityModule; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.WindowSettings; import org.olat.core.gui.Windows; @@ -36,23 +38,22 @@ import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.control.DefaultChiefController; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowBackOffice; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.helpers.Settings; +import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.Util; /** * * Displays a simple message to the user - * TODO: Lavinia Dumitrescu Class Description for MessageWindowController * * <P> * Initial Date: 05.11.2007 <br> * @author Lavinia Dumitrescu */ public class MessageWindowController extends DefaultChiefController { - private static final String PACKAGE = Util.getPackageName(MessageWindowController.class); + private static final OLog log = Tracing.createLoggerFor(MessageWindowController.class); private static final String VELOCITY_ROOT = Util.getPackageVelocityRoot(MessageWindowController.class); private VelocityContainer msg; @@ -65,11 +66,14 @@ public class MessageWindowController extends DefaultChiefController { * @param supportEmail */ public MessageWindowController(UserRequest ureq, Throwable th, String detailedmessage, String supportEmail) { - Translator trans = new PackageTranslator(PACKAGE, ureq.getLocale()); + Translator trans = Util.createPackageTranslator(MessageWindowController.class, ureq.getLocale()); //Formatter formatter = Formatter.getInstance(ureq.getLocale()); msg = new VelocityContainer("olatmain", VELOCITY_ROOT + "/message.html", trans, this); + + BaseSecurityModule securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); + msg.contextPut("enforceTopFrame", new Boolean(securityModule.isForceTopFrame())); - Tracing.logWarn(th.getMessage() + " *** User info: " + detailedmessage, th.getClass()); + log.warn(th.getMessage() + " *** User info: " + detailedmessage); msg.contextPut("buildversion", Settings.getVersion()); msg.contextPut("detailedmessage", detailedmessage); diff --git a/src/main/java/org/olat/shibboleth/_content/message.html b/src/main/java/org/olat/shibboleth/_content/message.html index 3229b1265ca29ec18505363a11d1c54468c96fb2..776643c57e0202dd257d58a21f9bff15a90717b2 100644 --- a/src/main/java/org/olat/shibboleth/_content/message.html +++ b/src/main/java/org/olat/shibboleth/_content/message.html @@ -19,6 +19,9 @@ <meta http-equiv="pragma-directive" content="no-cache" /> <meta http-equiv="cache-directive" content="no-cache" /> <script type="text/javascript"> +#if($enforceTopFrame) +if (top!=self){top.location=self.location+"?o_winrndo=1";} +#end var o_info = new Object(); </script> ## CSS theme inclusion: first the standard css and second the IE bugfixes