From 56df1da6bd6453897cd487f9bc0449d51dbaea64 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 30 Jun 2014 16:24:45 +0200
Subject: [PATCH] OO-981: check if the catalog is enable in details of course,
 add a "feature enabled" for site configuration

---
 .../admin/site/ui/SitesAdminController.java   |  2 +-
 .../site/ui/SitesConfigurationController.java | 20 ++++++---
 .../navigation/AbstractSiteDefinition.java    |  8 ++--
 .../control/navigation/SiteDefinition.java    |  2 +
 .../control/navigation/SiteDefinitions.java   | 14 +++---
 .../olat/course/run/RunMainController.java    | 12 +++--
 .../org/olat/portfolio/site/EPSiteDef.java    |  6 +++
 .../manager/RepositoryEntryAuthorQueries.java |  2 +-
 .../repository/site/CatalogAdminSiteDef.java  |  5 +++
 .../olat/repository/site/CatalogSiteDef.java  |  6 +++
 .../AuthoringEntryDetailsController.java      | 22 ---------
 .../RepositoryEntryDetailsController.java     | 45 ++++++++++---------
 12 files changed, 82 insertions(+), 62 deletions(-)

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 ce7dd3fe7b8..a6d8e71831f 100644
--- a/src/main/java/org/olat/admin/site/ui/SitesAdminController.java
+++ b/src/main/java/org/olat/admin/site/ui/SitesAdminController.java
@@ -123,7 +123,7 @@ public class SitesAdminController  extends BasicController  {
 			orderCtrl = new SitesConfigurationController(ureq, getWindowControl());
 			listenTo(orderCtrl);
 		} else {
-			orderCtrl.reload(ureq);
+			orderCtrl.reload();
 		}
 		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 967c3a7f2d7..16a75480f13 100644
--- a/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java
+++ b/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java
@@ -148,7 +148,7 @@ public class SitesConfigurationController extends FormBasicController {
 		tableEl.setCustomizeColumns(true);
 		tableEl.setAndLoadPersistedPreferences(ureq, "sites-admin");
 		
-		reload(ureq);
+		reload();
 	}
 	
 	@Override
@@ -197,7 +197,7 @@ public class SitesConfigurationController extends FormBasicController {
 		//
 	}
 	
