MediaWiki:Common.js/edit.js: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(adding code for args 2-8)
(blanking code, as XEB is dead now)
Tag: Replaced
 
(45 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Version: 3.1
/* See the history of this page for the main body of code behind the obsolete extended editing toolbar (XEB). See the history of the documentation page for further information. --Iritscen */
* ============================================================
* 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
*/
 
mw.loader.load( '//wiki.oni2.net/w/index.php?title=MediaWiki: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 = 1.0;
}
if (typeof XEBExtendEditSummary === 'undefined') {
// Is the edit summary extended after a popup
window.XEBExtendEditSummary = true;
}
 
if (typeof usersignature === 'undefined') {
var usersignature = '-- ~~' + '~~';
}
 
var Isrc = '//wiki.oni2.net/w/images/';
 
var BDict = {
'A':['e/e9/Button_headline2.png','Third-level headline','\n===','===','Secondary headline'],
'B':['1/13/Button_enter.png','Line break','<br />','',''],
'C':['f/f7/Button_align_center.png','Center-aligned text','<div style="text-align: center;">\n','\n<\/div>','Centered text'],
'D':['e/ea/Button_align_left.png','Left-aligned text','<div style="text-align: left; direction: ltr; margin-left: 1em;">\n','\n<\/div>','Left-aligned text'],
'D1':['a/a5/Button_align_right.png','Right-aligned text','<div style="text-align: right; direction: ltr; margin-left: 1em;">\n','\n<\/div>','Right-aligned text'],
'E':['7/79/Button_cmpl_table.png','Simple table','\n{| class="wikitable" \n|- \n| 1 || 2\n|- \n| 3 || 4','\n|}\n',''],
'E1':['8/80/Button_smart_table.png', 'Smart table wizard', '','',''],
'F':['1/1e/Button_font_color.png','Colored text','<span style="color: ','">Colored text<\/span>','ColorName'],
'FS':['6/6d/Button_unsigned.png','Unsigned post','{{subst:unsigned|','|date}}','user name or IP'],
'G':['1/12/Button_gallery.png','Image 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':['d/d6/Button_superscript.png','Superscript','<sup>','<\/sup>','Superscript text'],
'I2':['b/bf/Button_subscript.png','Subscript','<sub>','<\/sub>','Subscript text'],
'J1':['d/d5/Button_small_text.png','Small text','<small>','<\/small>','Small Text'],
'J2':['9/99/Button_big_text.png','Big text','<big>','<\/big>','Big text'],
'K':['1/11/Button_category.png','Category',"[[Category:","]]",'Category name'],
'L':['e/e2/Button_tab_in.png','Insert tab',':','',':'],
'M':['f/fd/Button_blockquote.png','Quoted text block','<blockquote style="border: 1px solid blue; padding: 2em;">\n','\n<\/blockquote>','Block quote'],
'N':['4/4b/Button_nbsp.png','Insert non-breaking space','&nbsp;','',''],
'O':['2/23/Button_code.png','Code block','<code>','<\/code>','Code'],
'P':['3/3c/Button_pre.png','Pre-formatted text block','<pre>','<\/pre>','Pre-formatted text'],
'P1':['2/2e/Button_subpage.png','Link to sub-page','[[','/Sub_Page]]','Page'],
'Q':['1/1f/Button_list_tab.png','Definition (tabbed) list','\n; ','\n: Item 1\n: Item 2','Definition'],
'R':['e/ef/Button_reflink_start.png','Insert a reference','<ref>','<\/ref>','Insert reference material'],
'R1':['5/5f/Button_reflink_smart.png','Reference Wizard','<ref name="','','Reference name'],
'R2':['c/cb/Button_reflink_footer.png','Insert reference footer',"<references/>",'',''],
'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 text','<s>','<\/s>','Struck-out text'],
'T':['5/59/Button_template.png','Template','{{','}}','Template name'],
'TS':['a/a1/Button_table_start.png','Start a table','{|','',''],
'TC':['5/59/Button_table_cell.png','Table cell','|','',''],
'TE':['f/f0/Button_table_end.png','End a table','','|}',''],
'TR':['7/70/Button_table_row.png','Start a table row','|-','',''],
'T1':['8/82/Button_teletype.png','Teletype text','<tt>','<\/tt>','Teletype Text'],
'TL':['d/d3/Button_subst_tmpl.png','Template (substituted)',"{{subst:"+"tl|",'}}','Template name'],
'U':['f/fd/Button_underline.png','Underlined text',"<u>","<\/u>",'Underlined text'],
'V':['c/c8/Button_redirect.png','Redirect',"#REDIRECT [[","]]",'Article Name'],
'W':['5/50/Button_list_num.png','Numbered list',"\n# ","\n# Element 2\n# Element 3",'Element 1'],
'X':['f/fa/Button_list_bull.png','Bulleted list',"\n* ","\n* Element B\n* Element C",'Element A'],
'Y1':['d/d5/Button_noinclude.png','No include',"<noinclude>","<\/noinclude>",'Text'],
'Y2':['6/63/Button_includeonly.png','Include only',"<includeonly>","<\/includeonly>",'Text'],
'Z':['3/35/Button_substitute.png','Substituted page link',"{{subst:","}}",'Template'],
'AI':['c/cc/Button_adv_image.png','Advanced 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', "", "", ""],
'BF': ['e/ec/Button_base.png', 'Insert BSL function', "", "", ""]
};
 
var XEBOrder2 = [];
 
 
 
 
initButtons();
if (!mw.config.get( 'wgIsArticle' )) {
// only if edit
if (XEBPopups) {
$(extendButtons);
}
}
 
function initButtons() {
 
var bc, d, i, customTools = {};
 
if (typeof XEBOrder !== 'string') {
// can be modified
XEBOrder2 = '0,1,U,F,D,C,D1,4,A,2,3,E,G,8,H,9'.split(',');
} else if (XEBOrder.toLowerCase() === 'all') {
$.each(BDict, function( b, value ){
XEBOrder2.push(b);
});
} 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.toolbar', 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
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() === 'all') {
// 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 < mw.toolbar.buttons.length) {
if (n < mw.toolbar.buttons.length) {
x = -1;
while ((++x) < mw.toolbar.buttons.length) {
if (x >= n) {
mw.toolbar.buttons[x] = mw.toolbar.buttons[x + 1];
}
}
}
mw.toolbar.buttons.pop();
}
//Extra buttons in English Wikipedia
n = n - mw.toolbar.buttons.length;
if (n > 0 && n < window.mwCustomEditButtons.length) {
if (n < window.mwCustomEditButtons.length) {
x = -1;
while ((++x) < window.mwCustomEditButtons.length) {
if (x >= n) {
window.mwCustomEditButtons[x] = window.mwCustomEditButtons[x + 1];
}
}
}
window.mwCustomEditButtons.pop();
}
}
}
 
