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

From OniGalore
Jump to navigation Jump to search
(removing geo link and talk page button code, which isn't useful for us)
(blanking code, as XEB is dead now)
Tag: Replaced
 
(140 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* <pre> */
/* 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 */
//<source lang="JavaScript">
 
//Version: 3.1
//============================================================
// ADD SOME EXTRA BUTTONS TO THE EDIT TOOLBAR
//============================================================
 
//================================
//Control Variables
//
//rmEditButtons - Removes standard toolbar buttons
//XEBOrder - The order in which the buttons are displayed
 
importStylesheetURI( 'http://wiki.oni2.net/MediaWiki:live.css&action=raw&ctype=text/css' );
 
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 XEBExtendEditSummary == 'undefined')XEBExtendEditSummary=true; // Is the edit summary extended after a popup
 
//fills the variable mwCustomEditButtons (s. function in /wikibits.js), with buttons for the Toolbar 
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText){
mwCustomEditButtons.push({
  "imageFile": imageFile,
  "speedTip": speedTip,
  "tagOpen": tagOpen,
  "tagClose": tagClose,
  "sampleText": sampleText});
}
 
if (typeof usersignature == 'undefined') var usersignature = '-- \~\~\~\~';
 
var Isrc='http://wiki.oni2.net/w/images/';
 
// 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 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','Smart Table','\n{| class="wikitable" \n|- \n| 1 || 2\n|- \n| 3 || 4','\n|}\n',''],
'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':['e/ef/Button_reflink_start.png','Start a reference','<ref name="','','Reference name'],
'R2':['9/90/Button_reflink_src.png','Insert reference material','">','</ref>','Reference material'],
'R3':['c/c6/Button_reflink_end.png','No reference material','','"/>',''],
'R4':['c/cb/Button_reflink_footer.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']
};
 
var XEBOrder2=[];
 
 
addOnloadHook(initButtons);
if(!wgIsArticle)// only if edit
{
if(XEBPopups)hookEvent("load", extendButtons);
}
 
function initButtons(){
 
var bc,d;
 
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')
for (b in BDict) XEBOrder2.push(b);
else XEBOrder2=XEBOrder.toUpperCase().split(",");
 
for (b in BDict) BDict[b][0] = Isrc+BDict[b][0]; // // 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
 
if (typeof myButtons=='object')
  for (b in myButtons) BDict[b] = myButtons[b]; // custom user buttons
// Add the media wiki standard buttons into the available buttons
 
for (b in mwEditButtons) { // add standard buttons for full XEB order changing
 
// BDict[b]=[];
BDict[b]=[mwEditButtons[b].imageFile,mwEditButtons[b].speedTip,mwEditButtons[b].tagOpen,mwEditButtons[b].tagClose,mwEditButtons[b].sampleText];
 
// for (d in mwEditButtons[b]) BDict[b].push(mwEditButtons[b][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-existent button
// - IE causes a javascript error when viewing a page
if(typeof bc=='object')
{
 
//Call addCustomButton in wikibits
addCustomButton(bc[0],bc[1],bc[2],bc[3],bc[4]);
}
}
 
// 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(){
 
//Remove the buttons the user doesn't want
        //Line below added so that we can use the defaults specified in XEBOrder2 above without duplicating the buttons that are already part of the toolbar -- Iritscen
        var rmEditButtons=["all"];
 
if(typeof rmEditButtons!='object') return;
 
if (typeof rmEditButtons[0] == 'string' && rmEditButtons[0].toLowerCase() == 'all')
{
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
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<mwEditButtons.length){
if(n<mwEditButtons.length){
var x = -1;
while((++x)<mwEditButtons.length)
if(x>=n)
mwEditButtons[x] = mwEditButtons[x+1];
}
mwEditButtons.pop();
}
//Extra buttons in English Wikipedia
n=n-mwEditButtons.length;
if(n>0 && n<mwCustomEditButtons.length){
if(n<mwCustomEditButtons.length){
var x = -1;
while((++x)<mwCustomEditButtons.length)
if(x>=n)
mwCustomEditButtons[x] = mwCustomEditButtons[x+1];
}
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(){
 
if(!(allEditButtons = document.getElementById('toolbar'))) return false;
if(typeof editform != 'undefined')
if(!(window.editform = document.forms['editform'])) return false;
 
//  table
extendAButton(Isrc+"Button_cmpl_table.png",XEBPopupTable)
extendAButton(Isrc+"Button_reflink.png",XEBPopupRef)
extendAButton(Isrc+"Button_adv_image.png",XEBPopupImage)
//extendAButton(Isrc+"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)
{
if(!(allEditButtons = document.getElementById('toolbar'))) 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)
{
allEditButtons[i].onclick=newfunc;
}
}
}
 
//==========================================================================================================
// General purpose popup code
//==========================================================================================================
 
function getXEBPopupDiv(name)
{
XEBMainDiv= document.getElementById("XEB");
if(XEBMainDiv==null){
XEBMainDiv=document.createElement("div");
document.body.appendChild(XEBMainDiv);
XEBMainDiv.id="XEB";
}
 
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){
m= document.getElementById("XEBmnu");
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
{
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);
}
 
function cancelHidePopup()
{
clearTimeout(curPopup.hideTimeout)
}
 
function hideXEBPopup(){
XEBMainDiv= document.getElementById("XEB");
m= document.getElementById("XEBPopup");
XEBMainDiv.removeChild(m);
}
 
function XEBstartDrag(e)
{
m=new GetPos(e||event);
curPopup.startDrag.mouse=m;
curPopup.startDrag.floatpopup.y=parseInt(curPopup.div.style.top);
curPopup.startDrag.floatpopup.x=parseInt(curPopup.div.style.left);
curPopup.dragging=true;
}
 
function XEBstopDrag(e)
{
if(curPopup.dragging==false)return;
curPopup.dragging=false;
}
 
function XEBDrag(e)
{
if(curPopup.dragging==false)return;
 
m=new GetPos(e||event);
x=parseInt(curPopup.startDrag.floatpopup.x+(m.x-curPopup.startDrag.mouse.x));
y=parseInt(curPopup.startDrag.floatpopup.y+(m.y-curPopup.startDrag.mouse.y));
 
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();
 
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)
{
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";
 
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+=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
x=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.y=e.clientY-10+ document.documentElement.scrollTop + document.body.scrollTop;
}
 
function XEBPopupTable(e){
m=new GetPos(e||event);
 
curPopup=new XEBPopup("table",m.x,m.y);
 
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);
 
return true;
}
 
