diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index e18881edfe..be38d66057 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -85,9 +85,9 @@ var ajaxify = {}; callback(); } - jQuery('#content, #footer').stop(true, true).fadeIn(200, function () { + app.process_page(); - app.process_page(); + jQuery('#content, #footer').stop(true, true).fadeIn(200, function () { if (window.location.hash) hash = window.location.hash; if (hash) diff --git a/public/templates/category.tpl b/public/templates/category.tpl index 6d23ffc495..6ef28a0ed1 100644 --- a/public/templates/category.tpl +++ b/public/templates/category.tpl @@ -32,30 +32,47 @@ <li class="category-item {topics.deleted-class}" itemprop="itemListElement"> <div class="row"> <div class="col-md-12 topic-row"> - <div class="latest-post visible-lg visible-md"> - <a href="../../topic/{topics.slug}#{topics.teaser_pid}"> - <div class="pull-right"> - <img class="img-rounded" style="width: 48px; height: 48px; /*temporary*/" src="{topics.teaser_userpicture}" /> - <p>{topics.teaser_text}</p> - <p class="meta"> - <strong>{topics.teaser_username}</strong> posted <span class="timeago" title="{topics.teaser_timestamp}"></span> - </p> - </div> - </a> - </div> - <a href="../../topic/{topics.slug}" itemprop="url"> - <div> + <div> + <a href="../../topic/{topics.slug}" itemprop="url"> <h3> <meta itemprop="name" content="{topics.title}"> - <span class="topic-title"><span class="badge {topics.badgeclass}">{topics.postcount}</span>{topics.title}</span> + + <span class="topic-title"> + <strong><i class="{topics.pin-icon}"></i> <i class="{topics.lock-icon}"></i></strong> + {topics.title}</span> </h3> - <small> - <strong><i class="{topics.pin-icon}"></i> <i class="{topics.lock-icon}"></i></strong> - Posted <span class="timeago" title="{topics.relativeTime}"></span> by - <strong>{topics.username}</strong>. - </small> - </div> - </a> + </a> + <small> + <span class="topic-stats"> + <span class="badge {topics.badgeclass}">{topics.postcount}</span> posts + </span> + <span class="topic-stats"> + <span class="badge {topics.badgeclass}">{topics.viewcount}</span> views + </span> + + <span class="pull-right hidden-xs"> + + <a href="/user/{topics.userslug}"> + <img class="img-rounded teaser-pic" src="{topics.picture}" title="{topics.username}"/> + </a> + + <a href="../../topic/{topics.slug}"> + <span> + posted <span class="timeago" title="{topics.relativeTime}"></span> + </span> + </a> + | + <a href="/user/{topics.teaser_userslug}"> + <img class="img-rounded teaser-pic" src="{topics.teaser_userpicture}" title="{topics.teaser_username}"/> + </a> + <a href="../../topic/{topics.slug}#{topics.teaser_pid}"> + <span> + replied <span class="timeago" title="{topics.teaser_timestamp}"></span> + </span> + </a> + </span> + </small> + </div> </div> </div> </li> diff --git a/src/topics.js b/src/topics.js index 57c500b4c9..94551b5350 100644 --- a/src/topics.js +++ b/src/topics.js @@ -36,10 +36,12 @@ var RDB = require('./redis.js'), }); } - Topics.getTopicDataWithUsername = function(tid, callback) { + Topics.getTopicDataWithUser = function(tid, callback) { Topics.getTopicData(tid, function(topic) { - user.getUserField(topic.uid, 'username', function(err, username) { - topic.username = username; + user.getUserFields(topic.uid, ['username', 'userslug', 'picture'] , function(err, userData) { + topic.username = userData.username; + topic.userslug = userData.userslug + topic.picture = userData.picture; callback(topic); }); }); @@ -281,7 +283,7 @@ var RDB = require('./redis.js'), function getTopicInfo(topicData, callback) { function getUserInfo(next) { - user.getUserFields(topicData.uid, ['username'], next); + user.getUserFields(topicData.uid, ['username', 'userslug', 'picture'], next); } function hasReadTopic(next) { @@ -307,6 +309,8 @@ var RDB = require('./redis.js'), async.parallel([getUserInfo, hasReadTopic, getTeaserInfo, getPrivileges], function(err, results) { callback({ username: results[0].username, + userslug: results[0].userslug, + picture: results[0].picture, userbanned: results[0].banned, hasread: results[1], teaserInfo: results[2], @@ -333,9 +337,12 @@ var RDB = require('./redis.js'), topicData['deleted-class'] = topicData.deleted === '1' ? 'deleted' : ''; topicData.username = topicInfo.username; + topicData.userslug = topicInfo.userslug; + topicData.picture = topicInfo.picture; topicData.badgeclass = (topicInfo.hasread && current_user != 0) ? '' : 'badge-important'; topicData.teaser_text = topicInfo.teaserInfo.text || '', topicData.teaser_username = topicInfo.teaserInfo.username || ''; + topicData.teaser_userslug = topicInfo.teaserInfo.userslug || ''; topicData.teaser_userpicture = topicInfo.teaserInfo.picture || require('gravatar').url('', {}, https = nconf.get('https')); topicData.teaser_pid = topicInfo.teaserInfo.pid; @@ -427,7 +434,7 @@ var RDB = require('./redis.js'), Topics.getTopicForCategoryView = function(tid, uid, callback) { function getTopicData(next) { - Topics.getTopicDataWithUsername(tid, function(topic) { + Topics.getTopicDataWithUser(tid, function(topic) { next(null, topic); }); } @@ -461,6 +468,7 @@ var RDB = require('./redis.js'), topicData.badgeclass = hasRead ? '' : 'badge-important'; topicData.teaser_text = teaser.text || ''; topicData.teaser_username = teaser.username || ''; + topicData.teaser_userslug = teaser.userslug || ''; topicData.userslug = teaser.userslug || ''; topicData.teaser_timestamp = teaser.timestamp ? (new Date(parseInt(teaser.timestamp,10)).toISOString()) : ''; topicData.teaser_userpicture = teaser.picture; @@ -501,7 +509,7 @@ var RDB = require('./redis.js'), }); async.each(tids, function(tid, next) { - Topics.getTopicDataWithUsername(tid, function(topicData) { + Topics.getTopicDataWithUser(tid, function(topicData) { topics.push(topicData); next(); });