Hilfe:Edittools.js

aus Kamelopedia, der wüsten Enzyklopädie
Version vom 21. Oktober 2010, 01:33 Uhr von Nachteule (Diskussion | Beiträge) (var load_edittools = true;)
Zur Navigation springen Zur Suche springen

//<source lang="javascript">

//Diese Seite wird von MediaWiki:Monobook.js aus geladen, sobald eine Seite bearbeitet wird
// anzeigen & verbergen (siehe bald Diskussionsseite)
 function einaus (inhalt, einblenden, ausblenden) {
   var thisLevel  = document.getElementById(inhalt);
   var otherLevel = document.getElementById(einblenden);
   var linkLevel  = document.getElementById(ausblenden);
   if (thisLevel.style.display == 'none') {
       thisLevel.style.display = 'block';
       otherLevel.style.display = 'none';
       linkLevel.style.display = 'inline';
   } else {
       thisLevel.style.display = 'none';
       otherLevel.style.display = 'inline';
       linkLevel.style.display = 'none';
   }
 }

/** fügt Klick-Kat (kat) am Ende des Textes im Editierfensters ein */ function add_cat(kat) {

   document.editform.wpTextbox1.value += '\n';

}

//-----------Holt aus einer Vorlage den Text zwischen dem ersten "

{{" und "}}" raus 
//-----------und patched das ins Eingabefeld  
function Get_Page(Page){
	jQuery.ajax({
		url: wgScript,
		context: document.body,
		dataType: "text", 
		data: 'title='+Page+'&action=raw&templates=expand',
		success:  function(data){
			var x = data.split("<pre>");
			if (x[1]){
				var y = x[1].replace(/\s*/,"").split("

");

insertVorlage(, , y[0]); }else{

alert("kein verwertbares Objekt.

 vorhanden?");
			}
		}
	});
}
//------------------------------------------------------------------------------------

/** bastelt die Edittools-Box */
addOnloadHook(function() {
    var kategorieNamen = [
        "Abkürzung",
        "Adel",
        "Affen",
        "Ägypten",
        "Aliens",
        "Alkohol",
        "Amphibien",
        "Anatomie",
        "Architektur",
        "Artikel, die wo so aussehen, wie die Dinge, die sie beschreiben tun",
        "Artikel und Kamele mit eigenem Skin",
        "Astronomie",
        "Aua",
        "Ausgestorben",
        "Auto",
        "Bahn",
        "Bären",
        "Baum",
        "Bayern",
        "Behörden",
        "Beruf",
        "Bildung",
        "Biographie",
        "Biologie",
        "Böses Kamel",
        "Botanik",
        "Brauchtum",
        "Chamäleons",
        "Chemie",
        "China",
        "Computer",
        "Denkmal",
        "Desserts & Salate",
        "Deutschland",
        "Dichter & Denker",
        "Dickhäuter",
        "Dienstleistung",
        "Drogen",
        "Eier",
        "Elektrotechnik",
        "Entdecker",
        "Enten",
        "Erfinder",
        "Eulen",
        "Fabelwesen",
        "Fäkalien",
        "Farben",
        "Fastfood",
        "Feminismus",
        "Film",
        "Firma",
        "Fische",
        "Fleisch",
        "Fluss",
        "Freizeit",
        "Frisuren",
        "Gastronomie",
        "Gebäck",
        "Gebirge",
        "Geheim",
        "Geheimdienst",
        "Geistlicher",
        "Genie & Wahnsinn",
        "Geographie",
        "Geologie",
        "Geschichte",
        "Gesellschaft",
        "Getränk",
        "Gewässer",
        "Gilden",
        "Google",
        "Götter",
        "Grammatik",
        "Gutes Kamel",
        "Gutmenschentum",
        "Häh?",
        "Haushaltsgeräte",
        "Herdenverhalten",
        "Helden",
        "Hornträger",
        "Hunde",
        "Hygiene",
        "Industrie",
        "Insekten",
        "Inseln",
        "Jahrestag",
        "Japan",
        "Kalender",
        "Kamele",
        "Kamelkunde",
        "Kamelopedia",
        "Kasusativ",
        "Katzen",
        "Kleidung",
        "Komische Kamele",
        "Komische Typen",
        "Komische Viecher",
        "Kommunikation",
        "Kosmetik",
        "Krabbeltiere",
        "Krankheiten",
        "Krieg",
        "Kriminalität",
        "Kulinarik",
        "Kulturgut",
        "Kunst",
        "Kunstrichtung",
        "Künstler",
        "Land & Leute",
        "Landschaften",
        "Landwirtschaft",
        "Lied",
        "Listen",
        "Literatur",
        "Löcher",
        "Logik",
        "Luft & Raumfahrt",
        "Lyrik",
        "Märchen",
        "Maschinen",
        "Maßeinheit",
        "Mathematik",
        "Mechanik",
        "Medien",
        "Medizin",
        "Microsoft",
        "Mikroben",
        "Milch & Käse",
        "Militär & Polizei",
        "Mischwesen",
        "Möbel",
        "Mode",
        "Muscheln & Schnecken",
        "Musik",
        "Musiker",
        "Musikinstrument",
        "Musikrichtungen",
        "Mythologie",
        "Nachrichten",
        "Nagetiere",
        "Name",
        "Natur",
        "Nudeln & Pasta",
        "Oberflächliches",
        "Obst & Gemüse",
        "Optik & Lichttechnik",
        "Organisationen",
        "Ort",
        "Pferde & Esel",
        "Philosophie",
        "Physik",
        "Pilze",
        "Planeten",
        "Plem-Plem",
        "Politik",
        "Politiker",
        "Projekt",
        "Psychologie",
        "Pyramiden",
        "Raubtier",
        "Re(h)kursion",
        "Recht",
        "Religion",
        "Rezepte",
        "Rindviecher",
        "Rohstoffe",
        "Sammelartikel",
        "Saurier",
        "Schach",
        "Schafe",
        "Schauspieler & Entertainer",
        "ScheibchenWelt",
        "Schifffahrt",
        "Schlangen",
        "Schöner Wohnen",
        "Schule",
        "Schweine",
        "Schweiz",
        "Sexualität",
        "Soziologie",
        "Spezies",
        "Spiel",
        "Sport",
        "Sportler",
        "Sprache",
        "Sprachwissenschaft",
        "Staat",
        "Stadt",
        "Stuchbabe",
        "Süßigkeiten",
        "Suppen & Soßen",
        "Technik",
        "Textilien",
        "Theorie",
        "Tiger",
        "Tisch",
        "Touristik",
        "Uhren",
        "Umfrage",
        "Unternehmer",
        "Unterwasser",
        "USA",
        "Verkehr",
        "Verkehrsmittel",
        "Verpackung",
        "Verschwörungstheorien",
        "Verwechslungen",
        "Vögel",
        "Waffen",
        "Wale",
        "Wärmetechnik",
        "Werbung",
        "Werkzeuge & Geräte",
        "Wetter",
        "Wikipedia",
        "Wirtschaft",
        "Wissenschaft",
        "Wissenschaftler",
        "Wortsinn & Tiefsinn",
        "WTF-8",
        "Würmer",
        "Wüste",
        "Wurst",
        "Zahl",
        "Zauberei",
        "Zeit",
        "Zeitgeschehen",
        "Zum Kotzen",
        "Zusammenrottung"
    ];
        
    function kategorienHTML() {
        var html    = '<a href="javascript:einaus(\'kats\',\'clickein\',\'clickaus\')">[anzeigen]</a>

'; return html; } function sonderzeichenHTML() { var html = 'Sonderzeichen:
'; html += '<a href="javascript:einaus(\'sonder\',\'sonderein\',\'sonderaus\')">[anzeigen]</a>

'; return html; } //------------------------------------------------------------------ //Jeder Eintrag besteht aus max. 3 Parametern, die mit einem "°" getrennt werden: // P1: wenn leer: Wird P2 als neue Überschrift eingefügt // wenn nicht leer: P1 wird als klickbarer Titel dargestellt und auch in das Editfeld gepatched // ausser P2 ist vorhanden // P2: wenn vorhanden: Wird anstatt von P1 ins Editfeld gepatched ausser P2=Load // wenn P2=Load : Wird die Seite/Vorlage in P3 geladen und der Inhalt zwischen // dem ersten "
Vorlage:" und "" ins Editfeld gepatched

   var VorlagenNamen = [];

   // Spezialvorlagen für die Bürokraten - nur im Bürokratenspiel ganz nach oben:
   if (wgPageName.substring(0,23) == "Projekt:Bürokratenspiel")
       VorlagenNamen = VorlagenNamen.concat([
        "°Bürokratie",
        "Ablehnung°Bürokratenspiel/Formulare/Ablehnung",
        "Abstimmung°Bürokratenspiel/Formulare/Abstimmung",
        "Anfechtung°Bürokratenspiel/Formulare/Anfechtung",
        "Anfrage°Bürokratenspiel/Formulare/Anfrage",
        "Anmerkung°Bürokratenspiel/Formulare/Anmerkung",
        "Antrag°Bürokratenspiel/Formulare/Antrag",
        "Anweisung°Bürokratenspiel/Formulare/Anweisung",
        "Bearbeitung°Bürokratenspiel/Formulare/Bearbeitung",
        "Beschluss°Bürokratenspiel/Formulare/Beschluss",
        "Beschwerde°Bürokratenspiel/Formulare/Beschwerde",
        "Feststellung°Bürokratenspiel/Formulare/Feststellung",
        "Formfehler°Bürokratenspiel/Formulare/Formfehler",
        "Genehmigung°Bürokratenspiel/Formulare/Genehmigung",
        "Gutachten°Bürokratenspiel/Formulare/Gutachten",
        "Interne Mitteilung°Bürokratenspiel/Formulare/Interne Mitteilung",
        "Kenntnisnahme°Bürokratenspiel/Formulare/Kenntnisnahme",
        "Maßnahme°Bürokratenspiel/Formulare/Maßnahme",
        "Mecklenburg-Vorpommer°Bürokratenspiel/Formulare/Mecklenburg-Vorpommer",
        "Mitteilung°Bürokratenspiel/Formulare/Mitteilung",
        "Nicht zuständig°Bürokratenspiel/Formulare/Nicht zuständig",
        "Rechenschaftsbericht°Bürokratenspiel/Formulare/Rechenschaftsbericht",
        "Rechtshinweis°Bürokratenspiel/Formulare/Rechtshinweis",
        "Rückzug°Bürokratenspiel/Formulare/Rückzug",
        "Rüge°Bürokratenspiel/Formulare/Rüge",
        "Stellungnahme°Bürokratenspiel/Formulare/Stellungnahme",
        "Ungültig°Bürokratenspiel/Formulare/Ungültig",
        "Verfügung°Bürokratenspiel/Formulare/Verfügung",
        "Verwarnung°Bürokratenspiel/Formulare/Verwarnung"
   ]);
   
   // Allgemeine Vorlagen
   VorlagenNamen = VorlagenNamen.concat([
	"°Hinweise",
	"siehe°s",
	"siehe auch°sa",
	"besuche bitte°bb",
	"siehe vielleicht°sv",
	"Lies mal°lm",
	"siehe besser°sb",
	"Siehe dazu lieber°sl",
	"negativ beeinflussen°nb",
	"Dann geh doch°gd",
	"siehe nicht°sn2",
	"Siehe besser nicht°sn",
	"auf gar keinen Fall°sk",
	"siehe eben nicht°sn",
	"Hier wartet man°hwm",
	"nichts zu tun mit°nt",
	"Vergleiche mit°vg",
	"verwechseln mit°zv",
	"Nicht zu verwechseln°nv",
	"Tut nichts zur Sache°st",
        "Siehe aber°Sab",
        "Beachte jedoch°Bj",
	"WWW°sw",
	"siehe Kamelionary°sy",

	"°Auszeichnungen",
	"GaGAWahl",
	"GanzGut (Artikel)°GanzGut",
	"GanzGut2 (Abbildung)°GanzGut2",
	"GanzGut3 (Animation)°GanzGut3",
        "GanzGut4 (Anomalie)°GanzGut4",
        "GanzGut5 (Audio)°GanzGut5",
	"Hw",
	"Exzellent",
	"Wahl°Wahl | Start = ~~~~~ | Stimmen =



", "Wahlende", "Geschmiedet", "°Qualitätssicherung", "Trash", "Begraben", "Überarbeiten", "Humorantrag", "Relevanz", "Kompatibel", "Privatkram", "Weltbild", "Kuhdorf", "Dorftrottel", "Schlechtschreibung", "Glossar", "Urv", "°Ab da wirds nett", "Stub", "Gleicht", "Nicht versenken", "Schizophren", "Was", "Text fehlt°Text", "Mager", "°Praktisches", "Bügeln", "Fortsetzung", "Schon gewusst", "GaGA Teaser°GaGATeaser
| Kopfzeile = Schlagzeile
| Bild = Bildname ohne "Bild:"
| Grösse = Bildbreite ohne "px"
| Bildausrichtung = right oder left
| Text = Teasertext
| Fußzeile = Weitere...
| Bildunterschrift =
", "Dieser Artikel", "Schmiede", "Untot", "Nix kapiche", "BegriffsklärungWP", "WPTitel", "Kamelionary°Load°Vorlage:Kamelionary/preload", "°Für Bilder", "img°img
| Bildname (ohne Bild:)
| alt =
| name =
| title = Tooltip
| link =
| width =
| height =
", "Drexxzeuch", "NichtGNU", "Wiki doof", "TempBild", "ROSTklärung°ROSTklärung|~~~", "°Listen", "Listenartikel", "TOC", "°Andere Welt", "Gesungene Kamelopedia", "°Kamelbox positiv", "Moin", "Glückwunsch", "Glückwunsch2", "Hallo", "Keks", "Preis", "Hinweise", "DankeKAT", "Lesezirkelwerbung", "Pate", "Patenkind", "Patenkind?", "°Kamelbox negativ", "Artikelschwemme", "Vorschau", "Urlaub", "Vermisst", "Rüge", "Kacka", "Gangsta", "Plonk", "URV-Mahnung", "Versiegelt", "°Artikelschmuck", "Begriffsklärung", "Begriffsklärung2", "Begriffsklärung3", "BegriffsklärungVoll", "BegriffsklärungWP", "Begriffsverzerrung", "Cool", "Elektrohinweis", "Erklärbär", "Gesichtet", "Gesundheitshinweis", "Kotzen", "Merkelsatz", "Merksatz", "Mürrebär", "Navbox", "Ref°Ref|1", "Note°Note|1|Norddeutsches Amtsblatt", "Rechtshinweis", "Religionshinweis", "Scherz", "Selbstlöschung", "Spoiler", "Systematik°Load°Vorlage:Systematik", "Systematik Film°Load°Vorlage:Systematik_Film", "Systematik Bühne°Load°Vorlage:Systematik_Bühne", "Tipp", "Topsecret", "Traurig", "Vorlagenfrei", "Vorlagenwahn", "Warnung°Warnung|Grund", "Wikipedia", "Zitat°Zitat|Zitattext|Zitierter|Thema", "°Artikel-Navis", "Alphabet", "Europa", "Farben", "Kapst", "Klassiker", "Kontinente", "Mammon", "PSE", "PSEBIG", "Partei", "Pronomen", "Sinn", "Umwelt", "WOMO", "Werbeblock", "Zahlen", "Zahlenstrahl" ]); function add_Templ(T) { var Teil = T.split("°"); if (Teil[0]){ var html = "<a href=\"javascript:insertVorlage('\{\{','\}\}','"; if (Teil[1]){ if (Teil[1]=="Load"){ var html = "<a href=\"javascript:Get_Page('" + Teil[2] + "');\">" }else{ var html = "<a href=\"javascript:insertVorlage('\{\{','\}\}','" + Teil[1] + "');\">" } }else{ var html = "<a href=\"javascript:insertVorlage('\{\{','\}\}','" + Teil[0] + "');\">" } html +="" + Teil[0] + "</a>"; }else{ var html = "
"+Teil[1]+""; } return html; } function VorlagenHTML() { var html = 'Vorlagen:
'; html += '<a href="javascript:einaus(\'Templ\',\'Templein\',\'Templaus\')">[anzeigen]</a>

'; return html; } //------------------------------------------------------------------------------- var inhalt = 'Klick-Kategorien: <a href="/index.php/Hilfe:Edittools" target="_blank" title="Hilfe (in neuem Fenster)">?</a>
'; inhalt += kategorienHTML(); inhalt += "

"; inhalt += sonderzeichenHTML(); inhalt += "

"; inhalt += VorlagenHTML(); inhalt += "

"; var kat_div_2 = document.createElement('div'); kat_div_2.id = 'kat_div_2'; kat_div_2.innerHTML += inhalt; document.getElementById('editform').insertBefore(kat_div_2, document.getElementById('antispam-container')); // Leerzeilen am Ende des Artikeltextes entfernen document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(/\s+$/, ""); }); //---------------------------------------------------------------------------- //Brauche ich wegen NL-Problem bei der Paramter-Übergabe für Vorlagen: //selText = sampleText.replace(/
/g,"\n"); function insertVorlage(tagOpen, tagClose, sampleText) { 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]; } var selText, isSample = false; if (document.selection && document.selection.createRange) { // IE/Opera //save window scroll position if (document.documentElement && document.documentElement.scrollTop){ var winScroll = document.documentElement.scrollTop; }else if (document.body){ var winScroll = document.body.scrollTop; } //get current selection txtarea.focus(); var range = document.selection.createRange(); selText = range.text; //insert tags selText = sampleText.replace(/
/g,"\n"); range.text = tagOpen + selText + tagClose; //mark sample text as selected if (range.moveStart) { if (window.opera){tagClose = tagClose.replace(/\n/g,);} range.moveStart('character', - tagClose.length); range.moveEnd('character', - tagClose.length); } range.select(); //restore window scroll position if (document.documentElement && document.documentElement.scrollTop){ document.documentElement.scrollTop = winScroll; }else if (document.body){ document.body.scrollTop = winScroll; } } else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla //save textarea scroll position var textScroll = txtarea.scrollTop; //get current selection txtarea.focus(); var startPos = txtarea.selectionStart; var endPos = txtarea.selectionEnd; selText = txtarea.value.substring(startPos, endPos); //insert tags selText = sampleText.replace(/
/g,"\n"); txtarea.value = txtarea.value.substring(0, startPos) + tagOpen + selText + tagClose + txtarea.value.substring(endPos, txtarea.value.length); //set new selection txtarea.selectionStart = startPos + tagOpen.length + selText.length; txtarea.selectionEnd = startPos + tagOpen.length + selText.length; //restore textarea scroll position txtarea.scrollTop = textScroll; } } // <source lang="javascript"> /* EditTools support: add a selector, change into true buttons, enable for all text input fields The special characters to insert are defined at MediaWiki:Edittools. */ var load_edittools = true; // Globals: getElementsByClassName, hookEvent, addEvent (from wikibits.js) if ( load_edittools == true ) { // Legacy. Do we really need this? if ( typeof( EditTools_set_focus ) == 'undefined' ) { var EditTools_set_focus = true; } if ( typeof( EditTools_set_focus_initially ) == 'undefined' ) { var EditTools_set_focus_initially = EditTools_set_focus; } if ( typeof( EditTools_initial_subset ) == 'undefined' ) { var EditTools_initial_subset = 0; } var EditTools = { createSelector: function() { var spec = document.getElementById( 'specialchars' ); if ( !spec ) { return; } var sb = getElementsByClassName( spec, 'p', 'specialbasic' ); if ( sb.length <= 1 ) { return; // Only care if there is more than one } var sel = document.createElement( 'select' ); sel.style.display = 'inline'; // sel.setAttribute( 'onchange', 'EditTools.chooseCharSubset( selectedIndex, true );' ); // Apparently, this doesn't work on IE6. Use an explicit event handling function instead: sel.onchange = EditTools.handleOnchange; var initial = EditTools_initial_subset; if ( isNaN( initial ) || initial < 0 || initial >= sb.length ) { initial = 0; } for ( var i = 0; i < sb.length; i++ ) { var o = document.createElement( 'option' ); // Ugh. We have encoded Unicode characters in the names... var id = sb[i].id.replace( /.([0-9A-F][0-9A-F])/g, '%$1' ).replace( /_/g, ' ' ); if ( i == initial ) { o.selected = 'selected'; } o.appendChild( document.createTextNode( decodeURIComponent( id ) ) ); sel.appendChild( o ); } spec.insertBefore( sel, spec.firstChild ); EditTools.chooseCharSubset( initial, ( wgAction != 'submit' ) && EditTools_set_focus_initially && ( wgCanonicalNamespace != 'Special' || wgCanonicalSpecialPageName != 'Upload' ) ); }, handleOnchange: function( evt ) { var e = evt || window.event; // W3C, IE var node = e.target || e.srcElement; // W3C, IE EditTools.chooseCharSubset( node.selectedIndex, true ); return true; }, chooseCharSubset: function( selected, set_focus ) { var sb = getElementsByClassName( document.getElementById( 'specialchars' ), 'p', 'specialbasic' ); EditTools.makeButtons( sb[selected] ); for ( var i = 0; i < sb.length; i++ ) { sb[i].style.display = i == selected ? 'inline' : 'none'; } if ( set_focus && EditTools_set_focus ) { var txtarea = EditTools.getTextArea(); if ( txtarea ) { txtarea.focus(); } } }, fixateWidth: function() { var edit_bar = document.getElementById( 'specialchars' ); if ( !edit_bar ) { return; } // Try to fixate the width of that bar, otherwise IE6 may make it wider, which will lead to // a table re-layout on the upload form resulting in the right column extending beyond the // right edge of the window. edit_bar.setAttribute( 'width', + ( edit_bar.clientWidth || edit_bar.offsetWidth ) ); edit_bar.style.maxWidth = + ( edit_bar.clientWidth || edit_bar.offsetWidth ) + 'px'; // If we're inside a table, fixate the containing table cell, too. var parent = edit_bar.parentNode; while ( parent && parent != document.body && parent.nodeName.toLowerCase() != 'td' ) { parent = parent.parentNode; } if ( parent && parent != document.body ) { parent.setAttribute( 'width', + ( parent.clientWidth || parent.offsetWidth ) ); parent.style.maxWidth = + ( parent.clientWidth || parent.offsetWidth ) + 'px'; } }, makeButtons: function( section ) { var edit_bar = section || document.getElementById( 'specialchars' ); if ( !edit_bar ) { return; } var links = edit_bar.getElementsByTagName( 'a' ); // 'links' is a *live* collection! var b = null; while ( links.length ) { b = document.createElement( 'input' ); b.type = 'button'; b.style.fontSize = '0.9em'; b.style.paddingLeft = '1px'; b.style.paddingRight = '1px'; b.style.marginLeft = '1px'; b.onclick = links[0].onclick; b.value = links[0].firstChild.data; var parent = links[0].parentNode; parent.replaceChild( b, links[0] ); // This removes links[0] from links! b.blur(); // IE6 insists on marking some buttons as having the focus... var margin_added = false; // Remove text nodes (nodeType == Node.TEXT_NODE, but IE6 doesn't know that...) // Insert some spacing where desired. while ( b.nextSibling && b.nextSibling.nodeType == 3 ) { if ( !margin_added && b.nextSibling.data.search( /\S/ ) >= 0 ) { b.style.marginRight = '4px'; margin_added = true; } parent.removeChild( b.nextSibling ); } } }, enableForAllFields: function() { if ( typeof( insertTags ) != 'function' ) { return; } // insertTags from the site-wide /skins-1.5/common/edit.js just inserts in the first // textarea in the document. Evidently, that's not good if we have multiple textareas. // My first idea was to simply add a hidden textarea as the first one, and redefine // insertTags such that it copied first the last active textareas contents over to that hidden // field, set the cursor or selection there, let the standard insertTags do its thing, and // then copy the hidden field's text, cursor position and selection back to the currently // active field. Unfortunately, that is just as complex as simply copying the whole code // from wikibits to here and let it work on the right text field in the first place. var texts = document.getElementsByTagName( 'textarea' ); for ( var i = 0; i < texts.length; i++ ) { addEvent( texts[i], 'focus', EditTools.registerTextField ); } // While we're at it, also enable it for input fields texts = document.getElementsByTagName( 'input' ); for ( var i = 0; i < texts.length; i++ ) { if ( texts[i].type == 'text' ) { addEvent( texts[i], 'focus', EditTools.registerTextField ); } } insertTags = EditTools.insertTags; // Redefine the global insertTags }, last_active_textfield: null, registerTextField: function( evt ) { var e = evt || window.event; var node = e.target || e.srcElement; if ( !node ) { return; } EditTools.last_active_textfield = node.id; return true; }, getTextArea: function() { var txtarea = null; if ( EditTools.last_active_textfield && EditTools.last_active_textfield != ) txtarea = document.getElementById( EditTools.last_active_textfield ); if ( !txtarea ) { // Fallback option: old behaviour if ( document.editform ) { txtarea = document.editform.wpTextbox1; } else { // Some alternate form? Take the first one we can find txtarea = document.getElementsByTagName( 'textarea' ); if ( txtarea.length > 0 ) { txtarea = txtarea[0]; } else { txtarea = null; } } } return txtarea; }, insertTags: function( tagOpen, tagClose, sampleText ) { /* Usability initiative compatibility */ if ( typeof $j != 'undefined' && typeof $j.fn.textSelection != 'undefined' ) { $j( '#wpTextbox1' ).textSelection( 'encapsulateSelection', { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose } ); return; } var txtarea = EditTools.getTextArea (); if ( !txtarea ) { return; } var selText, isSample = false; function checkSelectedText() { if ( !selText ) { selText = sampleText; isSample = true; } else if ( selText.charAt( selText.length - 1 ) == ' ' ) { // Exclude ending space char selText = selText.substring( 0, selText.length - 1 ); tagClose += ' '; } } if ( document.selection && document.selection.createRange ) { // IE/Opera // Save window scroll position var winScroll = 0; if ( document.documentElement && document.documentElement.scrollTop ) { winScroll = document.documentElement.scrollTop; } else if ( document.body ) { winScroll = document.body.scrollTop; } // Get current selection txtarea.focus(); var range = document.selection.createRange(); selText = range.text; // Insert tags checkSelectedText (); range.text = tagOpen + selText + tagClose; // Mark sample text as selected if ( isSample && range.moveStart ) { if ( window.opera ) { tagClose = tagClose.replace( /\n/g, ); } range.moveStart( 'character', - tagClose.length - selText.length ); range.moveEnd( 'character', - tagClose.length ); } range.select(); // Restore window scroll position if ( document.documentElement && document.documentElement.scrollTop ) { document.documentElement.scrollTop = winScroll; } else if ( document.body ) { document.body.scrollTop = winScroll; } } else if ( txtarea.selectionStart || txtarea.selectionStart == '0' ) { // Mozilla // Save textarea scroll position var textScroll = txtarea.scrollTop; // Get current selection txtarea.focus(); var startPos = txtarea.selectionStart; var endPos = txtarea.selectionEnd; selText = txtarea.value.substring( startPos, endPos ); // Insert tags checkSelectedText(); txtarea.value = txtarea.value.substring( 0, startPos ) + tagOpen + selText + tagClose + txtarea.value.substring( endPos ); // Set new selection if ( isSample ) { txtarea.selectionStart = startPos + tagOpen.length; txtarea.selectionEnd = startPos + tagOpen.length + selText.length; } else { txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length; txtarea.selectionEnd = txtarea.selectionStart; } // Restore textarea scroll position txtarea.scrollTop = textScroll; } }, // end insertTags setup: function() { EditTools.fixateWidth(); EditTools.createSelector(); EditTools.enableForAllFields(); } } // end EditTools // Do not use addOnloadHook; it runs *before* the onload event fires. At that time, onclick or // onfocus handlers may not yet be set up properly. hookEvent( 'load', EditTools.setup ); } // end if // </source>