//Function:
// sortit
//Purpose:
// Used to sort the rmEditButtons array into descending order
function sortit(a, b) {
return (b - a);
}
 
 
//Function:
//Purpose:
// Adds extended onclick-function to some buttons
function extendButtons() {
 
var allEditButtons = document.getElementById('toolbar');
if ( !allEditButtons ) {
return false;
}
if (typeof editform !== 'undefined') {
if (!(window.editform = document.forms.editform)) {
return false;
}
}
 
//  table
extendAButton(Isrc + '8/80/Button_smart_table.png',XEBPopupTable)
extendAButton(Isrc + 'e/ef/Button_reflink_start.png',XEBPopupRef)
extendAButton(Isrc + 'b/b8/Button_Globe.png', XEBPopupGeoLink);
extendAButton(Isrc + '4/49/Button_talk.png', XEBPopupTalk);
extendAButton(Isrc + 'c/cc/Button_adv_image.png',XEBPopupImage);
extendAButton(Isrc + 'e/ec/Button_base.png',XEBPopupBSLfunc);
//extendAButton(Isrc+'d/d6/Button_superscript.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;
var allEditButtons = document.getElementById('toolbar');
if ( !allEditButtons ) {
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.indexOf(url) != -1) {
//if (allEditButtons[i].src === url) { // Cannot work because "url" does not start with "http://"; using indexOf() instead. -Iritscen
allEditButtons[i].onclick = newfunc;
}
}
}
 
