Content deleted Content added
0.9.94 (October 03, 2010) |
wikEd 0.9.96 |
||
Line 4:
// version info
wikEd.programVersion = '0.9.
wikEd.programDate = '
/*
Line 15:
on-page Show preview and Show changes, and advanced search and replace functions.
wikEd works under all web browsers except Internet Explorer and Opera.
The code has to be saved as UTF-8 in your editor to preserve Unicode characters like ♥ (heart symbol)
Greasemonkey metadata:
Line 67:
'wikEdLogo disabled alt': '(wikEd)',
'wikEdLogo disabled title': 'Disabled - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to enable',
'wikEdLogo testVersion alt': 'wikEd_dev',
'wikEdLogo testVersion title': 'wikEd_dev (unstable test version) {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable',
// top jumper
Line 317 ⟶ 319:
// highlighting popups
'
'
'
'
'
'
'
'
'
'
'
'
// highlighting
Line 458 ⟶ 460:
'tableMode': 'e/ee/WikEd_table_edit.png',
'tableBG': '8/8a/WikEd_unknown.png',
'testVersion': '3/3e/WikEd_error.png',
'textify': 'c/cd/WikEd_textify.png',
'thinSpace': '5/56/WikEd_thin_space.png',
Line 791 ⟶ 794:
'input#wpDiff, input#wpPreview': 'margin-right: 0;', // monobook fix
'.wikEdButtonDummy': 'vertical-align: text-top; margin: 1px 2px; padding: 1px; background: #d4d0cc;',
// preview box
'.wikEdPreviewBoxOuter': 'clear: both; margin: 0; border-width: 1px; border-style: solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080;',
Line 872 ⟶ 875:
// format top
1: ['wikEdUndo', 'wikEdButtonInactive', wikEd.config.text['wikEdUndo title'], wikEd.config.image
2: ['wikEdRedo', 'wikEdButtonInactive', wikEd.config.text['wikEdRedo title'], wikEd.config.image
3: ['wikEdBold', 'wikEdButton', wikEd.config.text['wikEdBold title'], wikEd.config.image
4: ['wikEdItalic', 'wikEdButton', wikEd.config.text['wikEdItalic title'], wikEd.config.image
5: ['wikEdUnderline', 'wikEdButton', wikEd.config.text['wikEdUnderline title'], wikEd.config.image
6: ['wikEdStrikethrough', 'wikEdButton', wikEd.config.text['wikEdStrikethrough title'], wikEd.config.image
7: ['wikEdNowiki', 'wikEdButton', wikEd.config.text['wikEdNowiki title'], wikEd.config.image
8: ['wikEdSuperscript', 'wikEdButton', wikEd.config.text['wikEdSuperscript title'], wikEd.config.image
9: ['wikEdSubscript', 'wikEdButton', wikEd.config.text['wikEdSubscript title'], wikEd.config.image
10: ['wikEdRef', 'wikEdButton', wikEd.config.text['wikEdRef title'], wikEd.config.image
12: ['wikEdCase', 'wikEdButton', wikEd.config.text['wikEdCase title'], wikEd.config.image
80: ['wikEdSort', 'wikEdButton', wikEd.config.text['wikEdSort title'], wikEd.config.image
25: ['wikEdRedirect', 'wikEdButton', wikEd.config.text['wikEdRedirect title'], wikEd.config.image
13: ['wikEdUndoAll', 'wikEdButton', wikEd.config.text['wikEdUndoAll title'], wikEd.config.image
14: ['wikEdRedoAll', 'wikEdButtonInactive', wikEd.config.text['wikEdRedoAll title'], wikEd.config.image
// format bottom
15: ['wikEdWikiLink', 'wikEdButton', wikEd.config.text['wikEdWikiLink title'], wikEd.config.image
16: ['wikEdWebLink', 'wikEdButton', wikEd.config.text['wikEdWebLink title'], wikEd.config.image
17: ['wikEdHeading', 'wikEdButton', wikEd.config.text['wikEdHeading title'], wikEd.config.image
19: ['wikEdBulletList', 'wikEdButton', wikEd.config.text['wikEdBulletList title'], wikEd.config.image
20: ['wikEdNumberList', 'wikEdButton', wikEd.config.text['wikEdNumberList title'], wikEd.config.image
21: ['wikEdIndentList', 'wikEdButton', wikEd.config.text['wikEdIndentList title'], wikEd.config.image
22: ['wikEdDefinitionList', 'wikEdButton', wikEd.config.text['wikEdDefinitionList title'], wikEd.config.image
23: ['wikEdImage', 'wikEdButton', wikEd.config.text['wikEdImage title'], wikEd.config.image
24: ['wikEdTable', 'wikEdButton', wikEd.config.text['wikEdTable title'], wikEd.config.image
11: ['wikEdReferences', 'wikEdButton', wikEd.config.text['wikEdReferences title'], wikEd.config.image
// wikify, textify
26: ['wikEdWikify', 'wikEdButton', wikEd.config.text['wikEdWikify title'], wikEd.config.image
27: ['wikEdTextify', 'wikEdButton', wikEd.config.text['wikEdTextify title'], wikEd.config.image
// control top
77: ['wikEdRefHide', 'wikEdButtonUnchecked', wikEd.config.text['wikEdRefHide title'], wikEd.config.image
29: ['wikEdTextZoom', 'wikEdButton', wikEd.config.text['wikEdTextZoom title'], wikEd.config.image
30: ['wikEdClearHistory', 'wikEdButton', wikEd.config.text['wikEdClearHistory title'], wikEd.config.image
31: ['wikEdScrollToPreview', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview title'], wikEd.config.image
32: ['wikEdScrollToEdit', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit title'], wikEd.config.image
// control bottom
33: ['wikEdUseWikEd', 'wikEdButtonChecked', wikEd.config.text['wikEdUseWikEd title'], wikEd.config.image
34: ['wikEdHighlightSyntax', 'wikEdButtonUnchecked', wikEd.config.text['wikEdHighlightSyntax title'], wikEd.config.image
35: ['wikEdSource', 'wikEdButton', wikEd.config.text['wikEdSource title'], wikEd.config.image
75: ['wikEdCloseToolbar', 'wikEdButtonUnchecked', wikEd.config.text['wikEdCloseToolbar title'], wikEd.config.image
36: ['wikEdUsing', 'wikEdButtonUnchecked', wikEd.config.text['wikEdUsing title'], wikEd.config.image
37: ['wikEdFullScreen', 'wikEdButtonUnchecked', wikEd.config.text['wikEdFullScreen title'], wikEd.config.image
79: ['wikEdTableMode', 'wikEdButtonUnchecked', wikEd.config.text['wikEdTableMode title'], wikEd.config.image
// find top
39: ['wikEdFindAll', 'wikEdButton', wikEd.config.text['wikEdFindAll title'], wikEd.config.image
40: ['wikEdFindPrev', 'wikEdButton', wikEd.config.text['wikEdFindPrev title'], wikEd.config.image
41: ['wikEdFindNext', 'wikEdButton', wikEd.config.text['wikEdFindNext title'], wikEd.config.image
43: ['wikEdJumpPrev', 'wikEdButton', wikEd.config.text['wikEdJumpPrev title'], wikEd.config.image
44: ['wikEdJumpNext', 'wikEdButton', wikEd.config.text['wikEdJumpNext title'], wikEd.config.image
// find bottom
46: ['wikEdReplaceAll', 'wikEdButton', wikEd.config.text['wikEdReplaceAll title'], wikEd.config.image
47: ['wikEdReplacePrev', 'wikEdButton', wikEd.config.text['wikEdReplacePrev title'], wikEd.config.image
48: ['wikEdReplaceNext', 'wikEdButton', wikEd.config.text['wikEdReplaceNext title'], wikEd.config.image
49: ['wikEdCaseSensitive', 'wikEdButtonUnchecked', wikEd.config.text['wikEdCaseSensitive title'], wikEd.config.image
50: ['wikEdRegExp', 'wikEdButtonUnchecked', wikEd.config.text['wikEdRegExp title'], wikEd.config.image
51: ['wikEdFindAhead', 'wikEdButtonUnchecked', wikEd.config.text['wikEdFindAhead title'], wikEd.config.image
// fix top
52: ['wikEdFixBasic', 'wikEdButton', wikEd.config.text['wikEdFixBasic title'], wikEd.config.image
53: ['wikEdFixHtml', 'wikEdButton', wikEd.config.text['wikEdFixHtml title'], wikEd.config.image
54: ['wikEdFixCaps', 'wikEdButton', wikEd.config.text['wikEdFixCaps title'], wikEd.config.image
55: ['wikEdFixUnicode', 'wikEdButton', wikEd.config.text['wikEdFixUnicode title'], wikEd.config.image
81: ['wikEdFixRedirect', 'wikEdButton', wikEd.config.text['wikEdFixRedirect title'], wikEd.config.image
56: ['wikEdFixAll', 'wikEdButton', wikEd.config.text['wikEdFixAll title'], wikEd.config.image
57: ['wikEdFixRegExTypo', 'wikEdButton', wikEd.config.text['wikEdFixRegExTypo title'], wikEd.config.image
// fix bottom
58: ['wikEdFixDashes', 'wikEdButton', wikEd.config.text['wikEdFixDashes title'], wikEd.config.image
59: ['wikEdFixPunct', 'wikEdButton', wikEd.config.text['wikEdFixPunct title'], wikEd.config.image
60: ['wikEdFixMath', 'wikEdButton', wikEd.config.text['wikEdFixMath title'], wikEd.config.image
61: ['wikEdFixChem', 'wikEdButton', wikEd.config.text['wikEdFixChem title'], wikEd.config.image
62: ['wikEdFixUnits', 'wikEdButton', wikEd.config.text['wikEdFixUnits title'], wikEd.config.image
// preview top
65: ['wikEdClose', 'wikEdButton', wikEd.config.text['wikEdClose title'], wikEd.config.image
66: ['wikEdScrollToPreview2', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview2 title'], wikEd.config.image
67: ['wikEdScrollToEdit2', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit2 title'], wikEd.config.image
// preview bottom
70: ['wikEdClose2', 'wikEdButton', wikEd.config.text['wikEdClose2 title'], wikEd.config.image
71: ['wikEdScrollToPreview3', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview3 title'], wikEd.config.image
72: ['wikEdScrollToEdit3', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit3 title'], wikEd.config.image
// jump
78: ['wikEdDiff', 'wikEdButtonUnchecked', wikEd.config.text['wikEdDiff title'], wikEd.config.image
74: ['wikEdScrollToEdit4', 'wikEdButtonSolo', wikEd.config.text['wikEdScrollToEdit4 title'], wikEd.config.image
// dummy (empty placeholder)
76: ['wikEdDummy', 'wikEdButtonDummy', '', wikEd.config.image
// wikEd.InitButton: define built-in buttons (id, class, popup title, image src, width, height, alt text, click handler code were obj is the button element)
82: ['wikEdLocalPreview', 'wikEdLocalPreview', wikEd.config.text['wikEdLocalPreview title'], wikEd.config.image.preview, '16', '16', wikEd.config.text['wikEdLocalPreviewImg alt'], 'wikEd.Button(obj, objId);' ],
83: ['wikEdLocalDiff', 'wikEdLocalDiff', wikEd.config.text['wikEdLocalDiff title'], wikEd.config.image.diff, '16', '16', wikEd.config.text['wikEdLocalDiffImg alt'], 'wikEd.Button(obj, objId);' ]
});
};
Line 1,016 ⟶ 1,023:
// presets for combo input fields dropdown options, {wikEdUsing} appends a link to this script
if (typeof(wikEd.config.comboPresetOptions) == 'undefined') { wikEd.config.comboPresetOptions = {}; }
if (typeof(wikEd.config.comboPresetOptions
// text for summary link to this script
if (typeof(wikEd.config.summaryUsing) == 'undefined') { wikEd.config.summaryUsing = wikEd.config.text
// expiration time span for permanent cookies in seconds
Line 1,070 ⟶ 1,077:
// the wikEd help page link to be displayed after the editing help link, an empty string disables the link
if (typeof(wikEd.config.helpPageLink) == 'undefined') { wikEd.config.helpPageLink = wikEd.config.text
// enable external diff script
Line 1,211 ⟶ 1,218:
// file preview image size in pixels
if (typeof(wikEd.config.antiHighlightBleeding) == 'undefined') { wikEd.config.antiHighlightBleeding = true; }
// debug window maximal length in chars
Line 1,266 ⟶ 1,270:
// content language default, also used for wikEd UI localization
if (typeof(wikEd.config.languageDefault) == 'undefined') { wikEd.config
// load external translation
if (typeof(wikEd.config.loadTranslation) == 'undefined') { wikEd.config
// translation javascript URLs
Line 1,299 ⟶ 1,303:
'pt': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Mosca/wikEd_international_pt.js',
'ro': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Roamataa/wikEd_international_ro.js',
'ru': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:IGW/wikEd_international_ru.js',
'scn': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Meloscn/wikEd_international_scn.js',
'sk': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Helix84/wikEd_international_sk.js',
Line 1,304 ⟶ 1,309:
'es': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Axelei/wikEd_international_es.js',
'sv': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Where_next_Columbus?/wikEd_international_sv.js',
'tr': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Vito_Genovese/wikEd_international_tr.js',
'hsb': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Michalwiki/wikEd_international_hsb.js',
'vi': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Vinhtantran/wikEd_international_vi.js'
});
Line 1,345 ⟶ 1,350:
// custom skins
gumax: [ 'gumax-p-login', true, true, ['gumax-header', 'gumax-content-body'] ],
gumaxdd: [ 'gumax-p-login', true, true, ['gumax-header', 'gumax-content-body'] ],
// custom MediaWiki identifier
Line 1,370 ⟶ 1,376:
wikEd.watchlistEdit = false;
wikEd.debugOpen = false;
wikEd.pageNamespace = null;
Line 1,465 ⟶ 1,470:
wikEd.previewButton = null;
wikEd.lDiffButton = null;
wikEd.diffPreviewButton = null;
wikEd.summaryLabel = null;
Line 1,536 ⟶ 1,539:
wikEd.charHighlighting = null;
wikEd.charHighlightingStr = '';
wikEd.letters = '';
// linkification and hiding
Line 1,622 ⟶ 1,627:
if (typeof(wikEd.chrome) == 'undefined') { wikEd.chrome = false; }
if (typeof(wikEd.greasemonkey) == 'undefined') { wikEd.greasemonkey = false; }
if (typeof(wikEd.testVersion) == 'undefined') { wikEd.testVersion = false; }
if (typeof(wikEd.platform) == 'undefined') { wikEd.platform = null; }
Line 1,653 ⟶ 1,659:
if (typeof(wikEd.pageOrigin) == 'undefined') { wikEd.pageOrigin = ''; }
if (typeof(wikEd.head) == 'undefined') { wikEd.head = null; }
// also defined in wikEdDiff.js
if (typeof(wikEd.pageName) == 'undefined') { wikEd.pageName = null; }
Line 1,743 ⟶ 1,752:
flag.setAttribute('name', 'wikEdStartupFlag');
wikEd.head.appendChild(flag);
// get site of origin (window.___location.href is about:blank if Firefox during page load)
if (origin == null) {
origin = window.___location.toString();
}
wikEd.pageOrigin = origin.replace(/^((https?|file):\/\/[^\/?#]*)?.*$/, '$1');
// check browser and version
Line 1,868 ⟶ 1,881:
// set listener for GetGlobals messaging
wikEd.AddEventListener(window, 'message', wikEd.GetGlobalsReceiver, false);
// parse globals (asynchronous)
wikEd.GetGlobals(globalNames, gotGlobalsHook);
Line 1,981 ⟶ 1,994:
}
}
}
// detect developer version
if (wikEd.externalScripts['wikEd_dev.js'] == true) {
wikEd.testVersion = true;
}
Line 2,117 ⟶ 2,135:
if ( (wikEd.config.loadDiffScript == true) && (wikEd.externalScripts['diff.js'] == null) ) {
if (typeof(WDiffString) == 'undefined') {
var sep = '&';
if (wikEd.config.diffScriptSrc.indexOf('?') == -1) {
sep = '?';
}
wikEd.AppendScript(wikEd.config.diffScriptSrc + sep + wikEd.programVersion);
}
wikEd.externalScripts['diff.js'] = true;
Line 2,125 ⟶ 2,147:
if ( (wikEd.config.loadDiff == true) && (wikEd.externalScripts['wikEdDiff.js'] == null) ) {
if (typeof(wikEd.Diff) == 'undefined') {
var sep = '&';
if (wikEd.config.diffSrc.indexOf('?') == -1) {
sep = '?';
}
wikEd.AppendScript(wikEd.config.diffSrc + sep + wikEd.programVersion);
}
wikEd.externalScripts['wikEdDiff.js'] = true;
Line 2,134 ⟶ 2,160:
if ( (wikEd.config.loadIERange == true) && (wikEd.externalScripts['ierange.js'] == null) ) {
if (typeof(DOMUtils) == 'undefined') {
var sep = '&';
if (wikEd.config.IERangeSrc.indexOf('?') == -1) {
sep = '?';
}
wikEd.AppendScript(wikEd.config.IERangeSrc + sep + wikEd.programVersion);
}
wikEd.externalScripts['ierange.js'] = true;
Line 2,153 ⟶ 2,183:
// ___location search string function: put all used images and icons on an empty page
if (window.___location.search.match(/(\?|&)wikEd=iconPage\b/i) != null) {
var str = wikEd.config.text
for (var imageKey in wikEd.config.image) {
if (wikEd.config.image.hasOwnProperty(imageKey) == true) {
Line 2,182 ⟶ 2,212:
if (wikEd.turnedOn == true) {
return;
}
Line 2,380 ⟶ 2,396:
if ( (wikEd.GetAttribute(wikEd.textarea, 'readonly') != null) || (wikEd.saveButton == null) ) {
wikEd.readOnly = true;
}
}
// get missing wg variables from footer link, fails on /subpages (code copied to wikEdDiff.js)
if (wikEd.wikiGlobals.wgArticlePath == null) {
var printfooter = wikEd.GetElementsByClassName('printfooter', 'div')[0];
if (printfooter != null) {
var articleLink = printfooter.getElementsByTagName('a')[0];
if (articleLink != null) {
var regExpMatch = /^(https?:\/\/[^\/]*)(\/([^\/]*\/)*)([^\/]*)$/.exec(articleLink.href);
if (regExpMatch != null) {
wikEd.wikiGlobals.wgServer = regExpMatch[1];
wikEd.wikiGlobals.wgArticlePath = regExpMatch[1] + regExpMatch[2] + '$1';
wikEd.wikiGlobals.wgPageName = regExpMatch[4];
wikEd.wikiGlobals.wgTitle = decodeURIComponent( regExpMatch[4].replace(/_/g, ' ') );
}
}
}
}
// get missing wg variables from form action url
if (wikEd.wikiGlobals.wgScript == null) {
wikEd.wikiGlobals.wgScript = wikEd.editForm.action.replace(/^https?:\/\/[^\/]*|\?.*$/g, '');
wikEd.wikiGlobals.wgScriptPath = wikEd.wikiGlobals.wgScript.replace(/\/index.php/, '');
}
// 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,434 ⟶ 2,487:
if ( (wikEd.greasemonkey == false) && (wikEd.config.loadInstaView == true) && (wikEd.externalScripts['instaview.js'] == null) ) {
if (typeof(InstaView) == 'undefined') {
var sep = '&';
if (wikEd.config.instaViewSrc.indexOf('?') == -1) {
sep = '?';
}
wikEd.AppendScript(wikEd.config.instaViewSrc + sep + wikEd.programVersion);
}
wikEd.externalScripts['instaview.js'] = true;
Line 2,787 ⟶ 2,844:
wikEd.wikiEditorBar.style.zIndex = '5';
}
// get edit options
wikEd.editOptions = wikEd.GetElementsByClassName('editCheckboxes', 'div', wikEd.editForm)[0];
Line 2,821 ⟶ 2,878:
}
if (wikEd.rearrange == true) {
var wpEditButtons;
Line 3,011 ⟶ 3,068:
// form wrapper has been added against summary input submit defaulting to this button
if (wikEd.readOnly == false) {
wikEd.buttonBarFormat = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFormat);
wikEd.buttonBarTextify = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarTextify);
}
wikEd.buttonBarControl = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarControl);
if (wikEd.config.buttonBar
wikEd.buttonBarCustom1 = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom1);
}
wikEd.buttonBarFind = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFind);
if (wikEd.readOnly == false) {
wikEd.buttonBarFix = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFix);
}
if (wikEd.config.buttonBar
wikEd.buttonBarCustom2 = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom2);
}
Line 3,050 ⟶ 3,107:
// add preview box top bar to submit wrapper
wikEd.buttonBarPreview = wikEd.MakeButtonBar(wikEd.config.buttonBar
if ( (wikEd.rearrange == true) && (wikEd.submitWrapper != null) ) {
wikEd.submitWrapper.insertBefore(wikEd.buttonBarPreview, wikEd.submitWrapper.firstChild);
Line 3,066 ⟶ 3,123:
wikEd.previewBox.className = 'wikEdPreviewBox';
div.appendChild(wikEd.previewBox);
wikEd.buttonBarPreview2 = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikEd.localPrevWrapper.appendChild(wikEd.buttonBarPreview2);
}
Line 3,074 ⟶ 3,131:
if (wikiPreview != null) {
if (wikiPreview.firstChild != null) {
wikEd.buttonBarJump = wikEd.MakeButtonBar(wikEd.config.buttonBar
wikiPreview.insertBefore(wikEd.buttonBarJump, wikiPreview.firstChild);
}
Line 3,090 ⟶ 3,147:
// add local preview button next to submit button
previewSpan.innerHTML = wikEd.MakeButtonCode(82, 'button');
if (wikEd.previewButton != null) {
wikEd.previewButton.parentNode.insertBefore(
}
else if (wikEd.saveButton != null) {
wikEd.saveButton.parentNode.insertBefore(
}
// add local diff button next to submit button
if ( ( (wikEd.diffPreviewButton != null) || (wikEd.watchlistEdit == true) ) && (wikEd.readOnly == false) ) {
diffSpan.innerHTML = wikEd.MakeButtonCode(83, 'button');
if (wikEd.diffPreviewButton != null) {
wikEd.diffPreviewButton.parentNode.insertBefore(
}
else if (
}
else if (wikEd.previewButton != null) {
wikEd.previewButton.parentNode.insertBefore(
}
}
Line 3,184 ⟶ 3,220:
wikEd.clearSummaryImg = document.createElement('img');
wikEd.clearSummaryImg.id = 'wikEdClearSummaryImg';
wikEd.clearSummaryImg.src = wikEd.config.image
wikEd.clearSummaryImg.alt = 'Clear summary';
wikEd.clearSummary.appendChild(wikEd.clearSummaryImg);
Line 3,215 ⟶ 3,251:
// shorten submit button texts
if (wikEd.previewButton != null) {
wikEd.previewButton.value = wikEd.config.text
}
if (wikEd.diffPreviewButton != null) {
wikEd.diffPreviewButton.value = wikEd.config.text
}
// set up combo input boxes with history
wikEd.fieldHist ['find'] = [];
wikEd.savedName
wikEd.inputElement
wikEd.selectElement
wikEd.selectElement
wikEd.fieldHist ['replace'] = [];
wikEd.savedName
wikEd.inputElement
wikEd.selectElement
wikEd.selectElement
if (wikEd.summaryInputWrapper != null) {
wikEd.fieldHist ['summary'] = [];
wikEd.savedName
wikEd.inputElement
wikEd.selectElement
wikEd.selectElement
}
Line 3,391 ⟶ 3,427:
wikEd.AddEventListener(wikEd.previewButton, 'click', wikEd.PreviewButtonHandler, true);
wikEd.AddEventListener(wikEd.diffPreviewButton, 'click', wikEd.DiffPreviewButtonHandler, true);
// unload (leaving page) events
Line 3,428 ⟶ 3,462:
wikEd.AddEventListener(wikEd.summarySelect, 'focus', function() { wikEd.SetComboOptions('summary'); }, false);
wikEd.AddEventListener(wikEd.selectElement
wikEd.AddEventListener(wikEd.selectElement
wikEd.AddEventListener(wikEd.selectElement
wikEd.AddEventListener(wikEd.selectElement
// register the clear summary click handler
Line 3,494 ⟶ 3,528:
}
// hook wikEd into the enhanced new edit toolbar, not Greasemonkey compatible
if (typeof(jQuery) == 'function') {
jQuery('#wpTextbox1').bind('encapsulateSelection', function(e, before, inside, after) {
Line 3,503 ⟶ 3,537:
}
// update textarea before using UI LivePreview function, not Greasemonkey compatible
if ( (typeof(jQuery) == 'function') && (typeof(mw) == 'object') ) {
jQuery(mw).bind('LivePreviewPrepare', function(event) {
if (wikEd.useWikEd == true) {
wikEd.UpdateTextarea();
}
});
}
// override insertAtCursor function in wikia.com MediaWiki:Functions.js, not Greasemonkey compatible
if (typeof(insertAtCursor) == 'function') {
if (wikEd.InsertAtCursorOriginal == null) {
Line 3,519 ⟶ 3,562:
resizeGripImage.id = 'wikEdResizeGrip';
wikEd.AddEventListener(resizeGripImage, 'load', wikEd.ResizeGripLoadHandler, true);
resizeGripImage.src = wikEd.config.image
// remove accesskeys that are defined in wikEd from page elements
wikEd.deleteAccesskeys();
// run scheduled custom functions
Line 3,528 ⟶ 3,574:
// done with setup and turn-on
return;
};
//
// wikEd.deleteAccesskeys: remove accesskeys that are defined in wikEd from page elements
//
wikEd.deleteAccesskeys = function() {
var accesskeyTags = ['textarea', 'input', 'a'];
for (var i = 0; i < accesskeyTags.length; i ++) {
var accesskeyElements = document.getElementsByTagName(accesskeyTags[i]);
for (var j = 0; j < accesskeyElements.length; j ++) {
var attribute = wikEd.GetAttribute(accesskeyElements[j], 'accesskey');
if (attribute != null) {
if (wikEd.buttonKeyCode[ attribute.toUpperCase().charCodeAt(0) ] != null) {
accesskeyElements[j].setAttribute('accesskey', null);
}
}
}
}
return;
};
Line 3,617 ⟶ 3,685:
return;
};
//
Line 3,642 ⟶ 3,711:
// update Greasemonkey script by navigating to the script code page
if (wikEd.greasemonkey == true) {
var updatePopup = wikEd.config.text
updatePopup = updatePopup.replace(/\{updateURL\}/g, wikEd.config.autoUpdateUrl);
alert(updatePopup);
Line 3,668 ⟶ 3,737:
// make the ajax request
var sep = '&';
if (wikEd.config.regExTypoFixURL.indexOf('?') == -1) {
sep = '?';
}
wikEd.AjaxRequest('GET', wikEd.config.regExTypoFixURL + sep + wikEd.programVersion, null, 'text/plain', function(ajax) {
// get response
Line 3,674 ⟶ 3,747:
// parse regexp rules
var regExp =
while ( (regExpMatch = regExp.exec(rulesTxt)) != null) {
Line 3,743 ⟶ 3,816:
// Firefox < 3.0
if ( typeof(wikEd.inputElement
wikEd.inputElement
wikEd.selectElement
}
// Firefox >= 3.0
else {
wikEd.inputElement
wikEd.selectElement
}
wikEd.clearSummaryWidth = wikEd.clearSummary.offsetWidth;
Line 3,780 ⟶ 3,853:
wikEd.UnloadHandler = function(event) {
// update textarea if not already done in submit handlers
Line 3,907 ⟶ 3,974:
}
}
return;
};
Line 4,375 ⟶ 4,406:
return;
};
Line 4,681 ⟶ 4,712:
if (state == 'error') {
wikEd.logo.src = wikEd.config.image
wikEd.logo.alt = wikEd.config.text['wikEdLogo error alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo error title'];
}
else if (state == 'browser') {
wikEd.logo.src = wikEd.config.image
wikEd.logo.alt = wikEd.config.text['wikEdLogo browser alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo browser title'];
}
else if (state == 'incompatible') {
wikEd.logo.src = wikEd.config.image
wikEd.logo.alt = wikEd.config.text['wikEdLogo incompatible alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo incompatible title'];
Line 4,697 ⟶ 4,728:
else {
if (wikEd.disabled == true) {
wikEd.logo.src = wikEd.config.image
wikEd.logo.alt = wikEd.config.text['wikEdLogo disabled alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo disabled title'];
}
else if (wikEd.testVersion == true) {
wikEd.logo.src = wikEd.config.image.testVersion;
wikEd.logo.alt = wikEd.config.text['wikEdLogo testVersion alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo testVersion title'];
}
else {
wikEd.logo.src = wikEd.config.image
wikEd.logo.alt = wikEd.config.text['wikEdLogo alt'];
wikEd.logo.title = wikEd.config.text['wikEdLogo title'];
Line 4,723 ⟶ 4,759:
//
// wikEd.MakeButtonBar: generate button bar div element
//
// id outer, class outer, id inner, class inner, alt, button numbers
Line 4,772 ⟶ 4,808:
else if ( (currButton[0] == 'wikEdTableMode') && (wikEd.config.showTableModeButton != true) ) {
break;
}
// add button html code
buttons += '<img ' + wikEd.MakeButtonCode(buttonNo) + '>';
}
}
Line 4,841 ⟶ 4,865:
//
// wikEd.MakeButtonCode: create button code and register
//
wikEd.MakeButtonCode = function(buttonNo, type) {
var currButton = wikEd.config.button[buttonNo];
// add accesskey information to button title and
var accessKey = '';
if (wikEd.config.buttonKey[buttonNo] != null) {
accessKey = ' [' + wikEd.config.text['alt-shift'] + wikEd.config.buttonKey[buttonNo][0] + ']';
// initialize wikEd.buttonKeyCode[keyCode] = id
wikEd.buttonKeyCode[ (wikEd.config.buttonKey[buttonNo][1]) ] = currButton[0];
}
// add button html code
var html;
if (type == 'button') {
html = '<button type="button" id="' + currButton[0] + '" class="' + currButton[1] + '" title="' + currButton[2] + accessKey +'"><img src="' + currButton[3] + '" width="' + currButton[4] + '" height="' + currButton[5] + '" alt="' + currButton[6] + '"></button>';
}
else {
html = '<img id="' + currButton[0] + '" class="' + currButton[1] + '" title="' + currButton[2] + accessKey +'" src="' + currButton[3] + '" width="' + currButton[4] + '" height="' + currButton[5] + '" alt="' + currButton[6] + '"';
}
// collect click event info
wikEd.editButtonHandler[ currButton[0] ] = currButton[7];
return(html);
};
//
// wikEd.ButtonBarInit: hide buttons bar, see also wikEd.ButtonBarGripHandler()
Line 5,121 ⟶ 5,178:
wikEd.previewBox.style.height = previewHeight + 'px';
}
wikEd.previewBox.innerHTML = wikEd.config.text
wikEd.localPrevWrapper.style.display = 'inline';
Line 5,161 ⟶ 5,218:
uriArticle = encodeURI(uriArticle);
uriArticle = uriArticle.replace(/%25(\d\d)/g, '%$1');
uriArticle = uriArticle.replace(/
var hist = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgScript + '?title=' + uriArticle + '&action=history';
return('[[:' + p1 + ']] • ([[:' + talk + '|' + wikEd.config.text['talk page'] + ']], [' + hist + ' ' + wikEd.config.text['history page'] + '])');
Line 5,187 ⟶ 5,244:
// GesHI syntax highlighting support, GeSHi css is only provided dynamically and not for &live
// so request a full preview and attach css to page, remember already loaded GeSHi languages
while ( (regExpMatch = /<(source|syntaxhighlight)\b[^>]*?lang\s*=\s*(
var lang = regExpMatch[3];
if (wikEd.geSHiCSS['wikEd' + lang] == null) {
Line 5,230 ⟶ 5,287:
case 'wikEdLocalDiff':
if (typeof(WDiffString) != 'function') {
var diffTextLinkified = '';
wikEd.previewBox.innerHTML = '<div class="wikEdPreviewDiffError">' + wikEd.config.text.diffNotLoaded + '</div>';
wikEd.localPrevWrapper.style.display = 'block';
break;
Line 5,246 ⟶ 5,304:
// Opera 0.9.51
currentVersion = currentVersion.replace(/\r\n|\n\r|\r/g, '\n');
// call external diff program
// display diff, keep wrapper height to prevent scrolling
Line 5,265 ⟶ 5,313:
wikEd.previewBox.style.height = previewHeight + 'px';
}
wikEd.localPrevWrapper.style.display = 'block';
Line 5,841 ⟶ 5,888:
// bold
case 'wikEdBold':
if ( /
obj.changed.plain = obj.changed.plain.replace(/
}
else {
obj.changed.plain = '\'\'\'' + obj.changed.plain + '\'\'\'';
obj.changed.plain = obj.changed.plain.replace(/(
}
obj.changed.plain = obj.changed.plain.replace(/
obj.changed.keepSel = true;
break;
Line 5,854 ⟶ 5,901:
// italic
case 'wikEdItalic':
if ( /(
obj.changed.plain = obj.changed.plain.replace(/(
}
else if ( /(^|[^
obj.changed.plain = obj.changed.plain.replace(/(^|[^
}
else {
obj.changed.plain = '\'\'' + obj.changed.plain + '\'\'';
obj.changed.plain = obj.changed.plain.replace(/(
}
obj.changed.plain = obj.changed.plain.replace(/
obj.changed.keepSel = true;
break;
Line 5,938 ⟶ 5,985:
}
else {
obj.changed.plain = '<ref name=
}
}
else if ( /<ref( name=
obj.changed.plain = '';
}
else if ( /<ref( name=
obj.changed.plain = obj.changed.plain.replace(/<ref( name=
}
else {
Line 5,952 ⟶ 5,999:
}
else {
obj.changed.plain = '<ref name=
}
obj.changed.plain = obj.changed.plain.replace(/(<ref( name=
}
obj.changed.keepSel = true;
Line 5,962 ⟶ 6,009:
case 'wikEdReferences':
case 'wikEdReferencesSection':
var ref = wikEd.config.text
ref = ref.replace(/</g, '<');
ref = ref.replace(/>/g, '>');
Line 6,028 ⟶ 6,075:
// first-letter-uppercase all lowercased text
else if (plain.toLowerCase() == plain) {
var regExp = new RegExp('(^|[^' + wikEd.letters + '_])([' + wikEd.letters + '_])([' + wikEd.letters + '_\']*)', 'g')
plain = plain.replace(regExp,
function (p, p1, p2, p3) {
return(p1 + p2.toUpperCase() + p3.toLowerCase());
Line 6,071 ⟶ 6,119:
// join cells in table rows
main = main.replace(/(^|\n)(\|[^\-\+\}](.|\n)*?(?=(\|\-|\{\||\|\}|$)|$))/g,
function(p, p1, p2, p3) {
p2 = p2.replace(/\n/g, '\x00');
return(p1 + p2);
Line 6,108 ⟶ 6,156:
// keep single ' only
sortKey = sortKey.replace(/
// remove decimal commas
Line 6,136 ⟶ 6,184:
// remove non-chars
sortKey = sortKey.replace(/[^\$\@\.\,\:\;\-\w\s
// join multiple spaces
Line 6,387 ⟶ 6,435:
// remove formatting and spaces
linkTarget = linkTarget.replace(/^(=+|
linkTarget = linkTarget.replace(/</g, '<');
linkTarget = linkTarget.replace(/>/g, '>');
Line 6,397 ⟶ 6,445:
// append to summary
if (wikEd.wikiGlobals.wgUseAutomaticEditSummaries != true) {
if (wikEd.inputElement
if ( (obj.selection.plain != '') || (obj.selectionWord.plain != '') ) {
wikEd.inputElement
wikEd.inputElement
}
else {
wikEd.inputElement
}
}
Line 6,432 ⟶ 6,480:
if (/\n/.test(obj.changed.plain) == false) {
if (buttonId == 'wikEdFindNext') {
wikEd.inputElement
}
else {
wikEd.inputElement
}
obj.changed.keepSel = true;
Line 6,455 ⟶ 6,503:
// get the find text from the find field
else {
if (wikEd.inputElement
findText = wikEd.inputElement
}
else {
Line 6,469 ⟶ 6,517:
// get the replace text
var replaceText = wikEd.inputElement
// format the find and replace texts for a plain text search
Line 6,486 ⟶ 6,534:
replaceText = replaceText.replace(/\\r/g, '\r');
replaceText = replaceText.replace(/\\t/g, '\t');
replaceText = replaceText.replace(/
replaceText = replaceText.replace(/
replaceText = replaceText.replace(/\\([0-7]{3})/g,
Line 6,517 ⟶ 6,565:
var regExpFindText = findText;
if (useRegExp != true){
regExpFindText = regExpFindText.replace(/([
}
var regExpFlags = 'gm';
Line 6,961 ⟶ 7,009:
// livepreview
if (html.indexOf(
html = html.replace(/\s*<\/livepreview>\s*()/, '');
html = html.replace(/\s*<\/preview>\s*()/, '');
Line 6,969 ⟶ 7,017:
html = html.replace(/'/g, '\'');
html = html.replace(/&/g, '&');
html = html.replace(/(.|\n)*<div class=
}
Line 6,977 ⟶ 7,025:
// attach <style> stylesheet declarations to document (GeSHi)
var regExpMatch;
while ( (regExpMatch = /<()style\b[^>]*?type=
var css = regExpMatch[2];
var stylesheet = new wikEd.StyleSheet(document);
stylesheet.
}
// get preview html
html = wikEd.StringGetInnerHTML(html, 'div', 'id', 'wikiPreview', true);
html = wikEd.StringGetInnerHTML(html, 'div', 'class', 'previewnote', true, false, true);
html = html.replace(/<!--(.|\n)*?-->/g, '');
html = html.replace(/\s+$/g, '');
Line 6,995 ⟶ 7,043:
// remove cite errors for automatic section preview refs
html = html.replace(/(<div\b[^>]*?\bclass=
function (p, p1, p2) {
p1 = p1.replace(/<strong\b[^>]*?\bclass=
return(p1);
}
Line 7,047 ⟶ 7,095:
var fileObj = {};
var regExpMatch;
if ( (regExpMatch = /\bsrc=
fileObj.url = regExpMatch[1];
if ( (regExpMatch = /\bwidth=
fileObj.width = parseInt(regExpMatch[1]);
}
if ( (regExpMatch = /\bheight=
fileObj.height = parseInt(regExpMatch[1]);
}
}
else {
fileObj.url = wikEd.config.image
fileObj.width = 16;
fileObj.height = 16;
Line 7,089 ⟶ 7,137:
//
// wikEd.DiffResponse: calculate calculate and linkify the diff between two versions (code copied to wikEdDiff.js)
//
wikEd.DiffResponse = function(oldVersion, newVersion) {
// add trailing newline
if (oldVersion.substr(oldVersion.length - 1, 1) != '\n') {
oldVersion += '\n';
}
if (newVersion.substr(newVersion.length - 1, 1) != '\n') {
newVersion += '\n';
}
// call external diff program
var diffText = WDiffString(oldVersion, newVersion);
if (wikEd.config.fullDiff != true) {
diffText = WDiffShortenOutput(diffText);
}
// linkify blockwise with breaks at delete and block move tags
var diffTextLinkified = '';
var regExp = /<span\b[^>]+?\bclass="wDiffHtml(Delete|Block)"[^>]*>/g;
var regExpMatch;
var pos = 0;
while ( (regExpMatch = regExp.exec(diffText)) != null) {
diffTextLinkified += wikEd.DiffLinkify(diffText.substring(pos, regExpMatch.index)) + regExpMatch[0];
pos = regExp.lastIndex;
}
diffTextLinkified += wikEd.DiffLinkify(diffText.substr(pos));
return(diffTextLinkified);
};
//
// wikEd.DiffLinkify: linkify external links and wikilinks in diffed text as <a> anchor elements (code copied to wikEdDiff.js)
//
wikEd.DiffLinkify = function(html) {
// < > to \x00 \x01
html = html.replace(/</g, '\x00');
html = html.replace(/>/g, '\x01');
// external links
html = html.replace(/\b(((https?|ftp|irc|gopher):\/\/)|news:|mailto:)([^\x00-\x20\s"\[\]\x7f\|\{\}<>]|<[^>]*>)+?(?=([\!"\(\)\.\,\:\;\‘-•]*\s|[\x00-\x20\s"\[\]\x7f\|\{\}]))/gi,
function (p) {
var whole = p;
var title = whole;
title = title.replace(/\x00!--.*?--\x01/g, '');
title = title.replace(/.*--\x01|\x00!--.*/g, '');
title = title.replace(/<.*?>/g, '');
title = title.replace(/^.*>|<.*$/g, '');
title = title.replace(/^\s+|\s+$/g, '');
title = decodeURI(title);
var url = title.replace(/\s/g, '_');
url = encodeURI(url);
url = url.replace(/"/g, '%22');
url = url.replace(/'/g, '%27');
url = url.replace(/#/g, '%23');
var linkTitle = title.replace(/"/g, '"');
// linkify all url text fragments between highlighting <span>s seperately
var anchorOpen = '<a href = "' + url + '" style="text-decoration: none; color: inherit; color: expression(parentElement.currentStyle.color);" title="' + linkTitle + '">';
var anchorClose = '</a>';
whole = whole.replace(/(<[^>]*>)/g, anchorClose + '$1' + anchorOpen);
return(anchorOpen + whole + anchorClose);
}
);
// linkify links and templates
if ( (wikEd.wikiGlobals.wgServer != null) && (wikEd.wikiGlobals.wgArticlePath != null) ) {
// 1 [[ 2title 23 | text 3 ]]1 4 {{ 5title 56 6 4
html = html.replace(/(\[\[([^|\[\]{}\n]+)(\|[^\[\]{}<>]*)?\]\])|(\{\{([^|\[\]{}\n]*)([^\[\]{}<>]*\}\})?)/g,
function (p, p1, p2, p3, p4, p5, p6) {
var articleName = p2 || '';
var templateName = p5 || '';
var whole = p;
// extract title
var title = articleName;
if (title == '') {
title = templateName;
}
title = title.replace(/\x00!--.*?--\x01/g, '');
title = title.replace(/.*--\x01|\x00!--.*/g, '');
title = title.replace(/<.*?>/g, '');
title = title.replace(/^.*>|<.*$/g, '');
title = title.replace(/^\s+|\s+$/g, '');
// [[/subpage]] refers to a subpage of the current page, [[#section]] to a section of the current page
if ( (title.indexOf('/') == 0) || (title.indexOf('#') == 0) ) {
title = wikEd.pageName + title;
}
// create url
var url = title.replace(/\s/g, '_');
url = encodeURI(url);
url = url.replace(/"/g, '%22');
url = url.replace(/'/g, '%27');
url = url.replace(/#/g, '%23');
var articleTitle = title.replace(/"/g, '"');
if (templateName != '') {
if (/:/.test(title) == false) {
url = 'Template:' + url;
articleTitle = 'Template:' + articleTitle;
}
}
url = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, url);
// linkify all text fragments between highlighting <span>s seperately
var anchorOpen = '<a href = "' + url + '" style = "text-decoration: none; color: inherit; color: expression(parentElement.currentStyle.color)" title="' + articleTitle + '">';
var anchorClose = '</a>';
whole = whole.replace(/(<[^>]*>)/g, anchorClose + '$1' + anchorOpen);
return(anchorOpen + whole + anchorClose);
}
);
}
// \x00 and \x01 back to < and >
html = html.replace(/\x00/g, '<');
html = html.replace(/\x01/g, '>');
return(html);
};
//
// wikEd.StringGetInnerHTML: get innerHTML of element from html in a string; can also get text before or after node
//
wikEd.StringGetInnerHTML = function(html, tag, attrib, value, defaultToWholeHTML, getBeforeHTML, getAfterHTML) {
var startPos;
Line 7,104 ⟶ 7,284:
var attribValue = '';
if (attrib != '') {
attribValue = '[^>]*?' + attrib + '\\s*=\\s*(
}
var regExpStart = new RegExp('<' + tag + '\\b' + attribValue + '[^>]*?>', 'gi');
Line 7,238 ⟶ 7,418:
rules += '.wikEdRefButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';
rules += '.wikEdRefButton' + i + ':before, .wikEdRefButtonShow' + i + ':before { content: "' + wikEd.config.text
wikEd.referenceArray[i].added = true;
Line 7,252 ⟶ 7,432:
rules += '.wikEdTemplButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';
rules += '.wikEdTemplButton' + i + ':before, .wikEdTemplButtonShow' + i + ':before { content: "' + wikEd.config.text
wikEd.templateArray[i].added = true;
Line 7,277 ⟶ 7,457:
// add or replace existing css rules
if (rules != '') {
wikEd.HighlightNamedHideButtonsStylesheet.
}
return;
Line 7,755 ⟶ 7,935:
if (typeof(wikEd.frameWindow.find) != 'function') {
useRegExp = true;
findText = findText.replace(/([
}
}
Line 8,162 ⟶ 8,342:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isRemove.push(true);
return('');
Line 8,197 ⟶ 8,377:
function (p, p1, p2, p3) {
if (p2.match(/\bclass=/) != null) {
p2 = p2.replace(/\bclass\s*=\s*([
}
else {
Line 8,304 ⟶ 8,484:
obj.plain = obj.plain.replace(/(^|\n)+(=+) *(.*?) *(=+)(?=(\n|$))/g,
function(p, p1, p2, p3, p4) {
p3 = p3.replace(/
return('\n\n' + p2 + ' ' + p3 + ' ' + p2 + '\n\n');
}
Line 8,314 ⟶ 8,494:
regExp = new RegExp('\\n=+ ' + wikEd.config.text['See also'] + ' =+\\n', 'gi');
obj.plain = obj.plain.replace(regExp, '\n== ' + wikEd.config.text['See also'] + ' ==\n');
regExp = new RegExp('\\n=+ ' + wikEd.config.text
obj.plain = obj.plain.replace(regExp, '\n== ' + wikEd.config.text
// add space after * # : ; (list) and after {| |- |+ | (table), spare #REDIRECT
Line 8,381 ⟶ 8,561:
// remove underscores in wikilinks
obj.plain = obj.plain.replace(/\[\[(.*?)((\|.*?)|)\]\]/g,
function (p, p1, p2, p3) {
p1 = p1.replace(/_/g, ' ');
return('[[' + p1 + p2 + ']]');
Line 8,436 ⟶ 8,616:
// protect punctuation in URLs
obj.plain = obj.plain.replace(regExp,
function(p, p1, p2) {
p = p.replace(/([
return(p);
}
Line 8,444 ⟶ 8,625:
// protect punctuation in filenames
obj.plain = obj.plain.replace(regExp, '$1\x00$2');
// protect punctuation in article names
obj.plain = obj.plain.replace(/(\[\[|\{\{)([^\]
function(p, p1, p2) {
p = p.replace(/([
return(p);
}
Line 8,457 ⟶ 8,639:
obj.plain = obj.plain.replace(/(«) *()/g, '$1 ');
obj.plain = obj.plain.replace(/ *(»)/g, ' $1');
regExp = new RegExp('([' + wikEd.letters + '_\'"”\\]})]) *([.,])(?=(['+ wikEd.letters + '\'"”\\[{(\\s]|$))', 'g');
obj.plain = obj.plain.replace(regExp, '$1$2 ');
regExp = new RegExp('([' + wikEd.letters + '\'"”\\]})]) *([:;?!])', 'g');
obj.plain = obj.plain.replace(regExp, '$1 $2 ');
}
else {
regExp = new RegExp('([' + wikEd.letters + '_\'"”\\]})]) *([.,:;])(?=([' + wikEd.letters + '\'"”\\[{(\\s]|$))', 'g');
obj.plain = obj.plain.replace(regExp, '$1$2 ');
}
obj.plain = obj.plain.replace(/\x00/g, '');
Line 8,569 ⟶ 8,757:
var links = '';
// 1 [[ 2 2 3
var regExpLink = /(\[\[\s*(:?)\s*([^\n#<>\[\]
while ( (regExpMatch = regExpLink.exec(obj.plain)) != null) {
links += regExpMatch[3] + '|';
Line 8,596 ⟶ 8,784:
postFields['wpAutoSummary'] = wikEd.autoSummary;
}
var requestUrl = wikEd.scriptURL + 'api.php';
Line 8,617 ⟶ 8,805:
wikEd.redirectsCache.allFrom = '';
var regExpRedir = /<(r|n) .*?\bfrom=
while ( (regExpMatch = regExpRedir.exec(txt)) != null) {
wikEd.redirectsCache.from[i] = regExpMatch[2];
Line 8,650 ⟶ 8,838:
wikEd.ResolveRedirects = function(i) {
var toRegExp = wikEd.redirectsCache.to[i].replace(/(\W)/g, '\\$1');
var regExp = new RegExp('(\\d+)=
if ( (regExpMatch = wikEd.redirectsCache.allFrom.match(regExp)) != null) {
i = wikEd.ResolveRedirects( parseInt(regExpMatch[1], 10) );
Line 8,672 ⟶ 8,860:
for (var i = 0; i < wikEd.redirectsCache.from.length; i ++) {
// 1 1 2
var regExp = new RegExp('\\[\\[\\s*(:?)\\s*(' + wikEd.redirectsCache.from[i] + ')(\\s*#[^\\n\\[\\]
obj.plain = obj.plain.replace(regExp,
function(p, p1, p2, p3, p4, p5) {
Line 8,679 ⟶ 8,867:
var article = p2;
var redirect = wikEd.redirectsCache.to[ wikEd.redirectsCache.toIndex[i] ];
var fragmentId = p3
var linkText = p5 || '';
Line 8,743 ⟶ 8,931:
// convert dash next to a number into a minus sign character
var regExp = new RegExp('([^' + wikEd.letters + '_,{])-(\\d)', 'g');
p1 = p1.replace(regExp, '$1\u2212$2');
// changes 2x3 to 2×3
Line 8,752 ⟶ 8,941:
// change x^3 to x<sup>3</sup>
var regExp = new RegExp('([' + wikEd.letters + '_])\\^(\\u2212?\\d+\\.?\\d*) ', 'g');
p1 = p1.replace(regExp, '$1<sup>$2</sup>');
// change +/- to ±
Line 8,825 ⟶ 9,015:
// fix -
var regExp = new RegExp('([' + wikEd.letters + '_]|\\)|>) +(-|\\u2212) +([' + wikEd.letters + '_]|\\()', 'g');
obj.plain = obj.plain.replace(regExp, '$1 \u2212 $3');
return;
Line 8,845 ⟶ 9,036:
// add space before units, remove space around /, and use abreviations
obj.plain = obj.plain.replace(regExp,
function (p, p1, p2, p3) {
Line 8,904 ⟶ 9,096:
// fix prefix casing
var regExp = new RegExp(' K(bit/s|B/s)([^' + wikEd.letters + '_]|$)', 'g');
obj.plain = obj.plain.replace(
var regExp = new RegExp(' m(bit/s|B/s)([^' + wikEd.letters + '_]|$)', 'g');
obj.plain = obj.plain.replace(
var regExp = new RegExp(' g(bit/s|B/s)([^' + wikEd.letters + '_]|$)', 'g');
obj.plain = obj.plain.replace(regExp, ' G$1$2');
var regExp = new RegExp(' t(bit/s|B/s)([^' + wikEd.letters + '_]|$)', 'g');
obj.plain = obj.plain.replace(regExp, ' T$1$2');
var regExp = new RegExp(' e(bit/s|B/s)([^' + wikEd.letters + '_]|$)', 'g');
obj.plain = obj.plain.replace(regExp, ' E$1$2');
return;
Line 8,928 ⟶ 9,129:
// remove spaces around em dashes
obj.plain = obj.plain.replace(regExp, '$1—$4');
// convert -- to em dashes
obj.plain = obj.plain.replace(regExp, '$1—$4');
// convert hyphen next to lone number into a minus sign character
obj.plain = obj.plain.replace(regExp, '$1\u2212$3');
// convert minus or en dashes to dashes with spaces
obj.plain = obj.plain.replace(regExp, '$1 – $5');
// convert dashes to en dashes in dates
Line 8,979 ⟶ 9,184:
obj.html = obj.html.replace(/((\{\{)|\}\})/g,
function (p, p1, p2) {
p2 = p2 || '';
if (p2 != '') {
depth ++;
Line 9,056 ⟶ 9,262:
// uppercase lists
// start (listcode (char-ent|tag|category..|digit|non-word,non-ret))(word,non-digit..) end
obj.plain = obj.plain.replace(regExp,
function (p, p1, p2, p3, p4) {
if (p4.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda|$)/) == null) {
Line 9,073 ⟶ 9,280:
// uppercase link lists (link)
// 12 table list 2
obj.plain = obj.plain.replace(/^((\||[
function (p, p1, p2, p3, p4) {
// uppercase link
var regExp = new RegExp('^((&\\w+;|[^' + wikEd.letters + '_]|\\d)*)([' + wikEd.letters + '_].*)$', '');
p3 = p3.replace(regExp,
function (p, p1, p2, p3) {
if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) {
Line 9,088 ⟶ 9,296:
// uppercase comment
var regExp = new RegExp('(\\| *(&\\w+;|<.*?>|[^' + wikEd.letters + '_][^|]*)$', '');
p3 = p3.replace(regExp,
function (p, p1, p2, p3) {
if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) {
Line 9,101 ⟶ 9,310:
// uppercase headings
var regExp = new RegExp('^(=+ (&\\w+\\;|<.*?>|\\d|[^' + wikEd.letters + '_\\n])*)([' + wikEd.letters + '_].*? =+)$', 'gm');
obj.plain = obj.plain.replace(regExp,
function (p, p1, p2, p3) {
if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) {
Line 9,111 ⟶ 9,321:
// uppercase images
var regExp = new RegExp('(\\[\\[)(Image|File|' + wikEd.config.text['wikicode Image'] + '|' + wikEd.config.text['wikicode File'] + '):([
obj.plain = obj.plain.replace(regExp,
function (p, p1, p2, p3, p4) {
Line 9,135 ⟶ 9,345:
var fragment = [];
var nextPos = 0;
var regExp =
while ( (regExpMatch = regExp.exec(obj.plain)) != null) {
fragment.push(obj.plain.substring(nextPos, regExpMatch.index));
Line 9,233 ⟶ 9,443:
var foundLine = false;
var foundPara = false;
var regExp = new RegExp('.*[^
var plainPrev = '';
Line 9,289 ⟶ 9,499:
// find next word and line boundary
regExp = new RegExp('[^' + wikEd.letters + '_]', 'g');
foundWord = false;
foundLine = false;
Line 9,433 ⟶ 9,643:
// remove MediaWiki section edit spans
obj.html = obj.html.replace(/<span[^>]*class=
// remove MediaWiki heading spans
obj.html = obj.html.replace(/<span\b[^>]*\bclass=
// remove MediaWiki divs from article top
obj.html = obj.html.replace(/<h3\b[^>]*\bid=
obj.html = obj.html.replace(/<div\b[^>]*\bid=
obj.html = obj.html.replace(/<div\b[^>]*\bid=
// remove MediaWiki table of contents
obj.html = obj.html.replace(/<table\b[^>]*?\bid=
// remove MediaWiki print footer
obj.html = obj.html.replace(/<div\b[^>]*?\bclass=
// remove MediaWiki category list tags
while(/<div\b[^>]*\bid=
obj.html = obj.html.replace(regExp, '$1');
}
while(/<p\b[^>]*?\bclass=
obj.html = obj.html.replace(regExp, '$1$2');
}
Line 9,489 ⟶ 9,699:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isPoem.push(true);
return('<poem>');
Line 9,658 ⟶ 9,868:
obj.html = obj.html.replace(/[\s\x00]*<table>[\s\x00]*(\|-(?=[\n\x00]))?/gi, '\x00\x00{|\x00');
obj.html = obj.html.replace(/[\s\x00]*<(table) +([^>]*)>[\s\x00]*(\|-(?=[\n\x00]))?/gi,
function (p, p1, p2, p3) {
var table = '\x00\x00{|';
if (wikEd.config.wikifyTableParameters != '') {
Line 9,678 ⟶ 9,888:
function (p, p1, p2, p3) {
if (p2.match(/\bclass=/)) {
p2 = p2.replace(/\bclass\s*=\s*([
}
else {
Line 9,698 ⟶ 9,908:
// convert links
obj.html = obj.html.replace(/<a(\b[^>]*)>(.*?)<\/a>/gi,
function (p, p1, p2) {
var linkParam = p1;
var linkText = p2;
var hrefUrlParam = null;
var hrefUrlArticle = null;
Line 9,718 ⟶ 9,926:
// get href value
var hrefValue;
if (
hrefValue =
// get absolute path from ./index.php and ../../index.php
Line 9,726 ⟶ 9,934:
// check for wiki article link and get parameters
//
var regExpMatchArticle = regExpArticle.exec(hrefValue);
if (regExpMatchArticle != null) {
// article name from url path <a href="../wiki/ hrefUrlArticle ">
hrefUrlArticle = regExpMatchArticle[2];
// article name from url parameters <a href="url? hrefUrlParam ">
hrefUrlParam = regExpMatchArticle[3];
// link anchor <a href="link #anchor">
linkArticleAnchor = regExpMatchArticle[4];
linkArticleAnchor = linkArticleAnchor.replace(/\.([0-9A-F]{2})/g, '%$1');
linkArticleAnchor = decodeURIComponent(linkArticleAnchor);
Line 9,752 ⟶ 9,955:
// parse hrefUrlParam and check for special parameters
if (hrefUrlParam != null) {
var regExpMatchHref;
while ( (
var param =
var value =
switch (param) {
case 'title':
Line 9,781 ⟶ 9,984:
if ( (hrefParamISBN != null) && (hrefParamSpecial != true) ) {
var isbn = hrefParamISBN;
if (
isbn =
}
return('ISBN ' + isbn);
Line 9,804 ⟶ 10,007:
// get article name from <a title="">
else {
if (
linkArticle =
}
}
Line 9,816 ⟶ 10,019:
// check for wiki image
if (regExpMatchImage != null) {
imgWidth = '|' + imgWidth + 'px';
if ( (linkTitle != '') && (linkTitle != 'Enlarge') ) {
Line 9,832 ⟶ 10,033:
// category link
var
if (regExpMatch != null) {
return('[[' + wikEd.config.text['wikicode Category'] + ':' +
}
Line 9,844 ⟶ 10,045:
// date link (English only)
if (
var month =
var day =
if (linkText == (day + ' ' + month) ) {
return('[[' + linkArticle + linkArticleAnchor + ']]');
Line 9,861 ⟶ 10,062:
// suffix links
var regExpMatchSuffix = regExpStrSuffix.exec(linkText);
if (regExpMatchSuffix != null) {
return('[[' + linkArticle + linkArticleAnchor + ']]' + regExpMatchSuffix[1]);
}
return('[[' + linkArticle + linkArticleAnchor + '|' + linkText + ']]');
Line 9,874 ⟶ 10,074:
// PubMed link
if (
return('PMID ' +
}
// DOI link
if (
return('{{doi|' +
}
Line 9,908 ⟶ 10,108:
// get and format parameters
var address = '';
var regExpMatch = /\bsrc\s*=\s*(
if (regExpMatch != null) {
address = regExpMatch[2].replace(/^ +| +$/g, '');
Line 9,914 ⟶ 10,114:
var imgAlt = '';
regExpMatch = /\balt\s*=\s*(
if (regExpMatch != null) {
imgAlt = regExpMatch[2].replace(/^ +| +$/g, '');
Line 9,926 ⟶ 10,126:
var imgWidth = '';
regExpMatch = /\bwidth\s*=\s*(
if (regExpMatch != null) {
imgWidth = '|' + regExpMatch[2].replace(/^ +| +$/g, '') + 'px';
Line 9,992 ⟶ 10,192:
}
}
else if ( /^(big|blockquote|colgroup|center|code|del|div|font|ins|p|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|noinclude|includeonly|ref|charinsert|fundraising|fundraisinglogo|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references|syntaxhighlight)$/i.test(p3) == true) {
return(p1 + p2 + p3 + p4);
}
Line 10,013 ⟶ 10,213:
// unformat underlined, italic or bold blanks
// corrupts existing text
// obj.html = obj.html.replace(/<u>(
// obj.html = obj.html.replace(/
// obj.html = obj.html.replace(/
// fix MS Word non-style heading formatting
obj.html = obj.html.replace(/(\x00(={1,6}) *)(<u>|
// remove empty headings
Line 10,144 ⟶ 10,344:
var sanitized = '';
var regExpMatch;
while ( (regExpMatch = /(\w+)\s*=\s*((
var attrib = regExpMatch[1];
var attribValue = regExpMatch[4] || regExpMatch[5];
Line 10,381 ⟶ 10,581:
// remove highlighting error messages
if (wikEd.config.highlightError == true) {
obj.html = obj.html.replace(/<span\b[^>]*?\bclass=
}
Line 10,389 ⟶ 10,589:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isRemove.push(true);
return('');
Line 10,408 ⟶ 10,608:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isRemove.push(true);
return('');
Line 10,428 ⟶ 10,628:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isRemove.push(true);
return('\x00');
Line 10,447 ⟶ 10,647:
function (p, p1, p2, p3) {
if (p2 == '') {
if (/\bclass=
isRemove.push(true);
return('\x00');
Line 10,469 ⟶ 10,669:
if (p3 == '') {
if ( (p2 != '') || (p5 != '') ) {
if (/\bstyle=
if (/\bclass=
isRemove.push(true);
return('');
Line 10,520 ⟶ 10,720:
// [regular expression fragment, tag, tagClass, tagStart (regexp starts with newline)]
var tagArray = [
['\\b(((https?|ftp|irc|gopher):\\/\\/)|news:|mailto:)[^\\x00-\\x20\\s
// faster without (!?)
// ['[^\\{\\}\\[\\]\x00\x01_\\|\\!\\=\\*\\#\\:\\;"\'\\n\\\\~\\-]+', 'text', 'ignore'], // chew-up fragment to ignore plain text, triples regExp speed, check later if chewed into start of inlineLink; start-with-text tags (PMID,...) have to be tested for separately to benefit from his
['\x00(nowiki)\\b[^\x00\x01]*\x01(.|\\n)*?\x00
['\x00(pre)\\b[^\x00\x01]*\x01(.|\\n)*?\x00
['\x00(math)\\b[^\x00\x01]*\x01(.|\\n)*?\x00
['(^|\\n)([ \xa0]+)(\\S[^\\n]*)', 'preform',
['(^|\\n)([\\*\\#\\:\\;]+)([^\\n]*)', 'list',
['\x00(br\\b)[^\x00\x01]*\x01', 'br', 'block'], // <br>
Line 10,561 ⟶ 10,762:
['\\]\\]', 'doubleCloseBracket', 'close'], // wikilink, category, file link, redirect end
['\\[((((https?|ftp|irc|gopher):\\/\\/)|news:|mailto:)[^\\x00-\\x20\\s
['\\]', 'external', 'close'], // external link end
Line 10,569 ⟶ 10,770:
['\\\'{2,}', 'boldItalic', 'multi'], // bold, italic
['__(' + wikEd.magicWords + ')__', 'magic',
['~{3,5}', 'signature', 'block'], // signature
['(^|\\n)\\-{4,}', 'hr', 'block'], // hr
Line 10,646 ⟶ 10,847:
var ns = '';
var article = p1;
var regExp =
var regExpMatch = regExp.exec(article);
if (regExpMatch != null) {
Line 10,658 ⟶ 10,859:
return;
}
// < > & to \x00 \x01
obj.html = obj.html.replace(/</g, '\x00');
Line 10,814 ⟶ 11,015:
var errorText;
if (parseObj.lastOpenTag == 'link') {
errorText = wikEd.config.text
}
else if (parseObj.lastOpenTag == 'template') {
errorText = wikEd.config.text
}
else if (parseObj.lastOpenTag == 'parameter') {
errorText = wikEd.config.text
}
wikEd.HighlightMarkLastOpenNode(errorText, parseObj);
Line 10,915 ⟶ 11,116:
break;
default:
parseObj.tree.push( { 'start': tagFrom, 'tagLength': tagLength, 'type': 'error', 'left': wikEd.config.text
break;
}
Line 11,003 ⟶ 11,204:
'tagLength': node.tagLength,
'type': 'error',
'left': wikEd.config.text
} );
redefinedTag = 'spare';
Line 11,051 ⟶ 11,252:
(openNode.tag == 'paramTempl') &&
( (openNode.tagLength > 3) && (tagLength > 3) )
parseObj.tree.push( {
'start': openNode.start,
'tagLength': openNode.tagLength,
'type': 'error',
'left': wikEd.config.text
} );
parseObj.tree.push( {
Line 11,062 ⟶ 11,263:
'tagLength': tagLength,
'type': 'error',
'left': wikEd.config.text
} );
}
Line 11,072 ⟶ 11,273:
'tagLength': openNode.tagLength,
'type': 'error',
'left': wikEd.config.text
} );
parseObj.tree.push( {
Line 11,078 ⟶ 11,279:
'tagLength': tagLength,
'type': 'error',
'left': wikEd.config.text
} );
}
Line 11,108 ⟶ 11,309:
var regExpMatch;
if (/\(/.test(tagMatch) == true) {
regExpMatch = /^(.*?)([
}
else {
regExpMatch = /^(.*?)([
}
if (regExpMatch != null) {
Line 11,320 ⟶ 11,521:
// unrecognized tag
default:
parseObj.tree.push( { 'start': tagFrom, 'tagLength': tagLength, 'type': 'error', 'left': wikEd.config.text
}
Line 11,334 ⟶ 11,535:
// mark remaining unmatched opening tags
while ( (parseObj.lastOpenNode != 0) && (parseObj.lastOpenNode != null) ) {
wikEd.HighlightMarkLastOpenNode(wikEd.config.text
}
}
Line 11,349 ⟶ 11,550:
// named html colors in quotation marks
var regExpColorLight = /(
while ( (regExpMatch = regExpColorLight.exec(obj.html) ) != null) {
wikEd.HighlightBuildTree('colorLight', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
var regExpColorDark = /(
while ( (regExpMatch = regExpColorDark.exec(obj.html) ) != null) {
wikEd.HighlightBuildTree('colorDark', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
Line 11,562 ⟶ 11,763:
'tagLength': tagLength,
'type': 'error',
'left': wikEd.config.text
} );
}
Line 11,595 ⟶ 11,796:
(node.tag == 'boldItalic')
) {
wikEd.HighlightMarkLastOpenNode(wikEd.config.text
wikEd.HighlightGetLevel(parseObj);
}
Line 11,650 ⟶ 11,851:
nodeNo = node.parent;
node.type = 'error';
node.left = wikEd.config.text
node.parent = null;
}
Line 11,664 ⟶ 11,865:
'tagLength': tagLength,
'type': 'error',
'left': wikEd.config.text
} );
break;
Line 11,696 ⟶ 11,897:
// convert opening tag to error
wikEd.HighlightMarkLastOpenNode(wikEd.config.text
parseObj.tree.push( {
Line 11,702 ⟶ 11,903:
'tagLength': tagLength,
'type': 'error',
'left': wikEd.config.text
} );
break;
Line 11,772 ⟶ 11,973:
}
return;
};
Line 11,958 ⟶ 12,159:
break;
case 'file':
var previewCode = '';
var regExpFile = new RegExp('^\\s*(Image|File|' + wikEd.config.text['wikicode Image'] + '|' + wikEd.config.text['wikicode File'] + ')\\s*:\\s*([^\\|\\n]*)', 'i');
Line 12,006 ⟶ 12,206:
wikEd.filePreviewIds[wikEd.filePreviewNo] = filePlain + filePreviewSize;
}
previewCode = '<span class="wikEdFilePreview" id="wikEdFilePreview' + wikEd.filePreviewNo + '" style="' + style + '" title="' + wikEd.config.text
wikEd.filePreviewNo ++;
}
Line 12,026 ⟶ 12,226:
break;
case 'template':
var mod = '';
var inter = '';
Line 12,040 ⟶ 12,235:
var follow = '';
// 12 mod 2 : 1 34 : 4 5 namespace
var regExpTempl = new RegExp('^\\s*((' + wikEd.templModifier + ')\\:\\s*)?((\\:\\s*)?([^
// detect parser variables and functions, might slow main regexp down
Line 12,153 ⟶ 12,348:
var hideStyle = '';
var hideClass = 'wikEdTempl';
if ( (template != '') && (parserVar == false
if (wikEd.refHide == true) {
Line 12,171 ⟶ 12,366:
}
}
insertLeft = '<span class="wikEdTemplContainer"><button class="' + hideButtonClass + wikEd.templateArray.length + '" title="' + wikEd.config.text
wikEd.templateArray.push( {'text': template, 'added': false} );
}
Line 12,243 ⟶ 12,438:
break;
case 'p':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEd.config.text
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,259 ⟶ 12,454:
var refName = '';
var regExpMatch;
if ( (regExpMatch = /(\bname\s*=\s*(
refName = regExpMatch[3];
wikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);
Line 12,269 ⟶ 12,464:
if (wikEd.refHide == true) {
if (refName != '') {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton' + wikEd.referenceArray.length + '" title="' + wikEd.config.text
wikEd.referenceArray.push( {'text': refName, 'added': false} );
}
else {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton" title="' + wikEd.config.text
}
}
Line 12,286 ⟶ 12,481:
case 'heading':
var heading = innerPlain.replace(/^\s+|\s+$/g, '');
if ( (heading == wikEd.config.text['See also']) || (heading == wikEd.config.text
insertLeft = '<span class="wikEdHeadingWP">';
}
Line 12,297 ⟶ 12,492:
// wikitable
var regExpTable = /\{\| *((\w+ *= *(
regExpTable.lastIndex = tagFrom;
var regExpMatch = regExpTable.exec(obj.html);
Line 12,303 ⟶ 12,498:
// html table
regExpTable = /<table\b\s*((\w+\s*=\s*(
regExpTable.lastIndex = tagFrom;
regExpMatch = regExpTable.exec(obj.html)
Line 12,431 ⟶ 12,626:
break;
case 'p':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEd.config.text
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,573 ⟶ 12,768:
break;
case 'htmlUnknown':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEd.config.text
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,579 ⟶ 12,774:
var refName = '';
var regExpMatch;
if ( (regExpMatch = /(\bname\s*=\s*(
refName = regExpMatch[3];
wikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);
Line 12,589 ⟶ 12,784:
if (wikEd.refHide == true) {
if (refName != '') {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton' + wikEd.referenceArray.length + '" title="' + wikEd.config.text
wikEd.referenceArray.push( {'text': refName + ' ↑', 'added': false} );
}
else {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton" title="' + wikEd.config.text
}
}
Line 12,643 ⟶ 12,838:
/*
if (parseObj.tableMode == true) {
var regExpTable = /\| *((\w+ *= *(
regExpTable.lastIndex = tagFrom;
var regExpMatch;
Line 12,733 ⟶ 12,928:
break;
case 'char':
var
var charClass = 'wikEd' + charName;
insertRight = '</span><!--' + charClass + '-->';
break;
case 'charEntity':
Line 12,742 ⟶ 12,938:
if (character != null) {
if (wikEd.refHide == true) {
insertLeft = '<span class="wikEdCharEntityContainer"><button class="wikEdCharEntityButton' + wikEd.charEntityArray.length + '" title="' + wikEd.config.text
wikEd.charEntityArray.push( {'text': character, 'added': false} );
}
Line 12,961 ⟶ 13,157:
linkUrl = encodeURI(linkUrl);
linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1');
linkUrl = linkUrl.replace(/
linkUrl = linkUrl.replace(/#/g, '%23');
if (wikEd.config.LinkifyArticlePath != null) {
linkUrl = wikEd.config.LinkifyArticlePath.replace(/\$1/, linkUrl);
}
else if (wikEd.wikiGlobals.wgArticlePath != null) {
linkUrl = wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, linkUrl);
}
Line 12,984 ⟶ 13,180:
linkUrl = encodeURI(linkUrl);
linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1');
linkUrl = linkUrl.replace(/
}
var linkPopup = linkName;
Line 12,992 ⟶ 13,188:
linkPopup = linkPopup.replace(/</g, '<');
linkPopup = linkPopup.replace(/>/g, '>');
linkPopup = linkPopup.replace(/
var linkParam = '';
if (linkUrl != '') {
var titleClick;
if (wikEd.platform == 'mac') {
titleClick = wikEd.config.text
}
else {
titleClick = wikEd.config.text
}
linkParam += 'id="wikEdLinkify' + wikEd.linkifyArray.length + '" title="' + linkPopup + ' ' + titleClick + '"';
Line 13,253 ⟶ 13,449:
// get the replace text
var replaceText = wikEd.inputElement
// get insensitive and regexp button states
Line 13,651 ⟶ 13,847:
if ( (field == 'find') && (/^=.*?=$/.test(option.value) == true) ) {
var obj = {};
var findText = option.value.replace(/([
findText = '^' + findText + '$';
Line 13,710 ⟶ 13,906:
}
else if (summary.match(/[\.\;\:]$/) != null) {
summary += ' ';
}
else {
var regExp = new RegExp('^[' + wikEd.letters + '_()"\'+\\-]', '');
if (summary.match(regExp) == null) {
summary += ' ';
}
else {
summary += ', ';
}
}
}
Line 13,921 ⟶ 14,120:
wikEd.ClearHistory = function(field) {
wikEd.SetPersistent(wikEd.savedName[field], '', 0, '/');
wikEd.SetComboOptions(field);
Line 13,932 ⟶ 14,132:
wikEd.LoadHistoryFromSettings = function(field) {
var setting = wikEd.GetPersistent(wikEd.savedName[field]);
if ( (setting != '') && (setting != null) ) {
setting = decodeURIComponent(setting);
wikEd.fieldHist[field] = setting.split('\n');
Line 14,120 ⟶ 14,321:
if (wikEd.webStorage == true) {
if (expires == -1) {
value = '';
}
window.localStorage.setItem(name, value);
}
Line 14,130 ⟶ 14,329:
else if (wikEd.greasemonkey == true) {
if (expires == -1) {
}
// see http://wiki.greasespot.net/Greasemonkey_access_violation
setTimeout(function() {
GM_setValue(name, value);
}, 0);
}
Line 14,500 ⟶ 14,701:
(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||
(wikEd.leafElements[currentNode.nodeName] == true)
obj.foundNode = currentNode;
obj.foundLevel = currentLevel;
Line 14,550 ⟶ 14,751:
(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||
(wikEd.leafElements[currentNode.nodeName] == true)
obj.foundNode = currentNode;
obj.foundLevel = currentLevel;
Line 14,597 ⟶ 14,798:
}
}
stylesheet.
return;
};
Line 14,630 ⟶ 14,831:
//
// wikEd.StyleSheet.
//
this.
// MS IE compatibility
if (this.styleElement.
if (declaration.length > 0) {
this.styleElement.
}
}
Line 14,654 ⟶ 14,855:
//
// wikEd.StyleSheet.
//
this.
// MS IE compatibility
Line 14,726 ⟶ 14,927:
}
}
else
requestUrl = wikEd.wikiGlobals.wgScriptPath + '/index.php';
}
Line 14,837 ⟶ 15,038:
}
});
}
Line 14,931 ⟶ 15,132:
+ ' wikEd.wikiGlobals.' + names[i] + ' = ' + names[i] + ';'
+ '}';
}
eval(globalScopeCode);
Line 15,249 ⟶ 15,450:
}
return(node);
};
Line 15,294 ⟶ 15,495:
}
return(str);
};
Line 15,472 ⟶ 15,673:
msg = objectName + ': ' + value;
}
msg = msg.replace(/
setTimeout('throw new Error(\'wikEd.Debug: ' + msg + '\')', 0);
}
Line 15,883 ⟶ 16,084:
// character syntax highlighting: strange spaces, hyphens, and dashes (decimal value, class = title)
wikEd.charHighlighting = {
'9': '
'8194': '
'8195': '
'8201': '
'12288': '
'45': '
'173': '
'8210': '
'8211': '
'8212': '
'8213': '
'8722': '
};
for (var decimalValue in wikEd.charHighlighting) {
Line 15,901 ⟶ 16,102:
}
}
// UniCode support for regexps, from http://xregexp.com/plugins/xregexp-unicode-base.js and /xregexp-unicode-categories.js
wikEd.letters = '0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC'.replace(/(\w{4})/g, '\\u$1');
return;
};
// call startup
|