Jump to content

User talk:Doc Taxon/global.js

Add topic
From Meta, a Wikimedia project coordination wiki

Lösch-Logbuch ausfiltern

[edit]

Hallo PerfektesChaos! Im Chat habe ich erfahren, dass es eigentlich per JS möglich sein sollte, das Lösch-Logbuch so anzeigen zu lassen, dass gewisse Zeilen ausgeblendet werden. Es gibt die Möglichkeit, beim Löschen voreingestellte Begründungen auszuwählen – wie z. B. "Seiteninhalt war Unsinn" – die im Löschlogbuch natürlich auch mit drin stehen. Ist es möglich, ein JS in meine user:Doc Taxon/monobook.js zu integrieren, das die Zeilen mit "Seiteninhalt war Unsinn" beim Anzeigen des Lösch-Logbuchs ausblendet? Schöne Grüße, -- Doc Taxon @ DiscI ♥ BIBR – 10:21, 12. Feb. 2014 (CET)

Hmm;
mit JavaScript wird das immer so ein Drama.
Ich würde lieber einen Weg über CSS-Regeln probieren, die sind viel einfacher und du kannst damit selbst alles Mögliche machen. Ein erster Blick sagt mir aber, dass das höchstens mit allerneuesten Browsern ginge, die es noch nicht gibt. Muss ich mal denken.
Mehr für mich als Notiz, ungetestet:
// if ( mw.config.get( "wgCanonicalSpecialPageName" ) === "Log" ) {   // redundant gegen "&type=delete"
if ( window.location.search.indexOf( "&type=delete&" ) > 0 ) { 
   $(".mw-logline-delete").each( function() {
                                    var $li    =  $( this ),
                                        s      =  $li.children( ".comment" ).text(),
                                        leave  =  false;
                                    if ( s.indexOf( "Seiteninhalt war Unsinn" ) >= 0 ) {
                                       leave = true;
                                    } else if ( /passt mir auch nicht/.test( s ) ) {
                                       leave = true;
                                    }
                                    if ( leave ) {
                                       $li.hide();
                                    }
                                 } );
}
Morgen mehr.
Allgemein empfiehlt es sich, solche Anfragen in der WP:TW zu stellen; da geht die Weisheit der Vielen drüber.
Schönen Abend noch --PerfektesChaos 23:00, 12. Feb. 2014 (CET)
hm, wie will man mit CSS einzelne Inhalte aus dem Logbuch ausblenden? Mit CSS kann man doch nur Styles anpassen, dachte ich bisher immer. Deine JS jedenfalls, funktioniert einwandfrei – danke vielmals. Kannst Du mir bitte noch erklären, wozu die erste Zeile ist, beginnend mit " // if ( mw.config.get( " ? Danke sehr, -- Doc Taxon @ DiscI ♥ BIBR – 10:16, 14. Feb. 2014 (CET)
  • War noch nicht so ganz fertig.
  • Es hängt von deinem Browser und der Ausführungsgeschwindigkeit ab, ob das funktioniert; kann leicht abstürzen.
    • Korrekt und modifiziert ist der folgende Weg:
if ( window.location.search.indexOf( "&type=delete&" ) > 0 ) {
   mw.hook( "wikipage.content" ).add( function() {
      $( ".mw-logline-delete" ).each( function() {
                 var $li  =  $( this ),
                     s    =  $li.children( ".comment" ).text();
                 if ( /Seiteninhalt war Unsinn/.test( s )  ||
                      /anderes .+ Zeugs?/i.test( s )  ||
                      /noch mehr [[RegExp]]/i.test( s ) ) {
                    $li.hide();
                 }
      } );   // .each
   } );   // mw.hook
}   // type=delete
    • Darin stehen durch || (einem „oder“, lat. vel) getrennt drei reguläre Ausdrücke als weitere Filterbedingungen zum beliebigen Ergänzen.
    • Theoretisch kann man fast alle Bedingungen einem einzigen RegExp unterbringen, aber es kann überschaubarer sein, das auf mehrere Regeln zu verteilen.
    • Kurzinfo zu RegExp (allerdings in Zeichenketten-Syntax, nicht in Schrägstrich-Syntax).
    • Das kleine i hinter den Schrägstrichen bedeutet: ignoriere Groß- und Kleinschreibung.
  • Wie will man mit CSS einzelne Inhalte aus dem Logbuch ausblenden?
    • In CSS3 lassen sich Parameterwerte der Elemente als Selektoren nutzen; Beispiel der href-Parameter von Verlinkungen hier: WP:CSS#Beo.
    • http://www.w3.org/TR/css3-selectors
    • Es geistern Konzepte für ein CSS4 herum, nach denen dann folgende Syntax möglich wäre, oder so ähnlich:
.mw-logline-delete > .comment[:content*="Seiteninhalt war Unsinn"] {
   display: none;
}
  • Mit CSS kann man doch nur Styles anpassen, dachte ich bisher immer.
    • Nix tun ist auch ein Stil, in CSS wie im RL.
  • Zeugs am Anfang mit //
    • Es geht darum, möglichst effizient zu arbeiten, und den folgenden Code nur auszuführen, wenn es ein Lösch-Logbuch ist.
    • Die auskommentierte erste Zeile würde mir verraten, dass die momentane Seite ein Logbuch ist. Bloß zeigt mir diese Methode nicht, ob es ein Lösch-Logbuch wäre.
    • Der dann genutzte Weg ist nicht ganz so edel; aber es gibt wohl keine andere Wiki-Seite, in deren URL so ein &type=delete& vorkommen würde als ein Lösch-Logbuch. Wenn aber diese Zeichenkette vorkommt, ist es immer ein Logbuch und diese Abfrage erübrigt sich. (Für die mitlesenden Kollegen: Ja, nach dem mw.hook wäre mw.util bekannt, und .util.getParamValue(), aber halt nicht vorher.)
