mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 19:15:58 +01:00 
			
		
		
		
	changed friends to following/followers, updated routes and the user.js functions
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
							
								
								
									
										29
									
								
								public/src/forum/followers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								public/src/forum/followers.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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())); | ||||
|         }); | ||||
|          | ||||
|     }); | ||||
|      | ||||
|  | ||||
| }()); | ||||
							
								
								
									
										44
									
								
								public/src/forum/following.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								public/src/forum/following.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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", | ||||
|   | ||||
							
								
								
									
										47
									
								
								public/templates/followers.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								public/templates/followers.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -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> | ||||
							
								
								
									
										48
									
								
								public/templates/following.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								public/templates/following.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -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.getFriends(userData.uid, function(friendsData){ | ||||
| 						userData.friends = friendsData; | ||||
| 						userData.friendCount = friendsData.length; | ||||
| 					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.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 || ''); | ||||
| 						 | ||||
|   | ||||
							
								
								
									
										89
									
								
								src/user.js
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								src/user.js
									
									
									
									
									
								
							| @@ -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); | ||||
| 			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.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.removeFriend = function(uid, friendid, callback) { | ||||
| 		RDB.srem('user:'+uid+':friends', friendid, function(err, data){ | ||||
| 			if(err === null) | ||||
| 				callback(data); | ||||
| 	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.isFriend = function(uid, friendid, callback) { | ||||
| 		RDB.sismember('user:'+uid+':friends', friendid, function(err, data){ | ||||
| 			if(err === null){ | ||||
| 	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.getFollowers = function(uid, callback) { | ||||
| 		RDB.smembers('user:'+uid+':followers', function(err, userIds) { | ||||
| 			if(err === null) | ||||
| 				User.getDataForUsers(userIds, callback); | ||||
| 			else | ||||
| 				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.isFollowing = function(uid, theirid, callback) { | ||||
| 		RDB.sismember('user:'+uid+':following', theirid, function(err, data) { | ||||
| 			if(err === null) | ||||
| 				callback(data === 1); | ||||
| 			} | ||||
| 			else | ||||
| 				console.log(err); | ||||
| 		}); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user