User:MarkS/XEB/dev.js: Difference between revisions

Content deleted Content added
MarkS (talk | contribs)
m blank parts for sortable testing
+nowiki per request
 
(37 intermediate revisions by 3 users not shown)
Line 1:
/* Version: 3.1
* ============================================================
* en: ADD SOME EXTRA BUTTONS TO THE EDITPANEL
* de: FÜGE NEUE BUTTON IN DIE WERKZEUGLEISTE
* 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' );
document.write('<link rel="stylesheet" type="text/css" href="' +
'http://en.wikipedia.org/w/index.php?title=User:MarkS/XEB/live.css' +
'&action=raw&ctype=text/css&dontcountme=s">');
 
if (typeof XEBPopups === 'undefined') {
XEBPopups = true;
}
if(typeof XEBHideDelay== 'undefined')XEBHideDelay=0.5; //Time before the popup disappears after the mouse moves out
if (typeof XEBExtendEditSummaryXEBHideDelay === 'undefined')XEBExtendEditSummary=true; // Is the edit summary extended after a popup{
// 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 usersignature === 'undefined') {
//fills the variable mwCustomEditButtons (s. function in /wikibits.js), with buttons for the Toolbar
var usersignature = '-- ~~' + '~~';
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText){
mwCustomEditButtons.push({
"imageFile": imageFile,
"speedTip": speedTip,
"tagOpen": tagOpen,
"tagClose": tagClose,
"sampleText": sampleText});
}
 
var Isrc = '//upload.wikimedia.org/wikipedia/commons/';
if (typeof usersignature == 'undefined') var usersignature = '-- \~\~\~\~';
 
var BDict = {
var Isrc='http://upload.wikimedia.org/wikipedia/commons/';
'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'],
'H': ['7/74/Button_comment.png', 'Comment', "<!--", "-->", 'Comment'],
'I1': ['6/6a/Button_sup_letter.png', 'Superscript', '<sup>', '<\/sup>', 'Superscript text'],
'I2': ['a/aa/Button_sub_letter.png', 'Subscript', '<sub>', '<\/sub>', 'Subscript text'],
'J1': ['5/58/Button_small.png', 'Small', '<small>', '<\/small>', 'Small Text'],
'J2': ['5/56/Button_big.png', 'Big text', '<big>', '<\/big>', 'Big text'],
'K': ['b/b4/Button_category03.png', 'Category', "[[Category:", "]]", 'Category name'],
'L': ['8/8e/Button_shifting.png', 'Insert tab(s)', ':', '', ':'],
'M': ['f/fd/Button_blockquote.png', 'Insert block of quoted text', '<blockquote style="border: 1px solid blue; padding: 2em;">\n', '\n<\/blockquote>', 'Block quote'],
'N': ['4/4b/Button_nbsp.png', 'nonbreaking space', '&nbsp;', '', ''],
'O': ['2/23/Button_code.png', 'Insert code', '<code>', '<\/code>', 'Code'],
'P': ['3/3c/Button_pre.png', 'Pre formatted Text', '<pre>', '<\/pre>', 'Pre formatted text'],
'P1': ['9/93/Button_sub_link.png', 'Insert link to sub-page', '[[', '/Sub_Page]]', 'Page'],
'Q': ['d/d3/Button_definition_list.png', 'Insert definition list', '\n; ', '\n: Item 1\n: Item 2', 'Definition'],
'R': ['7/79/Button_reflink.png', 'Insert a reference', '<ref>', '<\/ref>', 'Insert reference material'],
'R1': ['7/79/Button_reflink.png', 'Start a reference', '<ref name="', '', 'Reference name'],
'R2': ['9/99/Button_reflink_advanced_2.png', 'Insert reference material', '">', '</ref>', 'Reference material'],
'R3': ['1/1a/Button_reflink_advanced_3.png', 'No reference material', '', '"/>', ''],
'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>", '', ''],
'S': ['c/c9/Button_strike.png', 'Strikeout', '<s>', '<\/s>', 'Struck out text'],
'T': ['e/eb/Button_plantilla.png', 'Template', '{{', '}}', 'Template name'],
'TS': ['a/a4/TableStart.png', 'Start a table', '{|', '', ''],
'TC': ['7/71/TableCell.png', 'Table cell', '|', '', ''],
'TE': ['0/06/TableEnd.png', 'End a table', '', '|}', ''],
'TR': ['4/4c/TableRow.png', 'Start a table row', '|-', '', ''],
'T1': ['3/30/Tt_icon.png', 'Teletype text', '<tt>', '<\/tt>', 'Teletype Text'],
'TL': ['3/37/Button_tl_template.png', 'Template link', "{{subst:" + "tl|", '}}', 'Template name'],
'U': ['f/fd/Button_underline.png', 'Underlined', "<u>", "<\/u>", 'Underlined text'],
'V': ['c/c8/Button_redirect.png', 'Redirect', "#REDIRECT [[", "]]", 'Article Name'],
'W': ['8/88/Btn_toolbar_enum.png', 'Numbering', "\n# ", "\n# Element 2\n# Element 3", 'Element 1'],
'X': ['1/11/Btn_toolbar_liste.png', 'List', "\n* ", "\n* Element B\n* Element C", 'Element A'],
'Y1': ['c/ce/Button_no_include.png', 'No Include', "<noinclude>", "<\/noinclude>", 'Text'],
'Y2': ['7/79/Button_include.png', 'Include only', "<includeonly>", "<\/includeonly>", 'Text'],
'Z': ['3/35/Button_substitute.png', 'Substitute', "{{subst:", "}}", 'Template'],
'AI': ['1/1c/Button_advanced_image.png', 'Advanaced Image', "[[Image:", "|thumb|right|px|Caption]]", 'FileName.jpg'],
'GEO': ['b/b8/Button_Globe.png', 'Geo ___location', "", "", ""],
'TALK': ['4/49/Button_talk.png', 'Add talk template', "", "", ""]
};
 
var XEBOrder2 = [];
// English Wikipedia creates 11 extra buttons which are stored in mwCustomEditButtons
// rather than mwEditButtons. However, there is no guarantee it will always be 11
// so we count them here.
var enExtraButtons=mwCustomEditButtons.length;
 
 
 
var XEBOrder2=[];
 
initButtons();
 
if (!mw.config.get( 'wgIsArticle' )) {
 
// only if edit
 
if (XEBPopups) {
addOnloadHook(initButtons);
$(extendButtons);
if(!wgIsArticle)// only if edit
}
{
 
if(XEBPopups)hookEvent("load", extendButtons);
}
 
function initButtons() {
 
var bc, d, i, customTools = {};
 
if (typeof XEBOrder !== 'string') {
// can be modified
XEBOrder2 =" 'A,D,C,D1,F,U,J1,E,G,Q,W,X,K,L,H,O,R,T"'.split("',"');
} else if (XEBOrder.toLowerCase() === 'all') {
$.each(BDict, function( b, value ){
for (b in BDict) XEBOrder2.push(b);
else XEBOrder2=XEBOrder.toUpperCasepush().split(","b);
});
} else {
XEBOrder2 = XEBOrder.toUpperCase().split(',');
}
 
$.each(BDict, function( b, value ){
for (b in BDict) BDict[b][0] = Isrc+BDict[b][0]; // // Add the start of the URL (Isrc) to the XEB buttons
// Add the start of the URL (Isrc) to the XEB buttons
// If the user has defined any buttons then add them into the available button lists
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 (typeof myButtons=='object')
if ( mw.user.options.get('usebetatoolbar') ) {
for (b in myButtons) BDict[b] = myButtons[b]; // custom user buttons
// Use the enhanced edit toolbar
// Add the media wiki standard buttons into the available buttons
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
for (b in mwEditButtons) { // add standard buttons for full XEB order changing
// - 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', {
// BDict[b]=[];
'sections': {
BDict[b]=[mwEditButtons[b].imageFile,mwEditButtons[b].speedTip,mwEditButtons[b].tagOpen,mwEditButtons[b].tagClose,mwEditButtons[b].sampleText];
'extra': {
'type': 'toolbar',
'label': 'Extras'
}
},
'section': 'extra',
'groups': {
'my-buttons': {
'label': 'My buttons',
'tools': customTools
}
}
} );
});
 
} );
// for (d in mwEditButtons[b]) BDict[b].push(mwEditButtons[b][d]);
} 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
});
 
// Build the new buttons
for (i=0;i<XEBOrder2.length;i++) {
for (i = 0; i < XEBOrder2.length; i++) {
bc = BDict[XEBOrder2[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
//Call addCustomButton in wikibits
addCustomButton mw.toolbar.addButton(bc[0], bc[1], bc[2], bc[3], bc[4] /* , imageId, selectText */ );
}
}
 
