'use strict'; var user = require('../user'), translator = require('../../public/src/translator'); module.exports = function(Meta) { Meta.title = {}; var tests = { isCategory: /^category\/\d+\/?/, isTopic: /^topic\/\d+\/?/, isUserPage: /^user\/[^\/]+(\/[\w]+)?/ }; Meta.title.build = function (urlFragment, language, callback) { Meta.title.parseFragment(decodeURIComponent(urlFragment), language, function(err, title) { if (err) { title = Meta.config.browserTitle || 'NodeBB'; } else { title = (title ? title + ' | ' : '') + (Meta.config.browserTitle || 'NodeBB'); } callback(null, title); }); }; Meta.title.parseFragment = function (urlFragment, language, callback) { var translated = ['', 'recent', 'unread', 'users', 'notifications']; if (translated.indexOf(urlFragment) !== -1) { if (!urlFragment.length) { urlFragment = 'home'; } translator.translate('[[pages:' + urlFragment + ']]', language, function(translated) { callback(null, translated); }); } else if (tests.isCategory.test(urlFragment)) { var cid = urlFragment.match(/category\/(\d+)/)[1]; require('../categories').getCategoryField(cid, 'name', callback); } else if (tests.isTopic.test(urlFragment)) { var tid = urlFragment.match(/topic\/(\d+)/)[1]; require('../topics').getTopicField(tid, 'title', callback); } else if (tests.isUserPage.test(urlFragment)) { var matches = urlFragment.match(/user\/([^\/]+)\/?([\w]+)?/), userslug = matches[1], subpage = matches[2]; user.getUsernameByUserslug(userslug, function(err, username) { if (err) { return callback(err); } if (!subpage) { return callback(null, username); } translator.translate('[[pages:user.' + subpage + ', ' + username + ']]', language, function(translated) { callback(null, translated); }); }); } else { callback(null); } }; };