From d62db7ce5ff1244c8012f8cdefcd338ee57112c6 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 17 Mar 2014 15:14:21 +0100 Subject: [PATCH] OO-981: move administration module of catalog to the repository module, update the "administration" features... --- .../java/org/olat/catalog/CatalogModule.java | 103 ------------------ .../olat/catalog/_spring/catalogContext.xml | 45 +------- .../gui/control/_spring/portalContext.xml | 2 +- .../gui/control/_spring/sitedefContext.xml | 2 +- .../generic/portal/PortletFactory.java | 10 ++ .../org/olat/course/editor/PublishStep01.java | 21 +++- .../CatalogContextEntryControllerCreator.java | 15 ++- .../org/olat/repository/RepositoryModule.java | 54 ++++++++- .../org/olat/repository/_chelp/cat-admin.html | 1 + .../_i18n/LocalStrings_de.properties | 3 + .../repository/_spring/repositoryContext.xml | 47 +++++--- .../RepositoryDetailsController.java | 22 ++-- .../controllers/RepositoryMainController.java | 13 +-- .../olat/repository/handlers/BlogHandler.java | 1 - .../repository/handlers/CourseHandler.java | 4 +- .../olat/repository/handlers/FileHandler.java | 10 +- .../repository/handlers/GlossaryHandler.java | 5 +- .../repository/handlers/PodcastHandler.java | 1 - .../site/CatalogSite.java | 2 +- .../site/CatalogSiteDef.java | 14 ++- .../ui/admin}/CatalogAdminController.java | 52 +++++---- .../repository/ui/admin/_content/admin.html | 4 + .../ui/admin/_i18n/LocalStrings_de.properties | 8 ++ .../ui/admin/_i18n/LocalStrings_en.properties | 7 ++ .../ui/admin/_i18n/LocalStrings_fr.properties | 4 + .../admin/_i18n/i18nBundleMetadata.properties | 2 + .../OverviewRepositoryListController.java | 79 +++++++++++--- .../list/RepositoryEntryListController.java | 10 +- .../resources/serviceconfig/olat.properties | 11 +- 29 files changed, 301 insertions(+), 251 deletions(-) delete mode 100644 src/main/java/org/olat/catalog/CatalogModule.java create mode 100644 src/main/java/org/olat/repository/_chelp/cat-admin.html rename src/main/java/org/olat/{catalog => repository}/site/CatalogSite.java (99%) rename src/main/java/org/olat/{catalog => repository}/site/CatalogSiteDef.java (76%) rename src/main/java/org/olat/{catalog/ui => repository/ui/admin}/CatalogAdminController.java (57%) create mode 100644 src/main/java/org/olat/repository/ui/admin/_content/admin.html create mode 100644 src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_de.properties create mode 100644 src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_en.properties create mode 100644 src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_fr.properties create mode 100644 src/main/java/org/olat/repository/ui/admin/_i18n/i18nBundleMetadata.properties diff --git a/src/main/java/org/olat/catalog/CatalogModule.java b/src/main/java/org/olat/catalog/CatalogModule.java deleted file mode 100644 index c6828fce1d1..00000000000 --- a/src/main/java/org/olat/catalog/CatalogModule.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * <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.catalog; - -import org.olat.core.configuration.AbstractOLATModule; -import org.olat.core.configuration.PersistedProperties; -import org.olat.core.util.StringHelper; - -/** - * - * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com - */ -public class CatalogModule extends AbstractOLATModule { - - private static final String CATALOG_SITE_ENABLED = "site.catalog.enable"; - private static final String CATALOG_REPO_ENABLED = "repo.catalog.enable"; - private static final String MY_COURSES_ENABLED = "my.courses.enable"; - - private boolean catalogSiteEnabled; - private boolean catalogRepoEnabled; - private boolean myCoursesEnabled; - - @Override - public void init() { - String catalogSite = getStringPropertyValue(CATALOG_SITE_ENABLED, true); - if(StringHelper.containsNonWhitespace(catalogSite)) { - catalogSiteEnabled = "true".equals(catalogSite); - } - - String catalogRepo = getStringPropertyValue(CATALOG_REPO_ENABLED, true); - if(StringHelper.containsNonWhitespace(catalogRepo)) { - catalogRepoEnabled = "true".equals(catalogRepo); - } - - String myCourses = getStringPropertyValue(MY_COURSES_ENABLED, true); - if(StringHelper.containsNonWhitespace(myCourses)) { - myCoursesEnabled = "true".equals(myCourses); - } - } - - @Override - protected void initDefaultProperties() { - catalogSiteEnabled = getBooleanConfigParameter(CATALOG_SITE_ENABLED, true); - catalogRepoEnabled = getBooleanConfigParameter(CATALOG_REPO_ENABLED, true); - myCoursesEnabled = getBooleanConfigParameter(MY_COURSES_ENABLED, true); - } - - @Override - protected void initFromChangedProperties() { - init(); - } - - @Override - public void setPersistedProperties(PersistedProperties persistedProperties) { - moduleConfigProperties = persistedProperties; - } - - public boolean isCatalogSiteEnabled() { - return catalogSiteEnabled; - } - - public void setCatalogSiteEnabled(boolean enabled) { - setStringProperty(CATALOG_SITE_ENABLED, Boolean.toString(enabled), true); - } - - public boolean isCatalogRepoEnabled() { - return catalogRepoEnabled; - } - - public void setCatalogRepoEnabled(boolean enabled) { - setStringProperty(CATALOG_REPO_ENABLED, Boolean.toString(enabled), true); - } - - public boolean isMyCoursesEnabled() { - return myCoursesEnabled; - } - - public void setMyCoursesEnabled(boolean enabled) { - setStringProperty(MY_COURSES_ENABLED, Boolean.toString(enabled), true); - } - - - - - -} diff --git a/src/main/java/org/olat/catalog/_spring/catalogContext.xml b/src/main/java/org/olat/catalog/_spring/catalogContext.xml index b2059bd84bb..59e961e30cb 100644 --- a/src/main/java/org/olat/catalog/_spring/catalogContext.xml +++ b/src/main/java/org/olat/catalog/_spring/catalogContext.xml @@ -7,48 +7,5 @@ <bean id="catalogManager" class="org.olat.catalog.CatalogManager" depends-on="courseModule" init-method="init"/> - <!-- Business group admin. panel --> -<!-- Not enabled in 8.4 release. Work in progress, will be finished in a later release - <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> - <property name="order" value="8209" /> - <property name="actionController"> - <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> - <property name="className" value="org.olat.catalog.ui.CatalogAdminController"/> - </bean> - </property> - <property name="navigationKey" value="catalog" /> - <property name="i18nActionKey" value="admin.menu.title"/> - <property name="i18nDescriptionKey" value="admin.menu.title.alt"/> - <property name="translationPackage" value="org.olat.catalog.ui"/> - <property name="parentTreeNodeIdentifier" value="modulesParent" /> - <property name="extensionPoints"> - <list> - <value>org.olat.admin.SystemAdminMainController</value> - </list> - </property> - </bean> - --> - - <bean id="catalogModule" class="org.olat.catalog.CatalogModule" init-method="init"> - <property name="persistedProperties"> - <bean class="org.olat.core.configuration.PersistedProperties" scope="prototype" init-method="init" destroy-method="destroy" - depends-on="coordinatorManager,org.olat.core.util.WebappHelper"> - <constructor-arg index="0" ref="coordinatorManager"/> - <constructor-arg index="1" ref="catalogModule" /> - </bean> - </property> - </bean> - - <!-- default configuration --> - <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> - <property name="targetObject" ref="catalogModule" /> - <property name="targetMethod" value="init" /> - <property name="arguments"> - <value> - site.catalog.enable=${site.catalog.enable} - repo.catalog.enable=${repo.catalog.enable} - my.courses.enable=${my.courses.enable} - </value> - </property> - </bean> + </beans> \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/control/_spring/portalContext.xml b/src/main/java/org/olat/core/gui/control/_spring/portalContext.xml index a233f7759cb..c255a77d641 100644 --- a/src/main/java/org/olat/core/gui/control/_spring/portalContext.xml +++ b/src/main/java/org/olat/core/gui/control/_spring/portalContext.xml @@ -12,7 +12,7 @@ --> <!-- Portlet factory --> - <bean id="portletfactory" class="org.olat.core.gui.control.generic.portal.PortletFactory" /> + <bean id="portletfactory" class="org.olat.core.gui.control.generic.portal.PortletFactory" init-method="init"/> <!-- Portlets --> <bean id="SystemEvents" class="org.olat.core.commons.portlets.iframe.IframePortlet" scope="prototype"> 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 b5c09373a41..518b54140ce 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 @@ -36,7 +36,7 @@ <bean id="coursesite_infos_2" class="org.olat.course.site.CourseSiteDef2"/> - <bean id="olatsites_catalog" class="org.olat.catalog.site.CatalogSiteDef"> + <bean id="olatsites_catalog" class="org.olat.repository.site.CatalogSiteDef"> <property name="order" value="5" /> <property name="enabled" value="${site.catalog.enable}"/> </bean> diff --git a/src/main/java/org/olat/core/gui/control/generic/portal/PortletFactory.java b/src/main/java/org/olat/core/gui/control/generic/portal/PortletFactory.java index e49761165e4..23469e2c364 100644 --- a/src/main/java/org/olat/core/gui/control/generic/portal/PortletFactory.java +++ b/src/main/java/org/olat/core/gui/control/generic/portal/PortletFactory.java @@ -30,9 +30,11 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +import org.olat.NewControllerFactory; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; +import org.olat.core.id.context.SiteContextEntryControllerCreator; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; @@ -57,6 +59,14 @@ public class PortletFactory { // singleton } + /** + * [used by Spring] + */ + public void init() { + NewControllerFactory.getInstance().addContextEntryControllerCreator("Portal", + new SiteContextEntryControllerCreator(PortalSite.class)); + } + public static Map<String, Portlet> getPortlets() { if (portlets == null) { synchronized(lockObject) { diff --git a/src/main/java/org/olat/course/editor/PublishStep01.java b/src/main/java/org/olat/course/editor/PublishStep01.java index 301f79a63a9..a173e4ebe08 100644 --- a/src/main/java/org/olat/course/editor/PublishStep01.java +++ b/src/main/java/org/olat/course/editor/PublishStep01.java @@ -27,6 +27,7 @@ package org.olat.course.editor; import java.util.ArrayList; import java.util.List; +import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; @@ -36,6 +37,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.wizard.BasicStep; import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; +import org.olat.core.gui.control.generic.wizard.Step; import org.olat.core.gui.control.generic.wizard.StepFormBasicController; import org.olat.core.gui.control.generic.wizard.StepFormController; import org.olat.core.gui.control.generic.wizard.StepsEvent; @@ -46,6 +48,7 @@ import org.olat.course.ICourse; import org.olat.login.LoginModule; import org.olat.repository.PropPupForm; import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryModule; /** * Description:<br> @@ -66,11 +69,21 @@ class PublishStep01 extends BasicStep { //VCRP-3: add catalog entry in publish wizard this.hasPublishableChanges = hasPublishableChanges; - setNextStep(new PublishStepCatalog(ureq, course, hasPublishableChanges)); - if(hasCatalog){ + + RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); + if(repositoryModule.isCatalogEnabled()) { + setNextStep(new PublishStepCatalog(ureq, course, hasPublishableChanges)); + if(hasCatalog) { + prevNextConfig = PrevNextFinishConfig.BACK_NEXT_FINISH; + } else { + prevNextConfig = PrevNextFinishConfig.BACK_NEXT; + } + } else if(hasPublishableChanges) { + setNextStep(new PublishStep00a(ureq)); prevNextConfig = PrevNextFinishConfig.BACK_NEXT_FINISH; - }else{ - prevNextConfig = PrevNextFinishConfig.BACK_NEXT; + } else { + setNextStep(Step.NOSTEP); + prevNextConfig = PrevNextFinishConfig.BACK_FINISH; } } diff --git a/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java b/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java index 9edd9520848..b4a65e94890 100644 --- a/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java +++ b/src/main/java/org/olat/repository/CatalogContextEntryControllerCreator.java @@ -26,6 +26,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.ContextEntryControllerCreator; import org.olat.core.id.context.DefaultContextEntryControllerCreator; +import org.olat.repository.site.CatalogSite; import org.olat.repository.site.RepositorySite; /** @@ -36,6 +37,12 @@ import org.olat.repository.site.RepositorySite; * @author srosse, stephane.rosse@frentix.com */ public class CatalogContextEntryControllerCreator extends DefaultContextEntryControllerCreator { + + private final RepositoryModule repositoryModule; + + public CatalogContextEntryControllerCreator(RepositoryModule repositoryModule) { + this.repositoryModule = repositoryModule; + } @Override public ContextEntryControllerCreator clone() { @@ -49,7 +56,11 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon @Override public String getSiteClassName(ContextEntry ce, UserRequest ureq) { - return RepositorySite.class.getName(); + if(repositoryModule.isCatalogSiteEnabled()) { + return CatalogSite.class.getName(); + } else { + return RepositorySite.class.getName(); + } } @Override @@ -59,7 +70,7 @@ public class CatalogContextEntryControllerCreator extends DefaultContextEntryCon @Override public boolean validateContextEntryAndShowError(ContextEntry ce, UserRequest ureq, WindowControl wControl) { - return true; + return repositoryModule.isCatalogEnabled(); } } diff --git a/src/main/java/org/olat/repository/RepositoryModule.java b/src/main/java/org/olat/repository/RepositoryModule.java index cd25c49b606..5837b45f303 100644 --- a/src/main/java/org/olat/repository/RepositoryModule.java +++ b/src/main/java/org/olat/repository/RepositoryModule.java @@ -43,10 +43,15 @@ public class RepositoryModule extends AbstractOLATModule { private static final String MANAGED_REPOENTRY_ENABLED = "managedRepositoryEntries"; private static final String LIST_ALL_COURSES = "listallcourse"; private static final String LIST_ALL_RESOURCETYPES = "listallresourcetypes"; - + private static final String CATALOG_SITE_ENABLED = "site.catalog.enable"; + private static final String CATALOG_ENABLED = "catalog.enable"; + private static final String CATALOG_BROWSING_ENABLED = "catalog.brwosing.enable"; + + private boolean catalogSiteEnabled; + private boolean catalogEnabled; + private boolean catalogBrowsingEnabled; private boolean listAllCourses; private boolean listAllResourceTypes; - private boolean managedRepositoryEntries; private BusinessGroupModule groupModule; @@ -61,7 +66,7 @@ public class RepositoryModule extends AbstractOLATModule { new RepositoryContextEntryControllerCreator()); NewControllerFactory.getInstance().addContextEntryControllerCreator(CatalogEntry.class.getSimpleName(), - new CatalogContextEntryControllerCreator()); + new CatalogContextEntryControllerCreator(this)); NewControllerFactory.getInstance().addContextEntryControllerCreator(RepositorySite.class.getSimpleName(), new SiteContextEntryControllerCreator(RepositorySite.class)); @@ -88,6 +93,10 @@ public class RepositoryModule extends AbstractOLATModule { listAllResourceTypes = "true".equals(listAllResourceTypesStr); managedRepositoryEntries = getBooleanConfigParameter(MANAGED_REPOENTRY_ENABLED, false); + + catalogSiteEnabled = getBooleanConfigParameter(CATALOG_SITE_ENABLED, true); + catalogEnabled = getBooleanConfigParameter(CATALOG_ENABLED, true); + catalogBrowsingEnabled = getBooleanConfigParameter(CATALOG_BROWSING_ENABLED, true); } private void updateProperties() { @@ -104,6 +113,21 @@ public class RepositoryModule extends AbstractOLATModule { if(StringHelper.containsNonWhitespace(managedRepo)) { managedRepositoryEntries = "true".equals(managedRepo); } + + String catalogSite = getStringPropertyValue(CATALOG_SITE_ENABLED, true); + if(StringHelper.containsNonWhitespace(catalogSite)) { + catalogSiteEnabled = "true".equals(catalogSite); + } + + String catalogRepo = getStringPropertyValue(CATALOG_ENABLED, true); + if(StringHelper.containsNonWhitespace(catalogRepo)) { + catalogEnabled = "true".equals(catalogRepo); + } + + String myCourses = getStringPropertyValue(CATALOG_BROWSING_ENABLED, true); + if(StringHelper.containsNonWhitespace(myCourses)) { + catalogBrowsingEnabled = "true".equals(myCourses); + } } /** @@ -150,4 +174,28 @@ public class RepositoryModule extends AbstractOLATModule { public void setManagedRepositoryEntries(boolean enabled) { setStringProperty(MANAGED_REPOENTRY_ENABLED, Boolean.toString(enabled), true); } + + public boolean isCatalogSiteEnabled() { + return catalogSiteEnabled; + } + + public void setCatalogSiteEnabled(boolean enabled) { + setStringProperty(CATALOG_SITE_ENABLED, Boolean.toString(enabled), true); + } + + public boolean isCatalogEnabled() { + return catalogEnabled; + } + + public void setCatalogEnabled(boolean enabled) { + setStringProperty(CATALOG_ENABLED, Boolean.toString(enabled), true); + } + + public boolean isCatalogBrowsingEnabled() { + return catalogBrowsingEnabled; + } + + public void setCatalogBrowsingEnabled(boolean enabled) { + setStringProperty(CATALOG_BROWSING_ENABLED, Boolean.toString(enabled), true); + } } \ No newline at end of file diff --git a/src/main/java/org/olat/repository/_chelp/cat-admin.html b/src/main/java/org/olat/repository/_chelp/cat-admin.html new file mode 100644 index 00000000000..005f5a11f9c --- /dev/null +++ b/src/main/java/org/olat/repository/_chelp/cat-admin.html @@ -0,0 +1 @@ +<p>$r.translate("chelp.cat01")</p> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties index 0f0d11cbe95..f9f40f33e1f 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties @@ -58,6 +58,7 @@ cap.launch=Die Lernressource wird geladen. Bitte warten... chelp.anim=<i>$org.olat.repository\:FileResource.ANIM</i> chelp.assOwn=<i>$org.olat.repository\:details.groups</i> chelp.auth=<b>$org.olat.repository\:cif.author\:</b> +chelp.cat01=Hilfe zur Katalog Administrator [placeholder] chelp.chanSet=<i>$org.olat.repository\:details.chprop</i> chelp.cour=<i>$org.olat.repository\:CourseModule</i> chelp.cp=<i>$org.olat.repository\:FileResource.IMSCP</i> @@ -85,6 +86,7 @@ chelp.oaug=<i>«$org.olat.repository\:cif.access.users_guests»</i>\: chelp.pdf=<i>$org.olat.repository\:FileResource.PDF</i> chelp.pp=<i>$org.olat.repository\:FileResource.PPT</i> chelp.ref=<b>$org.olat.repository\:cif.resourcename\:</b> +chelp.cat-admin.title=Katalog\: Administration chelp.rep-meta-desc.title=Lernressource\: Metadaten hinzuf\u00FCgen chelp.rep-meta-guest.title=Lernressource\: Informationen zum Eintrag (G\u00E4ste) chelp.rep-meta-info-owner.title=Lernressource\: Besitzerinformationen @@ -329,6 +331,7 @@ help.hover.meta.info.owner=Hilfe zu den Besitzern help.hover.rep.detail=Hilfe zu den Informationen in der Lernressourcen-Detailansicht help.hover.rep.picture=Hilfe zum Hochladen eines Bildes zur Lernressource help.hover.lifecycle=Hilfe zur Durchf\u00FChrungszeitraum +help.hover.catalog.admin=Hilfe zur Administration von katalog index.header=Lernressourcen index.header.alt=Suchen Sie nach Lernressourcen info.could.not.delete.entry=Der Eintrag konnte nicht gel\u00F6scht werden. diff --git a/src/main/java/org/olat/repository/_spring/repositoryContext.xml b/src/main/java/org/olat/repository/_spring/repositoryContext.xml index e4bdede3c67..d53f1f7a161 100644 --- a/src/main/java/org/olat/repository/_spring/repositoryContext.xml +++ b/src/main/java/org/olat/repository/_spring/repositoryContext.xml @@ -10,15 +10,15 @@ <context:component-scan base-package="org.olat.repository.manager" /> -<bean id="repositoryModule" class="org.olat.repository.RepositoryModule" depends-on="userModule"> - <property name="groupModule" ref="businessGroupModule"/> - <property name="persistedProperties"> - <bean class="org.olat.core.configuration.PersistedProperties" scope="prototype" init-method="init" destroy-method="destroy"> - <constructor-arg index="0" ref="coordinatorManager"/> - <constructor-arg index="1" ref="repositoryModule" /> - </bean> - </property> -</bean> + <bean id="repositoryModule" class="org.olat.repository.RepositoryModule" depends-on="userModule"> + <property name="groupModule" ref="businessGroupModule"/> + <property name="persistedProperties"> + <bean class="org.olat.core.configuration.PersistedProperties" scope="prototype" init-method="init" destroy-method="destroy"> + <constructor-arg index="0" ref="coordinatorManager"/> + <constructor-arg index="1" ref="repositoryModule" /> + </bean> + </property> + </bean> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="repositoryModule" /> @@ -28,12 +28,14 @@ listallcourse=${repo.listallcourses.enabled} listallresourcetypes=${repo.listallresourcetypes.enabled} managedRepositoryEntries=${repo.managed} + site.catalog.enable=${site.catalog.enable} + repo.catalog.enable=${repo.catalog.enable} + repo.catalog.browsing.enable=${repo.catalog.browsing.enable} </value> </property> </bean> <bean id="repositoryManager" class="org.olat.repository.RepositoryManager"/> - <bean id="deletionModule" class="org.olat.repository.delete.service.DeletionModule"> <property name="baseSecurityManager" ref="baseSecurityManager" /> <property name="persistedProperties"> @@ -45,8 +47,7 @@ </property> </bean> - <bean - class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> + <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="deletionModule" /> <property name="targetMethod" value="init" /> <property name="arguments"> @@ -64,7 +65,7 @@ <property name="mailManager" ref="mailManager" /> </bean> - <!-- vitero admin. panel --> + <!-- life cycle admin. panel --> <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> <property name="order" value="7216" /> <property name="actionController"> @@ -84,5 +85,25 @@ </list> </property> </bean> + + <!-- Catalog admin. panel --> + <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> + <property name="order" value="8209" /> + <property name="actionController"> + <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> + <property name="className" value="org.olat.repository.ui.admin.CatalogAdminController"/> + </bean> + </property> + <property name="navigationKey" value="catalog" /> + <property name="i18nActionKey" value="admin.menu.title"/> + <property name="i18nDescriptionKey" value="admin.menu.title.alt"/> + <property name="translationPackage" value="org.olat.repository.ui.admin"/> + <property name="parentTreeNodeIdentifier" value="modulesParent" /> + <property name="extensionPoints"> + <list> + <value>org.olat.admin.SystemAdminMainController</value> + </list> + </property> + </bean> </beans> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java index 3915216a9ce..f0b18845a4d 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java @@ -98,6 +98,7 @@ import org.olat.repository.RepositoryEntryIconRenderer; import org.olat.repository.RepositoryEntryManagedFlag; import org.olat.repository.RepositoryEntryStatus; import org.olat.repository.RepositoryManager; +import org.olat.repository.RepositoryModule; import org.olat.repository.RepositoryService; import org.olat.repository.handlers.CourseHandler; import org.olat.repository.handlers.RepositoryHandler; @@ -194,6 +195,7 @@ public class RepositoryDetailsController extends BasicController implements Gene private final BaseSecurity securityManager; private final UserManager userManager; private final MarkManager markManager; + private final RepositoryModule repositoryModule; private final RepositoryService repositoryService; /** @@ -211,6 +213,7 @@ public class RepositoryDetailsController extends BasicController implements Gene userManager = CoreSpringFactory.getImpl(UserManager.class); markManager = CoreSpringFactory.getImpl(MarkManager.class); acService = CoreSpringFactory.getImpl(ACService.class); + repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); repositoryService = CoreSpringFactory.getImpl(RepositoryService.class); if (log.isDebug()){ @@ -559,8 +562,9 @@ public class RepositoryDetailsController extends BasicController implements Gene detailsToolC.addLink(ACTION_EDITDESC, translate("details.chdesc"), TOOL_CHDESC, null, "o_sel_repo_edit_descritpion", false); detailsToolC.addLink(ACTION_EDITPROP, translate("details.chprop"), TOOL_CHPROP, null, "o_sel_repor_edit_properties", false); } - detailsToolC.addLink(ACTION_ADD_CATALOG, translate("details.catadd"), TOOL_CATALOG, null, "o_sel_repo_add_to_catalog", false); - + if(repositoryModule.isCatalogEnabled()) { + detailsToolC.addLink(ACTION_ADD_CATALOG, translate("details.catadd"), TOOL_CATALOG, null, "o_sel_repo_add_to_catalog", false); + } detailsToolC.addHeader(translate("table.action")); boolean closeManaged = RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.close); @@ -574,10 +578,12 @@ public class RepositoryDetailsController extends BasicController implements Gene } } // update catalog link - boolean addCatalogEnabled = !corrupted && - (repositoryEntry.getAccess() >= RepositoryEntry.ACC_USERS || - repositoryEntry.isMembersOnly()); - detailsToolC.setEnabled(TOOL_CATALOG, addCatalogEnabled); + if(repositoryModule.isCatalogEnabled()) { + boolean addCatalogEnabled = !corrupted && + (repositoryEntry.getAccess() >= RepositoryEntry.ACC_USERS || + repositoryEntry.isMembersOnly()); + detailsToolC.setEnabled(TOOL_CATALOG, addCatalogEnabled); + } } if (isNewController) { if(isAuthor) { @@ -971,7 +977,9 @@ public class RepositoryDetailsController extends BasicController implements Gene doEditSettings(ureq, repositoryEditDescriptionController, title); return; } else if (cmd.equals(ACTION_ADD_CATALOG)) { // start add to catalog workflow - doAddCatalog(ureq); + if(repositoryModule.isCatalogEnabled()) { + doAddCatalog(ureq); + } return; } else if (cmd.equals(ACTION_EDITPROP)) { // change properties removeAsListenerAndDispose(repositoryEditPropertiesController); diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java index 84d9b501381..3c27214f52e 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java @@ -29,7 +29,6 @@ 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; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; @@ -149,7 +148,6 @@ public class RepositoryMainController extends MainLayoutBasicController implemen private RepositoryAddChooseStepsController chooseStepsController; private Controller creationWizardController; private final PortfolioModule portfolioModule; - private final CatalogModule catalogModule; private final RepositoryModule repositoryModule; private final RepositoryManager repositoryManager; private final BaseSecurityModule securityModule; @@ -168,7 +166,6 @@ public class RepositoryMainController extends MainLayoutBasicController implemen log.debug("Constructing ReposityMainController for user::" + ureq.getIdentity()); } portfolioModule = CoreSpringFactory.getImpl(PortfolioModule.class); - catalogModule = CoreSpringFactory.getImpl(CatalogModule.class); repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); securityModule = CoreSpringFactory.getImpl(BaseSecurityModule.class); @@ -217,7 +214,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen activateContent(ureq, "search.my", null, null); TreeNode activatedNode = TreeHelper.findNodeByUserObject("search.my", rootNode); menuTree.setSelectedNode(activatedNode); - } else if(catalogModule.isCatalogRepoEnabled()) { + } else if(repositoryModule.isCatalogEnabled()) { activateContent(ureq, "search.catalog", null, null); TreeNode activatedNode = TreeHelper.findNodeByUserObject("search.catalog", rootNode); menuTree.setSelectedNode(activatedNode); @@ -283,7 +280,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen gtm.setRootNode(rootNode); GenericTreeNode node; - if(catalogModule.isCatalogRepoEnabled()) { + if(repositoryModule.isCatalogEnabled()) { node= new GenericTreeNode(translate("search.catalog"), "search.catalog"); node.setCssClass("o_sel_repo_catalog"); rootNode.addChild(node); @@ -511,7 +508,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen } private void activateCatalogController(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { - if(!catalogModule.isCatalogRepoEnabled()) return; + if(!repositoryModule.isCatalogEnabled()) return; // create new catalog controller with given node if none exists // create also new catalog controller when the user clicked twice on the @@ -889,7 +886,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen String type = entry.getOLATResourceable().getResourceableTypeName(); //activate the catalog if(CatalogEntry.class.getSimpleName().equals(type)) { - if(catalogModule.isCatalogRepoEnabled()) { + if(repositoryModule.isCatalogEnabled()) { TreeNode rootNode = menuTree.getTreeModel().getRootNode(); TreeNode activatedNode = TreeHelper.findNodeByUserObject("search.catalog", rootNode); if (activatedNode != null) { @@ -920,7 +917,7 @@ public class RepositoryMainController extends MainLayoutBasicController implemen searchController.activate(ureq, subEntries, nextEntry.getTransientState()); detailsController.activate(ureq, subEntries.subList(1, subEntries.size()), nextEntry.getTransientState()); } else if(CatalogEntry.class.getSimpleName().equals(subType) - && catalogModule.isCatalogRepoEnabled()) { + && repositoryModule.isCatalogEnabled()) { catalogCtrl.activate(ureq, subEntries, entry.getTransientState()); } } diff --git a/src/main/java/org/olat/repository/handlers/BlogHandler.java b/src/main/java/org/olat/repository/handlers/BlogHandler.java index 0e302939a47..c5280cc1b1d 100644 --- a/src/main/java/org/olat/repository/handlers/BlogHandler.java +++ b/src/main/java/org/olat/repository/handlers/BlogHandler.java @@ -61,7 +61,6 @@ import org.olat.resource.references.ReferenceManager; * @author Gregor Wassmann */ // Loads of parameters are unused -@SuppressWarnings("unused") public class BlogHandler implements RepositoryHandler { public static final String PROCESS_CREATENEW = "create_new"; public static final String PROCESS_UPLOAD = "upload"; diff --git a/src/main/java/org/olat/repository/handlers/CourseHandler.java b/src/main/java/org/olat/repository/handlers/CourseHandler.java index 9de204e7013..c541fa671f4 100644 --- a/src/main/java/org/olat/repository/handlers/CourseHandler.java +++ b/src/main/java/org/olat/repository/handlers/CourseHandler.java @@ -39,7 +39,6 @@ import org.olat.core.gui.control.generic.wizard.StepsMainRunController; import org.olat.core.gui.control.generic.wizard.StepsRunContext; import org.olat.core.gui.media.CleanupAfterDeliveryFileMediaResource; import org.olat.core.gui.media.MediaResource; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; @@ -104,7 +103,6 @@ public class CourseHandler implements RepositoryHandler { */ public static final String PROCESS_CREATENEW = "new"; - private static final String PACKAGE = Util.getPackageName(RepositoryManager.class); private static final boolean LAUNCHEABLE = true; private static final boolean DOWNLOADEABLE = true; private static final boolean EDITABLE = true; @@ -236,7 +234,7 @@ public class CourseHandler implements RepositoryHandler { ReferenceManager refM = ReferenceManager.getInstance(); String referencesSummary = refM.getReferencesToSummary(res, ureq.getLocale()); if (referencesSummary != null) { - Translator translator = new PackageTranslator(PACKAGE, ureq.getLocale()); + Translator translator = Util.createPackageTranslator(RepositoryManager.class, ureq.getLocale()); wControl.setError(translator.translate("details.delete.error.references", new String[] { referencesSummary })); return false; diff --git a/src/main/java/org/olat/repository/handlers/FileHandler.java b/src/main/java/org/olat/repository/handlers/FileHandler.java index d80a2658d51..9125f147b89 100644 --- a/src/main/java/org/olat/repository/handlers/FileHandler.java +++ b/src/main/java/org/olat/repository/handlers/FileHandler.java @@ -32,7 +32,6 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.media.MediaResource; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; @@ -55,15 +54,10 @@ import org.olat.resource.references.ReferenceManager; */ public abstract class FileHandler { - private static final String PACKAGE = Util.getPackageName(RepositoryManager.class); - - /** - * - */ public FileHandler() { + // } - /** * @see org.olat.repository.handlers.RepositoryHandler#getAsMediaResource(org.olat.core.id.OLATResourceable */ @@ -99,7 +93,7 @@ public abstract class FileHandler { public boolean readyToDelete(OLATResourceable res, UserRequest ureq, WindowControl wControl) { String referencesSummary = ReferenceManager.getInstance().getReferencesToSummary(res, ureq.getLocale()); if (referencesSummary != null) { - Translator translator = new PackageTranslator(PACKAGE, ureq.getLocale()); + Translator translator = Util.createPackageTranslator(RepositoryManager.class, ureq.getLocale()); wControl.setError(translator.translate("details.delete.error.references", new String[] { referencesSummary })); return false; diff --git a/src/main/java/org/olat/repository/handlers/GlossaryHandler.java b/src/main/java/org/olat/repository/handlers/GlossaryHandler.java index c21d3ce4697..f6c60c4f280 100644 --- a/src/main/java/org/olat/repository/handlers/GlossaryHandler.java +++ b/src/main/java/org/olat/repository/handlers/GlossaryHandler.java @@ -41,7 +41,6 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.layout.MainLayoutController; import org.olat.core.gui.media.MediaResource; -import org.olat.core.gui.translator.PackageTranslator; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; @@ -75,8 +74,6 @@ import org.olat.resource.references.ReferenceManager; */ public class GlossaryHandler implements RepositoryHandler { - private static final String PACKAGE = Util.getPackageName(RepositoryManager.class); - private static final boolean LAUNCHEABLE = true; private static final boolean DOWNLOADEABLE = true; private static final boolean EDITABLE = true; @@ -243,7 +240,7 @@ public class GlossaryHandler implements RepositoryHandler { ReferenceManager refM = ReferenceManager.getInstance(); String referencesSummary = refM.getReferencesToSummary(res, ureq.getLocale()); if (referencesSummary != null) { - Translator translator = new PackageTranslator(PACKAGE, ureq.getLocale()); + Translator translator = Util.createPackageTranslator(RepositoryManager.class, ureq.getLocale()); wControl.setError(translator.translate("details.delete.error.references", new String[] { referencesSummary })); return false; } diff --git a/src/main/java/org/olat/repository/handlers/PodcastHandler.java b/src/main/java/org/olat/repository/handlers/PodcastHandler.java index 2d947201bfc..071912ed460 100644 --- a/src/main/java/org/olat/repository/handlers/PodcastHandler.java +++ b/src/main/java/org/olat/repository/handlers/PodcastHandler.java @@ -61,7 +61,6 @@ import org.olat.resource.references.ReferenceManager; * @author Gregor Wassmann */ // Loads of parameters are unused -@SuppressWarnings("unused") public class PodcastHandler implements RepositoryHandler { public static final String PROCESS_CREATENEW = "create_new"; public static final String PROCESS_UPLOAD = "upload"; diff --git a/src/main/java/org/olat/catalog/site/CatalogSite.java b/src/main/java/org/olat/repository/site/CatalogSite.java similarity index 99% rename from src/main/java/org/olat/catalog/site/CatalogSite.java rename to src/main/java/org/olat/repository/site/CatalogSite.java index 49fe0446638..6ad1f6ea112 100644 --- a/src/main/java/org/olat/catalog/site/CatalogSite.java +++ b/src/main/java/org/olat/repository/site/CatalogSite.java @@ -17,7 +17,7 @@ * frentix GmbH, http://www.frentix.com * <p> */ -package org.olat.catalog.site; +package org.olat.repository.site; import java.util.Locale; diff --git a/src/main/java/org/olat/catalog/site/CatalogSiteDef.java b/src/main/java/org/olat/repository/site/CatalogSiteDef.java similarity index 76% rename from src/main/java/org/olat/catalog/site/CatalogSiteDef.java rename to src/main/java/org/olat/repository/site/CatalogSiteDef.java index 2889d4fffbc..6592865259a 100644 --- a/src/main/java/org/olat/catalog/site/CatalogSiteDef.java +++ b/src/main/java/org/olat/repository/site/CatalogSiteDef.java @@ -17,9 +17,8 @@ * frentix GmbH, http://www.frentix.com * <p> */ -package org.olat.catalog.site; +package org.olat.repository.site; -import org.olat.catalog.CatalogModule; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; @@ -27,6 +26,7 @@ import org.olat.core.gui.control.navigation.AbstractSiteDefinition; import org.olat.core.gui.control.navigation.SiteConfiguration; import org.olat.core.gui.control.navigation.SiteDefinition; import org.olat.core.gui.control.navigation.SiteInstance; +import org.olat.repository.RepositoryModule; /** * @@ -37,11 +37,17 @@ public class CatalogSiteDef extends AbstractSiteDefinition implements SiteDefini @Override public SiteInstance createSite(UserRequest ureq, WindowControl wControl, SiteConfiguration config) { - CatalogModule catModule = CoreSpringFactory.getImpl(CatalogModule.class); - if(catModule.isCatalogSiteEnabled()) { + RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); + if(repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogSiteEnabled()) { SiteInstance si = new CatalogSite(this, ureq.getLocale()); return si; } return null; } + + @Override + public boolean isEnabled() { + RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); + return repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogSiteEnabled() && super.isEnabled(); + } } diff --git a/src/main/java/org/olat/catalog/ui/CatalogAdminController.java b/src/main/java/org/olat/repository/ui/admin/CatalogAdminController.java similarity index 57% rename from src/main/java/org/olat/catalog/ui/CatalogAdminController.java rename to src/main/java/org/olat/repository/ui/admin/CatalogAdminController.java index d78af50aab4..43cfa2e06cf 100644 --- a/src/main/java/org/olat/catalog/ui/CatalogAdminController.java +++ b/src/main/java/org/olat/repository/ui/admin/CatalogAdminController.java @@ -17,9 +17,8 @@ * frentix GmbH, http://www.frentix.com * <p> */ -package org.olat.catalog.ui; +package org.olat.repository.ui.admin; -import org.olat.catalog.CatalogModule; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; @@ -30,19 +29,22 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.Util; +import org.olat.repository.RepositoryModule; +import org.olat.repository.RepositoryService; /** * + * Initial date: 17.03.2014<br> * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ public class CatalogAdminController extends FormBasicController { - private MultipleSelectionElement myCoursesEl; - private MultipleSelectionElement siteEl; - private MultipleSelectionElement repoEl; + private MultipleSelectionElement enableEl, enableBrowsingEl, siteEl; - private final CatalogModule catalogModule; + + private final RepositoryModule repositoryModule; /** * @param ureq @@ -51,7 +53,8 @@ public class CatalogAdminController extends FormBasicController { public CatalogAdminController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl, "admin"); - catalogModule = CoreSpringFactory.getImpl(CatalogModule.class); + repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); + setTranslator(Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator())); initForm(ureq); } @@ -60,20 +63,24 @@ public class CatalogAdminController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { //server informations FormLayoutContainer serverCont = FormLayoutContainer.createDefaultFormLayout("functions", getTranslator()); + serverCont.setFormContextHelp("org.olat.repository", "cat-admin.html", "help.hover.catalog.admin"); formLayout.add(serverCont); formLayout.add("functions", serverCont); - myCoursesEl = uifactory.addCheckboxesHorizontal("my.courses", "catalog.courses", serverCont, new String[]{"xx"}, new String[]{""}, null); - myCoursesEl.select("xx", catalogModule.isMyCoursesEnabled()); - myCoursesEl.addActionListener(FormEvent.ONCLICK); + boolean enabled = repositoryModule.isCatalogEnabled(); + enableEl = uifactory.addCheckboxesHorizontal("catalog.enable", "catalog.enable", serverCont, new String[]{"xx"}, new String[]{""}, null); + enableEl.select("xx", enabled); + enableEl.addActionListener(FormEvent.ONCLICK); - siteEl = uifactory.addCheckboxesHorizontal("catalog.new", "catalog.new", serverCont, new String[]{"xx"}, new String[]{""}, null); - siteEl.select("xx", catalogModule.isCatalogSiteEnabled()); + enableBrowsingEl = uifactory.addCheckboxesHorizontal("catalog.browsing", "catalog.browsing", serverCont, new String[]{"xx"}, new String[]{""}, null); + enableBrowsingEl.select("xx", repositoryModule.isCatalogBrowsingEnabled()); + enableBrowsingEl.setEnabled(enabled); + enableBrowsingEl.addActionListener(FormEvent.ONCLICK); + + siteEl = uifactory.addCheckboxesHorizontal("catalog.site", "catalog.site", serverCont, new String[]{"xx"}, new String[]{""}, null); + siteEl.select("xx", repositoryModule.isCatalogSiteEnabled()); + siteEl.setEnabled(enabled); siteEl.addActionListener(FormEvent.ONCLICK); - - repoEl = uifactory.addCheckboxesHorizontal("catalog.classic", "catalog.classic", serverCont, new String[]{"xx"}, new String[]{""}, null); - repoEl.select("xx", catalogModule.isCatalogRepoEnabled()); - repoEl.addActionListener(FormEvent.ONCLICK); } protected void doDispose() { @@ -82,12 +89,15 @@ public class CatalogAdminController extends FormBasicController { @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - if(source == myCoursesEl) { - catalogModule.setMyCoursesEnabled(myCoursesEl.isSelected(0)); + if(source == enableEl) { + boolean enabled = enableEl.isSelected(0); + repositoryModule.setCatalogEnabled(enabled); + siteEl.setEnabled(enabled); + enableBrowsingEl.setEnabled(enabled); } else if(source == siteEl) { - catalogModule.setCatalogSiteEnabled(siteEl.isSelected(0)); - } else if(source == repoEl) { - catalogModule.setCatalogRepoEnabled(repoEl.isSelected(0)); + repositoryModule.setCatalogSiteEnabled(siteEl.isSelected(0)); + } else if(source == enableBrowsingEl) { + repositoryModule.setCatalogBrowsingEnabled(enableBrowsingEl.isSelected(0)); } super.formInnerEvent(ureq, source, event); } diff --git a/src/main/java/org/olat/repository/ui/admin/_content/admin.html b/src/main/java/org/olat/repository/ui/admin/_content/admin.html new file mode 100644 index 00000000000..7658447ed9a --- /dev/null +++ b/src/main/java/org/olat/repository/ui/admin/_content/admin.html @@ -0,0 +1,4 @@ +<fieldset><legend>$r.translate("admin.catalog.settings")</legend> +$r.render("functions") +</fieldset> + diff --git a/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_de.properties new file mode 100644 index 00000000000..c968b7ce145 --- /dev/null +++ b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_de.properties @@ -0,0 +1,8 @@ +#Mon Mar 02 09:54:04 CET 2009 +admin.menu.title=Katalog +admin.menu.title.alt=Katalog +admin.catalog.settings=Katalog settings +catalog.enable=Katalog einschalten +catalog.browsing=Katalog überfliegen +catalog.site=Katalog in eigenes Site + diff --git a/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_en.properties new file mode 100644 index 00000000000..7ee286dd24a --- /dev/null +++ b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_en.properties @@ -0,0 +1,7 @@ +#Wed Aug 28 21:50:26 CEST 2013 +admin.catalog.settings=Catalog settings +admin.menu.title=Catalog +admin.menu.title.alt=Catalog +catalog.enable=Enable catalog +catalog.browsing=Catalog browsing +catalog.site=Catalog in its own site \ No newline at end of file diff --git a/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_fr.properties new file mode 100644 index 00000000000..fa8cb53a65b --- /dev/null +++ b/src/main/java/org/olat/repository/ui/admin/_i18n/LocalStrings_fr.properties @@ -0,0 +1,4 @@ +#Tue Oct 29 21:29:29 CET 2013 +admin.catalog.settings=Configuration du catalogue +admin.menu.title=Catalogue +admin.menu.title.alt=Catalogue \ No newline at end of file diff --git a/src/main/java/org/olat/repository/ui/admin/_i18n/i18nBundleMetadata.properties b/src/main/java/org/olat/repository/ui/admin/_i18n/i18nBundleMetadata.properties new file mode 100644 index 00000000000..5dc111f2e19 --- /dev/null +++ b/src/main/java/org/olat/repository/ui/admin/_i18n/i18nBundleMetadata.properties @@ -0,0 +1,2 @@ +#Wed Jan 14 11:40:12 CET 2009 +bundle.priority=500 diff --git a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java index d2d340652d4..9236ad67764 100644 --- a/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java +++ b/src/main/java/org/olat/repository/ui/list/OverviewRepositoryListController.java @@ -39,11 +39,17 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryManager; +import org.olat.repository.RepositoryModule; import org.olat.repository.SearchMyRepositoryEntryViewParams; +import org.olat.util.logging.activity.LoggingResourceable; /** * @@ -56,26 +62,29 @@ public class OverviewRepositoryListController extends BasicController implements private MainPanel mainPanel; private final VelocityContainer mainVC; private final SegmentViewComponent segmentView; - private final Link favoriteLink, myCourseLink, catalogLink; + private final Link favoriteLink, myCourseLink; + private Link catalogLink; private RepositoryEntryListController markedCtrl; private RepositoryEntryListController myCoursesCtrl; private CatalogNodeController catalogCtrl; private StackedController stackPanel; - private CatalogManager catalogManager; + private final CatalogManager catalogManager; + private final RepositoryModule repositoryModule; public OverviewRepositoryListController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); setTranslator(Util.createPackageTranslator(RepositoryManager.class, getLocale(), getTranslator())); catalogManager = CoreSpringFactory.getImpl(CatalogManager.class); + repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); mainPanel = new MainPanel("myCoursesMainPanel"); mainVC = createVelocityContainer("overview"); mainPanel.setContent(mainVC); - boolean hasMarkedEntries = doOpenMark(ureq); + boolean hasMarkedEntries = doOpenMark(ureq).isEmpty(); if(!hasMarkedEntries) { doOpenMyCourses(ureq); } @@ -84,8 +93,11 @@ public class OverviewRepositoryListController extends BasicController implements segmentView.addSegment(favoriteLink, hasMarkedEntries); myCourseLink = LinkFactory.createLink("search.mycourses.student", mainVC, this); segmentView.addSegment(myCourseLink, !hasMarkedEntries); - catalogLink = LinkFactory.createLink("search.catalog", mainVC, this); - segmentView.addSegment(catalogLink, false); + + if(repositoryModule.isCatalogEnabled() && repositoryModule.isCatalogBrowsingEnabled()) { + catalogLink = LinkFactory.createLink("search.catalog", mainVC, this); + segmentView.addSegment(catalogLink, false); + } putInitialPanel(mainPanel); } @@ -97,7 +109,24 @@ public class OverviewRepositoryListController extends BasicController implements @Override public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { - // + if(entries == null || entries.isEmpty()) return; + + ContextEntry entry = entries.get(0); + String segment = entry.getOLATResourceable().getResourceableTypeName(); + List<ContextEntry> subEntries = entries.subList(1, entries.size()); + if("Favorits".equals(segment)) { + doOpenMark(ureq).activate(ureq, subEntries, entry.getTransientState()); + segmentView.select(favoriteLink); + } else if("My".equals(segment)) { + doOpenMyCourses(ureq).activate(ureq, subEntries, entry.getTransientState()); + segmentView.select(myCourseLink); + } else if("Catalog".equals(segment)) { + CatalogNodeController ctrl = doOpenCatalog(ureq); + if(ctrl != null) { + ctrl.activate(ureq, subEntries, entry.getTransientState()); + segmentView.select(catalogLink); + } + } } @Override @@ -123,42 +152,62 @@ public class OverviewRepositoryListController extends BasicController implements } } - private boolean doOpenMark(UserRequest ureq) { - boolean hasMarkedEntries = true; + private RepositoryEntryListController doOpenMark(UserRequest ureq) { if(markedCtrl == null) { SearchMyRepositoryEntryViewParams searchParams = new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles(), "CourseModule"); searchParams.setMarked(Boolean.TRUE); - markedCtrl = new RepositoryEntryListController(ureq, getWindowControl(), searchParams); - hasMarkedEntries = !markedCtrl.isEmpty(); + + OLATResourceable ores = OresHelper.createOLATResourceableInstance("Favorits", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + markedCtrl = new RepositoryEntryListController(ureq, bwControl, searchParams); listenTo(markedCtrl); } + + addToHistory(ureq, markedCtrl); mainVC.put("segmentCmp", markedCtrl.getInitialComponent()); - return hasMarkedEntries; + return markedCtrl; } - private void doOpenMyCourses(UserRequest ureq) { + private RepositoryEntryListController doOpenMyCourses(UserRequest ureq) { if(myCoursesCtrl == null) { SearchMyRepositoryEntryViewParams searchParams = new SearchMyRepositoryEntryViewParams(getIdentity(), ureq.getUserSession().getRoles(), "CourseModule"); searchParams.setMembershipMandatory(true); - myCoursesCtrl = new RepositoryEntryListController(ureq, getWindowControl(), searchParams); + + OLATResourceable ores = OresHelper.createOLATResourceableInstance("My", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + myCoursesCtrl = new RepositoryEntryListController(ureq, bwControl, searchParams); listenTo(myCoursesCtrl); } + + addToHistory(ureq, myCoursesCtrl); mainVC.put("segmentCmp", myCoursesCtrl.getInitialComponent()); + return myCoursesCtrl; } - private void doOpenCatalog(UserRequest ureq) { + private CatalogNodeController doOpenCatalog(UserRequest ureq) { + if(!repositoryModule.isCatalogEnabled() || !repositoryModule.isCatalogBrowsingEnabled()) return null; + if(catalogCtrl == null) { List<CatalogEntry> entries = catalogManager.getRootCatalogEntries(); CatalogEntry rootEntry = null; if(entries.size() > 0) { rootEntry = entries.get(0); } - catalogCtrl = new CatalogNodeController(ureq, getWindowControl(), rootEntry); + + OLATResourceable ores = OresHelper.createOLATResourceableInstance("Catalog", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ores, null, getWindowControl()); + catalogCtrl = new CatalogNodeController(ureq, bwControl, rootEntry); catalogCtrl.setStackedController(stackPanel); listenTo(catalogCtrl); } + + addToHistory(ureq, catalogCtrl); mainVC.put("segmentCmp", catalogCtrl.getInitialComponent()); + return catalogCtrl; } } diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java index 39b0e4c1e77..f98aae8e596 100644 --- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java +++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java @@ -52,7 +52,10 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; +import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryManager; @@ -68,7 +71,7 @@ import org.olat.repository.ui.list.RepositoryEntryDataModel.Cols; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com */ public class RepositoryEntryListController extends FormBasicController - implements RepositoryEntryDataSourceUIFactory, FlexiTableComponentDelegate { + implements Activateable2, RepositoryEntryDataSourceUIFactory, FlexiTableComponentDelegate { private FormLink listLink, tableLink, filterLink, sortLink; private FlexiTableElement tableEl; @@ -140,6 +143,11 @@ public class RepositoryEntryListController extends FormBasicController // } + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + // + } + @Override protected void formOK(UserRequest ureq) { // diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 943989f027f..7f8ddec0694 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -393,14 +393,13 @@ site.repository.enable=true site.groups.enable=true site.questionpool.enable=true -## Alpha code: enable catalog a separate site, my courses view in home. -## Do not change this for production, this will be released in a later released -### +#Enable/disable the catalog in its own tab site.catalog.enable=false -repo.catalog.enable=true -my.courses.enable=false -### +# Enable/disable the whole catalog feature +repo.catalog.enable=true +# Enabl/disable the browsing of catalog in the course site +repo.catalog.browsing.enable=true # 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 -- GitLab