Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rd67980727ce20caae53321c9fe684087eb1c0474 -rf959b9766e27fe24ae8e16747b92fec53c9a2dfc --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision d67980727ce20caae53321c9fe684087eb1c0474) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision f959b9766e27fe24ae8e16747b92fec53c9a2dfc) @@ -691,3 +691,5 @@ sysadmin.cache.cleared = Cache cleared sysadmin.garbage.clear = Run Garbage Collector sysadmin.garbage.cleared = Garbage Collector triggered +ai.config.title = Artificial Intelligence +ai.config.link = AI management \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java =================================================================== diff -u -r7cf4da03e4f448f3dd5d5abf8de533c56263e74c -rf959b9766e27fe24ae8e16747b92fec53c9a2dfc --- lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (.../AdminConstants.java) (revision 7cf4da03e4f448f3dd5d5abf8de533c56263e74c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (.../AdminConstants.java) (revision f959b9766e27fe24ae8e16747b92fec53c9a2dfc) @@ -31,6 +31,7 @@ public static final String START_MONITOR_LINKS = "server.monitor.title"; public static final String START_COURSE_LINKS = "user.course.title"; public static final String START_WORKFLOW_AUTOMATION = "workflow.automation.title"; + public static final String START_AI = "ai.config.title"; public static final String PARAM_PAGE = "page"; public static final String PARAM_ROWS = "rows"; Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java =================================================================== diff -u -r8c86b938e95d7e4081ddcba08a23012c813d936d -rf959b9766e27fe24ae8e16747b92fec53c9a2dfc --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision 8c86b938e95d7e4081ddcba08a23012c813d936d) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision f959b9766e27fe24ae8e16747b92fec53c9a2dfc) @@ -20,6 +20,7 @@ import org.lamsfoundation.lams.timezone.util.TimezoneIDComparator; import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; @@ -83,13 +84,7 @@ // do nothing in case of creating a tool consumer } - boolean isLtiAdvantageEnabled = false; - try { - Class clazz = Class.forName("org.lamsfoundation.lams.lti.advantage.util.LtiAdvantageUtil", false, - this.getClass().getClassLoader()); - isLtiAdvantageEnabled = clazz != null; - } catch (Exception e) { - } + boolean isLtiAdvantageEnabled = Configuration.isLamsModuleAvailable(Configuration.LTI_ADVANTAGE_MODULE_CLASS); if (isLtiAdvantageEnabled) { request.setAttribute("ltiAdvantageEnabled", isLtiAdvantageEnabled); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SysAdminStartController.java =================================================================== diff -u -rdd6fcf5c4586df136532e8f6baba9210b93742fb -rf959b9766e27fe24ae8e16747b92fec53c9a2dfc --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SysAdminStartController.java (.../SysAdminStartController.java) (revision dd6fcf5c4586df136532e8f6baba9210b93742fb) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/SysAdminStartController.java (.../SysAdminStartController.java) (revision f959b9766e27fe24ae8e16747b92fec53c9a2dfc) @@ -93,6 +93,14 @@ groupedLinks.add(new Object[] { AdminConstants.START_WORKFLOW_AUTOMATION, links }); } + // LDEV-5375 + boolean isAiEnabled = Configuration.isLamsModuleAvailable(Configuration.AI_MODULE_CLASS); + if (isAiEnabled) { + links = new ArrayList<>(); + links.add(new LinkBean("../ai/admin/start.do", "ai.config.link")); + groupedLinks.add(new Object[] { AdminConstants.START_AI, links }); + } + } else if (userManagementService.isUserGlobalGroupManager()) { ArrayList links = new ArrayList<>(); links.add(new LinkBean("usersearch.do", "admin.user.find")); Index: lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java =================================================================== diff -u -r7cf4da03e4f448f3dd5d5abf8de533c56263e74c -rf959b9766e27fe24ae8e16747b92fec53c9a2dfc --- lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java (.../Configuration.java) (revision 7cf4da03e4f448f3dd5d5abf8de533c56263e74c) +++ lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java (.../Configuration.java) (revision f959b9766e27fe24ae8e16747b92fec53c9a2dfc) @@ -69,6 +69,9 @@ public static final int ITEMS_NON_LDAP = 2; public static final int ITEMS_ONLY_LDAP = 3; + public static final String LTI_ADVANTAGE_MODULE_CLASS = "org.lamsfoundation.lams.lti.advantage.util.LtiAdvantageUtil"; + public static final String AI_MODULE_CLASS = "org.lamsfoundation.lams.ai.AiConstants"; + private static Map items = null; protected static IConfigurationDAO configurationDAO; @@ -313,19 +316,25 @@ return null; } - public MessageService getMessageService() { - return Configuration.messageService; - } - public void persistUpdate() { updatePublicFolderName(); Configuration.configurationDAO.insertOrUpdateAll(Configuration.items.values()); } - /** - * @param configurationDAO - * The configurationDAO to set. - */ + @SuppressWarnings({ "rawtypes" }) + public static boolean isLamsModuleAvailable(String moduleClassName) { + try { + Class clazz = Class.forName(moduleClassName, false, Configuration.class.getClassLoader()); + return clazz != null; + } catch (Exception e) { + } + return false; + } + + public MessageService getMessageService() { + return Configuration.messageService; + } + public void setConfigurationDAO(IConfigurationDAO configurationDAO) { Configuration.configurationDAO = configurationDAO; } @@ -343,7 +352,6 @@ return "Configuration items:" + (Configuration.items != null ? Configuration.items.toString() : "none"); } - @SuppressWarnings("unchecked") private void updatePublicFolderName() { // LDEV-2430 update public folder name according to default server locale WorkspaceFolder publicFolder = null;