//==========================================================================================================
// General purpose popup code
//==========================================================================================================
 
function getXEBPopupDiv(name) {
var XEBMainDiv = document.getElementById('XEB');
if (XEBMainDiv === null) {
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
//Purpose:
// Looks at the cursor position and if it has moved outside the popup it will close the popup
//Called:
// 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;
x = e.clientX + window.scrollX;
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;
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('XEB');
var m = document.getElementById('XEBPopup');
XEBMainDiv.removeChild(m);
}
 
function XEBstartDrag(e) {
var m = new GetPos(e || event);
curPopup.startDrag.mouse = m;
curPopup.startDrag.floatpopup.y = parseInt(curPopup.div.style.top, 10);
curPopup.startDrag.floatpopup.x = parseInt(curPopup.div.style.left, 10);
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 + 'px';
curPopup.div.style.left = x + 'px';
 
curPopup.x = x;
curPopup.y = y;
}
 
//=============================================================================
// Popup: Table
//=============================================================================
 
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 - 60);
}
 
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 = {};
this.startDrag.floatpopup = {};
}
 
function setInnerHTML(html, title) {
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 = '<div id="XEBmnu" style="width:' + this.width + 'px" >';
mt += '<div id="XEBmnuTitle" class="XEBPopupTitle" onmousedown="XEBstartDrag(event)" onmouseup="XEBstopDrag(event)" onmousemove="XEBDrag(event)">' + title + '</div>';
mt += html;
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 (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 = XEBgetElementsByClassName(this.div, 'XEBMnuItm', 'span');
for (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.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, "Table parameters");
 
return true;
}
 
function insertTableCode() {
var i;
var f = document.XEBPopupTableForm;
var caption = (f.inputCaption.checked) ? '|+ TABLE CAPTION \n' : '';
var exhead = (f.inputHead.checked) ? '|- style="background: #DDFFDD;"\n' : '';
var nbRow = parseInt(f.inputRow.value, 10);
var nbCol = parseInt(f.inputCol.value, 10);
var exfield = f.inputItems.checked;
var align = (f.inputAlign.checked) ? 'align="center"' : '';
 
var code = '\n';
code += '{| ' + align + ' ';
code += (f.inputSort.checked) ? 'class="wikitable sortable" \n' : '\n';
code += caption + exhead;
if (exfield) {
code += '!\n';
}
for (i = 1; i < nbCol + 1; i++) {
code += '! COLUMN ' + 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 ' + i + '\n';
}
}
code += '|}\n';
hideXEBPopup();
insertTags('', '', code);
extendSummary('table');
 
return false;
}
 
