Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. <style type="text/css">
  2. .recent-comment { margin-bottom:10px; padding-left: 24px; }
  3. .recent-comment img {
  4. border: 1px solid #666;
  5. padding: 2px;
  6. opacity: 0.4;}
  7. .recent-comment img:hover {
  8. border: 1px solid #ddd;
  9. opacity: 0.9;
  10. }
  11. .recent-comment a {
  12. color:#ddd;}
  13. .recent-comment-admin { background-color: #fff; }
  14. .recent-comment-ico { margin-left:-20px;margin-top:4px;float:left;margin-right:3px;}
  15. .recent-comment-header {}
  16. .recent-comment-body {
  17. font-size: 90%;
  18. font-style: italic;
  19. font-family: helvetica;
  20. color: #888;}
  21. .recent-comment-footer { font-size: 85%; }
  22. </style>
  23. <script type="text/javascript">
  24. //
  25. // CONFIG:
  26. var numRecentComments = 10;
  27. var numPerPost = 2; // max comments per post (to try) or 0
  28. var maxCommentChars = 70;
  29. var maxPostTitleChars = 0; // if 0, use full post title
  30. var txtWrote = 'says:';
  31. var txtMore = 'Ler Mais ยป';
  32. var txtTooltip = '[user] on "[title]" - [date MM/dd/yyyy hh:mm]';
  33. var txtAnonymous = ''; // empty, or Anonymous user name localized
  34. // Variables [xxx] in texts:
  35. // supports [title], [user], [date], [time], [datetime], [date format]
  36. // format supports: yyyy=long year, yy=short year, MM=month(01-12), dd=monthday, hh=hour, mm=min, ss=sec
  37. var getTitles = true; // false faster
  38. var trueAvatars = true; // false faster
  39. var urlMyAvatar = ''; // can be empty (then it is fetched) or url to image
  40. var urlMyProfile = ''; // set if you have no profile gadget on page
  41. //
  42. var cropAvatar = true;
  43. var sizeAvatar = 16;
  44. var urlNoAvatar = "http://lh4.googleusercontent.com/-069mnq7DV_g/TvgRrBI_JaI/AAAAAAAAAic/Iot55vywnYw/avatar_blue_m_96.png"; // http://www.blogger.com/img/avatar_blue_m_96.png resizeable
  45. //
  46. var urlAnoAvatar = 'http://lh4.googleusercontent.com/-069mnq7DV_g/TvgRrBI_JaI/AAAAAAAAAic/Iot55vywnYw/s15/avatar_blue_m_96.png?d=mm&s=' + sizeAvatar;
  47. var maxResultsPosts = ""; // or for example "&max-results=100"
  48. var maxResultsComments = ""; // or for example "&max-results=300"
  49. // CONFIG END
  50. var urlToTitle = {};
  51. function replaceVars(text, user, title, date) {
  52. text = text.replace('[user]', user);
  53. text = text.replace('[date]', date.toLocaleDateString());
  54. text = text.replace('[datetime]', date.toLocaleString());
  55. text = text.replace('[time]', date.toLocaleTimeString());
  56. text = text.replace('[title]', title.replace(/\"/g,'"'));
  57. var i = text.indexOf("[date ");
  58. if(i > -1) {
  59. var format = /\[date\s+(.+?)\]/.exec(text)[1];
  60. if(format != '') {
  61. var txtDate = format.replace(/yyyy/i, date.getFullYear());
  62. txtDate = txtDate.replace(/yy/i, date.getFullYear().toString().slice(-2));
  63. txtDate = txtDate.replace("MM", String("0"+(date.getMonth()+1)).slice(-2));
  64. txtDate = txtDate.replace("mm", String("0"+date.getMinutes()).slice(-2));
  65. txtDate = txtDate.replace("ss", String("0"+date.getSeconds()).slice(-2));
  66. txtDate = txtDate.replace("dd", String("0"+date.getDate()).slice(-2));
  67. //or: txtDate = txtDate.replace("dd", date.getDate());
  68. txtDate = txtDate.replace("hh", String("0"+date.getHours()).slice(-2));
  69. //or: txtDate = txtDate.replace("hh", date.getHours());
  70. text = text.replace(/\[date\s+(.+?)\]/, txtDate)
  71. }
  72. }
  73. return text;
  74. }
  75. if(urlMyProfile == "") {
  76. var elements = document.getElementsByTagName("*");
  77. var expr = /(^| )profile-link( |$)/;
  78. for(var i=0 ; i<elements.length ; i++)
  79. if(expr.test(elements[i].className)) {
  80. urlMyProfile = elements[i].href;
  81. break;
  82. }
  83. }
  84. function getPostUrlsForComments(json) {
  85. for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
  86. var entry = json.feed.entry[i];
  87. for (var k = 0; k < entry.link.length; k++ ) {
  88. if (entry.link[k].rel == 'alternate') {
  89. href = entry.link[k].href;
  90. break;
  91. }
  92. }
  93. urlToTitle[href] = entry.title.$t;
  94. }
  95. }
  96. function showRecentComments(json) {
  97. var postHandled = {};
  98. var j = 0;
  99. if(numPerPost) {
  100. while(numPerPost < numRecentComments) {
  101. for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
  102. var entry = json.feed.entry[i];
  103. if(entry["thr$in-reply-to"]) {
  104. if(!postHandled[entry["thr$in-reply-to"].href])
  105. postHandled[entry["thr$in-reply-to"].href] = 1;
  106. else
  107. postHandled[entry["thr$in-reply-to"].href]++;
  108. if(postHandled[entry["thr$in-reply-to"].href] <= numPerPost)
  109. j++;
  110. }
  111. }
  112. if(j >= numRecentComments)
  113. break;
  114. numPerPost++;
  115. j = 0;
  116. postHandled = {};
  117. }
  118. if(numRecentComments == numPerPost)
  119. numPerPost = 0;
  120. }
  121. postHandled = {};
  122. j = 0;
  123. for(var i = 0 ; j < numRecentComments && i < json.feed.entry.length ; i++ ) {
  124. var entry = json.feed.entry[i];
  125. if(numPerPost && postHandled[entry["thr$in-reply-to"].href] && postHandled[entry["thr$in-reply-to"].href] >= numPerPost)
  126. continue;
  127. if(entry["thr$in-reply-to"]) {
  128. if(!postHandled[entry["thr$in-reply-to"].href])
  129. postHandled[entry["thr$in-reply-to"].href] = 1;
  130. else
  131. postHandled[entry["thr$in-reply-to"].href]++;
  132. j++;
  133. var href='';
  134. for (var k = 0; k < entry.link.length; k++ ) {
  135. if (entry.link[k].rel == 'alternate') {
  136. href = entry.link[k].href;
  137. break;
  138. }
  139. }
  140. if(href=='') {j--; continue; }
  141. var hrefPost = href.split("?")[0];
  142. var comment = "";
  143. if("content" in entry) comment = entry.content.$t;
  144. else comment = entry.summary.$t;
  145. comment = comment.replace(/<br[^>]*>/ig, " ");
  146. comment = comment.replace(/<\S[^>]*>/g, "");
  147. var postTitle="-";
  148. if(urlToTitle[hrefPost]) postTitle=urlToTitle[hrefPost];
  149. else {
  150. if(hrefPost.match(/\/([^/]*)\.html/)) postTitle = hrefPost.match(/\/([^/]*)\.html/)[1].replace(/_\d{2}$/, "");
  151. postTitle = postTitle.replace(/-/g," ");
  152. postTitle = postTitle[0].toUpperCase() + postTitle.slice(1);
  153. }
  154. if(maxPostTitleChars && postTitle.length > maxPostTitleChars) {
  155. postTitle = postTitle.substring(0, maxPostTitleChars);
  156. var indexBreak = postTitle.lastIndexOf(" ");
  157. postTitle = postTitle.substring(0, indexBreak) + "...";
  158. }
  159.  
  160. var authorName = entry.author[0].name.$t;
  161. var authorUri = "";
  162. if(entry.author[0].uri && entry.author[0].uri.$t != "")
  163. authorUri = entry.author[0].uri.$t;
  164.  
  165. var avaimg = urlAnoAvatar;
  166. var bloggerprofile = "http://www.blogger.com/profile/";
  167. if(trueAvatars && entry.author[0].gd$image && entry.author[0].gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
  168. avaimg = entry.author[0].gd$image.src;
  169. else {
  170. var parseurl = document.createElement('a');
  171. if(authorUri != "") {
  172. parseurl.href = authorUri;
  173. avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname;
  174. }
  175. }
  176. if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "")
  177. avaimg = urlMyAvatar;
  178. if(avaimg == "http://img2.blogblog.com/img/b16-rounded.gif" && urlNoAvatar != "")
  179. avaimg = urlNoAvatar;
  180. var newsize="s"+sizeAvatar;
  181. avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/");
  182. if(cropAvatar) newsize+="-c";
  183. avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/");
  184. if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
  185. authorName = txtAnonymous;
  186. var imgcode = '<img height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
  187. if (authorUri!="") imgcode = '<a rel="nofollow" href="'+authorUri+'">'+imgcode+'</a>';
  188. var clsAdmin = "";
  189. if(urlMyProfile != "" && authorUri == urlMyProfile)
  190. clsAdmin = " recent-comment-admin";
  191. var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
  192. var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);
  193.  
  194. var txtHeader = txtWrote;
  195. if(txtWrote.indexOf('[')==-1)
  196. txtHeader = authorName + ' ' + txtWrote;
  197. else
  198. txtHeader = replaceVars(txtHeader, authorName, postTitle, cmtDate);
  199.  
  200. var tooltip = replaceVars(txtTooltip, authorName, postTitle, cmtDate);
  201. if(!/#/.test(href)) href += "#comments";
  202. document.write('<div title="'+tooltip+'" class="recent-comment'+clsAdmin+'">
  203. ');
  204. document.write('<div title="'+tooltip+'" class="recent-comment-header'+clsAdmin+'">
  205. <div title="'+tooltip+'" class="recent-comment-ico'+clsAdmin+'">
  206. '+imgcode+'</div>
  207. <a title="'+tooltip+'" href="' + href + '">' + txtHeader + ' </a></div>
  208. ');
  209. if(comment.length < maxCommentChars)
  210. document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">' + comment + '</div>
  211. ');
  212. else {
  213. comment = comment.substring(0, maxCommentChars);
  214. var indexBreak = comment.lastIndexOf(" ");
  215. comment = comment.substring(0, indexBreak);
  216. document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">
  217. ' + comment + '...</div>
  218. ');
  219. if(txtMore != "") {
  220. var moretext = replaceVars(txtMore, authorName, postTitle, cmtDate);
  221. document.write('<div title="'+tooltip+'" class="recent-comment-footer'+clsAdmin+'">
  222. <a title="'+tooltip+'" href="' + href + '">' + moretext + '</a></div>
  223. ');
  224. }
  225. }
  226. document.write('<div style="clear:both;">
  227. </div>
  228. </div>
  229. ');
  230. }
  231. }
  232. }
  233. if(getTitles)
  234. document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/posts/summary?redirect=false'+maxResultsPosts+'&alt=json-in-script&callback=getPostUrlsForComments"></'+'script>');
  235. document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false'+maxResultsComments+'&alt=json-in-script&callback=showRecentComments"></'+'script>');
  236. </script>