rendered paste body// ==UserScript==// @name Whirlpool - Edit In Place// @namespace forums.whirlpool.net.au// @version 0.1// @description Edit your posts in threads without needing to go to the edit page// @include http://forums.whirlpool.net.au/forum-replies.cfm*// ==/UserScript==if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ $ = unsafeWindow.jQuery;}var ajaxloaderimgsrc = "data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D"var editLink = $(".bodypost a[@href^='forum-reply.cfm?e']");editLink.parent().after('<div style="margin: 5px;"><a class="eip" href="#">(edit in place)</a></div>');var xDate = new Date(); var gF = xDate.getFullYear();var gM = xDate.getMonth()+1;//Stupid daylight savingsvar getTtex = $('.nav_item_time').text();var getHr = getTtex.slice(getTtex.indexOf(':')-2, getTtex.indexOf(':'));var dArr = [''+gM+'', ''+xDate.getDate()+'', ''+xDate.getMinutes()+'', ''+xDate.getSeconds()+''];for(var i=0;i<dArr.length;i++){ if(dArr[i].length == 1){ dArr[i] = '0'+dArr[i]; }}var currTime = gF+"-"+dArr[0]+"-"+dArr[1]+"+"+getHr+"%3A"+dArr[2]+"%3A"+dArr[3];var bt, saveOriginalHTML;$('.eip').bind("click", function(){ var clicker = $(this); if(clicker.text() == '(cancel edit)'){ clicker.text('(edit in place)'); $('#opInputs, #options, #savEdit, #eipTexta').remove(); bt.html(saveOriginalHTML); } else{ var btextHtml; bt = clicker.parent().parent().prev(); saveOriginalHTML = bt.html(); clicker.text('(cancel edit)'); bt.children('p').each(function(){ //it's easier to change them to unique tags rather than have to deal with nested closing div tags with regex var iGottaP = $(this); if (iGottaP.attr('class') == 'wcauth'){ iGottaP.children('a').each(function(){ var replyNum = $(this).attr('onclick').slice($(this).attr('onclick').indexOf('(')+1, $(this).attr('onclick').indexOf(')')); $(this).after('<wcauth>'+replyNum+$(this).text()+'</wcauth>'); $(this).remove(); }); } if(iGottaP[0].getElementsByTagName('a')){ var stupidjqObjectCrapfucker = iGottaP[0].getElementsByTagName('a'); for(var i=0;i<stupidjqObjectCrapfucker.length;i++){ var hr = $(stupidjqObjectCrapfucker[i]).attr('href'); var tx = $(stupidjqObjectCrapfucker[i]).text(); if($(stupidjqObjectCrapfucker[i]).attr('class') == 'wiki'){ $(stupidjqObjectCrapfucker[i]).after('[['+tx+']]'); } else if( (tx.substr(0, 3) == "www") || (tx.substr(0, 7) == "http://") || (hr.indexOf('whirlpool') > -1) ){ $(stupidjqObjectCrapfucker[i]).after(tx); } else if(hr.indexOf('http://') < 0){ $(stupidjqObjectCrapfucker[i]).after('http://forums.whirlpool.net.au/'+tx); } else{ $(stupidjqObjectCrapfucker[i]).after('<a href="'+hr+'">'+tx+'</a>'); } $(stupidjqObjectCrapfucker[i]).remove(); } } if (iGottaP.children('span')){ iGottaP.children('span').each(function(){ var spanClass = $(this).attr('class'); $(this).after('<'+spanClass+'>'+$(this).html()+'</'+spanClass+'>'); $(this).remove(); }); } (btextHtml != undefined)? btextHtml += $(this).html(): btextHtml = $(this).html(); }); function replaceText(status){ var reGinalds = [ "<wcrep2>:['", "</wcrep2>:']", '<wcrep2>:["', '</wcrep1>:"]\n', '<wcauth>:\n[+', "</wcauth>:+]\r", "<wcsml>:[(", "</wcsml>:)]", "<wcgrey>:[`", "</wcgrey>:`]", "<wcserif>:[~", "</wcserif>:~]", " :", "<br>:\n", "<br/>:\n", "<tt>:[#", "</tt>:#]", "<b>:[*", "</b>:*]", "<i>:[/", "</i>:/]", "<sup>:[^", "</sup>:^]", "<sub>:[\\", "</sub>:\\]", "<strike>:[-", "</strike>:-]", ]; var postedReGinalds = [ "<span class=\"wcrep2\">:['", "</span>:']", '<span class="wcrep2">:["', '</span>:"]\n', '<p><span class="wcauth">:\n[+', '</span></p>:+]\r', '<span class="wcsml">:[(', '</span>:)]', '<span class="wcgrey">:[`', '</span>:`]', '<span class="wcserif">:[~', '</span>:~]', " :", "<br>:\n", "<br/>:\n", "<tt>:[#", "</tt>:#]", "<b>:[*", "</b>:*]", "<i>:[/", "</i>:/]", "<sup>:[^", "</sup>:^]", "<sub>:[\\", "</sub>:\\]", "<strike>:[-", "</strike>:-]", ]; if(status == "editing"){ for(var rt=0;rt<reGinalds.length;rt++){ btextHtml = btextHtml.replace(RegExp(reGinalds[rt].split(':')[0], 'gi'), reGinalds[rt].split(':')[1]); } } else if(status == "posted"){ console.log('here'+status); for(var rt=0;rt<postedReGinalds.length;rt++){ console.log('postedReGinalds[rt]'+postedReGinalds[rt]); console.log('postedReGinalds[rt].split(":")[1]'+postedReGinalds[rt].split(":")[1]); console.log('postedReGinalds[rt].split(":")[0]'+postedReGinalds[rt].split(":")[0]); textArtex = textArtex.replace(RegExp(postedReGinalds[rt].split(':')[1], 'gi'), postedReGinalds[rt].split(':')[0]); console.log('textArtex'+textArtex); } } } replaceText("editing"); var bth = bt.height()-8; var btw = bt.width()-25; bt.html('<textarea id="eipTexta" style="background:#EEEEEE url(/img/forum/reply-eeeeee.gif) repeat-x scroll center bottom;'+ 'border:1px solid #BBBBBB;width:'+btw+'px;height:'+bth+'px;">'+btextHtml+'</textarea>'); var tArea = $('#eipTexta'); tArea.focus(); clicker.parent().after('<div id="opInputs" style="position: absolute; display:none; margin:-163px 0 0 -125px;text-align: left; width: 150px; '+ 'background-color: orange; height: 180px;border:2px solid">'+ '<p><input type="checkbox" checked="checked" style="cursor: pointer;" value="true" id="modewc" name="modewc"/>'+ '<label style="cursor: pointer;font-size:10px;" for="modewc"> Use WhirlCode</label></p>'+ '<p><input type="checkbox" checked="checked" style="cursor: pointer;" value="true" id="modeht" name="modeht"/>'+ '<label style="cursor: pointer;font-size:10px;" for="modeht"> Allow HTML</label></p>'+ '<p><input type="checkbox" checked="checked" style="cursor: pointer;" value="true" id="modebr" name="modebr"/>'+ '<label style="cursor: pointer;font-size:10px;" for="modebr"> Auto <BR> </label></p>'+ '<p><input type="checkbox" style="cursor: pointer;" value="true" id="modemo" name="modemo"/>'+ '<label checked="checked" style="cursor: pointer;font-size:10px;" for="modemo"> Preserve spacing</label></p>'+ '<p><input checked="checked" type="checkbox" style="cursor: pointer;" value="true" id="modewl" name="modewl"/>'+ '<label style="cursor: pointer;font-size:10px;" for="modewl"> Make links clickable</label></p>'+ '</div>'+ '<button id="options" type="button">Options</button>'+ '<input type="submit" value="Save Edit" style="" id="savEdit" name="post"/>'); $('#options').bind("mouseup", function() { ($('#opInputs').css('display') == 'none')? $('#opInputs').css('display', 'block'): $('#opInputs').css('display', 'none'); }); $('#savEdit').bind("mouseup", function() { var loaderHeight = bth+5; var loaderWidth = btw+5; if($('#loader')[0] != undefined){ $('#loader').html('<img src="'+ajaxloaderimgsrc+'" style="position: absolute; z-index: 5; top: 40%; left: 45%;"/>'); } else{ bt.prepend('<div id="loader" style="position: absolute; z-index: 5; background:#EEEEEE url(/img/forum/reply-eeeeee.gif) repeat-x scroll center bottom; height: '+loaderHeight+'px; width: '+loaderWidth+'px;"><img src="'+ajaxloaderimgsrc+'" style="position: absolute; z-index: 5; top: 40%; left: 45%;"/></div>'); } var textOptions = "&"; $('#opInputs :checkbox').each(function(){ if($(this).attr('checked')){ if(textOptions != "&"){ textOptions+= ''+$(this).attr('name')+'=true&'; } else{ textOptions = ''+$(this).attr('name')+'=true&'; } } }); function doEscape(s) { return escape(s).replace(/\+/gm, '%2B').replace(/ /gm, '+'); } var textArtex = $('#eipTexta').val(); $.ajax({ type: "POST", url: clicker.parent().prev().children('a:last')[0].href, data: "post2=post&"+ "form=too+right&"+ "timestart=%7Bts+%27"+currTime+"%27%7D&"+ "body="+doEscape(textArtex)+"&"+textOptions, success: function(msg){ if( (msg.indexOf('Post edited. Returning to end of thread...') > -1) || (msg.indexOf('You pressed submit more than once') > -1)){ replaceText("posted"); $('#loader').html('<p>Post edited.</p>'); $('#savEdit, #options').hide(); clicker.text('(edit in place)'); console.log(textArtex); bt.html('<p>'+textArtex+'</p>'); } else{ $('#loader').html('<p>Server Timeout. Click the "Save Edit" button to try again.</p>'); } } }); return false; }); } return false; });