The problem is that when I write the path " /categories" ,a function "ajaxify.go = function (url, callback, quiet)" is called and I obtain the error. My purpose is overwrite the path" /categories" with my code:
This is my code:
{
"hook": "static:app.preload", "method": "preload"
},
This is my library.js:
converter.preload = function(params, callback) {
var app = params.app,
hostMiddleware = params.middleware;
helpers.setupPageRoute(app,'/categories', hostMiddleware,[], controllers.renderCategories);
helpers.setupPageRoute(app,'/api/categories', hostMiddleware,[], controllers.renderCategories);
callback();
};
This is my controllers.js:
Controllers.renderCategories1 = function(req, res, callback) {
res.locals.metaTags = [{
name: "title",
content: validator.escape(String(meta.config.title || 'NodeBB'))
}, {
name: "description",
content: validator.escape(String(meta.config.description || ''))
}, {
property: 'og:title',
content: '[[pages:categories]]'
}, {
property: 'og:type',
content: 'website'
}];
var ogImage = meta.config['og:image'] || meta.config['brand:logo'] || '';
if (ogImage) {
if (!ogImage.startsWith('http')) {
ogImage = nconf.get('url') + ogImage;
}
res.locals.metaTags.push({
property: 'og:image',
content: ogImage
});
}
var categoryData;
async.waterfall([
function(next) {
categories.getCategoriesByPrivilege('cid:0:children', req.uid, 'find', next);
},
function(_categoryData, next) {
categoryData = _categoryData;
var allCategories = [];
categories.flattenCategories(allCategories, categoryData);
categories.getRecentTopicReplies(allCategories, req.uid, next);
}
], function(err) {
if (err) {
return next(err);
}
var data = {
title: '[[pages:categories]]',
categories: categoryData
};
//console.log("TITE "+data.title);
if (req.path.startsWith('/api/categories') || req.path.startsWith('/categories')) {
data.breadcrumbs = helpers.buildBreadcrumbs([{
text: data.title
}]);
}
data.categories.forEach(function(category) {
if (category && Array.isArray(category.posts) && category.posts.length) {
category.teaser = {
url: nconf.get('relative_path') + '/topic/' + category.posts[0].topic.slug + '/' + category.posts[0].index,
timestampISO: category.posts[0].timestampISO,
pid: category.posts[0].pid
};
}
});
res.render('categories', data);
});
};
This is ajaxify.js and the error is at line " app.template=data.template.name"
ajaxify.go = function (url, callback, quiet) {
if (!socket.connected) {
if (ajaxify.reconnectAction) {
$(window).off('action:reconnected', ajaxify.reconnectAction);
}
ajaxify.reconnectAction = function(e) {
ajaxify.go(url, callback, quiet);
$(window).off(e);
};
$(window).on('action:reconnected', ajaxify.reconnectAction);
}
if (ajaxify.handleRedirects(url)) {
return true;
}
app.leaveCurrentRoom();
$(window).off('scroll');
if ($('#content').hasClass('ajaxifying') && apiXHR) {
apiXHR.abort();
}
if (!window.location.pathname.match(/\/(403|404)$/g)) {
app.previousUrl = window.location.href;
}
url = ajaxify.start(url);
// If any listeners alter url and set it to an empty string, abort the ajaxification
if (url === null) {
$(window).trigger('action:ajaxify.end', {url: url, tpl_url: ajaxify.data.template.name, title: ajaxify.data.title});
return false;
}
console.log("UR "+JSON.stringify(url));
previousBodyClass = ajaxify.data.bodyClass;
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
ajaxify.loadData(url, function(err, data) {
if (!err || (err && err.data && (parseInt(err.data.status, 10) !== 302 && parseInt(err.data.status, 10) !== 308))) {
ajaxify.updateHistory(url, quiet);
}
if (err) {
return onAjaxError(err, url, callback, quiet);
}
retry = true;
//console.log(data);
app.template = data.template.name;
console.log("DATA "+JSON.stringify(data));
require(['translator'], function(translator) {
translator.load(config.defaultLang, data.template.name);
renderTemplate(url, data.template.name, data, callback);
});
});
return true;
};
when the path go on the "/categories" and the method ajaxify.go is called (ajaxify.loadData()) , it returns the HTML code of page and not an object and so it shows me this error.
Anyone can help me to resolve this?