From 1f99666d9f519125bd11b93fda03ede3d31eefd1 Mon Sep 17 00:00:00 2001
From: psychobunny <psycho.bunny@hotmail.com>
Date: Thu, 23 May 2013 15:11:55 -0400
Subject: [PATCH 1/6] moved favourites code out of posts

---
 src/favourites.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 src/posts.js      |  99 ++-------------------------------------------
 src/websockets.js |   5 ++-
 3 files changed, 106 insertions(+), 98 deletions(-)
 create mode 100644 src/favourites.js

diff --git a/src/favourites.js b/src/favourites.js
new file mode 100644
index 0000000000..3737e1cc66
--- /dev/null
+++ b/src/favourites.js
@@ -0,0 +1,100 @@
+var	RDB = require('./redis.js'),
+	user = require('./user.js');
+
+(function(Favourites) {
+
+	Favourites.favourite = function(pid, room_id, uid, socket) {
+		if (uid === 0) {
+			socket.emit('event:alert', {
+				alert_id: 'post_favourite',
+				title: 'Not Logged In',
+				message: 'Please log in in order to favourite this post',
+				type: 'error',
+				timeout: 5000
+			});
+
+			socket.emit('api:posts.favourite', {
+				status: 'error',
+				pid: pid
+			});
+			return;
+		}
+
+		RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) {
+			RDB.handle(err);
+
+			Favourites.hasFavourited(pid, uid, function(hasFavourited) {
+				if (hasFavourited == false) {
+					RDB.sadd('pid:' + pid + ':users_favourited', uid);
+					RDB.incr('pid:' + pid + ':rep');
+
+					if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', 1);
+
+					if (room_id) {
+						io.sockets.in(room_id).emit('event:rep_up', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid});
+					}
+
+					socket.emit('api:posts.favourite', {
+						status: 'ok'
+					});
+				}
+			});
+		});
+	}
+
+	Favourites.unfavourite = function(pid, room_id, uid, socket) {
+		if (uid === 0) {
+			socket.emit('event:alert', {
+				alert_id: 'post_favourite',
+				title: 'Not Logged In',
+				message: 'Please log in in order to favourite this post',
+				type: 'error',
+				timeout: 5000
+			});
+			return;
+		}
+
+		RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) {
+			RDB.handle(err);
+
+			Favourites.hasFavourited(pid, uid, function(hasFavourited) {
+				if (hasFavourited == true) {
+					
+					RDB.srem('pid:' + pid + ':users_favourited', uid);
+					RDB.decr('pid:' + pid + ':rep');
+					
+					if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', -1);
+
+					if (room_id) {
+						io.sockets.in(room_id).emit('event:rep_down', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid});
+					}
+				}
+			});
+		});
+	}
+
+	Favourites.hasFavourited = function(pid, uid, callback) {
+		RDB.sismember('pid:' + pid + ':users_favourited', uid, function(err, hasFavourited) {
+			RDB.handle(err);
+			
+			callback(hasFavourited);
+		});
+	}
+
+	Favourites.getFavouritesByPostIDs = function(pids, uid, callback) {
+		var loaded = 0;
+		var data = {};
+
+		for (var i=0, ii=pids.length; i<ii; i++) {
+			(function(post_id) {
+				Favourites.hasFavourited(post_id, uid, function(hasFavourited) {
+			
+					data[post_id] = hasFavourited;
+					loaded ++;
+					if (loaded == pids.length) callback(data);
+				});
+			}(pids[i]))
+		}
+	}
+
+}(exports));
\ No newline at end of file
diff --git a/src/posts.js b/src/posts.js
index 23b4524298..59bf61a568 100644
--- a/src/posts.js
+++ b/src/posts.js
@@ -3,6 +3,7 @@ var	RDB = require('./redis.js'),
 	marked = require('marked'),
 	user = require('./user.js'),
 	topics = require('./topics.js'),
+	favourites = require('./favourites.js'),
 	config = require('../config.js'),
 	threadTools = require('./threadTools.js'),
 	async = require('async');