-	protected void reload(UserRequest ureq) {
+	protected void reload() {
 		List<SiteDefRow> configs = new ArrayList<SiteDefRow>();
 		for(Map.Entry<String, SiteDefinition> entryDef:siteDefs.entrySet()) {
 			String id = entryDef.getKey();
@@ -290,7 +290,11 @@ public class SitesConfigurationController extends FormBasicController {
 			String id = config.getId();
 			
 			secCallbackEl = uifactory.addDropdownSingleselect("site.security." + id, "site.security", formLayout, secKeys, secValues, null);
-			secCallbackEl.addActionListener(FormEvent.ONCHANGE);
+			if(siteDef.isFeatureEnabled()) {
+				secCallbackEl.addActionListener(FormEvent.ONCHANGE);
+			} else {
+				secCallbackEl.setEnabled(false);
+			}
 			secCallbackEl.setUserObject(this);
 			
 			boolean needAlt = false;
@@ -305,7 +309,11 @@ public class SitesConfigurationController extends FormBasicController {
 			}
 			
 			enableSiteEl = uifactory.addCheckboxesHorizontal("site.enable." + id, null, formLayout, new String[]{ "x" }, new String[]{ "" });
-			enableSiteEl.addActionListener(FormEvent.ONCHANGE);
+			if(siteDef.isFeatureEnabled()) {
+				enableSiteEl.addActionListener(FormEvent.ONCHANGE);
+			} else {
+				enableSiteEl.setEnabled(false);
+			}
 			
 			altControllerEl = uifactory.addDropdownSingleselect("site.alternative." + id, "site.alternative", formLayout, altKeys, altValues, null);
 			altControllerEl.addActionListener(FormEvent.ONCHANGE);
@@ -405,7 +413,9 @@ public class SitesConfigurationController extends FormBasicController {
 					return enableSiteEl;
 				}
 				case title: return def.getTitle();
-				case secCallback: return def.getSecurityCallbackEl();
+				case secCallback: {
+					return def.getSecurityCallbackEl();
+				}
 				case altController: return def.getAlternativeControllerEl();
 				case type: {
 					String type = def.getSiteDef().getClass().getSimpleName();
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 32d702b4da2..1708d98543f 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
@@ -58,8 +58,6 @@ public abstract class AbstractSiteDefinition extends AbstractConfigOnOff impleme
 	public String getDefaultSiteSecurityCallbackBeanId() {
 		return defaultSiteSecurityCallbackBeanId;
 	}
-
-	
 	
 	@Override
 	public final SiteInstance createSite(UserRequest ureq, WindowControl wControl) {
@@ -86,5 +84,9 @@ public abstract class AbstractSiteDefinition extends AbstractConfigOnOff impleme
 		SiteConfiguration config = siteModule.getConfigurationSite(this);
 		return config;
 	}
-}
 
+	@Override
+	public boolean isFeatureEnabled() {
+		return true;
+	}
+}
diff --git a/src/main/java/org/olat/core/gui/control/navigation/SiteDefinition.java b/src/main/java/org/olat/core/gui/control/navigation/SiteDefinition.java
index e85ecfa2e30..5870c816075 100644
--- a/src/main/java/org/olat/core/gui/control/navigation/SiteDefinition.java
+++ b/src/main/java/org/olat/core/gui/control/navigation/SiteDefinition.java
@@ -47,5 +47,7 @@ public interface SiteDefinition extends ConfigOnOff {
 	public int getOrder();
 	
 	public String getDefaultSiteSecurityCallbackBeanId();
+	
+	public boolean isFeatureEnabled();
 }
 
diff --git a/src/main/java/org/olat/core/gui/control/navigation/SiteDefinitions.java b/src/main/java/org/olat/core/gui/control/navigation/SiteDefinitions.java
index edac7704102..053cfb421fd 100644
--- a/src/main/java/org/olat/core/gui/control/navigation/SiteDefinitions.java
+++ b/src/main/java/org/olat/core/gui/control/navigation/SiteDefinitions.java
@@ -249,13 +249,15 @@ public class SiteDefinitions extends AbstractOLATModule {
 		for(Map.Entry<String,SiteDefinition> siteDefEntry:allDefList.entrySet()) {
 			String id = siteDefEntry.getKey();
 			SiteDefinition siteDef = siteDefEntry.getValue();
-			if(siteConfigMap.containsKey(id)) {
-				SiteConfiguration config = siteConfigMap.get(id);
-				if(config.isEnabled()) {
-					enabledOrderedSites.add(new SiteDefinitionOrder(siteDef, config));
+			if(siteDef.isFeatureEnabled()) {
+				if(siteConfigMap.containsKey(id)) {
+					SiteConfiguration config = siteConfigMap.get(id);
+					if(config.isEnabled()) {
+						enabledOrderedSites.add(new SiteDefinitionOrder(siteDef, config));
+					}
+				} else if(siteDef.isEnabled()) {
+					enabledOrderedSites.add(new SiteDefinitionOrder(siteDef));
 				}
-			} else if(siteDef.isEnabled()) {
-				enabledOrderedSites.add(new SiteDefinitionOrder(siteDef));
 			}
 		}
 		Collections.sort(enabledOrderedSites, new SiteDefinitionOrderComparator());
diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index e48e7faef7d..9e6842c8a1b 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -141,6 +141,7 @@ import org.olat.repository.RepositoryManager;
 import org.olat.repository.RepositoryService;
 import org.olat.repository.controllers.EntryChangedEvent;
 import org.olat.repository.ui.author.AuthoringEditEntrySettingsController;
+import org.olat.repository.ui.author.AuthoringEntryDetailsController;
 import org.olat.repository.ui.list.RepositoryEntryDetailsController;
 import org.olat.resource.OLATResource;
 import org.olat.util.logging.activity.LoggingResourceable;
@@ -667,10 +668,9 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		if (hasCourseRight(CourseRights.RIGHT_COURSEEDITOR) || isCourseAdmin) {
 			if(!(currentToolCtr instanceof AuthoringEditEntrySettingsController)) {
 				toolbarPanel.popUpToRootController(ureq);
-				
+				//push happen in the init method of the controller
 				currentToolCtr = new AuthoringEditEntrySettingsController(ureq, getWindowControl(), toolbarPanel, courseRepositoryEntry);
 				listenTo(currentToolCtr);
-				toolbarPanel.pushController(translate("command.settings"), currentToolCtr);
 			}
 		} else {
 			throw new OLATSecurityException("wanted to activate editor, but no according right");
@@ -784,8 +784,12 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 	}
 	
 	private void launchDetails(UserRequest ureq) {
-		currentToolCtr = new RepositoryEntryDetailsController(ureq, getWindowControl(), courseRepositoryEntry);
-		toolbarPanel.pushController(translate("command.courseconfig"), currentToolCtr);
+		if(isCourseAdmin) {
+			currentToolCtr = new AuthoringEntryDetailsController(ureq, getWindowControl(), toolbarPanel, courseRepositoryEntry);
+		} else {
+			currentToolCtr = new RepositoryEntryDetailsController(ureq, getWindowControl(), courseRepositoryEntry);
+			toolbarPanel.pushController(translate("command.courseconfig"), currentToolCtr);
+		}
 	}
 	
 	private void launchCourseFolder(UserRequest ureq) {
diff --git a/src/main/java/org/olat/portfolio/site/EPSiteDef.java b/src/main/java/org/olat/portfolio/site/EPSiteDef.java
index f70fb76f299..df0cea0b881 100644
--- a/src/main/java/org/olat/portfolio/site/EPSiteDef.java
+++ b/src/main/java/org/olat/portfolio/site/EPSiteDef.java
@@ -53,4 +53,10 @@ public class EPSiteDef  extends AbstractSiteDefinition implements SiteDefinition
 		PortfolioModule module = CoreSpringFactory.getImpl(PortfolioModule.class);
 		return module.isEnabled() && super.isEnabled();
 	}
+
+	@Override
+	public boolean isFeatureEnabled() {
+		PortfolioModule module = CoreSpringFactory.getImpl(PortfolioModule.class);
+		return module.isEnabled();
+	}
 }
diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
index f5dd40019d9..fa679b4969d 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
@@ -265,7 +265,7 @@ public class RepositoryEntryAuthorQueries {
 					appendAsc(sb, asc).append(", lower(v.displayname) asc");
 					break;
 				case author:
-					sb.append(" order by lower(v.author)");
+					sb.append(" order by lower(v.initialAuthor)");
 					appendAsc(sb, asc).append(", lower(v.displayname) asc");	
 					break;
 				case ac:
diff --git a/src/main/java/org/olat/repository/site/CatalogAdminSiteDef.java b/src/main/java/org/olat/repository/site/CatalogAdminSiteDef.java
index 11d9f727381..8b24e43c378 100644
--- a/src/main/java/org/olat/repository/site/CatalogAdminSiteDef.java
+++ b/src/main/java/org/olat/repository/site/CatalogAdminSiteDef.java
@@ -54,4 +54,9 @@ public class CatalogAdminSiteDef extends AbstractSiteDefinition implements SiteD
 		return repositoryModule.isCatalogEnabled() && super.isEnabled();
 	}
 
+	@Override
+	public boolean isFeatureEnabled() {
+		RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class);
+		return repositoryModule.isCatalogEnabled();
+	}
 }
diff --git a/src/main/java/org/olat/repository/site/CatalogSiteDef.java b/src/main/java/org/olat/repository/site/CatalogSiteDef.java
index 8f266fb9a9e..52c06b93808 100644
--- a/src/main/java/org/olat/repository/site/CatalogSiteDef.java
+++ b/src/main/java/org/olat/repository/site/CatalogSiteDef.java
@@ -46,4 +46,10 @@ public class CatalogSiteDef extends AbstractSiteDefinition implements SiteDefini
 		RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class);
 		return repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogSiteEnabled() && super.isEnabled();
 	}
+
+	@Override
+	public boolean isFeatureEnabled() {
+		RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class);
+		return repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogSiteEnabled();
+	}
 }
