From 16f5b57b43baf5b1cbb5d557ca538e7ed940fb17 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 6 May 2013 10:36:23 +0200
Subject: [PATCH] OO-589: add the 2 properties to show/hide the menu items
 courses and the list of resources by type

---
 .../org/olat/repository/RepositoryModule.java | 38 +++++++++++++++++--
 .../repository/_spring/repositoryContext.xml  | 21 ++++++----
 .../controllers/RepositoryMainController.java | 17 ++++++---
 .../resources/serviceconfig/olat.properties   |  7 ++++
 4 files changed, 67 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/olat/repository/RepositoryModule.java b/src/main/java/org/olat/repository/RepositoryModule.java
index 0fde493a66a..beab18a1752 100644
--- a/src/main/java/org/olat/repository/RepositoryModule.java
+++ b/src/main/java/org/olat/repository/RepositoryModule.java
@@ -25,6 +25,7 @@ import org.olat.core.configuration.AbstractOLATModule;
 import org.olat.core.configuration.PersistedProperties;
 import org.olat.core.id.Roles;
 import org.olat.core.id.context.SiteContextEntryControllerCreator;
+import org.olat.core.util.StringHelper;
 import org.olat.group.BusinessGroupModule;
 import org.olat.repository.site.RepositorySite;
 
