jquery.dolRSSFeed.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /**
  2. * Copyright (c) UNA, Inc - https://una.io
  3. * MIT License - https://opensource.org/licenses/MIT
  4. *
  5. * @defgroup UnaCore UNA Core
  6. * @{
  7. */
  8. (function($){
  9. $.fn.dolRSSFeed = function(oOptions) {
  10. var oOptions = oOptions || {};
  11. return this.each( function(){
  12. var $Cont = $(this);
  13. var sRSSObject = $Cont.attr( 'rssobject' );
  14. var iRSSID = $Cont.attr( 'rssid' );
  15. if((!iRSSID || !sRSSObject) && oOptions.forceUrl == undefined)
  16. return false;
  17. var iMaxNum = parseInt( $Cont.attr( 'rssnum' ) || 0 );
  18. var iMemID = parseInt( $Cont.attr( 'member' ) || 0 );
  19. var sFeedURL = (oOptions.forceUrl != undefined) ? oOptions.forceUrl : sUrlRoot + 'get_rss_feed.php?object=' + sRSSObject + '&id=' + iRSSID + '&member=' + iMemID;
  20. bx_loading_content($(this), true, true);
  21. if ('undefined' === typeof(jQuery.browser))
  22. jQuery.browser = {"msie": false};
  23. $.getFeed( {
  24. url: sFeedURL,
  25. error: function(oResponse) {
  26. if(typeof oOptions.onError == 'function')
  27. oOptions.onError();
  28. },
  29. success: function(feed) {
  30. if (feed == undefined || !feed.items)
  31. return;
  32. if(typeof oOptions.onLoad == 'function')
  33. oOptions.onLoad();
  34. var sCode =
  35. '<div class="sys-rss-feed-wrapper bx-def-bc-margin bx-def-padding-sec-top">';
  36. var sTarget, iCount = 0;
  37. for( var iItemId = 0; iItemId < feed.items.length; iItemId ++ ) {
  38. var item = feed.items[iItemId];
  39. var sDate = '', oDate, a;
  40. if (null != (a = item.updated.match(/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/))) {
  41. oDate = new Date( a[1], a[2]-1, a[3], a[4], a[5], a[6], 0 );
  42. sDate = oDate.toLocaleString();
  43. } else if (item.updated.length > 0) {
  44. oDate = new Date(item.updated.replace(/z$/i, "-00:00"));
  45. sDate = isNaN(oDate) ? '' : oDate.toLocaleString();
  46. }
  47. sTarget = '';
  48. if (item.link.substring(0, sUrlRoot.length) != sUrlRoot) // open external links in new window
  49. sTarget = 'target="_blank"';
  50. sCode +=
  51. '<div class="sys-rss-item-wrapper">' +
  52. '<div class="sys-rss-item-header bx-def-font-h2">' +
  53. '<a href="' + item.link + '" ' + sTarget + '>' + item.title + '</a>' +
  54. '</div>' +
  55. '<div class="sys-rss-item-desc">' + item.description + '</div>' +
  56. '<div class="sys-rss-item-info bx-def-font-small bx-def-font-grayed">' +
  57. '<span>' +
  58. sDate +
  59. '</span>' +
  60. '</div>' +
  61. '</div>' +
  62. '<hr class="bx-def-hr bx-def-margin-sec-top bx-def-margin-sec-bottom" />';
  63. iCount ++;
  64. if( iCount == iMaxNum )
  65. break;
  66. }
  67. sTarget = '';
  68. if (feed.link.substring(0, sUrlRoot.length) != sUrlRoot) // open external links in new window
  69. sTarget = 'target="_blank"';
  70. sCode +=
  71. '</div>' +
  72. '<div class="sys-rss-read-more">' +
  73. '<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>' +
  74. '</div>';
  75. $Cont.hide().html( sCode );
  76. if(typeof oOptions.onBeforeShow == 'function')
  77. oOptions.onBeforeShow();
  78. $Cont.show();
  79. if(typeof oOptions.onShow == 'function')
  80. oOptions.onShow();
  81. }
  82. });
  83. });
  84. };
  85. })(jQuery);
  86. /** @} */