added new hook 'action:meta.override404' so plugins can override the regular handling of pages that are not found

v1.18.x
Julian Lam 10 years ago
parent 9915e31bc5
commit f14c5f7e1c

@ -6,12 +6,19 @@ var nconf = require('nconf'),
translator = require('../../public/src/translator'),
categories = require('../categories'),
plugins = require('../plugins'),
meta = require('../meta');
var helpers = {};
helpers.notFound = function(req, res, error) {
if (res.locals.isAPI) {
if (plugins.hasListeners('action:meta.override404')) {
plugins.fireHook('action:meta.override404', {
req: req,
res: res,
error: error
});
} else if (res.locals.isAPI) {
res.status(404).json({path: req.path.replace(/^\/api/, ''), error: error});
} else {
res.status(404).render('404', {path: req.path, error: error});

@ -173,6 +173,7 @@ module.exports = function(app, middleware) {
function handle404(app, middleware) {
app.use(function(req, res, next) {
if (!plugins.hasListeners('action:meta.override404')) {
var relativePath = nconf.get('relative_path');
var isLanguage = new RegExp('^' + relativePath + '/language/[\\w]{2,}/.*.json'),
isClientScript = new RegExp('^' + relativePath + '\\/src\\/.+\\.js');
@ -198,6 +199,13 @@ function handle404(app, middleware) {
} else {
res.status(404).type('txt').send('Not found');
}
} else {
plugins.fireHook('action:meta.override404', {
req: req,
res: res,
error: {}
});
}
});
}

Loading…
Cancel
Save