diff --git a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
index cb729e0a38b..86f11a91a4a 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthoringEntryDetailsController.java
@@ -24,10 +24,8 @@ import java.util.List;
 
 import org.olat.NewControllerFactory;
 import org.olat.basesecurity.GroupRoles;
-import org.olat.catalog.CatalogManager;
 import org.olat.core.commons.services.commentAndRating.ui.UserCommentsController;
 import org.olat.core.commons.services.mark.Mark;
-import org.olat.core.commons.services.mark.MarkManager;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.dropdown.Dropdown;
@@ -69,15 +67,12 @@ import org.olat.course.CorruptedCourseException;
 import org.olat.course.CourseModule;
 import org.olat.course.run.RunMainController;
 import org.olat.group.BusinessGroup;
-import org.olat.group.BusinessGroupService;
 import org.olat.group.model.SearchBusinessGroupParams;
 import org.olat.repository.ErrorList;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryManagedFlag;
 import org.olat.repository.RepositoryEntryRef;
 import org.olat.repository.RepositoryManager;
-import org.olat.repository.RepositoryModule;
-import org.olat.repository.RepositoryService;
 import org.olat.repository.controllers.EntryChangedEvent;
 import org.olat.repository.controllers.WizardCloseResourceController;
 import org.olat.repository.handlers.RepositoryHandler;
@@ -86,8 +81,6 @@ import org.olat.repository.ui.PriceMethod;
 import org.olat.repository.ui.RepositoyUIFactory;
 import org.olat.repository.ui.list.RepositoryEntryDetailsController;
 import org.olat.resource.OLATResource;
-import org.olat.resource.accesscontrol.ACService;
-import org.olat.resource.accesscontrol.AccessControlModule;
 import org.olat.resource.accesscontrol.AccessResult;
 import org.olat.resource.accesscontrol.method.AccessMethodHandler;
 import org.olat.resource.accesscontrol.model.AccessMethod;
