Benutzer:Florian K/Toolbar: Unterschied zwischen den Versionen

aus Memory Alpha, der freien deutschen Star-Trek-Datenbank
Spring zu: Navigation, suche
imported>Florian K
 
imported>Florian K
K (monobook.js)
Zeile 35: Zeile 35:
 
function moreTools() {
 
function moreTools() {
 
   var tools = document.createElement("div");
 
   var tools = document.createElement("div");
  tools.id = 'mytabs';
 
  
 
   tools.appendChild(newTool('rev','Reverted'));
 
   tools.appendChild(newTool('rev','Reverted'));

Version vom 15. Juli 2005, 20:53 Uhr

Diese Toolbar erweitert eure Bearbeitungsoptionen um Kurzwahltasten für die Zusammenfassung. Sie basiert auf JavaScript; sollte Scripting durch Sicherheitsvorkehrungen oder -richtlinien verboten sein, könnt ihr dieses Script nicht einsetzen.

Ich bestätige hiermit, dass ich mit besten Wissen und Gewissen keine Schadroutinen oder sonstige versteckte Funktionen eingebaut habe. Der Einsatz findet auf eigene Gefahr statt.

Die gesetzten Browser sind sehr wenige: Firefox 1.0.4 - bitte teilt mir eure Erfahrungen mit.

Copyrightnotice

Zunächst brauche ich einen Haken, an dem ich die Toolbox andocken kann. Dazu habe ich in der Copyrightwarnung einen leeren <div>-Container eingebaut, der die ID "moretools" hat.

monobook.css

Diesen unsichtbaren Container fülle ich mit einer Umrandung und gebe ihm etwas mehr Abstand zu den Seiten.

#moretools {
    border: 1px solid #aaaaaa;
    padding: 1em;
    margin: 0.5em;
}

monobook.js

Das JavaScript basiert teilweise auf den Funktionen, die dazu verwendet werden, die WikiMarkup per Button einzufügen. Diese Toolbar könnt ihr sehen wenn ihr in den Benutzereinstellungen die Option "Editier-Werkzeugleiste anzeigen" angeschaltet habt. Diese Option wird nicht für dieses Toolbar benötigt, ich habe nur den Code "geliehen".

Es gibt drei Funktionen. Die Funktion "newTool" gibt mir ein fertiges Objekt zurück, das den nötigen Script-Link enthält, den ich dann in die Toolbar einfügen kann. In "moreTools" wird dann die Toolbar zusammengesetzt. Die könnt ihr leicht erweitern um eigene Abkürzungen. Mit "newTool('kat','Kategorie')" bekommt ihr einen Link "Kategorie", der den Text "kat " in die Zusammenfassung hinzufügt. Beachtet das Leerzeichen, das ich eingebaut habe, damit ihr mehrere Kürzel hintereinander setzen könnt. Das Leerzeichen könnt ihr bei in "newTool" bei "insertComments('"+text+" ' ','','')" verändern.

Die Funktion "insertComments" schreibt dann schließlich die Kürzel in die Zusammenfassung. Diese Funktion ist nicht auf meinem Mist gewachsen und wurde nur angepasst.

Hier der Code:

function newTool(text,desc) {
  var tool = document.createElement("a");
  tool.href = "javascript:insertComments('"+text+" ','','')";
  var toolTxt = document.createTextNode(desc);
  tool.appendChild(toolTxt);
  return tool;
}

function moreTools() {
  var tools = document.createElement("div");

  tools.appendChild(newTool('rev','Reverted'));
  tools.appendChild(document.createTextNode(" | "));
  tools.appendChild(newTool('typo','Typo'));
  tools.appendChild(document.createTextNode(" | "));
  tools.appendChild(newTool('linkfix','Linkfix'));
  tools.appendChild(document.createTextNode(" | "));
  tools.appendChild(newTool('kat','Kategorie'));
  tools.appendChild(document.createTextNode(" | "));
  tools.appendChild(newTool('format','Formatierung'));

  tools.appendChild(document.createElement("BR"));
  document.getElementById('moretools').appendChild(tools);
}
if (window.addEventListener) window.addEventListener("load",moreTools,false);
else if (window.attachEvent) window.attachEvent("onload",moreTools);

function insertComments(tagOpen, tagClose, sampleText) {

	var txtarea = document.editform.wpSummary;
	// IE
	if(document.selection  && !is_gecko) {
		var theSelection = document.selection.createRange().text;
		if(!theSelection) { theSelection=sampleText;}
		txtarea.focus();
		if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
			theSelection = theSelection.substring(0, theSelection.length - 1);
			document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
		} else {
			document.selection.createRange().text = tagOpen + theSelection + tagClose;
		}

	// Mozilla
	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
 		var startPos = txtarea.selectionStart;
		var endPos = txtarea.selectionEnd;
		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) + subst +
		  txtarea.value.substring(endPos, txtarea.value.length);
		txtarea.focus();

		var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
		txtarea.selectionStart=cPos;
		txtarea.selectionEnd=cPos;
		txtarea.scrollTop=scrollTop;

	// All others
	} else {
		var copy_alertText=alertText;
		var re1=new RegExp("\\$1","g");
		var re2=new RegExp("\\$2","g");
		copy_alertText=copy_alertText.replace(re1,sampleText);
		copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
		var text;
		if (sampleText) {
			text=prompt(copy_alertText);
		} else {
			text="";
		}
		if(!text) { text=sampleText;}
		text=tagOpen+text+tagClose;
		document.infoform.infobox.value=text;
		// in Safari this causes scrolling
		if(!is_safari) {
			txtarea.focus();
		}
		noOverwrite=true;
	}
	// reposition cursor if possible
	if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}

Einrichtung

Ihr müsst euch zwei Seiten anlegen, die Benutzer:MEIN-NAME/monobook.css und Benutzer:MEIN-NAME/monobook.js heißen, wobei "MEIN-NAME" gegen euren Benutzernamen getauscht werden muss. Dann den entsprechenden Textbereich oben in die entsprechende Datei kopieren, dann sollte es gehen. Falls es Probleme gibt, lasst esmich wissen.

Probleme

Ich habe mit meinem Browser XYZ folgendes Problem:...

  • noch offen