Schönes Wochenende --PerfektesChaos 21:31, 14. Feb. 2014 (CET)
Besten Dank!!! Kann man da per JS noch einen Button übers Logbuch setzen, womit man eben diese Ausblendung ein- bzw. ausschalten kann? Schöne Wochenendgrüße, -- Doc Taxon @ DiscI ♥ BIBR – 23:15, 14. Feb. 2014 (CET)
Nicht unter zwei bis drei Dutzend Zeilen, bis der Button generiert, an der richtigen Stelle angebracht und mit Wirkung und toggle-Funktion versehen ist; das wird dann schon ein komplettes Gadget.
Du kannst ja mal selbst mit zwei Lösungsvarianten experimentieren:
  1. An die URL einen Verhinderer anhängen und den fragen, ob der da ist; simpler manueller Workaround.
  2. Die ganze Funktion an WP:GUI #addPortletLink() binden und damit irgendwas ein- und ausschalten.
VG --PerfektesChaos 23:45, 14. Feb. 2014 (CET)

also, klappt nicht ganz: habe das Script nach Benutzer:Doc Taxon/jsLöschlogbuch.js ausgelagert. In die Benutzer:Doc Taxon/monobook.js habe ich dann versucht, Deine Idee wahr zu machen, und einen Link in die Navigationsleiste gebaut, sicherlich dabei ein Syntaxfehler gemacht:

addPortletLink ('p-navigation', 'javascript:Benutzer:Doc_Taxon/jsL%C3%B6schlogbuch.js' , 'Logbuch alt.');

Support Support -- Doc Taxon @ DiscI ♥ BIBR – 00:37, 15. Feb. 2014 (CET)

  • Das kann aus mehrerlei Gründen nicht laufen.
  • Das Kind heißt mit vollständigem Namen mw.util.addPortletLink – veraltet und nur noch ein paar Monate lebt addPortletLink.
  • Was da als zweiter Parameter steht, braucht hinter dem javascript: den Namen einer Funktion, nicht den einer Wiki-Seite.
  • Oben habe ich wohlweislich nur „anonyme“ Funktionen benutzt; um pollution of the global namespace bei dir zu vermeiden.
  • Eine benannte Funktion sähe so aus:
function DocTaxonName() {
   // mach was ...
}
  • Auslagern auf eine andere Seite bringt überhaupt nichts, weil dadurch die Defnition unbekannt wird, und die andere Seite erst importiert werden müsste. Der Trick ist, die Funktion erst nur zu definieren, sie aber nicht sofort auszuführen, sondern das auf später zu verschieben; und dafür muss sie einen Namen bekommen.
  • Wobei mir beim Anblick des javascript: aber noch eine weitere halbwegs elegante Lösung einfällt: Wikipedia:Technik/Browser/Bookmarklet
Gute Nacht --PerfektesChaos 00:55, 15. Feb. 2014 (CET)

Hab es mit Deiner Hilfe hingekriegt, wunderbar -- danke vielmals, Doc Taxon @ DiscI ♥ BIBR – 01:24, 15. Feb. 2014 (CET)

ps: könntest Du bitte mal in meine monobook.js schauen, welcher veralteter Code wie modernisiert werden müsste? Da wäre ich Dir sehr dankbar für, -- Doc Taxon @ DiscI ♥ BIBR – 01:24, 15. Feb. 2014 (CET)

monobook.js

[edit]
  • Für den Autor von Wikipedia:Technik/Skin/JS/Obsolet nicht das dramatische Problem. War auch nötig.
  • Habe noch ein paar Extras eingebaut; auch zur Beschleunigung.
  • Ungetestet, aber sollte klappen.
  • Dein Lösch-Logbuch hat bei der Gelegenheit einen Toggle-Mechanismus mitbekommen und sitzt jetzt links im Werkzeugkasten.
  • Deinen RegExp habe ich mal etwas geschwindigkeitsoptimiert und eine Oder-Verknüpfung zweier Notationen zur Demonstration übriggelassen.
  • mw.libs.DocTaxon ist dein privater Namensraum.

Buggy Viel Erfolg --PerfektesChaos 10:35, 15. Feb. 2014 (CET)

Hallo PC! Habe Dein Script oben ausprobiert und damit meine monobook.js komplett überschrieben. Dann hatte gar nichts mehr funktioniert, nicht eine meiner Einstellungen war mehr vorhanden. Irgendwas stimmt da also nicht ... Support Support -- Doc Taxon @ DiscI ♥ BIBR – 17:35, 15. Feb. 2014 (CET)
Na, dann machen wir uns mal an das Debugging.
  1. Welchen Browser hast du?
  2. Wenn du auf WP:JS #Fehlermeldungen guckst und das Passende aktivierst: Bekommst du Fehlermeldungen?
  3. Klappt denn wenigstens die Sache mit dem Lösch-Logbuch?
Einiges war schon sehr abgelaufen, akut gefährdet, provoziert Browser-Crash oder wird in einigen Monaten abgeschaltet. Eine Renovierung war fällig. Testen kann ich sowas nur bedingt; und hatte gehofft dass es auf Anhieb klappt.
Keine Sorge; deine Links finden wir schon wieder --PerfektesChaos 17:43, 15. Feb. 2014 (CET)
if ( typeof mw.libs.DocTaxon  !==  "object" ) {
   mw.libs.DocTaxon  =  { };
}
mw.libs.DocTaxon.nsn  =  mw.config.get( "wgNamespaceNumber" );