@@ -128,25 +121,11 @@ public class AuthoringEntryDetailsController extends RepositoryEntryDetailsContr
 	
 	private boolean corrupted;
 
-	@Autowired
-	private ACService acService;
-	@Autowired
-	private AccessControlModule acModule;
-	@Autowired
-	private MarkManager markManager;
 	@Autowired
 	private UserManager userManager;
 	@Autowired
-	private CatalogManager catalogManager;
-	@Autowired
 	private RepositoryManager repositoryManager;
 	@Autowired
-	private RepositoryModule repositoryModule;
-	@Autowired
-	private RepositoryService repositoryService;
-	@Autowired
-	private BusinessGroupService businessGroupService;
-	@Autowired
 	private RepositoryHandlerFactory repositoryHandlerFactory;
 	
 	private String baseUrl;
@@ -223,7 +202,6 @@ public class AuthoringEntryDetailsController extends RepositoryEntryDetailsContr
 			boolean editManaged = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.editcontent);
 			editLink.setEnabled(handler.supportsEdit(entry) && !corrupted && !editManaged);
 			stackPanel.addTool(editLink, Align.left);
-
 		}
 
 		if (isAuthor || isOwner) {
diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
index 7c402dd00a0..19cdf8ff6a0 100644
--- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
+++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
@@ -71,6 +71,7 @@ import org.olat.group.BusinessGroupService;
 import org.olat.group.model.SearchBusinessGroupParams;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryRef;
+import org.olat.repository.RepositoryModule;
 import org.olat.repository.RepositoryService;
 import org.olat.repository.handlers.RepositoryHandler;
 import org.olat.repository.handlers.RepositoryHandlerFactory;
@@ -106,27 +107,29 @@ public class RepositoryEntryDetailsController extends FormBasicController {
 	protected RepositoryEntryRow row;
 
 	@Autowired
-	private UserRatingsDAO userRatingsDao;
+	protected UserRatingsDAO userRatingsDao;
 	@Autowired
-	private ACService acService;
+	protected ACService acService;
 	@Autowired
-	private AccessControlModule acModule;
+	protected AccessControlModule acModule;
 	@Autowired
-	private MarkManager markManager;
+	protected MarkManager markManager;
 	@Autowired
-	private CatalogManager catalogManager;
+	protected CatalogManager catalogManager;
 	@Autowired
-	private RepositoryService repositoryService;
+	protected RepositoryModule repositoryModule;
 	@Autowired
-	private BusinessGroupService businessGroupService;
+	protected RepositoryService repositoryService;
 	@Autowired
-	private EfficiencyStatementManager effManager;
+	protected BusinessGroupService businessGroupService;
 	@Autowired
-	private UserCourseInformationsManager userCourseInfosManager;
+	protected EfficiencyStatementManager effManager;
 	@Autowired
-	private CoordinatorManager coordinatorManager;
+	protected UserCourseInformationsManager userCourseInfosManager;
 	@Autowired
-	private ReferenceManager referenceManager;
+	protected CoordinatorManager coordinatorManager;
+	@Autowired
+	protected ReferenceManager referenceManager;
 	
 	private String baseUrl;
 	
@@ -205,16 +208,18 @@ public class RepositoryEntryDetailsController extends FormBasicController {
 			}
 			
 			//categories
-			List<CatalogEntry> categories = catalogManager.getCatalogEntriesReferencing(entry);
-			List<String> categoriesLink = new ArrayList<>(categories.size());
-			for(CatalogEntry category:categories) {
-				String id = "cat_" + ++cmpcount;
-				String title = category.getParent().getName();
-				FormLink catLink = uifactory.addFormLink(id, "category", title, null, layoutCont, Link.LINK | Link.NONTRANSLATED);
-				catLink.setUserObject(category.getKey());
-				categoriesLink.add(id);
+			if(repositoryModule.isCatalogEnabled()) {
+				List<CatalogEntry> categories = catalogManager.getCatalogEntriesReferencing(entry);
+				List<String> categoriesLink = new ArrayList<>(categories.size());
+				for(CatalogEntry category:categories) {
+					String id = "cat_" + ++cmpcount;
+					String title = category.getParent().getName();
+					FormLink catLink = uifactory.addFormLink(id, "category", title, null, layoutCont, Link.LINK | Link.NONTRANSLATED);
+					catLink.setUserObject(category.getKey());
+					categoriesLink.add(id);
+				}
+				layoutCont.contextPut("categories", categoriesLink);
 			}
-			layoutCont.contextPut("categories", categoriesLink);
 			
 			boolean marked;
 			if(row == null) {
-- 
GitLab