Răsfoiți Sursa

#53 - rss feed fix

Alex Trofimov 12 ani în urmă
părinte
comite
f5ac4e36d6
3 a modificat fișierele cu 71 adăugiri și 102 ștergeri
  1. 1 1
      get_rss_feed.php
  2. 67 60
      inc/js/jquery.dolRSSFeed.js
  3. 3 41
      template/css/rss.css

+ 1 - 1
get_rss_feed.php

@@ -44,6 +44,6 @@ if ($iMemID) {
 }
 
 header('Content-Type: text/xml; charset=utf-8');
-echo bx_file_get_contents($sUrl . (BX_PROFILER && 0 == strncmp(BX_DOL_URL_ROOT, $sUrl, strlen(BX_DOL_URL_ROOT)) ? '&bx_profiler_disable=1' : ''));
+echo bx_file_get_contents($sUrl . (defined('BX_PROFILER') && BX_PROFILER && 0 == strncmp(BX_DOL_URL_ROOT, $sUrl, strlen(BX_DOL_URL_ROOT)) ? '&bx_profiler_disable=1' : ''));
 
 /** @} */

+ 67 - 60
inc/js/jquery.dolRSSFeed.js

@@ -6,74 +6,81 @@
 
 // jQuery plugin - Dolphin RSS Aggregator
 (function($){
-    $.fn.dolRSSFeed = function(sForceUrl) {
-        return this.each( function() {
+	$.fn.dolRSSFeed = function(sForceUrl) {
+		return this.each( function(){
+			
+			var $Cont = $(this);
+			var iRSSID = $Cont.attr( 'rssid' );
+			if( !iRSSID && sForceUrl == undefined )
+				return false;
+			
+			var iMaxNum = parseInt( $Cont.attr( 'rssnum' ) || 0 );
+			var iMemID  = parseInt( $Cont.attr( 'member' ) || 0 );
 
-            var $Cont = $(this);
-            var iRSSID = $Cont.attr( 'rssid' );
-            if( !iRSSID && sForceUrl == undefined )
-                return false;
-
-            var iMaxNum = parseInt( $Cont.attr( 'rssnum' ) || 0 );
-            var iMemID  = parseInt( $Cont.attr( 'member' ) || 0 );
-
-            var sFeedURL = (sForceUrl != undefined) ? sForceUrl : sUrlRoot + 'get_rss_feed.php?ID=' + iRSSID + '&member=' + iMemID;
+			var sFeedURL = (sForceUrl != undefined) ? sForceUrl : sUrlRoot + 'get_rss_feed.php?ID=' + iRSSID + '&member=' + iMemID;
 
             bx_loading_animate($(this).find('.bx-loading-ajax'));
 
             $.getFeed( {
-                url: sFeedURL ,
-                success: function(feed) {
-                    //if( window.console ) console.log( feed );
+				url: sFeedURL,
+				success: function(feed) {
 
-                    if (feed != undefined && feed.items) {
-                        var sCode =
-                            '<div class="rss_feed_wrapper bx-def-padding">';
-                        var iCount = 0;
-                        for( var iItemId = 0; iItemId < feed.items.length; iItemId ++ ) {
-                            var item = feed.items[iItemId];
-                            var sDate;
-                            var a;
-                            var oDate
+					if (feed != undefined && feed.items) {
+						var sCode =
+							'<div class="sys-rss-feed-wrapper bx-def-bc-margin bx-def-padding-sec-top">';
+						var sTarget, iCount = 0;
+						for( var iItemId = 0; iItemId < feed.items.length; iItemId ++ ) {
+							var item = feed.items[iItemId];
+							var sDate = '', oDate, a;
 
-                            if (null != (a = item.updated.match(/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/)))
+                            if (null != (a = item.updated.match(/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/))) {
                                 oDate = new Date( a[1], a[2]-1, a[3], a[4], a[5], a[6], 0 );
-                            else
-                                oDate = new Date( item.updated );
-                            sDate = oDate.toLocaleString();
-
-                            sCode +=
-                                '<div class="rss_item_wrapper bx-def-padding-sec-top">' +
-                                    '<div class="rss_item_header">' +
-                                        '<a href="' + item.link + '" target="_blank">' + item.title + '</a>' +
-                                    '</div>' +
-                                    '<div class="rss_item_info bx-def-font-small bx-def-font-grayed">' +
-                                        '<span>' +
-                                            sDate +
-                                        '</span>' +
-                                    '</div>' +
-                                    '<div class="rss_item_desc">' + item.description + '</div>' +
-                                '</div>';
-
-                            iCount ++;
-                            if( iCount == iMaxNum )
-                                break;
-                        }
+                                sDate = oDate.toLocaleString();
+                            } else if (item.updated.length > 0) {
+    							oDate = new Date(item.updated.replace(/z$/i, "-00:00"));
+                                sDate = isNaN(oDate) ? '' : oDate.toLocaleString();
+                            }
 
-                        sCode +=
-                            '</div>' +
+                            sTarget = '';
+                            if (item.link.substring(0, sUrlRoot.length) != sUrlRoot) // open external links in new window
+                                sTarget = 'target="_blank"';
+                            
+							sCode +=								
+								'<div class="sys-rss-item-wrapper">' +
+									'<div class="sys-rss-item-header bx-def-font-h2">' +
+										'<a href="' + item.link + '" ' + sTarget + '>' + item.title + '</a>' +
+									'</div>' +
+									'<div class="sys-rss-item-desc">' + item.description + '</div>' +
+									'<div class="sys-rss-item-info bx-def-font-small bx-def-font-grayed">' +
+										'<span>' +
+											sDate +
+										'</span>' +
+									'</div>' +
+								'</div>' +
+                                '<hr class="bx-def-hr bx-def-margin-sec-top bx-def-margin-sec-bottom" />';
+							
+							iCount ++;
+							if( iCount == iMaxNum )
+								break;
+						}
+						
+                        sTarget = '';
+                        if (feed.link.substring(0, sUrlRoot.length) != sUrlRoot) // open external links in new window
+                            sTarget = 'target="_blank"';
 
-                            '<div class="bx-def-padding-sec-left bx-def-padding-sec-right bx-def-color-bg-sec">' +
-                                '<span class="rss_read_more"><a href="' + feed.link + '" target="_blank" class="rss_read_more_link">' + feed.title + '</a></span>' +
-                            '</div>' +
-
-                            '<div class="clear_both"></div>';
-
-                        $Cont.html( sCode );
-                    }
-                }
-            } );
-
-        } );
-    };
+						sCode +=
+							'</div>' +
+                            
+                            '<div class="sys-rss-read-more">' +
+                                '<i class="sys-icon link"></i><a href="' + feed.link + '" ' + sTarget + ' class="bx-def-margin-sec-left sys-rss-read-more-link">' + feed.title + '</a>' +
+                            '</div>';
+						
+						$Cont.html( sCode );
+					}
+				}
+			} );
+			
+		} );
+	};
 })(jQuery);
+

+ 3 - 41
template/css/rss.css

@@ -1,41 +1,3 @@
-
-    /* --------------- rss items */
-
-    .rss_item_wrapper:first-child {
-        padding-top: 0px;
-    }
-
-    .rss_item_header
-    {
-        font-weight:bold;
-    }
-
-    .rss_item_info
-    {
-        padding-left:20px;
-
-        line-height:16px;
-
-        background-repeat:no-repeat;
-        background-image:url(../images/icons/clock.png);
-    }
-
-    .rss_item_desc
-    {
-
-    }
-
-    /* --------------- rss block bottom panel */
-
-    .rss_read_more
-    {
-        padding-left:20px;
-
-        line-height:30px;
-        font-weight:normal;
-        text-transform:capitalize;
-
-        background-repeat:no-repeat;
-        background-image:url(../images/icons/chain.png);
-    }
-
+.sys-rss-read-more {
+    text-transform:capitalize;
+}