Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <script src='http://code.jquery.com/jquery-latest.js' type='text/javascript'></script>
- <b:if cond='data:blog.pageType == "item"'>
- <style type='text/css'>
- .admin-comment {
- background: #F4F4F4;
- margin: 4px 4px 4px 0;
- padding: 3px 3px 0 3px;
- border: 1px solid #EDEDED;
- }
- .admin-comment:hover {
- background: #EDEDFF;
- border: 1px solid #D0D0FF;
- }
- .normal-comment {
- padding: 3px 3px 0 3px;
- margin-right: 4px;
- border: 1px solid white;
- }
- .normal-comment:hover {
- background: #F8F8FF;
- border: 1px solid #EDEDFF;
- padding: 3px 3px 0 3px;
- }
- .comment-reply-link { font-weight:bold !important; margin-right:1em; }
- #comments-block .comment-footer { margin-bottom: 2px; margin-top:0px;}
- </style>
- <script type='text/javascript'>
- //<![CDATA[
- // Threaded comments for Blogger v2
- // by MS-potilas 2012
- // Supports "Blogger threading" (feed) and has easy install.
- // See http://yabtb.blogspot.com/2012/01/blogger-threaded-commenting-hack-v2.html
- //
- // config:
- var maxThreadingLevels = 999; // limit to 2 to get Blogger-like threading; 3-4 is good, too
- var useBloggerThreading = true; // read Blogger threading information from feed
- var preferBloggerThreading = true; // prefer Blogger threading over @nick threading
- var threadIndent = 43; // pixels/level
- var replyCommentText = "Reply";
- var replyToUser = "Reply to ";
- var deleteCommentText = ""; // leave empty to use default (img)
- var useAdminPic = true; // use same img as Blogger threaded comments
- // config end
- // two xpand/collapse hack functions
- function getCmtBodyElm(elm) {
- if(elm.className=="admin-comment" || elm.className=="normal-comment") elm=elm.firstChild;
- while(elm && (elm.nodeType != 1 || (elm.className != "comment-body" && elm.className != "comment-body-author"))) elm = elm.nextSibling;
- return elm;
- }
- function tglCmt(event, elm) {
- var txt='';
- if(window.getSelection) txt = window.getSelection();
- else if (document.getSelection) txt = document.getSelection();
- else if (document.selection) txt = document.selection.createRange().text;
- var target = event.target ? event.target : event.srcElement;
- if(target.nodeType != 1) target=target.parentNode;
- if(txt != '' || target.nodeName.toLowerCase() == 'a' || target.nodeName.toLowerCase() == 'img') return;
- $(getCmtBodyElm(elm)).slideToggle();
- }
- var hlInstalled;
- if(!($(".normal-comment").length+$(".admin-comment").length)) hlInstalled=false;
- else hlInstalled=true;
- var cmtblock = $("#comments-block");
- var cmts = $("dt", cmtblock);
- var hrefr = $('.comment-footer a[href*="/comment.g"]:last').attr("href");
- if(!hrefr || hrefr=="") {
- hrefr = "";
- if($('.blogger-comment-from-post').length)
- hrefr=$('#comment-editor').attr("src").match("^.*postID=[^&]+")[0].replace("comment-iframe.g", "comment.g");
- }
- var onclk = $('.comment-footer a[href*="/comment.g"]:last').attr("onclick");
- if(!onclk) onclk = "";
- cmts.each(function() {
- var c0=$(this);
- var c1=c0.next();
- var c2=c1.next();
- var cid=c0.attr("id");
- var author = $(".avatar-image-container img",c0).attr("title");
- var cdelete = $(".comment-delete", c2);
- if(deleteCommentText != "") cdelete.html(deleteCommentText);
- var cdeletep = cdelete.parent();
- cdeletep.detach();
- var ctime = c2.children(":first");
- ctime.detach();
- c0.append(ctime);
- var creply = $(".comment-reply-link", c0);
- // add reply to comment hack if needed
- if(!creply.length) {
- if(hrefr != "" && author != "") {
- var onc='"'+onclk+'"';
- if(onclk.search('"') > -1) onc="'"+onclk+"'";
- var href = hrefr+"&postBody=%40%3Ca%20href%3D%22%23" + cid + "%22%3E" + author + "%3C%2Fa%3E%26%2332%3B#form";
- creply = $('<a href="'+href+'" onclick='+onc+' class="comment-reply-link" title="'+replyToUser+author+'">'+replyCommentText+'</a>');
- }
- }
- else {
- creply.detach();
- creply.css("float", "");
- creply.html(replyCommentText);
- }
- c2.append(creply);
- c2.append(cdeletep);
- var txtNode = c0.children()[0];
- while(txtNode && (txtNode.nodeType != 3 || (txtNode.nodeType == 3 && txtNode.nodeValue.search("...")==-1))) txtNode=txtNode.nextSibling;
- if(txtNode) {
- var txtWrote = " " + txtNode.nodeValue.replace(/\s*\.\.\.\s*$/, "") + " ";
- txtNode.nodeValue = txtWrote;
- }
- if(c0.hasClass("blog-author") && useAdminPic) {
- var txtAuthor = c0.children('a[href*="profile"]:first').html();
- c0.children('.avatar-image-container + a').after(' <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9B' + 'RUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0U' + 'pKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==" title="' + txtAuthor + '" style="margin:-3px 2px -5px" /> ');
- }
- // Add "highlight comments hack" if needed:
- if(!hlInstalled) {
- cmtblock.append('<div id="x'+cid+'" />');
- c0.detach();
- c1.detach();
- c2.detach();
- var newdiv = $("#comments-block div:last");
- newdiv.append(c0);
- newdiv.append(c1);
- newdiv.append(c2);
- if(c0.hasClass("blog-author")) newdiv.addClass("admin-comment");
- else newdiv.addClass("normal-comment");
- newdiv.click(function(event) { tglCmt(event, this); } ); // xpand/collapse hack
- }
- });
- // and finally the function to thread comments, pretty much the same as 2011 version:
- function threadComments(json) {
- var replyToCommentID = [];
- if(useBloggerThreading && json)
- for(var i=0 ; i < json.feed.entry.length ; i++) {
- var entry = json.feed.entry[i];
- var rela = "";
- var self = "";
- for (var k=0; k<entry.link.length; k++) {
- if (entry.link[k].rel == 'related') rela = entry.link[k].href.split("/comments/default/")[1];
- if (entry.link[k].rel == 'self') self = entry.link[k].href.split("/comments/default/")[1];
- }
- if(rela!="" && self!="") replyToCommentID[self] = rela;
- }
- else
- preferBloggerThreading = false;
- var clss = [];
- var elements = document.getElementsByTagName("*");
- for(var i=0 ; i<elements.length ; i++)
- if(elements[i].className=="normal-comment" || elements[i].className=="admin-comment")
- clss.push(elements[i]);
- var prevAuthor = "";
- var prevNode = null;
- var authornodes = {};
- for(var x=0 ; x < clss.length; x++ ) {
- var moved = false;
- var width = clss[x].scrollWidth;
- clss[x].style.position = "relative";
- clss[x].style.left = "0px";
- var thisID = clss[x].id.split("c")[1];
- var author = clss[x].innerHTML.toLowerCase().indexOf("%22%3e");
- author = clss[x].innerHTML.substr(author+6);
- if(author.toLowerCase().indexOf("%3c%2fa%3e") > -1)
- author = author.substr(0, author.toLowerCase().indexOf("%3c%2fa%3e"));
- else
- author = "";
- if(author == "")
- author=$("#xc"+thisID+" .avatar-image-container img").attr("title");
- var cmtChild = clss[x].firstChild;
- while(cmtChild && !/(^| )comment-body( |$)/.test(cmtChild.className) && !/(^| )comment-body-author( |$)/.test(cmtChild.className))
- cmtChild = cmtChild.nextSibling;
- var txt = cmtChild.innerHTML;
- var elm = null;
- // from feed:
- if(preferBloggerThreading && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
- elm = document.getElementById("xc"+replyToCommentID[thisID]);
- if(!elm) {
- var cmtID = txt.toLowerCase().indexOf("href=\"#");
- if(cmtID == -1) cmtID = txt.toLowerCase().indexOf("href=\"" + (window.location.href.toLowerCase()).split("#",1)[0] + "#");
- if(cmtID > -1) {
- var commentid = "x" + txt.substr(cmtID).split("#")[1].split("\"")[0];
- elm = document.getElementById(commentid);
- }
- }
- if(!elm && prevAuthor != "" && x && prevNode)
- {
- if(txt.indexOf("@" + prevAuthor) > -1)
- elm = prevNode;
- else if(prevAuthor.length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.toLowerCase()) > -1)
- elm = prevNode;
- else if(prevAuthor.split(/[\s,-.]+/)[0].length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.split(/[\s,-.]+/)[0].toLowerCase()) > -1)
- elm = prevNode;
- }
- if(!elm)
- for(var tmp in authornodes)
- if(txt.indexOf("@" + tmp) > -1)
- elm = authornodes[tmp];
- if(!elm && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
- elm = document.getElementById("xc"+replyToCommentID[thisID]);
- if(elm) {
- var ind = 0;
- if(elm.style.left != "")
- ind = parseInt(elm.style.left);
- if(ind < 300 && parseInt(ind / threadIndent)+1 < maxThreadingLevels) {
- if(ind < 140)
- ind = ind + threadIndent;
- else
- ind = ind + parseInt(threadIndent / 3);
- }
- var parNode = elm.parentNode;
- var place = elm;
- var xpos;
- do {
- do place = place.nextSibling;
- while(place && place.nodeType != 1);
- if(place && place.style && place.style.left != "")
- xpos = parseInt(place.style.left);
- else
- xpos = 0;
- } while(place && xpos >= ind);
- if(place != clss[x]) {
- parNode.insertBefore(clss[x], place);
- moved = true;
- }
- clss[x].style.position = "relative";
- clss[x].style.left = ind + "px";
- width = width - ind;
- }
- clss[x].style.width = width + "px";
- if(!moved) {
- prevAuthor = author;
- prevNode = clss[x];
- }
- if(author != "")
- authornodes[author] = clss[x];
- }
- }
- var cfeedbase = $('link[href$="comments/default"]').attr("href").split("/default")[0];
- if(useBloggerThreading && $('a[href*="'+cfeedbase+'"]').length)
- document.write('<script type="text/javascript" src="'+cfeedbase+'/summary?max-results=500&alt=json-in-script&callback=threadComments"></'+'script>');
- else threadComments();
- //]]>
- </script>
- </b:if>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement