throws IOException, ServletException {
ActionErrors errors = new ActionErrors();
ActionForward forward = mapping.findForward("editTheme.page");
try {
RollerSession rses = RollerSession.getRollerSession(request);
RollerRequest rreq = RollerRequest.getRollerRequest(request);
WebsiteData website = rreq.getWebsite();
if ( rses.isUserAuthorizedToAdmin(website) ) {
BasePageModel pageModel = new BasePageModel(
"themeEditor.title", request, response, mapping);
request.setAttribute("model",pageModel);
String newTheme = null;
// lookup what theme the user wants first
String theme = request.getParameter("theme");
try {
Roller roller = RollerFactory.getRoller();
ThemeManager themeMgr = roller.getThemeManager();
Theme previewTheme = themeMgr.getTheme(theme);
if(previewTheme.isEnabled()) {
newTheme = previewTheme.getName();
} else {
errors.add(null, new ActionMessage("Theme not enabled"));
saveErrors(request, errors);
}
} catch(ThemeNotFoundException tnfe) {
// possibly selected "custom"
if(theme != null && theme.equals(Theme.CUSTOM)) {
newTheme = Theme.CUSTOM;
} else {
// hmm ... that's weird
mLogger.warn(tnfe);
errors.add(null, new ActionMessage("Theme not found"));
saveErrors(request, errors);
}
}
// update theme for website and save
if(newTheme != null) {
try {
String username = rses.getAuthenticatedUser().getUserName();
website.setEditorTheme(newTheme);
UserManager userMgr = RollerFactory.getRoller().getUserManager();
userMgr.saveWebsite(website);