changed friends to following/followers, updated routes and the user.js functions

v1.18.x
Baris Soner Usakli 12 years ago
parent 417034b60a
commit 44d07ea543

@ -1,7 +1,7 @@
(function() {
var yourid = templates.get('yourid'),
theirid = templates.get('theirid'),
isFriend = templates.get('isFriend');
isFollowing = templates.get('isFollowing');
$(document).ready(function() {
@ -12,25 +12,24 @@
postcount.html(app.addCommas(postcount.html()));
var editLink = $('#editLink');
var addFriendBtn = $('#add-friend-btn');
var followBtn = $('#follow-btn');
if( yourid !== theirid) {
editLink.hide();
if(isFriend)
addFriendBtn.hide();
if(isFollowing)
followBtn.hide();
else
addFriendBtn.show();
followBtn.show();
}
else {
addFriendBtn.hide();
followBtn.hide();
}
addFriendBtn.on('click', function() {
$.post('/users/addfriend', {uid: theirid},
followBtn.on('click', function() {
$.post('/users/follow', {uid: theirid},
function(data) {
addFriendBtn.remove();
$('#user-action-alert').html('Friend Added!').show();
followBtn.remove();
$('#user-action-alert').html('You are now following'+ $('.account-username').text() +'!').show();
}
);
return false;

@ -0,0 +1,29 @@
(function() {
var yourid = templates.get('yourid'),
theirid = templates.get('theirid'),
followersCount = templates.get('followersCount');
$(document).ready(function() {
if(parseInt(followersCount, 10) === 0) {
$('#no-followers-notice').show();
}
var editLink = $('#editLink');
if(yourid !== theirid) {
editLink.hide();
}
$('.reputation').each(function(index, element) {
$(element).html(app.addCommas($(element).html()));
});
$('.postcount').each(function(index, element) {
$(element).html(app.addCommas($(element).html()));
});
});
}());

@ -0,0 +1,44 @@
(function() {
var yourid = templates.get('yourid'),
theirid = templates.get('theirid'),
followingCount = templates.get('followingCount');
$(document).ready(function() {
if(parseInt(followingCount, 10) === 0) {
$('#no-following-notice').show();
}
var editLink = $('#editLink');
if(yourid !== theirid) {
editLink.hide();
$('.unfollow-btn').hide();
}
else {
$('.unfollow-btn').on('click',function(){
var removeBtn = $(this);
var followingUid = $(this).attr('followingUid');
$.post('/users/unfollow', {uid: followingUid},
function(data) {
removeBtn.parent().remove();
}
);
return false;
});
}
$('.reputation').each(function(index, element) {
$(element).html(app.addCommas($(element).html()));
});
$('.postcount').each(function(index, element) {
$(element).html(app.addCommas($(element).html()));
});
});
}());

@ -8,7 +8,8 @@
<a href="/users/{username}">{username}</a>
</span>
<div class="account-sub-links inline-block pull-right">
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
</div>
</div>
@ -65,7 +66,7 @@
</div>
</div>
<div id="user-actions" class="container">
<a id="add-friend-btn" href="#" class="btn">Follow</a>
<a id="follow-btn" href="#" class="btn">Follow</a>
</div>
<br/>
<div id="user-action-alert" class="alert alert-success hide"></div>

@ -66,7 +66,8 @@
<a href="/users/{username}/edit">edit</a>
</span>
<div class="account-sub-links inline-block pull-right">
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
</div>
</div>

@ -16,7 +16,8 @@
"install/social/?": "install/social",
"install/privileges/?": "install/privileges",
"users[^]*edit": "accountedit",
"users[^]*friends": "friends",
"users[^]*following": "following",
"users[^]*followers": "followers",
"users/[^]*": "account",
"latest": "category",
"popular": "category",

@ -0,0 +1,47 @@
<div class="well">
<div class="account-username-box">
<span class="account-username">
<a href="/users/{username}">{username}</a> >
<a href="/users/{username}/followers">followers</a>
</span>
<div class="account-sub-links inline-block pull-right">
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
</div>
</div>
<div>
<!-- BEGIN followers -->
<div class="users-box well">
<a href="/users/{followers.username}">
<img src="{followers.picture}" class="user-8080-picture"/>
</a>
<br/>
<a href="/users/{followers.username}">{followers.username}</a>
<br/>
<div title="reputation">
<span class='reputation'>{followers.reputation}</span>
<i class='icon-star'></i>
</div>
<div title="post count">
<span class='postcount'>{followers.postcount}</span>
<i class='icon-pencil'></i>
</div>
</div>
<!-- END followers -->
</div>
<div id="no-followers-notice" class="alert alert-warning hide">This user doesn't have any followers :(</div>
</div>
<input type="hidden" template-variable="yourid" value="{yourid}" />
<input type="hidden" template-variable="theirid" value="{theirid}" />
<input type="hidden" template-variable="followersCount" value="{followersCount}" />
<script type="text/javascript" src="/src/forum/followers.js"></script>

@ -0,0 +1,48 @@
<div class="well">
<div class="account-username-box">
<span class="account-username">
<a href="/users/{username}">{username}</a> >
<a href="/users/{username}/following">following</a>
</span>
<div class="account-sub-links inline-block pull-right">
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
</div>
</div>
<div>
<!-- BEGIN following -->
<div class="users-box well">
<a href="/users/{following.username}">
<img src="{following.picture}" class="user-8080-picture"/>
</a>
<br/>
<a href="/users/{following.username}">{following.username}</a>
<br/>
<div title="reputation">
<span class='reputation'>{following.reputation}</span>
<i class='icon-star'></i>
</div>
<div title="post count">
<span class='postcount'>{following.postcount}</span>
<i class='icon-pencil'></i>
</div>
<a id="unfollow-btn" href="#" class="btn unfollow-btn" followingUid="{following.uid}">Unfollow</a>
</div>
<!-- END following -->
</div>
<div id="no-following-notice" class="alert alert-warning hide">This user isn't following anyone :(</div>
</div>
<input type="hidden" template-variable="yourid" value="{yourid}" />
<input type="hidden" template-variable="theirid" value="{theirid}" />
<input type="hidden" template-variable="followingCount" value="{followingCount}" />
<script type="text/javascript" src="/src/forum/following.js"></script>

@ -1,47 +0,0 @@
<div class="well">
<div class="account-username-box">
<span class="account-username">
<a href="/users/{username}">{username}</a> >
<a href="/users/{username}/friends">friends</a>
</span>
<div class="account-sub-links inline-block pull-right">
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
</div>
</div>
<div>
<!-- BEGIN friends -->
<div class="users-box well">
<a href="/users/{friends.username}">
<img src="{friends.picture}" class="user-8080-picture"/>
</a>
<br/>
<a href="/users/{friends.username}">{friends.username}</a>
<br/>
<div title="reputation">
<span class='reputation'>{friends.reputation}</span>
<i class='icon-star'></i>
</div>
<div title="post count">
<span class='postcount'>{friends.postcount}</span>
<i class='icon-pencil'></i>
</div>
<a id="remove-friend-btn" href="#" class="btn remove-friend-btn" friendid="{friends.uid}">Unfollow</a>
</div>
<!-- END friends -->
</div>
<div id="no-friend-notice" class="alert alert-warning hide">This user doesn't have any friends :(</div>
</div>
<input type="hidden" template-variable="yourid" value="{yourid}" />
<input type="hidden" template-variable="theirid" value="{theirid}" />
<input type="hidden" template-variable="friendCount" value="{friendCount}" />
<script type="text/javascript" src="/src/forum/friends.js"></script>

@ -202,36 +202,44 @@ var user = require('./../user.js'),
res.send({});
});
app.post('/users/addfriend', function(req, res){
app.post('/users/follow', function(req, res){
if(!req.user)
return res.redirect('/403');
if(req.user.uid == req.body.uid)
return res.redirect('/');
user.addFriend(req.user.uid, req.body.uid, function(data) {
user.follow(req.user.uid, req.body.uid, function(data) {
res.send({data:data});
});
});
app.post('/users/removefriend', function(req, res){
app.post('/users/unfollow', function(req, res){
if(!req.user)
return res.redirect('/403');
if(req.user.uid == req.body.uid)
return res.redirect('/');
user.removeFriend(req.user.uid, req.body.uid, function(data) {
user.unfollow(req.user.uid, req.body.uid, function(data) {
res.send({data:data});
});
});
app.get('/users/:username/friends', function(req, res){
app.get('/users/:username/following', function(req, res) {
if(!req.user)
return res.redirect('/403');
res.send(build_header() + app.create_route('users/'+req.params.username+'/friends','friends') + templates['footer']);
res.send(build_header() + app.create_route('users/'+req.params.username+'/following','following') + templates['footer']);
});
app.get('/users/:username/followers', function(req, res) {
if(!req.user)
return res.redirect('/403');
res.send(build_header() + app.create_route('users/'+req.params.username+'/followers','followers') + templates['footer']);
});
function api_method(req, res) {
@ -246,13 +254,24 @@ var user = require('./../user.js'),
});
}
else if(String(req.params.section).toLowerCase() === 'friends') {
else if(String(req.params.section).toLowerCase() === 'following') {
getUserDataByUserName(req.params.username, callerUID, function(userData) {
user.getFollowing(userData.uid, function(followingData){
userData.following = followingData;
userData.followingCount = followingData.length;
res.send(JSON.stringify(userData));
});
});
}
else if(String(req.params.section).toLowerCase() === 'followers') {
getUserDataByUserName(req.params.username, callerUID, function(userData) {
user.getFriends(userData.uid, function(friendsData){
userData.friends = friendsData;
userData.friendCount = friendsData.length;
user.getFollowers(userData.uid, function(followersData){
userData.followers = followersData;
userData.followersCount = followersData.length;
res.send(JSON.stringify(userData));
});
});
@ -264,8 +283,8 @@ var user = require('./../user.js'),
} else {
getUserDataByUserName(req.params.username, callerUID, function(userData) {
user.isFriend(callerUID, userData.theirid, function(isFriend) {
userData.isFriend = isFriend;
user.isFollowing(callerUID, userData.theirid, function(isFollowing) {
userData.isFollowing = isFollowing;
userData.signature = marked(userData.signature || '');

@ -388,54 +388,71 @@ var utils = require('./../public/src/utils.js'),
}
}
User.addFriend = function(uid, friendid, callback) {
RDB.sadd('user:'+uid+':friends', friendid, function(err, data){
if(err === null)
callback(data);
User.follow = function(uid, followid, callback) {
RDB.sadd('user:'+uid+':following', followid, function(err, data) {
if(err === null) {
RDB.sadd('user:'+followid+':followers', uid, function(err, data) {
callback(data);
});
}
else
console.log(err);
})
});
}
User.getFriends = function(uid, callback) {
RDB.smembers('user:'+uid+':friends', function(err, data){
if(err === null){
var friendsData = [];
if(data.length === 0) {
callback(friendsData);
return;
}
for(var i=0, ii=data.length; i<ii; ++i) {
User.getUserData(data[i], function(userData){
friendsData.push(userData);
if(friendsData.length == data.length)
callback(friendsData);
});
}
User.unfollow = function(uid, unfollowid, callback) {
RDB.srem('user:'+uid+':following', unfollowid, function(err, data){
if(err === null) {
RDB.srem('user:'+unfollowid+':followers', uid, function(err, data){
callback(data);
});
}
else
console.log(err);
});
}
User.getFollowing = function(uid, callback) {
RDB.smembers('user:'+uid+':following', function(err, userIds) {
if(err === null)
User.getDataForUsers(userIds, callback);
else
console.log(err);
});
}
User.removeFriend = function(uid, friendid, callback) {
RDB.srem('user:'+uid+':friends', friendid, function(err, data){
User.getFollowers = function(uid, callback) {
RDB.smembers('user:'+uid+':followers', function(err, userIds) {
if(err === null)
callback(data);
User.getDataForUsers(userIds, callback);
else
console.log(err);
console.log(err);
});
}
User.getDataForUsers = function(userIds, callback) {
var returnData = [];
if(userIds.length === 0) {
callback(returnData);
return;
}
for(var i=0, ii=userIds.length; i<ii; ++i) {
User.getUserData(userIds[i], function(userData) {
returnData.push(userData);
if(returnData.length == userIds.length)
callback(returnData);
});
}
}
User.isFriend = function(uid, friendid, callback) {
RDB.sismember('user:'+uid+':friends', friendid, function(err, data){
if(err === null){
User.isFollowing = function(uid, theirid, callback) {
RDB.sismember('user:'+uid+':following', theirid, function(err, data) {
if(err === null)
callback(data === 1);
}
else
console.log(err);
});

Loading…
Cancel
Save