Index: kernel-impl/src/main/java/org/sakaiproject/tool/impl/ActiveToolComponent.java =================================================================== --- kernel-impl/src/main/java/org/sakaiproject/tool/impl/ActiveToolComponent.java (revision 120844) +++ kernel-impl/src/main/java/org/sakaiproject/tool/impl/ActiveToolComponent.java (working copy) @@ -72,6 +72,8 @@ private static Log M_log = LogFactory.getLog(ActiveToolComponent.class); public static final String TOOL_PORTLET_CONTEXT_PATH = "portlet-context"; + static final String TOOL_CATEGORIES_PREFIX = "tool.categories."; + static final String TOOL_CATEGORIES_APPEND_PREFIX = TOOL_CATEGORIES_PREFIX+"append."; // private ResourceLoader toolProps = null; @@ -369,6 +371,28 @@ } } + // KNL-1031 - Override OR Add additional categories from sakai.properties + String[] categoriesArray = serverConfigurationService().getStrings(TOOL_CATEGORIES_PREFIX+tool.getId()); + if (categoriesArray != null) { + // override the set of categories + categories.clear(); + for (String category: categoriesArray) { + if (StringUtils.isNotBlank(category)) { + categories.add(category); + } + } + } else { + categoriesArray = serverConfigurationService().getStrings(TOOL_CATEGORIES_APPEND_PREFIX+tool.getId()); + if (categoriesArray != null) { + // add categories instead of overriding + for (String category: categoriesArray) { + if (StringUtils.isNotBlank(category)) { + categories.add(category); + } + } + } + } + // set the tool's collected values tool.setRegisteredConfig(finalConfig, mutableConfig); tool.setCategories(categories);