User:Quarl/userscript.js

// User:Quarl/userscript.js - utilities to help develop user scripts and // style sheets

// - adds "raw" tab to user script pages // - adds "refresh" tab to user script pages (refresh the raw script) // - automatically refreshes the raw version when you save a user script page

// depends: wikipage.js, cookie.js, wikitabs.js

// quarl 2006-01-10 initial version

var userscript = new Object;

userscript.rawUrl = function(wp) { // note: wp.qurl is parsed from source and is not the same as blindly // escaping the input! String has to exactly match what the user is   // using, e.g. "User:Quarl/script", not "User%3AQuarl/script"!

if (wp.page.match(/[.]js$/)) { return wp.qurl + '&action=raw&ctype=text/javascript&dontcountme=s'; } else if (wp.page.match(/\/monobook[.]css$/)) { return wp.qurl + '&action=raw&ctype=text/css'; } else if (wp.page.match(/[.]css$/)) { return wp.qurl + '&action=raw&ctype=text/css&dontcountme=s'; } else { return null; } }

userscript._load = function { var url = userscript.rawUrl(wikiPage); if (!url) return;

addTab(url, 'Raw', 'ca-raw', "Show raw version of user script"); addTab('javascript:userscript.doRefresh', 'Refresh', 'ca-refresh', "Force browser to refresh the raw version of this script");

userscript.refreshIfChanged; }

// Check if the current script has changed since last time we looked at it; // if so, refresh. Use a cookie to check. userscript.refreshIfChanged = function { // if we're not looking at current revision, don't do anything. if (permalinkP) return;

// we don't have the oldid for some reason (e.g. we're currently editing) if (!pageOldid) return;

//var cookie_name = 'usl_oldid_' + wikiPage.pageQuoted; var cookie_name = 'usl_oldid';

// by using a different cookie-path we avoid sending tons of cookies for every page, // and we don't have to uniquify the cookie name. Note that if unspecified, the path // is equivalent to "/wiki/User:Quarl/" instead of "/wiki/User:Quarl/foo.js", which is   // just as bad as "/" var path = url_getpath(wikiPage.url); // only bother with canonical URL last_oldid = readCookie(cookie_name); if (last_oldid != pageOldid) { // first time we're looking at the page, or the page has changed. refresh. userscript.doRefresh; }   createCookie(cookie_name, pageOldid, 7, path); }

userscript.doRefresh = function { userscript._forceRefresh(userscript.rawUrl(wikiPage)); }

userscript._forceRefresh = function(url) { // We can't do frm.location.reload right now because frm.location will still be "about:blank", but if we complete this event and start a new one, it works.

//frm.location.replace(url); //frm.location.href = url; document.getElementById('userscript_refresher').src = url; setTimeout(userscript._forceRefresh_1, 0); }

userscript._forceRefresh_1 = function { var frm = window.frames['userscript_refresher']; frm.location.reload;

// status document.getElementById('ca-refresh').innerHTML = 'Refreshed'; }

$(userscript._load);

// hidden iframe if (false) // debug document.write(' '); else document.write(' ');