Quantcast
Channel: NGO Committee on Education | plugins
Viewing all articles
Browse latest Browse all 20

MultiRSSPlugin

$
0
0
config.macros.saveRss = {};
config.macros.saveRss.handler = function(place)
{
	if(!readOnly)
		createTiddlyButton(place,'save rss','save rss',function(e){saveMultiRss();return false;});
}

window.getRssMarkers = function()
{
    var s = [];
    myregexp=/\|(?:.*?)\|(?:.*?)\|(.*?)\|(?:.*?)\|(.*?)\|/g;
    while((m = myregexp.exec(store.getTiddlerText("MultiRssConfig"))) != null)
         s.push("<link rel='alternate' type='application/rss+xml' title='%0' href='%1'>".format([m[1].trim(),m[2].trim()]));
    return s.splice(1,s.length).join("\n");
}

updateMarkupBlock_old_multirss = window.updateMarkupBlock;
window.updateMarkupBlock = function (s,blockName,tiddlerName)
{
    s = updateMarkupBlock_old_multirss.apply(this,arguments);
    if (blockName == "PRE-HEAD")
        s = lewcidRSSAddToMarkupBlock(s);
    return s;
}

window.lewcidRSSAddToMarkupBlock = function (s)
{
    var pos = s.indexOf("<!--PRE-HEAD-END-->");
    return ( s.substring(0,pos).replace("<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'>","") + "\n" + getRssMarkers() + "\n" + s.substring(pos) );
}

TiddlyWiki.prototype.rssgetTiddlers = function(field,includeTag,excludeTag)
{
          var results = [];
          this.forEachTiddler(function(title,tiddler)
          {
          if(excludeTag == undefined || excludeTag == '' || tiddler.tags.find(excludeTag) == null)
                        if(includeTag == undefined || includeTag == '' || tiddler.tags.find(includeTag)!=null)
                                      results.push(tiddler);
          });
          if(field)
                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
          return results;
}

window.generateRss = function (tiddlers,title,subtitle)
{
	var s = [];
	var d = new Date();
	var u = store.getTiddlerText("SiteUrl");
	s.push("<" + "?xml version=\"1.0\"?" + ">");
	s.push("<rss version=\"2.0\">");
	s.push("<channel>");
	s.push("<title" + ">" + ((title && title != '') ? wikifyPlain("SiteTitle").htmlEncode()+ " | "+ title: wikifyPlain("SiteTitle").htmlEncode()) + "</title" + ">");
	if(u)
		s.push("<link>" + u.htmlEncode() + "</link>");
	s.push("<description>" + ((subtitle && subtitle != '')? subtitle : wikifyPlain("SiteSubtitle").htmlEncode()) + "</description>");
	s.push("<language>en-us</language>");
	s.push("<copyright>Copyright " + d.getFullYear() + "" + config.options.txtUserName.htmlEncode() + "</copyright>");
	s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
	s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
	s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
	if (!tiddlers)
        var tiddlers = store.getTiddlers("modified","excludeLists");
	var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
	for (var t=tiddlers.length-1; t>=n; t--)
		s.push(tiddlers[t].saveToRss(u));
	s.push("</channel>");
	s.push("</rss>");
	return s.join("\n");
}


old_multiRss_saveChanges = window.saveChanges;
window.saveChanges = function(onlyIfDirty)
{
    var rssStatus = config.options.chkGenerateAnRssFeed;
    config.options.chkGenerateAnRssFeed = false;
    old_multiRss_saveChanges.apply(this,arguments);
    config.options.chkGenerateAnRssFeed = rssStatus;
    if(config.options.chkGenerateAnRssFeed)
        saveMultiRss();
}

window.saveMultiRss = function()
{
      var rssIndex = store.getTiddlerText("MultiRssConfig").split("\n");
      rssIndex = rssIndex.splice(1,rssIndex.length);
      for (var i=0; i<rssIndex.length; i++)
          {
          var rss = rssIndex[i].split("|");
          var localPath = getLocalPath(document.location.toString());
          var rssPath = getRssPath(localPath)+ (rss[5].trim());
          var rssSave = saveFile(rssPath,convertUnicodeToUTF8(generateRss(store.rssgetTiddlers("modified",rss[1].trim(),rss[2].trim()),rss[3].trim(),rss[4].trim())));
          if(rssSave)
              displayMessage(config.messages.rssSaved,"file://" + rssPath);
          else
              alert(config.messages.rssFailed);
          }
}

window.getRssPath = function(str) {
    var slash = (str.indexOf('/')!=-1)? '/':'\\';
    return str.substring(0,str.lastIndexOf(slash) + 1);
}

config.shadowTiddlers.MultiRssConfig = "| !includeTag | !excludeTag | !title | !description | !filename |\n| rss | |rss only| this feed has rss tiddlers only | rss-feed.xml |\n|  systemConfig| |plugins| tiddlywiki plugins only |plugins.xml|\n| | systemConfig excludeRSS| Main RSS feed | everything but plugins | rss.xml|";

Viewing all articles
Browse latest Browse all 20

Latest Images

Trending Articles





Latest Images