MediaWiki:Extra-Editbuttons.js

From SpongePedia, the First SpongeBob Wiki.
Revision as of 22:19, 29 January 2011 by Luki (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Konqueror: Click Reload or press F5
  • Opera: Clear the cache in Tools → Preferences
var XEBOrder=[];
var attributes = ["imageFile","speedTip","tagOpen","tagClose","sampleText"];
var usersignature = '--\~\~\~\~';
var Isrc='http://de.spongepedia.org/skins/common/images/buttons/';
var BDict={
//'ID':['Bild','Tooltip','Vor Text','Nach Text','Beispiel'],
'A2':['headline2.png','Sekundäre Überschrift','\n=== ',' ===','Sekundäre Überschrift'],
'A3':['headline3.png','Untergeordnete Überschrift','\n==== ',' ====','Untergeordnete Überschrift'],
//Textformatierung
'U':['underline.png','Unterstrichener Text','<u>','<\/u>','Unterstrichener Text'],
'S':['strike.png','Durchgestrichener Text','<s>','<\/s>','Durchgestrichen'],
'SML':['small.png','Kleingeschriebener Text (small)','<small>','<\/small>','Klein'],
'BIG':['big.png','Größerer Text (big)','<big>','<\/big>','Groß'],
'C':['center.png','Zentriert','<div style="text-align: center;">\n','\n<\/div>','Zentriert'],
'F':['color.png','Farbiger Text','<span style="color: Farbe">','<\/span>','Farbiger Text'],
'SUP':['sup.png','Hochgestellter Text','<sup>','<\/sup>','Hochgestellter Text'],
'SUB':['sub.png','Tiefgestellter Text','<sub>','<\/sub>','Tiefgestellter Text'],
'PRE':['pre.png','Vorformatierter Text','<pre>','<\/pre>','Vorformatierter Text'],
'COD':['code.png','Code einfügen','<code>','<\/code>','Code'],
'TT':['tt.png','Schreibmaschinenstil','<tt>','<\/tt>','Teletyper Text'],
//
'G':['gallery.png','Bildergalerie','\n<gallery>\nDatei:55a SpongeBob.jpg|[[SpongeBob Schwammkopf]]\nDatei:PatrickStar.jpg|[[Patrick Star]]\nDatei:56b Thaddäus.jpg|[[Thaddäus Tentakel]]\n<\/gallery>','',''],
'T':['table.png','Tabelle','\n{| class="wikitable" border="1" \n|- \n| 1 || 2\n|- \n| 3 || 4','\n|}\n',''],
//
'K':['category.png','Kategorie','[[Kategorie:',']]','Name der Kategorie'],
'V':['template.png','Vorlage','{{','}}','Vorlagenname'],
'EP':['episode.png','Episode','[[',' (Episode)|]]','Episodentitel'],
//Liste
'L1':['list.png','Liste','\n* Element A\n* Element B\n* Element C','',''],
'L2':['numlist.png','Nummerierte Liste','\n# Element 1\n# Element 2\n# Element 3','',''],
//
'BR':['br.png','Zeilenumbruch','<br>','',''],
'BR2':['br2.png','Zeilenumbruch','<br />','',''],
'KO':['comment.png','Versteckter Kommentar','<!--','-->','Kommentar'],
'ST':['span.png','span-Tag mit CSS-Angabe','<span style="">','<\/span>','Markierter Inhalt'],
'NBS':['nbsp.png','Geschütztes Leerzeichen (nonbreaking space)','&nbsp;','',''],
//
'L':['shift.png','Setze Tab(s)',':','',':'],
'M':['blockquote.png','Markiert ein Zitat mit Absatz','<blockquote style="border: 1px solid blue; padding: 2em;">\n','\n<\/blockquote>','Text'],
//
'W':['redirect.png','Weiterleitung (Redirect)','#WEITERLEITUNG [[',']]','Ziel einfügen'],
'P':['sublink.png','Link zu einem Seiten-Abschnitt','[[Seite#',']]','Abschnitt'],
//Zeichen
'CR':['copyright.png','Copyright','©','',''],
'AZ':['quotes.png','Anführungszeichen','„','“','Text'],
'AP':['apostrophe.png','Apostroph','’','',''],
'GS':['dash.png','Gedankenstrich','–','',''],
//Vorlagen
'BK':['disambig.png','Begriffsklärungseite','{{Begriffsklärung}}','',''],
'ZI':['cite.png','Zitat','{{Zitat|','}}','Text|Autor|Quelle'],
'FS':['signature.png','Fehlende Signatur','\{\{Unsigniert|','}}','Benutzername|Zeitpunkt|' + usersignature,],
'Y1':['noinclude.png','No Include','<noinclude>','<\/noinclude>','Text'],
'Y2':['includeonly.png','Include only','<includeonly>','<\/includeonly>','Text'],
//Abstimmungen
'VP':['pro.png','Pro','#{{pro}} ' + usersignature,'',''],
'VC':['contra.png','Kontra','#{{contra}} ' + usersignature,'',''],
//
'X0':['bg.png','','','',''],
'X1':['bg.png','','','',''],
'X2':['bg.png','','','',''],
'X3':['bg.png','','','',''],
'X4':['bg.png','','','',''],
'X5':['bg.png','','','',''],
'X6':['bg.png','','','',''],
'X7':['bg.png','','','',''],
};

function addCustomButton(){
  var a = {};
  for (d in attributes) a[attributes[d]] = arguments[d];
  mwCustomEditButtons.push(a);
};

function initButtons(){
  var bc,d;
    if (typeof customEditButtons!='string') // can be modified
      XEBOrder="X0,A2,A3,U,S,SML,BIG,C,F,SUP,SUB,PRE,COD,TT,X1,G,T,X2,K,V,EP,L1,L2,X3,BR,BR2,KO,ST,NBS,X4,L,M,X5,W,P,X6,CR,AZ,AP,GS,X7,BK,ZI,FS,Y1,Y2,VP,VC".split(",");
    else if (customEditButtons.toLowerCase()=='all')
      for (b in BDict) XEBOrder.push(b);
    else XEBOrder=customEditButtons.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]=[];
	//	for (d in mwEditButtons[b])
		for (d in attributes) BDict[b].push(mwEditButtons[b][attributes[d]]);
	}

	// Build the new buttons
	for (i=0;i<XEBOrder.length;i++) {
		bc = BDict[XEBOrder[i]];
		//try { // catch not existing button names
		addCustomButton(bc[0],bc[1],bc[2],bc[3],bc[4]);
		//}
		// catch(e) {continue}
	}
	// Remove the default buttons (if requested by the user)
	eraseButtons();
};