@@ -39,6 +40,11 @@ import org.olat.repository.site.RepositorySite;
  */
 public class RepositoryModule extends AbstractOLATModule {
 	
+	
+
+	private boolean listAllCourses;
+	private boolean listAllResourceTypes;
+	
 	private BusinessGroupModule groupModule;
 	
 	/**
@@ -56,6 +62,14 @@ public class RepositoryModule extends AbstractOLATModule {
 		NewControllerFactory.getInstance().addContextEntryControllerCreator(RepositorySite.class.getSimpleName(),
 				new SiteContextEntryControllerCreator(RepositorySite.class));
 		
+		String listAllCoursesStr = getStringPropertyValue("listallcourse", true);
+		if(StringHelper.containsNonWhitespace(listAllCoursesStr)) {
+			listAllCourses = "true".equals(listAllCoursesStr);
+		}
+		String listAllResourceTypesStr = getStringPropertyValue("listallresourcetypes", true);
+		if(StringHelper.containsNonWhitespace(listAllResourceTypesStr)) {
+			listAllResourceTypes = "true".equals(listAllResourceTypesStr);
+		}
 	}
 
 	/**
@@ -71,7 +85,10 @@ public class RepositoryModule extends AbstractOLATModule {
 	 */
 	@Override
 	protected void initDefaultProperties() {
-	// nothing to init
+		String listAllCoursesStr = getStringConfigParameter("listallcourse", "true", false);
+		listAllCourses = "true".equals(listAllCoursesStr);
+		String listAllResourceTypesStr = getStringConfigParameter("listallresourcetypes", "true", false);
+		listAllResourceTypes = "true".equals(listAllResourceTypesStr);
 	}
 
 	/**
@@ -79,7 +96,7 @@ public class RepositoryModule extends AbstractOLATModule {
 	 */
 	@Override
 	protected void initFromChangedProperties() {
-	// nothing to init
+		init();
 	}
 
 	@Override
@@ -95,4 +112,19 @@ public class RepositoryModule extends AbstractOLATModule {
 		return groupModule.isMandatoryEnrolmentEmail(roles);
 	}
 
-}
+	public boolean isListAllCourses() {
+		return listAllCourses;
+	}
+
+	public void setListAllCourses(boolean listAllCourses) {
+		setBooleanProperty("listallcourse", listAllCourses, true);
+	}
+
+	public boolean isListAllResourceTypes() {
+		return listAllResourceTypes;
+	}
+
+	public void setListAllResourceTypes(boolean listAllResourceTypes) {
+		setBooleanProperty("listallresourcetypes", listAllResourceTypes, true);
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/repository/_spring/repositoryContext.xml b/src/main/java/org/olat/repository/_spring/repositoryContext.xml
index 6fa218e2050..e171dfb7c6c 100644
--- a/src/main/java/org/olat/repository/_spring/repositoryContext.xml
+++ b/src/main/java/org/olat/repository/_spring/repositoryContext.xml
@@ -3,7 +3,7 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	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">
 
 <bean id="repositoryModule" class="org.olat.repository.RepositoryModule" depends-on="userModule">
 	<property name="groupModule" ref="businessGroupModule"/>
@@ -15,12 +15,17 @@
 	</property>
 </bean>
 
-<bean  class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
-        <property name="targetObject" ref="repositoryModule" />
-        <property name="targetMethod" value="init" />
-</bean>
-
-		
-<bean id="repositoryManager" class="org.olat.repository.RepositoryManager"/>
+	<bean  class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+		<property name="targetObject" ref="repositoryModule" />
+		<property name="targetMethod" value="init" />
+		<property name="arguments">
+			<value>
+				listallcourse=${repo.listallcourses.enabled}
+				listallresourcetypes=${repo.listallresourcetypes.enabled}
+			</value>
+		</property>
+	</bean>
+	
+	<bean id="repositoryManager" class="org.olat.repository.RepositoryManager"/>
 
 </beans>
\ No newline at end of file
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
index 9553a9ed3ae..7bd294479ba 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
@@ -77,6 +77,7 @@ import org.olat.portfolio.EPTemplateMapResource;
 import org.olat.portfolio.PortfolioModule;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
+import org.olat.repository.RepositoryModule;
 import org.olat.repository.RepositoryTableModel;
 import org.olat.repository.delete.TabbedPaneController;
 import org.olat.repository.handlers.RepositoryHandler;
@@ -148,6 +149,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 	private Controller creationWizardController;
 	private final PortfolioModule portfolioModule;
 	private final CatalogModule catalogModule;
+	private final RepositoryModule repositoryModule;
 
 	/**
 	 * The check for author rights is executed on construction time and then
@@ -162,8 +164,9 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 		if (log.isDebug()) {
 			log.debug("Constructing ReposityMainController for user::" + ureq.getIdentity());
 		}
-		portfolioModule = (PortfolioModule) CoreSpringFactory.getBean("portfolioModule");
+		portfolioModule = CoreSpringFactory.getImpl(PortfolioModule.class);
 		catalogModule = CoreSpringFactory.getImpl(CatalogModule.class);
+		repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class);
 
 		// use i18n from RepositoryManager level
 		setTranslator(Util.createPackageTranslator(RepositoryManager.class, ureq.getLocale()));
@@ -301,10 +304,14 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 				rootNode.addChild(node);
 			}
 		}
-		node = new GenericTreeNode(translate("search.course"), "search.course");
-		node.setCssClass("o_sel_repo_course");
-		rootNode.addChild(node);
-		if (bIsAuthor) {
+		
+		if(repositoryModule.isListAllCourses()) {
+			node = new GenericTreeNode(translate("search.course"), "search.course");
+			node.setCssClass("o_sel_repo_course");
+			rootNode.addChild(node);
+		}
+		
+		if (bIsAuthor && repositoryModule.isListAllResourceTypes()) {
 			//cp, scorm, wiki, podcast, portfolie, test, questionn, resource folder, glossary
 			node = new GenericTreeNode(translate("search.cp"), "search.cp");
 			node.setCssClass("o_sel_repo_cp");
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index dfbdfc9b824..39d0f20e92e 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -385,6 +385,13 @@ repo.catalog.enable=true
 my.courses.enable=false
 ###
 
+# When repo.listallcourses.enabled=true, the list of all courses are show as it is today.
+# When false, the menu item does not show up.
+repo.listallcourses.enabled=true
+# When repo.listallresourcetypes.enabled=true and the user is author, all other resource
+# types appear as separate menu items. When set to false, the menu items are not show to any user.
+repo.listallresourcetypes.enabled=true
+
 # The course database: a REST key-value store that can be used in single pages to 
 # implement all kind of fancy things that need a storage, e.g. build your own 
 # survey or "I've read this" checkbox. Course authors have the possibility do 
-- 
GitLab