Merge remote-tracking branch 'origin/master' into webserver.js-refactor

Conflicts:
	public/templates/admin/themes.tpl
	src/meta.js
	src/routes/api.js
v1.18.x
psychobunny
commit 464c2f42c3

@ -1,15 +1,20 @@
define(['forum/admin/settings'], function(Settings) { define(['forum/admin/settings'], function(Settings) {
var Themes = {}; var Themes = {};
function highlightSelectedTheme(themeId) {
$('#themes li[data-theme]').removeClass('btn-warning');
$('#themes li[data-theme="' + themeId + '"]').addClass('btn-warning');
}
Themes.init = function() { Themes.init = function() {
var scriptEl = $('<script />'); var scriptEl = $('<script />');
scriptEl.attr('src', 'http://api.bootswatch.com/3/?callback=bootswatchListener'); scriptEl.attr('src', 'http://api.bootswatch.com/3/?callback=bootswatchListener');
$('body').append(scriptEl); $('body').append(scriptEl);
var bootstrapThemeContainer = $('#bootstrap_themes'), var bootstrapThemeContainer = $('#bootstrap_themes'),
installedThemeContainer = $('#installed_themes'), installedThemeContainer = $('#installed_themes');
themeEvent = function(e) { function themeEvent(e) {
var target = $(e.target), var target = $(e.target),
action = target.attr('data-action'); action = target.attr('data-action');
@ -26,6 +31,11 @@ define(['forum/admin/settings'], function(Settings) {
id: themeId, id: themeId,
src: cssSrc src: cssSrc
}, function(err) { }, function(err) {
if (err) {
return app.alertError(err.message);
}
highlightSelectedTheme(themeId);
app.alert({ app.alert({
alert_id: 'admin:theme', alert_id: 'admin:theme',
type: 'success', type: 'success',
@ -37,7 +47,7 @@ define(['forum/admin/settings'], function(Settings) {
break; break;
} }
} }
}; }
bootstrapThemeContainer.on('click', themeEvent); bootstrapThemeContainer.on('click', themeEvent);
installedThemeContainer.on('click', themeEvent); installedThemeContainer.on('click', themeEvent);
@ -49,6 +59,10 @@ define(['forum/admin/settings'], function(Settings) {
type: 'local', type: 'local',
id: 'nodebb-theme-cerulean' id: 'nodebb-theme-cerulean'
}, function(err) { }, function(err) {
if (err) {
return app.alertError(err.message);
}
highlightSelectedTheme('nodebb-theme-cerulean');
app.alert({ app.alert({
alert_id: 'admin:theme', alert_id: 'admin:theme',
type: 'success', type: 'success',
@ -59,7 +73,7 @@ define(['forum/admin/settings'], function(Settings) {
}); });
} }
}); });
}, false); });
// Installed Themes // Installed Themes
socket.emit('admin.themes.getInstalled', function(err, themes) { socket.emit('admin.themes.getInstalled', function(err, themes) {
@ -69,7 +83,11 @@ define(['forum/admin/settings'], function(Settings) {
var instListEl = $('#installed_themes').empty(), liEl; var instListEl = $('#installed_themes').empty(), liEl;
if (themes.length > 0) { if (!themes.length) {
instListEl.append($('<li/ >').addClass('no-themes').html('No installed themes found'));
return;
}
for (var x = 0, numThemes = themes.length; x < numThemes; x++) { for (var x = 0, numThemes = themes.length; x < numThemes; x++) {
liEl = $('<li/ >').attr({ liEl = $('<li/ >').attr({
'data-type': 'local', 'data-type': 'local',
@ -89,10 +107,8 @@ define(['forum/admin/settings'], function(Settings) {
instListEl.append(liEl); instListEl.append(liEl);
} }
} else {
// No themes found highlightSelectedTheme(config['theme:id']);
instListEl.append($('<li/ >').addClass('no-themes').html('No installed themes found'));
}
}); });
// Proper tabbing for "Custom CSS" field // Proper tabbing for "Custom CSS" field

@ -309,7 +309,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
var bookmark = localStorage.getItem('topic:' + tid + ':bookmark'); var bookmark = localStorage.getItem('topic:' + tid + ':bookmark');
if (window.location.hash) { if (window.location.hash) {
Topic.scrollToPost(window.location.hash.substr(1), true); Topic.scrollToPost(window.location.hash.substr(1), true);
} else if (bookmark && (!config.usePagination || (config.usePagination && pagination.currentPage === 1))) { } else if (bookmark && (!config.usePagination || (config.usePagination && pagination.currentPage === 1)) && Topic.postCount > 1) {
app.alert({ app.alert({
alert_id: 'bookmark', alert_id: 'bookmark',
message: '[[topic:bookmark_instructions]]', message: '[[topic:bookmark_instructions]]',
@ -1042,8 +1042,9 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
$('.progress-bar').width((index / Topic.postCount * 100) + '%'); $('.progress-bar').width((index / Topic.postCount * 100) + '%');
var currentBookmark = localStorage.getItem('topic:' + templates.get('topic_id') + ':bookmark'); var currentBookmark = localStorage.getItem('topic:' + templates.get('topic_id') + ':bookmark');
if (!currentBookmark || parseInt(el.attr('data-pid'), 10) > parseInt(currentBookmark, 10)) { if (!currentBookmark || parseInt(el.attr('data-pid'), 10) >= parseInt(currentBookmark, 10)) {
localStorage.setItem('topic:' + templates.get('topic_id') + ':bookmark', el.attr('data-pid')); localStorage.setItem('topic:' + templates.get('topic_id') + ':bookmark', el.attr('data-pid'));
app.removeAlert('bookmark');
} }
if (!scrollingToPost) { if (!scrollingToPost) {

@ -30,6 +30,7 @@ apiController.getConfig = function(req, res, next) {
config.topicsPerPage = meta.config.topicsPerPage || 20; config.topicsPerPage = meta.config.topicsPerPage || 20;
config.postsPerPage = meta.config.postsPerPage || 20; config.postsPerPage = meta.config.postsPerPage || 20;
config.maximumFileSize = meta.config.maximumFileSize; config.maximumFileSize = meta.config.maximumFileSize;
config['theme:id'] = meta.config['theme:id'];
config.defaultLang = meta.config.defaultLang || 'en_GB'; config.defaultLang = meta.config.defaultLang || 'en_GB';
config.environment = process.env.NODE_ENV; config.environment = process.env.NODE_ENV;

@ -207,9 +207,7 @@
multi.hgetall(keys[x]); multi.hgetall(keys[x]);
} }
multi.exec(function (err, replies) { multi.exec(callback);
callback(err, replies);
});
}; };
module.getObjectField = function(key, field, callback) { module.getObjectField = function(key, field, callback) {

@ -155,9 +155,7 @@ var fs = require('fs'),
db.setObject('config', themeData, next); db.setObject('config', themeData, next);
} }
], function(err) { ], callback);
callback(err);
});
break; break;
case 'bootswatch': case 'bootswatch':

Loading…
Cancel
Save