function XEBPopupBSLfunc(e)
{
var m = new GetPos(e || event);
 
curPopup = new XEBPopup('bslfunc', m.x, m.y + 22); // make pop-up 22px below cursor (height of button bar)
 
        /* Set width of popup (height has to be set in Live.css); labels on left are 115px,
          and each column requires 150px as long as Name field is "size 20"; the 8 arguments
          are broken into two rows, so that means the first row has five columns: Name and
          arguments 1-4 */
XEBPopup.prototype.width = 115 + (150 * 5);
 
var mt = '<form name="XEBPopupBSLFuncForm" id="XEBFormBSLFunc">' +
'<div id="bsl_platform_label">Platform(s):</div>' +
'<div id="bsl_platform_mac"><input type="checkbox" id="mac_ckbox" name="inputMac" checked><label for="mac_ckbox">Mac</label></div>' +
'<div id="bsl_platform_win"><input type="checkbox" id="win_ckbox" name="inputWin" checked><label for="win_ckbox">Win</label></div>' +
'<div id="bsl_func_label">Function</div>' +
'<div id="bsl_arg1_label">Argument 1</div>' +
'<div id="bsl_arg2_label">Argument 2</div>' +
'<div id="bsl_arg3_label">Argument 3</div>' +
'<div id="bsl_arg4_label">Argument 4</div>' +
'<div id="bsl_arg5_label">Argument 5</div>' +
'<div id="bsl_arg6_label">Argument 6</div>' +
'<div id="bsl_arg7_label">Argument 7</div>' +
'<div id="bsl_arg8_label">Argument 8</div>' +
'<div id="bsl_optional_label1">Optional:</div>' +
'<div id="bsl_optional_label2">Optional:</div>' +
'<div id="bsl_optional_arg1"><input type="checkbox" name="inputArg1Opt"></div>' +
'<div id="bsl_optional_arg2"><input type="checkbox" name="inputArg2Opt"></div>' +
'<div id="bsl_optional_arg3"><input type="checkbox" name="inputArg3Opt"></div>' +
'<div id="bsl_optional_arg4"><input type="checkbox" name="inputArg4Opt"></div>' +
'<div id="bsl_optional_arg5"><input type="checkbox" name="inputArg5Opt"></div>' +
'<div id="bsl_optional_arg6"><input type="checkbox" name="inputArg6Opt"></div>' +
'<div id="bsl_optional_arg7"><input type="checkbox" name="inputArg7Opt"></div>' +
'<div id="bsl_optional_arg8"><input type="checkbox" name="inputArg8Opt"></div>' +
'<div id="bsl_type_label1">Type:</div>' +
'<div id="bsl_type_label2">Type:</div>' +
'<div id="bsl_type_func"><select name="inputFuncType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg1"><select name="inputArg1Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg2"><select name="inputArg2Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg3"><select name="inputArg3Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg4"><select name="inputArg4Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg5"><select name="inputArg5Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg6"><select name="inputArg6Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg7"><select name="inputArg7Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_type_arg8"><select name="inputArg8Type"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_name_label1">Name:</div>' +
'<div id="bsl_name_label2">Name:</div>' +
'<div id="bsl_name_func"><input type="text" name="inputFuncName" value="" size="20"></div>' +
'<div id="bsl_name_arg1"><input type="text" name="inputArg1Name" value="" size="20"></div>' +
'<div id="bsl_name_arg2"><input type="text" name="inputArg2Name" value="" size="20"></div>' +
'<div id="bsl_name_arg3"><input type="text" name="inputArg3Name" value="" size="20"></div>' +
'<div id="bsl_name_arg4"><input type="text" name="inputArg4Name" value="" size="20"></div>' +
'<div id="bsl_name_arg5"><input type="text" name="inputArg5Name" value="" size="20"></div>' +
'<div id="bsl_name_arg6"><input type="text" name="inputArg6Name" value="" size="20"></div>' +
'<div id="bsl_name_arg7"><input type="text" name="inputArg7Name" value="" size="20"></div>' +
'<div id="bsl_name_arg8"><input type="text" name="inputArg8Name" value="" size="20"></div>' +
'<div id="bsl_default_label1">Default value:</div>' +
'<div id="bsl_default_label2">Default value:</div>' +
'<div id="bsl_default_func"><input type="text" name="inputFuncDefault" value="" size="10"></div>' +
'<div id="bsl_default_arg1"><input type="text" name="inputArg1Default" value="" size="10"></div>' +
'<div id="bsl_default_arg2"><input type="text" name="inputArg2Default" value="" size="10"></div>' +
'<div id="bsl_default_arg3"><input type="text" name="inputArg3Default" value="" size="10"></div>' +
'<div id="bsl_default_arg4"><input type="text" name="inputArg4Default" value="" size="10"></div>' +
'<div id="bsl_default_arg5"><input type="text" name="inputArg5Default" value="" size="10"></div>' +
'<div id="bsl_default_arg6"><input type="text" name="inputArg6Default" value="" size="10"></div>' +
'<div id="bsl_default_arg7"><input type="text" name="inputArg7Default" value="" size="10"></div>' +
'<div id="bsl_default_arg8"><input type="text" name="inputArg8Default" value="" size="10"></div>' +
'<div id="bsl_alt_label1">Alternate Arg.:</div>' +
'<div id="bsl_alt_label2">Alternate Arg.:</div>' +
'<div id="bsl_alt_arg1"><input type="checkbox" name="inputArg1Alt"></div>' +
'<div id="bsl_alt_arg2"><input type="checkbox" name="inputArg2Alt"></div>' +
'<div id="bsl_alt_arg3"><input type="checkbox" name="inputArg3Alt"></div>' +
'<div id="bsl_alt_arg4"><input type="checkbox" name="inputArg4Alt"></div>' +
'<div id="bsl_alt_arg5"><input type="checkbox" name="inputArg5Alt"></div>' +
'<div id="bsl_alt_arg6"><input type="checkbox" name="inputArg6Alt"></div>' +
'<div id="bsl_alt_arg7"><input type="checkbox" name="inputArg7Alt"></div>' +
'<div id="bsl_alt_arg8"><input type="checkbox" name="inputArg8Alt"></div>' +
'<div id="bsl_alttype_label1">Alt. Arg. Type:</div>' +
'<div id="bsl_alttype_label2">Alt. Arg. Type:</div>' +
'<div id="bsl_alttype_arg1"><select name="inputArg1AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg2"><select name="inputArg2AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg3"><select name="inputArg3AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg4"><select name="inputArg4AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg5"><select name="inputArg5AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg6"><select name="inputArg6AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg7"><select name="inputArg7AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_alttype_arg8"><select name="inputArg8AltType"><option value="void">void</option><option value="bool">bool</option><option value="int">int</option><option value="float">float</option><option value="string">string</option></select></div>' +
'<div id="bsl_altname_label1">Alt. Arg. Name:</div>' +
'<div id="bsl_altname_label2">Alt. Arg. Name:</div>' +
'<div id="bsl_altname_arg1"><input type="text" name="inputArg1AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg2"><input type="text" name="inputArg2AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg3"><input type="text" name="inputArg3AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg4"><input type="text" name="inputArg4AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg5"><input type="text" name="inputArg5AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg6"><input type="text" name="inputArg6AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg7"><input type="text" name="inputArg7AltName" value="" size="20"></div>' +
'<div id="bsl_altname_arg8"><input type="text" name="inputArg8AltName" value="" size="20"></div>' +
'<\/form>' +
'<div id="bsl_notes"><i>Instructions go here.<\/i></div><p\/>' +
'<div id="bsl_buttons"><p><button onClick="javascript:insertBSLFuncCode()">Insert</button>' +
'<button onClick="hideXEBPopup()">Cancel</button></div>';
 
curPopup.setInnerHTML(mt, "BSL function information");
 
return true;
}
 
