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;
 		}