From c177de288a16dbe6e88acdb91a6488a191df41cc Mon Sep 17 00:00:00 2001 From: Egil Moeller Date: Sun, 28 Mar 2010 03:26:16 +0200 Subject: Added RSS support for the tag browser --- .../twitterStyleTags/controllers/tagBrowser.js | 22 +++++-- .../twitterStyleTags/templates/tagBrowser.ejs | 1 + .../plugins/twitterStyleTags/templates/tagRss.ejs | 69 ++++++++++++++++++++++ 3 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 etherpad/src/plugins/twitterStyleTags/templates/tagRss.ejs diff --git a/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js b/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js index 46175c8..461f30a 100644 --- a/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js +++ b/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js @@ -199,6 +199,7 @@ function onRequest() { var sql = '' + 'select ' + ' m.id as ID, ' + + ' DATE_FORMAT(m.lastWriteTime, \'%a, %d %b %Y %H:%i:%s GMT\') as lastWriteTime, ' + ' c.TAGS ' + 'from ' + querySql.sql + ' as q ' + @@ -207,7 +208,7 @@ function onRequest() { ' join PAD_TAG_CACHE as c on ' + ' c.PAD_ID = q.ID ' + 'order by ' + - ' lastWriteTime desc ' + + ' m.lastWriteTime desc ' + 'limit 10'; matchingPads = sqlobj.executeRaw(sql, querySql.params); @@ -232,8 +233,7 @@ function onRequest() { var isProUser = (isPro && ! padusers.isGuest(userId)); - renderHtml("tagBrowser.ejs", - { + var info = { config: appjet.config, tagsToQuery: tagsToQuery, padIdToReadonly: server_utils.padIdToReadonly, @@ -245,6 +245,20 @@ function onRequest() { isPro: isPro, isProAccountHolder: isProUser, account: getSessionProAccount(), // may be falsy - }, 'twitterStyleTags'); + }; + + var format = "html"; + if (request.params.format != undefined) + format = request.params.format; + + if (format == "html") + renderHtml("tagBrowser.ejs", info, 'twitterStyleTags'); + else if (format == "rss") { + response.setContentType("application/xml; charset=utf-8"); + response.write(renderTemplateAsString("tagRss.ejs", info, 'twitterStyleTags')); + if (request.acceptsGzip) { + response.setGzip(true); + } + } return true; } diff --git a/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs b/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs index 61c8e93..1f1c0e3 100644 --- a/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs +++ b/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs @@ -40,6 +40,7 @@ limitations under the License. */ %> helpers.includeJs("pad2.js"); helpers.suppressGA(); helpers.setRobotsPolicy({index: false, follow: false}); + helpers.addToHead('\n\n'); function inArray(item, arr) { for (var i = 0; i < arr.length; i++) diff --git a/etherpad/src/plugins/twitterStyleTags/templates/tagRss.ejs b/etherpad/src/plugins/twitterStyleTags/templates/tagRss.ejs new file mode 100644 index 0000000..2d06781 --- /dev/null +++ b/etherpad/src/plugins/twitterStyleTags/templates/tagRss.ejs @@ -0,0 +1,69 @@ + +<% + function inArray(item, arr) { + for (var i = 0; i < arr.length; i++) + if (arr[i] == item) + return true; + return false; + } +%> + + + + <% if (tags.length == 0 && antiTags.length == 0) { %> + Latest changed pads + <% } else { %> + <% for (i = 0; i < tags.length; i++) { %> + #<%= tags[i] %> + <% } %> + <% for (i = 0; i < antiTags.length; i++) { %> + !#<%= antiTags[i] %> + <% } %> + <% } %> + + http://liftoff.msfc.nasa.gov/ + + Etherpad pads / changes for the query: + <% if (tags.length == 0 && antiTags.length == 0) { %> + Latest changed pads + <% } else { %> + <% for (i = 0; i < tags.length; i++) { %> + #<%= tags[i] %> + <% } %> + <% for (i = 0; i < antiTags.length; i++) { %> + !#<%= antiTags[i] %> + <% } %> + <% } %> + + en-us + Tue, 10 Jun 2003 04:00:00 GMT + Tue, 10 Jun 2003 09:41:01 GMT + http://blogs.law.harvard.edu/tech/rss + Etherpad + editor@example.com + webmaster@example.com + + <% for (i = 0; i < matchingPads.length; i++) { %> + <% + var matchingPadId = matchingPads[i].ID; + var matchingPadUrl = matchingPadId; + if (!inArray('writable', matchingPads[i].TAGS)) { + matchingPadId = padIdToReadonly(matchingPads[i].ID); + matchingPadUrl = 'ep/pad/view/' + matchingPadId + '/latest'; + } + %> + + <%= matchingPadId %> + http://<%= request.host %>/<%= matchingPadUrl %> + + <% for (j = 0; j < matchingPads[i].TAGS.length; j++) { %> + #<%= matchingPads[i].TAGS[j] %> + <% } %> + + <%= matchingPads[i].lastWriteTime %> + http://<%= request.host %>/<%= matchingPadUrl %> + + <% } %> + + + \ No newline at end of file -- cgit v1.2.3-1-g7c22