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;