Benutzer:Florian K/Toolbar: Unterschied zwischen den Versionen

aus Memory Alpha, der freien deutschen Star-Trek-Datenbank
Spring zu: Navigation, suche
imported>Florian K
(Probleme)
imported>Florian K
(monobook.js: fehlerfrei)
Zeile 17: Zeile 17:
  
 
== monobook.js ==
 
== monobook.js ==
 +
;ACHTUNG:''Es gibt eine verbesserte Version, die einen schlankeren und fehlerfreieren Aufbau hat. Frühere Probleme mit Opera sind beseitigt.''
 +
 
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 [[Memory_Alpha:Hilfe_f%C3%BCr_Benutzereinstellungen#Textfeld-Gr.C3.B6sse|Benutzereinstellungen]] die Option "Editier-Werkzeugleiste anzeigen" angeschaltet habt. Diese Option wird nicht für dieses Toolbar benötigt, ich habe nur den Code "geliehen".  
 
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 [[Memory_Alpha:Hilfe_f%C3%BCr_Benutzereinstellungen#Textfeld-Gr.C3.B6sse|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&nbsp;" 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 '''"<nowiki>insertComments('"+text+"&nbsp;' ','','')</nowiki>"''' verändern.
+
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&nbsp;" 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 '''"<nowiki>inserts('"+text+"&nbsp;' ','')</nowiki>"''' 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.
 
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.
Zeile 27: Zeile 29:
 
<pre>function newTool(text,desc) {
 
<pre>function newTool(text,desc) {
 
   var tool = document.createElement("a");
 
   var tool = document.createElement("a");
   tool.href = "javascript:insertComments('"+text+" ','','')";
+
   tool.href = "javascript:inserts('"+text+" ','')";
 
   var toolTxt = document.createTextNode(desc);
 
   var toolTxt = document.createTextNode(desc);
 
   tool.appendChild(toolTxt);
 
   tool.appendChild(toolTxt);
Zeile 34: Zeile 36:
  
 
function moreTools() {
 
function moreTools() {
   var tools = document.createElement("div");
+
   var tools = document.getElementById('moretools');
 
 
 
   tools.appendChild(newTool('rev','Reverted'));
 
   tools.appendChild(newTool('rev','Reverted'));
 
   tools.appendChild(document.createTextNode(" | "));
 
   tools.appendChild(document.createTextNode(" | "));
Zeile 45: Zeile 46:
 
   tools.appendChild(document.createTextNode(" | "));
 
   tools.appendChild(document.createTextNode(" | "));
 
   tools.appendChild(newTool('format','Formatierung'));
 
   tools.appendChild(newTool('format','Formatierung'));
 +
  tools.appendChild(document.createTextNode(" | "));
 +
  tools.appendChild(newTool('/* TEXT */ ','Kommentar'));
  
 
   tools.appendChild(document.createElement("BR"));
 
   tools.appendChild(document.createElement("BR"));
  document.getElementById('moretools').appendChild(tools);
 
 
}
 
}
 
if (window.addEventListener) window.addEventListener("load",moreTools,false);
 
if (window.addEventListener) window.addEventListener("load",moreTools,false);
 
else if (window.attachEvent) window.attachEvent("onload",moreTools);
 
else if (window.attachEvent) window.attachEvent("onload",moreTools);
  
function insertComments(tagOpen, tagClose, sampleText) {
+
function inserts(tag, sampleText) {
 
 
 
var txtarea = document.editform.wpSummary;
 
var txtarea = document.editform.wpSummary;
// IE
+
txtarea.value = txtarea.value + tag;
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();
 
 
}</pre>
 
}</pre>
  

Version vom 27. Juli 2005, 22:24 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

ACHTUNG
Es gibt eine verbesserte Version, die einen schlankeren und fehlerfreieren Aufbau hat. Frühere Probleme mit Opera sind beseitigt.

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 "inserts('"+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:inserts('"+text+" ','')";
  var toolTxt = document.createTextNode(desc);
  tool.appendChild(toolTxt);
  return tool;
}

function moreTools() {
  var tools = document.getElementById('moretools');
  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.createTextNode(" | "));
  tools.appendChild(newTool('/* TEXT */ ','Kommentar'));

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

function inserts(tag, sampleText) {
	var txtarea = document.editform.wpSummary;
	txtarea.value = txtarea.value + tag;
}

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:...

  • Mit Opera 8.01 werden die Begriffe nicht hintereinander gehängt sondern der Inhalt der Zusammenfassung ausgetauscht -- Florian - talk 23:20, 19. Jul 2005 (UTC)