function insertBSLFuncCode()
{
var f = document.XEBPopupBSLFuncForm;
 
var call = '{{BSLfunc\n';
call += '|type=' + f.inputFuncType.value + '\n';
call += '|default=' + f.inputFuncDefault.value + '\n';
call += '|name=' + f.inputFuncName.value + '\n';
if (!f.inputMac.checked) call += '|mac=no\n';
if (!f.inputWin.checked) call += '|win=no\n';
 
if (f.inputArg1Name.value)
{
if (f.inputArg1Opt.checked) call += '|arg1optional=yes\n';
call += '|arg1default=' + f.inputArg1Default.value + '\n';
call += '|arg1type=' + f.inputArg1Type.value + '\n';
call += '|arg1name=' + f.inputArg1Name.value + '\n';
if (f.inputArg1Alt.checked)
{
call += '|arg1alttype=' + f.inputArg1AltType.value + '\n';
call += '|arg1altname=' + f.inputArg1AltName.value + '\n';
}
}
 
if (f.inputArg2Name.value)
{
if (f.inputArg2Opt.checked) call += '|arg2optional=yes\n';
call += '|arg2default=' + f.inputArg2Default.value + '\n';
call += '|arg2type=' + f.inputArg2Type.value + '\n';
call += '|arg2name=' + f.inputArg2Name.value + '\n';
if (f.inputArg2Alt.checked)
{
call += '|arg2alttype=' + f.inputArg2AltType.value + '\n';
call += '|arg2altname=' + f.inputArg2AltName.value + '\n';
}
}
 
if (f.inputArg3Name.value)
{
if (f.inputArg3Opt.checked) call += '|arg3optional=yes\n';
call += '|arg3default=' + f.inputArg3Default.value + '\n';
call += '|arg3type=' + f.inputArg3Type.value + '\n';
call += '|arg3name=' + f.inputArg3Name.value + '\n';
if (f.inputArg3Alt.checked)
{
call += '|arg3alttype=' + f.inputArg3AltType.value + '\n';
call += '|arg3altname=' + f.inputArg3AltName.value + '\n';
}
}
 
if (f.inputArg4Name.value)
{
if (f.inputArg4Opt.checked) call += '|arg4optional=yes\n';
call += '|arg4default=' + f.inputArg4Default.value + '\n';
call += '|arg4type=' + f.inputArg4Type.value + '\n';
call += '|arg4name=' + f.inputArg4Name.value + '\n';
if (f.inputArg4Alt.checked)
{
call += '|arg4alttype=' + f.inputArg4AltType.value + '\n';
call += '|arg4altname=' + f.inputArg4AltName.value + '\n';
}
}
 
if (f.inputArg5Name.value)
{
if (f.inputArg5Opt.checked) call += '|arg5optional=yes\n';
call += '|arg5default=' + f.inputArg5Default.value + '\n';
call += '|arg5type=' + f.inputArg5Type.value + '\n';
call += '|arg5name=' + f.inputArg5Name.value + '\n';
if (f.inputArg5Alt.checked)
{
call += '|arg5alttype=' + f.inputArg5AltType.value + '\n';
call += '|arg5altname=' + f.inputArg5AltName.value + '\n';
}
}
 
if (f.inputArg6Name.value)
{
if (f.inputArg6Opt.checked) call += '|arg6optional=yes\n';
call += '|arg6default=' + f.inputArg6Default.value + '\n';
call += '|arg6type=' + f.inputArg6Type.value + '\n';
call += '|arg6name=' + f.inputArg6Name.value + '\n';
if (f.inputArg6Alt.checked)
{
call += '|arg6alttype=' + f.inputArg6AltType.value + '\n';
call += '|arg6altname=' + f.inputArg6AltName.value + '\n';
}
}
 
if (f.inputArg7Name.value)
{
if (f.inputArg7Opt.checked) call += '|arg7optional=yes\n';
call += '|arg7default=' + f.inputArg7Default.value + '\n';
call += '|arg7type=' + f.inputArg7Type.value + '\n';
call += '|arg7name=' + f.inputArg7Name.value + '\n';
if (f.inputArg7Alt.checked)
{
call += '|arg7alttype=' + f.inputArg7AltType.value + '\n';
call += '|arg7altname=' + f.inputArg7AltName.value + '\n';
}
}
 
if (f.inputArg8Name.value)
{
if (f.inputArg8Opt.checked) call += '|arg8optional=yes\n';
call += '|arg8default=' + f.inputArg8Default.value + '\n';
call += '|arg8type=' + f.inputArg8Type.value + '\n';
call += '|arg8name=' + f.inputArg8Name.value + '\n';
if (f.inputArg8Alt.checked)
{
call += '|arg8alttype=' + f.inputArg8AltType.value + '\n';
call += '|arg8altname=' + f.inputArg8AltName.value + '\n';
}
}
call += '}}';
hideXEBPopup();
insertTags('', '', call);
extendSummary('added ' + f.inputFuncName.value);
 
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;
} else {
// some alternate form? take the first one we can find
var areas = document.getElementsByTagName('textarea');
 
txtarea = areas[0];
}
// IE & Opera
if (document.selection && !is_gecko) {
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;
theSelection = (txtarea.value).substring(startPos, endPos);
if (!theSelection) {
theSelection = '';
}
}
return theSelection;
}
 
