_kiwi.global.settings = _kiwi.model.DataStore.instance('kiwi.settings');\r
_kiwi.global.settings.load();\r
\r
- if (opts.server_settings.client.themes) {\r
- _.each(opts.server_settings.client.themes, function (theme) {\r
- var link = $.parseHTML('<link rel="alternate stylesheet" type="text/css" data-theme href="'+ opts.base_path + '/assets/themes/' + theme.name.toLowerCase() + '/style.css" title="' + theme.name.toLowerCase() + '" disabled/>');\r
- link.disabled = true;\r
- $(link).appendTo($('head'));\r
- });\r
- }\r
-\r
continueStart = function (locale, s, xhr) {\r
if (locale) {\r
_kiwi.global.i18n = new Jed({locale_data: locale, domain: xhr.getResponseHeader('Content-Language')});\r
opts.client_plugins = data.client_plugins;\r
opts.translations = data.translations;\r
opts.locale = data.locale;\r
+ opts.themes = data.themes;\r
\r
if (typeof data.kiwi_server !== 'undefined')\r
opts.kiwi_server = data.kiwi_server;\r
\r
+ // Load themes\r
+ if (opts.themes) {\r
+ opts.themes.forEach(function (theme) {\r
+ var disabled = (opts.server_settings.client.settings.theme !== theme),\r
+ rel = (disabled?'alternate ':'') + 'stylesheet' /*+ (disabled?' prefetch':'')*/;\r
+ var link = $.parseHTML('<link rel="' + rel + '" type="text/css" data-theme href="'+ opts.base_path + '/assets/themes/' + theme.name.toLowerCase() + '/style.css" title="' + theme.name.toLowerCase() + '"' + (disabled?'disabled':'') + '/>');\r
+ link.disabled = disabled;\r
+ $(link).appendTo($('head'));\r
+ });\r
+ }\r
+\r
// Start loading scripts\r
loadNextScript();\r
});\r
theme_name = theme_name.toLowerCase();
// Clear any current theme
- $('[data-theme][rel="stylesheet"]').each(function (idx, link) {
+ $('[data-theme]:not([disabled])').each(function (idx, link) {
var $link = $(link);
- $link.attr('rel', 'alternate ' + $link.attr('rel'))[0].disabled = true;
+ $link.attr('rel', 'alternate ' + $link.attr('rel')).attr('disabled', true)[0].disabled = true;
});
// Apply the new theme
- //this.$el.addClass('theme_' + (theme_name || 'relaxed'));
var link = $('[data-theme][title=' + theme_name + ']');
if (link.length > 0) {
- link.attr('rel', 'stylesheet')[0].disabled = false;
+ link.attr('rel', 'stylesheet').attr('disabled', false)[0].disabled = false;
}
},
show_timestamps: false,
mute_sounds: false,
show_emoticons: true
- },
- themes: [
- 'relaxed',
- 'mini',
- 'cli',
- 'basic'
- ]
+ }
};
+// List of themes available for the user to choose from
+conf.client_themes = [
+ 'relaxed',
+ 'mini',
+ 'cli',
+ 'basic'
+];
+
// If set, the client may only connect to this 1 IRC server
//conf.restrict_server = "irc.kiwiirc.com";
if (err) {
response.statusCode = 500;
response.end();
+ console.log(err);
} else {
sendSettings.call(this, request, response, settings);
}
}
// Read theme information
- readThemeInfo(vars.server_settings.client.themes, function (err, themes) {
+ readThemeInfo(config.get().client_themes, function (err, themes) {
if (err) {
return callback(err);
}
- vars.server_settings.client.themes = themes;
+ vars.themes = themes;
// Get a list of available translations
fs.readFile(__dirname + '/../client/assets/src/translations/translations.json', function (err, translations) {
function readThemeInfo(themes, prev, callback) {
"use strict";
- var theme = themes.shift();
+ var theme = themes[0];
if (typeof prev === 'function') {
callback = prev;
prev.push(theme_json);
- if (themes.length > 0) {
- return readThemeInfo(themes, prev, callback);
+ if (themes.length > 1) {
+ return readThemeInfo(themes.slice(1), prev, callback);
}
callback(null, prev);