User:Cacycle/wikEd dev.js: Difference between revisions

Content deleted Content added
0.9.93b localStorage detection fix
0.9.94 testing
Line 1:
// <source lang="JavaScript">
// <pre><nowiki>
 
if (typeof(wikEd) == 'undefined') { window.wikEd = {}; }
 
// version info
wikEd.programVersion = '0.9.93b94';
wikEd.programDate = 'SeptemberOctober 2603, 2010';
 
/*
Line 1,639:
if (typeof(wikEd.loadingTranslation) == 'undefined') { wikEd.loadingTranslation = false; }
if (typeof(wikEd.webStorage) == 'undefined') { wikEd.webStorage = false; }
if (typeof(wikEd.pageOrigin) == 'undefined') { wikEd.pageOrigin = ''; }
 
// customization
Line 1,652 ⟶ 1,651:
 
// global dom elements, also defined in wikEdDiff.js
if (typeof(wikEd.pageOrigin) == 'undefined') { wikEd.pageOrigin = ''; }
if (typeof(wikEd.head) == 'undefined') { wikEd.head = null; }
 
Line 1,723:
wikEd.Startup = function() {
 
// redirect WED shortcut to wikEd.Debug(objectName, object, popup)
// check if this has already been run
window.WED = wikEd.Debug;
if (wikEd.startup == true) {
 
// MediaWiki pages always have their title set, filter out Greasemonkey running on created iframes
if (document.title == '') {
return;
}
wikEd.startup = true;
 
// check if wikEd has already started up
// redirect WED shortcut to wikEd.Debug(objectName, object, popup)
if (document.getElementsByName('wikEdStartupFlag')[0] != null) {
window.WED = wikEd.Debug;
return;
}
 
// define current window head
wikEd.head = document.getElementsByTagName('head')[0];
 
// set startup flag
var flag = document.createElement('meta');
flag.setAttribute('name', 'wikEdStartupFlag');
wikEd.head.appendChild(flag);
// get site of origin (window.___location.href is about:blank if Firefox during page load)
wikEd.pageOrigin = wikEd.head.baseURI.replace(/^((https?|file):\/\/[^\/?#]*)?.*$/, '$1');
 
// check browser and version
Line 1,824 ⟶ 1,839:
wikEd.greasemonkey = true;
}
 
// define head
wikEd.head = document.getElementsByTagName('head')[0];
// get site of origin (window.___location.href is about:blank if Firefox during page load)
var url = window.___location.href;
if (url == 'about:blank') {
url = wikEd.head.baseURI
}
wikEd.pageOrigin = url.replace(/^((https?|file):\/\/[^\/?#]*)?.*$/, '$1');
 
// parse global-context (MediaWiki) variables into hash (for Greasemonkey)
wikEd.AddEventListener(window, 'message', wikEd.GetGlobalsReceiver, false);
var globalNames = ['skin', 'wgServer', 'wgTitle', 'wgCanonicalNamespace', 'wgArticlePath', 'wgScript', 'wgScriptPath', 'wgUserName', 'wgCurRevisionId', 'wgContentLanguage', 'wgUserLanguage', 'wgEnableAPI', 'wgPageName', 'wgNamespaceIds', 'wgFormattedNamespaces', 'wgUseAutomaticEditSummaries', 'wikEdTypeofLocalStorage'];
if (wikEd.greasemonkey == true) {
Line 1,862 ⟶ 1,866:
}
 
// set listener for GetGlobals messaging
wikEd.AddEventListener(window, 'message', wikEd.GetGlobalsReceiver, false);
// parse globals (asynchronous)
wikEd.GetGlobals(globalNames, gotGlobalsHook);
Line 1,932 ⟶ 1,939:
wikEd.RemoveEventListener(window, 'load', wikEd.Setup, false);
 
// check if thiswikEd has already beenset run, either as a wiki or a Greasemonkey user scriptup
if (document.getElementByIdgetElementsByName('wikEdSetupFlag')[0] != null) {
return;
}
 
// set setup flag
var flag = document.createElement('meta');
flag.setAttribute('name', 'wikEdSetupFlag');
wikEd.head.appendChild(flag);
 
// import customization (try later again after page load for user/skin.js)
Line 1,993 ⟶ 2,005:
}
}
 
// set already run flag
var flag = document.createElement('span');
flag.id = 'wikEdSetupFlag';
flag.className = 'wikEdSetupFlag';
flag.style.display = 'none';
flag.style.visibility = 'hidden';
document.body.appendChild(flag);
 
// detect MediaWiki page and its skin
Line 2,135 ⟶ 2,139:
}
}
 
// init syntax highlighting regExp object
wikEd.HighlightSyntaxInit();
 
// check if disabled
Line 2,142 ⟶ 2,149:
wikEd.SetLogo();
return;
}
 
// get current page name
wikEd.pageName = wikEd.wikiGlobals.wgPageName;
 
// get current namespace
if (wikEd.pageName != null) {
var colonPos = wikEd.pageName.indexOf(':');
if (colonPos == -1) {
wikEd.pageNamespace = '';
}
else {
wikEd.pageNamespace = wikEd.pageName.substr(0, colonPos);
}
}
 
Line 2,172 ⟶ 2,165:
return;
}
 
// init syntax highlighting regExp object
wikEd.HighlightSyntaxInit();
 
// continue setup
Line 2,192 ⟶ 2,182:
if (wikEd.turnedOn == true) {
return;
}
 
// get current page name
wikEd.pageName = wikEd.wikiGlobals.wgPageName;
 
// get current namespace
if (wikEd.pageName != null) {
var colonPos = wikEd.pageName.indexOf(':');
if (colonPos == -1) {
wikEd.pageNamespace = '';
}
else {
wikEd.pageNamespace = wikEd.pageName.substr(0, colonPos);
}
}
 
Line 2,783 ⟶ 2,787:
wikEd.wikiEditorBar.style.zIndex = '5';
}
// get edit options
wikEd.editOptions = wikEd.GetElementsByClassName('editCheckboxes', 'div', wikEd.editForm)[0];
 
// old MediaWiki versions
var wpSummary = document.getElementsByName('wpSummary');
if (wpSummarywikEd.lengtheditOptions >== 0null) {
wikEd.editOptionsvar wpSummary = document.getElementsByName('wpSummary')[0].parentNode;
if (wpSummary != null) {
wikEd.editOptions.className = 'wikEdEditOptions';
wikEd.editOptions = wpSummary.parentNode;
wikEd.editOptions.className = 'wikEdEditOptions';
}
}
 
Line 2,811 ⟶ 2,821:
}
 
// add submit buttons to submit wrapper
if (wikEd.rearrange == true) {
var wpEditButtons;
Line 2,873 ⟶ 2,883:
wikEd.editOptionsWrapper.appendChild(wikEd.editOptions);
 
// remove linebreak before minor edit checkbox
var node = wikEd.editOptions.firstChild;
while (node != null) {
Line 14,904 ⟶ 14,914:
 
//
// wikEd.GetGlobals: copyparse global context variables into Greasemonkey context (code copied to wikEdDiff.js)
// uses Greasemonkey postMessage, head script, and JSON encoding for Greasemonkey global to GM context access
 
wikEd.GetGlobals = function(names, gotGlobalsHook) {
 
if (gotGlobalsHook != null) {
if ( (typeof(window.postMessage) == 'undefined') || (typeof(JSON) != 'object') ) {
wikEd.gotGlobalsHook.push(gotGlobalsHook);
}
 
// code already running in global context
if (wikEd.greasemonkey != true) {
var globalScopeCode = '';
for (var i = 0; i < names.length; i ++) {
globalScopeCode += ''
+ 'if (typeof(' + names[i] + ') != \'undefined\') {'
+ ' wikEd.wikiGlobals.' + names[i] + ' = ' + names[i] + ';'
+ '}';
}
if (gotGlobalsHook != null) {
globalScopeCode += 'wikEd.ExecuteHook(wikEd.gotGlobalsHook[' + (wikEd.gotGlobalsHook.length - 1) + '], true);';
}
eval(globalScopeCode);
return;
}
 
// prepare code to be executed in global context for Greasemonkey
if ( (typeof(window.postMessage) == 'undefined') || (typeof(JSON) != 'object') ) {
return;
}
var globalScopeCode = 'var globalObj = {};';
if (gotGlobalsHook != null) {
Line 15,880 ⟶ 15,909:
wikEd.Startup();
 
// </nowiki></presource>