@@ -42,7 +43,7 @@ marked.setOptions({
 
 
 			function getFavouritesData(next) {
-				Posts.getFavouritesByPostIDs(pids, current_user, function(fav_data) {
+				favourites.getFavouritesByPostIDs(pids, current_user, function(fav_data) {
 					next(null, fav_data);
 				}); // to be moved
 			}
@@ -236,104 +237,10 @@ marked.setOptions({
 		});
 	}
 
-
-	Posts.favourite = function(pid, room_id, uid, socket) {
-		if (uid === 0) {
-			socket.emit('event:alert', {
-				alert_id: 'post_favourite',
-				title: 'Not Logged In',
-				message: 'Please log in in order to favourite this post',
-				type: 'error',
-				timeout: 5000
-			});
-
-			socket.emit('api:posts.favourite', {
-				status: 'error',
-				pid: pid
-			});
-			return;
-		}
-
-		RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) {
-			RDB.handle(err);
-
-			Posts.hasFavourited(pid, uid, function(hasFavourited) {
-				if (hasFavourited == false) {
-					RDB.sadd('pid:' + pid + ':users_favourited', uid);
-					RDB.incr('pid:' + pid + ':rep');
-
-					if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', 1);
-
-					if (room_id) {
-						io.sockets.in(room_id).emit('event:rep_up', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid});
-					}
-
-					socket.emit('api:posts.favourite', {
-						status: 'ok'
-					});
-				}
-			});
-		});
-	}
-
-	Posts.unfavourite = function(pid, room_id, uid, socket) {
-		if (uid === 0) {
-			socket.emit('event:alert', {
-				alert_id: 'post_favourite',
-				title: 'Not Logged In',
-				message: 'Please log in in order to favourite this post',
-				type: 'error',
-				timeout: 5000
-			});
-			return;
-		}
-
-		RDB.get('pid:' + pid + ':uid', function(err, uid_of_poster) {
-			RDB.handle(err);
-
-			Posts.hasFavourited(pid, uid, function(hasFavourited) {
-				if (hasFavourited == true) {
-					
-					RDB.srem('pid:' + pid + ':users_favourited', uid);
-					RDB.decr('pid:' + pid + ':rep');
-					
-					if (uid !== uid_of_poster) user.incrementUserFieldBy(uid_of_poster, 'reputation', -1);
-
-					if (room_id) {
-						io.sockets.in(room_id).emit('event:rep_down', {uid: uid !== uid_of_poster ? uid_of_poster : 0, pid: pid});
-					}
-				}
-			});
-		});
-	}
-
-	Posts.hasFavourited = function(pid, uid, callback) {
-		RDB.sismember('pid:' + pid + ':users_favourited', uid, function(err, hasFavourited) {
-			RDB.handle(err);
-			
-			callback(hasFavourited);
-		});
-	}
-
-	Posts.getFavouritesByPostIDs = function(pids, uid, callback) {
-		var loaded = 0;
-		var data = {};
-
-		for (var i=0, ii=pids.length; i<ii; i++) {
-			(function(post_id) {
-				Posts.hasFavourited(post_id, uid, function(hasFavourited) {
-			
-					data[post_id] = hasFavourited;
-					loaded ++;
-					if (loaded == pids.length) callback(data);
-				});
-			}(pids[i]))
-		}
-	}
-
 	Posts.getRawContent = function(pid, socket) {
 		RDB.get('pid:' + pid + ':content', function(err, raw) {
 			socket.emit('api:posts.getRawPost', { post: raw });
 		});
 	}
+
 }(exports));
\ No newline at end of file
diff --git a/src/websockets.js b/src/websockets.js
index 4af2a7f28d..4d65ddaa80 100644
--- a/src/websockets.js
+++ b/src/websockets.js
@@ -5,6 +5,7 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}),
 	config = require('../config.js'),
 	user = require('./user.js'),
 	posts = require('./posts.js'),
+	favourites = require('./favourites.js'),
 	utils = require('../public/src/utils.js'),
 	topics = require('./topics.js'),
 	categories = require('./categories.js'),
