您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fix Comment Preview box on crikey blogs
// ==UserScript== // @name CrikeyCleanCommentPreview // @author Musrum // @namespace 2 // @description Fix Comment Preview box on crikey blogs // @include https://blogs.crikey.com.au/* // @include https://www.crikey.com.au/* // @include http://blogs.crikey.com.au/* // @include http://www.crikey.com.au/* // @exclude http://www.crikey.com.au/*.gif // @exclude https://www.crikey.com.au/*.gif // @require https://greasyfork.org/scripts/1884-gm-config/code/GM_config.js?version=4836 // @grant none // @version 5.51 // ==/UserScript== var scriptVer = '5.51'; // Ver 5.51 // Fixed issue with single page comment lists // Ver 5.50 // Fixed Help Screen, Fixed Emoji support, Added check for uneven blockquotes // Ver 5.49 // Fixed Basic UNICODE Emoji support not allowing quotes // Ver 5.48 // Basic UNICODE Emoji support //////////////////////////////////////////////////////////////////////////////// /*jslint browser: true */ /*global GM_config, GM_registerMenuCommand */ //////////////////////////////////////////////////////////////////////////////// //don't run in iframes if (window.top !== window.self) {return;} //////////////////////////////////////////////////////////////////////////////// // Config settings dialog GM_config.storage = 'Crikey Clean Comment Preview'; GM_config.init('Crikey Clean Comment Preview - Ver ' + scriptVer, { cleanVertSpace: { label: 'Clean Vertical Space', type: 'checkbox', 'default': true }, addCommentNumbers: { label: 'Add Comment Numbers', type: 'checkbox', 'default': true }, betterCommentNavigation: { label: 'Better Comment Numbers', type: 'checkbox', 'default': true }, commentsPerPage: { label: 'Comments Per Page', type: 'text', 'default': '50' }, wordsFinder: { label: 'Word/phrase Finder (use the format: \'Username|NBN\')', type: 'text', 'default': '', size:50 } }, { open: function() { GM_config.addBorder(); // add a fancy border GM_config.resizeFrame('200px','300px'); // resize the config window } }, { save: function () { location.reload(); } // reload the page when configuration was changed } ); //////////////////////////////////////////////////////////////////////////////// function showConfigCCCP() {GM_config.open();} //////////////////////////////////////////////////////////////////////////////// // Declare Global Hashtable var gh = []; //////////////////////////////////////////////////////////////////////////////// // Run if DOM is ready, otherwise add a listerner to wait if (document.readyState == "complete" || document.readyState == "loaded" || document.readyState == "interactive") {main();} else {window.addEventListener('DOMContentLoaded',function(e){main();});} //////////////////////////////////////////////////////////////////////////////// // Init Global Hash Variables function initGlobalHash() { console.log('cccp: initGlobalHash()'); // RegExpr gh["rxp.removeHTML"] = new RegExp('<[/]?([psu]|address|applet|area|base|basefont|bdo|big|body|br|button|caption|center|col|colgroup|dd|dfn|dir|div|dl|dt|fieldset|font|form|frame|frameset|head|h[1-6r]|html|iframe|img|input|ins|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|param|pre|samp|script|select|small|span|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|ul|var:\w+)[^>]*?>', 'gi'); // Images gh["img.quotes.png"] = 'data:image/png;base64,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'; // Avatar cosplay gh["avt.william bowe~"] = 'data:image/png;base64,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'; gh["avt.musrum"] = 'data:image/png;base64,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'; // URLS gh["url.Firefox"] = "http://www.mozilla.com/en-US/firefox/personal.html"; gh["url.Greasemonkey"] = "https://addons.mozilla.org/en-US/firefox/addon/748"; gh["url.Google Chrome"] = "http://www.google.com/chrome"; gh["url.Tampermonkey"] = "https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo"; gh["url.cccp"] = "https://greasyfork.org/en/scripts/18677-crikeycleancommentpreview"; // Filters gh["flt.words"] = GM_config.get('wordsFinder').toLowerCase(); // Elements gh["emt.nav"] = '<nav id="comment-nav-above" class="navigation comment-navigation" role="navigation"><h2 class="screen-reader-text">Comment navigation</h2><div class="nav-links"></div><!-- .nav-links --></nav>'; } //////////////////////////////////////////////////////////////////////////////// // If we are logged in, perform additional steps related to commenting function main() { console.log('cccp: main()'); initGlobalHash(); if ( loginStatus() === 1 ) { mainFormating(); mainCommenting(); } else { mainFormating(); } } //////////////////////////////////////////////////////////////////////////////// // If we are logged in, perform additional steps related to commenting function loginStatus() { var ul = document.getElementById("menu-top_right_logged_out_view"); var ls = (! ul) ? 1 : 0; console.log('cccp: loginStatus() = ' + ls); return ls; } //////////////////////////////////////////////////////////////////////////////// function loginStatusOld2() { var li = document.getElementById("menu-item-543624"); var ls = (li.firstChild.innerHTML === "Sign out") ? 1 : 0; console.log('cccp: loginStatus() = ' + ls); return ls; } //////////////////////////////////////////////////////////////////////////////// function loginStatusOld() { var pg = document.getElementsByClassName("page")[0]; var p = pg.getElementsByTagName("p"); var ls = 0; for (var i = 0; i < p.length; i++ ) { if ( p[i].parentNode === pg && p[i].innerHTML.match(/User login status : /) ) { ls = parseInt(p[i].innerHTML.replace(/User login status : /,'')); break; } } return ls; } //////////////////////////////////////////////////////////////////////////////// function mainFormating() { console.log('cccp: mainFormating()'); // ensureCommentOrder(); getPageNos(); tweakAvatars(); cleanVerticalSpace(); fixDuplicateNavigationIds(); addCommentNumbers(); betterCommentNavigation(); cccpNavBar(); wordsFinder(); } //////////////////////////////////////////////////////////////////////////////// function mainCommenting() { console.log('cccp: mainCommenting()'); if (document.getElementById("comments")) { addCCCPLinks(); } if (document.getElementById("respond")) { if (document.getElementsByClassName("comment-respond").length > 1 ) { removeExtraCommentBox(); } else { moveCommentBox(); } // removeReplyButtons(); addSubmitButton(); addPreviewButton(); addQuoteButtons(); cloneTextBox(); } } //////////////////////////////////////////////////////////////////////////////// function fixDuplicateNavigationIds() { console.log('cccp: fixDuplicateNavigationIds()'); var cna = document.querySelectorAll("#comment-nav-above") console.log('cccp: cna.length = ' + cna.length); if ( cna.length === 2 ) { cna[1].id = 'comment-nav-below'; } } //////////////////////////////////////////////////////////////////////////////// function removeExtraCommentBox() { console.log('cccp: removeExtraCommentBox()'); var resp = document.querySelectorAll("#respond") console.log('cccp: respond.length = ' + resp.length); if ( resp.length < 2 ) {return;} resp[0].parentNode.removeChild(resp[0]); } //////////////////////////////////////////////////////////////////////////////// function ensureCommentOrder() { var ol = document.getElementsByClassName("comment-list")[0]; var cl = ol.getElementsByTagName("li"); if (cl.length < 2 ) {return;} if ( parseInt(cl[0].id.replace('comment-','')) < parseInt(cl[1].id.replace('comment-','')) ) {return;} // List out of order: reverse order now for ( var i = cl.length-2; i >= 0; i-- ) { ol.appendChild(cl[i]); } } //////////////////////////////////////////////////////////////////////////////// function getPageNos() { console.log('cccp: getPageNos()'); var nc = parseInt(document.getElementById("block_disqus").getElementsByClassName("block__label")[0].getElementsByClassName("info")[0].getElementsByClassName("info__title")[0].innerHTML.replace(/ comments/,'')); console.log('cccp: nc = ' + nc); gh["pg.cno"] = nc; var cpp = parseInt(GM_config.get('commentsPerPage')); gh["pg.max"] = Math.ceil( parseInt(nc) / cpp ); if ( window.location.href.match(/comment-page/) ) { gh["pg.cur"] = parseInt( window.location.href.replace(/.*\/comment-page-([0-9]+).*/,'$1') ); } else { gh["pg.cur"] = 1; //gh["pg.max"]; } } //////////////////////////////////////////////////////////////////////////////// function addCommentNumbers() { console.log('cccp: addCommentNumbers()'); if (GM_config.get('addCommentNumbers') !== true) {return;} if (document.getElementsByClassName("comment-list").length === 0) {return;} var ol = document.getElementsByClassName("comment-list"); var cpp = parseInt(GM_config.get('commentsPerPage')); var cno = gh["pg.cno"]; var cur = gh["pg.cur"]; var max = gh["pg.max"]; var cl = ol[0].getElementsByTagName("li"); console.log('cccp: cl.length = ' + cl.length); console.log('cccp: pg.cno = ' + cno); console.log('cccp: pg.cur = ' + cur); console.log('cccp: pg.max = ' + max); if (cl.length === 0 ) {return;} // var cn = cno - ((max-cur)*cpp); var cn = 1 + ((cur-1)*cpp); for ( var i = 0; i < cl.length; i++ ) { var a = cl[i].getElementsByClassName("commentmetadata")[0].getElementsByTagName("a"); if ( a.length === 0 ) {continue;} if (a[0].firstChild) { var sp = document.createElement("span"); sp.innerHTML = '#' + (cn+i) + ' '; a[0].insertBefore(sp,a[0].firstChild); } else { a[0].innerHTML = '#' + (cn+i) + ' ' + a[0].innerHTML.replace(/^\s*/,''); } } } //////////////////////////////////////////////////////////////////////////////// function wordsFinder() { console.log('cccp: wordsFinder()'); var wfon = ( gh["flt.words" ] !== null && gh["flt.words" ].replace(/\s*/,'').length > 0 ); if ( ! wfon ) {return;} if ( document.getElementsByClassName("comment-list").length === 0 ) {return;} var wf = gh["flt.words"]; var ol = document.getElementsByClassName("comment-list")[0]; var cl = ol.getElementsByTagName("li"); if (cl.length === 0 ) {return;} var ci = []; for ( var i = 0; i < cl.length; i++) { if ( cl[i].getElementsByClassName('comment-content')[0].innerHTML.toLowerCase().match(wf) ) { ci.push(i); } } if (ci.length === 0 ) {return;} console.log('ci.length: ' + ci.length); // Create the link to the first found comment if (document.getElementById("comment-nav-below")) { wordsFinderTag('match',cl,ci,0,document.getElementById("comment-nav-below").getElementsByClassName("comment-notes")[0]); } if (document.getElementById("comment-nav-above")) { wordsFinderTag('match',cl,ci,0,document.getElementById("comment-nav-above").getElementsByClassName("comment-notes")[0]); } if (ci.length === 1 ) {return;} // Create additional links if required for ( i = 0; i < ci.length; i++ ) { var j = ( i === ci.length-1 ) ? 0 : (i+1); var txt = ( j === 0 ) ? 'first' : 'next'; wordsFinderTag(txt,cl,ci,j,cl[ci[i]].getElementsByClassName("comment-notes")[0]); } } //----------------------------------------------------------------------------// function wordsFinderTag(txt,cl,ci,i,e) { var a = document.createElement('a'); a.href = cl[ci[i]].getElementsByClassName("comment-meta")[0].getElementsByTagName("a")[0].href; // console.log(JSON.stringify(cc[ci[i]].parentNode.getElementsByClassName("comment-metadata")[0].getElementsByTagName("a")[0].href)); var text = txt + ': ' + (i+1) + '/' + ci.length + ' ' + getAuthor(cl[ci[i]].firstChild); a.innerHTML = text; e.appendChild(a); } //////////////////////////////////////////////////////////////////////////////// function getAuthor(e) { var author; var a = e.parentNode.getElementsByClassName('fn')[0]; if ( a.firstChild.innerHTML === undefined ) { author = a.innerHTML; } else { author = a.firstChild.innerHTML; } return author.toLowerCase(); } //////////////////////////////////////////////////////////////////////////////// // Clean out wasted vertical space function cleanVerticalSpace() { console.log('cccp: cleanVerticalSpace()'); if (GM_config.get('cleanVertSpace') !== true) {return;} cleanAll("article-body__share"); cleanAll("author"); cleanAll("block_outlined-desktop"); cleanAll("footer"); } //////////////////////////////////////////////////////////////////////////////// function cleanAll(className) { var e = document.getElementsByClassName(className); if ( ! e ) {return;} for ( var i = 0; i < e.length; i++ ) { e[i].style.display = 'none'; } } //////////////////////////////////////////////////////////////////////////////// // Better Comment Navigation function betterCommentNavigation() { console.log('cccp: betterCommentNavigation()'); // if (GM_config.get('betterCommentNavigation') !== true) {return;} if ( ! document.getElementById("comment-nav-above") ) {return;} // var cpp = parseInt(GM_config.get('commentsPerPage')); // Add Right-Side div for comment-notes (wordFinder) to bottom Nav Bar heading addRightSideDiv(document.getElementById("comment-nav-below").getElementsByTagName("h2")[0],"comment-notes"); addRightSideDiv(document.getElementById("comment-nav-above").getElementsByTagName("h2")[0],"comment-notes"); return; var nc = document.getElementsByClassName("info_linear-mobile")[0].getElementsByTagName("a")[1].innerHTML.replace(/ .*/,''); var pg = Math.ceil( parseInt(nc) / cpp ); var href = window.location.href.replace(/\/comment-page-[0-9]+/,'').replace(/\/#comment?s/,'').replace(/\/#comment-[0-9]+/,'').replace(/\/$/,'');; var cp = pg; if ( window.location.href.match(/comment-page/) ) { cp = parseInt( window.location.href.replace(/.*\/comment-page-([0-9]+).*/,'$1') ); } var nav = ["above","below"]; for (var i = 0; i < nav.length; i++) { var nl = document.getElementById("comment-nav-" + nav[i]).getElementsByClassName("nav-links")[0]; nl.innerHTML = ''; for (var j = 1; j <= pg; j++) { var div = document.createElement('div'); var a = document.createElement('a'); div.setAttribute("class","nav-next"); div.appendChild(a); a.href = href + '/comment-page-' + j + '/#comments'; var d = document.createElement('div'); a.appendChild(d); if ( j == cp ) { d.style.backgroundColor = "lightblue"; a.href="javascript:location.reload();"; } d.innerHTML = j; nl.appendChild(div); } } } //////////////////////////////////////////////////////////////////////////////// function moveCommentBox() { var e = document.getElementById("respond"); var n = document.getElementById("cccp_nav"); n.parentNode.insertBefore(e, n); } //////////////////////////////////////////////////////////////////////////////// function removeReplyButtons() { if (GM_config.get('removeReplyBtns') === false) {return;} var replys = document.getElementsByClassName('reply'); for ( var i = 0; i < replys.length; i++ ) { replys[i].setAttribute("style","display: none"); } } //////////////////////////////////////////////////////////////////////////////// function copyCCCPTextBox() { var comment = document.getElementById("comment"); if (! comment ) {return;} var ctbx = document.getElementById("cccp-comment"); if (! ctbx ) {return;} var text = ctbx.value; // console.log(text); // Add balancing open/close square brackets if required. var cOpen = (text.match(/\[/g) || []).length; var cClse = (text.match(/\]/g) || []).length; var pre = (cOpen < cClse) ? "[" : ""; var pst = (cOpen > cClse) ? "]" : ""; for ( var i = 0; i <= Math.abs(cOpen-cClse) ; i++ ) { text = pre + text + pst; } text = text.replace(/\[/g,'<blockquote>').replace(/\]/g,'</blockquote>'); text = text.replace(/<p>[\s]*<p>/g,'<p>').replace(/<\/p>[\s]*<\/p>/g,'</p>'); text = text.replace(/:smile:/g,'?'); text = text.replace(/:grin:/g,'?'); text = text.replace(/:sad:/g,'?'); text = text.replace(/:eek:/g,'?'); text = text.replace(/:shock:/g,'?'); text = text.replace(/:\?\?\?:/g,'?'); text = text.replace(/:cool:/g,'?'); text = text.replace(/:mad:/g,'?'); text = text.replace(/:razz:/g,'?'); text = text.replace(/:neutral:/g,'?'); text = text.replace(/:wink:/g,'?'); text = text.replace(/:lol:/g,'?'); console.log(text); comment.value = text; } //////////////////////////////////////////////////////////////////////////////// function finalCCCPTextBox() { var comment = document.getElementById("comment"); if (! comment ) {return;} var text = comment.value; console.log(text); comment.value = text; } //////////////////////////////////////////////////////////////////////////////// function unicodeEscape(str) { for (var result = '', index = 0, charCode; !isNaN(charCode = str.charCodeAt(index++));) { result += '&#' + ('0000' + charCode.toString(16)).slice(-4) + ";"; } return result; } //////////////////////////////////////////////////////////////////////////////// function cccpSubmit() { copyCCCPTextBox(); finalCCCPTextBox(); document.getElementById("submit").click(); } //////////////////////////////////////////////////////////////////////////////// function addSubmitButton() { // Add the cccp Submit Button (hide original) var fs = respond.getElementsByClassName("form-submit")[0]; fs.firstChild.setAttribute("style","display: none"); var prv = document.createElement("input"); fs.insertBefore(prv, fs.firstChild); prv.id = "cccp-submit"; prv.setAttribute("class", "submit"); prv.setAttribute("type", "button"); prv.value = "Submit"; prv.addEventListener("click", cccpSubmit, false); } //////////////////////////////////////////////////////////////////////////////// function addPreviewButton() { // Add the Preview Button var fs = respond.getElementsByClassName("form-submit")[0]; var sp = document.createElement("span"); sp.innerHTML = ' '; fs.insertBefore(sp, fs.firstChild); var prv = document.createElement("input"); fs.insertBefore(prv, fs.firstChild); prv.id = "preview"; prv.setAttribute("class", "submit"); prv.setAttribute("type", "button"); prv.value = "Preview"; prv.addEventListener("click", previewCCCP, false); } //////////////////////////////////////////////////////////////////////////////// function addCCCPLinks() { // Fix for Help Box var cnb = document.getElementById("comment-nav-below"); if ( cnb ) { cnb.style.position = 'relative'; cnb.style.zIndex = 5; } var cccp_nav = document.getElementById("cccp_nav"); if (! cccp_nav) {return;} cccp_nav.style.position = 'relative'; cccp_nav.style.zIndex = 5; // Add the Recommend CCCP Link var rec = document.createElement("a"); document.getElementById("cccp_rec").appendChild(rec); rec.innerHTML = "Recommend CCCP"; rec.addEventListener("click", recommendCCCP, false); // Add the CCCP Help Link setupHelpCCCP(); } //////////////////////////////////////////////////////////////////////////////// // Create a new cccp_nav <div> with space for help/settings/recommend function cccpNavBar() { var comments = document.getElementById("comments"); if (! comments) {return;} var cccp_nav = document.createElement('div'); cccp_nav.id = "cccp_nav"; comments.appendChild(cccp_nav); var nav = ["hlp","set","rec"]; var alg = ["left","center","right"]; var tbl = document.createElement('table'); cccp_nav.appendChild(tbl); var row = document.createElement('tr'); tbl.appendChild(row); for (var i = 0; i < nav.length; i++) { var td = document.createElement('td'); td.width = '33%'; row.appendChild(td); var dv = document.createElement('div'); dv.id = 'cccp_' + nav[i]; dv.style = "text-align: " + alg[i] + ";"; td.appendChild(dv); } // Add the CCCP Settings Link var set = document.createElement("a"); document.getElementById("cccp_set").appendChild(set); set.innerHTML = "CCCP Settings"; set.addEventListener("click", showConfigCCCP, false); } //////////////////////////////////////////////////////////////////////////////// function recommendCCCP() { var comment = document.getElementById("cccp-comment"); comment.value += '\nTo use the Crikey Clear Comment Preview script, install in order:\n'; comment.value += '<a href="' + gh["url.Firefox"] + '">Firefox</a>\n'; comment.value += '<a href="' + gh["url.Greasemonkey"] + '">Greasemonkey</a>\n'; comment.value += '<a href="' + gh["url.cccp"] + '">cccp</a>\n'; comment.value += 'or:\n'; comment.value += '<a href="' + gh["url.Google Chrome"] + '">Google Chrome</a>\n'; comment.value += '<a href="' + gh["url.Tampermonkey"] + '">Tampermonkey</a>\n'; comment.value += '<a href="' + gh["url.cccp"] + '">cccp</a>\n'; } //////////////////////////////////////////////////////////////////////////////// function setupHelpCCCP() { var styleEl = document.createElement('style'), styleSheet; document.head.appendChild(styleEl); styleSheet = styleEl.sheet; styleSheet.insertRule(".cccp-modal {display: none;position: fixed;z-index: 1000;padding-top: 100px;left: 0;top: 0;width: 100%;height: 100%;overflow: auto;background-color: rgb(0,0,0);background-color: rgba(0,0,0,0.4);}", 0); styleSheet.insertRule(".cccp-modal-content {background-color: #fefefe;margin: auto;padding: 20px;border: 1px solid #888;width: 80%;}", 0); styleSheet.insertRule(".cccp-close {color: #aaaaaa;float: right;font-size: 28px;font-weight: bold;}", 0); styleSheet.insertRule(".cccp-close:hover,.cccp-close:focus {color: #000;text-decoration: none;cursor: pointer;}", 0); // Add the CCCP Help Link var hlp = document.createElement("a"); document.getElementById("cccp_hlp").appendChild(hlp); hlp.innerHTML = "CCCP Help"; hlp.addEventListener("click", helpCCCP, false); var cccp_help = document.createElement('div'); cccp_help.id = "cccp-help"; document.getElementById("cccp_hlp").appendChild(cccp_help); cccp_help.setAttribute("class", "cccp-modal"); var div = document.createElement('div'); div.setAttribute("class", "cccp-modal-content"); cccp_help.appendChild(div); var span = document.createElement('span'); span.setAttribute("class", "cccp-close"); span.innerHTML = '×'; div.appendChild(span); var p = document.createElement('p'); div.appendChild(p); // When the user clicks on <span> (x), close the modal span.onclick = function() { cccp_help.style.display = "none"; } // When the user clicks anywhere outside of the modal, close it window.onclick = function(event) { if (event.target == cccp_help) { cccp_help.style.display = "none"; } } var text = ''; text += '<b>Emoticons:</b></br>'; text += '<table>'; text += '<tr><td>:smile:</td><td>?</td>'; text += '<td>:grin:</td><td>?</td>'; text += '<td>:sad:</td><td>?</td>'; text += '<td>:eek:</td><td>?</td></tr>'; text += '<tr><td>:shock:</td><td>?</td>'; text += '<td>:???:</td><td>?</td>'; text += '<td>:cool:</td><td>?</td>'; text += '<td>:mad:</td><td>?</td></tr>'; text += '<tr><td>:razz:</td><td>?</td>'; text += '<td>:neutral:</td><td>?</td>'; text += '<td>:wink:</td><td>?</td>'; text += '<td>:lol:</td><td>?</td></tr>'; text += '</table>'; p.innerHTML = text; } //////////////////////////////////////////////////////////////////////////////// function helpCCCP() { document.getElementById('cccp-help').style.display = "block"; return; } //////////////////////////////////////////////////////////////////////////////// function previewCCCP() { var comments = document.getElementById("comments"); if (! comments ) {return;} var respond = document.getElementById("respond"); if (! respond ) {return;} var comment = document.getElementById("comment"); if (! comment ) {return;} copyCCCPTextBox(); var preview; preview = document.getElementById("cccp_preview"); if (! preview ) { var ol = document.createElement('ol'); ol.setAttribute("class", "comment-list"); comments.insertBefore(ol, document.getElementById("cccp_nav")); var li = document.createElement('li'); li.setAttribute("class", "comment byuser even thread-even depth-1"); ol.appendChild(li); var ar = document.createElement('article'); ar.setAttribute("class", "comment-body"); li.appendChild(ar); preview = document.createElement('div'); preview.id = "cccp_preview"; preview.setAttribute("class", "comment-content"); ar.appendChild(preview); } preview.innerHTML = comment.value.replace(/\n/g,'<br>'); } //////////////////////////////////////////////////////////////////////////////// function tweakAvatars() { console.log('cccp: tweakAvatars()'); if ( document.getElementsByClassName("comment-list").length === 0) {return;} var cli = document.getElementsByClassName("comment-list")[0].getElementsByTagName("li"); console.log('cccp: cli.length = ' + cli.length); var sar = GM_config.get('shiftAvatarRight'); console.log('cccp: sar = ' + sar); for ( var i = 0; i < cli.length; i++ ) { var cc = cli[i].getElementsByClassName("comment-content-right")[0]; var div = document.createElement('div'); div.setAttribute("style", "width: 100%; display: inline-block;"); div.setAttribute("class", "comment-content-right-top"); cc.insertBefore(div,cc.firstChild); var tbl1 = document.createElement('table'); div.appendChild(tbl1); tbl1.setAttribute("style", "margin-left: auto; margin-right: auto"); var tr1 = document.createElement('tr'); tr1.setAttribute("style", "width: 100%; padding: 0px;"); tbl1.appendChild(tr1); var c11 = document.createElement('td'); c11.setAttribute("style", "width: 91px; padding: 0px;"); var c12 = document.createElement('td'); tr1.appendChild(c11); tr1.appendChild(c12); var ca = cli[i].getElementsByClassName("comment-author")[0]; c11.appendChild(ca); var tbl2 = document.createElement('table'); c12.appendChild(tbl2); tbl2.setAttribute("style", "margin-left: auto; margin-right: auto"); var tr2 = document.createElement('tr'); tr2.setAttribute("style", "width: 100%; padding: 0px;"); tbl2.appendChild(tr2); var c21 = document.createElement('td'); c21.setAttribute("style", "width: 60%; padding: 0px;"); var c22 = document.createElement('td'); c22.setAttribute("style", "width: 40%; padding: 0px;"); tr2.appendChild(c21); tr2.appendChild(c22); var fn = cli[i].getElementsByClassName("fn")[0]; c21.appendChild(fn); var cm = cli[i].getElementsByClassName("comment-meta")[0]; c21.appendChild(cm); var div2 = document.createElement('div'); c22.appendChild(div2); div2.setAttribute("style", "text-align:right"); div2.setAttribute("class", "comment-notes"); var author = getAuthor(cli[i].firstChild); // console.log(author); if ( gh['avt.' + author] !== undefined ) { var img = cli[i].getElementsByClassName('avatar')[0]; img.src = gh['avt.' + author]; } } } //----------------------------------------------------------------------------// function addRightSideDiv(e,className) { var div = document.createElement('div'); div.setAttribute("style", "width: 100%; display: inline-block;"); e.parentNode.insertBefore(div,e); var tbl = document.createElement('table'); div.appendChild(tbl); var tr = document.createElement('tr'); tr.setAttribute("style", "width: 100%; padding: 0px;"); tbl.appendChild(tr); var c1 = document.createElement('td'); c1.setAttribute("style", "width: 50%; padding: 0px;"); tr.appendChild(c1); c1.appendChild(e); var c2 = document.createElement('td'); tr.appendChild(c2); c2.setAttribute("style", "width: 50%; padding: 0px; text-align: right;"); var div = document.createElement('div'); c2.appendChild(div); div.setAttribute("style", "width: 100%; text-align:right"); div.setAttribute("class", className); } //////////////////////////////////////////////////////////////////////////////// function addQuoteButtons() { var cb = document.getElementsByClassName('comment-body'); for ( var i = 0; i < cb.length; i++ ) { (function (i) { var e = cb[i].getElementsByClassName('fn')[0]; var img = document.createElement('img'); img.setAttribute("src", gh["img.quotes.png"]); var a = document.createElement('a'); a.appendChild(img); e.parentNode.insertBefore(a,e.nextSibling); var cid = cb[i].id; // console.log(cid); a.addEventListener("click", function() {getQuote(cid);} , false); })(i); } } //////////////////////////////////////////////////////////////////////////////// function getQuote(cid) { var comment = document.getElementById("cccp-comment"); if (! comment ) {return;} // console.log(cid); var cmt = document.getElementById(cid); var ctn = cmt.getElementsByClassName("comment-content")[0]; var author = getAuthor(cmt); var link = cmt.getElementsByClassName("commentmetadata")[0]; comment.value += '<p><b>'+ author + '</b> @ ' + link.innerHTML.replace(/^\s*/,'').replace(/\s*$/,'').replace(/<br>/g,'').replace(/\n/g,'').replace(/[\s]+/g,' ') + '</p>\n'; comment.value += '['; var quote = ctn.innerHTML.replace(/^[\s]*/,'').replace(/[\s]*$/,''); comment.value += quote; comment.value += ']\n'; } //////////////////////////////////////////////////////////////////////////////// // To enable easy quotes we need to hide the comment text box and submit button // And then create clones of these function cloneTextBox() { var comment = document.getElementById("comment"); if (! comment ) {return;} var ctbx = comment.cloneNode(true); ctbx.id = 'cccp-comment'; comment.setAttribute("style","display: none"); comment.parentNode.insertBefore(ctbx, comment); }