Feed highlights of week 41

Here is my second video with this weeks highlights from my feed-reader. This time I also included some ‘older’ mentions that had landed in my mailbox. I also have a backlog there 🙂

Apologies again for the inferior sound quality, but I do not want to spend too much time in producing so I am using the mic build in my laptop.

!NO! more struggle with XPages as RSS source and JWPlayer

I am working on embedding JWPlayer in a Domino app and I want to use an XPages to generate an RSS feed for a playlist. Via this way I can apply some ‘intelligence’ and direct which related items the playlist should contain. How the code should look like you can see here.

The problem I am facing at the moment is that JWPlayer has problems using a source that is based other that the xml extension.

Task Queue failed at step 5: Playlist could not be loaded: XML could not be parsed or playlist was empty

Whenever I save the .xsp results as an .xml file and add it to the application as a file resource and call it the player works fine.

In traditional Domino development it is possible to call an agent e.g. rss.xml but XPages does not allow it, it can only contain numbers, letters, underscore and hyphen.

  • Do you see any options using XPages or am i thrown back to writing an agent?

Update: problem solved as you can see in the image below.

Q2: Use an XPage as RSS source

Thanks for all the help I got on this post. However I have some remaining questions how to build an RSS feed based on an XPage.

Here is the code so far:

/******************** START SAMPLE CODE ********************/
var con:javax.faces.context.ExternalContext = facesContext.getExternalContext();
var response:com.ibm.xsp.webapp.XspHttpServletResponse = con.getResponse();
var writer = response.getWriter();

response.setHeader(“Cache-Control”, “no-cache”);
response.setContentType(“text/xml”);

writer.write(“<?xml version=\”1.0\” encoding=\”utf-8\”?>”);

var domDoc:DOMDocument = DOMUtil.createDocument();

var rootNode:DOMElement = domDoc.createElement(“rss”);
rootNode.setAttribute(“version”, “2.0”);

var channelnode:DOMElement = domDoc.createElement(“channel”);
rootNode.appendChild(channelnode);

var itemnode:DOMElement = domDoc.createElement(“title”);
itemnode.setStringValue(database.getTitle());
channelnode.appendChild(itemnode);

var itemnode:DOMElement = domDoc.createElement(“description”);
itemnode.setStringValue(“Broadcast your daily business”);
channelnode.appendChild(itemnode);

var itemnode:DOMElement = domDoc.createElement(“link”);
itemnode.setStringValue(“http://&#8221; + @Name(“[CN]”,session.getServerName()) + “.domain.com/” + @ReplaceSubstring(database.getFilePath(),”\\”,”/”));
channelnode.appendChild(itemnode);

var v:NotesView = database.getView(“$v-rss”);
var doc:NotesDocument = v.getFirstDocument();
var counter=0;

while ( doc != null && counter < 20){

var itemnode:DOMElement = domDoc.createElement(“item”);
channelnode.appendChild(itemnode);

var node:DOMElement = domDoc.createElement(“title”);
node.setStringValue(doc.getItemValueString(“Tx_MovieTitle”));
itemnode.appendChild(node);

var node:DOMElement = domDoc.createElement(“pubDate”);
var dt:NotesDateTime = doc.getCreated();
node.setStringValue(dt.getDateOnly());
itemnode.appendChild(node);

var node:DOMElement = domDoc.createElement(“description”);
var descr = “File: “+ doc.getItemValueString(“Tx_DspMovie”) + “. Description: ” + doc.getItemValueString(“Tx_MovieDescription”);
node.setStringValue(descr);
itemnode.appendChild(node);

var node:DOMElement = domDoc.createElement(“link”);
node.setStringValue(“./0/” + doc.getUniversalID() + “?OpenDocument”);
itemnode.appendChild(node);

var node:DOMElement = domDoc.createElement(“author”);
var person = @Name(“[Abbreviate]”,doc.getItemValueString(“Na_MovieAuthor”));
node.setStringValue(person);
itemnode.appendChild(node);

var node:DOMElement = domDoc.createElement(“guid”);
node.setStringValue(doc.getUniversalID());
itemnode.appendChild(node);

var counter = counter + 1;
var tmpdoc = v.getNextDocument(doc);

doc.recycle();
doc = tmpdoc;
}

domDoc.appendChild(rootNode);

writer.write( domDoc.getXMLString() );
writer.endDocument();
facesContext.responseComplete();
/******************** END SAMPLE CODE ********************/

 

Questions I have:

  • How to get the dates in RFC 822 format? Anyone know a variant for the following LotusScript:

‘Mike Golding’s code
Function RFC822DateFormat(aDate As NotesDateTime) As String
Dim vRFC822 As String
Dim vSign As String
Dim vZoneOffset As Integer
Dim vZoneOffsetH As String
Dim vZoneOffsetM As String
‘CREATE A GMT VERSION OF THE DATE
Dim bDate As New NotesDateTime(aDate.LSGMTTime)
‘FORMAT LOCAL DATE TO UTC
vRFC822 = Format$(aDate.LSLocalTime, “ddd, dd mmm yyyy hh:nn:ss”)
‘WORKOUT THE TIMEZONE OFFSET FROM GMT
vZoneOffset = bDate.TimeDifference(aDate)/3600
‘GET OFFSET POSITIVE OR NEGATIVE
If vZoneOffset > 0 Then vSign = “-” Else vSign = “+”
‘OFFSET HOURS
vZoneOffsetH = Right(“0” + Cstr(Int(Abs(vZoneOffset))),2)
‘OFFSET MINUTES
vZoneOffsetM = Right(“0″ + Cstr(Fraction(vZoneOffset)*60),2)
‘RETURN FULLY FORMATTED DATE
RFC822DateFormat = vRFC822 + ” ” + vSign + vZoneOffsetH + vZoneOffsetM
End Function

  • In case my RSS contains HTML how to include CDATA? The following code is valid but does not give the wanted result:

var node:DOMElement = domDoc.createElement(“description”);
var descr = “!&lt;[CDATA[File: ” + doc.getItemValueString(“Tx_DspMovie”) + “. Description: ” + doc.getItemValueString(“Tx_MovieDescription”) + “]]&gt;”;
node.setStringValue(descr);
itemnode.appendChild(node);

Q: How to use an XPage as XML source (RSS)

I noticed that you can specify an RSS playlist for a movie in the JW Player. The playlist should be similar according like this example file.

In my Bildr application I am still relying on a the combination of a view/$$viewtemplate form/webqueryopen agent combination which seems like a deprecated approach in XPages Domino development.

Since I haven’t used an XPage before as an RSS feed I am wondering what would be the easiest approach/implementation?

  • my XPage should be able to take a document UNID as identifier
  • my XPage should perform a search and return a collection with an X number of documents from the same author (channel)

Any help is appreciated. Thanks!

I will also update the RSS feed in Bildr with the solution…

Below an impression how far I have come:

(probably the app will be uploaded on OpenNTF in case I manage to qualify for the IP scan =))

Question on Domino Blog Template – Show full entry in RSS not working

Hi, I am facing a problem with getting full entries in the RSS feed for the blog template. Basically if I select ‘Yes’ as option the feed becomes empty.

You can read a description of the option here:

http://www.stevecastledine.com/sc.nsf/dx/ibm-lotus-notes-blog-template-rss-options?opendocument

Show Full Entry in RSS? (Content Encoded)
Default is “No”. If set to “Yes” then full content is sent with RSS feed rather than just a short abstract.

If I dig down in the agent (feed.rss) I read it uses the scriptlibrary DXRSS. In Sub StreamRSS2 I read:

If configdoc.config_rssfull(0)<>”No” And contentdoc.excludecontentrss(0)<>”Yes” Then

But an else statement is never further defined.

So I just wonder if the full entry option is ever implemented? The template we are using is the STd7Blog template delivered with 8.02. Are there upgrades available for the template?

Thanks in advance for your help.

Enterprise RSS

Yesterday evening I googled a bit after a Domino based RSS aggregator, in simplier words: a Lotus Notes application that can read multiple RSS feeds and store items as individual documents.

The application has to be installed on a server and the collection has to take place there, cause I am not looking for a ‘personal RSS reader’. I want to avoid that I have to distribute the feeds with every update.

I think it will also be nice to be able to show latest contributions from a central spot (think Planet Lotus or portal page).

So the feeds I will have, now an application who collects the items and can display the collected results in one interface.

Well what did I find?

The View had 2 articles building such an application (only part 1 was of interest):

https://www.collaborationseminar.com/eview/VOLR6.nsf/0/D7D2D0B463D1B2B185257043006FD87A (part 1)

http://nd8seminar.com/eview/volr6.nsf/8fa81fda2203b051852573d0005631ff/28ea51b11f116ac885257091005a8335?OpenDocument (part 2)

But the example application provided just causes a ‘variable not set’ message.

OpenNTF has some offerings:

Dennis:

http://www.openntf.org/projects/pmt.nsf/1af5f59bae92986c85256bae000f898c/6ac6e1a19cee2cdf862576a3000ab9b6!OpenDocument

(Not working, signed the design, I could not even add a new feed due to a javascript error)

Domigator:

http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Domigator

Web based, have not tried it since it is pretty out of date with updates.

Pavone offers an RSS reader but I do not understand the text:

It is FREE for personal use in the Lotus Notes Client environment.

Well please mention what it does cost if I put it on a server?

http://www.pavone.com/pages.nsf/goto/newsreader_en

Ian Irving offers a news aggregator on his site, but I am not able to get it running:

http://www.falsepositives.com/bs/2003/07/lotus-notes-news-reader-v03.html

Steve Castledine had a project (ProjectDX RSS) for a Feed Reader for IBM Lotus Notes Domino. The database does it job. I am not sure what it supports (RSS 2.0, Atom?)…

http://www.projectdx.org/feedreader.nsf/dx/downloadb4.htm

Jakob Majkilde offers freely a full blown application called Notes RSS Reader 1.0 (supports only RSS 1.0?) which does it’s job pretty well:

http://www.majkilde.com/hosting/majkilde/home.nsf/staticpages/rss!OpenDocument

Good job done here!

Ashok Hariharan offers on his website a Domino News Aggregator but also here it fails, so this demands some further investigation:

http://unganisha.org/home/pages/News_Aggregator_Using_Domino/index.html

Finally Manfred Dillmann offers a good working RSS aggregator but you have to buy directly 10 licences and I am not sure if you can run it on a server?

http://www.madicon.de/rss-reader/

Conclusion:

There is some more investigation to be done. Have I missed a product or (free) offering?

Well at least it gave me some ideas about what kind of system I am after (not project vulcan). Probably it will become a ‘steal with pride and improve’ initiative and share it on OpenNTF…

Update:

Others did some investigation already before:

http://martinhumpolec.cz/A55BE2/Blog.nsf/dx/1183832529-rss-readers-for-lotus-notes.html

Transforming RSS feeds into HTML, run an agent or use a JS Library?

A customer asked me if it would be easy to make (snippets of) RSS feeds from Notes blog applications visible on html pages (generated by Domino)?

Sure I said, but a search on Google brought me however no direct copy and paste result.

I played before with XML and transformation but I am just wondering what would most effective and more important easy for an Editor who maintains a page?

Just adding a little JavaScript on your page and providing the url of the feed, possibly the url of a stylesheet and a parameter how many items you want to have displayed maximum sounds the easiest for me. I am already using JQuery, could I take advantage of this?

How to tackle possible domain issues? Using an agent and do the transfarmation here? What about performance?

Right now I am still searching, but if you have some guidance your help is appreciated!

PS. I looked at services as RSS Include, would be great if there would be a generic solution in Notes for such a service.