A report designed for RSS will need RSS-style rows. RSS works nicely with the report system since requests for reports are all done using HTTP GETS. The generated URLs will work for an automated connection. A context script that checks for the presence of those rows can be helpful.
Typical context script for an RSS (2.0) feed |
import com.urbancode.anthill3.domain.reporting.*; ReportOutput output = (ReportOutput) context.get("output"); // validate that the report can be turned into a RSS feed if (!output.hasColumn("title") || !output.hasColumn("date") || !output.hasColumn("link") || !output.hasColumn("guid") || !output.hasColumn("description")) { throw new Exception ("The report output does not support the RSS template"); } context.put("pubDate", new Date()); |
With the context script done, you then pair it with the RSS template (similar to what is below):
RSS template paired with context script |
<?xml version="1.0"?> <rss version="2.0"> <channel> <title>$report.Name</title> <link>$reportUrl</link> <description>$report.Description</description> <language>en-us</language> <pubDate>$pubDate</pubDate> <generator>Anthill3</generator> #foreach($row in $output.RowArray) <item> <title>$row.getColumnValue("title")</title> <link>$row.getColumnValue("link")</link> <description>$row.getColumnValue("description")</description> <pubDate>$row.getColumnValue("date")</pubDate> <guid>$row.getColumnValue("guid")</guid> </item> #end </channel> </rss> |