// Remove the default buttons (if requested by the user)
eraseButtons();
}
} );
}
 
 
/** 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![0] === 'string' && rmEditButtons[0].toLowerCase() === 'objectall') return;{
// 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 = [];
if (typeof rmEditButtons[0] == 'string' && rmEditButtons[0].toLowerCase() == 'all')
for (i = 0; i < enExtraButtons; i++) {
{
window.mwCustomEditButtons.shift();
mwEditButtons=[];
}
for(i=0;i<enExtraButtons;i++){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];
for(i=0;i<rmEditButtons.length;i++){
var n=rmEditButtons[i];
//Standard Wikimedia buttons
if (n >= 0 && n <mwEditButtons mw.toolbar.buttons.length) {
if (n <mwEditButtons mw.toolbar.buttons.length) {
var x = -1;
while ((++x) <mwEditButtons mw.toolbar.buttons.length) {
if (x >= n) {
mwEditButtonsmw.toolbar.buttons[x] = mwEditButtonsmw.toolbar.buttons[x + 1];
}
}
}
mwEditButtons mw.toolbar.buttons.pop();
}
//Extra buttons in English Wikipedia
n = n -mwEditButtons mw.toolbar.buttons.length;
if (n > 0 && n < window.mwCustomEditButtons.length) {
if (n < window.mwCustomEditButtons.length) {
var x = -1;
while ((++x) < window.mwCustomEditButtons.length) {
if (x >= n) {
window.mwCustomEditButtons[x] = window.mwCustomEditButtons[x + 1];
}
}
}
window.mwCustomEditButtons.pop();
}
}
};
 
//Function:
Line 138 ⟶ 266:
//Purpose:
// Used to sort the rmEditButtons array into descending order
function sortit(a, b) {
return (b - a);
}
 
Line 145 ⟶ 273:
//Function:
//Purpose:
// Adds extended onclick-function to some buttons
function extendButtons() {
var allEditButtons = document.getElementById('toolbar');
 
if ( !(allEditButtons = document.getElementById('toolbar'))) return false;{
return false;
if(typeof editform != 'undefined')
}
if(!(window.editform = document.forms['editform'])) return false;
if (typeof editform !== 'undefined') {
if (!(window.editform = document.forms.editform)) {
return false;
}
}
 
// table
extendAButton(Isrc +" '0/04/Button_array.png"', XEBPopupTable);
extendAButton(Isrc +" '7/79/Button_reflink.png"', XEBPopupRef);
extendAButton(Isrc +" 'b/b8/Button_Globe.png"', XEBPopupGeoLink);
extendAButton(Isrc +" '4/49/Button_talk.png"', XEBPopupTalk);
extendAButton(Isrc +" '1/1c/Button_advanced_image.png"', XEBPopupImage);
//extendAButton(Isrc+"'6/6a/Button_sup_letter.png"',XEBPopupFormattedText);
 
// 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(!(var allEditButtons = document.getElementById('toolbar'))) return false;
if ( !allEditButtons ) {
if(typeof editform != 'undefined')
if(!(window.editform = document.forms['editform'])) return false;
}
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) {
{
if( allEditButtons[i].srconclick ==url) newfunc;
{
allEditButtons[i].onclick=newfunc;
}
}
Line 191 ⟶ 327:
//==========================================================================================================
 
function getXEBPopupDiv(name) {
var XEBMainDiv = document.getElementById('XEB');
{
if (XEBMainDiv === document.getElementById("XEB"null); {
if( XEBMainDiv ==null document.createElement('div'){;
XEBMainDiv=document.createElement("div");
document.body.appendChild(XEBMainDiv);
XEBMainDiv.id =" 'XEB"';
}
 
var me = document.getElementById("'XEBPopup"' && name);
if(! (me !== null)) {
return me;
}
me = document.createElement("'div"');
XEBMainDiv.appendChild(me);
 
me.id =" 'XEBPopup"';
me.style.position = 'absolute';
me.display = 'none';
me.visibility = 'hidden';
me.onmouseout = CheckHideXEBPopup;
me.onmouseover = cancelHidePopup;
return me;
}
 
//Function:
// CheckHideXEBPopup
Line 221 ⟶ 358:
// When the onMouseEvent is fired on the popup
 
function CheckHideXEBPopup(e) {
var x, y, ph, s, pl, pt, pw;
m= document.getElementById("XEBmnu");
var m = document.getElementById('XEBmnu');
if(is_gecko)
if (is_gecko) {
{
ph = m.offsetHeight;
var x = e.clientX + window.scrollX;
var y = e.clientY + window.scrollY;;
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;
else
y = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
{
ph = m.offsetHeight;
var x=event.clientX+ document.documentElement.scrollLeft + document.body.scrollLeft;
var 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);
curPopup.hideTimeout = setTimeout(hideXEBPopup, XEBHideDelay * 1000);
}
 
function cancelHidePopup() {
clearTimeout(curPopup.hideTimeout);
{
clearTimeout(curPopup.hideTimeout)
}
 
function hideXEBPopup() {
var XEBMainDiv = document.getElementById("'XEB"');
var m = document.getElementById("'XEBPopup"');
XEBMainDiv.removeChild(m);
}
 
function XEBstartDrag(e) {
var m = new GetPos(e || event);
{
curPopup.startDrag.mouse = m;
m=new GetPos(e||event);
curPopup.startDrag.mousefloatpopup.y =m parseInt(curPopup.div.style.top, 10);
curPopup.startDrag.floatpopup.yx = parseInt(curPopup.div.style.topleft, 10);
curPopup.dragging = true;
curPopup.startDrag.floatpopup.x=parseInt(curPopup.div.style.left);
curPopup.dragging=true;
}
 
function XEBstopDrag(e) {
if (curPopup.dragging === false) {
{
return;
if(curPopup.dragging==false)return;
}
curPopup.dragging=false;
curPopup.dragging = false;
}
 
function XEBDrag(e) {
if (curPopup.dragging === false) {
{
return;
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 +" 'px"';
curPopup.div.style.left = x +" 'px"';
 
curPopup.x = x;
curPopup.y = y;
}
 
Line 292 ⟶ 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;
this.IESelectedRange=XEBgetIESelectedRange();
if ((winW - this.width) < x) {
 
x = (winW - this.width);
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.startDrag =new Object{};
this.startDrag.floatpopup =new Object{};
}
 
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";
this.div.style.left = this.x + 'px';
 
var mt =" '<div id='"XEBmnu'" style='"width:"' + this.width + "px'px" >"';
mt += '<div id="XEBmnuTitle" class="XEBPopupTitle" onmousedown="XEBstartDrag(event)" onmouseup="XEBstopDrag(event)" onmousemove="XEBDrag(event)">Title</div>';
mt += text;
mt +=" '</div>"';
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 (var i = 0; i < InTexts.length; i++) {
var theInput = InTexts[i];
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 =getElementsByClassName XEBgetElementsByClassName(this.div, 'XEBMnuItm', 'span');
for (var i = 0; i < x.length; i++) {
var theItm = x[i];
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.xy = e.clientXclientY - 10 + document.documentElement.scrollLeftscrollTop + document.body.scrollLeftscrollTop;
this.y=e.clientY-10+ document.documentElement.scrollTop + document.body.scrollTop;
}
 
function XEBPopupTable(e) {
var m = new GetPos(e || event);
 
curPopup = new XEBPopup("'table"', m.x, m.y);
 
var mt = '<p>Enter the table parameters below: <\/p>' +
+'<form name="XEBPopupTableForm">' +
+'Table caption: <input type="checkbox" name="inputCaption"><p\/>' +
+'Table alignment: center<input type="checkbox" name="inputAlign"><p\/>' +
+'Table headline: colored<input type="checkbox" name="inputHead"><p\/>' +
+'Number of rows: <input type="text" name="inputRow" value="3" size="2"><p\/>' +
+'Number of columns: <input type="text" name="inputCol" value="3" size="2"><p\/>' +
//+ 'Alternating grey lines: <input type="checkbox" name="inputLine" checked="1" ><p\/>' +
+'Item column: <input type="checkbox" name="inputItems" ><p\/>' +
+'Sortable: <input type="checkbox" name="inputSort" ><p\/>' +
+'<\/form>' +
+'<i>The default table allows for fields and values only.<\/i><p\/>' +
+'Check "Item column" to allow for the table to have fields, items, and values.<\/i><p\/>' +
+'<p><button onClick="javascript:insertTableCode()">Insert</button>' +
+'<button onClick="hideXEBPopup()">Cancel</button>';
 
curPopup.setInnerHTML(mt);
Line 382 ⟶ 522:
}
 
function insertTableCode() {
var i;
f=document.XEBPopupTableForm;
var f = document.XEBPopupTableForm;
var caption = (f.inputCaption.checked)?"|+ TABLE CAPTION \n":"";
var exheadcaption = (f.inputHeadinputCaption.checked) ? '|-+ style="background:TABLE CAPTION #DDFFDD;"\n' :""; '';
var exhead = (f.inputHead.checked) ? '|- style="background: #DDFFDD;"\n' : '';
var nbRow = parseInt(f.inputRow.value);
var nbColnbRow = parseInt(f.inputColinputRow.value, 10);
var exfieldnbCol = parseInt(f.inputItemsinputCol.checked;value, 10);
var alignexfield = (f.inputAligninputItems.checked)?'align="center"':"";
var align = (f.inputAlign.checked) ? 'align="center"' : '';
 
//generateTable(caption, exhead, nbCol, nbRow, exfield, align);
var code = '\n';
 
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';
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';
} else {
code += '|-\n';
}
for (i=0;i<nbCol;i++) code += '| Element\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;
{
var txtarea;
if (document.editform) {
txtarea = document.editform.wpTextbox1;
Line 430 ⟶ 577:
}
// IE & Opera
if (document.selection && !is_gecko) {
theSelection = document.selection.createRange().text;
{
varif (!theSelection) = document.selection.createRange().text;{
if (! theSelection) theSelection= '';
}
}
// Mozilla
else if (txtarea.selectionStart || txtarea.selectionStart === '0') {
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
var theSelection = (txtarea.value).substring(startPos, endPos);
if (!theSelection) {
theSelection = '';
}
}
return theSelection;
Line 447 ⟶ 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 =new Object{};
var txtarea;
if (document.editform) {
Line 461 ⟶ 611:
}
// IE & Opera
if (document.selection && !is_gecko) {
 
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 482 ⟶ 630:
 
// IE
if (document.selection && !is_gecko) {
 
tr=IESelectedRange.Rng;
tr = IESelectedRange.Rng;
tr.text=newText;
tr.text = newText;
// Mozilla
txtarea.focus();
} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
//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.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;
 
// All other browsers get no toolbar.
// There was previously support for a crippled "help"
// bar, but that caused more problems than it solved.
}
// 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 MediawikiMediaWiki syntax
* @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("'ref"', m.x, m.y);
curPopup.width =500 300;
var mt = '<p>Enter the reference parameters below: <\/p>' +
+'<form name="XEBPopupRefForm">' +
+'Name:<input type="text" name="refName" value="" size="10"><p\/>' +
+'Material:<input type="text" name="refMaterial" value="' + XEBGetSelectedText() +
'" size="20">' +
+'<\/form>' +
+'<p><button onClick="javascript:insertRef()">Insert</button>' +
+'<button onClick="hideXEBPopup()">Cancel</button>';
 
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);
{
m=new GetPos(e||event);
 
curPopup = new XEBPopup("'geo"', m.x, m.y);
curPopup.width = 300;
var mt = '<p>Enter the ___location parameters below: <\/p>' +
+'<form name="XEBPopupGeoLinkForm">' +
+'LoctionLocation:<p\/>' +
+'<table style="background: transparent;">' +
+'<tr><td>Latitude:<\/td><td><input type="text" autocomplete="off" name="geoLatDeg" value="" size="4"><\/td>' +
+'<td><input type="text" name="geoLatMin" value="" size="4"><\/td>' +
+'<td><input type="text" name="geoLatSec" value="" size="4"><\/td>' +
+'<td><select name="geoLatNS"><option value="N">N<option value="S">S</select><\/td><\/tr>' +
+'<tr><td>Longitude:<\/td><td><input type="text" name="geoLonDeg" value="" size="4"><\/td>' +
+'<td><input type="text" name="geoLonMin" value="" size="4"><\/td>' +
+'<td><input type="text" name="geoLonSec" value="" size="4"><\/td>' +
+'<td><select name="geoLonEW"><option value="E">E<option value="W">W</select><\/td><\/tr>' +
+'<\/table>' +
+'Region:<input type="text" name="geoRegion" value="" size="4"><p\/>' +
+'Type:' +
+'<SELECT NAME="geoType" size="5">' +
+'<OPTION VALUE="country">Country<OPTION VALUE="state">State' +
+'<OPTION VALUE="adm1st">Admin unit, 1st level<OPTION VALUE="adm2st">Admin unit, 2nd level' +
+'<OPTION VALUE="city">City<OPTION VALUE="airport">Airport' +
+'<OPTION VALUE="mountain">Mountain<OPTION VALUE="isle">Isle' +
+'<OPTION VALUE="waterbody">Waterbody<OPTION VALUE="landmark" SELECTED>Landmark' +
+'<OPTION VALUE="forest">forest</SELECT><br>' +
+'Title: <input type="checkbox" name="geoTitle" ><p\/>' +
+'<\/form>' +
+'<p><button onClick="javascript:insertGeoLink()">Insert</button>' +
+'<button onClick="hideXEBPopup()">Cancel</button>';
 
curPopup.setInnerHTML(mt);
Line 615 ⟶ 771:
 
}
function insertGeoLink() {
var f = document.XEBPopupGeoLinkForm;
{
f=document.XEBPopupGeoLinkForm;
 
var code = '{{Coor ';
if (f.geoTitle.checked) {
code += 'title ';
}
ft='dms';
var ft = 'dms';
if (f.geoLatSec.value === '' && f.geoLonSec.value === '') {
ft = 'dm';
}
if(ft=='dm'&&f.geoLatMin.value==''&&f.geoLonMin.value=='')ft='d';
if (ft === 'dm' && f.geoLatMin.value === '' && f.geoLonMin.value === '') {
code+=ft;
ft = 'd';
code+='|'+f.geoLatDeg.value;
}
code+=(ft=='dm'||ft=='dms')?'|'+f.geoLatMin.value:'';
code +=( ft=='dms')?'|'+f.geoLatSec.value:'';
code += '|' + f.geoLatNSgeoLatDeg.value;
code += (ft === 'dm' || ft === 'dms') ? '|' + f.geoLonDeggeoLatMin.value : '';
code += (ft =='dm'||ft== 'dms') ? '|' + f.geoLonMingeoLatSec.value : '';
code +=(ft=='dms')? '|' + f.geoLonSecgeoLatNS.value:'';
code += '|' + f.geoLonEWgeoLonDeg.value;
code += (ft === 'dm' |type:| ft === '+f.geoType.value+dms'_region:) ? '|' + f.geoRegiongeoLonMin.value : '';
code += (ft === 'dms') ? '|' + f.geoLonSec.value : '';
code+='}}';
code += '|' + f.geoLonEW.value;
insertTags('','', code);
code += '|type:' + f.geoType.value + '_region:' + f.geoRegion.value;
code += '}}';
insertTags('', '', code);
extendSummary('geo-___location');
hideXEBPopup();
Line 643 ⟶ 804:
//===Talk Page entry Function===========================================
 
function XEBPopupTalk(e) {
var m = new GetPos(e || event);
{
m=new GetPos(e||event);
 
curPopup = new XEBPopup("'talk"', m.x, m.y);
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></divbr>';
 
curPopup.setInnerHTML(mt);
Line 666 ⟶ 826:
 
}
function XEBInsertTalk(itm)
{
hideXEBPopup();
if(itm==1)code='Thank you for experimenting with {{#if:|the page [[:]] on}} Wikipedia{{#if:{{{diff|}}}|&nbsp;as you did with [{{{diff}}} this edit]}}. Your test worked, and it has been [[Help:Reverting|reverted]] or removed. Please use [[Wikipedia:Sandbox|the sandbox]] for any other tests you may want to do. Take a look at the [[Wikipedia:Introduction|welcome page]] to learn more about contributing to our encyclopedia.<!-- Template:Test (first level warning) -->';
if(itm==2)code='[[Image:Information.svg|25px]] Welcome to Wikipedia. Thank you for experimenting{{{{{subst|}}}#if:|&#32;with the page [[:]]}}, and for [[Help:Reverting|reverting]] your edits. Please take a look at the [[Wikipedia:Introduction|welcome page]] to learn more about contributing to our encyclopedia. If you would like to experiment again, please use the [[Wikipedia:Sandbox|sandbox]] next time. {{{2|}}} <!-- {{test-self}} -->';
if(itm==3)code='Please do not add nonsense to Wikipedia{{#if:|, as you did {{#if:{{{diff|}}}|with [{{{diff}}} this edit]}} to the [[:]] page|{{#if:{{{diff|}}}|, as you did with [{{{diff}}} this edit]}}}}. It is considered [[Wikipedia:Vandalism|vandalism]]. If you would like to experiment, use the [[Wikipedia:Sandbox|sandbox]]. Thank you. <!-- Template:Test2 (second level warning) -->';
if(itm==4)code='Please stop. If you continue to [[Wikipedia:Vandalism|vandalize]] pages, {{#if:|as you did {{#if:{{{diff|}}}|with [{{{diff}}} this edit]}} to [[:]],|{{#if:{{{diff|}}}as you did with [{{{diff}}} this edit],}}}} you will be [[Wikipedia:Blocking policy|blocked]] from editing Wikipedia. <!-- Template:Test3 (Third level warning) -->';
if(itm==5)code='{{{icon|[[Image:Stop hand nuvola.svg|30px|left]] }}}This is your '''last warning'''. The next time you [[Wikipedia:Vandalism|vandalize]] Wikipedia{{{{{subst|}}}#if:|, as you did to [[:]]}}, you will be [[Wikipedia:Blocking policy|blocked]] from editing. {{{2|}}}<!-- Template:uw-vandalism4 -->';
if(itm==6)code='Please do not remove content from Wikipedia{{#if:|, as you did to [[:]]}}. It is considered [[Wikipedia:Vandalism|vandalism]]. If you would like to experiment, please use the [[Wikipedia:Sandbox|sandbox]]. Thank you. <!-- Template:Test2a (Second level warning) -->';
if(itm==7)code='[[Image:Stop hand.svg|left|30px]] Welcome to Wikipedia. We invite everyone to contribute constructively to our encyclopedia. Take a look at the [[Wikipedia:Introduction|welcome page]] if you would like to learn more about contributing. However, unconstructive edits{{#if:|, such as those you made to [[:]],}} are considered [[Wikipedia:Vandalism|vandalism]] and are immediately reverted. If you continue in this manner you may be '''[[Wikipedia:blocking policy|blocked]] from editing without further warning'''. Please stop, and consider improving rather than damaging the work of others. Thank you. <!-- Template:Blatantvandal (serious warning) -->';
if(itm==8)code='{{subst:blantant|}}';
if(itm==9)code='Please do not add inappropriate external links to Wikipedia{{{{{subst|}}}#if:|, as you did in [[:]]}}. [[Wikipedia:What Wikipedia is not#Wikipedia_is_not_a_directory|Wikipedia is not a mere directory of links]] nor should it be used for advertising or promotion. Inappropriate links include (but are not limited to) links to personal web sites, links to web sites with which you are affiliated, and links that exist to attract visitors to a web site or promote a product. See [[Wikipedia:External links|the external links guideline]] and [[Wikipedia:Spam|spam policies]] for further explanations of links that are considered appropriate. If you feel the link should be added to the article, then please discuss it on the article's talk page rather than re-adding it. See the [[Wikipedia:Welcome, newcomers|welcome page]] to learn more about Wikipedia. Thank you.<!-- Template:Spam -->';
if(itm==10)code='Please read [[Wikipedia:Neutral point of view|Wikipedia's neutral point of view policy]], which all articles must follow. {{#if:{{{1|}}}|This is especially a concern at [[:{{{1}}}]].}} Wikipedia is a neutral, [[Wikipedia:Verifiability|verifiable]] [[encyclopedia]]; it is not a place to argue a particular point of view. Thank you.<!-- Template:NPOV0 -->';
 
function XEBInsertTalk(itm) {
insertTags('','', code);
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);
{
m=new GetPos(e||event);
 
curPopup = new XEBPopup("'image"', m.x, m.y);
curPopup.width = 300;
 
var mt = '<p>Enter the image parameters below: <\/p>' +
+'<form name="XEBPopupImageForm">' +
+'File:<input type="text" name="imgFile" value="' + XEBGetSelectedText() + '" size="30"><br>' +
+'Type:<SELECT NAME="imgType">' +
+'<OPTION VALUE="thumb">Thumbnail' +
+'<OPTION VALUE="frame">Frame' +
+'<OPTION VALUE="none">[not specified]' +
+'</SELECT><br>' +
+'Location:<SELECT NAME="imgLocation">' +
+'<OPTION VALUE="left">Left' +
+'<OPTION VALUE="center">Centre' +
+'<OPTION VALUE="right">Right' +
+'<OPTION VALUE="none">None' +
+'</SELECT><br>' +
+'Size:<input type="text" name="imgSize" value="100" size="3">px<br>' +
+'Caption:<input type="text" name="imgCaption" value="" size="30"><\/p>' +
+'<\/form>' +
+'<p><button onClick="javascript:XEBInsertImage()">Insert</button>' +
+'<button onClick="hideXEBPopup()">Cancel</button>';
 
curPopup.setInnerHTML(mt);
Line 714 ⟶ 874:
return true;
}
 
function XEBInsertImage()
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 731 ⟶ 891:
}
 
function XEBPopupFormattedText(e) {
var m = new GetPos(e || event);
{
m=new GetPos(e||event);
 
curPopup = new XEBPopup("'image"', m.x, m.y);
curPopup.width = 300;
 
var mt = '<form name="XEBPopupImageForm">' +
+'<table style="background: transparent;">' +
+'<tr><td>Bold:<\/td><td><input type="checkbox" name="textBold"><\/td>' +
+'<td>Superscript:<\/td><td><input type="checkbox" name="textSuperscript"><\/td><\/tr>' +
+'<tr><td>Italic:<\/td><td><input type="checkbox" name="textItalic"><\/td>' +
+'<td>Subscript:<\/td><td><input type="checkbox" name="textSubscript"><\/td><\/tr>' +
+'<tr><td>Strike:<\/td><td><input type="checkbox" name="textStrike"><\/td>' +
+'<td>&nbsp;<\/td><\/tr>' +
+'</table>' +
+'Size:<SELECT NAME="textSize">' +
+'<OPTION VALUE="small">small' +
+'<OPTION VALUE="normal">[Normal]' +
+'<OPTION VALUE="big">big' +
+'</SELECT><br><table style="background:transparent;"><tr><td>Colour:<\/td><td>' +
+'<table width="100px">' +
+'<tr><td colspan="4">None<\/td></tr>' +
+'<tr><td bgcolor="aqua">&nbsp;<\/td><td bgcolor="gray"> &nbsp;<\/td>' +
+'<td bgcolor="olive">&nbsp;<\/td><td bgcolor="navy">&nbsp;<\/td><\/tr>' +
+'<tr><td bgcolor="black">&nbsp;<\/td><td bgcolor="green"> &nbsp;<\/td>' +
+'<td bgcolor="purple">&nbsp;<\/td><td bgcolor="teal">&nbsp;<\/td><\/tr>' +
+'<tr><td bgcolor="blue">&nbsp;<\/td><td bgcolor="lime">&nbsp;<\/td>' +
+'<td bgcolor="red">&nbsp;<\/td><td bgcolor="white">&nbsp;<\/td><\/tr>' +
+'<tr><td bgcolor="fuchsia">&nbsp;<\/td><td bgcolor="maroon">&nbsp;<\/td>' +
+'<td bgcolor="silver">&nbsp;<\/td><td bgcolor="yellow">&nbsp;<\/td><\/tr>' +
+'</table><\/td><\/tr>' +
+'<\/form>' +
+'Sample:' +
+'<span id="sampleText">Text</span>"' +
+'<p><button onClick="javascript:XEBInsertFormattedText()">Insert</button>' +
+'<button onClick="hideXEBPopup()">Cancel</button>';
 
curPopup.setInnerHTML(mt);
Line 774 ⟶ 933:
}
 
function XEBUpdateSampleText() {
var f = document.XEBPopupImageForm;
{
f=document.XEBPopupImageForm;
}
 
//====================
 
function XEBMenuMouseOut(e) {
{
var targ;
if (!e) var {
e = window.event;
}
if (e.target) targ = e.target;
else if (e.srcElementtarget) targ = e.srcElement;{
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
 
targ.style.color = 'black';
}
 
function XEBMenuMouseOver(e) {
{ var targ;
if (!e) var {
e = window.event;
}
if (e.target) targ = e.target;
else if (e.srcElementtarget) targ = e.srcElement;{
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
 
targ.style.color = 'red';
}
 
Line 804 ⟶ 971:
//=======================================================================
 
function getElementsByClassNameXEBgetElementsByClassName(parent, clsName, htmltag){ {
var arr = new[], Array()elem;
var elems = parent.getElementsByTagName(htmltag);
for ( var cls, i = 0;
( elem = elems[i] ); i++ ) {
if ( elem.className === clsName ) {
arr[arr.length] = elem;
}
Line 815 ⟶ 983:
}
 
function extendSummary(newText) {
if (!XEBExtendEditSummary) {
{
if(!XEBExtendEditSummary) return;
}
s=document.editform.elements['wpSummary'].value;
var s = document.editform.elements.wpSummary.value;
s+=(s=='')?newText:' +'+newText;
s += (s === '') ? newText : ' +' + newText;
document.editform.elements['wpSummary'].value=s;
document.editform.elements.wpSummary.value = s;
}
 
function bug(msg) {
if (mw.config.get( 'wgUserName' ) === 'MarkS') {
{
if(wgUserName=='MarkS') alert(msg);
}
}
/* </nowiki> */
 
 
//</pre>