@@ -180,11 +181,11 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}),
 		});
 
 		socket.on('api:posts.favourite', function(data) {
-			posts.favourite(data.pid, data.room_id, uid, socket);
+			favourites.favourite(data.pid, data.room_id, uid, socket);
 		});
 
 		socket.on('api:posts.unfavourite', function(data) {
-			posts.unfavourite(data.pid, data.room_id, uid, socket);
+			favourites.unfavourite(data.pid, data.room_id, uid, socket);
 		});
 
 		socket.on('api:user.active.get_record', function() {

From 0f51843213797501a59b3aa1df272f6080afcf1f Mon Sep 17 00:00:00 2001
From: psychobunny <psycho.bunny@hotmail.com>
Date: Thu, 23 May 2013 15:16:06 -0400
Subject: [PATCH 2/6] if there are no topics in a category and you make the
 first topic it doesnt show up until you reload the page

---
 public/templates/category.tpl | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/public/templates/category.tpl b/public/templates/category.tpl
index 0d45345e9c..40ee2654a9 100644
--- a/public/templates/category.tpl
+++ b/public/templates/category.tpl
@@ -107,6 +107,9 @@
 			numTopics = topics.length,
 			x;
 
+		jQuery('.category.row').show();
+		jQuery('#category-no-topics').hide();
+
 		topic.innerHTML = html;
 		if (numTopics > 0) {
 			for(x=0;x<numTopics;x++) {

From a4e10076cc5a529a04d03d0b54579b7199aefef1 Mon Sep 17 00:00:00 2001
From: Baris Usakli <barisusakli@gmail.com>
Date: Thu, 23 May 2013 15:17:18 -0400
Subject: [PATCH 3/6] assorted

---
 src/websockets.js | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/websockets.js b/src/websockets.js
index 4af2a7f28d..fb6480571c 100644
--- a/src/websockets.js
+++ b/src/websockets.js
@@ -69,6 +69,10 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}),
 		socket.on('disconnect', function() {
 			user.go_offline(uid);
       		delete users[hs.sessionID];
+      		var index = userSockets[uid].indexOf(socket);
+      		if(index !== -1) {
+      			userSockets[uid].splice(index, 1);
+      		}
    		});
 
 		socket.on('api:get_all_rooms', function(data) {
@@ -267,13 +271,13 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}),
 				user.getUserField(uid, 'username', function(username) {
 					var finalMessage = username + ' says : ' + msg;
 
-					for(var x=0;x>numSockets;x++) {
+					for(var x=0;x<numSockets;x++) {
 						userSockets[touid][x].emit('chatMessage', {fromuid:uid, username:username, message:finalMessage});
 					}
 
 					notifications.create(finalMessage, 5, null, 'notification_'+new Date().getTime(), function(nid) {
  						notifications.push(nid, [touid], function(success) {
-  							console.log(success);
+  							
  						});
 					});
 				});

From 4a3ffec29f26b4fc7788b483e27114488a12e788 Mon Sep 17 00:00:00 2001
From: psychobunny <psycho.bunny@hotmail.com>
Date: Thu, 23 May 2013 15:23:37 -0400
Subject: [PATCH 4/6] proof that comments can be misleading

---
 src/topics.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/topics.js b/src/topics.js
index b9cc6693d3..2cb0382105 100644
--- a/src/topics.js
+++ b/src/topics.js
@@ -313,7 +313,7 @@ marked.setOptions({
 				if (pid > 0) {
 					RDB.lpush('tid:' + tid + ':posts', pid);
 
-					// Notify any users looking at the category that a new post has arrived
+					// Notify any users looking at the category that a new topic has arrived
 					Topics.get_topic(tid, uid, function(topicData) {
 						io.sockets.in('category_' + category_id).emit('event:new_topic', topicData);
 					});

From 16bf813dcda34f51a53a4ece853fed023817cbb2 Mon Sep 17 00:00:00 2001
From: Baris Usakli <barisusakli@gmail.com>
Date: Thu, 23 May 2013 15:41:28 -0400
Subject: [PATCH 5/6] home page derp

---
 public/css/style.less     | 2 +-
 public/templates/home.tpl | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/public/css/style.less b/public/css/style.less
index df1cfa44c0..cf6552c0d5 100644
--- a/public/css/style.less
+++ b/public/css/style.less
@@ -588,7 +588,7 @@ footer.footer {
 }
 .category-row h4 {
 	font-weight: 700;
-	text-align: center;
+	text-align: left;
 	color: #555;
 	white-space: nowrap;
 	overflow: hidden;
diff --git a/public/templates/home.tpl b/public/templates/home.tpl
index 880b244505..ef2de6c4e8 100644
--- a/public/templates/home.tpl
+++ b/public/templates/home.tpl
@@ -6,7 +6,7 @@
 	<!-- BEGIN categories -->
 	<div class="span3">
 		<a href="category/{categories.slug}">
-			<h4>{categories.name} <span class="badge {categories.badgeclass}">{categories.topic_count}</span></h4>
+			<h4><span class="badge {categories.badgeclass}">{categories.topic_count} </span> {categories.name}</h4>
 			<!-- {categories.description} -->
 			<div class="category-icon {categories.blockclass}">
 				<i class="{categories.icon} icon-4x"></i>

From c02e235005de218c1b96dcea6d46ec2930a9018e Mon Sep 17 00:00:00 2001
From: Baris Usakli <barisusakli@gmail.com>
Date: Thu, 23 May 2013 15:44:00 -0400
Subject: [PATCH 6/6] border radius 0px on home

---
 public/css/style.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/css/style.less b/public/css/style.less
index cf6552c0d5..0cf52a6dfd 100644
--- a/public/css/style.less
+++ b/public/css/style.less
@@ -580,7 +580,7 @@ footer.footer {
 	width: 100%;
 	height: 90px;
 	text-align: center;
-	border-radius: 5px;
+	border-radius: 0px;
 	margin: 0;
 	padding-top:25px;
 	cursor: pointer;