diff --git a/src/main/java/org/olat/admin/site/ui/SitesAdminController.java b/src/main/java/org/olat/admin/site/ui/SitesAdminController.java index 75455627ab46edfc618a5dbfd92363e8a4d75190..ce7dd3fe7b88462995f62c6179a950754fb5b373 100644 --- a/src/main/java/org/olat/admin/site/ui/SitesAdminController.java +++ b/src/main/java/org/olat/admin/site/ui/SitesAdminController.java @@ -122,7 +122,9 @@ public class SitesAdminController extends BasicController { if(orderCtrl == null) { orderCtrl = new SitesConfigurationController(ureq, getWindowControl()); listenTo(orderCtrl); - } + } else { + orderCtrl.reload(ureq); + } mainVC.put("segmentCmp", orderCtrl.getInitialComponent()); } diff --git a/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java b/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java index 79fb6808340f13dbb3d3d32f004ca2ca51f4db74..87019c1d8b542068d802ffb0eba5117347fad155 100644 --- a/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java +++ b/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java @@ -49,6 +49,7 @@ import org.olat.core.gui.control.navigation.SiteDefinition; import org.olat.core.gui.control.navigation.SiteDefinitions; import org.olat.core.gui.control.navigation.SiteInstance; import org.olat.core.gui.control.navigation.SiteSecurityCallback; +import org.olat.core.gui.control.navigation.SiteViewSecurityCallback; import org.olat.core.util.StringHelper; import edu.emory.mathcs.backport.java.util.Collections; @@ -74,14 +75,18 @@ public class SitesConfigurationController extends FormBasicController { private SiteDefModel model; private FlexiTableElement tableEl; + private FormItemContainer formLayout; + + private boolean needAlternative = false; + private final Map<String,SiteSecurityCallback> securityCallbacks; public SitesConfigurationController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl, "sites_order"); sitesModule = CoreSpringFactory.getImpl(SiteDefinitions.class); siteDefs = sitesModule.getAllSiteDefinitionsList(); - - Map<String,SiteSecurityCallback> securityCallbacks = CoreSpringFactory.getBeansOfType(SiteSecurityCallback.class); + + securityCallbacks = CoreSpringFactory.getBeansOfType(SiteSecurityCallback.class); //security callbacks secKeys = new String[securityCallbacks.size()]; secValues = new String[securityCallbacks.size()]; @@ -94,6 +99,10 @@ public class SitesConfigurationController extends FormBasicController { } else { secValues[count++] = secEntry.getKey(); } + + if(secEntry.getValue() instanceof SiteViewSecurityCallback) { + needAlternative = true; + } } //alternative controller @@ -118,42 +127,28 @@ public class SitesConfigurationController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + this.formLayout = formLayout; FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(SiteCols.enabled.i18nKey(), SiteCols.enabled.ordinal())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(SiteCols.title.i18nKey(), SiteCols.title.ordinal())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, SiteCols.type.i18nKey(), SiteCols.type.ordinal(), false, null)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(SiteCols.secCallback.i18nKey(), SiteCols.secCallback.ordinal())); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(SiteCols.altController.i18nKey(), SiteCols.altController.ordinal())); + if(needAlternative) { + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(SiteCols.altController.i18nKey(), SiteCols.altController.ordinal())); + } columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, SiteCols.defaultOrder.i18nKey(), SiteCols.defaultOrder.ordinal(), false, null)); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("up", SiteCols.up.ordinal(), "up", new StaticFlexiCellRenderer(" ", "up", "b_small_table_icon b_move_up_icon"))); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("down", SiteCols.down.ordinal(), "down", new StaticFlexiCellRenderer(" ", "up", "b_small_table_icon b_move_down_icon"))); - - //b_move_up_icon - //.b_move_down_ico model = new SiteDefModel(columnsModel); - List<SiteDefRow> configs = new ArrayList<SiteDefRow>(); - for(Map.Entry<String, SiteDefinition> entryDef:siteDefs.entrySet()) { - String id = entryDef.getKey(); - SiteDefinition siteDef = entryDef.getValue(); - SiteInstance site = siteDef.createSite(ureq, getWindowControl()); - String title = "-"; - if(site != null) { - title = site.getNavElement().getTitle(); - } - SiteConfiguration config = sitesModule.getConfigurationSite(id); - SiteDefRow row = new SiteDefRow(siteDef, config, title, formLayout); - configs.add(row); - } - Collections.sort(configs, new RowOrderComparator()); - model.setObjects(configs); - tableEl = uifactory.addTableElement(ureq, getWindowControl(), "sitesTable", model, getTranslator(), formLayout); tableEl.setRendererType(FlexiTableRendererType.classic); + + reload(ureq); } @Override @@ -178,6 +173,19 @@ public class SitesConfigurationController extends FormBasicController { tableEl.getComponent().setDirty(true); } } + } else if(source instanceof SingleSelection) { + if(source.getName().startsWith("site.security.") && source.getUserObject() instanceof SiteDefRow) { + SiteDefRow row = (SiteDefRow)source.getUserObject(); + String selectCallbackId = row.getSecurityCallbackEl().getSelectedKey(); + boolean needAlt = (securityCallbacks.containsKey(selectCallbackId) + && securityCallbacks.get(selectCallbackId) instanceof SiteViewSecurityCallback); + + if(row.getAlternativeControllerEl().isVisible() != needAlt) { + row.getAlternativeControllerEl().setVisible(needAlt); + tableEl.reset(); + } + } + doSaveSettings(); } else if(source instanceof MultipleSelectionElement || source instanceof SingleSelection) { doSaveSettings(); } @@ -189,6 +197,24 @@ public class SitesConfigurationController extends FormBasicController { // } + protected void reload(UserRequest ureq) { + List<SiteDefRow> configs = new ArrayList<SiteDefRow>(); + for(Map.Entry<String, SiteDefinition> entryDef:siteDefs.entrySet()) { + String id = entryDef.getKey(); + SiteDefinition siteDef = entryDef.getValue(); + SiteInstance site = siteDef.createSite(ureq, getWindowControl()); + String title = "-"; + if(site != null) { + title = site.getNavElement().getTitle(); + } + SiteConfiguration config = sitesModule.getConfigurationSite(id); + SiteDefRow row = new SiteDefRow(siteDef, config, title, formLayout); + configs.add(row); + } + Collections.sort(configs, new RowOrderComparator()); + model.setObjects(configs); + } + private void moveUp(SiteDefRow row) { List<SiteDefRow> rows = model.getObjects(); int currentIndex = rows.indexOf(row); @@ -269,10 +295,15 @@ public class SitesConfigurationController extends FormBasicController { secCallbackEl = uifactory.addDropdownSingleselect("site.security." + id, "site.security", formLayout, secKeys, secValues, null); secCallbackEl.addActionListener(SitesConfigurationController.this, FormEvent.ONCHANGE); + secCallbackEl.setUserObject(this); + + boolean needAlt = false; if(StringHelper.containsNonWhitespace(config.getSecurityCallbackBeanId())) { for(String secKey:secKeys) { if(secKey.equals(config.getSecurityCallbackBeanId())) { secCallbackEl.select(secKey, true); + needAlt = (securityCallbacks.containsKey(secKey) + && securityCallbacks.get(secKey) instanceof SiteViewSecurityCallback); } } } @@ -282,6 +313,7 @@ public class SitesConfigurationController extends FormBasicController { altControllerEl = uifactory.addDropdownSingleselect("site.alternative." + id, "site.alternative", formLayout, altKeys, altValues, null); altControllerEl.addActionListener(SitesConfigurationController.this, FormEvent.ONCHANGE); + altControllerEl.setVisible(needAlt); if(StringHelper.containsNonWhitespace(config.getAlternativeControllerBeanId())) { for(String altKey:altKeys) { if(altKey.equals(config.getAlternativeControllerBeanId())) { diff --git a/src/main/java/org/olat/core/gui/control/_spring/sitedefContext.xml b/src/main/java/org/olat/core/gui/control/_spring/sitedefContext.xml index 031a5e2858ae7d94deb320e233c59267d14aa07a..fa1c6fbde8b04e0370faf54d42dcab510a78cacc 100644 --- a/src/main/java/org/olat/core/gui/control/_spring/sitedefContext.xml +++ b/src/main/java/org/olat/core/gui/control/_spring/sitedefContext.xml @@ -67,7 +67,10 @@ <bean id="managersSiteSecurityCallback" class="org.olat.core.gui.control.navigation.callback.ManagersSecurityCallback"/> <bean id="registredSiteSecurityCallback" class="org.olat.core.gui.control.navigation.callback.RegistredUserSecurityCallback"/> - + + <!-- for development purpose + <bean id="registredSiteWithTeaserSecurityCallback" class="org.olat.core.gui.control.navigation.callback.RegistredUserGuestTeaserSecurityCallback"/> + --> <bean id="restrictToAuthorSiteSecurityCallback" class="org.olat.core.gui.control.navigation.callback.SiteSecurityCallbackWithRolesRestriction"> <property name="limitToRole" value="author"/> diff --git a/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteDefinition.java b/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteDefinition.java index 935d1ab376e60b9b2aadf7bed990d9a667f3ab90..ce8091869f88becc4b8887e07c31b57c58c51b0a 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteDefinition.java +++ b/src/main/java/org/olat/core/gui/control/navigation/AbstractSiteDefinition.java @@ -52,8 +52,10 @@ public abstract class AbstractSiteDefinition extends AbstractConfigOnOff impleme SiteConfiguration config = getSiteConfiguration(); String secCallbackBeanId = config.getSecurityCallbackBeanId(); - SiteSecurityCallback siteSecCallback = (SiteSecurityCallback)CoreSpringFactory.getBean(secCallbackBeanId); - if (siteSecCallback != null && !siteSecCallback.isAllowedToViewSite(ureq)) { + Object siteSecCallback = CoreSpringFactory.getBean(secCallbackBeanId); + if (siteSecCallback instanceof SiteViewSecurityCallback && !((SiteViewSecurityCallback)siteSecCallback).isAllowedToViewSite(ureq)) { + return null; + } else if (siteSecCallback instanceof SiteSecurityCallback && !((SiteSecurityCallback)siteSecCallback).isAllowedToLaunchSite(ureq)) { return null; } return createSite(ureq, wControl, config); 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 1f4e159614a6797e0294fa4054905cf716276e2e..1a56ee4a4d3d397189072945b5dfb008fed13c14 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 @@ -54,8 +54,9 @@ public abstract class AbstractSiteInstance implements SiteInstance { SiteConfiguration config = siteDefinitions.getConfigurationSite(siteDef); if(StringHelper.containsNonWhitespace(config.getSecurityCallbackBeanId())) { String secCallbackBeanId = config.getSecurityCallbackBeanId(); - SiteSecurityCallback siteSecCallback = (SiteSecurityCallback)CoreSpringFactory.getBean(secCallbackBeanId); - if (siteSecCallback != null && !siteSecCallback.isAllowedToLaunchSite(ureq)) { + Object siteSecCallback = (SiteSecurityCallback)CoreSpringFactory.getBean(secCallbackBeanId); + if (siteSecCallback instanceof SiteSecurityCallback + && !((SiteSecurityCallback)siteSecCallback).isAllowedToLaunchSite(ureq)) { return getAlternativeController(ureq, wControl, config); } } diff --git a/src/main/java/org/olat/core/gui/control/navigation/SiteSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/SiteSecurityCallback.java index 1a5e98ca871d02da4b5b51b77fbe5f27cc0e9acb..0602431cba84cd5c6504adb04113a68ddf0d4542 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/SiteSecurityCallback.java +++ b/src/main/java/org/olat/core/gui/control/navigation/SiteSecurityCallback.java @@ -23,20 +23,13 @@ import org.olat.core.gui.UserRequest; /** * <h3>Description:</h3> - * SiteSecurityCallback used with CourseSite to define who can see/launch a course loaded in a site. + * SiteSecurityCallback used to define who can see and launch a site. * * Initial Date: 24.11.2009 <br> * @author Roman Haag, roman.haag@frentix.com, www.frentix.com */ public interface SiteSecurityCallback { - /** - * decides if the Site itself will be visible as a tab - * @param ureq - * @return - */ - public boolean isAllowedToViewSite(UserRequest ureq); - /** * decides if the content (mostly a course) of the site will be loadable by a specified user. * @param ureq diff --git a/src/main/java/org/olat/core/gui/control/navigation/SiteViewSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/SiteViewSecurityCallback.java new file mode 100644 index 0000000000000000000000000000000000000000..c44fd80bae6f4aa545daa389e5822c232a7490f5 --- /dev/null +++ b/src/main/java/org/olat/core/gui/control/navigation/SiteViewSecurityCallback.java @@ -0,0 +1,40 @@ +/** + * <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.control.navigation; + +import org.olat.core.gui.UserRequest; + +/** + * <h3>Description:</h3> + * SiteSecurityCallback used to define who can see a the presence of a site. + * + * Initial Date: 24.11.2009 <br> + * @author Roman Haag, roman.haag@frentix.com, www.frentix.com + */ +public interface SiteViewSecurityCallback extends SiteSecurityCallback { + + /** + * decides if the Site itself will be visible as a tab + * @param ureq + * @return + */ + public boolean isAllowedToViewSite(UserRequest ureq); + +} diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/AdminSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/callback/AdminSecurityCallback.java index 551a3a186106df138246d74b20cb9cdce9cb5941..9badfcc5bd6cacce5ad42ac9c9269e34ce3c1b96 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/AdminSecurityCallback.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/AdminSecurityCallback.java @@ -25,7 +25,7 @@ import org.olat.core.gui.control.navigation.SiteSecurityCallback; /** * <h3>Description:</h3> - * AdminOnly Callback for LibrarySite, allows to view/launch only for users with admin-role. + * Administrator callback allows to view/launch only for users with admin-role. * IMPORTANT: This Callback is also used for permissions in search! * * Initial Date: 13.04.2010 <br> @@ -44,13 +44,4 @@ public class AdminSecurityCallback implements SiteSecurityCallback { return false; } } - - /** - * @see com.frentix.olat.coursesite.SiteSecurityCallback#isAllowedToViewSite(org.olat.core.gui.UserRequest) - */ - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - // viewing the site without access makes no sense as long as there is no alternativeControllerIfNotLaunchable. - return isAllowedToLaunchSite(ureq); - } } diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/DefaultSecurityCallbackImpl.java b/src/main/java/org/olat/core/gui/control/navigation/callback/DefaultSecurityCallbackImpl.java index 5d09ace9c1f8b53a3dcc277eac38aacabe3daf4e..00fcd0054204c78e84d074721dc8afaf3a404ed1 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/DefaultSecurityCallbackImpl.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/DefaultSecurityCallbackImpl.java @@ -39,12 +39,4 @@ public class DefaultSecurityCallbackImpl implements SiteSecurityCallback { return true; } - /** - * @see com.frentix.olat.coursesite.SiteSecurityCallback#isAllowedToViewSite(org.olat.core.gui.UserRequest) - */ - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - return true; - } - } diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/DisabledSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/callback/DisabledSecurityCallback.java index 6d9914164e635f35cc65ae491c550cc8a1bcbe2b..6262bb78a1b43ff224c1cfe49047e32bcb83ea43 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/DisabledSecurityCallback.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/DisabledSecurityCallback.java @@ -39,13 +39,4 @@ public class DisabledSecurityCallback implements SiteSecurityCallback { public boolean isAllowedToLaunchSite(UserRequest ureq) { return false; } - - /** - * @see com.frentix.olat.coursesite.SiteSecurityCallback#isAllowedToViewSite(org.olat.core.gui.UserRequest) - */ - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - return false; - } - } diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/ManagersSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/callback/ManagersSecurityCallback.java index b3f6c2a334e2ed71ad44967cbe474a55143f1793..9a5b4fbd22605ff706793a165c93f9415e9fc87b 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/ManagersSecurityCallback.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/ManagersSecurityCallback.java @@ -50,13 +50,4 @@ public class ManagersSecurityCallback implements SiteSecurityCallback { return false; } } - - /** - * @see com.frentix.olat.coursesite.SiteSecurityCallback#isAllowedToViewSite(org.olat.core.gui.UserRequest) - */ - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - // viewing the site without access makes no sense as long as there is no alternativeControllerIfNotLaunchable. - return isAllowedToLaunchSite(ureq); - } } diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserGuestTeaserSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserGuestTeaserSecurityCallback.java new file mode 100644 index 0000000000000000000000000000000000000000..5be10209c20e9e28f33b57f03245e8d42be2fde0 --- /dev/null +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserGuestTeaserSecurityCallback.java @@ -0,0 +1,56 @@ +/** + * OLAT - Online Learning and Training<br> + * http://www.olat.org + * <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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <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> + * Copyright (c) frentix GmbH<br> + * http://www.frentix.com<br> + * <p> + */ +package org.olat.core.gui.control.navigation.callback; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.control.navigation.SiteViewSecurityCallback; + +/** + * Guest can see the site, but only registred can launch it + * + * + * Initial date: 25.09.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class RegistredUserGuestTeaserSecurityCallback implements SiteViewSecurityCallback { + + @Override + public boolean isAllowedToLaunchSite(UserRequest ureq) { + if (ureq.getUserSession().getRoles() == null + || ureq.getUserSession().getRoles().isInvitee() + || ureq.getUserSession().getRoles().isGuestOnly()) { + return false; + } else { + return true; + } + } + + @Override + public boolean isAllowedToViewSite(UserRequest ureq) { + if (ureq.getUserSession().getRoles() == null + || ureq.getUserSession().getRoles().isInvitee()) { + return false; + } else { + return true; + } + } +} diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserSecurityCallback.java b/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserSecurityCallback.java index 26cc7e13632de3a84cc4fc2e1b880444b428b7a8..18b60bbb72e00606d9b159d0a75eadfdfd22c1e0 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserSecurityCallback.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/RegistredUserSecurityCallback.java @@ -46,14 +46,4 @@ public class RegistredUserSecurityCallback implements SiteSecurityCallback { return true; } } - - /** - * @see com.frentix.olat.coursesite.SiteSecurityCallback#isAllowedToViewSite(org.olat.core.gui.UserRequest) - */ - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - // viewing the site without access makes no sense as long as there is no alternativeControllerIfNotLaunchable. - return isAllowedToLaunchSite(ureq); - } - } diff --git a/src/main/java/org/olat/core/gui/control/navigation/callback/SiteSecurityCallbackWithRolesRestriction.java b/src/main/java/org/olat/core/gui/control/navigation/callback/SiteSecurityCallbackWithRolesRestriction.java index 43924604a617924c3041bcdaa2f3e897774edb3c..a45a9dbae32189bda80e6b3299e93ec2157028fa 100644 --- a/src/main/java/org/olat/core/gui/control/navigation/callback/SiteSecurityCallbackWithRolesRestriction.java +++ b/src/main/java/org/olat/core/gui/control/navigation/callback/SiteSecurityCallbackWithRolesRestriction.java @@ -32,21 +32,8 @@ import org.olat.core.id.Roles; public class SiteSecurityCallbackWithRolesRestriction implements SiteSecurityCallback { private String limitToRole; - @Override - public boolean isAllowedToViewSite(UserRequest ureq) { - return isAllowed(ureq); - } - @Override public boolean isAllowedToLaunchSite(UserRequest ureq) { - return isAllowed(ureq); - } - - /** - * @see org.olat.core.gui.control.navigation.SiteDefinition#createSite(org.olat.core.gui.UserRequest, - * org.olat.core.gui.control.WindowControl) - */ - private boolean isAllowed(UserRequest ureq) { if (limitToRole != null) { String theRole = limitToRole.toLowerCase(); Roles roles = ureq.getUserSession().getRoles(); diff --git a/src/main/java/org/olat/course/site/CourseSiteDef.java b/src/main/java/org/olat/course/site/CourseSiteDef.java index 4f718e36c6540ab1fc4b704d09e2b2946f402faa..3deaf2a79ad3e555c84f1c8fb5fbc32e51993e33 100644 --- a/src/main/java/org/olat/course/site/CourseSiteDef.java +++ b/src/main/java/org/olat/course/site/CourseSiteDef.java @@ -84,9 +84,6 @@ public class CourseSiteDef extends AbstractSiteDefinition implements SiteDefinit String secCallbackBeanId = config.getSecurityCallbackBeanId(); SiteSecurityCallback siteSecCallback = (SiteSecurityCallback)CoreSpringFactory.getBean(secCallbackBeanId); - if (siteSecCallback != null && !siteSecCallback.isAllowedToViewSite(ureq)) { - return null; - } boolean canSeeToolController = ureq.getUserSession().getRoles().isAuthor() || ureq.getUserSession().getRoles().isOLATAdmin() @@ -110,7 +107,8 @@ public class CourseSiteDef extends AbstractSiteDefinition implements SiteDefinit for(LanguageConfiguration langConfig:config.getConfigurations()) { if(langConfig.isDefaultConfiguration()) { defaultLangConfig = langConfig; - } else if(language.equals(langConfig.getLanguage())) { + } + if(language.equals(langConfig.getLanguage())) { myLangConfig = langConfig; } } diff --git a/src/main/java/org/olat/course/site/ui/CourseSiteAdminController.java b/src/main/java/org/olat/course/site/ui/CourseSiteAdminController.java index d3cfafaefacbae24f628504d98b1037abc8d4969..70f6bb53b2bfd8191eb9b07b0251e35eb3e99f8b 100644 --- a/src/main/java/org/olat/course/site/ui/CourseSiteAdminController.java +++ b/src/main/java/org/olat/course/site/ui/CourseSiteAdminController.java @@ -46,7 +46,6 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionE import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.TextFlexiCellRenderer; -import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -147,7 +146,9 @@ public class CourseSiteAdminController extends FormBasicController { FormLayoutContainer buttonsLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonsLayout); - okButton = uifactory.addFormLink("save", "save", null, buttonsLayout, Link.BUTTON); + //okButton = uifactory.addFormLink("save", "save", null, buttonsLayout, Link.BUTTON); + + uifactory.addFormSubmitButton("save", "save", formLayout); } @Override @@ -255,9 +256,12 @@ public class CourseSiteAdminController extends FormBasicController { FormItemContainer formLayout) { this.langConfig = configuration; this.repoEntry = repoEntry; - titleEl = uifactory.addTextElement("site.title." + configuration.getLanguage(), "site.title", - null, 32, configuration.getTitle(), tableLayout); - defLangEl = uifactory.addCheckboxesHorizontal("site.def." + configuration.getLanguage(), null, + + String language = configuration.getLanguage(); + titleEl = uifactory.addTextElement("site.title." + language, "site.title", + null, 32, configuration.getTitle(), formLayout); + formLayout.add("site.flexi.title.hook." + language, titleEl); + defLangEl = uifactory.addCheckboxesHorizontal("site.def." + language, null, formLayout, new String[]{ "x"}, new String[]{ "" }, null); if(configuration.isDefaultConfiguration()) { @@ -315,6 +319,7 @@ public class CourseSiteAdminController extends FormBasicController { boolean defLang = defLangEl.isAtLeastSelected(1); langConfig.setDefaultConfiguration(defLang); String title = titleEl.getValue(); + System.out.println(title); langConfig.setTitle(title); return langConfig; }