Last active
December 13, 2015 18:38
-
-
Save vinayprajapati/4956310 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<style type="text/css"> | |
.recent-comment{margin-bottom:10px;padding-left:24px}.recent-comment-admin{background-color:#F4F4F4}.recent-comment-ico{margin-left:-20px;margin-top:4px;float:left;margin-right:3px}.recent-comment-header{}.recent-comment-body{padding-right:4px; font-size:95%}.recent-comment-footer{font-size:85%} | |
</style> | |
<script type="text/javascript"> | |
// | |
// Recent Comments blogger gadget by MS-potilas and Tech Prevue, using feed avatars | |
// with Minor changes in year 2013 month 02 date 16 | |
// | |
// CONFIG: | |
var numRecentComments = 5; | |
var numPerPost = 2; // max comments per post (to try) or 0 | |
var maxCommentChars = 90; | |
var maxPostTitleChars = 0; // if 0, use full post title | |
var txtWrote = 'wrote:'; | |
var txtMore = 'Continue ››'; | |
var txtTooltip = '[user] on "[title]" - [date MM/dd/yyyy hh:mm]'; | |
var txtAnonymous = ''; // empty, or Anonymous user name localized | |
// Variables [xxx] in texts: | |
// supports [title], [user], [date], [time], [datetime], [date format] | |
// format supports: yyyy=long year, yy=short year, MM=month(01-12), dd=monthday, hh=hour, mm=min, ss=sec | |
var getTitles = true; // false faster | |
var trueAvatars = true; // false faster | |
var urlMyAvatar = ''; // can be empty (then it is fetched) or url to image | |
var urlMyProfile = ''; // set if you have no profile gadget on page | |
// | |
var cropAvatar = true; | |
var sizeAvatar = 32; | |
var urlNoAvatar = "http://lh4.googleusercontent.com/-069mnq7DV_g/TvgRrBI_JaI/AAAAAAAAAic/Iot55vywnYw/s"+sizeAvatar+"/avatar_blue_m_96.png"; // http://www.blogger.com/img/avatar_blue_m_96.png resizeable | |
// | |
var urlAnoAvatar = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=' + sizeAvatar; | |
var maxResultsPosts = ""; // or for example "&max-results=100" | |
var maxResultsComments = ""; // or for example "&max-results=300" | |
// CONFIG END | |
var urlToTitle = {}; | |
function replaceVars(text, user, title, date) { | |
text = text.replace('[user]', user); | |
text = text.replace('[date]', date.toLocaleDateString()); | |
text = text.replace('[datetime]', date.toLocaleString()); | |
text = text.replace('[time]', date.toLocaleTimeString()); | |
text = text.replace('[title]', title.replace(/\"/g,'"')); | |
var i = text.indexOf("[date "); | |
if(i > -1) { | |
var format = /\[date\s+(.+?)\]/.exec(text)[1]; | |
if(format != '') { | |
var txtDate = format.replace(/yyyy/i, date.getFullYear()); | |
txtDate = txtDate.replace(/yy/i, date.getFullYear().toString().slice(-2)); | |
txtDate = txtDate.replace("MM", String("0"+(date.getMonth()+1)).slice(-2)); | |
txtDate = txtDate.replace("mm", String("0"+date.getMinutes()).slice(-2)); | |
txtDate = txtDate.replace("ss", String("0"+date.getSeconds()).slice(-2)); | |
txtDate = txtDate.replace("dd", String("0"+date.getDate()).slice(-2)); | |
//or: txtDate = txtDate.replace("dd", date.getDate()); | |
txtDate = txtDate.replace("hh", String("0"+date.getHours()).slice(-2)); | |
//or: txtDate = txtDate.replace("hh", date.getHours()); | |
text = text.replace(/\[date\s+(.+?)\]/, txtDate) | |
} | |
} | |
return text; | |
} | |
if(urlMyProfile == "") { | |
var elements = document.getElementsByTagName("*"); | |
var expr = /(^| )profile-link( |$)/; | |
for(var i=0 ; i<elements.length ; i++) | |
if(expr.test(elements[i].className)) { | |
urlMyProfile = elements[i].href; | |
break; | |
} | |
} | |
function getPostUrlsForComments(json) { | |
for(var i = 0 ; i < json.feed.entry.length ; i++ ) { | |
var entry = json.feed.entry[i]; | |
for (var k = 0; k < entry.link.length; k++ ) { | |
if (entry.link[k].rel == 'alternate') { | |
href = entry.link[k].href; | |
break; | |
} | |
} | |
urlToTitle[href] = entry.title.$t; | |
} | |
} | |
function showRecentComments(json) { | |
var postHandled = {}; | |
var j = 0; | |
if(numPerPost) { | |
while(numPerPost < numRecentComments) { | |
for(var i = 0 ; i < json.feed.entry.length ; i++ ) { | |
var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Vinay Prajapati") continue; | |
if(entry["thr$in-reply-to"]) { | |
if(!postHandled[entry["thr$in-reply-to"].href]) | |
postHandled[entry["thr$in-reply-to"].href] = 1; | |
else | |
postHandled[entry["thr$in-reply-to"].href]++; | |
if(postHandled[entry["thr$in-reply-to"].href] <= numPerPost) | |
j++; | |
} | |
} | |
if(j >= numRecentComments) | |
break; | |
numPerPost++; | |
j = 0; | |
postHandled = {}; | |
} | |
if(numRecentComments == numPerPost) | |
numPerPost = 0; | |
} | |
postHandled = {}; | |
j = 0; | |
for(var i = 0 ; j < numRecentComments && i < json.feed.entry.length ; i++ ) { | |
var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Vinay Prajapati") continue; | |
if(numPerPost && postHandled[entry["thr$in-reply-to"].href] && postHandled[entry["thr$in-reply-to"].href] >= numPerPost) | |
continue; | |
if(entry["thr$in-reply-to"]) { | |
if(!postHandled[entry["thr$in-reply-to"].href]) | |
postHandled[entry["thr$in-reply-to"].href] = 1; | |
else | |
postHandled[entry["thr$in-reply-to"].href]++; | |
j++; | |
var href=''; | |
for (var k = 0; k < entry.link.length; k++ ) { | |
if (entry.link[k].rel == 'alternate') { | |
href = entry.link[k].href; | |
break; | |
} | |
} | |
if(href=='') {j--; continue; } | |
var hrefPost = href.split("?")[0]; | |
var comment = ""; | |
if("content" in entry) comment = entry.content.$t; | |
else comment = entry.summary.$t; | |
comment = comment.replace(/<br[^>]*>/ig, " "); | |
comment = comment.replace(/<\S[^>]*>/g, ""); | |
var postTitle="-"; | |
if(urlToTitle[hrefPost]) postTitle=urlToTitle[hrefPost]; | |
else { | |
if(hrefPost.match(/\/([^/]*)\.html/)) postTitle = hrefPost.match(/\/([^/]*)\.html/)[1].replace(/_\d{2}$/, ""); | |
postTitle = postTitle.replace(/-/g," "); | |
postTitle = postTitle[0].toUpperCase() + postTitle.slice(1); | |
} | |
if(maxPostTitleChars && postTitle.length > maxPostTitleChars) { | |
postTitle = postTitle.substring(0, maxPostTitleChars); | |
var indexBreak = postTitle.lastIndexOf(" "); | |
postTitle = postTitle.substring(0, indexBreak) + "..."; | |
} | |
var authorName = entry.author[0].name.$t; | |
var authorUri = ""; | |
if(entry.author[0].uri && entry.author[0].uri.$t != "") | |
authorUri = entry.author[0].uri.$t; | |
var avaimg = urlAnoAvatar; | |
var bloggerprofile = "http://www.blogger.com/profile/"; | |
if(trueAvatars && entry.author[0].gd$image && entry.author[0].gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile) | |
avaimg = entry.author[0].gd$image.src; | |
else { | |
var parseurl = document.createElement('a'); | |
if(authorUri != "") { | |
parseurl.href = authorUri; | |
avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname; | |
} | |
} | |
if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "") | |
avaimg = urlMyAvatar; | |
if(avaimg == "http://img2.blogblog.com/img/b16-rounded.gif" && urlNoAvatar != "") | |
avaimg = urlNoAvatar; | |
var newsize="s"+sizeAvatar; | |
avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/"); | |
if(cropAvatar) newsize+="-c"; | |
avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/"); | |
if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar) | |
authorName = txtAnonymous; | |
var imgcode = '<img height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />'; | |
if (authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>'; | |
var clsAdmin = ""; | |
if(urlMyProfile != "" && authorUri == urlMyProfile) | |
clsAdmin = " recent-comment-admin"; | |
var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601 | |
var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]); | |
var txtHeader = txtWrote; | |
if(txtWrote.indexOf('[')==-1) | |
txtHeader = authorName + ' ' + txtWrote; | |
else | |
txtHeader = replaceVars(txtHeader, authorName, postTitle, cmtDate); | |
var tooltip = replaceVars(txtTooltip, authorName, postTitle, cmtDate); | |
if(!/#/.test(href)) href += "#comments"; | |
document.write('<div title="'+tooltip+'" class="recent-comment'+clsAdmin+'">'); | |
document.write('<div title="'+tooltip+'" class="recent-comment-header'+clsAdmin+'"><div title="'+tooltip+'" class="recent-comment-ico'+clsAdmin+'">'+imgcode+'</div><a title="'+tooltip+'" href="' + href + '">' + txtHeader + ' </a></div>'); | |
if(comment.length < maxCommentChars) | |
document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">' + comment + '</div>'); | |
else { | |
comment = comment.substring(0, maxCommentChars); | |
var indexBreak = comment.lastIndexOf(" "); | |
comment = comment.substring(0, indexBreak); | |
document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">' + comment + '...</div>'); | |
if(txtMore != "") { | |
var moretext = replaceVars(txtMore, authorName, postTitle, cmtDate); | |
document.write('<div title="'+tooltip+'" class="recent-comment-footer'+clsAdmin+'"><a title="'+tooltip+'" href="' + href + '">' + moretext + '</a></div>'); | |
} | |
} | |
document.write('<div style="clear:both;"></div></div>'); | |
} | |
} | |
} | |
if(getTitles) | |
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/posts/summary?redirect=false'+maxResultsPosts+'&alt=json-in-script&callback=getPostUrlsForComments"></'+'script>'); | |
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false'+maxResultsComments+'&alt=json-in-script&callback=showRecentComments"></'+'script>'); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment