When fetching a theme, if theme config key is not found, write out the default

This is required in order to get the theme config keys of the various apps into
themes.config; this way, the routerconsole requires no knowledge of what apps
support universal theming, and can just blanket apply themes to all known keys.
This commit is contained in:
str4d
2012-07-22 13:13:43 +00:00
parent 6be94658a7
commit a7c8a7201a
4 changed files with 33 additions and 8 deletions

View File

@ -289,7 +289,14 @@ public class SnarkManager implements Snark.CompleteListener {
if (!_config.containsKey(PROP_STARTUP_DELAY)) if (!_config.containsKey(PROP_STARTUP_DELAY))
_config.setProperty(PROP_STARTUP_DELAY, Integer.toString(DEFAULT_STARTUP_DELAY)); _config.setProperty(PROP_STARTUP_DELAY, Integer.toString(DEFAULT_STARTUP_DELAY));
// Fetch theme // Fetch theme
_theme = _context.readConfigFile(THEME_CONFIG_FILE).getProperty(PROP_THEME, DEFAULT_THEME); Properties themeProps = _context.readConfigFile(THEME_CONFIG_FILE);
_theme = themeProps.getProperty(PROP_THEME);
// Ensure that theme config line exists in config file
if (_theme == null) {
_theme = DEFAULT_THEME;
themeProps.put(PROP_THEME, _theme);
_context.writeConfigFile(THEME_CONFIG_FILE, themeProps);
}
updateConfig(); updateConfig();
} }
/** /**

View File

@ -29,16 +29,17 @@ public class ConfigUIHandler extends FormHandler {
return; return;
Properties props = _context.readConfigFile(CSSHelper.THEME_CONFIG_FILE); Properties props = _context.readConfigFile(CSSHelper.THEME_CONFIG_FILE);
String oldTheme = props.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME); String oldTheme = props.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
// Save routerconsole theme first to ensure it is in config file
if (_config.equals("default")) // obsolete
props.put(CSSHelper.PROP_THEME_NAME, null);
else
props.put(CSSHelper.PROP_THEME_NAME, _config);
if (_universalTheming) { if (_universalTheming) {
// The routerconsole theme gets set again, but oh well
for (Iterator it = props.keySet().iterator(); it.hasNext();) { for (Iterator it = props.keySet().iterator(); it.hasNext();) {
String key = (String) it.next(); String key = (String) it.next();
props.put(key, _config); props.put(key, _config);
} }
} else {
if (_config.equals("default")) // obsolete
props.put(CSSHelper.PROP_THEME_NAME, null);
else
props.put(CSSHelper.PROP_THEME_NAME, _config);
} }
boolean ok = _context.writeConfigFile(CSSHelper.THEME_CONFIG_FILE, props); boolean ok = _context.writeConfigFile(CSSHelper.THEME_CONFIG_FILE, props);
if (ok) { if (ok) {

View File

@ -47,7 +47,14 @@ public class BaseBean
if( properties.getProperty(PRIVATE_BOOK) == null) if( properties.getProperty(PRIVATE_BOOK) == null)
properties.setProperty(PRIVATE_BOOK, DEFAULT_PRIVATE_BOOK); properties.setProperty(PRIVATE_BOOK, DEFAULT_PRIVATE_BOOK);
// Fetch theme // Fetch theme
_theme = _context.readConfigFile(THEME_CONFIG_FILE).getProperty(PROP_THEME_NAME, DEFAULT_THEME); Properties themeProps = _context.readConfigFile(THEME_CONFIG_FILE);
_theme = themeProps.getProperty(PROP_THEME_NAME);
// Ensure that theme config line exists in config file
if (_theme == null) {
_theme = DEFAULT_THEME;
themeProps.put(PROP_THEME_NAME, _theme);
_context.writeConfigFile(THEME_CONFIG_FILE, themeProps);
}
configLastLoaded = currentTime; configLastLoaded = currentTime;
} }
catch (Exception e) { catch (Exception e) {

View File

@ -49,6 +49,7 @@ import java.util.Enumeration;
import java.util.Iterator; import java.util.Iterator;
import java.util.ListIterator; import java.util.ListIterator;
import java.util.Locale; import java.util.Locale;
import java.util.Properties;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@ -1190,6 +1191,15 @@ public class WebMail extends HttpServlet
private void processRequest( HttpServletRequest httpRequest, HttpServletResponse response ) private void processRequest( HttpServletRequest httpRequest, HttpServletResponse response )
throws IOException, ServletException throws IOException, ServletException
{ {
Properties themeProps = I2PAppContext.getGlobalContext().readConfigFile(THEME_CONFIG_FILE);
String theme = themeProps.getProperty(PROP_THEME);
// Ensure that theme config line exists in config file
if (theme == null) {
theme = DEFAULT_THEME;
themeProps.put(PROP_THEME, theme);
I2PAppContext.getGlobalContext().writeConfigFile(THEME_CONFIG_FILE, themeProps);
}
httpRequest.setCharacterEncoding("UTF-8"); httpRequest.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
response.setHeader("X-Frame-Options", "SAMEORIGIN"); response.setHeader("X-Frame-Options", "SAMEORIGIN");
@ -1209,7 +1219,7 @@ public class WebMail extends HttpServlet
sessionObject.info = ""; sessionObject.info = "";
sessionObject.pageChanged = false; sessionObject.pageChanged = false;
sessionObject.showAttachment = null; sessionObject.showAttachment = null;
sessionObject.themePath = "/themes/susimail/" + I2PAppContext.getGlobalContext().readConfigFile(THEME_CONFIG_FILE).getProperty(PROP_THEME, DEFAULT_THEME) + '/'; sessionObject.themePath = "/themes/susimail/" + theme + '/';
sessionObject.imgPath = sessionObject.themePath + "images/"; sessionObject.imgPath = sessionObject.themePath + "images/";
processStateChangeButtons( sessionObject, request ); processStateChangeButtons( sessionObject, request );