updated category: tracking active participants + removed placeholder; recent author picture now pulled dynamically; graph/users/picture implemented

v1.18.x
psychobunny 12 years ago
parent 58aa0ee647
commit 25e218442a

@ -15,7 +15,7 @@
<div class="span12 topic-row img-polaroid">
<div class="latest-post visible-desktop">
<div class="pull-right">
<img src="{topics.recent_picture}?s=50" />
<img style="width: 48px; height: 48px; /*temporary*/" src="/graph/users/{topics.recent_author}/picture" />
<p><strong>{topics.recent_author}</strong>: {topics.recent_post}</p>
</div>
</div>
@ -37,31 +37,17 @@
Recent Replies
</div>
<div class="block-content">
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
</div>
</div>
<div class="sidebar-block img-polaroid">
<div class="block-header">
Top posters
Active Participants
</div>
<div class="block-content">
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/fd37ce111f863c6665045c2d72d199bf?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/07c9c7170c3ac676c2561e3eeaee063c?s=48" class="img-polaroid" />
<img src="http://www.gravatar.com/avatar/91050ce0072697b53380c6a03a1bc12a?s=48" class="img-polaroid" />
<!-- BEGIN active_users -->
<a href="/users/{active_users.username}"><img style="width: 48px; height: 48px; /*temporary*/" src="/graph/users/{active_users.username}/picture" class="img-polaroid" /></a>
<!-- END active_users -->
</div>
</div>
</div>

@ -75,13 +75,7 @@ var RDB = require('./redis.js'),
'slug' : slug[i],
'description' : description[i],
'blockclass' : blockclass[i],
'icon' : icon[i],
/*'topics' : [0,1], later
'latest_post' : {
'uid' : 1,
'pid' : 1,
timestamp and shit
}*/
'icon' : icon[i]
});
}

@ -224,10 +224,23 @@ marked.setOptions({
RDB.incr('tid:' + tid + ':postcount');
user.getUserFields(uid, ['username','picture'], function(data){
user.getUserFields(uid, ['username'], function(data){
RDB.set('tid:' + tid + ':recent:post', content);
RDB.set('tid:' + tid + ':recent:author', data.username);
RDB.set('tid:' + tid + ':recent:picture', data.picture);
//add active users to this category
RDB.get('tid:' + tid + ':cid', function(err, cid) {
RDB.handle(err);
// this is a bit of a naive implementation, defn something to look at post-MVP
RDB.scard('cid:' + cid + ':active_users', function(amount) {
if (amount > 10) {
RDB.spop('cid:' + cid + ':active_users');
}
RDB.sadd('cid:' + cid + ':active_users', data.username);
});
});
});

@ -29,8 +29,7 @@ var RDB = require('./redis.js'),
deleted = [],
pinned = [],
recent_post = [],
recent_author = [],
recent_picture = [];
recent_author = [];
for (var i=0, ii=tids.length; i<ii; i++) {
title.push('tid:' + tids[i] + ':title');
@ -43,11 +42,11 @@ var RDB = require('./redis.js'),
pinned.push('tid:' + tids[i] + ':pinned');
recent_post.push('tid:' + tids[i] + ':recent:post');
recent_author.push('tid:' + tids[i] + ':recent:author');
recent_picture.push('tid:' + tids[i] + ':recent:picture');
}
var multi = RDB.multi()
.get('cid:' + category_id + ':name');
.get('cid:' + category_id + ':name')
.smembers('cid:' + category_id + ':active_users');
if (tids.length > 0) {
multi
@ -61,26 +60,25 @@ var RDB = require('./redis.js'),
.mget(pinned)
.mget(recent_post)
.mget(recent_author)
.mget(recent_picture)
}
multi.exec(function(err, replies) {
category_name = replies[0];
active_usernames = replies[1];
var topics = [];
if (tids.length > 0) {
title = replies[1];
uid = replies[2];
timestamp = replies[3];
slug = replies[4];
postcount = replies[5];
locked = replies[6];
deleted = replies[7];
pinned = replies[8];
recent_post = replies[9];
recent_author = replies[10];
recent_picture = replies[11];
title = replies[2];
uid = replies[3];
timestamp = replies[4];
slug = replies[5];
postcount = replies[6];
locked = replies[7];
deleted = replies[8];
pinned = replies[9];
recent_post = replies[10];
recent_author = replies[11];
var usernames,
has_read;
@ -104,8 +102,7 @@ var RDB = require('./redis.js'),
'pin-icon': pinned[i] === '1' ? 'icon-pushpin' : 'none',
'badgeclass' : (has_read[i] && current_user !=0) ? '' : 'badge-important',
'recent_post' : recent_post[i],
'recent_author' : recent_author[i],
'recent_picture' : recent_picture[i]
'recent_author' : recent_author[i]
});
}
@ -118,11 +115,17 @@ var RDB = require('./redis.js'),
}
});
var active_users = {};
for (var username in active_usernames) {
active_users['username'] = active_usernames[username];
}
callback({
'category_name' : category_id ? category_name : 'Recent',
'show_topic_button' : category_id ? 'show' : 'hidden',
'category_id': category_id || 0,
'topics': topics
'topics': topics,
'active_users': active_users
});
}

@ -211,6 +211,21 @@ var express = require('express'),
res.send(JSON.stringify(post));
});
});
//START TODO: MOVE TO GRAPH.JS
app.get('/graph/users/:username/picture', function(req, res) {
user.get_uid_by_username(req.params.username, function(uid) {
user.getUserField(uid, 'picture', function(picture) {
res.redirect(picture);
});
});
});
//END TODO: MOVE TO GRAPH.JS
}(WebServer));
server.listen(config.port);

Loading…
Cancel
Save