//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) {
txtarea = document.editform.wpTextbox1;
} else {
// some alternate form? take the first one we can find
var areas = document.getElementsByTagName('textarea');
 
txtarea = areas[0];
}
// 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;
} else {
// some alternate form? take the first one we can find
var areas = document.getElementsByTagName('textarea');
txtarea = areas[0];
}
 
// IE
if (document.selection && !is_gecko) {
 
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;
 
// 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();
}
 
function XEBPopupRef(e) {
 
var m = new GetPos(e || event);
 
curPopup = new XEBPopup('ref', m.x, m.y);
curPopup.width = 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, "Reference parameters");
// 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('geo', m.x, m.y);
curPopup.width = 300;
var mt = '<p>Enter the location parameters below: <\/p>' +
'<form name="XEBPopupGeoLinkForm">' +
'Location:<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" size="4"><\/td>' +
'<td><input type="text" name="geoLatSec" 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, "Location parameters");
document.paramForm.refName.focus();
return true;
 
}
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 += ft;
code += '|' + f.geoLatDeg.value;
code += (ft === 'dm' || ft === 'dms') ? '|' + f.geoLatMin.value : '';
code += (ft === 'dms') ? '|' + f.geoLatSec.value : '';
code += '|' + f.geoLatNS.value;
code += '|' + f.geoLonDeg.value;
code += (ft === 'dm' || ft === 'dms') ? '|' + f.geoLonMin.value : '';
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();
return false;
}
 
