// ==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);
}