Benutzer Diskussion:TMg/moveInterwikisToTop.js

aus Wikipedia, der freien Enzyklopädie
< Benutzer Diskussion:TMg
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 6. April 2016 um 15:28 Uhr durch imported>TMg(30437) (→‎Verwendung: Good bye readability).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Helferlein moveInterwikisToTop priorisiert die in der Seitenleiste links unter „Andere Sprachen“ angezeigten Interlanguage-Links (eine Sonderform der Interwiki-Links) und sortiert sie um. Bevorzugte, von jedem Benutzer individuell bestimmbare Sprachversionen werden nach oben an den Beginn der Liste verschoben. Werden zwei oder mehr Links umsortiert, wird zur besseren Abgrenzung zusätzlich ein kleiner Abstand zwischen den priorisierten und den sonstigen Sprachversionen eingefügt.

Verwendung

Bevorzugte Interlanguage-Links zuerst anzeigen

Folgende Zeilen entweder in die eigene common.js (zur lokalen Verwendung nur in der deutschsprachigen Wikipedia) oder die eigene global.js im Meta-Wiki (zur globalen Verwendung in allen Wikimedia-Wikis) kopieren. Die Aufzählung der Sprachcodes und ihre Reihenfolge kann beliebig verändert werden. Fehlt die Zeile ganz, werden die Sprachversionen Deutsch (de, für den Einsatz in anderen Wikipedias) und Englisch (en) als Standard angenommen.

// [[User:TMg/moveInterwikisToTop.js]]
var moveInterwikisToTopArray = ['de', 'en'];
mw.loader.load( '//de.wikipedia.org/w/index.php?title=Benutzer:TMg/moveInterwikisToTop.js&action=raw&ctype=text/javascript' );

Bevorzugte Interlanguage-Links hervorheben

Um lediglich bestimmte Links in der ansonsten unveränderten Liste der Interlanguage-Links optisch hervorzuheben, kann statt dessen auch der folgende Quelltext in die eigene common.css (nicht .js) eingebaut werden. Statt „purple“ kann auch jede andere Webfarbe genutzt werden. Die hier beispielhaft verwendete, mit Komma getrennte Aufzählung für die deutsche (de) und englische (en) Sprachversion kann beliebig erweitert werden. Dabei die Punkte vor den CSS-Klassennamen .interwiki-… nicht vergessen.

.interwiki-de a, .interwiki-en a {
	color: purple;
	font-weight: bold;
}

Nicht benötigte Interlanguage-Links verstecken

Will man im Gegenteil bestimmte Sprachversionen ausblenden, kann man folgende Anweisung in seine common.css (nicht .js) einfügen (hier beispielhaft für die Sprachen eo, nl und vo):

.interwiki-eo, .interwiki-nl, .interwiki-vo {
	display: none;
}

Nur bestimmte Interlanguage-Links anzeigen

Die radikalste Variante ist, alle außer den erwünschten Interlanguage-Links zu verstecken. Dazu sind die folgenden Zeilen in die eigene common.css (nicht .js) einzutragen (hier wieder beispielhaft für die Sprachen de und en):

#p-lang li {
	display: none;
}
#p-lang .interwiki-de, #p-lang .interwiki-en {
	display: list-item;
}

Siehe auch

Diskussion

Problem

Zeile:

if (l[i].className.substr(10, a[p].length) === a[p])

Durch das substr mit der Länge des Übergebenen Parameters kann es zu Problemen kommen. Ich habe zum Beispiel bei mir "fr" eingetragen. Nun kommt es dann allerdings bei Artikeln mit sehr vielen Interwikis, wie z. B. Deutschland, zu Problemen kommen. Dort wird nicht der französische IW nach oben verschoben, sondern der Frankoprovenzalische (frp).

Eine Mögliche Lösung wäre:

var iw_code = l[i].className.substr(10);
if (iw_code.indexOf(" ") > 0)
{
	iw_code = iw_code.substr(0, iw_code.indexOf(" "));
}
if (iw_code === a[p])

Gruß --Steef 389 01:04, 9. Jun. 2010 (CEST)

Die ursprüngliche Idee war, dass auch „untergeordnete“ Sprachen nach oben sortiert werden (z.B. be-x-old zusammen mit be), aber das scheint in der Tat keinen Sinn zu ergeben. Ich habe es geändert. --TMg 13:52, 9. Jun. 2010 (CEST)
Danke. --Steef 389 13:59, 9. Jun. 2010 (CEST)

moveInterwikisToTop und sidebartranslate

Hallo TMg! Da Revolous inaktiv ist, frag ich dich einfach mal: gibt es eine Möglichkeit, die beiden Scripte gleichzeitig zu nutzen? Momentan ist deins schneller und wird von dem anderen "overrult", sodass der gewünschte Interwikilink (bei mir en) wieder eingereiht wird. Oder muss ich mich jetzt für eins von beiden entscheiden? Grüße --knopfkind 13:28, 10. Aug. 2012 (CEST)

Erledigt. Jetzt werden die beiden Skripte in der Reihenfolge ausgeführt, in der sie in deiner common.js eingebunden sind. --TMg 12:49, 3. Okt. 2012 (CEST)
importScript('Benutzer:Revolus/monobook.js/sidebartranslate.js');
importScript('Benutzer:TMg/moveInterwikisToTop.js');

Alle Sprachen

Es wäre schön, wenn sich auch der Link Alle Sprachen ganz oben (bei gleichzeitiger Verwendung von sidebartranslate.js alternativ ganz unten) einsortieren ließe. --Seth Cohen 20:52, 2. Nov. 2012 (CET)

Hätte ich gern ergänzt, aber der Link wird erst eingefügt, nachdem mein Skript schon durchgelaufen ist. Verzögern möchte ich es deswegen nicht. --TMg 22:46, 2. Nov. 2012 (CET)
Das verstehe ich. Hast du vielleicht noch eine andere Idee? --Seth Cohen 22:54, 2. Nov. 2012 (CET)
Da gäbe es viele Wege (vielleicht sogar rein per CSS), aber warum Zeit darin investieren, für eine einzige Seite? Der Link steht immer unten, da findet man ihn doch ganz leicht, im Gegensatz zu Sprachversionen, die mitten in der Liste stehen. Wenn sidebartranslate den Link fälschlich hochsortiert, sollten wir das dort beheben. --TMg 23:16, 2. Nov. 2012 (CET)
Wird wohl das Beste sein. --Seth Cohen 23:39, 2. Nov. 2012 (CET)

Abgrenzung

„Werden zwei oder mehr Links umsortiert, wird zur besseren Abgrenzung zusätzlich ein kleiner Abstand zwischen den priorisierten und den sonstigen Sprachversionen eingefügt.“

Das finde ich sehr gut. Noch besser fände ich es, wenn diese Abgrenzung auch schon bei Umsortierung eines einzigen Links erfolgen würde, schließlich wird er aus der alphabetischen Sortierung herausgelöst. --Seth Cohen 17:57, 4. Nov. 2012 (CET)

Das ist ein gutes Argument, ich denke darüber nach. Aktuell ist es Absicht, weil der Abstand die Liste auch länger macht und ein einzelner Link dann etwas verloren in der Luft hängt, als ob irgend etwas kaputt wäre. --TMg 18:32, 4. Nov. 2012 (CET)

Verwendung

var moveInterwikisToTopArray = ["de", "en"];
importScript('Benutzer:TMg/moveInterwikisToTop.js'); //[[Benutzer:TMg/moveInterwikisToTop.js]]

Der Variablen moveInterwikisToTopArray den Wert de zuzuweisen, scheint mir innerhalb der deutschsprachigen Wikipedia wenig sinnvoll. Und ist es mit einfachen Anführungszeichen nicht schneller? --Seth Cohen 22:22, 6. Nov. 2012 (CET)

Ich habe diese Standardbelegung gewählt, damit das Skript leicht in anderssprachigen Wikipedien verwendet werden kann. Das mit den Anführungszeichen ist ein hartnäckiger Mythos, der noch nie richtig war. --TMg 19:46, 7. Nov. 2012 (CET)
Dort muss ja ohnehin der untere Codeschnipsel verwendet werden. Wow, wieder etwas gelernt, sehr guter Weblink. Vielen Dank! --Seth Cohen 20:34, 7. Nov. 2012 (CET)

moveInterwikisToTop und sidebartranslate mal wieder

Hallo TMg!

Das Benutzen beider Skripte funktioniert wieder nicht :( Die Links werden nur übersetzt, aber der englische Link bleibt einsortiert. Nachdem ich Revolus Skript abgeschaltet habe, springt der englische Link wieder nach oben, dafür sind die Interwikis nicht mehr übersetzt... --Knopfkind 18:05, 25. Nov. 2013 (CET)

Ich kann beim Test auf Anhieb kein Problem erkennen, bei mir funktioniert es. Tritt das Problem nur mit einem bestimmten Webbrowser auf? --TMg 19:01, 25. Nov. 2013 (CET)
Aiii, du hast Recht, danke für den Hinweis! An meinem privaten Rechner funktioniert es einwandfrei, es ist nur mein Dienstrechner, der Probleme macht (genau dort, wo ich es am häufigsten brauche...). Auf dem läuft Firefox (welche Version kann ich grad nicht nachschauen ;) unter Windows XP. Da ich an dem aber überhaupt keine Rechte habe, könnte ich selbst bei Fehlererkennung nichts dran ändern, also werd ich wohl auf das sidebartranslate verzichten. Vielen Dank auf jeden Fall für dein Tool und deine Hilfe, man merkt immer erst, wenn etwas nicht funktioniert, wie liebgewonnen man es hat ;-) Grüße --Knopfkind 21:52, 25. Nov. 2013 (CET)
Kannst du die „Web-Konsole“ öffnen und schauen, ob in der Kategorie der „JS“-Fehler etwas auftaucht? Es ist durchaus denkbar, dass wir das aus der Ferne beheben können, wenn wir die Ursache finden. --TMg 13:55, 26. Nov. 2013 (CET)
Keine Fehlermeldung in der Konsole. Firefox 25.0.1. Es funktioniert auch nicht immer nicht. Ich hab das 20x hintereinander getestet und 16x hat es nicht funktioniert und 4x hat es funktioniert. --Knopfkind 16:40, 26. Nov. 2013 (CET)
Das hilft mir weiter, als du vielleicht denkst. ;-) Ich hatte so etwas befürchtet. Wie es aussieht, werden die beiden Skripte ausgeführt, sobald ihr jeweiliger Ladevorgang abgeschlossen ist, und das muss nicht unbedingt die Reihenfolge sein, in der sie im Quelltext stehen. Dafür gibt es Lösungen, ich muss nur Zeit finden, die richtige zu erwischen. --TMg 17:29, 26. Nov. 2013 (CET)