//===Talk Page entry Function===========================================
 
function XEBPopupTalk(e) {
var 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><br>';
 
curPopup.setInnerHTML(mt, "Talk Page");
 
return true;
 
}
 
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('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, "Image Parameters");
 
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');
 
return false;
}
 
function XEBPopupFormattedText(e) {
var 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, "Text Format Options");
 
return true;
}
 
function XEBUpdateSampleText() {
var f = document.XEBPopupImageForm;
}
 
//====================
 
function XEBMenuMouseOut(e) {
var targ;
if (!e) {
e = window.event;
}
if (e.target) {
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
 
targ.style.color = 'black';
}
 
function XEBMenuMouseOver(e) {
var targ;
if (!e) {
e = window.event;
}
if (e.target) {
targ = e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
 
targ.style.color = 'red';
}
 
//=======================================================================
// Other functions
//=======================================================================
 
function XEBgetElementsByClassName(parent, clsName, htmltag) {
var arr = [], elem;
var elems = parent.getElementsByTagName(htmltag);
for (var cls, i = 0;
(elem = elems[i]); i++) {
if (elem.className === clsName) {
arr[arr.length] = elem;
}
}
return arr;
}
 
function extendSummary(newText) {
if (!XEBExtendEditSummary) {
return;
}
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') {
alert(msg);
}
}

Latest revision as of 14:38, 25 July 2020

/* See the history of this page for the main body of code behind the obsolete extended editing toolbar (XEB). See the history of the documentation page for further information. --Iritscen */