function insertTableCode(){
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);
var nbCol = parseInt(f.inputCol.value);
var exfield = f.inputItems.checked;
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';
} else code += '|-\n';
for (i=0;i<nbCol;i++) code += '| Element\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;
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)
{
var 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;
}
 
//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) {
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;
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();
}
 
 
//============================================================
// Table generator
//============================================================
/** en: Generate an array using Mediawiki syntax
* @author: originally from fr:user:dake
* @version: 0.2 */
function generateTable(caption, exhead, nbCol, nbRow, exfield, align){
};
 
 
function XEBPopupRef(e){
 
m=new GetPos(e||event);
 
curPopup=new XEBPopup("ref",m.x,m.y);
curPopup.width=500;
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(){
f=document.XEBPopupRefForm;
var refName = f.refName.value;
var refMaterial=f.refMaterial.value;
hideXEBPopup();
var code1='<ref';
code1+=(refName)?' name="'+refName+'">':'>';
code2=refMaterial;
code3='<\/ref>'
XEBinsertText(code1,code2,code3,curPopup.IESelectedRange);
 
extendSummary('ref');
return false;
}
 
function XEBPopupImage(e)
{
m=new GetPos(e||event);
 
curPopup=new XEBPopup("image",m.x,m.y);
curPopup.width=300;
 
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);
 
return true;
}
function XEBInsertImage()
{
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)
{
m=new GetPos(e||event);
 
curPopup=new XEBPopup("image",m.x,m.y);
curPopup.width=300;
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>Color:<\/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);
 
return true;
}
 
function XEBUpdateSampleText()
{
f=document.XEBPopupImageForm;
}
 
//====================
 
function XEBMenuMouseOut(e)
{
var targ;
if (!e) var 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) var 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 = new Array();
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;
s=document.editform.elements['wpSummary'].value;
s+=(s=='')?newText:' +'+newText;
document.editform.elements['wpSummary'].value=s;
}
 
 
//fix edit summary prompt for undo
//this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the
//edit summary unchanged
//this was added by [[User:Deskana]], code by [[User:Tra]]
//see bug 8912
addOnloadHook(function () {
    if (document.location.search.indexOf("undo=") != -1
        && document.getElementsByName('wpAutoSummary')[0]) {
        document.getElementsByName('wpAutoSummary')[0].value='1';
    }
})
 
//</source>
/* </pre> */

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 */