added category rss. added tid to be passed back in getTopicsByTids.

v1.18.x
psychobunny 12 years ago
parent 4207928ac2
commit f1f86b1d4f

@ -166,6 +166,7 @@ var RDB = require('./redis.js'),
for (var i=0, ii=tids.length; i<ii; i++) {
if (!deleted[i] || (deleted[i] && privileges.view_deleted) || uid[i] === current_user) {
retrieved_topics.push({
'tid' : tids[i],
'title' : title[i],
'uid' : uid[i],
'username': usernames[i],

@ -5,10 +5,9 @@
topics = require('./topics.js'),
fs = require('fs');
function saveFeed(feed, xml, tid) {
function saveFeed(location, feed, xml) {
feed.endEntry();
fs.writeFile('feeds/topics/' + tid + '.rss', xml.toString(), function (err) {
fs.writeFile(location, xml.toString(), function (err) {
if (err) throw err;
});
}
@ -37,7 +36,8 @@
}
Feed.updateTopic = function(tid, cid) {
var cache_time_in_seconds = 60,
return;
var cache_time_in_seconds = 60, //todo. don't rewrite xml every time something is posted.
XMLWriter = require('xml-writer');
xml = new XMLWriter(true);
@ -71,12 +71,31 @@
feed = createEntry(feed, urn, title, postsData.content[i], url, userData[postsData.uid[i]].username);
}
saveFeed(feed, xml, tid);
saveFeed('feeds/topics/' + tid + '.rss', feed, xml);
});
};
Feed.updateCategory = function(params) {
Feed.updateCategory = function(cid) {
var XMLWriter = require('xml-writer');
xml = new XMLWriter(true);
categories.getCategoryById(cid, 0, function(categoryData) {
var url = '/category/' + categoryData.category_id + '/' + categoryData.category_name;
var urn = 'urn:' + cid;
var feed = createFeed(xml, urn, categoryData.category_name, url, 'NodeBB'); // not exactly sure if author for a category should be site_title?
var title;
var topics = categoryData.topics;
for (var i = 0, ii = topics.length; i < ii; i++) {
urn = 'urn:' + cid + ':' + topics[i].tid;
title = topics[i].title + '. Posted on ' + (new Date(parseInt(topics[i].timestamp, 10)).toUTCString());
feed = createEntry(feed, urn, title, topics[i].teaser_text, url, topics[i].username);
}
saveFeed('feeds/categories/' + cid + '.rss', feed, xml);
});
};
}(exports));

@ -7,7 +7,8 @@ var RDB = require('./redis.js')
posts = require('./posts.js'),
marked = require('marked'),
threadTools = require('./threadTools.js'),
async = require('async');
async = require('async'),
feed = require('./feed.js');
marked.setOptions({
breaks: true
@ -370,6 +371,8 @@ marked.setOptions({
});
RDB.incr('cid:' + category_id + ':topiccount');
feed.updateCategory(category_id);
});
});
};

@ -118,7 +118,19 @@ var express = require('express'),
});
app.get('/category/:category_id/:slug?', function(req, res) {
var category_url = req.params.category_id + (req.params.slug ? '/' + req.params.slug : '');
var cid = req.params.category_id;
if (cid.match('.rss')) {
fs.readFile('feeds/categories/' + cid, function (err, data) {
if (err) {
res.send("Unable to locate an rss feed at this location.");
return;
}
res.send(data);
});
return;
}
var category_url = cid + (req.params.slug ? '/' + req.params.slug : '');
res.send(build_header() + '<script>templates.ready(function(){ajaxify.go("category/' + category_url + '");});</script>' + templates['footer']);
});

Loading…
Cancel
Save