mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-13 09:25:45 +01:00
closes #1318
This commit is contained in:
@@ -49,6 +49,7 @@
|
|||||||
"has_no_follower": "This user doesn't have any followers :(",
|
"has_no_follower": "This user doesn't have any followers :(",
|
||||||
"follows_no_one": "This user isn't following anyone :(",
|
"follows_no_one": "This user isn't following anyone :(",
|
||||||
"has_no_posts": "This user didn't post anything yet.",
|
"has_no_posts": "This user didn't post anything yet.",
|
||||||
|
"has_no_topics": "This user didn't post any topics yet.",
|
||||||
|
|
||||||
"email_hidden": "Email Hidden",
|
"email_hidden": "Email Hidden",
|
||||||
"hidden": "hidden",
|
"hidden": "hidden",
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ define(function() {
|
|||||||
|
|
||||||
AccountHeader.init = function() {
|
AccountHeader.init = function() {
|
||||||
|
|
||||||
|
|
||||||
AccountHeader.createMenu();
|
AccountHeader.createMenu();
|
||||||
|
|
||||||
hideLinks();
|
hideLinks();
|
||||||
@@ -18,6 +17,7 @@ define(function() {
|
|||||||
<li id="settingsLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/settings">[[user:settings]]</a></li>\
|
<li id="settingsLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/settings">[[user:settings]]</a></li>\
|
||||||
<li id="favouritesLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/favourites">[[user:favourites]]</a></li>\
|
<li id="favouritesLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/favourites">[[user:favourites]]</a></li>\
|
||||||
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/posts">[[global:posts]]</a></li>\
|
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/posts">[[global:posts]]</a></li>\
|
||||||
|
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/topics">[[topic:topics]]</a></li>\
|
||||||
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/followers">[[user:followers]]</a></li>\
|
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/followers">[[user:followers]]</a></li>\
|
||||||
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/following">[[user:following]]</a></li>\
|
<li><a href="' + RELATIVE_PATH + '/user/' + userslug + '/following">[[user:following]]</a></li>\
|
||||||
<li id="editLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/edit">[[user:edit]]</a></li>\
|
<li id="editLink"><a href="' + RELATIVE_PATH + '/user/' + userslug + '/edit">[[user:edit]]</a></li>\
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
/* globals define, app, socket, ajaxify, templates, translator */
|
/* globals define, app, socket, ajaxify, templates, translator, utils */
|
||||||
|
|
||||||
define(['forum/accountheader'], function(header) {
|
define(['forum/accountheader'], function(header) {
|
||||||
var AccountPosts = {},
|
var AccountPosts = {},
|
||||||
@@ -29,7 +29,7 @@ define(['forum/accountheader'], function(header) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.posts && data.posts.length) {
|
if (data.posts && data.posts.length) {
|
||||||
onTopicsLoaded(data.posts);
|
onPostsLoaded(data.posts);
|
||||||
$('.user-favourite-posts').attr('data-nextstart', data.nextStart);
|
$('.user-favourite-posts').attr('data-nextstart', data.nextStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,17 +37,16 @@ define(['forum/accountheader'], function(header) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onTopicsLoaded(posts) {
|
function onPostsLoaded(posts) {
|
||||||
ajaxify.loadTemplate('accountposts', function(accountposts) {
|
ajaxify.loadTemplate('accountposts', function(accountposts) {
|
||||||
var html = templates.parse(templates.getBlock(accountposts, 'posts'), {posts: posts});
|
var html = templates.parse(templates.getBlock(accountposts, 'posts'), {posts: posts});
|
||||||
|
|
||||||
translator.translate(html, function(translatedHTML) {
|
translator.translate(html, function(translatedHTML) {
|
||||||
$('#category-no-topics').remove();
|
|
||||||
|
|
||||||
html = $(translatedHTML);
|
html = $(translatedHTML);
|
||||||
html.find('img').addClass('img-responsive');
|
html.find('img').addClass('img-responsive');
|
||||||
$('.user-favourite-posts').append(html);
|
$('.user-favourite-posts').append(html);
|
||||||
$('span.timeago').timeago();
|
html.find('span.timeago').timeago();
|
||||||
app.createUserTooltips();
|
app.createUserTooltips();
|
||||||
utils.makeNumbersHumanReadable(html.find('.human-readable-number'));
|
utils.makeNumbersHumanReadable(html.find('.human-readable-number'));
|
||||||
});
|
});
|
||||||
|
|||||||
55
public/src/forum/accounttopics.js
Normal file
55
public/src/forum/accounttopics.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* globals define, app, socket, ajaxify, templates, translator, utils */
|
||||||
|
|
||||||
|
define(['forum/accountheader'], function(header) {
|
||||||
|
var AccountTopics = {},
|
||||||
|
loadingMore = false;
|
||||||
|
|
||||||
|
AccountTopics.init = function() {
|
||||||
|
header.init();
|
||||||
|
|
||||||
|
app.enableInfiniteLoading(function() {
|
||||||
|
if(!loadingMore) {
|
||||||
|
loadMore();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function loadMore() {
|
||||||
|
loadingMore = true;
|
||||||
|
socket.emit('topics.loadMoreFromSet', {
|
||||||
|
set: 'uid:' + $('.account-username-box').attr('data-uid') + ':topics',
|
||||||
|
after: $('.user-topics').attr('data-nextstart')
|
||||||
|
}, function(err, data) {
|
||||||
|
if(err) {
|
||||||
|
return app.alertError(err.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.topics && data.topics.length) {
|
||||||
|
onTopicsLoaded(data.topics);
|
||||||
|
$('.user-topics').attr('data-nextstart', data.nextStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadingMore = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTopicsLoaded(topics) {
|
||||||
|
ajaxify.loadTemplate('accounttopics', function(accounttopics) {
|
||||||
|
var html = templates.parse(templates.getBlock(accounttopics, 'topics'), {topics: topics});
|
||||||
|
|
||||||
|
translator.translate(html, function(translatedHTML) {
|
||||||
|
$('#category-no-topics').remove();
|
||||||
|
|
||||||
|
html = $(translatedHTML);
|
||||||
|
$('#topics-container').append(html);
|
||||||
|
html.find('span.timeago').timeago();
|
||||||
|
app.createUserTooltips();
|
||||||
|
utils.makeNumbersHumanReadable(html.find('.human-readable-number'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return AccountTopics;
|
||||||
|
});
|
||||||
@@ -10,6 +10,7 @@ var fs = require('fs'),
|
|||||||
|
|
||||||
user = require('./../user'),
|
user = require('./../user'),
|
||||||
posts = require('./../posts'),
|
posts = require('./../posts'),
|
||||||
|
topics = require('./../topics'),
|
||||||
postTools = require('../postTools'),
|
postTools = require('../postTools'),
|
||||||
utils = require('./../../public/src/utils'),
|
utils = require('./../../public/src/utils'),
|
||||||
meta = require('./../meta'),
|
meta = require('./../meta'),
|
||||||
@@ -235,36 +236,68 @@ accountsController.getFavourites = function(req, res, next) {
|
|||||||
accountsController.getPosts = function(req, res, next) {
|
accountsController.getPosts = function(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
user.getUidByUserslug(req.params.userslug, function (err, uid) {
|
getBaseUser(req.params.userslug, function(err, userData) {
|
||||||
if (!uid) {
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userData) {
|
||||||
return userNotFound();
|
return userNotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
user.getUserFields(uid, ['username', 'userslug'], function (err, userData) {
|
posts.getPostsByUid(callerUID, userData.uid, 0, 19, function (err, userPosts) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!userData) {
|
userData.theirid = userData.uid;
|
||||||
return userNotFound();
|
userData.yourid = callerUID;
|
||||||
}
|
userData.posts = userPosts.posts;
|
||||||
|
userData.nextStart = userPosts.nextStart;
|
||||||
|
|
||||||
posts.getPostsByUid(callerUID, uid, 0, 19, function (err, userPosts) {
|
res.render('accountposts', userData);
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
userData.uid = uid;
|
|
||||||
userData.theirid = uid;
|
|
||||||
userData.yourid = callerUID;
|
|
||||||
userData.posts = userPosts.posts;
|
|
||||||
userData.nextStart = userPosts.nextStart;
|
|
||||||
|
|
||||||
res.render('accountposts', userData);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
accountsController.getTopics = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
getBaseUser(req.params.userslug, function(err, userData) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userData) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var set = 'uid:' + userData.uid + ':topics';
|
||||||
|
topics.getTopicsFromSet(callerUID, set, 0, 19, function(err, userTopics) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
userData.theirid = userData.uid;
|
||||||
|
userData.yourid = callerUID;
|
||||||
|
userData.topics = userTopics.topics;
|
||||||
|
userData.nextStart = userTopics.nextStart;
|
||||||
|
|
||||||
|
res.render('accounttopics', userData);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function getBaseUser(userslug, callback) {
|
||||||
|
user.getUidByUserslug(userslug, function (err, uid) {
|
||||||
|
if (err || !uid) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
user.getUserFields(uid, ['uid', 'username', 'userslug'], callback);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
accountsController.accountEdit = function(req, res, next) {
|
accountsController.accountEdit = function(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ function accountRoutes(app, middleware, controllers) {
|
|||||||
app.get('/user/:userslug/posts', middleware.buildHeader, middleware.checkGlobalPrivacySettings, controllers.accounts.getPosts);
|
app.get('/user/:userslug/posts', middleware.buildHeader, middleware.checkGlobalPrivacySettings, controllers.accounts.getPosts);
|
||||||
app.get('/api/user/:userslug/posts', middleware.checkGlobalPrivacySettings, controllers.accounts.getPosts);
|
app.get('/api/user/:userslug/posts', middleware.checkGlobalPrivacySettings, controllers.accounts.getPosts);
|
||||||
|
|
||||||
|
app.get('/user/:userslug/topics', middleware.buildHeader, middleware.checkGlobalPrivacySettings, controllers.accounts.getTopics);
|
||||||
|
app.get('/api/user/:userslug/topics', middleware.checkGlobalPrivacySettings, controllers.accounts.getTopics);
|
||||||
|
|
||||||
app.get('/user/:userslug/edit', middleware.buildHeader, middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.accountEdit);
|
app.get('/user/:userslug/edit', middleware.buildHeader, middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.accountEdit);
|
||||||
app.get('/api/user/:userslug/edit', middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.accountEdit);
|
app.get('/api/user/:userslug/edit', middleware.checkGlobalPrivacySettings, middleware.checkAccountPermissions, controllers.accounts.accountEdit);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user