diff --git a/public/src/forum/admin/themes.js b/public/src/forum/admin/themes.js
index c76fea0c9a..6a1b3db477 100644
--- a/public/src/forum/admin/themes.js
+++ b/public/src/forum/admin/themes.js
@@ -1,5 +1,5 @@
"use strict";
-/*global define, socket, app, bootbox, tabIndent, config, RELATIVE_PATH*/
+/*global define, socket, app, bootbox, tabIndent, config, RELATIVE_PATH, templates */
define('forum/admin/themes', ['forum/admin/settings'], function(Settings) {
var Themes = {};
@@ -71,17 +71,17 @@ define('forum/admin/themes', ['forum/admin/settings'], function(Settings) {
if (confirm) {
socket.emit('admin.themes.set', {
type: 'local',
- id: 'nodebb-theme-cerulean'
+ id: 'nodebb-theme-vanilla'
}, function(err) {
if (err) {
return app.alertError(err.message);
}
- highlightSelectedTheme('nodebb-theme-cerulean');
+ highlightSelectedTheme('nodebb-theme-vanilla');
app.alert({
alert_id: 'admin:theme',
type: 'success',
title: 'Theme Changed',
- message: 'You have successfully reverted your NodeBB back to it\'s default theme. Restarting your NodeBB ',
+ message: 'You have successfully reverted your NodeBB back to it\'s default theme.',
timeout: 3500
});
});
@@ -95,34 +95,19 @@ define('forum/admin/themes', ['forum/admin/settings'], function(Settings) {
return app.alertError(err.message);
}
- var instListEl = $('#installed_themes').empty(), liEl;
+ var instListEl = $('#installed_themes');
if (!themes.length) {
instListEl.append($('
').addClass('no-themes').html('No installed themes found'));
return;
+ } else {
+ templates.parse('partials/admin/theme_list', {
+ themes: themes
+ }, function(html) {
+ instListEl.html(html);
+ highlightSelectedTheme(config['theme:id']);
+ });
}
-
- for (var x = 0, numThemes = themes.length; x < numThemes; x++) {
- liEl = $('').attr({
- 'data-type': 'local',
- 'data-theme': themes[x].id
- }).html('
' +
- '' +
- '
' +
- ' ' +
- '
' +
- '
' + themes[x].name + '
' +
- '
' +
- themes[x].description +
- (themes[x].url ? ' (Homepage)' : '') +
- '
' +
- '
' +
- '');
-
- instListEl.append(liEl);
- }
-
- highlightSelectedTheme(config['theme:id']);
});
// Proper tabbing for "Custom CSS" field
@@ -138,26 +123,23 @@ define('forum/admin/themes', ['forum/admin/settings'], function(Settings) {
};
Themes.render = function(bootswatch) {
- var themeContainer = $('#bootstrap_themes').empty(),
- numThemes = bootswatch.themes.length, themeEl, theme;
-
- for (var x = 0; x < numThemes; x++) {
- theme = bootswatch.themes[x];
- themeEl = $('
').attr({
- 'data-type': 'bootswatch',
- 'data-css': theme.cssCdn,
- 'data-theme': theme.name
- }).html('

' +
- '
' +
- '
' +
- ' ' +
- '
' +
- '
' + theme.name + '
' +
- '
' + theme.description + '
' +
- '
' +
- '
');
- themeContainer.append(themeEl);
- }
+ var themeContainer = $('#bootstrap_themes');
+
+ templates.parse('partials/admin/theme_list', {
+ themes: bootswatch.themes.map(function(theme) {
+ return {
+ type: 'bootswatch',
+ id: theme.name,
+ name: theme.name,
+ description: theme.description,
+ screenshot_url: theme.thumbnail,
+ url: theme.preview,
+ css: theme.cssCdn
+ };
+ })
+ }, function(html) {
+ themeContainer.html(html);
+ });
};
Themes.prepareWidgets = function() {
diff --git a/src/meta/themes.js b/src/meta/themes.js
index b26253a495..f41620cc1b 100644
--- a/src/meta/themes.js
+++ b/src/meta/themes.js
@@ -39,6 +39,15 @@ module.exports = function(Meta) {
return next();
} else {
var configObj = JSON.parse(file.toString());
+
+ // Minor adjustments for API output
+ configObj.type = 'local';
+ if (configObj.screenshot) {
+ configObj.screenshot_url = nconf.get('relative_path') + '/css/previews/' + configObj.id
+ } else {
+ configObj.screenshot_url = nconf.get('relative_path') + '/images/themes/default.png';
+ }
+
next(err, configObj);
}
});