MediaWiki Diskussion:Gadget-markAdmins.js
Erscheinungsbild
Letzter Kommentar: vor 13 Jahren von Guandalug in Abschnitt Optimierter Quelltext
Optimierter Quelltext
Der Quelltext hier ist aus mehreren Gründen nicht sehr elegant. Ich schlage deshalb folgenden neuen Quelltext vor:
var UrlParameters = (function(s)
{
var parameters = {}; //Assoziative Arrays gibt es nicht, muss ein Objekt sein
s = s.slice(1).split('&'); //Fragezeichen abschneiden und in Parameter zerlegen
for (var i = 0, l = s.length; i < l; i++)
{
var p = s[i].split('='); //Parameter in Name und Wert zerlegen
if (p[0]) parameters[decodeURIComponent(p[0])] = p[1] ? decodeURIComponent(p[1]) : true;
}
return parameters; //Fertiges Pareameterobjekt zurückgeben
})(location.search); //Aufruf der Funktion und Übergabe des Suchstrings
importScript('Benutzer:PDD/markAdmins.js'); //[[Benutzer:PDD/markAdmins.js]]
Im Kern habe ich zwei große Dinge geändert:
- Ich habe alle Variablendefinitionen entfernt. Einige waren veraltet und wurden von Benutzer:PDD/markAdmins.js sowieso nicht mehr ausgewertet. Alle anderen entsprachen sowieso den Vorgaben von Benutzer:PDD/markAdmins.js. Der wichtigste Grund für die Entfernung ist aber, dass es durch die hier stehenden starren Zeilen unmöglich war, das Gadget mit Hilfe eben dieser Variablen individuell zu konfigurieren, so wie es eigentlich vorgesehen ist.
- Den verbleibenden Quelltext habe ich weitestgehend neu geschrieben und dabei auf die Ausführungsgeschwindigkeit geachtet, vor allem aber auch darauf, dass möglichst nichts in den globalen Variablenraum von JavaScript abstrahlt und somit möglichst wenig Seiteneffekte entstehen.
--TMg 15:10, 29. Dez. 2011 (CET)
- Dass das unmöglich sein soll, das Gadget zu konfigurieren, halte ich für einen Irrtum. In meiner vector.js jedefalls sind Anpassungen, die vom Gadget gelesen / verstanden werden..... :D Ansonsten sieht das gut aus - nachher mal testen. --Guandalug 15:15, 29. Dez. 2011 (CET)
- In deiner vector.js hast du nur Variablen definiert, die das Gadget nicht überschreibt. Alle, die hier aufgeführt sind, lassen sich nicht konfigurieren. --TMg 15:30, 29. Dez. 2011 (CET)
- Interessant, ich hatte gedacht, die Commons-Admins..... aber okay, hast recht. --Guandalug 15:33, 29. Dez. 2011 (CET)
- Und warum funktioniert dann das hier? marksubpages wird vom umseitigen Script definitiv auf 'false' gesetzt.... ich sehe damit jetzt aber Unterseiten markiert. --Guandalug 15:35, 29. Dez. 2011 (CET)
- Das ist eigentlich nicht wichtig, weil die Variablendefinitionen hier so oder so unnötig sind. Wenn es bei dir funktioniert, dann bedeutet das, dass
- der erste Teil des Gadgets geladen wird und alle Variablen deklariert und vorbelegt werden,
- die Zeilen aus deinem Benutzerskript ausgeführt werden, was die Vorbelegung ändert und
- erst danach das eigentliche Skript ausgeführt wird.
- Das Problem dabei ist, dass man sich auf diese Ausführungsreihenfolge nicht verlassen kann. Sie ist nirgends explizit zu erkennen, wir können uns das nur durch Ausprobieren zusammenreimen. Gadgets dürfen meiner Ansicht nach aber nur aus durchschaubarem Quelltext bestehen. --TMg 15:44, 29. Dez. 2011 (CET)
- Die Reihenfolge hatte ich auch mal so ausgeknobelt, weshalb ich dein "geht nicht" in Frage gestellt habe. Dass deine Lösung die sinnvollere ist, ist dabei unbestritten - wird auch nachher ausgetestet und dann umgesetzt. Bevorzugt irgendwann "Nachts" wo weniger mitbekommen, wenn ich was verbocke ;) --Guandalug 15:46, 29. Dez. 2011 (CET)
- Das ist eigentlich nicht wichtig, weil die Variablendefinitionen hier so oder so unnötig sind. Wenn es bei dir funktioniert, dann bedeutet das, dass
- In deiner vector.js hast du nur Variablen definiert, die das Gadget nicht überschreibt. Alle, die hier aufgeführt sind, lassen sich nicht konfigurieren. --TMg 15:30, 29. Dez. 2011 (CET)