Content deleted Content added
m Fix (one of unknown) problems that stops sortable tables working |
+nowiki per request |
||
(13 intermediate revisions by 3 users not shown) | |||
Line 1:
/* Version: 3.1
* pt: ACRESCENTA ALGUNS BOTÕES EXTRAS AO PAINEL DE EDIÇÃO
* ============================================================
* Vorschläge für neue Buttons werden gerne entgegengenommen
* Die Reihenfolge und Anzahl der Buttons ist über die (alphabetische) Variable XEBOrder wählbar.
*
* ================================
* Control Variables
*
* window.rmEditButtons - Removes standard toolbar buttons
* window.XEBOrder - The order in which the buttons are displayed
* window.myButtons - Add user defined buttons
* <nowiki>
*/
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:MarkS/XEB/live.css&action=raw&ctype=text/css', 'text/css' );
if (typeof XEBPopups === 'undefined') {
XEBPopups = true;
}
if (typeof XEBHideDelay === 'undefined') {
// Time before the popup disappears after the mouse moves out
window.XEBHideDelay = 0.5;
}
if (typeof XEBExtendEditSummary === 'undefined') {
// Is the edit summary extended after a popup
window.XEBExtendEditSummary = true;
}
if (typeof
var usersignature = '-- ~~' + '~~';
}
var Isrc = '//upload.wikimedia.org/wikipedia/commons/';
var BDict = {
'A': ['e/e9/Button_headline2.png', 'Secondary headline', '\n===', '===', 'Secondary headline'],
'B': ['1/13/Button_enter.png', 'Line break', '<br />', '', ''],
'C': ['5/5f/Button_center.png', 'Center', '<div style="text-align: center;">\n', '\n<\/div>', 'Centred text'],
'D': ['e/ea/Button_align_left.png', 'Left-Align', '<div style="text-align: left; direction: ltr; margin-left: 1em;">\n', '\n<\/div>', 'Left-aligned text'],
'D1': ['a/a5/Button_align_right.png', 'Right-Align', '<div style="text-align: right; direction: ltr; margin-left: 1em;">\n', '\n<\/div>', 'Right-aligned text'],
'E': ['0/04/Button_array.png', 'Table', '\n{| class="wikitable" \n|- \n| 1 || 2\n|- \n| 3 || 4', '\n|}\n', ''],
'F': ['1/1e/Button_font_color.png', 'Insert coloured text', '<span style="color: ', '">Coloured text<\/span>', 'ColourName'],
'FS': ['1/1b/Button_miss_signature.png', 'Unsigned post', '<small><span class="autosigned">— Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[User:', '|', ']] ([[User talk:', '|talk]] • [[Special:Contributions/', '|contribs]]) date</span></small><!-- Template:Unsigned -->', 'user name or IP'],
'G': ['9/9e/Btn_toolbar_gallery.png', 'Picture gallery', "\n<gallery>\nImage:", "|[[M63]]\nImage:Mona Lisa.jpg|[[Mona Lisa]]\nImage:Truite arc-en-ciel.jpg|Eine [[Forelle ]]\n<\/gallery>", 'M63.jpg'],
'
'
'
'
'
'K': ['b/b4/Button_category03.png', 'Category', "[[Category:", "]]", 'Category name'],
'
'M': ['f/fd/Button_blockquote.png', 'Insert block of quoted text', '<blockquote style="border: 1px solid blue; padding: 2em;">\n', '\n<\/blockquote>', 'Block quote'],
'
'
'
'
'
'
'
'
'
'R4': ['9/9a/Button_references.png', 'Reference footer', "\n==Notes==\n<!--See http://en.wikipedia.org/wiki/Wikipedia:Footnotes for an explanation of how to generate footnotes using the <ref(erences/)> tags-->\n<div class=\'references-small\'>\n<references/>\n</div>", '', ''],
'
'
'
'
'
'
'
'TL': ['3/37/Button_tl_template.png', 'Template link', "{{subst:" + "tl|", '}}', 'Template name'],
'
'
'
'
'
'
'
'
'
'
};
var XEBOrder2 = [];
if (!mw.config.get( 'wgIsArticle
// only if edit
if (XEBPopups) {
}
}
function initButtons() {
var bc, d, i, customTools = {};
if (typeof XEBOrder !== 'string') {
// can be modified XEBOrder2 =
} else if (XEBOrder.toLowerCase() === 'all') {
$.each(BDict, function( b, value ){
});
} else {
XEBOrder2 = XEBOrder.toUpperCase().split(',');
}
$.each(BDict, function( b, value ){
// Add the start of the URL (Isrc) to the XEB buttons
BDict[b][0] = Isrc + BDict[b][0];
});
// If the user has defined any buttons then add them into the available button lists
if (typeof myButtons === 'object') {
$.each(myButtons, function( b, value ){
// custom user buttons
BDict[b] = myButtons[b];
});
}
mw.loader.using( 'user.options', function () {
if ( mw.user.options.get('usebetatoolbar') ) {
// Use the enhanced edit toolbar
mw.loader.using( 'ext.wikiEditor', function () {
$(function(){
// Build the new buttons
for (i = 0; i < XEBOrder2.length; i++) {
bc = BDict[XEBOrder2[i]];
//Check if bc is an object
// - protects if user specified a non-existant buttons
// - IE causes a javascript error when viewing a page
if (typeof bc === 'object') {
customTools[ XEBOrder2[i] ] = {
label: bc[1],
type: 'button',
icon: bc[0],
action: {
type: 'encapsulate',
options: {
pre: bc[2],
peri: bc[4],
post: bc[3]
}
}
};
}
}
$('#wpTextbox1').wikiEditor( 'addToToolbar', {
'sections': {
'extra': {
'type': 'toolbar',
'label': 'Extras'
}
},
'section': 'extra',
'groups': {
'my-buttons': {
'label': 'My buttons',
'tools': customTools
}
}
} );
});
} );
} else {
// Use the old edit toolbar
// Add the MediaWiki standard buttons into the available buttons
$.each(mw.toolbar.buttons, function( b, value ){
// add standard buttons for full XEB order changing
// BDict[b]=[];
BDict[b] = [ value.imageFile, value.speedTip, value.tagOpen, value.tagClose, value.sampleText];
// for (d in value) {BDict[b].push(value}[d]);
});
// Build the new buttons
for (i = 0; i < XEBOrder2.length; i++) {
bc = BDict[XEBOrder2[i]];
//Check if bc is an object
// - protects if user specified a non-existant buttons
// - IE causes a javascript error when viewing a page
if (typeof bc === 'object') {
//Call addButton from module mediawiki.action.edit
}
}
} );
}
/** en: Removes arbitrary standard buttons from the toolbar
* @author: [[:de:User:Olliminatore]]
* @version: 0.1 (01.10.2006) **/
function eraseButtons() {
var x, i, enExtraButtons;
//Remove the buttons the user doesn't want
if (typeof rmEditButtons !== 'object') {
return;
}
if (typeof rmEditButtons
// English Wikipedia creates 11 extra buttons which are stored in mwCustomEditButtons
// rather than mw.toolbar.buttons. However, there is no guarantee it will always be 11
// so we count them here.
enExtraButtons = window.mwCustomEditButtons.length;
mw.toolbar.buttons = [];
for (i = 0; i < enExtraButtons; i++) {
window.mwCustomEditButtons.shift();
}
}
//Sort the user's requests so we remove the button with the highest index first
//- This ensures we remove the buttons the user expects whatever order he requested the buttons in
window.rmEditButtons.sort(sortit);
//Remove individual buttons the user doesn't want
for (i = 0; i < rmEditButtons.length; i++) {
var n = rmEditButtons[i];
//Standard Wikimedia buttons
if (n >= 0 && n <
if (n <
while ((++x) <
if (x >= n) {
}
}
}
}
//Extra buttons in English Wikipedia
n = n -
if (n > 0 && n < window.mwCustomEditButtons.length) {
if (n < window.mwCustomEditButtons.length) {
while ((++x) < window.mwCustomEditButtons.length) {
if (x >= n) {
window.mwCustomEditButtons[x] = window.mwCustomEditButtons[x + 1];
}
}
}
window.mwCustomEditButtons.pop();
}
}
}
//Function:
Line 198 ⟶ 266:
//Purpose:
// Used to sort the rmEditButtons array into descending order
function sortit(a, b) {
return (b - a);
}
Line 205 ⟶ 273:
//Function:
//Purpose:
// Adds extended onclick-function to some buttons
function extendButtons() {
var allEditButtons = document.getElementById('toolbar');
if ( !
return false;
}
if (typeof editform !== 'undefined') {
if (!(window.editform = document.forms.editform)) {
return false;
}
}
// table
extendAButton(Isrc +
extendAButton(Isrc +
extendAButton(Isrc +
extendAButton(Isrc +
extendAButton(Isrc +
//extendAButton(Isrc+
// redirect -##IE doesn't like this line. Object doesn't support this property or method
//c=XEBOrder2.getIndex('V');
// if(c != -1)
// allEditButtons[bu_len+c].onclick=function(){
// var a='#REDIRECT \[\['+prompt("Which page do you want to redirect to\?")+'\]\]';
// document.editform.elements['wpTextbox1'].value=a;
// document.editform.elements['wpSummary'].value=a;
// document.editform.elements['wpWatchthis'].checked=false
// };
}
function extendAButton(url, newfunc) {
var i;
if ( !allEditButtons ) {
}
if (typeof editform !== 'undefined') {
if (!(window.editform = document.forms.editform)) {
return false;
}
}
allEditButtons = allEditButtons.getElementsByTagName('img');
for (i = 0; i < allEditButtons.length; i++) {
if (allEditButtons[i].src === url) {
}
}
Line 251 ⟶ 327:
//==========================================================================================================
function getXEBPopupDiv(name) {
var XEBMainDiv = document.getElementById('XEB');
if (XEBMainDiv ===
document.body.appendChild(XEBMainDiv);
XEBMainDiv.id =
}
var me = document.getElementById(
if
return me; } me = document.createElement(
XEBMainDiv.appendChild(me);
me.id =
me.style.position = 'absolute';
me.display = 'none';
me.visibility = 'hidden';
me.onmouseout = CheckHideXEBPopup;
me.onmouseover = cancelHidePopup;
return me;
}
//Function:
// CheckHideXEBPopup
Line 281 ⟶ 358:
// When the onMouseEvent is fired on the popup
function CheckHideXEBPopup(e) {
var x, y, ph, s, pl, pt, pw;
var m = document.getElementById('XEBmnu');
if (is_gecko) {
ph = m.offsetHeight;
s = window.getComputedStyle(m,
ph = s.height;
ph = Number(ph.substring(0, ph.length - 2));
} else {
x = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
y = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
ph = m.offsetHeight;
}
pl = curPopup.x;
pt = curPopup.y;
pw = m.style.width;
pw = Number(pw.substring(0, pw.length - 2));
if (x > (pl + 2) && x < (pl + pw - 5) && y > (pt + 2) && y < (pt + ph - 5)) {
return; }
curPopup.hideTimeout = setTimeout(hideXEBPopup, XEBHideDelay * 1000);
}
function cancelHidePopup() {
clearTimeout(curPopup.hideTimeout);
}
function hideXEBPopup() {
var XEBMainDiv = document.getElementById(
var m = document.getElementById(
XEBMainDiv.removeChild(m);
}
function XEBstartDrag(e) {
var m = new GetPos(e || event);
curPopup.startDrag.mouse = m;
curPopup.startDrag.
curPopup.startDrag.floatpopup.
curPopup.dragging = true;
}
function XEBstopDrag(e) {
if (curPopup.dragging === false) {
return;
}
curPopup.dragging = false;
}
function XEBDrag(e) {
if (curPopup.dragging === false) {
return;
}
var m = new GetPos(e || event);
var x = parseInt(curPopup.startDrag.floatpopup.x + (m.x - curPopup.startDrag.mouse.x), 10);
var y = parseInt(curPopup.startDrag.floatpopup.y + (m.y - curPopup.startDrag.mouse.y), 10);
curPopup.div.style.top = y +
curPopup.div.style.left = x +
curPopup.x = x;
curPopup.y = y;
}
Line 352 ⟶ 429:
//=============================================================================
function XEBPopup(name, x, y) {
// Make sure the popup can appear on the screen
this.IESelectedRange = XEBgetIESelectedRange();
var winW = (is_gecko) ? window.innerWidth : document.body.offsetWidth;
if ((winW - this.width) < x) {
x = (winW - this.width);
}
this.div = getXEBPopupDiv(name);
this.div.style.zIndex = 2000;
this.div.display = 'inline';
this.div.visibility = 'visible';
this.div.style.top = y + 'px';
this.x = x;
this.y = y;
this.name = name;
this.
this.
}
function setInnerHTML(text) {
var i;
var winW = (is_gecko) ? window.innerWidth : document.body.offsetWidth;
if ((winW - this.width) < this.x) {
this.x = (winW - this.width); }
this.div.style.left = this.x + 'px';
var mt =
mt += '<div id="XEBmnuTitle" class="XEBPopupTitle" onmousedown="XEBstartDrag(event)" onmouseup="XEBstopDrag(event)" onmousemove="XEBDrag(event)">Title</div>';
mt += text;
mt +=
this.div.innerHTML = mt;
//Turn off autocomplete. If the mouse moves over the autocomplete popup then x,y in CheckHidePopup is relative to the
// autocomplete popup and our popup is hidden
var InTexts = this.div.getElementsByTagName('input');
for (
if (theInput.type === 'text') {
theInput.setAttribute('autocomplete', 'off'); }
}
//Add rollover features to menu items. Doing it here means we don't have to do it for each menu
var x = XEBgetElementsByClassName(this.div, 'XEBMnuItm', 'span');
for (
theItm.onmouseout = XEBMenuMouseOut;
theItm.onmouseover = XEBMenuMouseOver;
}
this.div.style.borderWidth = 'thin';
this.div.style.borderStyle = 'solid';
this.div.style.backgroundColor = '#D0D0D0';
}
XEBPopup.prototype.width = 250;
XEBPopup.prototype.dragging = false;
XEBPopup.prototype.setInnerHTML = setInnerHTML;
var curPopup;
function GetPos(e) {
this.x = e.clientX - 10 + document.documentElement.scrollLeft + document.body.scrollLeft;
this.
}
function XEBPopupTable(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
var mt = '<p>Enter the table parameters below: <\/p>' +
//
curPopup.setInnerHTML(mt);
Line 442 ⟶ 522:
}
function insertTableCode() {
var i;
var f = document.XEBPopupTableForm;
var
var exhead = (f.inputHead.checked) ? '|- style="background: #DDFFDD;"\n' : '';
var
var
var
var align = (f.inputAlign.checked) ? 'align="center"' : '';
//generateTable(caption, exhead, nbCol, nbRow, exfield, align);
var code = '\n';
code += '{| {{prettytable}} ' + align + ' '; // en: class="wikitable"
code += (f.inputSort.checked) ? 'class="sortable" \n' : '\n';
code += caption + exhead;
if (exfield) {
code += '!\n'; }
for (i = 1; i < nbCol + 1; i++) {
code += '! FELD ' + i + '\n';
}
var items = 0;
for (var j = 0; j < nbRow; j++) {
if (exfield) {
items++;
code += '|-\n! style="background: #FFDDDD;"|ITEM ' + items + '\n';
}
code += '|-\n'; }
for (i = 0; i < nbCol; i++) {
code += '| Element ' + i + '\n';
}
}
code += '|}\n';
hideXEBPopup();
insertTags('', '', code);
extendSummary('table');
return false;
}
// Get the text currently selected by user in the textAra
// This code is based on part of the insertTags function in wikibits.js
function XEBGetSelectedText() {
var txtarea, theSelection;
if (document.editform) {
txtarea = document.editform.wpTextbox1;
Line 490 ⟶ 577:
}
// IE & Opera
if (document.selection
theSelection = document.selection.createRange().text;
}
}
// Mozilla
else if (txtarea.selectionStart || txtarea.selectionStart ===
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if (!theSelection) {
theSelection = ''; }
}
return theSelection;
Line 507 ⟶ 597:
//Notes:
// IE loses the cursor position in the textarea when the popup is used.
// So we save the cursor position here
function XEBgetIESelectedRange() {
var IESel =
var txtarea;
if (document.editform) {
Line 521 ⟶ 611:
}
// IE & Opera
if (document.selection && !is_gecko) {
txtarea.focus();
IESel.Rng = document.selection.createRange();
return IESel;
}
}
function XEBinsertText(beforeText, selText, afterText, IESelectedRange) {
var newText = beforeText + selText + afterText;
var txtarea, tr;
if (document.editform) {
txtarea = document.editform.wpTextbox1;
Line 542 ⟶ 630:
// IE
if (document.selection
tr = IESelectedRange.Rng;
tr.text = newText;
txtarea.focus();
//txtarea.caretpos=tr.duplicate();
tr.select();
return;
// Mozilla
} else if (txtarea.selectionStart || txtarea.selectionStart === 0) {
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if (endPos - startPos) {
replaced = true;
}
var scrollTop = txtarea.scrollTop;
// var myText = (txtarea.value).substring(startPos, endPos);
// if (!myText) {
// myText=sampleText;
// }
// if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
// subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
// } else {
// subst = tagOpen + myText + tagClose;
// }
txtarea.value = txtarea.value.substring(0, startPos) + newText + txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
//set new selection
if (!replaced) {
var cPos = startPos + (newText.length);
txtarea.selectionStart = cPos;
txtarea.selectionEnd = cPos;
} else {
txtarea.selectionStart = startPos + beforeText.length;
txtarea.selectionEnd = startPos + beforeText.length + selText.length;
}
txtarea.scrollTop = scrollTop;
}
// reposition cursor if possible
if (txtarea.createTextRange) {
txtarea.caretPos = document.selection.createRange().duplicate();
//txtarea.caretPos =IESelectedRange.Rng;
}
txtarea.focus();
}
//============================================================
// Table generator
//============================================================
/** en: Generate an array using
* @author: originally from fr:user:dake
* @version: 0.2 */
function generateTable(caption, exhead, nbCol, nbRow, exfield, align) {
}
function XEBPopupRef(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
curPopup.width =
var mt = '<p>Enter the reference parameters below: <\/p>' +
'" size="20">' + curPopup.setInnerHTML(mt);
// document.XEBPopupRefForm.refName.focus();
return true;
}
function insertRef() {
var f = document.XEBPopupRefForm;
var refName = f.refName.value;
var refMaterial = f.refMaterial.value;
hideXEBPopup();
var code1 = '<ref';
code1 += (refName) ? ' name="' + refName + '">' : '>';
var code2 = refMaterial;
var code3 = '<\/ref>';
XEBinsertText(code1, code2, code3, curPopup.IESelectedRange);
extendSummary('ref');
return false;
}
//===GEO LINK Function==================================================
function XEBPopupGeoLink(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
curPopup.width = 300;
var mt = '<p>Enter the ___location parameters below: <\/p>' +
curPopup.setInnerHTML(mt);
Line 675 ⟶ 771:
}
function insertGeoLink() {
var f = document.XEBPopupGeoLinkForm;
var code = '{{Coor ';
if (f.geoTitle.checked) {
code += 'title '; }
var ft = 'dms';
if (f.geoLatSec.value === '' && f.geoLonSec.value === '') { ft = 'dm'; }
if (ft === 'dm' && f.geoLatMin.value === '' && f.geoLonMin.value === '') {
ft = 'd';
}
code +=
code += '|' + f.
code += (ft === 'dm' || ft === 'dms') ? '|' + f.
code += (ft =
code +=
code += '|' + f.
code += (ft === 'dm' |
code += (ft === 'dms') ? '|' + f.geoLonSec.value : '';
code += '|' + f.geoLonEW.value;
code += '|type:' + f.geoType.value + '_region:' + f.geoRegion.value;
code += '}}';
insertTags('', '', code);
extendSummary('geo-___location');
hideXEBPopup();
Line 703 ⟶ 804:
//===Talk Page entry Function===========================================
function XEBPopupTalk(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
curPopup.width = 200;
var mt = '<div style="font-size:medium"><p>Please choose:<\/p>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(1)">Test1<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(2)">Self Test<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(3)">Nonsense<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(4)">Please stop<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(5)">Last chance<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(6)">Blanking<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(7)">Blatant<\/span><br>';
mt += '<span class="XEBMnuItm" ;onclick="XEBInsertTalk(8)">*BLOCKED*<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(9)">Spam<\/span><br>';
mt += '<span class="XEBMnuItm" onclick="XEBInsertTalk(10)">Npov<\/span><
curPopup.setInnerHTML(mt);
Line 726 ⟶ 826:
}
function XEBInsertTalk(itm) {
var code = {
1: '{' + '{subst:test1-n|}}',
2: '{' + '{subst:selftest-n|}}',
3: '{' + '{subst:test2-n|}}',
4: '{' + '{subst:test3-n|}}',
5: '{' + '{subst:test4-n|}}',
6: '{' + '{subst:test2a-n|}}',
7: '{' + '{subst:bv-n|}}',
8: '{' + '{subst:blantant|}}',
9: '{' + '{subst:spam-n|}}',
10: '{' + '{subst:NPOV user}}'
};
hideXEBPopup();
insertTags('', '', code[ itm ]);
return false;
}
function XEBPopupImage(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
curPopup.width = 300;
var mt = '<p>Enter the image parameters below: <\/p>' +
curPopup.setInnerHTML(mt);
Line 774 ⟶ 874:
return true;
}
function XEBInsertImage() {
var f = document.XEBPopupImageForm;
hideXEBPopup();
var code = '[[Image:';
code += f.imgFile.value;
code += '|' + f.imgType.value;
code += '|' + f.imgLocation.value;
code += '|' + f.imgSize.value;
code += '|' + f.imgCaption.value;
code += ']]';
insertTags('', '', code);
extendSummary('image');
Line 791 ⟶ 891:
}
function XEBPopupFormattedText(e) {
var m = new GetPos(e || event);
curPopup = new XEBPopup(
curPopup.width = 300;
var mt = '<form name="XEBPopupImageForm">' +
curPopup.setInnerHTML(mt);
Line 834 ⟶ 933:
}
function XEBUpdateSampleText() {
var f = document.XEBPopupImageForm;
}
//====================
function XEBMenuMouseOut(e) {
var targ;
if (!e)
e = window.event; }
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
targ.style.color = 'black';
}
function XEBMenuMouseOver(e) {
if (!e)
e = window.event; }
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
targ.style.color = 'red';
}
Line 864 ⟶ 971:
//=======================================================================
function XEBgetElementsByClassName(parent, clsName, htmltag)
var arr =
var elems = parent.getElementsByTagName(htmltag);
for (
( if (
arr[arr.length] = elem;
}
Line 875 ⟶ 983:
}
function extendSummary(newText) {
if (!XEBExtendEditSummary) {
}
var s = document.editform.elements.wpSummary.value;
s += (s === '') ? newText : ' +' + newText;
document.editform.elements.wpSummary.value = s;
}
function bug(msg) {
if (mw.config.get( 'wgUserName' ) === 'MarkS') {
}
}
/* </nowiki> */
|