antville/code/Site/rss.hac
2003-02-28 12:25:45 +00:00

56 lines
1.9 KiB
Text

res.contentType = "text/xml";
res.dependsOn(this.lastupdate);
res.digest();
var now = new Date();
var systitle = root.getSysTitle();
var w3fmt = "yyyy-MM-dd'T'HH:mm:ss'+01:00'";
var collection = this.allstories;
if (req.data.show == "all")
collection = this.allcontent;
var size = collection.size();
var max = req.data.max ? parseInt(req.data.max) : 7;
max = Math.min(max, size);
max = Math.min(max, 10);
var param = new Object();
if (max > 0 && this.online) {
var items = "";
var resources = "";
collection.prefetchChildren(0, max);
for (var i=0; i<max; i++) {
var story = collection.get(i);
param.url = story.href();
param.title = clipText(story.getRenderedContentPart("title"), 50);
param.text = clipText(story.getRenderedContentPart("text"), 500);
// shit happens: if a content part contains a markup
// element only clipText() will return nothing...
if (!param.text && !param.title)
param.title = "...";
param.publisher = systitle;
param.creator = story.creator.name;
param.email = "";
if (story.creator.publishemail)
param.email = translateToEntities(story.creator.email);
param.date = story.modifytime.format(w3fmt);
param.subject = story.topic ? story.topic : "";
param.year = story.modifytime.getYear();
items += story.renderSkinAsString("rssItem", param);
resources += story.renderSkinAsString("rssResource", param);
}
param = new Object();
param.url = this.href();
param.title = systitle;
param.creator = this.creator.name
if (this.creator.publishemail)
param.email = translateToEntities(this.creator.email);
param.year = now.getYear();
param.lastupdate = max > 0 ? this.lastUpdate.format(w3fmt): this.createtime.format(w3fmt);
param.items = items;
param.resources = resources;
this.renderSkin("rss", param);
}