new translation strings for pages, proper unicode handling in parseFragment

v1.18.x
Julian Lam 11 years ago
parent e69f5fff3b
commit fac55160fa

@ -3,5 +3,10 @@
"unread": "Unread Topics",
"recent": "Recent Topics",
"users": "Registered Users",
"notifications": "Notifications"
"notifications": "Notifications",
"user.edit": "Editing \"%1\"",
"user.following": "People %1 Follows",
"user.followers": "People who Follow %1",
"user.favourites": "%1's Favourite Posts",
"user.settings": "User Settings"
}

@ -6,7 +6,8 @@ var fs = require('fs'),
utils = require('./../public/src/utils'),
db = require('./database'),
plugins = require('./plugins');
plugins = require('./plugins'),
User = require('./user');
(function (Meta) {
@ -161,10 +162,15 @@ var fs = require('fs'),
};
Meta.title = {
tests: {
isCategory: /^category\/\d+\/?/,
isTopic: /^topic\/\d+\/?/,
isUserPage: /^user\/[^\/]+(\/[\w]+)?/
},
build: function (urlFragment, callback) {
var user = require('./user');
Meta.title.parseFragment(urlFragment, function(err, title) {
Meta.title.parseFragment(decodeURIComponent(urlFragment), function(err, title) {
var title;
if (err) {
@ -186,18 +192,32 @@ var fs = require('fs'),
translator.translate('[[pages:' + urlFragment + ']]', function(translated) {
callback(null, translated);
});
} else if (/^category\/\d+\/?/.test(urlFragment)) {
} else if (this.tests.isCategory.test(urlFragment)) {
var cid = urlFragment.match(/category\/(\d+)/)[1];
require('./categories').getCategoryField(cid, 'name', function (err, name) {
callback(null, name);
});
} else if (/^topic\/\d+\/?/.test(urlFragment)) {
} else if (this.tests.isTopic.test(urlFragment)) {
var tid = urlFragment.match(/topic\/(\d+)/)[1];
require('./topics').getTopicField(tid, 'title', function (err, title) {
callback(null, title);
});
} else if (this.tests.isUserPage.test(urlFragment)) {
var matches = urlFragment.match(/user\/([^\/]+)\/?([\w]+)?/),
userslug = matches[1],
subpage = matches[2];
User.getUsernameByUserslug(userslug, function(err, username) {
if (subpage) {
translator.translate('[[pages:user.' + subpage + ', ' + username + ']]', function(translated) {
callback(null, translated);
})
} else {
callback(null, username);
}
});
} else {
callback(null);
}

@ -733,6 +733,17 @@ var bcrypt = require('bcryptjs'),
});
};
User.getUsernameByUserslug = function(slug, callback) {
async.waterfall([
function(next) {
User.getUidByUserslug(slug, next);
},
function(uid, next) {
User.getUserField(uid, 'username', next);
}
], callback);
};
User.getUidByEmail = function(email, callback) {
db.getObjectField('email:uid', email, function(err, data) {
if (err) {

Loading…
Cancel
Save