Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources.properties,v diff -u -r1.60 -r1.61 --- lams_admin/conf/language/lams/ApplicationResources.properties 19 Aug 2009 06:45:17 -0000 1.60 +++ lams_admin/conf/language/lams/ApplicationResources.properties 20 Aug 2009 04:37:46 -0000 1.61 @@ -411,5 +411,8 @@ admin.themes.makeDefault =Make default admin.themes.deleteConfirm =Are you sure you want to delete this theme? admin.themes.nameAlreadyExists =Please enter a new unused theme name, or click the edit icon to edit. +admin.themes.type =Type +admin.themes.html =HTML +admin.themes.flash =Flash #======= End labels: Exported 391 labels for en AU ===== Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.60 -r1.61 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 19 Aug 2009 06:45:17 -0000 1.60 +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 20 Aug 2009 04:37:46 -0000 1.61 @@ -411,5 +411,8 @@ admin.themes.makeDefault =Make default admin.themes.deleteConfirm =Are you sure you want to delete this theme? admin.themes.nameAlreadyExists =Please enter a new unused theme name, or click the edit icon to edit. +admin.themes.type =Type +admin.themes.html =HTML +admin.themes.flash =Flash #======= End labels: Exported 391 labels for en AU ===== Index: lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java,v diff -u -r1.13 -r1.14 --- lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 20 Aug 2009 04:20:59 -0000 1.13 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/service/ImportService.java 20 Aug 2009 04:37:46 -0000 1.14 @@ -46,7 +46,7 @@ import org.lamsfoundation.lams.admin.web.dto.V1OrgRightDTO; import org.lamsfoundation.lams.admin.web.dto.V1OrganisationDTO; import org.lamsfoundation.lams.admin.web.dto.V1UserDTO; -import org.lamsfoundation.lams.themes.CSSThemeVisualElement; +import org.lamsfoundation.lams.themes.Theme; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationState; @@ -657,7 +657,7 @@ } String flashId = parseStringCell(row.getCell(FLASH_THEME)); - CSSThemeVisualElement flashTheme = getFlashTheme(flashId); + Theme flashTheme = getFlashTheme(flashId); if (flashTheme==null) { args[0] = "("+flashId+")"; rowResult.add(messageService.getMessage("error.flash.theme.invalid", args)); @@ -667,7 +667,7 @@ } String htmlId = parseStringCell(row.getCell(HTML_THEME)); - CSSThemeVisualElement htmlTheme = getHtmlTheme(htmlId); + Theme htmlTheme = getHtmlTheme(htmlId); if (htmlTheme==null) { args[0] = "("+htmlId+")"; rowResult.add(messageService.getMessage("error.html.theme.invalid", args)); @@ -850,26 +850,26 @@ return true; } - // set CSSThemeVisualElement to default flash theme if cell is empty - private CSSThemeVisualElement getFlashTheme(String flashId){ + // set Theme to default flash theme if cell is empty + private Theme getFlashTheme(String flashId){ if (flashId==null || flashId=="") { return service.getDefaultFlashTheme(); } else { try { - return (CSSThemeVisualElement)service.findById(CSSThemeVisualElement.class, new Long(flashId)); + return (Theme)service.findById(Theme.class, new Long(flashId)); } catch (Exception e) { return null; } } } - // set CSSThemeVisualElement to default html theme if cell is empty - private CSSThemeVisualElement getHtmlTheme(String htmlId){ + // set Theme to default html theme if cell is empty + private Theme getHtmlTheme(String htmlId){ if (htmlId==null || htmlId=="") { return service.getDefaultHtmlTheme(); } else { try { - return (CSSThemeVisualElement)service.findById(CSSThemeVisualElement.class, new Long(htmlId)); + return (Theme)service.findById(Theme.class, new Long(htmlId)); } catch (Exception e) { return null; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ThemeManagementAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ThemeManagementAction.java,v diff -u -r1.1 -r1.2 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ThemeManagementAction.java 19 Aug 2009 06:45:17 -0000 1.1 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/ThemeManagementAction.java 20 Aug 2009 04:37:46 -0000 1.2 @@ -33,7 +33,7 @@ import org.lamsfoundation.lams.admin.service.AdminServiceProxy; import org.lamsfoundation.lams.admin.web.form.ThemeForm; import org.lamsfoundation.lams.config.ConfigurationItem; -import org.lamsfoundation.lams.themes.CSSThemeVisualElement; +import org.lamsfoundation.lams.themes.Theme; import org.lamsfoundation.lams.themes.service.IThemeService; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.util.CSSThemeUtil; @@ -59,32 +59,33 @@ private static IThemeService themeService; private static Configuration configurationService; - public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // check permission if (!request.isUserInRole(Role.SYSADMIN)) { request.setAttribute("errorName", "RegisterAction"); - request.setAttribute("errorMessage", AdminServiceProxy.getMessageService(getServlet().getServletContext()) - .getMessage("error.authorisation")); + request.setAttribute("errorMessage", AdminServiceProxy.getMessageService(getServlet().getServletContext()).getMessage("error.authorisation")); return mapping.findForward("error"); } if (themeService == null) { themeService = AdminServiceProxy.getThemeService(getServlet().getServletContext()); } - List themes = themeService.getAllThemes(); + // Get all the themes + List themes = themeService.getAllThemes(); - String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); - for (CSSThemeVisualElement theme : themes) { + // Flag the default and un-editable themes + String currentCSSTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); + String currentFlashTheme = Configuration.get(ConfigurationKeys.DEFAULT_FLASH_THEME); + for (Theme theme : themes) { theme.setCurrentDefaultTheme(Boolean.FALSE); - if (theme.getName().equals(currentTheme)) { + if (theme.getName().equals(currentCSSTheme) || theme.getName().equals(currentFlashTheme)) { theme.setCurrentDefaultTheme(Boolean.TRUE); } theme.setNotEditable(Boolean.FALSE); - if (theme.getName().equals(CSSThemeUtil.DEFAULT_HTML_THEME)) { + if (theme.getName().equals(CSSThemeUtil.DEFAULT_HTML_THEME) || theme.getName().equals(CSSThemeUtil.DEFAULT_FLASH_THEME)) { theme.setNotEditable(Boolean.TRUE); } } @@ -93,54 +94,77 @@ return mapping.findForward("success"); } - public ActionForward addOrEditTheme(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + public ActionForward addOrEditTheme(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ThemeForm themeForm = (ThemeForm) form; - CSSThemeVisualElement theme = null; + // Update the theme + Theme theme = null; if (themeForm.getId() != null && themeForm.getId() != 0) { theme = themeService.getTheme(themeForm.getId()); } else { - theme = new CSSThemeVisualElement(); + theme = new Theme(); } updateThemeFromForm(theme, themeForm); - themeService.saveOrUpdateTheme(theme); + // Set the theme as default, or disable it as default. + // Disabling restores the system default if (themeForm.getCurrentDefaultTheme() != null && themeForm.getCurrentDefaultTheme() == true) { - Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, themeForm.getName()); - getConfiguration().persistUpdate(); - } else { - String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); - if (themeForm.getName().equals(currentTheme)) { - Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, CSSThemeUtil.DEFAULT_HTML_THEME); + if (Integer.parseInt(themeForm.getType()) == Theme.TYPE_CSS) { + Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, themeForm.getName()); getConfiguration().persistUpdate(); + } else { + Configuration.updateItem(ConfigurationKeys.DEFAULT_FLASH_THEME, themeForm.getName()); + getConfiguration().persistUpdate(); } + } else { + if (Integer.parseInt(themeForm.getType()) == Theme.TYPE_CSS) { + String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); + if (themeForm.getName().equals(currentTheme)) { + Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, CSSThemeUtil.DEFAULT_HTML_THEME); + getConfiguration().persistUpdate(); + } + } else { + String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_FLASH_THEME); + if (themeForm.getName().equals(currentTheme)) { + Configuration.updateItem(ConfigurationKeys.DEFAULT_FLASH_THEME, CSSThemeUtil.DEFAULT_FLASH_THEME); + getConfiguration().persistUpdate(); + } + } } themeForm.clear(); return unspecified(mapping, themeForm, request, response); } - public ActionForward removeTheme(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + public ActionForward removeTheme(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { + + // Remove the theme ThemeForm themeForm = (ThemeForm) form; if (themeForm.getId() != null) { themeService.removeTheme(themeForm.getId()); } - String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); - if (themeForm.getName().equals(currentTheme)) { - Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, CSSThemeUtil.DEFAULT_HTML_THEME); - getConfiguration().persistUpdate(); + // If it was the default, restore the system default + if (Integer.parseInt(themeForm.getType()) == Theme.TYPE_CSS) { + String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_HTML_THEME); + if (themeForm.getName().equals(currentTheme)) { + Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, CSSThemeUtil.DEFAULT_HTML_THEME); + getConfiguration().persistUpdate(); + } + } else { + String currentTheme = Configuration.get(ConfigurationKeys.DEFAULT_FLASH_THEME); + if (themeForm.getName().equals(currentTheme)) { + Configuration.updateItem(ConfigurationKeys.DEFAULT_FLASH_THEME, CSSThemeUtil.DEFAULT_FLASH_THEME); + getConfiguration().persistUpdate(); + } } themeForm.clear(); return unspecified(mapping, themeForm, request, response); } - public ActionForward setAsDefault(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + public ActionForward setAsDefault(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ThemeForm themeForm = (ThemeForm) form; if (themeForm.getName() != null) { Configuration.updateItem(ConfigurationKeys.DEFAULT_HTML_THEME, themeForm.getName()); @@ -150,18 +174,17 @@ return unspecified(mapping, themeForm, request, response); } - private CSSThemeVisualElement updateThemeFromForm(CSSThemeVisualElement theme, ThemeForm form) { + private Theme updateThemeFromForm(Theme theme, ThemeForm form) { theme.setName(form.getName()); theme.setDescription(form.getDescription()); theme.setImageDirectory(form.getImageDirectory()); - theme.setTheme(Boolean.TRUE); + theme.setType(Integer.parseInt(form.getType())); return theme; } private Configuration getConfiguration() { if (configurationService == null) { - WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() - .getServletContext()); + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); configurationService = (Configuration) ctx.getBean("configurationService"); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ThemeForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ThemeForm.java,v diff -u -r1.1 -r1.2 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ThemeForm.java 19 Aug 2009 06:45:17 -0000 1.1 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ThemeForm.java 20 Aug 2009 04:37:46 -0000 1.2 @@ -44,6 +44,7 @@ private String description; private String imageDirectory; private Boolean currentDefaultTheme; + private String type; public String getMethod() { return method; @@ -81,14 +82,20 @@ public void setCurrentDefaultTheme(Boolean currentDefaultTheme) { this.currentDefaultTheme = currentDefaultTheme; } - + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } public void clear() { this.method = null; this.id = null; this.name = null; this.description = null; this.imageDirectory = null; this.currentDefaultTheme = null; + this.type = null; } } Index: lams_admin/web/themeManagement.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_admin/web/themeManagement.jsp,v diff -u -r1.1 -r1.2 --- lams_admin/web/themeManagement.jsp 19 Aug 2009 06:45:17 -0000 1.1 +++ lams_admin/web/themeManagement.jsp 20 Aug 2009 04:37:46 -0000 1.2 @@ -3,7 +3,7 @@