mw.hook( "wikipage.content" ).add( function() {
   // document: ready; mw.util vorhanden
   // Nicht kompatibel zu LivePreview & VE; dann weiter umstrukturieren
   var pgName  =  mw.config.get( "wgPageName" ),
       title   =  mw.config.get( "wgTitle" ).replace( /\/.*$/, "" ),
      $hist, s, url;
   mw.util.addPortletLink( "p-namespaces",
                           "//de.wikipedia.org/w/index.php?title="
                           + "Special:Export&pages=" + pgName
                           + "&dir=desc&limit=5&wpDownload&history=1",
                           "Export" );
   mw.util.addPortletLink( "p-namespaces",
                           "//de.wikipedia.org/wiki/" + pgName,
                           "Export" );
   mw.util.addPortletLink( "p-navigation",
                           "//de.wikipedia.org/wiki/"
                           + "Spezial:Änderungen_an_verlinkten_Seiten/"
                           + pgName,
                           "Änderungen an verlinkten Seiten" );
   if ( mw.libs.DocTaxon.nsn === 2  ||  mw.libs.DocTaxon.nsn === 3 ) {
      mw.util.addPortletLink( "p-navigation",
                              "//de.wikipedia.org/wiki/"
                              + "Spezial:Beiträge/" + title,
                              "Benutzerbeiträge" );
      mw.util.addPortletLink( "p-navigation",
                              "//de.wikipedia.org/wiki/"
                              + "Spezial:Benutzerrechte/" + title,
                              "Benutzerrechte" );
   }
   mw.util.addPortletLink( "p-navigation",
                           "//de.wikipedia.org/wiki/"
                           + "Spezial:Hochladen/",
                           "Datei hochladen" );
   if ( mw.libs.DocTaxon.nsn >= 0 ) {
      $hist   =  $( "#ca-history" ).find( "a" );
      if ( $hist.length ) {
         url = $hist.attr( "href" );
         url = url.replace( /([?&]action=)history([&#]|$)/,
                             "$1purge$2" );
         s   = ( mw.config.get( "skin" ) === "monobook"  ?  "Anti-Cache"
                                                         :  "*" );
         mw.util.addPortletLink( "p-personal",
                                 url,
                                 s,
                                 "ca-purge",
                                 "Anti-Cache",
                                 "*" );
      }
      mw.util.addPortletLink( "p-navigation",
                              "//de.wikipedia.org/wiki/"
                              + "Spezial:Linkliste/" + pgName,
                              "Links auf Seite" );
      mw.util.addPortletLink( "p-navigation",
                              "//de.wikipedia.org/wiki/"
                              + "Spezial:Logbuch/" + title,
                              "Logbücher" );
   }
   mw.util.addPortletLink( "p-navigation",
                           "//de.wikipedia.org/wiki/"
                           + "Spezial:Spezialseiten/",
                           "Spezialseiten" );
   mw.util.addPortletLink( "p-personal",
                           "//de.wikipedia.org/wiki/"
                           + "Benutzer:Doc_Taxon/TNX",
                           "TNX" );
} );



// [[:en:User:Lupin/popups.js]]
mw.loader.load("//en.wikipedia.org/w/index.php?title="
               + "User:Lupin/popups.js"
               + "&action=raw&ctype=text/javascript",
               "text/javascript");
if ( mw.libs.DocTaxon.nsn <= 1 ) {
   // Spezialseite, ANR, A-Disk erforderlich; sonst ersparen
   mw.loader.load("//de.wikipedia.org/w/index.php?title="
                  + "User:PerfektesChaos/js/defekterWeblinkBotVorlage/r.js"
                  + "&action=raw&ctype=text/javascript&maxage=604800&*",
                  "text/javascript");
}
if ( mw.libs.DocTaxon.nsn === -1  ||  mw.libs.DocTaxon.nsn === 4 ) {
   // Spezialseite oder WPNR; sonst funktionslos
   mw.loader.load("//test.wikipedia.org/w/index.php?title="
                  + "User:PerfektesChaos/js/importUtility/d.js"
                  + "&action=raw&ctype=text/javascript&maxage=86400&*",
                  "text/javascript");
}



// if ( mw.config.get( "wgCanonicalSpecialPageName" ) === "Log" ) {   // redundant gegen "&type=delete"
// if ( window.location.search.indexOf( "&type=delete&" ) > 0 ) {
//   $(".mw-logline-delete").each( function() {
//                                    var $li    =  $( this ),
//                                        s      =  $li.children( ".comment" ).text(),
//                                        leave  =  false;
//                                    if        ( s.indexOf( "Aufstachelung" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Ausschließlich erledigte Bothinweise" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Benutzer" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Commons" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Datei" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Diskussionsseite" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "erledigte" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Kategorie" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Sprache" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Unfug" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Unnötiger Redirect" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Unsinn" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Verschieb" ) >= 0 ) {
//                                       leave = true;
//                                    } else if ( s.indexOf( "Weiterleitung" ) >= 0 ) {
//                                       leave = true;
//                                    }
//                                    if ( leave ) {
//                                       $li.hide();
//                                    }
//                                 } );
// }



if ( window.location.search.indexOf( "&type=delete&" ) > 0 ) {
   if ( typeof mw.libs.DocTaxon  !==  "object" ) {
      mw.libs.DocTaxon  =  { };
   }
   mw.libs.DocTaxon.flip  =  function () {
      var o  =  mw.libs.DocTaxon;
      if ( o.limit ) {
         o.$toggling.hide();
         o.limit  =  false;
      } else {
         o.$toggling.show();
         o.limit  =  true;
      }
   };
   mw.hook( "wikipage.content" ).add( function() {
      $( ".mw-logline-delete" ).each( function() {
         var $li  =  $( this ),
             re   =  "(?:"
                     +  "Aufstachelung"
                     + "|Benutzer"
                     + "|Bothinweise"
                     + "|Diskussionsseite"
                     + "|erledigte"
                     + "|Kategorie"
                     + "|nötig"
                     + "|Redirect"
                     + "|Sprache"
                     + "|Unfug"
                     + "|Unsinn"
                     + "|Verschieb"
                     + "|Weiterleitung"
                     + ")",
             s    =  $li.children( ".comment" ).text();
         re  =  new RegExp( re );
         if ( re.test( s )  ||
              /(?:Commons|Datei)/.test( s ) ) {
            $li.addClass( "DocTaxon" );
         }
      } );   // .each
      mw.libs.DocTaxon.$toggling  =  $( ".DocTaxon" );
      mw.util.addPortletLink( "p-tb",
                              "#",
                              "Aus-/Einblenden",
                              "t-DocTaxon-flip" );
      $( "#t-DocTaxon-flip" ).click( mw.libs.DocTaxon.flip );
   } );   // mw.hook
}   // type=delete
Sodele,
habe jetzt an richtigen Seiten getestet und einen Bug entfernt.
Heute vormittag hatte ich nur eine grobe Vorschau gemacht, ohne zu speichern; dabei waren alle deine Links da gewesen, und auf einer Spezialseite müsste die putte Version auch funktioniert haben.
Jetzt eine Macke aus der HTML-Hierarchie beseitigt, geht auch im Test.
Schönen Abend --PerfektesChaos 18:26, 15. Feb. 2014 (CET)

musste noch show und hide umdrehen, weil onClick erst eingeblendet und dann ausgeblendet wurde. Ist ja andersrum sinnvoller und funktioniert jetzt wunderbar -- tausend Dank, Doc Taxon @ DiscI ♥ BIBR – 18:43, 15. Feb. 2014 (CET)

monobook.js aktualisieren

[edit]

Hallo und danke noch mal für die Aktualisierung meiner monobook.js hier. Aber auf en:WP habe ich auch eine monobook.js zur Erstellung des Export-Links. Ich habe versucht, anhand eines Teils meiner de:monobook diese anzupassen:

mw.hook( "wikipage.content" ).add( function() {
   // document: ready; mw.util vorhanden
   // Nicht kompatibel zu LivePreview & VE; dann weiter umstrukturieren
   var pgName  =  mw.config.get( "wgPageName" ),
       title   =  mw.config.get( "wgTitle" ).replace( /\/.*$/, "" ),
      $hist, s, url;
   mw.util.addPortletLink( "p-namespaces",
                           "//en.wikipedia.org/w/index.php?title="
                           + "Special:Export&pages=" + pgName
                           + "&dir=desc&limit=5&wpDownload&history=1",
                           "Export" );
   mw.util.addPortletLink( "p-namespaces",
                           "//en.wikipedia.org/wiki/" + pgName,
                           "Export" );
} );

Allerdings funktionierte das nicht. Stimmt da wieder was in der Syntax nicht? Schöne Grüße, -- Doc Taxon @ DiscI ♥ BIBR – 12:56, 16. Feb. 2014 (CET)

Das wäre mir absolut unverständlich. Die Software ist für alle Wikis absolut gleich.
Syntaktisch ist das sauber. Ich sehe auch keinen Fehler.
Du bist auf monobook und nicht auf vector?
  • Allgemein ist es ratsam, auf en:user:Doc Taxon/common.js umzurüsten, was immer funktionieren soll; umgekehrt ist es ansonsten möglich, durch einen einfachen Wechsel der Skin auf ein Szenario umzusteigen, in dem keine eigenen Skripte aktiv sind.
In der history sehe ich nicht, dass du es auch abgespeichert hattest. Insofern kannst du es höchstens in der Vorschau ausgeführt haben.
  • Möglicherweise hattest du Bezüge aus dem Code der deWP dabei, die du nur unvollständig kopiert hattest.
  • EIgentlich sehe ich überhaupt nicht, dass du dieses Wochenende auf der enWP editiert hättest.
Ich hatte Links, die es auf Spezialseiten nicht gibt, ausgeklammert;
Damit es sich leichter und fehlerfrei hin- und herkopieren lässt, habe ich nachstehend mal einen Kniff eingebaut, den ich mir bei der Zeilenstruktur gestern schon vorgemerkt hatte:
if ( typeof mw.libs.DocTaxon  !==  "object" ) {
   mw.libs.DocTaxon  =  { };
}
mw.libs.DocTaxon.nsn  =  mw.config.get( "wgNamespaceNumber" );
mw.hook( "wikipage.content" ).add( function() {
   // document: ready; mw.util vorhanden
   // Nicht kompatibel zu LivePreview & VE; dann weiter umstrukturieren
   var pgName  =  mw.config.get( "wgPageName" ),
       title   =  mw.config.get( "wgTitle" ).replace( /\/.*$/, "" ),
       server  =  mw.config.get( "wgServer" );
   if ( mw.libs.DocTaxon.nsn >= 0 ) {
      mw.util.addPortletLink( "p-namespaces",
                              server + "/w/index.php?title="
                              + "Special:Export&pages=" + pgName
                              + "&dir=desc&limit=5&wpDownload&history=1",
                              "Export" );
      mw.util.addPortletLink( "p-namespaces",
                              server + "/wiki/" + pgName,
                              "Export" );
   }
} );
Wieder die Frage von ganz oben: Gibt es in der JS-Konsole irgendwelche Fehlermeldungen?
Zum Thema Export übrigens die Info, dass mit dem nächsten größeren Implementierungsblock importUtility dies besser unterstützen wird. Könnte aber bis zu den nächsten Feiertagen dauern, vielleicht bringt es der Osterhase.
Wenn ich aber grad einen Admin online habe: Bitte mal in Wikipedia:Adminkandidaturen/Scialfa das Linkziel auflösen: [[Wikipedia:GAU]] gegen Wikipedia:Archiv/DDR-URV|WP:GAU.
Schönen Sonntag --PerfektesChaos 13:32, 16. Feb. 2014 (CET)
  • hab ich aufgelöst.
  • Meistens funktioniert die Vorschau, wenn ich monobook.js editiere. Deshalb hatte ich in en:WP nicht gespeichert. Aber ich sehe gerade, dass es in de:WP im jetzigen Zustand auch nicht funktioniert. Ich habe Dein Script in en:user:Doc Taxon/monobook.js eingefügt und gespeichert, es funktioniert aber so leider nicht. Der Export-Link wird in p-namespaces nicht angezeigt, so wie vorher. Komisch ... -- Doc Taxon @ DiscI ♥ BIBR – 14:00, 16. Feb. 2014 (CET)


Das kann unter monobook schon seit Jahren nicht funktioniert haben.
  • p-namespaces ist eine ID in der Vector-Skin.
  • Dieser befindet sich unterhalb von #left-navigation und dieser unterhalb von #mw-head (was der horizontale Bereich oben ist) und dieser unterhalb von #mw-navigation (was das Portal ist).
  • In der monobook sehe ich davon nix.
  • Ich hatte den JS-Code in meiner Vector-Standardumgebung getestet und konnte die beiden Export-Links sehen.
Siehe WP:GUI mit einer Übersicht der in allen Skins verfügbaren Bereiche.
LG --PerfektesChaos 17:39, 16. Feb. 2014 (CET)

Ja, das war sehr aussagekräftig. p-personal hätte ich gebraucht, jetzt funktioniert es auch einwandfrei. Nochmals danke! Kannst Du bitte auch mal nach WP:TW#p-navigation alphabetisch schauen? -- Doc Taxon @ DiscI ♥ BIBR – 18:14, 16. Feb. 2014 (CET)

Hallo! Kann ich in der jetzigen Löschlogbuch-Filterfunktion in meiner js die Unterscheidung der Parameter in Groß- und Kleinschreibung deaktivieren? Danke, -- Doc Taxon @ DiscI ♥ BIBR – 17:56, 17. Feb. 2014 (CET)
Die Frage habe ich nicht so ganz verstanden.
  • Falls du wissen möchtest, wie man die Suchwörter von Groß- und Kleinschreibung unabhängig macht:
    1. /A/i.test( s )   greift sowohl bei „a“ wie auch bei „A“; i wie ignore.
    2. new RegExp( re, "i" );   dito.
VG --PerfektesChaos 23:11, 17. Feb. 2014 (CET)
Ja danke sehr! Nr. 1 können wir ja nicht anwenden, mit Slashes bei Suchwörtern arbeite ich ja laut Deiner letzten Version aktuell nicht mehr. All best, -- Doc Taxon @ DiscI ♥ BIBR – 09:48, 18. Feb. 2014 (CET)
Die Slashes bei Suchwörtern hast du schon noch; Special:Redirect/revision/127682391 im Zusammenhang mit „Commons“ oder „Datei“. Diese Syntaxvariante habe ich dir zu Demonstationszwecken stehengelassen; aber der Zusammenbau als Zeichenkette ermöglicht übersichtlichere Notation, auch bei künftigen Erweiterungen und Schachtelungen, während das Slash-Format zwingend in einem Stück geschrieben werden muss. Schönen Tag --PerfektesChaos 10:14, 18. Feb. 2014 (CET)

p-navigation alphabetisch

[edit]

Hallo! In meiner Navigationsleiste stehen die Links, je nachdem, wie sie dort ein- und ausgeblendet werden, alle durcheinander. Ich hätte sie gern immer automatisch alphabetisch geordnet. Was muss ich dazu wo in meine user:Doc Taxon/monobook.js einfügen? Schon mal vielen Dank, -- Doc Taxon @ DiscI ♥ BIBR – 19:05, 15. Feb. 2014 (CET)

Sie müssten an Vorgänger gebunden werden; das ist der letzte Parameter nextnode im Funktionsaufruf.
Problem: Einige der Links habe ich dir Namensraum-sensitiv geschrieben; also müsste erst eine Kette in der gewünschten Reihenfolge kommen, und erst dahinter die NR-spezifischen.
Die Kette müsste an einem konstanten Element verankert werden.
Man kann das sogar so gestalten, dass die Abfolge auch bei Namensraum-sensitiven Elementen einheitlich und alphabetisch ist.
  • Dazu in der Liste der var eine Variable seq deklarieren.
  • seq bekommt vorab den Wert des letzten konstanten Ankerpunktes.
  • Nach jeder Zuweisung eines Links bekommt seq den Namen von dessen ID zugewiesen.
  • Das (dynamisch wechselnde) nächstfolgende Link wird hinter "#"+seq angefügt, und weist seinen eigenen Namen wieder seq zu.
  • Kann man auch mit zwei Varablen machen; seq2 ist ID des neuen Links, seq die ID des vorangehenden, und in jedem Funktionsaufruf steht als erster Parameter seq2, als letzter "#"+seq, und hinter jedem Funktionsaufruf seq=seq2; seq2="p-nächste-ID"; und dann muss man nicht mehr denken.
Viel Spaß --PerfektesChaos 10:28, 18. Feb. 2014 (CET)
Um das nochmal zu präzisieren: Wenn der letzte Parameter nicht angegeben ist oder dort null wirkt, dann kommt dieses Link als letztes in den Container.
Wenn sie also alphabetisch sichtbar sein sollen und als letzte im Container stehen sollen, dann genügt es auch schon (wie jetzt ähnlich geschrieben), sie in alphabetischer Reihenfolge zu definieren und den letzten Parameter nie anzugeben.
Wenn sie mit irgendwas gemischt und dynamisch stehen sollen, dann müssen die genannten seq in Abhängigkeit von ihren Bezugslinks stehen, wobei diese Bezugslinks je nach Namensraum unterschiedlich heißen können.
Was genau du wann wo sehen möchtest, musst du schon selbst wissen.
HGZH --PerfektesChaos 10:56, 18. Feb. 2014 (CET)
Je nachdem, welcher Namensraum gerade geöffnet ist (und welche Links dann zusätzlich erscheinen) sollen sie immer alphabetisch gelistet sein. So wie Du es oben beschrieben hast, bin ich leider zu JS-unbegabt, das verwirklichen zu können. Dabei brauche ich Deine/Eure Hilfe. -- Doc Taxon @ Disc♥ BIBR ♥ – 00:52, 25. Feb. 2014 (CET)
  • Ich verstehe nicht, worin die Schwierigkeit liegen soll.
  • Die Menüfelder werden doch in genau der Reihenfolge aufgebaut, in der sie eingefordert wurden; es sei denn, es wäre deklariert, dass sie vor einem bestimmten anderen liegen sollen.
  • Solange du nur deine eigenen Menüfelder alphabetisch sortiert haben möchtest und die systemseitigen nicht in die Sortierung einbezogen werden sollen, müssen die Funktionsaufrufe also nur in der alphabetischen Reihenfolge angeordnet sein; falls einzelne Menüfelder nicht aktiv werden, erscheinen sie halt nicht. Die Reihenfolge der anderen wird dadurch nicht verändert.
  • Beispiel:
if ( nsn >= 0 ) {
   // Geht bei Spezialseiten nicht
   .addPortletLink( "Änderungen an verlinkten Seiten" );
   .addPortletLink( "Anti-Cache" );
}
if ( nsn === 2  ||  nsn === 3 ) {
   .addPortletLink( "Benutzerbeiträge" );
   .addPortletLink( "Benutzerrechte" );
}
.addPortletLink( "Datei hochladen" );
if ( nsn >= 0 ) {
   // Spezialseiten können nicht exportiert werden
   .addPortletLink( "Export" );
   .addPortletLink( "Links auf Seite" );
}
.addPortletLink( "Spezialseiten" );
.addPortletLink( "TNX" );
  • Auf einer Spezialseite steht:
    [Datei hochladen] → [Spezialseiten] → [TNX]
  • Auf einem Artikel steht:
    [Änderungen an verlinkten Seiten] → [Anti-Cache] → [Datei hochladen] → [Export] → [Links auf Seite] → [Spezialseiten] → [TNX]
  • Auf einer Benutzerseite steht:
    [Änderungen an verlinkten Seiten] → [Anti-Cache] → [Benutzerbeiträge] → [Benutzerrechte] → [Datei hochladen] → [Export] → [Links auf Seite] → [Spezialseiten] → [TNX]
VG --PerfektesChaos 10:15, 25. Feb. 2014 (CET)
@PerfektesChaos: ja, die eigens hinzugefügten Links sind geordnet. Aber wie Du schon oben erwähnt hast, sind die systemseitigen dabei, die Links [Hauptseite] [Themenportale] [Von A bis Z] [Zufälliger Artikel]. Die sollen mit alphabetisch geordnet werden - und somit mitten unter den von mir hinzugefügten Links erscheinen. Also nur, wenn's möglich ist und nicht allzu aufwändig. Ich möchte eigentlich nur meine BO so komfortabel wie möglich für mich machen. Die [Export], [TNX] und [Anti-Cache] liegen bei mir im p-personal und nicht in p-navigation, kommen in der Liste also nicht vor. (Zumindest bis jetzt.) Könntest Du mir bitte nebenbei dann auch noch die nsn-Nummern aufschlüsseln? Danke sehr, -- Doc Taxon @ Disc♥ BIBR ♥ – 05:26, 26. Feb. 2014 (CET)


  • Die einfachere Übung sind die Nummern: Hilfe:Namensräume
  • Bei den systemseitigen ist dann anzugeben, vor welchem (hoffentlich konstanten, ist aber in diesem Fall unveränderlich) vorhandenen Element das aufzulisten ist.
    • Beispiel:
      "Links auf Seite" soll immer (wenn keine Spezialseite) vor „Themenportale“ und das heißt "n-topics".
addPortletLink( , , "Links auf Seite", , null, null, "n-topics" );
  • Dein System ist mir sowieso unverständlich.
    • "Links auf Seite" steht bereits als t-whatlinkshere in der Werkzeugbox, die unter Monobook auch immer aufgeklappt dargestellt ist. (Unter Vector kann sie gelegentlich zugeklappt sein, da würde ich verstehen, dass du sie immer sichtbar haben möchtest).
    • Allgemein gehören die von dir gewünschten Links als seitenabhängig entweder in die (gelbe) Werkzeugbox, oder oben als Seitenbezogene Aktionen (grün). Unter „Navigation“ steht die Gesamt-Projekt-bezogene seitenunabhängige Navigation.
    • "Benutzerbeiträge" gibt es in der Werkzeugbox bereits als t-contributions in den gleichen Situationen; "Datei hochladen" gibt es auch schon in der Werkzeugbox.
  • Allerdings ist die Werkzeugbox bislang nicht alphabetisch sortiert.
    • Das kann man aber ändern; mittels Paaren von .detach() + .prepend() in WP:JS/JQ #Seite verändern.
    • Als Fan der Aufräumfotos von Ursus Wehrli, wie ich auch auf meiner Benutzerseite offenbare, stünde ich auch dafür zur Verfügung.
  • Ich hab immer gedacht, Taxonomen wären so Systematiker wie ich.

Sonnigen Frühling --PerfektesChaos 10:29, 26. Feb. 2014 (CET)

Die Werkzeugliste gibt's bei mir in Kürze nicht mehr (wird abgeschaltet), es wird alles hübsch in eine Leiste verräumt. Danke sehr, -- Doc Taxon @ Disc♥ BIBR ♥ – 15:29, 27. Feb. 2014 (CET)

@PerfektesChaos: Hallo! Leider noch mal was: Du hast mir doch ein Script zur Verfügung gestellt, womit ich das Löschlogbuch nach Wunsch ausfiltern kann - bei mir mit Linknamen "Logbuch alt." Weil dies wahrscheinlich ganz unten im Script steht, passt er alphabetisch nicht in die Liste (steht immer ganz unten). Der Link "Spezialseiten" bspw. steht oben drüber. [Datei hochladen] - [Spezialseiten] - [Logbuch alt.] , das passt ja nicht. Weil du schriebst, dass es reiche, die Links im js von oben nach unten anzuordnen, hab ich es so auch versucht. Da erfolglos, musste ich es wieder revertieren. Habe es auch mit javascript: und function() probiert, kein Erfolg. Weißt Du was, wie ich diesen Link alphabetisch sauber dazwischen krieg? Vielen Dank, -- Doc Taxon @ Disc♥ BIBR ♥ – 09:08, 1. Mär. 2014 (CET)

DocTaxon März 2014

[edit]

Ich sortiere mal meine Anmerkungen:

  • Dazu wäre es erforderlich, dem Aufruf unten eine ID mitzugeben, vor dem eingefügt werden soll; und bei der Création oben eine solche ID zu vereinbaren.
    • Es ist aber ohnehin nicht nötig, zwei verschiedene hook-Funktionen für dasselbe Ereignis („HTML-Dokument ist strukturell aufgebaut und kann jetzt manipuliert werden“) nebeneinander zu verwalten; wird nur unübersichtlich. Ich habe jetzt alles in einer zusammengefasst.
    • Damit ist die vorgenannte Nutzung der ID aber nicht mehr erforderlich, weil ich die Blöcke so arrangiert habe, dass sie in der richtigen Reihenfolge erscheinen.
  • Der grüne Block mit den Kommentaren dürfte sich erledigt haben; bei der Gelegenheit eliminiert.
  • Die Geschichte mit dem $hist (bzw. in der vorangegangenen Notation) hat dir wohl vor langer Zeit mal jemand aufgeschrieben.
    • Sie ist gleichbedeutend mit der Forderung „keine Spezialseite, normale Inhaltsseite“ und das ist gleichbedeutend mit nsn>=0 und damit an dieser Stelle immer identisch erfüllt.
    • Vielleicht ist dieses Konstrukt schon so ururalt, dass es noch kein wgNamespaceNumber gegeben hatte und man deshalb auf solche Tricks zurückgreifen musste.
    • Zur Übersichtlichkeit und Vereinfachung habe ich das gestrichen.
    • Da war noch eine Weiche drin, die die Beschriftung von „Anti-Cache“ ändert, wenn man nicht auf monobook wäre. Da du per Definition nur auf der monobook wirkst, habe ich auch dies vereinfacht.
  • Die Internationalisierung aus deiner enWP habe ich übernommen, so dass die Blöcke mit C&P in beliebige andere Wiki-Projekte gebeamt werden können.
    • Damit dass auch in der mongolischen Wikisource funktioniert, habe ich statt der deutsch lokalisierten die generischen und kanonischen Namen der Spezialseten verwendet.

Nachstehend die umgebaute Geschichte; formal getestet, keine praktische Erfahrung damit.

if ( typeof mw.libs.DocTaxon  !==  "object" ) {
   mw.libs.DocTaxon  =  { };
}
mw.libs.DocTaxon.nsn  =  mw.config.get( "wgNamespaceNumber" );



mw.libs.DocTaxon.furnish  =  function () {
   // Dekoriere die Portalseite
   var nsn     =  mw.libs.DocTaxon.nsn,
       pgName  =  mw.config.get( "wgPageName" ),
       server  =  mw.config.get( "wgServer" ),
       title   =  mw.config.get( "wgTitle" ).replace( /\/.*$/, "" );
   if ( nsn < 0  &&
        window.location.search.indexOf( "&type=delete&" ) > 0 ) {
      /* Lösch-Logbuch-Filter */
      mw.libs.DocTaxon.flip  =  function () {
         var o  =  mw.libs.DocTaxon;
         if ( o.limit ) {
            o.$toggling.show();
            o.limit  =  false;
         } else {
            o.$toggling.hide();
            o.limit  =  true;
         }
      };
      $( ".mw-logline-delete" ).each( function() {
         var $li  =  $( this ),
             re   =  "(?:"
                     +  "Aufstachelung"
                     + "|Benutzer"
                     + "|Bothinweise"
                     + "|Diskussionsseite"
                     + "|erledigte"
                     + "|Kategorie"
                     + "|Lizenzierung"
                     + "|nötig"
                     + "|Redirect"
                     + "|Sprache"
                     + "|Unfug"
                     + "|Unsinn"
                     + "|Verschieb"
                     + "|Weblink"
                     + "|Weiterleitung"
                     + ")",
             s    =  $li.children( ".comment" ).text();
         re  =  new RegExp( re, "i" );
         if ( re.test( s )  ||
              /(?:Commons|Datei)/.test( s ) ) {
            $li.addClass( "DocTaxon" );
         }
      } );   // .each
      mw.libs.DocTaxon.$toggling  =  $( ".DocTaxon" );
   }
   /* p-personal */
   if ( nsn >= 0 ) {
      mw.util.addPortletLink( "p-personal",
                              server + "/w/index.php?title="
                              + pgName + "&action=purge",
                              "Anti-Cache",
                              "ca-purge",
                              "Anti-Cache" );
      mw.util.addPortletLink( "p-personal",
                              server + "/w/index.php?title="
                              + "Special:Export&pages=" + pgName
                              + "&dir=desc&limit=5&wpDownload&history=1",
                              "Export" );
   }
   mw.util.addPortletLink( "p-personal",
                           "//de.wikipedia.org/wiki/"
                           + "Benutzer:Doc_Taxon/TNX",
                           "TNX" );
   /* p-navigation */
   mw.util.addPortletLink( "p-navigation",
                           server + "/wiki/"
                           + "Special:Recentchangeslinked/"
                           + pgName,
                           "Änderungen an verlinkten Seiten" );
   if ( nsn === 2  ||  nsn === 3 ) {
      mw.util.addPortletLink( "p-navigation",
                              server + "/wiki/"
                              + "Special:Contributions/" + title,
                              "Benutzerbeiträge" );
      mw.util.addPortletLink( "p-navigation",
                              server + "/wiki/"
                              + "Spezial:Benutzerrechte/" + title,
                              "Benutzerrechte" );
   }
   mw.util.addPortletLink( "p-navigation",
                           server + "/wiki/"
                           + "Special:Upload/",
                           "Datei hochladen" );
   if ( nsn < 0 ) {
      if ( typeof mw.libs.DocTaxon.flip  ===  "function" ) {
         mw.util.addPortletLink( "p-navigation",
                                 "#",
                                 "Logbuch alt.",
                                 "t-DocTaxon-flip" );
         $( "#t-DocTaxon-flip" ).click( mw.libs.DocTaxon.flip );
      }
   } else {
      mw.util.addPortletLink( "p-navigation",
                              server + "/wiki/"
                              + "Special:Whatlinkshere/" + pgName,
                              "Links auf Seite" );
      mw.util.addPortletLink( "p-navigation",
                              server + "/wiki/"
                              + "Special:Log/" + title,
                              "Logbücher" );
   }
   mw.util.addPortletLink( "p-navigation",
                           server + "/wiki/"
                           + "Special:Specialpages/",
                           "Spezialseiten" );
};   // .furnish()



mw.hook( "wikipage.content" ).add( function() {
                  // document: ready; mw.util vorhanden
                  if ( typeof mw.libs.DocTaxon.loaded  !==  "boolean" ) {
                     mw.libs.DocTaxon.furnish();
                     mw.libs.DocTaxon.loaded  =  true;
                  }
                                   } );



// [[:en:User:Lupin/popups.js]]
mw.loader.load("//en.wikipedia.org/w/index.php?title="
               + "User:Lupin/popups.js"
               + "&action=raw&ctype=text/javascript",
               "text/javascript");
if ( mw.libs.DocTaxon.nsn <= 1 ) {
   // Spezialseite, ANR, A-Disk erforderlich; sonst ersparen
   mw.loader.load("//de.wikipedia.org/w/index.php?title="
                  + "User:PerfektesChaos/js/defekterWeblinkBotVorlage/r.js"
                  + "&action=raw&ctype=text/javascript&maxage=604800&*",
                  "text/javascript");
}
if ( mw.libs.DocTaxon.nsn === -1  ||  mw.libs.DocTaxon.nsn === 4 ) {
   // Spezialseite oder WPNR; sonst funktionslos
   mw.loader.load("//test.wikipedia.org/w/index.php?title="
                  + "User:PerfektesChaos/js/importUtility/d.js"
                  + "&action=raw&ctype=text/javascript&maxage=86400&*",
                  "text/javascript");
}

Viel Glück, schönes Wochenende --PerfektesChaos 11:03, 1. Mär. 2014 (CET)

besten Dank, erste praktische Tests erzielten nur positive Ergebnisse. Special thanks auch für die Internationalisierung, das ist sehr hilfreich. -- Schöne Sonntagsgrüße, Doc Taxon @ Disc♥ BIBR ♥ – 08:57, 2. Mär. 2014 (CET)

Helferlein Rechtschreibprüfung

[edit]

Hallo! Das Helferlein funktioniert ja ganz gut, aber ich würde die Markierungen auch im Bearbeitungsmodus gerne sehen wollen (in der Vorschau). Man kann da bestimmt irgendwas einstellen oder in meine user:Doc Taxon/monobook.js einflechten. Weiß da jemand was? Danke sehr, -- Doc Taxon @ Disc – ♥ BIBR ♥ – 00:33, 28. Jun. 2014 (CEST)

Das Gadget bietet eine solche Konfigurationsmöglichkeit nicht.
Nebenbei ist es in die Jahre gekommen und müsste dringend in moderner Architektur neu aufgebaut werden; dabei auch deinen Wunsch standardmäßig konfigurativ unterstützend.
Bis dahin:
  1. Das Ding bei den Benutzereinstellungen aushakeln.
  2. MediaWiki:Gadget-Rechtschreibpruefung.js als Privatkopie anlegen, Benutzer:Doc Taxon/Rechtschreibpruefung.js
    • Dann aus der Privatkopie (Obacht, nicht das Original) ganz zum Schluss den ganzen Block function RP_load() bis zum Seitenende durch die folgende Zeichenkette ersetzen:
      $(spellcheck);
  3. Dann an Benutzer:Doc Taxon/monobook.js folgenden Block anhängen:
if ( ! ( mw.libs.DocTaxon.nsn % 2 )   &&
     "|view|edit|submit|".indexOf( mw.config.get( "wgAction" ) ) > 0 ) {
   mw.loader.load("//de.wikipedia.org/w/index.php?title="
                  + "User:Doc_Taxon/Rechtschreibpruefung.js"
                  + "&action=raw&ctype=text/javascript",
                  "text/javascript");
}
Und aus der ersten Zeile zu enfernen das dort zusammenhanglose:
var RPonAllPages = true;
Ungetestet, freihändig, sollte klappen, schönes Wochenende --PerfektesChaos 16:15, 28. Jun. 2014 (CEST)

Nun ja, funktioniert ganz gut. Das zusammenhanglose var RPonAllPages = true; ist ja, damit auf allen Seiten eine Prüfung durchgeführt wird, geht's auch ohne? Aber editiere ich einen neuen Rechtschreibfehler und klick auf Vorschau-Button, wird dieses Wort nicht als fehlerhaft markiert, während bereits vorherig dagewesene Rechtschreibfehler markiert werden. Also ganz funktioniert das noch nicht. Vielen Dank für den ersten Ansatz, -- Doc Taxon @ Disc – ♥ BIBR ♥ – 16:26, 29. Jun. 2014 (CEST)

  • Das var RPonAllPages = true; ist obenstehend bereits abgebildet als ! nsn % 2 (was soviel heißt wie: „In allen Namensräumen außer Diskussions- und Spezialseiten.“) und damit erstens redundant und würde auch nicht mehr ausgewertet.
  • Dein anderer Wunsch geht grundsätzlich nicht: Die Server-Komponente auf Labs/Tools ruft den letzten auf dem Wiki-Server gespeicherten Stand des Seitenquelltextes ab und durchsucht ihn nach Wörtern auf der Wortliste.
    • Was du im Entwurf in deinem Editor zu stehen hast und als Vorschau siehst, kann der Server auf Labs/Tools nicht wissen und berücksichtigen, weil der Seitenquelltext noch nicht wieder auf dem Server gespeichert ist.
    • Dazu müsstest du mal die NSA fragen, die ist da aktueller informiert.
  • Ohnehin müsste neben den diversen kleinen Mängeln des Gadgets auch berücksichtigt werden, dass sich der Text der Seite geändert haben könnte und neue Rechtschreibfehler hinzugekommen sein mögen. Im Moment liefert das wochenlang die gleiche Fehlerliste aus dem Browser-Cache und kommuniziert nicht erneut mit dem Server.
VG --PerfektesChaos 17:07, 29. Jun. 2014 (CEST)

Okay, super - vielen Dank -- Doc Taxon @ Disc – ♥ BIBR ♥ – 19:48, 29. Jun. 2014 (CEST)