// Table generator
/** @author: originally from fr:user:dake
* @version: 0.2 */

function generateTable(caption, exhead, nbCol, nbRow, exfield, align){
  var code = "\n";
  code += '{| class="wikitable" ' + align + '\n';
    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';
    insertTags('','', code);
    editform.elements['wpSummary'].value+=' table+';
    return false
};

function popupTable(){
  var popup = window.open('about:blank','WPtable','height=200,width=300,scrollbars=yes');
  var javaCode = '<script type="text\/javascript">function insertCode(){'
  +'var caption = (document.paramForm.inputCaption.checked)?"\|\+ TABLE CAPTION \\n":""; '
  +'var exhead = (document.paramForm.inputHead.checked)?\'\|\- style=\"background: #DDFFDD;\"\\n\':""; '
  +'var row = parseInt(document.paramForm.inputRow.value); '
  +'var col = parseInt(document.paramForm.inputCol.value); '
  +'var exfield = document.paramForm.inputItems.checked; '
  +'var align = (document.paramForm.inputAlign.checked)?\'align="center"\':""; '
  +'window.opener.generateTable(caption,exhead,col,row,exfield,align); '
  +'window.close()}<\/script>';

  popup.document.write('<html><head><title>Tabelle erstellen<\/title>'
  + javaCode +'<\/head><body>'
  +'<form name="paramForm">'
  +'Anzahl der Reihen: <input type="text" name="inputRow" value="3" size="2" \/><p\/>'
  +'Anzahl der Spalten: <input type="text" name="inputCol" value="3" size="2" \/><p\/>'
  +'Tabelle zentrieren <input type="checkbox" name="inputAlign" \/><p\/>'
  +'<\/form">'
  +'<p><a href="javascript:insertCode()">Tabelle einfügen<\/a> &nbsp; |'
  +' &nbsp;<a href="javascript:self.close()">Schließen<\/a><\/p>'
  +'<\/body><\/html>');
  popup.document.close();
  return false
};

function extendButtons(){
  if(!(allEditButtons = document.getElementById('toolbar'))) return false;
  if(typeof editform == 'undefined')
  if(!(window.editform = document.editform)) return false;

  XEBOrder.getIndex = function (item){
  if(is_gecko) return this.indexOf(item);
  else //is IE (Opera < 9)
    for (var i=0;i < this.length;i++) if (this[i]==item) return Number(i);
   	return -1
    }
    var searchbox = allEditButtons.getElementsByTagName('span')[0];
    if (searchbox) allEditButtons.appendChild(searchbox) // pay Zocky/Search Box

    allEditButtons = allEditButtons.getElementsByTagName('img');

    var bu_len = mwEditButtons.length;
    var c=0;

  if(!allEditButtons.length) return false;
	
  // Tabelle
  if((c=XEBOrder.getIndex('T')) != -1) allEditButtons[bu_len+c].onclick=popupTable;

  // Weiterleitung
  c=XEBOrder.getIndex('W');
    if(c != -1)
      allEditButtons[bu_len+c].onclick=function(){
        if (a = window.prompt("Ziel der Weiterleitung", "")) {
        a = '\#WEITERLEITUNG \[\[' + a + '\]\]';
        }
      };

  if((c = XEBOrder.getIndex('X0')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X1')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X2')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X3')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X4')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X5')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X6')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X7')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X8')) != -1) allEditButtons[bu_len+c].width = 3;
  if((c = XEBOrder.getIndex('X9')) != -1) allEditButtons[bu_len+c].width = 3;
};

if ((wgAction=="edit") || (wgAction=="submit"))
  addOnloadHook(initButtons);

if(!wgIsArticle) // only if edit
  hookEvent("load", extendButtons);
Personal tools
Namespaces

Variants
Actions
Navigation
Community
Content
Toolbox