|
From: <ma...@us...> - 2012-01-07 22:32:30
|
Revision: 639
http://openautomation.svn.sourceforge.net/openautomation/?rev=639&view=rev
Author: makki1
Date: 2012-01-07 22:32:24 +0000 (Sat, 07 Jan 2012)
Log Message:
-----------
CV-plugin rss: local feeds without Google-API, better display for logentries without title/link (title=false), update zrssfeed to 1.1.5, still needs syncing on many paremeters, better CSS etc..
Modified Paths:
--------------
CometVisu/trunk/visu/plugins/rss/structure_plugin.js
CometVisu/trunk/visu/plugins/rss/zrssfeed/jquery.zrssfeed.js
Modified: CometVisu/trunk/visu/plugins/rss/structure_plugin.js
===================================================================
--- CometVisu/trunk/visu/plugins/rss/structure_plugin.js 2012-01-07 18:40:43 UTC (rev 638)
+++ CometVisu/trunk/visu/plugins/rss/structure_plugin.js 2012-01-07 22:32:24 UTC (rev 639)
@@ -16,10 +16,12 @@
*/
/**
- * This plugins integrates jFeed to display RSS-Feeds into CometVisu.
+ * This plugins integrates zrssfeed to display RSS-Feeds via Google-API
+ * *and* a parser for local feeds using jQuery 1.5+ into CometVisu.
+ * rssfeedlocal is derived from simplerss and zrssfeed
*/
-$("body").append("<script type=\"text/javascript\" src=\"plugins/rss/zrssfeed/jquery.zrssfeed.min.js\"></script>");
+$("body").append("<script type=\"text/javascript\" src=\"plugins/rss/zrssfeed/jquery.zrssfeed.js\"></script>");
VisuDesign_Custom.prototype.addCreator("rss", {
create: function( page, path ) {
@@ -35,7 +37,7 @@
var ret_val = $('<div class="widget clearfix" />');
ret_val.addClass( 'rss' );
var label = '<div class="label">' + page.textContent + '</div>';
- var actor = $("<div class=\"actor\"><div class=\"rss_inline\" id=\"" + id + "\">loading...</div></div>");
+ var actor = $("<div class=\"actor\"><div class=\"rss_inline\" id=\"" + id + "\"></div></div>");
var rss = $("#" + id, actor);
if ($p.attr("width")) {
@@ -59,6 +61,7 @@
rss.data("showerror", $p.attr("showerror")) || true;
rss.data("ssl", $p.attr("ssl")) || false;
rss.data("linktarget", $p.attr("linktarget")) || "_new";
+ rss.data("link", $p.attr("link")) || true;
refreshRSS(rss, {});
@@ -76,7 +79,8 @@
snippet: {type: "list", required: false, list: {'true': "yes", 'false': "no"}},
showerror: {type: "list", required: false, list: {'true': "yes", 'false': "no"}},
ssl: {type: "list", required: false, list: {'true': "yes", 'false': "no"}},
- linktarget: {type: "list", required: false, list: {"_new": "_new", "_self": "_self"}}
+ linktarget: {type: "list", required: false, list: {"_new": "_new", "_self": "_self"}},
+ link: {type: "list", required: false, list: {'true': "yes", 'false': "no"}}
},
content: {type: "string", required: true}
});
@@ -88,22 +92,37 @@
var label = rss.data("label");
var refresh = rss.data("refresh");
var limit = rss.data("limit");
- //console.log("refresh rss:" + src); //DEBUG
- //eval needed to convert string true/false to bool?
- jQuery(function() {
+ //FIXME: eval really needed?? to convert string true/false to bool?
+ if (src.match(/^http/)) {
+ //use zrssfeed
+ jQuery(function() {
$(rss).rssfeed(src, {
limit: rss.data("limit"),
header: eval(rss.data("header")),
date: eval(rss.data("date")),
+ content: rss.data("content"),
+ snippet: eval(rss.data("snippet")),
+ showerror: eval(rss.data("showerror")),
+ ssl: eval(rss.data("ssl")),
+ linktarget: rss.data("linktarget"),
+ });
+ });
+ } else {
+ jQuery(function() {
+ $(rss).rssfeedlocal({
+ src: src,
+ limit: rss.data("limit"),
+ header: eval(rss.data("header")),
date: eval(rss.data("date")),
content: rss.data("content"),
snippet: eval(rss.data("snippet")),
showerror: eval(rss.data("showerror")),
ssl: eval(rss.data("ssl")),
- linktarget: rss.data("linktarget")
+ linktarget: rss.data("linktarget"),
+ link: eval(rss.data("link"))
});
-
- });
+ });
+ }
if (typeof (refresh) != "undefined" && refresh) {
// reload regularly
window.setTimeout(function(rss, data) {
@@ -113,3 +132,85 @@
return false;
}
+
+(function($){
+ jQuery.fn.extend({
+ rssfeedlocal: function(options) {
+
+ var defaults = {
+ src: '',
+ header: false,
+ html: '{title}{date}{text}',
+ wrapper: 'li',
+ dataType: 'xml',
+ limit: 10,
+ linktarget: 'new',
+ date: true,
+ link: true
+ }
+ var options = jQuery.extend(defaults, options);
+ return this.each(function() {
+ var o = options;
+ var c = jQuery(this);
+
+ if (o.src == '') {
+ console.log('rssfeedlocal: no src URL');
+ return; // avoid the request
+ }
+
+ jQuery.ajax({
+ url: o.src,
+ type: 'GET',
+ dataType: o.dataType,
+ error: function (xhr, status, e) {
+ console.log('C: #%s, Error: %s, Feed: %s', $(c).attr('id'), e, o.src);
+ },
+ success: function(feed){
+
+ if (o.header)
+ jQuery(c).parent().parent().prepend( '<p><div class="rssHeader">' +
+ '<a href="' + jQuery(feed).find('link:first').text()
+ +'" title="'+ jQuery(feed).find('description:first').text()
+ +'" target="' + o.linktarget + '">'
+ + jQuery(feed).find('title:first').text()
+ +'</a>' + '</div></p>');
+
+ jQuery(feed).find('item').each(function(i){
+ var row = 'odd';
+ var itemHtml;
+ if (o.link)
+ itemHtml = o.html.replace(/{title}/, '<a href="'
+ + jQuery(this).find('guid').text()
+ + '" target="' + o.linktarget + '">'
+ + jQuery(this).find('title').text() + '</a><br />');
+ else
+ itemHtml = o.html.replace(/{title}/, '');
+
+ itemHtml = itemHtml.replace(/{text}/, jQuery(this).find('description').text());
+ var entryDate = new Date(jQuery(this).find('pubDate').text());
+ if (o.date && entryDate)
+ itemHtml = itemHtml.replace(/{date}/, entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString() + ' ');
+ else
+ itemHtml = itemHtml.replace(/{date}/, '');
+
+ jQuery(c).append(jQuery('<' + o.wrapper + ' class="rssRow ' + row + '">').append(itemHtml));
+
+ // Alternate row classes
+ if (row == 'odd') {
+ row = 'even';
+ } else {
+ row = 'odd';
+ }
+ if (i == o.limit-1) {
+ return false;
+ }
+
+ });
+ }
+ });
+ });
+ return this;
+ }
+ });
+})(jQuery);
+
Modified: CometVisu/trunk/visu/plugins/rss/zrssfeed/jquery.zrssfeed.js
===================================================================
--- CometVisu/trunk/visu/plugins/rss/zrssfeed/jquery.zrssfeed.js 2012-01-07 18:40:43 UTC (rev 638)
+++ CometVisu/trunk/visu/plugins/rss/zrssfeed/jquery.zrssfeed.js 2012-01-07 22:32:24 UTC (rev 639)
@@ -1,13 +1,16 @@
/**
* Plugin: jquery.zRSSFeed
*
- * Version: 1.1.2
+ * Version: 1.1.5
* (c) Copyright 2010-2011, Zazar Ltd
*
* Description: jQuery plugin for display of RSS feeds via Google Feed API
* (Based on original plugin jGFeed by jQuery HowTo. Filesize function by Cary Dunn.)
*
* History:
+ * 1.1.5 - Target option now applies to all feed links
+ * 1.1.4 - Added option to hide media and now compressed with Google Closure
+ * 1.1.3 - Check for valid published date
* 1.1.2 - Added user callback function due to issue with ajaxStop after jQuery 1.4.2
* 1.1.1 - Correction to null xml entries and support for media with jQuery < 1.5
* 1.1.0 - Added support for media in enclosure tags
@@ -29,6 +32,7 @@
date: true,
content: true,
snippet: true,
+ media: true,
showerror: true,
errormsg: '',
key: null,
@@ -96,8 +100,10 @@
var row = 'odd';
// Get XML data for media (parseXML not used as requires 1.5+)
- var xml = getXMLDocument(data.xmlString);
- var xmlEntries = xml.getElementsByTagName('item');
+ if (options.media) {
+ var xml = getXMLDocument(data.xmlString);
+ var xmlEntries = xml.getElementsByTagName('item');
+ }
// Add header if required
if (options.header)
@@ -114,15 +120,18 @@
// Get individual feed
var entry = feeds.entries[i];
-
+ var pubDate;
+
// Format published date
- var entryDate = new Date(entry.publishedDate);
- var pubDate = entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString();
+ if (entry.publishedDate) {
+ var entryDate = new Date(entry.publishedDate);
+ var pubDate = entryDate.toLocaleDateString() + ' ' + entryDate.toLocaleTimeString() + ' ';
+ }
// Add feed row
html += '<li class="rssRow '+row+'">' +
- '<'+ options.titletag +'><a href="'+ entry.link +'" title="View this feed at '+ feeds.title +'" target="'+ options.linktarget +'">'+ entry.title +'</a></'+ options.titletag +'>'
- if (options.date) html += '<div>'+ pubDate +'</div>'
+ '<'+ options.titletag +'><a href="'+ entry.link +'" title="View this feed at '+ feeds.title +'">'+ entry.title +'</a></'+ options.titletag +'>'
+ if (options.date && pubDate) html += '<div>'+ pubDate +'</div>'
if (options.content) {
// Use feed snippet if available and optioned
@@ -136,7 +145,7 @@
}
// Add any media
- if(xmlEntries.length > 0) {
+ if (options.media && xmlEntries.length > 0) {
var xmlMedia = xmlEntries[i].getElementsByTagName('enclosure');
if (xmlMedia.length > 0) {
html += '<div class="rssMedia"><div>Media files</div><ul>'
@@ -163,6 +172,9 @@
'</div>'
$(e).html(html);
+
+ // Apply target to links
+ $('a',e).attr('target',options.linktarget);
};
function formatFilesize(bytes) {
@@ -185,3 +197,4 @@
}
})(jQuery);
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|