All pastes #768102 Raw Edit

Unnamed

public javascript v1 · immutable
·published 2007-11-10 09:04 UTC
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,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%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 &lt;BR&gt; </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; 	});