fix: don't move theme/plugin to top if its already active

v1.18.x
Barış Soner Uşaklı 6 years ago
parent 1796b65d34
commit acd9576489

@ -63,9 +63,19 @@ function activate(plugin) {
if (!isInstalled) {
return next(new Error('plugin not installed'));
}
plugins.isActive(plugin, next);
},
function (isActive, next) {
if (isActive) {
winston.info('Plugin `%s` already active', plugin);
process.exit(0);
}
db.sortetSetCard('plugins:active', next);
},
function (numPlugins, next) {
winston.info('Activating plugin `%s`', plugin);
db.sortedSetAdd('plugins:active', 0, plugin, next);
db.sortedSetAdd('plugins:active', numPlugins, plugin, next);
},
function (next) {
events.log({

@ -86,31 +86,28 @@ async function getThemes(themePath) {
}
Themes.set = async (data) => {
const themeData = {
'theme:type': data.type,
'theme:id': data.id,
'theme:staticDir': '',
'theme:templates': '',
'theme:src': '',
};
switch (data.type) {
case 'local': {
const current = await Meta.configs.get('theme:id');
var config = await fsReadfile(path.join(nconf.get('themes_path'), data.id, 'theme.json'), 'utf8');
if (current !== data.id) {
let config = await fsReadfile(path.join(nconf.get('themes_path'), data.id, 'theme.json'), 'utf8');
config = JSON.parse(config);
await db.sortedSetRemove('plugins:active', current);
await db.sortedSetAdd('plugins:active', 0, data.id);
await db.sortedSetRemove('plugins:active', current);
const numPlugins = await db.sortedSetCard('plugins:active');
await db.sortedSetAdd('plugins:active', numPlugins, data.id);
// Re-set the themes path (for when NodeBB is reloaded)
Themes.setPath(config);
themeData['theme:staticDir'] = config.staticDir ? config.staticDir : '';
themeData['theme:templates'] = config.templates ? config.templates : '';
themeData['theme:src'] = '';
themeData.bootswatchSkin = '';
await Meta.configs.setMultiple({
'theme:type': data.type,
'theme:id': data.id,
'theme:staticDir': config.staticDir ? config.staticDir : '',
'theme:templates': config.templates ? config.templates : '',
'theme:src': '',
bootswatchSkin: '',
});
await Meta.configs.setMultiple(themeData);
await events.log({
type: 'theme-set',
uid: parseInt(data.uid, 10) || 0,
@ -119,6 +116,7 @@ Themes.set = async (data) => {
});
Meta.reloadRequired = true;
}
break;
}
case 'bootswatch':

@ -106,27 +106,18 @@ SocketAdmin.themes.getInstalled = function (socket, data, callback) {
meta.themes.get(callback);
};
SocketAdmin.themes.set = function (socket, data, callback) {
SocketAdmin.themes.set = async function (socket, data) {
if (!data) {
return callback(new Error('[[error:invalid-data]]'));
throw new Error('[[error:invalid-data]]');
}
async.waterfall([
function (next) {
if (data.type === 'bootswatch') {
setImmediate(next);
} else {
widgets.reset(next);
if (data.type === 'local') {
await widgets.reset();
}
},
function (next) {
// Add uid and ip data
data.ip = socket.ip;
data.uid = socket.uid;
meta.themes.set(data, next);
},
], callback);
await meta.themes.set(data);
};
SocketAdmin.plugins.toggleActive = async function (socket, plugin_id) {

Loading…
Cancel
Save