mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-30 18:46:01 +01:00
Unwrap meta modules
This commit is contained in:
20
src/meta.js
20
src/meta.js
@@ -12,16 +12,16 @@ var Meta = module.exports;
|
|||||||
|
|
||||||
Meta.reloadRequired = false;
|
Meta.reloadRequired = false;
|
||||||
|
|
||||||
require('./meta/configs')(Meta);
|
Meta.configs = require('./meta/configs');
|
||||||
require('./meta/themes')(Meta);
|
Meta.themes = require('./meta/themes');
|
||||||
require('./meta/js')(Meta);
|
Meta.js = require('./meta/js');
|
||||||
require('./meta/css')(Meta);
|
Meta.css = require('./meta/css');
|
||||||
require('./meta/sounds')(Meta);
|
Meta.sounds = require('./meta/sounds');
|
||||||
require('./meta/settings')(Meta);
|
Meta.settings = require('./meta/settings');
|
||||||
require('./meta/logs')(Meta);
|
Meta.logs = require('./meta/logs');
|
||||||
require('./meta/errors')(Meta);
|
Meta.errors = require('./meta/errors');
|
||||||
require('./meta/tags')(Meta);
|
Meta.tags = require('./meta/tags');
|
||||||
require('./meta/dependencies')(Meta);
|
Meta.dependencies = require('./meta/dependencies');
|
||||||
Meta.templates = require('./meta/templates');
|
Meta.templates = require('./meta/templates');
|
||||||
Meta.blacklist = require('./meta/blacklist');
|
Meta.blacklist = require('./meta/blacklist');
|
||||||
Meta.languages = require('./meta/languages');
|
Meta.languages = require('./meta/languages');
|
||||||
|
|||||||
@@ -6,18 +6,19 @@ var nconf = require('nconf');
|
|||||||
|
|
||||||
var db = require('../database');
|
var db = require('../database');
|
||||||
var pubsub = require('../pubsub');
|
var pubsub = require('../pubsub');
|
||||||
|
var Meta = require('../meta');
|
||||||
var cacheBuster = require('./cacheBuster');
|
var cacheBuster = require('./cacheBuster');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Configs = module.exports;
|
||||||
Meta.config = {};
|
|
||||||
Meta.configs = {};
|
|
||||||
|
|
||||||
Meta.configs.init = function (callback) {
|
Meta.config = {};
|
||||||
delete Meta.config;
|
|
||||||
|
Configs.init = function (callback) {
|
||||||
|
Meta.config = null;
|
||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
Meta.configs.list(next);
|
Configs.list(next);
|
||||||
},
|
},
|
||||||
function (config, next) {
|
function (config, next) {
|
||||||
cacheBuster.read(function (err, buster) {
|
cacheBuster.read(function (err, buster) {
|
||||||
@@ -32,26 +33,26 @@ module.exports = function (Meta) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.configs.list = function (callback) {
|
Configs.list = function (callback) {
|
||||||
db.getObject('config', function (err, config) {
|
db.getObject('config', function (err, config) {
|
||||||
config = config || {};
|
config = config || {};
|
||||||
config.version = nconf.get('version');
|
config.version = nconf.get('version');
|
||||||
config.registry = nconf.get('registry');
|
config.registry = nconf.get('registry');
|
||||||
callback(err, config);
|
callback(err, config);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.configs.get = function (field, callback) {
|
Configs.get = function (field, callback) {
|
||||||
db.getObjectField('config', field, callback);
|
db.getObjectField('config', field, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.configs.getFields = function (fields, callback) {
|
Configs.getFields = function (fields, callback) {
|
||||||
db.getObjectFields('config', fields, callback);
|
db.getObjectFields('config', fields, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.configs.set = function (field, value, callback) {
|
Configs.set = function (field, value, callback) {
|
||||||
callback = callback || function () {};
|
callback = callback || function () {};
|
||||||
if (!field) {
|
if (!field) {
|
||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
@@ -59,11 +60,11 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
var data = {};
|
var data = {};
|
||||||
data[field] = value;
|
data[field] = value;
|
||||||
Meta.configs.setMultiple(data, callback);
|
Configs.setMultiple(data, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Meta.configs.setMultiple = function (data, callback) {
|
Configs.setMultiple = function (data, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
processConfig(data, next);
|
processConfig(data, next);
|
||||||
@@ -76,16 +77,16 @@ module.exports = function (Meta) {
|
|||||||
setImmediate(next);
|
setImmediate(next);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
function processConfig(data, callback) {
|
function processConfig(data, callback) {
|
||||||
if (data.customCSS) {
|
if (data.customCSS) {
|
||||||
return saveRenderedCss(data, callback);
|
return saveRenderedCss(data, callback);
|
||||||
}
|
}
|
||||||
setImmediate(callback);
|
setImmediate(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveRenderedCss(data, callback) {
|
function saveRenderedCss(data, callback) {
|
||||||
var less = require('less');
|
var less = require('less');
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
@@ -98,28 +99,28 @@ module.exports = function (Meta) {
|
|||||||
setImmediate(next);
|
setImmediate(next);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateConfig(config) {
|
function updateConfig(config) {
|
||||||
updateLocalConfig(config);
|
updateLocalConfig(config);
|
||||||
pubsub.publish('config:update', config);
|
pubsub.publish('config:update', config);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateLocalConfig(config) {
|
function updateLocalConfig(config) {
|
||||||
for (var field in config) {
|
for (var field in config) {
|
||||||
if (config.hasOwnProperty(field)) {
|
if (config.hasOwnProperty(field)) {
|
||||||
Meta.config[field] = config[field];
|
Meta.config[field] = config[field];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pubsub.on('config:update', function onConfigReceived(config) {
|
pubsub.on('config:update', function onConfigReceived(config) {
|
||||||
if (typeof config === 'object' && Meta.config) {
|
if (typeof config === 'object' && Meta.config) {
|
||||||
updateLocalConfig(config);
|
updateLocalConfig(config);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Meta.configs.setOnEmpty = function (values, callback) {
|
Configs.setOnEmpty = function (values, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
db.getObject('config', next);
|
db.getObject('config', next);
|
||||||
@@ -139,9 +140,8 @@ module.exports = function (Meta) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.configs.remove = function (field, callback) {
|
Configs.remove = function (field, callback) {
|
||||||
db.deleteObjectField('config', field, callback);
|
db.deleteObjectField('config', field, callback);
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,10 +11,9 @@ var db = require('../database');
|
|||||||
var file = require('../file');
|
var file = require('../file');
|
||||||
var minifier = require('./minifier');
|
var minifier = require('./minifier');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var CSS = module.exports;
|
||||||
Meta.css = {};
|
|
||||||
|
|
||||||
var buildImports = {
|
var buildImports = {
|
||||||
client: function (source) {
|
client: function (source) {
|
||||||
return '@import "./theme";\n' + source + '\n' + [
|
return '@import "./theme";\n' + source + '\n' + [
|
||||||
'@import "font-awesome";',
|
'@import "font-awesome";',
|
||||||
@@ -44,9 +43,9 @@ module.exports = function (Meta) {
|
|||||||
return str.replace(/\//g, path.sep);
|
return str.replace(/\//g, path.sep);
|
||||||
}).join('\n');
|
}).join('\n');
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
function filterMissingFiles(filepaths, callback) {
|
function filterMissingFiles(filepaths, callback) {
|
||||||
async.filter(filepaths, function (filepath, next) {
|
async.filter(filepaths, function (filepath, next) {
|
||||||
file.exists(path.join(__dirname, '../../node_modules', filepath), function (err, exists) {
|
file.exists(path.join(__dirname, '../../node_modules', filepath), function (err, exists) {
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
@@ -56,9 +55,9 @@ module.exports = function (Meta) {
|
|||||||
next(err, exists);
|
next(err, exists);
|
||||||
});
|
});
|
||||||
}, callback);
|
}, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getImports(files, prefix, extension, callback) {
|
function getImports(files, prefix, extension, callback) {
|
||||||
var pluginDirectories = [];
|
var pluginDirectories = [];
|
||||||
var source = '';
|
var source = '';
|
||||||
|
|
||||||
@@ -85,9 +84,9 @@ module.exports = function (Meta) {
|
|||||||
}, function (err) {
|
}, function (err) {
|
||||||
callback(err, source);
|
callback(err, source);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBundleMetadata(target, callback) {
|
function getBundleMetadata(target, callback) {
|
||||||
var paths = [
|
var paths = [
|
||||||
path.join(__dirname, '../../node_modules'),
|
path.join(__dirname, '../../node_modules'),
|
||||||
path.join(__dirname, '../../public/vendor/fontawesome/less'),
|
path.join(__dirname, '../../public/vendor/fontawesome/less'),
|
||||||
@@ -147,9 +146,9 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
callback(null, { paths: paths, imports: imports });
|
callback(null, { paths: paths, imports: imports });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Meta.css.buildBundle = function (target, fork, callback) {
|
CSS.buildBundle = function (target, fork, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
getBundleMetadata(target, next);
|
getBundleMetadata(target, next);
|
||||||
@@ -164,5 +163,4 @@ module.exports = function (Meta) {
|
|||||||
fs.writeFile(path.join(__dirname, '../../build/public', filename), bundle.code, next);
|
fs.writeFile(path.join(__dirname, '../../build/public', filename), bundle.code, next);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,17 +9,17 @@ require('colors');
|
|||||||
|
|
||||||
var pkg = require('../../package.json');
|
var pkg = require('../../package.json');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Dependencies = module.exports;
|
||||||
Meta.dependencies = {};
|
|
||||||
var depsMissing = false;
|
|
||||||
var depsOutdated = false;
|
|
||||||
|
|
||||||
Meta.dependencies.check = function (callback) {
|
var depsMissing = false;
|
||||||
|
var depsOutdated = false;
|
||||||
|
|
||||||
|
Dependencies.check = function (callback) {
|
||||||
var modules = Object.keys(pkg.dependencies);
|
var modules = Object.keys(pkg.dependencies);
|
||||||
|
|
||||||
winston.verbose('Checking dependencies for outdated modules');
|
winston.verbose('Checking dependencies for outdated modules');
|
||||||
|
|
||||||
async.each(modules, Meta.dependencies.checkModule, function (err) {
|
async.each(modules, Dependencies.checkModule, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -32,9 +32,9 @@ module.exports = function (Meta) {
|
|||||||
callback(null);
|
callback(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.dependencies.checkModule = function (moduleName, callback) {
|
Dependencies.checkModule = function (moduleName, callback) {
|
||||||
fs.readFile(path.join(__dirname, '../../node_modules/', moduleName, 'package.json'), {
|
fs.readFile(path.join(__dirname, '../../node_modules/', moduleName, 'package.json'), {
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
}, function (err, pkgData) {
|
}, function (err, pkgData) {
|
||||||
@@ -47,14 +47,14 @@ module.exports = function (Meta) {
|
|||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgData = Meta.dependencies.parseModuleData(moduleName, pkgData);
|
pkgData = Dependencies.parseModuleData(moduleName, pkgData);
|
||||||
|
|
||||||
var satisfies = Meta.dependencies.doesSatisfy(pkgData, pkg.dependencies[moduleName]);
|
var satisfies = Dependencies.doesSatisfy(pkgData, pkg.dependencies[moduleName]);
|
||||||
callback(null, satisfies);
|
callback(null, satisfies);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.dependencies.parseModuleData = function (moduleName, pkgData) {
|
Dependencies.parseModuleData = function (moduleName, pkgData) {
|
||||||
try {
|
try {
|
||||||
pkgData = JSON.parse(pkgData);
|
pkgData = JSON.parse(pkgData);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -63,9 +63,9 @@ module.exports = function (Meta) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return pkgData;
|
return pkgData;
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.dependencies.doesSatisfy = function (moduleData, packageJSONVersion) {
|
Dependencies.doesSatisfy = function (moduleData, packageJSONVersion) {
|
||||||
if (!moduleData) {
|
if (!moduleData) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -77,5 +77,4 @@ module.exports = function (Meta) {
|
|||||||
depsOutdated = true;
|
depsOutdated = true;
|
||||||
}
|
}
|
||||||
return satisfies;
|
return satisfies;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,16 +8,15 @@ var cronJob = require('cron').CronJob;
|
|||||||
var db = require('../database');
|
var db = require('../database');
|
||||||
var analytics = require('../analytics');
|
var analytics = require('../analytics');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Errors = module.exports;
|
||||||
Meta.errors = {};
|
|
||||||
|
|
||||||
var counters = {};
|
var counters = {};
|
||||||
|
|
||||||
new cronJob('0 * * * * *', function () {
|
new cronJob('0 * * * * *', function () {
|
||||||
Meta.errors.writeData();
|
Errors.writeData();
|
||||||
}, null, true);
|
}, null, true);
|
||||||
|
|
||||||
Meta.errors.writeData = function () {
|
Errors.writeData = function () {
|
||||||
var dbQueue = [];
|
var dbQueue = [];
|
||||||
if (Object.keys(counters).length > 0) {
|
if (Object.keys(counters).length > 0) {
|
||||||
for (var key in counters) {
|
for (var key in counters) {
|
||||||
@@ -32,9 +31,9 @@ module.exports = function (Meta) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.errors.log404 = function (route, callback) {
|
Errors.log404 = function (route, callback) {
|
||||||
callback = callback || function () {};
|
callback = callback || function () {};
|
||||||
if (!route) {
|
if (!route) {
|
||||||
return setImmediate(callback);
|
return setImmediate(callback);
|
||||||
@@ -44,9 +43,9 @@ module.exports = function (Meta) {
|
|||||||
counters[route] = counters[route] || 0;
|
counters[route] = counters[route] || 0;
|
||||||
counters[route] += 1;
|
counters[route] += 1;
|
||||||
setImmediate(callback);
|
setImmediate(callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.errors.get = function (escape, callback) {
|
Errors.get = function (escape, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
db.getSortedSetRevRangeWithScores('errors:404', 0, 199, next);
|
db.getSortedSetRevRangeWithScores('errors:404', 0, 199, next);
|
||||||
@@ -60,9 +59,8 @@ module.exports = function (Meta) {
|
|||||||
next(null, data);
|
next(null, data);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.errors.clear = function (callback) {
|
Errors.clear = function (callback) {
|
||||||
db.delete('errors:404', callback);
|
db.delete('errors:404', callback);
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,10 +10,9 @@ var file = require('../file');
|
|||||||
var plugins = require('../plugins');
|
var plugins = require('../plugins');
|
||||||
var minifier = require('./minifier');
|
var minifier = require('./minifier');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var JS = module.exports;
|
||||||
Meta.js = {};
|
|
||||||
|
|
||||||
Meta.js.scripts = {
|
JS.scripts = {
|
||||||
base: [
|
base: [
|
||||||
'node_modules/jquery/dist/jquery.js',
|
'node_modules/jquery/dist/jquery.js',
|
||||||
'node_modules/socket.io-client/dist/socket.io.js',
|
'node_modules/socket.io-client/dist/socket.io.js',
|
||||||
@@ -87,11 +86,11 @@ module.exports = function (Meta) {
|
|||||||
'zxcvbn.js': 'node_modules/zxcvbn/dist/zxcvbn.js',
|
'zxcvbn.js': 'node_modules/zxcvbn/dist/zxcvbn.js',
|
||||||
ace: 'node_modules/ace-builds/src-min',
|
ace: 'node_modules/ace-builds/src-min',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
var basePath = path.resolve(__dirname, '../..');
|
var basePath = path.resolve(__dirname, '../..');
|
||||||
|
|
||||||
function minifyModules(modules, fork, callback) {
|
function minifyModules(modules, fork, callback) {
|
||||||
var moduleDirs = modules.reduce(function (prev, mod) {
|
var moduleDirs = modules.reduce(function (prev, mod) {
|
||||||
var dir = path.resolve(path.dirname(mod.destPath));
|
var dir = path.resolve(path.dirname(mod.destPath));
|
||||||
if (prev.indexOf(dir) === -1) {
|
if (prev.indexOf(dir) === -1) {
|
||||||
@@ -126,10 +125,10 @@ module.exports = function (Meta) {
|
|||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function linkModules(callback) {
|
function linkModules(callback) {
|
||||||
var modules = Meta.js.scripts.modules;
|
var modules = JS.scripts.modules;
|
||||||
|
|
||||||
async.eachLimit(Object.keys(modules), 1000, function (relPath, next) {
|
async.eachLimit(Object.keys(modules), 1000, function (relPath, next) {
|
||||||
var srcPath = path.join(__dirname, '../../', modules[relPath]);
|
var srcPath = path.join(__dirname, '../../', modules[relPath]);
|
||||||
@@ -165,14 +164,14 @@ module.exports = function (Meta) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, callback);
|
}, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
var moduleDirs = ['modules', 'admin', 'client'];
|
var moduleDirs = ['modules', 'admin', 'client'];
|
||||||
|
|
||||||
function getModuleList(callback) {
|
function getModuleList(callback) {
|
||||||
var modules = Object.keys(Meta.js.scripts.modules).map(function (relPath) {
|
var modules = Object.keys(JS.scripts.modules).map(function (relPath) {
|
||||||
return {
|
return {
|
||||||
srcPath: path.join(__dirname, '../../', Meta.js.scripts.modules[relPath]),
|
srcPath: path.join(__dirname, '../../', JS.scripts.modules[relPath]),
|
||||||
destPath: path.join(__dirname, '../../build/public/src/modules', relPath),
|
destPath: path.join(__dirname, '../../build/public/src/modules', relPath),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -225,9 +224,9 @@ module.exports = function (Meta) {
|
|||||||
}, function (err) {
|
}, function (err) {
|
||||||
callback(err, moduleFiles);
|
callback(err, moduleFiles);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearModules(callback) {
|
function clearModules(callback) {
|
||||||
var builtPaths = moduleDirs.map(function (p) {
|
var builtPaths = moduleDirs.map(function (p) {
|
||||||
return path.join(__dirname, '../../build/public/src', p);
|
return path.join(__dirname, '../../build/public/src', p);
|
||||||
});
|
});
|
||||||
@@ -236,9 +235,9 @@ module.exports = function (Meta) {
|
|||||||
}, function (err) {
|
}, function (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Meta.js.buildModules = function (fork, callback) {
|
JS.buildModules = function (fork, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
clearModules,
|
clearModules,
|
||||||
function (next) {
|
function (next) {
|
||||||
@@ -252,9 +251,9 @@ module.exports = function (Meta) {
|
|||||||
minifyModules(modules, fork, next);
|
minifyModules(modules, fork, next);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.js.linkStatics = function (callback) {
|
JS.linkStatics = function (callback) {
|
||||||
rimraf(path.join(__dirname, '../../build/public/plugins'), function (err) {
|
rimraf(path.join(__dirname, '../../build/public/plugins'), function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
@@ -272,9 +271,9 @@ module.exports = function (Meta) {
|
|||||||
});
|
});
|
||||||
}, callback);
|
}, callback);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function getBundleScriptList(target, callback) {
|
function getBundleScriptList(target, callback) {
|
||||||
var pluginDirectories = [];
|
var pluginDirectories = [];
|
||||||
|
|
||||||
if (target === 'admin') {
|
if (target === 'admin') {
|
||||||
@@ -303,10 +302,10 @@ module.exports = function (Meta) {
|
|||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var scripts = Meta.js.scripts.base.concat(pluginScripts);
|
var scripts = JS.scripts.base.concat(pluginScripts);
|
||||||
|
|
||||||
if (target === 'client' && global.env !== 'development') {
|
if (target === 'client' && global.env !== 'development') {
|
||||||
scripts = scripts.concat(Meta.js.scripts.rjs);
|
scripts = scripts.concat(JS.scripts.rjs);
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts = scripts.map(function (script) {
|
scripts = scripts.map(function (script) {
|
||||||
@@ -319,9 +318,9 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
callback(null, scripts);
|
callback(null, scripts);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Meta.js.buildBundle = function (target, fork, callback) {
|
JS.buildBundle = function (target, fork, callback) {
|
||||||
var fileNames = {
|
var fileNames = {
|
||||||
client: 'nodebb.min.js',
|
client: 'nodebb.min.js',
|
||||||
admin: 'acp.min.js',
|
admin: 'acp.min.js',
|
||||||
@@ -342,9 +341,8 @@ module.exports = function (Meta) {
|
|||||||
}, minify, fork, next);
|
}, minify, fork, next);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.js.killMinifier = function () {
|
JS.killMinifier = function () {
|
||||||
minifier.killAll();
|
minifier.killAll();
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,18 +3,16 @@
|
|||||||
var path = require('path');
|
var path = require('path');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Logs = module.exports;
|
||||||
Meta.logs = {
|
|
||||||
path: path.join(__dirname, '..', '..', 'logs', 'output.log'),
|
|
||||||
};
|
|
||||||
|
|
||||||
Meta.logs.get = function (callback) {
|
Logs.path = path.join(__dirname, '..', '..', 'logs', 'output.log');
|
||||||
fs.readFile(Meta.logs.path, {
|
|
||||||
|
Logs.get = function (callback) {
|
||||||
|
fs.readFile(Logs.path, {
|
||||||
encoding: 'utf-8',
|
encoding: 'utf-8',
|
||||||
}, callback);
|
}, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.logs.clear = function (callback) {
|
Logs.clear = function (callback) {
|
||||||
fs.truncate(Meta.logs.path, 0, callback);
|
fs.truncate(Logs.path, 0, callback);
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,21 +4,21 @@ var async = require('async');
|
|||||||
|
|
||||||
var db = require('../database');
|
var db = require('../database');
|
||||||
var plugins = require('../plugins');
|
var plugins = require('../plugins');
|
||||||
|
var Meta = require('../meta');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Settings = module.exports;
|
||||||
Meta.settings = {};
|
|
||||||
|
|
||||||
Meta.settings.get = function (hash, callback) {
|
Settings.get = function (hash, callback) {
|
||||||
db.getObject('settings:' + hash, function (err, settings) {
|
db.getObject('settings:' + hash, function (err, settings) {
|
||||||
callback(err, settings || {});
|
callback(err, settings || {});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.settings.getOne = function (hash, field, callback) {
|
Settings.getOne = function (hash, field, callback) {
|
||||||
db.getObjectField('settings:' + hash, field, callback);
|
db.getObjectField('settings:' + hash, field, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.settings.set = function (hash, values, callback) {
|
Settings.set = function (hash, values, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
db.setObject('settings:' + hash, values, next);
|
db.setObject('settings:' + hash, values, next);
|
||||||
@@ -33,13 +33,13 @@ module.exports = function (Meta) {
|
|||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.settings.setOne = function (hash, field, value, callback) {
|
Settings.setOne = function (hash, field, value, callback) {
|
||||||
db.setObjectField('settings:' + hash, field, value, callback);
|
db.setObjectField('settings:' + hash, field, value, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.settings.setOnEmpty = function (hash, values, callback) {
|
Settings.setOnEmpty = function (hash, values, callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
db.getObject('settings:' + hash, next);
|
db.getObject('settings:' + hash, next);
|
||||||
@@ -60,5 +60,4 @@ module.exports = function (Meta) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,14 +9,14 @@ var async = require('async');
|
|||||||
var file = require('../file');
|
var file = require('../file');
|
||||||
var plugins = require('../plugins');
|
var plugins = require('../plugins');
|
||||||
var user = require('../user');
|
var user = require('../user');
|
||||||
|
var Meta = require('../meta');
|
||||||
|
|
||||||
var soundsPath = path.join(__dirname, '../../build/public/sounds');
|
var soundsPath = path.join(__dirname, '../../build/public/sounds');
|
||||||
var uploadsPath = path.join(__dirname, '../../public/uploads/sounds');
|
var uploadsPath = path.join(__dirname, '../../public/uploads/sounds');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Sounds = module.exports;
|
||||||
Meta.sounds = {};
|
|
||||||
|
|
||||||
Meta.sounds.addUploads = function addUploads(callback) {
|
Sounds.addUploads = function addUploads(callback) {
|
||||||
fs.readdir(uploadsPath, function (err, files) {
|
fs.readdir(uploadsPath, function (err, files) {
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err.code !== 'ENOENT') {
|
if (err.code !== 'ENOENT') {
|
||||||
@@ -52,10 +52,10 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.sounds.build = function build(callback) {
|
Sounds.build = function build(callback) {
|
||||||
Meta.sounds.addUploads(function (err) {
|
Sounds.addUploads(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
@@ -93,11 +93,11 @@ module.exports = function (Meta) {
|
|||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var keys = ['chat-incoming', 'chat-outgoing', 'notification'];
|
var keys = ['chat-incoming', 'chat-outgoing', 'notification'];
|
||||||
|
|
||||||
Meta.sounds.getUserSoundMap = function getUserSoundMap(uid, callback) {
|
Sounds.getUserSoundMap = function getUserSoundMap(uid, callback) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
defaultMapping: function (next) {
|
defaultMapping: function (next) {
|
||||||
Meta.configs.getFields(keys, next);
|
Meta.configs.getFields(keys, next);
|
||||||
@@ -129,5 +129,4 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
callback(null, soundMapping);
|
callback(null, soundMapping);
|
||||||
});
|
});
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ var nconf = require('nconf');
|
|||||||
var validator = require('validator');
|
var validator = require('validator');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var winston = require('winston');
|
var winston = require('winston');
|
||||||
|
|
||||||
var plugins = require('../plugins');
|
var plugins = require('../plugins');
|
||||||
|
var Meta = require('../meta');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Tags = module.exports;
|
||||||
Meta.tags = {};
|
|
||||||
|
|
||||||
Meta.tags.parse = function (req, meta, link, callback) {
|
Tags.parse = function (req, meta, link, callback) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
tags: function (next) {
|
tags: function (next) {
|
||||||
var defaultTags = [{
|
var defaultTags = [{
|
||||||
@@ -145,9 +146,9 @@ module.exports = function (Meta) {
|
|||||||
link: link,
|
link: link,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function addIfNotExists(meta, keyName, tagName, value) {
|
function addIfNotExists(meta, keyName, tagName, value) {
|
||||||
var exists = false;
|
var exists = false;
|
||||||
meta.forEach(function (tag) {
|
meta.forEach(function (tag) {
|
||||||
if (tag[keyName] === tagName) {
|
if (tag[keyName] === tagName) {
|
||||||
@@ -162,5 +163,4 @@ module.exports = function (Meta) {
|
|||||||
data[keyName] = tagName;
|
data[keyName] = tagName;
|
||||||
meta.push(data);
|
meta.push(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ var async = require('async');
|
|||||||
|
|
||||||
var file = require('../file');
|
var file = require('../file');
|
||||||
var db = require('../database');
|
var db = require('../database');
|
||||||
|
var Meta = require('../meta');
|
||||||
|
|
||||||
module.exports = function (Meta) {
|
var Themes = module.exports;
|
||||||
Meta.themes = {};
|
|
||||||
|
|
||||||
Meta.themes.get = function (callback) {
|
Themes.get = function (callback) {
|
||||||
var themePath = nconf.get('themes_path');
|
var themePath = nconf.get('themes_path');
|
||||||
if (typeof themePath !== 'string') {
|
if (typeof themePath !== 'string') {
|
||||||
return callback(null, []);
|
return callback(null, []);
|
||||||
@@ -71,9 +71,9 @@ module.exports = function (Meta) {
|
|||||||
next(null, themes);
|
next(null, themes);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.themes.set = function (data, callback) {
|
Themes.set = function (data, callback) {
|
||||||
var themeData = {
|
var themeData = {
|
||||||
'theme:type': data.type,
|
'theme:type': data.type,
|
||||||
'theme:id': data.id,
|
'theme:id': data.id,
|
||||||
@@ -112,7 +112,7 @@ module.exports = function (Meta) {
|
|||||||
Meta.configs.setMultiple(themeData, next);
|
Meta.configs.setMultiple(themeData, next);
|
||||||
|
|
||||||
// Re-set the themes path (for when NodeBB is reloaded)
|
// Re-set the themes path (for when NodeBB is reloaded)
|
||||||
Meta.themes.setPath(config);
|
Themes.setPath(config);
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
|
|
||||||
@@ -126,13 +126,13 @@ module.exports = function (Meta) {
|
|||||||
}, callback);
|
}, callback);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.themes.setupPaths = function (callback) {
|
Themes.setupPaths = function (callback) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function (next) {
|
function (next) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
themesData: Meta.themes.get,
|
themesData: Themes.get,
|
||||||
currentThemeId: function (next) {
|
currentThemeId: function (next) {
|
||||||
db.getObjectField('config', 'theme:id', next);
|
db.getObjectField('config', 'theme:id', next);
|
||||||
},
|
},
|
||||||
@@ -153,13 +153,13 @@ module.exports = function (Meta) {
|
|||||||
return callback(new Error('[[error:theme-not-found]]'));
|
return callback(new Error('[[error:theme-not-found]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
Meta.themes.setPath(themeObj);
|
Themes.setPath(themeObj);
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
Meta.themes.setPath = function (themeObj) {
|
Themes.setPath = function (themeObj) {
|
||||||
// Theme's templates path
|
// Theme's templates path
|
||||||
var themePath = nconf.get('base_templates_path');
|
var themePath = nconf.get('base_templates_path');
|
||||||
var fallback = path.join(nconf.get('themes_path'), themeObj.id, 'templates');
|
var fallback = path.join(nconf.get('themes_path'), themeObj.id, 'templates');
|
||||||
@@ -172,5 +172,4 @@ module.exports = function (Meta) {
|
|||||||
|
|
||||||
nconf.set('theme_templates_path', themePath);
|
nconf.set('theme_templates_path', themePath);
|
||||||
nconf.set('theme_config', path.join(nconf.get('themes_path'), themeObj.id, 'theme.json'));
|
nconf.set('theme_config', path.join(nconf.get('themes_path'), themeObj.id, 'theme.json'));
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user