mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-03 04:25:55 +01:00
added category rss. added tid to be passed back in getTopicsByTids.
This commit is contained in:
@@ -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],
|
||||
|
||||
31
src/feed.js
31
src/feed.js
@@ -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']);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user