Wikipedia:Technik/Archiv/2011

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Tab für andern Skin

Ich habe einen Tab, der mir das Betrachten der aktuellen Seite mit dem Vector-Skin erlaubt:

 addOnloadHook(function () {
    var url = "http://de.wikipedia.org/wiki/" + wgPageName + "?useskin=vector";
    addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
 });

Nur funktioniert dies nicht, wenn die URL ein & oder # enthält. Weiss da jemand Abhilfe? --Leyo 12:51, 10. Jul. 2011 (CEST)

Willkommen, Kunde #1; und letztlich bist du ja auch der Verursacher dieser Seite.
Es müsste funktionieren mit mediaWiki.util.wikiUrlencode(wgPageName) – der wandelt die & oder # im Seitentitel URL-fest um, und wohl auch noch Umlaute; dafür sollte er wissen, was Namensraum und Unterseite sind.
You’re welcome --PerfektesChaos 13:27, 10. Jul. 2011 (CEST)
$(document).ready(function () {
    var l = window.location;
    var url = l.protocol + l.host + l.pathname;
    url += l.search
        ? ( l.search.search(/(&|\?)useskin=/) > -1
            ? l.search.replace(/(&|\?)useskin=.+?(&|$)/, "$1useskin=vector$2")
            : l.search + "&useskin=vector" )
        : "?useskin=vector";
    url += l.hash;
    addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
} );
würde ich empfehlen. Oder geht das kürzer? --Bergi 13:32, 10. Jul. 2011 (CEST)
Danke euch beiden. Den Teil mit l.search verstehe nicht ganz. Ist der, um rauszufinden, ob ?useskin=vector oder &useskin=vector angehängt werden muss? --Leyo 14:57, 10. Jul. 2011 (CEST)

Bergis Lösung schreibt nicht nur die statischen Artikel-URL um, mit denen du bisher gearbeitet hattest, sondern jede beliebige. Das würde ich in moderner Fassung (ab 2011) vielleicht etwas nachvollziehbarer formulieren als

$(function () {
   var url = window.location;
   var got = mw.util.getParamValue("useskin");
   if (got == null) {
      var qch = "&";
      if (url.search === ""  ||  url.search == null) {
         qch = "?";
      } else if (url.search === "?") {
         qch = "";
      }
      url = url.href + qch + "useskin=vector";
   } else {
      url = url.href.replace(new RegExp("useskin="+got),  "useskin=vector");
   }
   mw.util.addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
});
  • Freihändig geschrieben, nicht getestet.

VG --PerfektesChaos 16:36, 10. Jul. 2011 (CEST)

Ah, danke, mw.util.getParamValue war was ich suchte.
@PerfektesChaos: Du hast aber den hash-Teil vergessen (was ein wichtiger "Kunden"wunsch war), sehe ich das richtig?
@Leyo: Für window.location.search siehe URI. Es geht letztendlich immer darum, herauszufinden, ob a) kein search/query-Teil da ist, b) er existiert und sonderfall c) er bereits einen useskin spezifiziert.
Natürlich könnte man solche Links zusätzlich auch noch von Benutzer-Skin-Einstellung und gerade aktivem Skin abhängig machen, aber vermutlich steht der Code eh in deiner monobook.js?
--Bergi 17:24, 10. Jul. 2011 (CEST)
@Bergi: Du hast recht; wenn die momentane URL einen hash enthält, aber noch kein useskin=, würde meine Lösung hinter den hash klatschen; müsste also noch verfeinert werden:
$(function () {
   var url = window.location;
   var got = mw.util.getParamValue("useskin");
   if (got == null) {
      var qch = "&";
      var hash = url.hash;
      url.hash = "";
      if (url.search === ""  ||  url.search == null) {
         qch = "?";
      } else if (url.search === "?") {
         qch = "";
      }
      url = url.href + qch + "useskin=vector" + hash;
   } else {
      url = url.href.replace(new RegExp("useskin="+got),  "useskin=vector");
   }
   mw.util.addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
});
Betr. Kundenwunsch: Seine bisherige Lösung hatte ja immer nur einen statischen Artikel über wgPageName erwischt; das & oder # hätte also Bestandteil des Seitentitels sein müssen (mit & kenne ich; #-Artikel müsste ich suchen, wüsste nur C-Sharp). Ein Fragment konnte dabei bisher nie vorkommen. Insofern kommt er ja mit verfeinerter und zukunftssicherer Funktionalität vom Rathaus – so oder so.
Guten Appetit --PerfektesChaos 19:25, 10. Jul. 2011 (CEST)
Ich habe jetzt den untersten Code ausprobiert. Nun wird allerdings bei allen aufgerufenen Seiten nachträglich ein # an die URL angehängt.
Wäre es prinzipiell möglich, dass das Script erst beim Klick auf das Tab ausgeführt wird? --Leyo 23:58, 10. Jul. 2011 (CEST)
  • Das # schadet nichts; reine Optik. Es wäre aber ohnehin von zweifelhaftem Wert, denn es konserviert den Zustand (Sprung auf Anker oder Überschrift), mit dem du irgendwann ursprünglich auf die Seite kamst. So wäre es dir vermutlich lieber:
$(function () {
   var url = window.location;
   var got = mw.util.getParamValue("useskin");
   if (got == null) {
      var qch = "&";
      url.hash = "";
      if (url.search === ""  ||  url.search == null) {
         qch = "?";
      } else if (url.search === "?") {
         qch = "";
      }
      url = url.href + qch + "useskin=vector";
   } else {
      url = url.href.replace(new RegExp("useskin="+got),  "useskin=vector");
   }
   mw.util.addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
});
  • Grundsätzlich wäre zu klären, welche Funktion du mit dem Skript eigentlich erreichen möchtest. Die Lösung, die du ursprünglich hattest, bringt dich beim Skinwechsel immer in die Standardform der Seite. Das heißt, auch wenn du dir eine oldid= oder diffpage angeschaut hattest, oder auf der Versionsgeschichte warst, zeigt es dir hinterher die Ansicht des neuesten Artikeltextes. Bergi hat dir einen Weg gewiesen, wie du genau die gleiche Sichtweise beibehältst, und sich nur die Skin ändert. Du musst wissen, welche Funktionalität du dir wünscht.
  • dass das Script erst beim Klick auf das Tab ausgeführt wird?“ – na, mindestens das mw.util.addPortletLink() muss ja ausgeführt werden, um das Tab zu generieren. In dem taucht das url auf. Theoretisch ist es vorstellbar, das erst hinterher zu belegen; aber es würde dir nichts bringen. Auf keinen Fall irgendwelche Zeitersparnis; das dauert nur Bruchteile von Tausendstelsekunden, und jedesmal, wenn dir eine Seite aufgebaut wird, laufen Zehntausende solcher Anweisungen ab.

Gut's Nächtle --PerfektesChaos 00:50, 11. Jul. 2011 (CEST)

Deine erste Aussage trifft nicht zu. #Abschnittsname wird ersetzt durch #. Links auf Abschnitte funktionieren also nicht mehr.
Ich scheine mich wohl zu wenig präzis ausgedrückt zu haben, sorry. Was ich erreichen möchte, ist temporär den Skin zu wechseln. Mit anderen Worten, die aktuell angezeigte Seite soll per Klick auf das Tab im Vector-Skin (aber sonst gleich) angezeigt werden. Früher hatte ich dies jeweils manuell mittels anhängen von ?useskin=vector oder &useskin=vector gemacht. Durch die rudimentäre Funktion ganz oben hatte ich es nur für Seiten ohne Parameter praktischer hingekriegt. --Leyo 01:02, 11. Jul. 2011 (CEST)
Von mir ein völlig anderer Ansatz, etwas quick&dirty, sollte aber funktionieren:
$(function(){
 var proto = window.location.protocol,
     host = window.location.host,
     path = window.location.pathname,
     query = window.location.search,
     hash = window.location.hash;
 var url = proto + '//' + host + path + query + ((query === '') ? '?' : '&') + 'useskin=vector' + hash;
 mw.util.addPortletLink('p-cactions', url, 'V', 'ca-vectorskin', 'Vector-Skin');
});
Im schlimmsten Fall gibt das URLs, die den Parameter useskin mehrfach enthalten, aber solange useskin=vector als letztes kommt, macht das nichts. --Schnark 09:33, 11. Jul. 2011 (CEST)
Ich habe diese Variante mal übernommen und (bisher) erfolgreich getestet. Vielen Dank nochmals an alle drei Helfer! --Leyo 09:46, 11. Jul. 2011 (CEST)
Mein Code von oben, nochmal verbessert und inspiriert (insbesondere das Ausführen bei Klick):
$( function() {
    var l = window.location;
    var url = l.protocol + '//' + l.host + l.pathname;
    url += l.search.length > 1
        ? ( ! mw.util.getParamValue("useskin")
            ? l.search + "&useskin=vector"
            : l.search.replace(/(&|\?)useskin=.+?(&|$)/g, "$1useskin=vector$2") )
        : "?useskin=vector";
    /* oder q&d wie bei Schnark:
    var url = l.protocol + '//' + l.host + l.pathname + l.search;
    url += ( l.search.length ? "&" : "?" ) + "useskin=vector";
    */
    var li = mw.util.addPortletLink("p-cactions", url, "V", "ca-vectorskin", "Vector-Skin");
    $(li).find('a').click( function() {
        this.href += l.hash;
    } );
} );
--Bergi 10:34, 11. Jul. 2011 (CEST)
Danke. Nur kann ich nicht viel dazu sagen, ob nun der auskommentierte Teil besser ist oder nicht. --Leyo 11:41, 12. Jul. 2011 (CEST)
Wie Schnark schrieb: Es kann vorkommen, dass dann mehrmals useskin=monobook in der URL steht. Dafür ist es einfacher (und somit Millisekundenbruchteile schneller). --Bergi 17:29, 19. Jul. 2011 (CEST)
Bei URLs mit oldid und # funktioniert das unterste Script nicht (die URL bleibt unverändert). --Leyo 17:07, 18. Jul. 2011 (CEST)
Ups, da habe ich entweder das ! vergessen oder die if-else-Zweige vertauscht. Ist korrigiert; danke für den Hinweis. --Bergi 17:29, 19. Jul. 2011 (CEST)
Danke, jetzt klappt's! --Leyo 19:08, 19. Jul. 2011 (CEST)
Danke dir für die manuelle Lösung von Bug 12694 :-)
Archivierung dieses Abschnittes wurde gewünscht von: soll er? --Bergi 21:42, 19. Jul. 2011 (CEST)

CSS-Code kürzen

Kann man diesen CSS-Code zur Markierung von (lokalen) Dateien in Kategorien zusammenfassen, beispielsweise durch Ausschalten der Case-Sensitivity?

.ns-14 #bodyContent img[src*=".jpg"] { border: 1px dotted #FF0000; } .ns-14 #bodyContent img[src*=".JPG"] { border: 1px dotted #FF0000; }

Da es ja auch so funktioniert, ist die Frage mehr durch persönliches Interesse bedingt. --Leyo 16:38, 18. Jul. 2011 (CEST)

Nein, das ist meines Wissens nach nicht möglich. Der Dateiname in URLs ist case sensitive. http://www.example.org/file.jpg und http://www.example.org/file.JPG können unterschiedliche Dateien sein. --Fomafix 16:56, 18. Jul. 2011 (CEST)
Auf alle Fälle kann man es mal zu
.ns-14 #bodyContent img[src*=".jpg"], .ns-14 #bodyContent img[src*=".JPG"] {
   border: 1px dotted #FF0000;
}
kürzen. Es gibt Selektorsprachen, mit denen .ns-14 #bodyContent img([src*=".jpg"]|[src*=".JPG"]) funktioniert (sizzle von jQuery?), mit CSS geht das leider (noch) nicht. --Bergi 17:04, 18. Jul. 2011 (CEST)
Danke, das habe ich gesucht. Ich hab's so übernommen. --Leyo 17:19, 18. Jul. 2011 (CEST) PS. Soll man hier Erledigt-Bausteine setzen?
Erledigt: Kann man machen; günstig ist, wenn das die Anfragenden tun, nachdem es ein paar Tage funktioniert hatte. Lästig ist es, einen bereits archivierten Thread wieder auszugraben und weiterzuführen, weil sich doch noch eine Macke gezeigt hat. --PerfektesChaos 01:19, 21. Jul. 2011 (CEST)
Das hätte ich mich auch interessiert, wobei ich es (schon letztes Jahr) noch um zusätzlich der langen Variante erweitert habe Commons:User:Perhelion/vector.css. Grüße -- πϵρήλιο 13:17, 21. Jul. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 22:56, 6. Aug. 2011 (CEST)

Benutzer:Ireas/bilderpruefen.js so ändern, dass Kategorien unten bleiben

Unter BD:Ireas#bilderpruefen.js wurden Änderungen am Script gewünscht, denen Ireas selbst nicht nachkommen kann.

Aktuelle Situation
Das Script wird vom Wikipedia:WPDK zur Kennzeichnung von nicht commonsfähigen Dateien, deren Dateibeschreibungsseite OK ist.
Beim ersten „Bildprüfer“ wird {{Geprüfte Datei|[[Benutzer:{{subst:REVISIONUSER}}|]] ~~~~~}} ganz unten in die Dateibeschreibungsseite eingesetzt.
Beim zweiten „Bildprüfer“ wird dessen Signatur analog als zweiten Vorlagenparameter ergänzt.
Änderungwunsch
Die Vorlage:Geprüfte Datei soll immer vor allfällig vorhandenen Kategorien (Dateikategorien) eingesetzt werden.
Ist die Vorlage mit einer „Bildprüfer-Signatur“ unter den Kategorien, so soll sie bei der Zweitprüfung vor die Kategorien verschoben werden.

Habe ich mich diesmal verständlicher ausgedrückt früher? ;-) --Leyo 16:49, 20. Jul. 2011 (CEST)

Einwandfrei; auch optisch Super-Gliederung deiner Anfrage, aus dir werden wir jetzt einen Programmierer machen.
Ich hatte mir Ireas#bilderpruefen.js ohnehin schon für eine Integration in ein angedachtes Universalwerkzeug vorgesehen, das auf Wikipedia Diskussion:WPDK derzeit diskutiert wird.
Ein Wunsch ist ja, dass nur einmal common.js zu ändern wäre. Dementsprechend sollten alle Aktivitäten über das Universalwerkzeug gestartet und gesteuert werden.
In der Sache: Nullproblematisch. Ich hätte keinerlei Probleme, dies einzufügen (oder, wenn bereits an falscher Stelle vorhanden, zu verschieben):
  • vor erste Kat
  • wenn keine Kat: ganz am Ende
  • wenn eines von SORTIERUNG DEFAULTSORT DEFAULTSORTKEY DEFAULTCATEGORYSORT vorhanden, dann davor.
Natürlich hübsch mit genau einer Leerzeile vor und nach der eingefügten Vorlage.
Vielleicht mag Ireas am „Universalwerkzeug“ mitwirken, oder hat gar keine Zeit mehr und ist froh, wenn er die Verantwortung los wird?
VG --PerfektesChaos 19:28, 20. Jul. 2011 (CEST)
Die von dir weiter spezifizierte Platzierung entspricht meiner Vorstellung.
Ein Universalwerkzeug wäre sicher gut, nur möchte ich verhindern, dass du oder sonst ein technisch versierter Benutzer da echt viel Zeit reinsteckt. Wie's mit Ireas' Zeitbudget aussieht, kann ich nicht sagen. --Leyo 21:22, 20. Jul. 2011 (CEST)
Hi! Bei einem Universalwerkzeug würde ich gerne mitwirken; ich weiß aber nicht, wie das zeitlich aussieht. Diese und nächste Woche eher schlecht, danach ist erstmal Wikimania, und so geht’s dann auch weiter… ;) Als weiteres Augenpaar und mit kleineren Beiträgen gerne, aber arg viel kann ich (momentan) leider nicht dazu beitragen. Grüße, --ireas :disk: :bew: 21:28, 20. Jul. 2011 (CEST)
  • Das träfe sich gut; es ist einfacher, ein Skript als WP:WPDK/Werkzeug.js gemeinschaftlich (gleichwohl koordiniert) zu erstellen und über die Jahre zu pflegen, als etliche einzelne Benutzerskripte, die obendrein von normalen anderen Benutzern nicht verändert werden können. Hinzu kommt, dass ein Großteil der Konfigurationsabläufe identisch ist für jedes Einzelskript, und dann auch nicht mehrere Einzelskripte in common.js durch die Anwender eingebunden werden müssten, und diese sich gegenseitig in unvorhergesehener Weise negativ beeinflussen könnten.
  • verhindern, dass du oder sonst ein technisch versierter Benutzer da echt viel Zeit reinsteckt – das läuft völlig anders. Mein WSTM hat mittlerweile 425 kB kommentierten Quellcode, und das treibt es sehr viel wilder. In diesem Skript steckt soviel an schonmal abgegessenen Code-Sequenzen, dass ich die meisten Programmteile nur noch abpflücken und passend zusammensetzen bräuchte. Die Hauptarbeit liegt im Schreiben der Doku für die Anwender hinterher – und vorher darin, herauszufinden, welcher Routine-Arbeitsablauf von den Anwendern ausgeführt wird, und was automatisierbar ist. Euch steht aber mit vielen 10.000 bislang ungeprüfter Datien auch ein möglichst vereinfachter, narrensicherer und komfortabler Arbeitsablauf zu. Manches, von dem du wahrscheinlich nicht ahnst, dass es machbar wäre, kostet die Programmierer ganze zwei Zeilen zur Automatisierung.
  • Ich schlage vor, diesen Thread hier einzustellen und im Bereich Wikipedia Diskussion:WPDK weiterzuführen.
LG --PerfektesChaos 01:19, 21. Jul. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Weiter hier: Wikipedia:WikiProjekt Dateikategorisierung/Werkzeug/x --PerfektesChaos 22:56, 6. Aug. 2011 (CEST)

Weiterleitung wie BK-Check mit Buchstaben statt farblich

Moin moin,
wo es diese Seite gibt, gleich mal eine Anfrage. Bis jetzt habe ich in meiner *.css a.mw-redirect { color:green; } stehen. Nun hätte ich statt (nur) der farblichen Darstellung gerne ein Buchstabenkürzel (etwa WL) hochgestellt hinter dem Link stehen, wie es beim Begriffsklärungs-Check auch der Fall ist. Was muss ich tun? Ach ja, ist für modern, falls das von Belang ist. --Alex 23:38, 2. Aug. 2011 (CEST)

Moin, das hier müsste gehen (freihändig geschrieben):
a.mw-redirect {
   color: green;    
}
a.mw-redirect:after {
   content: "WL";
   visibility: visible ! important;
   background: #FFFFFF;
   color: green;
   vertical-align: super;
}
Skin ist egal; aber ältere Browser oder IE könnten ein Problem sein.
Falls es nicht rockt: Beschweren. --PerfektesChaos 00:05, 3. Aug. 2011 (CEST)
Super! Klappt, besten Dank! --Alex 10:17, 3. Aug. 2011 (CEST)
Ups, doch nicht. Die Buchstaben sind dort zwar zu sehen, ich kann aber nicht nach ihnen suchen. (Und das war der eigentliche Zweck.) --Alex 18:58, 4. Aug. 2011 (CEST)
Das wird wohl auch nix. Die Buchstaben stehen ja grade nicht auf der Seite 8werden also nicht per JavaScript etc. reingeschmiert) sondern vom browser dynamisch generiert. --Guandalug 18:59, 4. Aug. 2011 (CEST)
Dann würde ich
$(function() {
   $('a.mw-redirect').append($("<sup>WL</sup>"));
});
für JS empfehlen. Fürs reine Suchen sollte doch aber eine dynamische CSS-Hervorhebung besser geeignet sein als die Browsersuche nach einem ziemlich häufigen Buchstabenkürzel? en:User:Dschwen/highlightredirects.js bietet sowas, ist allerdings noch ausbaubar. --Bergi 21:17, 4. Aug. 2011 (CEST)
Wozu dient denn das visibility? --Bergi 11:25, 3. Aug. 2011 (CEST)
  • @Alex: Sorry, so hatte ich dich nicht verstanden. Wenn du danach suchen willst, bräuchtest du wohl statt dessen ein kleines JavaScript, das diesen Superscript in den HTML-Text einfügt. Mit etwas Glück wird beim Durchsuchen der Seite auch unsichtbarer Text gefunden, alternativ nur ein Pixel hohe Schriftgröße in weiß auf weiß. Anpassbaren Quellcode hätte ich in der Schublade; was für einen Browser hast du denn?
  • @Bergi: visibility beim :after ist bei mir Routine und fließt serienmäßig ein; geht auf ein Problem vor ein paar Jahren zurück, ich glaube mit IE. Sollte sich inzwischen erledigt haben; vor allem, wenn Alex ja offenbar den BKL-Check sehen kann. Schadet aber auch nichts.
LG --PerfektesChaos 20:20, 4. Aug. 2011 (CEST)
Ja, hatte ich auch nicht erwähnt. War davon ausgegangen, dass ich nach der Buchstabenkombination suchen kann, sobald ich sie sehe. Hintergrund ist, dass ich bei Änderungen gerne unnötige/historisch gegebene Weiterleitungen auflösen möchte. Bei kleinen Seiten reicht da eine optische Hervorhebung, bei längeren rutscht einem dann schon mal etwas durch und da fände ich dann eine Suche ganz hilfreich. Browser ist in der Regel Firefox, sonst Opera. --Alex 23:56, 4. Aug. 2011 (CEST)

Moin, moin; kleiner Browser-Test ergab, dass die FF-Textsuche keinen unsichtbaren Text QWL findet. Ich oder ein anderer Kollege kann dir gern die Tage mit JS+jQuery einen Dreizeiler schreiben, der dir an jedes WL-Link exponentiell „WL“ dranschreibt; danach kannst du dann suchen. Pflichtgemäß habe ich die werte Kundschaft darauf hinzuweisen, dass bei manchen WL-Links die WL deren Auflösung vorzuziehen ist; jedoch etwa bei Abkürzungen liefert der Tooltip mit ausgeschriebener Fassung hilfreichen Mehrwert. Bis dann --PerfektesChaos 00:25, 5. Aug. 2011 (CEST)

Schon klar. Kommt aber immer wieder vor, dass ein Artikel verschoben wurde (sagen wir von [[Umleiten]] nach [[Umleitung]]) und die Links nicht angepasst wurden (was dann zu Konstrukten wie Hier steht eine [[Umleiten|Umleitung]] führt). Solche und ähnliche Fälle würde ich ganz gerne eben mitputzen, wenn ich einen Artikel eh editiere. --Alex 00:45, 5. Aug. 2011 (CEST)
Äh, sehe gerade, der Dreizeiler steht schon weiter oben. Du kannst auch QWL statt WL nehmen; das Q liegt ja gleich neben dem W und die Kombination ist seltener. --PerfektesChaos 00:29, 5. Aug. 2011 (CEST)
Und die Lösung funktioniert. Danke noch mal! (Mein Eindruck ist übrigens, dass die Kombination WL im Deutschen gar nicht so häufig vorkommt.) --Alex 00:45, 5. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 22:56, 6. Aug. 2011 (CEST)

jSuggestions

Kürzlich bin ich auf dieses installierte Script gestoßen.

Ich habe vor, dem Benutzer ein Dropdown mit Vorschlägen anzubieten.

  • Ist dieses Skript geeignet für ein
    <input type="text" id="textboxT"/>
    
  • Gibt es irgendwo eine Beispielnutzung?
  • Es hat eine Dokumentation. Aber aus der werde schlau, …
  • Probiert habe ich schon
    $( '#textboxT' ).suggestions( fetch, MyDefinedFunction );
    
    aber ich habe nie ein Callback bekommen.
  • Ich werde weiter testen.
function fetchIT(d, y) {
    console.log('fetched');
    this.suggestions( 'suggestions', ['Lorem ipsum dolor sit amet', 'consectetur adipisici elit', 'sed eiusmod tempor incidunt ut labore et dolore magna aliqua'])
}

$('#wpSummary').suggestions( 'fetch', fetchIT );

So läuft's. Ein Beispiel wäre trotzdem schön.

Danke -- RE rillke fragen? 09:46, 5. Aug. 2011 (CEST)

Die beiden mir bekannten Beispielanwendungen sind mediawiki.page.ajaxCategories.js und ext.vector.simpleSearch.js. Vielleicht hilft das dir ja. --Schnark 10:32, 5. Aug. 2011 (CEST)
Super, Danke. -- RE rillke fragen? 12:42, 7. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: RE rillke fragen? 12:42, 7. Aug. 2011 (CEST)

Interwikilinks (erl.)

Gibt es ein halbautomatisches Skript, welches Interwikilinks einfügt? --Der Buckesfelder - Benutzer - Diskussion - Bewertung 19:12, 10. Aug. 2011 (CEST)

Du meinst ein Skript, das dir bei jedem Bearbeiten fehlende Interwikis vorschlägt (und auf Knopfdruck einbaut)? Oder was bedeutet „halbautomatisch Interwikilinks einfügen“? Ich müsste selbst erst suchen --Bergi 20:37, 10. Aug. 2011 (CEST)
Genau so eins meine ich. --Der Buckesfelder - Benutzer - Diskussion - Bewertung 15:03, 11. Aug. 2011 (CEST)
Kennst du dieses Tool? --Leyo 15:14, 11. Aug. 2011 (CEST)
Ja, aber ich möchte das gerne direkt eingebaut haben. Sorry, dass ich so anstrengend bin. --Der Buckesfelder - Benutzer - Diskussion - Bewertung 15:51, 11. Aug. 2011 (CEST)
Reicht dir die Implementation via Gadget? --Leyo 16:20, 11. Aug. 2011 (CEST)
Reichen tut das auch, sollte aber als Link in die Oberfläche integriert sein. Bei diesem Gadget fehlt aber eins für Interwikilinks. --Der Buckesfelder - Benutzer - Diskussion - Bewertung 20:26, 11. Aug. 2011 (CEST)
Fehlen tut's doch nur in der Gadget-Dokumentation… --Leyo 20:29, 11. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --Der Buckesfelder - Benutzer - Diskussion - Bewertung 13:57, 12. Aug. 2011 (CEST)

Benutzer ansprechen

Gibt es die Möglichkeit, per Variable den aktuellen Benutzer anzusprechen? Beispiel: Hans (auch als solcher angemeldet) schaut auf meine Benutzerseite. Dort soll er dann lesen: Hallo Hans, schön, dass Du da bist. {{REVISIONUSER}} funktioniert ja nur in der Vorschau und mit {{PAGENAME}} (am besten gesubstet) komme ich ja nur auf der Bentzerdisk des Angesprochenen weiter. Anka Wau! 12:29, 11. Aug. 2011 (CEST)

Nein, eine solche Variable gibt es nicht, und wird es auch nicht geben, da dies die Server zu stark belasten würde, denn die Seite müsste dann ja für jeden Benutzer neu gerendert werden, statt einfach aus dem Cache geholt zu werden. Siehe auch Wikipedia:Fragen zur Wikipedia/Archiv/2010/Woche 46#Variable: Name des Betrachters. Dass man REVISIONUSER verwenden kann, um zumindest beim Bearbeiten der Diskussionsseite den Benutzer direkt anzusprechen, brauche ich dir ja nicht erklären. --Schnark 12:41, 11. Aug. 2011 (CEST)
Danke, klingt logisch und sinnvoll. An die Nachteile hab ich gar nicht gedacht. Anka Wau! 12:57, 11. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Anka Wau! 12:57, 11. Aug. 2011 (CEST)

Ist es möglich das Gadget so anzupassen, dass der Cursor beim Anklicken des Tabs Filter ins Eingabefeld springt? --Leyo 16:09, 12. Aug. 2011 (CEST)

  1. Grundsätzlich: Ja. Braucht eine Zeile.
  2. Anzupassen wäre durch einen auffindbaren Commons-Admin commons:MediaWiki:Gadget-rightsfilter.js, wie du ja aus April weißt.
  3. Bergi, ich oder sonstwer schauen uns das an. Damit uns das klar ist: Welches Eingabefeld genau soll den Focus erhalten? (Ich arbeite blind und werde das tunlichst nicht installieren.)
LG --PerfektesChaos 16:46, 12. Aug. 2011 (CEST)
3. <input id="rfRegex"> --Leyo 16:51, 12. Aug. 2011 (CEST)
Das war ein sachdienlicher Hinweis.
Ungetestet müsste das Einfügen der folgenden Zeile laufen:
//Set passed values
$('#rfRegex').val(value);
$('#rfCase').attr('checked', !casing);
$('#rfInvert').attr('checked', inverted);
$('#rfRegex').focus();
 
//Bind click and change handlers
Schönes Wochenende --PerfektesChaos 19:04, 12. Aug. 2011 (CEST)
Hat geklappt, vielen Dank! Ebenfalls ein schönes Wochenende wünscht Leyo 20:18, 12. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 20:18, 12. Aug. 2011 (CEST)

Automatischer Editkommentar soll nicht mehrfach ergänzt werden

Nachdem ich auf der Diskussionsseite die Erlaubnis erhalten habe, nun also ein Commons betreffender Wunsch. Es handelt sich um etwas nicht so Wichtiges, aber dafür für euch wohl ziemlich schnell zu Lösendes. Es geht darum, dass ein automatischer Editkommentar nicht mehrfach ergänzt wird. --Leyo 15:23, 12. Jul. 2011 (CEST)

Die Frage ist ohnehin nicht Commons-spezifisch; für das Karlruher Stadtwiki sieht die Antwort genauso aus.
In meinem in der de.WP entwickelten Skript stehen sinngemäß die Zeilen

var field = document.getElementById("editform").wpSummary; if (field.value.indexOf(Modification_Summary) < 0) { if (field.value.trim() == "") { field.value = Modification_Summary; } else { field.value = field.value + " " + Modification_Summary; } }

Dabei ist
  • Modification_Summary der neu einzufügende Kommentar
  • wpSummary der momentane Inhalt des Zusammenfassungs-Feldes.
Das gilt für jeden, der an einer Zusammenfassung manipulieren will.
Nun wird ein Bot weniger an dem HTML-Dokument wirken wollen; statt field.value wäre aus dem bisherigen Durchlauf des Bot-Programms der schon zusammengesammelte BK zu verwenden. Wenn der Bot dies abspeichern möchte, wird er das als summary unter mw:API:Edit/de schreiben wollen.
Für das Weitere bräuchte man den Quelltext des bot, um zu gucken, welche Variable intern für summary benutzt wird.
HGZH --PerfektesChaos 16:34, 12. Jul. 2011 (CEST)
Was meinst du genau mit dem Bot? Commons:MediaWiki:Botcheck.js wird verwendet, um ein paar Arbeitsschritte beim Überprüfen von Commons-Transfers zu automatisieren. Um die Funktionsweise zu sehen, einfach eine Datei in Commons:Category:Files moved from de.wikipedia to Commons requiring review auswählen und dort im gelben Baustein auf Jetzt überprüfen! klicken. --Leyo 16:42, 12. Jul. 2011 (CEST)
		// Set edit summary
		var add = "This bot move has been checked";
		var summary = document.getElementById ('wpSummary');
		if (!summary) return;
		var val = $.trim( summary.value || "" );
		if (val.indexOf(add) != -1) return;
		summary.value = (val.length == 0) ? add : val + " " + add;

Das dürfte sein was du brauchst. @PerfektesChaos: Kann man "String".trim mittlerweile vorraussetzen? Ich persönlich bevorzuge da zwar eine Prototyping-Library, aber in WMF soll man doch alles mit jQuery basteln? --Bergi 17:53, 12. Jul. 2011 (CEST)

Verstehe ich das Script richtig, dass geprüft wird, ob schon etwas in der Zusammenfassungszeile steht und falls ja, alles durch „This bot move has been checked“ ersetzt wird? --Leyo 18:35, 12. Jul. 2011 (CEST)
Nein; wenn schon etwas in der Zusammenfassungszeile steht, wird ein Leerzeichen angehängt und dahinter das „This bot move has been checked“.
@trim()
Genau deswegen heißt es oben „sinngemäß“; bei mir steht da ein noch selbstgeschriebenes und ohnehin erheblich schlaueres trim(), weil ich an Unbekannte in unbekanntem Browser-Kontext weiterreiche.
trim() ist ab JavaScript 1.8.1 allgemein verfügbar, also schon bei aktuelleren Browser-Versionen bekannt.
Hängt also von den Umständen ab; im ersten Fall (HTML-Umgebung) dachte ich an ein persönliches Skript in eigenem Kontext. Notfalls trim() weglassen; die Mediawiki-DB trimmt interaktiv sowieso beim Speichern, von der API weiß ich's nicht, und der größte Schaden wäre, dass man wegen zu vieler führender Leerzeichen das 255-Zeichen-Limit (oder so ähnlich, 235?) des BK knackt.
Weil es sich also über Commons:MediaWiki an Unbekannte in unbekanntem Browser-Kontext richtet, ist vorläufig das $.trim() schon ganz okay.
Die Bezeichnung „Bot“ für das interaktive Schnipselchen unter Commons:MediaWiki:Botcheck.js ist etwas irreführend; ich hatte mir etwas anderes darunter vorgestellt.
Beim wirklichen Bot ohne Browser wäre die Arbeitsumgebung des Bot relevant.
--PerfektesChaos 18:53, 12. Jul. 2011 (CEST)
Der Name wurde so gewählt, weil damit von einem Bot durchgeführte Transfers von Dateien nach Commons gecheckt werden können. Aber ich stimme dir zu, dass man den Namen durchaus anders interpretieren kann.
Ist es unter den genannten Voraussetzungen am besten, das untere Script 1:1 zu übernehmen? Als JS-OMA bin ich leider nicht in der Lage, aus allen Infos hier selbst ein „Synthesescript“ zu erstellen. --Leyo 00:06, 13. Jul. 2011 (CEST)
Ich gebe zu: Hätte ich die von dir verlinkte Talkpage umgeblättert, wäre mir klarer gewesen, was du möchtest. Ich ging davon aus, dass irgendein dussliger Bot auf Commons sich papageienhaft wiederholt.
Die von Bergi angegebenen Zeilen sehen gut aus. Es spräche nichts dagegen, sie dort einzufügen (einfügen zu lassen – Admin@Commons?). Ein anderer Weg wäre, die Zeilen zunächst ein bis zwei Wochen auf der dortigen Disku zu präsentieren, und wenn in der Urlaubszeit niemand protestiert hat, danach zu handeln. Das Problem tritt ohnehin erst dann auf, wenn der interaktive Benutzer zum zweiten Mal auf diesen ominösen Knopf geklickt hat, und ein Schaden am Datenbestand entsteht ohnehin nicht.
Zu ersetzen sind die fünf Zeilen beginnend mit // Set edit summary bis beginnend mit summary.value = durch die analogen von Bergi.
Du kannst es erstmal für dich persönlich austesten; du müsstest ein Commons.commons.js haben, in die du die ganze erneuerte Funktion einfügst. In der ersten Programmzeile wäre vorübergehend zu ändern wgAction == 'edit' in wgAction == 'submit' – dann wird es automatisch ausgeführt, wenn du dir die Vorschau anzeigen lässt. Nun kannst du beim ersten Bearbeiten ein Mal auf den Knopf klicken und einen BK mit Meldung erzeugen; in der anschließenden [Vorschau] darf der BK nicht um eine zweite Meldung erweitert sein. Nun kannst du in deinem persönlichen Skript die Meldung ersetzen durch "Heureka!" – commons.js abspeichern und wieder die [Vorschau] von dem immer noch bearbeiteten Bild-Artikel. Jetzt sollte im BK stehen "This bot move has been checked Heureka!" – und du weißt, dass es funktioniert.

Nebenbei darf sich niemand wundern, wenn die von unterschiedlichen Beratern gegebenen Code-Vorschläge bei gleicher Funktion unterschiedlich aussehen. Es gibt unendlich viele Möglichkeiten, dies zu notieren und zu formatieren, und manchmal sind Ausnahmesituationen, kaputte Seiten und veraltete Browser oder besonders schnelle Ausführung berücksichtigt oder auch nicht. Ich persönlich werde auf dieser Seite immer so gliedern, dass es auch für Newcomer besonders leicht zu lesen und zu verstehen ist – auch wenn drei einfache Zeilen sich in einer einzigen komplexen zusammenfassen ließen. Das mache ich ohnhin seit Jahrzehnten für mich selber so, weil ich sonst nach sechs Wochen mein eigenes Geschreibsel nicht mehr verstehe, nachdem ich zwischendurch Tausende von Zeilen in drei anderen Sprachen auf vier anderen Hochzeiten verbrochen hatte. Es vermeidet auch Fehler und spart viel Debugging-Zeit und Ärger mit frustrierten Dritten – unterm Strich spart man damit zehnmal mehr als der Mehraufwand für einen gut lesbaren Quellcode kostet. Von der Zusammenarbeit mit Kollegen und Partnern und einer Weiterentwicklung Jahre später ganz zu schweigen.
Enjoy --PerfektesChaos 09:37, 13. Jul. 2011 (CEST)
Vielen Dank für die ausführliche Antwort. Mit meiner Frage oben bezog ich mich vor allem auf die trim-Funktion und ob das untere Script dort noch optimiert werden sollte.
Weil – wie ihr oben beschrieben habt – kein grosser Schaden entstehen kann, habe ich einen Commons-Admin gesucht und gefunden den Code wie vorgeschlagen angepasst. Meine bisher zwei Tests sind erfolgreich verlaufen. --Leyo 10:29, 13. Jul. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 22:56, 6. Aug. 2011 (CEST)

Frage: Text ersetzen

Bitte mal hier schauen! --Thomas021071 21:21, 28. Aug. 2011 (CEST)

Flominator hatte dir schon eine Variante mit Bookmarklet gewiesen.
Eine komfortable und gegen bestimmte Sonderfälle gefeite Methode wäre, mein Skript WikiSyntaxTextMod einzubinden und zusätzlich in deine common.js einzufügen:
   var Modif_Link  =  [
             [  ["{{",  "BAB-Land",   ""],
                [false, "AB",         "|DE|Region|"]  ],
             [  ["{{",  "BAB-Kreis",  ""],
                [false, "AB",         "|DE|RegionSub|"]  ],
             [  ["{{",  "B-Ort",      ""],
                [false, "AB",         "|DE|Ort|"]  ],
             [  ["{{",  "B-Trenner",  ""],
                [false, "AB",         "|DE|Strich"]  ],
             [  ["{{",  "B-Text",     "(<small>)?([^}]+)?(</small>)?"],
                [false, "AB",         "|DE|Leer||$2"]  ]
                          ];
Soweit habe ich das dem Beispiel entnommen; Details dazu. Aus dem Handgelenk geschrieben und nicht getestet; müsste aber klappen. Sonstiges analog, mit Regeln für Umfahrung usw.
HGZH --PerfektesChaos 22:06, 28. Aug. 2011 (CEST)
irgendwas mache ich falsch. --Thomas021071 22:22, 28. Aug. 2011 (CEST)
Äh, ja, du hättest mehr davon, wenn du dazu auch noch mein Skript einbindest:
// [[Benutzer:PerfektesChaos/js/WikiSyntaxTextMod]]
importScript("Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/r.js");
Dies käme in deiner common.js noch hinzu. Ansonsten würde ich empfehlen, die von mir verlinkten Seiten kurz zu überfliegen, damit du eine ungefähre Vorstellung von dem hast, was du tust.
Wenn du die durchfahrenen Bundesländer auch noch automatisch verlinken möchtest, lässt sich auch das noch automatisieren.
Schönen Abend --PerfektesChaos 23:26, 28. Aug. 2011 (CEST)

Hallo, ich habe es versucht aber irgendwie will das alles nicht funktionieren. Mus ich irgendwas verschieben oder kopieren? --Thomas021071 18:16, 29. Aug. 2011 (CEST) pefektes Caos wie machst du das ich nehme Deine Hilfe gerne an ,Wo kann bei mir der Fehler sein ? --Thomas021071 18:49, 29. Aug. 2011 (CEST)


Oje; man sollte sein eigenes Zeugs doch vorher testen, bevor man Ratschläge gibt …
  • Du müsstest aber bisher schon einen Teilerfolg bemerkt haben; das heißt der Name der alten Vorlage war schon durch AB ersetzt worden, aber die zusätzlichen Parameter sind nicht eingefügt worden? Letzteres wäre mein Fehler.
    • Falls nicht: Du hattest den aktuellen Artikel bearbeitet? Wenn oben in der URL etwas von &oldid= steht, geht das Skript von einer veralteten Version aus und macht sicherheitshalber erstmal nix.
    • Deine common.js sieht jetzt okay aus. Ändere mal noch wie unten angegeben und probiere einen anderen Artikel.
  • Ich habe das mal probehalber bei mir eingefügt und verfeinert; das Resultat ist in der B176 zu sehen: Bitte auf Richtigkeit prüfen.
  • Ich habe bei der Gelegenheit eine kleine Nickeligkeit in meinem Skript entdeckt: Der leere Zeichenketten-Parameter "" macht zurzeit nicht das, was ich mir vorstelle. Du bist der erste, bei dem das benötigt wird. Werde das die nächsten Tage mal verfeinern. Bis dahin schreibe ich dir mal eine Baustellen-Umfahrung, die die bisherigen Zeilen ersetzt:
var Modif_Link  =  [
  [  ["{{",  "BAB-Land",   "(.)"],
     [false, "AB",         "|DE|Region|$1"]  ],
  [  ["{{",  "BAB-Kreis",  "(.)"],
     [false, "AB",         "|DE|RegionSub|$1"]  ],
  [  ["{{",  "B-Ort",      "(.)"],
     [false, "AB",         "|DE|Ort|$1"]  ],
  [  ["{{",  "B-Trenner",  "(.)"],
     [false, "AB",         "|DE|Strich$1"]  ],
  [  ["{{",  "B-Text",     "(<small>)?([^}]+)?(</small>)?"],
     [false, "AB",         "|DE|Leer||$2"]  ],
  [  ["{{",  "AB",   "\\|DE\\|Region\\| *Berlin *"],
     [false, false,  "|DE|Region|[[Berlin]]"]  ],
  [  ["{{",  "AB",   "\\|DE\\|Region\\| *Thüringen *"],
     [false, false,  "|DE|Region|Freistaat [[Thüringen]]"]  ]
                       ];
  • Als Strafarbeit habe ich dir eine Bundesland-Verlinkungs-Ersetzung dazugeschrieben, die du dir analog für die anderen Bundesländer basteln kannst (Aufpassen mit dem Komma am Schluss: besser den Berlin-Eintrag kopieren; hinter dem abschließenden Thüringen steht kein Komma mehr.).
Viel Glück --PerfektesChaos 19:08, 29. Aug. 2011 (CEST)

Sorry Du must Dich nicht entschuldigen. weil ich zu faul bin etwas zu kopieren ist das Ganze Desaster erst gekommen . kleine Fehler habe ich entdeckt , mir ging es eigentlich nur um {{B-Ort|[[Bad Langensalza]]}} in

 {{AB|DE|Ort||[[Bad Langensalza]]}}

als Hilfe. Ich arbeite sehr viel mit Vorlage:Infobox hochrangige Straße/Wartung/Deutschland.--Thomas021071 19:30, 29. Aug. 2011 (CEST)

Der Fehler muß bei mir liegen. in der URL von -Bearbeiten von „Bundesstraße 156“-

http://de.wikipedia.org/w/index.php?title=Bundesstra%C3%9Fe_156&action=edit#editformn sieht bei mir so aus und es tut sich nix. sorry --Thomas021071 19:47, 29. Aug. 2011 (CEST)

  • Es ist völlig okay und sehr sinnvoll, solche Umstellungen in über Hundert Artikeln an Dutzenden von Stellen nicht von Hand, sondern mit automatisierter Unterstützung vorzunehmen. Das hat nichts mit Faulheit zu tun; es vermeidet auch bei größter Sorgfalt unvermeidliche Fehler und spart viele Stunden und Bündel von Nerven.
  • Dass das Skript bei dir grad nicht anspringt, ist kein Grund zur Beunruhigung. Sowas haben wir bislang noch immer geknackt. Ich bin jetzt auch neugierig.
  • Gleichwohl werden wir die Disku hier in der allgemeinen Werkstatt beenden und an folgender Stelle fortsetzen: BD:PerfektesChaos/js/WikiSyntaxTextMod – dort bitte neuen Abschnitt mit der Antwort auf folgende Fragen:
    1. Welchen Browser hast du? Versionsnummer?
    2. JavaScript ist in deinem Browser aber schon aktiv?
    3. Wenn du deiner common.js vorübergehend die folgende Zeile hinzufügst, was passiert dann?
                      alert("Hier bin ich.");
So, auf dieser Seite damit Schluss; auf der anderen dann weiter … --PerfektesChaos 20:34, 29. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 22:25, 29. Aug. 2011 (CEST)

Neuen Button im Editor

Hallo. Ist es möglich, einen zusätzlichen Button in einen Editor einzufügen, der automatisch eine Vorlage ({{Beispiel}}) einfügt? Wenn ja, wie müsste das Skript aussehen? Grüße --Der Buckesfelder - Benutzer - Diskussion - Bewertung - Email 21:55, 26. Aug. 2011 (CEST)

Entweder benutzt du PDDs Monobook und ergänzt da weitere Vorlagen oder du aktivierst dir die Extra-Editbuttons und ergänzt dir da Vorlagen. XenonX3 - (:) 22:00, 26. Aug. 2011 (CEST)
Ja, das ist möglich, aber das Vorgehen hängt stark davon ab, ob du die alte oder neue Werkzeugleiste verwendest. Deine vector.js lässt auf ersteres schließen, sodass du mal Wikipedia:Helferlein/Extra-Editbuttons#Benutzerdefinierte Buttons durchlesen solltest. --Schnark 09:36, 27. Aug. 2011 (CEST)
Ich benutze die neue. Ich habe jetzt mal meine Vector.js angepasst, aber irgendwie läuft das nicht richtig. --Der Buckesfelder - Benutzer - Diskussion - Bewertung - Email 12:00, 5. Sep. 2011 (CEST)
Das Gadget (das du vermutlich aktiviert hast) kann mit der neuen Leiste nicht umgehen, dazu musst du Benutzer:Schnark/js/wikieditor verwenden und dir dazu die grauenhafte Dokumentation durchlesen. --Schnark 12:21, 5. Sep. 2011 (CEST)
Kannst du mal schauen, ob ich das jetzt so richtig gemacht habe?--Der Buckesfelder - Benutzer - Diskussion - Bewertung - Email 12:36, 5. Sep. 2011 (CEST)

Ich habe jetzt mal PDDs Monobook benutzt, es ist jetzt nur noch ein Darstellungsproblem vorhanden: Statt irgendeinen Button habe ich jetzt nur noch einen Linktext über dem Wikipedialogo. --Der Buckesfelder - Benutzer - Diskussion - Bewertung - EmailBenutzer:Der Buckesfelder/inaktiv2 18:21, 5. Sep. 2011 (CEST)

Die Version von PDD funktioniert im Vector-Skin nicht, wenn du diese benutzen willst, dann musst du den Monobook-Skin verwenden. --StG1990 Disk. 16:05, 6. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: --Der Buckesfelder - Benutzer - Diskussion - Bewertung - Email{{Benutzer:Der Buckesfelder/inaktiv2 20:51, 7. Sep. 2011 (CEST)}}

URL-Parameter bei Benutzersperren

Analog zu oben die Frage: Kann man die Checkboxen beim Sperren von Benutzern per URL aus- und abwählen?

Bei allen anderen Seiten bekomme ich das hin (einfach mal mit wpMovetalk=0 bei einer Verschiebe-URL probieren), hier nicht. Nur die Textfelder kann ich vorbelegen. Bekommt das irgendjemand, der irgendwo (und da sich mit MediaWiki 1.18 gerade beim Sperren eine Menge getan hat, wenn ich mich recht erinnere, heißt irgendwo: in einem eigenen aktuellem Testwiki) Admin ist, hin? --Schnark 12:08, 5. Sep. 2011 (CEST)

Wurde mir für MW 1.17 auf Wikipedia:AAF von beantwortet, das reicht mir. --Schnark 11:57, 14. Sep. 2011 (CEST)
Nur zur Info, damit Mitlesende wissen, dass es getrackt wird: Bug 30909. Der Umherirrende 21:12, 17. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Schnark 11:57, 14. Sep. 2011 (CEST)

Rand fixieren

Hallo, ich würde in meine Monobook CSS gerne einen Skript einfügen womit ich die Kästen an der linken Seite wie die Suchleiste oder Navigation, etc. . Könnt ihr mir helfen? Ich habe bereits auf Fragen zur Wikipedia gefragt und mir wurde empfohlen hier eine Anfrage zu erstellen. Gruß --Rooooo 22:12, 20. Jul. 2011 (CEST)

Hallo Rooooo, ich nehme an, du benutzt den Monobook-Skin. Der CSS-Code #column-one { position: fixed; } fixiert die linke Seitenleiste, was aber den Nebeneffekt hat, dass auch die logisch enthaltenen beiden oberen horizontalen Leisten (Persönliches und Aktionen) mitfixiert werden. Mit einer geeigneten Zeile jQuery in der monobook.js könnte man die sicher vorher heraushebeln. Wer schüttelt die aus dem Handgelenk? --Wiegels „…“ 22:57, 20. Jul. 2011 (CEST)
Ich empfehle den Vector-Skin und #mw-panel {position:fixed !important;} in Spezial:Meine Benutzerseite/vector.css. Der Monobook-Skin ist in dieser Hinsicht einfach nicht durchdacht. --Schnark 11:52, 21. Jul. 2011 (CEST)
Oder du fängst erstmal mit #column-one div.portlet:not(#p-cactions):not(#p-personal) { position:fixed; overflow-y:auto; } an. Die jetzt fixierten Elemente (siehe Wikipedia:GUI#Seitenaufbau) sollte man imho sowieso noch einzeln positionieren und mit Höhe versehen, da man sich nicht sicher sein kann dass jederzeit die volle Bildschirmhöhe zur Verfügung steht. --Bergi 13:10, 22. Jul. 2011 (CEST)
Danke schonmal für eure Vorschläge, Vector möchte ich nicht beunutzen, gefällt mir einfach nicht. Die Vorschläge von Wiegels und ✓ habe ich ausprobiert, bei Wiegels wird eben die Anzeige "Seiten" bzw. andere betätigte Buttons der Seite mitfixiert und überlappen manchmal das Wikimedia-Logo unten links. Wenn da jemand wüsste was ich in die JS eingeben könnte wäre das schon gut. ✓-Version scrollt gut mit jedoch bekomme ich das mit der GUI nicht hin und dann sieht das bei mir so aus. Weiss jemand wie ich das behebne kann? --Rooooo 13:29, 22. Jul. 2011 (CEST)
Das JS dürfte so aussehen:
$( function() {
   $('#p-cactions, #p-personal').appendTo('#globalWrapper');
});
Zu meinem Code gehört noch eine Positionierung der einzelnen Elemente dazu, sonst liegen sie - wie in deinem Screenshot - übereinander. Das könnte beispielsweise so aussehen:
div#column-one { padding-top:0; }
#p-logo { display:none;}
#p-search { top:0; height: 5.5em; }
#p-navigation { top:5.5em; height: 8.5em; }
#p-Mitmachen { top:14em; height: 6.5em; }
#p-tb { top:20.5em; height: 15; }
--Bergi 14:16, 22. Jul. 2011 (CEST)
Danke, funktioniert jetzt fast. Habt ihr noch einen Code, der das Feld Drucken+Exportieren ausblendet? Den brauch ich nicht und stört.--Rooooo 16:48, 22. Jul. 2011 (CEST)
Das kannst du mit #p-coll-print_export { display: none; } erreichen. --Wiegels „…“ 19:09, 22. Jul. 2011 (CEST)
Gut, Danke^^--Rooooo 19:36, 22. Jul. 2011 (CEST)
Mir ist jetzt jedoch aufgefallen das bei Artikeln die Bo "In anderen Sprachen" sich manchmal übers Suchfeld legt. Wer kennt einen Code dafür?--Rooooo 19:37, 25. Jul. 2011 (CEST)
Verwende mal meinen CSS-Code nicht, sondern nur das js und Wiegels css-Schnipsel. Wenn du nur meinen Code verwenden willst, musst du das language-portlet wie die anderen absolut positionieren, und, das ist der Vorteil, eine ihm feste Höhe verpassen sodass es auf deinen Bildschirm passt. Wenn du alle Elemente nur fixierst, ragen bei langen Sprachlisten sonst die untersten aus dem Bild, ohne dass sie erreichbar wären.
Genau erklärt: In der einen Lösung werden per Skript die oberen Leisten logisch aus der linken Spalte herausgenommen. Dann kannst du die gesamte linke Spalte fixieren. In der anderen Lösung fixierst du nur einzelne Elemente aus der linken Spalte und musst ihnen dafür einzeln Positionen zuweisen. Bei beiden Lösungen solltest du Elementen feste Höhen und overflow-y:auto zuweisen, damit du sie scrollen kannst wenn ihr Inhalt ihre Höhe überschreitet. Bei der ersten Lösung böte es sich an, dies für die gesamte linke Spalte vorzunehmen, bei der zweiten kannst du zusammen mit der absoluten Positionierung die Aufteilung in wichtigere und weniger wichtigere Portlets vornehmen. Mit etwas Geschick lässt sich beides verbinden. --Bergi 21:46, 26. Jul. 2011 (CEST)
Danke, scheint problemlos zu funktionieren. Ziemlich kompleziert so einen kleinen Rand zu fixieren.^^
Archivierung dieses Abschnittes wurde gewünscht von: Rooooo 12:04, 18. Sep. 2011 (CEST)

Koordinaten in Infobox

Gäbe es viel zu tun, ein Script zu schreiben, welches automatisch die Koordinaten aus der Vorlage:Coordinate in die Vorlage:Infobox See überträgt? Zur Abarbeitung dieser Liste (Beispiel) wäre sowas ganz nützlich. --Leyo 19:26, 23. Aug. 2011 (CEST)

Das wäre eigentlich eine Botaufgabe, oder? ;) Bei den Stadion-Infoboxen hat meiner das jedenfalls schon mal gemacht. --Guandalug 19:29, 23. Aug. 2011 (CEST)
Mit den Tabelleninfoboxen bin ich bis auf ca. zwanzig durch. Da lohnt sich wohl ein Boteinsatz nicht mehr. Ich hab's vor allem für Artikel gedacht, die bisher noch gar nichts solches drin hatten (Beispiel). --Leyo 19:37, 23. Aug. 2011 (CEST)
Bin ich Spezialist für, hab das mal mit portugiesischen Infoboxen gemacht :-) Was brauchst du denn genau, ein Skript, dass die Vorlage:Coordinate rausschmeißt und an den Artikelanfang die IB-Kopiervorlage einbaut? Gibt es reelle Chancen, mit regulären Ausdrücken häufige IB-Parameter zielsicher aus dem Text zu lesen? Was soll bei mehreren Koordinatenvorlagen passieren? Wie willst du das Skript starten, Bookmark/Lesezeichen (kein rumpfuschen im user-js), Edittoolbar, Tab/Reiter? --Bergi 21:23, 23. Aug. 2011 (CEST)
Antworten chronologisch auf deine Fragen: (i) In etwa so habe ich es mir vorgestellt. (ii) Mit Ausnahme von Vorlage:Höhe dürfte das schwierig sein. (iii) Ich denke nicht, dass dieser Fall häufig auftritt. Daher wäre wohl Handarbeit am sinnvollsten. (iv) Werkzeugleiste oder Tab wäre beides OK. --Leyo 00:03, 24. Aug. 2011 (CEST)
OK. Aus dem Handgelenk (ungetestet, und ich bin wahrscheinlich ab morgen im Urlaub):
$(function() {
   if (mw.config.get("wgAction") != "edit" && mw.config.get("wgAction") != "submit")
      return;
   function template(name, params) {
      var mlength = 1;
      for (var i in params)
         mlength = Math.max(mlength, i.length);
      var a = "{{"+name;
      for (var i in params)
         a += ("\n | "+i+"                                               "/* " ".repeat(mlength)*/).substring(0, mlength + 4)+" = "+params[i];
      return a+="\n}}";
   }
   var ibparams = {"BILD":"","BILDBESCHREIBUNG":"","BREITENGRAD":"","LÄNGENGRAD":"","REGION-ISO":"","LAGE":"","ZUFLUSS":"","ABFLUSS":"","INSELN":"","UFERSTADT":"","NAHESTADT":"","HÖHE":"","HÖHE-BEZUG":"","FLÄCHE":"","SEELAENGE":"","SEEBREITE":"","VOLUMEN":"","UMFANG":"","MAX-TIEFE":"","MED-TIEFE":"","BESONDERHEITEN":""};
   var link = $(mw.util.addPortletLink('p-tb'/*#wohin-du-willst, vielleicht 'p-cactions'?*/,"#","Infobox See","js-ibsee","Lese die Koordinaten aus evtl. vorhandener Koordinatenvorlage aus und füge die Vorlage:Infobox See in den Artikel ein"));
   link.find("a").addClass("scriptlink").click(function() {
      var t = mw.util.$content.find("#wpTextbox1");
      if (! t.length) return alert("Kein Editform gefunden!");
      t.val( function(index, text) {
         var c = text.match(/{{\s*Coordinate[\s\S]+?}}/g);
         if (c && c.length === 1) {
            text = text.replace(/(\s*){{\s*Coordinate([\s\S]+?)}}\s/, function(all, davor, para) {
               var ps = para.split("|"), m;
               for (var i=0;i<ps.length;i++) {
                  if(m=ps[i].match(/^\s*(NS|EW|region)\s*=\s*(.+?)\s*$/))
                     ibparams[ {
                        "NS": "BREITENGRAD",
                        "EW": "LÄNGENGRAD",
                        "region": "REGION-ISO"
                     }[m[1]] ] = m[2];
               }
               return davor;
            }).replace(/(\r\n[\t ]*){3,}/g,"\n\n");
         } else {
            alert("Keine oder mehr als eine Koordinatenvorlage gefunden");
         }
         return template("Infobox See", ibparams)+"\n"+text;
      });
   });
});
Könnte natürlich noch generalisierter, schöner geschrieben und fehlerresistenter werden, aber ich denke für den Zweck reicht es erstmal. Die Parameter als Object zu speichern statt als Array könnte den Fehler auslösen, dass sie in ungeordneter Reihenfolge ausgegeben werden, das hängt von der JavaScript-Engine (also deinem Browser) ab. --Bergi 14:02, 26. Aug. 2011 (CEST)
PS: Der Link steht zurzeit links im "Werkzeuge"-Portlet, und nur im Editmodus, nicht dass du dich kaputtsuchst.
Danke und sorry für die späte Antwort! Ich hab's eben getestet, aber leider habe ich mich tatsächlich kaputtgesucht… Muss zuerst noch irgendwas angepasst werden, beispielsweise das "#" durch den Link auf die Aktion ersetzt werden? --Leyo 23:04, 29. Aug. 2011 (CEST)
Ja, eine späte Antwort; wohl zu spät … wenn ich das richtig verstanden habe, ist Bergi am Wochenende in Urlaub gegangen. LG --PerfektesChaos 00:15, 30. Aug. 2011 (CEST)
Die Frage kann ich aber auch beantworten: Kein #
  • 'p-tb' – Linke Spalte unter „Werkzeuge“
  • 'p-cactions' – Horizontale Leiste oben, bei Vector im Pop-Up.
Siehe auch Wikipedia:GUI, LG --PerfektesChaos 09:46, 30. Aug. 2011 (CEST)
Gestützt auf Wikipedia:GUI#addPortletLink ging ich davon aus, dass an zweiter Stelle die Aktion sein sollte.
var link = $(mw.util.addPortletLink('p-tb',"#","Infobox See","js-ibsee","Lese die Koordinaten aus evtl. vorhandener Koordinatenvorlage aus und füge die Vorlage:Infobox See in den Artikel ein"));
funktioniert aber genausowenig wie ohne "#",. --Leyo 09:58, 30. Aug. 2011 (CEST)
  • Klassisches Missverständnis betreffend #, ich hatte deine Frage nicht richtig gelesen und war an dem /*#wohin-du-willst hängengeblieben. Die Seltsamkeit, dass addPortletLink beim ersten Parameter selbst ein # voranstellt und hier ausnahmsweise keines vom Anwender gesetzt werden darf, es überall sonst aber stehen muss, legt wohl öfters Leute rein, inklusive mir selbst als Autor von Wikipedia:GUI#addPortletLink.
  • Es mag seltsam klingen, aber das von Bergi angegebene "#" ist sowohl eine gültige URL, wenn auch eine arg reduzierte relative URL (zu der ich wohl mal unseren Artikel erweitern müsste), wie auch als URL eine gültige Aktion. Bergi neigt zu einer drastisch verkürzten Programmierungssprache.
  • Was Bergi gemacht hat, scheint ja wohl zu funktionieren; und gut ist. Gleichwohl würde ich selbst das nie so schreiben, schon weil es nur mühsam nachzuvollziehen ist und mehrere Tricks und Hintertürchen nutzt. Ich könnte mich nach einer Woche selbst nicht mehr verstehen.

Schönen Tag --PerfektesChaos 10:28, 30. Aug. 2011 (CEST)

Ursprünglich hatte ich angenommen, dass # für die URL steht (wie es auch in einigen Tools von Schnark der Fall ist) hatte ich angenommen, aber als es so (obiger Code mit Ausnahme des /*…*/-Kommentars) nicht funktionierte, habe ich nach Gründen gesucht.
Ich kann gut auf Bergis Rückkehr warten. In den nächsten zwei Wochen bin ich eh weniger online als sonst. --Leyo 10:41, 30. Aug. 2011 (CEST)
Ja, dann besser auf Bergi warten. Eins der zu erahnenden Hintertürchen scheint zu klemmen; Bergi verwendet Opera, du FF – möglicherweise werden bei Opera die impliziten Aktionen als Seiteneffekt ausgelöst. --PerfektesChaos 11:32, 30. Aug. 2011 (CEST)

So, bin wieder daheim. Ohne diesen Edit müsste es eigentlich funktionieren, der Link versteckt sich links unter "Werkzeuge" (bei Permalink etc). Hat PerfektesChaos ja schon beschrieben. An FF v Opera dürften keine Probleme auftreten, oder bekommst du einen Syntax-Error? Hintertürchen habe ich eigentlich keine benutzt, zugegebenermaßen ist die (standardkonforme) Verwendung von replace + function als match und das Mapping von Coordinate-Parameternamen auf die (als keys für ibparams genutzen) IB-Parameternamen ohne Variable (oder gar mw.map-Objekt, bzw. hartcodiert als switch) stark verkürzend, durch meinen konsequenten Einrückungsstil aber hoffentlich noch lesbar und verständlich.

Zu addPortletLink: die alte Version übernahm die Element-Id des Portlets als ersten Parameter, und ein Kind-Element dessen als letzten wenn es an bestimmter Stelle eingefügt werden soll. mw.util.aPL wurde so gejQuerisiert, dass der erste Parameter einfach mit "#" ergänzt wird um zum id-Selektor für jQuery zu werden (was theoretisch auch alles andere erlaubt), und der letzte Parameter kein Element sein muss sondern auch ein Selektor sein darf (üblicherweise mit #).
Der zweite Parameter - die URL - ist davon völlig unberührt. addPortletLink ist dazu da, Links (auf andere Seiten) einzufügen, und bietet leider keine Option für click-Handler. Es gibt nun 2 Möglichkeiten, das zu umgehen und trotzdem die Funktion als Universal-Interface für alle Skins zu nutzen: Zum einen ist da javascript:URL, die ich nicht mag, da sie mehr Workaround als Feature ist, nicht einheitlich funktioniert, ein return undefined benötigt um nicht sonstwohin zu führen und vor allem eine öffentliche Funktion (im window-Scope) nötig ist. Letzteres ist höchstens bei Libraries, APIs und gemeinen Funktion (MediaWiki:Common.js, damit mans abschalten kann) nützlich. Daher installiere ich grundsätzlich click-Handler, hier mit jQuery und dem von addPortletLink zurückgegeben li-Element. In solchen Fällen, in denen keine noscript-Serverfunktionalität dahintersteckt und der Link also ins Leere laufen muss, ist es üblich auf eine leere Sprungmarke zu verweisen. Dürfte daher stammen, dass ein href nicht leer sein darf oder sowas, allerdings muss der Clickhandler die Ausführung des Links trotzdem verhindern (preventDefault) da viele Browser sonst zusätzlich an den Dokumentanfang springen (hab ich oben vergessen?).
--Bergi 16:59, 2. Sep. 2011 (CEST)

Ich habe den von dir erwähnten Testedit wieder rückgängig gemacht. Geholfen hat's nicht (was mich auch erstaunt hätte, denn diese Version hatte ich ja getestet). Auch das Deaktivieren von Benutzer:Schnark/js/autoantraege.js (man kann's ja mal probieren) hat nichts gebracht. Fehlermeldung: Fehlanzeige. --Leyo 17:14, 2. Sep. 2011 (CEST)
Merkwürdig. Checklist:
  • Du bist im Editmodus?
  • Die anderen Skripte auf der test.js-Seite funktionieren?
  • Unter Werkzeuge sollte jetzt der Link erscheinen. Wenn nicht: die Konsole zeigt nichts an?
  • Beim Daraufklicken sollte oben in den Artikeltext die IB eingefügt werden. Entweder werden die Koordinatenvorlagen ausgewertet, oder es erscheint ein Meldungsfenster.
  • Wenn nicht: Hat sich in der (Fehler)konsole nach dem Klicken was gerührt?
Ansonsten bin ich ratlos. Könnte evtl. jemand anderes das Skript im FF testen? Wenn nicht, kann ich dir ein Skript mit Logging basteln, damit wir sehen wo's hapert. --Bergi 16:25, 5. Sep. 2011 (CEST)
Bei mir (FF 3.6.16) funktioniert Leyos test.js, nachdem ich das Skript mit ein bisschen Rumgehacke dazu überredet habe, wegen der beiden Variablen, die wohl in anderen Skripten definiert werden, keine Fehler zu erzeugen. Aber selbst wenn ich test.js einfach so laufen lasse, bekomme ich zumindest klare Fehlermeldungen in der Konsole. --Schnark 09:25, 6. Sep. 2011 (CEST)
Im der Fehlerkonsole des aktuellen FF (6.0.2) wurde mir ein Fehler angezeigt, den ich so beheben konnte. Jetzt funktioniert's! Ich werde gelegentlich noch versuchen, ob ich einen automatischen Editkommentar hinkriege. --Leyo 10:35, 17. Sep. 2011 (CEST)
Das habe ich jetzt auch noch hingekriegt. Vielen Dank nochmals an alle! --Leyo 15:23, 18. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 15:23, 18. Sep. 2011 (CEST)

Vorlagen einbinden

Kann man einen Baustein basteln der immer angezeigt wird und ungefähr so steht wie der Wikimedia Button zur Entwicklung eines persönlichen Opt-in Bildfilters, wo ausgewählte Vorlagennamen stehen und wenn man diese anklickt das die Vorlagen gleich eingebunden werden? würd viel Arbeit sparen, denn es ist schwer sich lange Vorlagennamen zu merken Gruß --Rooooo18:36, 27. Aug. 2011 (CEST)

  • Ja, man kann.
  • Wo genau das Knöpfchen oder Link steht, würde sich finden. Es bieten sich verschiedene Werkzeugleisten an.
  • Die Problemstellung ist recht häufig. Ich vermute, dass sich schon verschiedene Benutzer eine Lösung gebaut haben.
  • Ein recht einfacher Weg wäre, in die durch MediaWiki:Onlyifediting.js verfügbare Liste charinsert eine eigene Serie einzuschieben und dann ggf. die veränderte Liste neu zuzuweisen.
VG --PerfektesChaos 12:13, 28. Aug. 2011 (CEST)
Das muss ich dann im monobook.js inbauen, richtig?--Rooooo 13:53, 3. Sep. 2011 (CEST)
Richtig; ganz nach Belieben in Deine monobook.js (oder seit 2011 auch in Deine common.js für alle Skins).
Was die Variante mit MediaWiki:Onlyifediting.js angeht, beabsichtige ich momentan eine einfach durch Benutzer zu konfigurierende Weiterentwicklung vorzuschlagen. Das braucht aber sicher noch die kommende Woche, bis ich das so programmiert habe, dass es mir gefällt. Dabei würden beliebige benutzerdefinierte Zeichenketten eingefügt werden können.
Es gibt noch alternative Möglichkeiten:
Schönes Wochenende --PerfektesChaos 14:11, 3. Sep. 2011 (CEST)
Danke, ich habe es jetzt eingebaut und es funktioniert.
Schönes Wochenende ;) --Rooooo 14:15, 3. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Rooooo 12:05, 18. Sep. 2011 (CEST)

Erledigt-Button für Diskseiten

Ich hatte das Skript mal und beim Aufräumen ist es abhanden gekommen. Also ich suche ein Skript, mit welchem ich auf der "Lese-Seite" von Diskseiten Beiträge automatisch editieren kann. -- Der Buckesfelder - Diskussion - Bewertung - Email 15:39, 16. Sep. 2011 (CEST)

Vielleicht Benutzer:Schnark/js/autoantraege? --Leyo 15:53, 16. Sep. 2011 (CEST)
Den hab ich drin, hab aber übersehen, dass es nur bei Diskseiten mit Autoarchiv-Erledigt funktioniert. Trotzdem Danke. -- Buckesfelder 17:24, 16. Sep. 2011 (CEST)
Das sollte genauer erklärt werden, davon steht nichts unter {{Erledigt}} im Bezug Parameter der Archivvorlage. -- πϵρήλιο 00:23, 17. Sep. 2011 (CEST)
Der Code stammt zu kleinen Teilen noch aus Benutzer:Euku/markErledigt.js, bei einem Skript, das 4 Jahre alt ist, kann man halt nicht erwarten, dass es alle Neuerungen der letzten Jahre schon kennt. Wenn ich mal dazu komme, gibt es die Links auch bei {{Autoarchiv}} mit entsprechendem Modus. --Schnark 09:38, 17. Sep. 2011 (CEST)
Kannst du nicht das Skript so umschreiben, dass es auf jeder Seite des Namenraums Diskussion und außerdem auf Seiten mit "AddNewSection" funktioniert? -- Buckesfelder 19:32, 17. Sep. 2011 (CEST)
(Ich denke hier kann ich auch für Schnark sprechen;) Ich würde das verneinen, es wäre überflüssig, auch da Schnark dann die Bedingung gleich richtig erweitern könnte.ein SmileysymbolVorlage:Smiley/Wartung/:p  -- πϵρήλιο 21:56, 18. Sep. 2011 (CEST)
Der Erledigt-Button ist ausschließlich auf solchen Seiten sinnvoll, bei denen auch ein Archivierungsbot auf den Erledigt-Baustein achtet --Schnark 09:48, 19. Sep. 2011 (CEST).
Genaugenommen müsste man dann jeden Abschnitt auf ein bereits vorhandenes Erl. scannen!? -- πϵρήλιο 17:23, 23. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Perhelion 17:23, 23. Sep. 2011 (CEST)

Halbautomatisches Skript für ToDo-Liste

Hallo. Erst nochmal Danke für die tolle Hilfe bisher. Ihr seid Spitze! Nun zu meinem Anliegen: Ich suche ein halbautomatisches Skript, ähnlich Schnarks Autoedit-Skript, bei dem ich bei einem Artikel auf "ToDo" drücken kann, und dann auf Benutzer:Der Buckesfelder/Werkstatt nach dem Anker der Artikel ergänzt wird, nach dem Schema * [[Artikelname]] <small>[[Benutzer:Der Buckesfelder/Werkstatt/Artikelname|Bearbeitungslink]]</small>, wobei der small-tag nur geschrieben werden soll, wenn der Artikel nicht vorhanden ist. Ist soetwas (einfach) möglich? Vielen Dank für eure Hilfe. Grüße --Buckesfelder - Diskussion - Bewertung - Email 09:30, 2. Okt. 2011 (CEST)

ja, was meinst du mit Anker? Sectionedit ist per API möglich, auch Anfügen einfach. Hast du bereits ein Autoeditskript eingebunden (auf dessen Bibliotheken man vermutlich aufsetzen kann)? -- Bergi 12:24, 2. Okt. 2011 (CEST)
Ich habe nur Schnarks Autoedit-Skript in meine common.js eingebunden. Grüße --Buckesfelder - Diskussion - Bewertung - Email 19:20, 2. Okt. 2011 (CEST)
Wie muss das Skript aussehen? --Buckesfelder - Diskussion - Bewertung - Email 12:10, 3. Okt. 2011 (CEST)

Was ist jetzt? --Buckesfelder - Diskussion - Bewertung - Email 19:31, 4. Okt. 2011 (CEST)

Versuchs mal mit folgendem:
// Script von Bergi ([[Benutzer:✓]])
$(function(){
   // Konfiguration
   var todoseite = "Benutzer:" + mw.config.get('wgUserName') + "/Werkstatt",
       werkstatt = "Benutzer:" + mw.config.get('wgUserName') + "/Werkstatt/",
       vor = /\s*{{Anker\|Neu}}/,
       liste = "*";

   var li = $(mw.util.addPortletLink("p-cactions", "#", "auf Todoliste", "js-addTodo", "An die Todoliste unten anfügen"));
   li.find("a").click(function() {
      var page = mw.config.get('wgPageName');
      autoedit.edit({title:todoseite, summary:"+ "+page, minor:true, action:"API", change:function(text){
         return text.replace(vor, function(match) {
            var r = "\n"+liste+" [["+page+"]]";
            if (mw.config.get('wgArticleId')==0) // Seite existiert (noch) nicht
               r += " <small>[["+werkstatt+page+"|Bearbeitungslink]]</small>";
            return r + match;
         });
      }, callback:function(status) {
         if (status != "success")
            return alert("Problem beim Bearbeiten");
         li.find("a").text("…erfolgreich");
         window.setTimeout(function(){
            li.fadeOut();
         }, 3000);
      } });
   });
});
Viel Spass und Glück beim Testen (ich hab noch nicht)
wünscht -- Bergi 21:57, 4. Okt. 2011 (CEST)
Die Warnung, dass die Dokumentation veraltet ist, ist ernst gemeint. action:"API" müsste jetzt method:"API" heißen und in ein paar Tagen sollte man statt autoedit.edit dann mw.libs.autoedit.edit schreiben. --Schnark 09:09, 5. Okt. 2011 (CEST)

Funktioniert mit der Änderung von Schnark. --Buckesfelder - Diskussion - Bewertung - Email 18:08, 5. Okt. 2011 (CEST)

Funktioniert leider doch nicht so ganz. Bei den Umlauten (ä, ö, ü) macht das Skript irgendwelche komischen Zeichen. Siehe hierfür letzten Eintrag auf Benutzer:Der Buckesfelder/Werkstatt. Dort sollte eigentlich der existente Artikel Sauerländer Kleinbahn verlinkt sein? --Buckesfelder - Diskussion - Bewertung - Email 19:00, 5. Okt. 2011 (CEST)

keine Ahnung, ich weiß nur dass es nicht "irgendwelche" Zeichen sind, sondern dass irgendwas mit den Text-Codierungen nicht stimmt. Da sollte sich aber Schnark drum kümmern können, sein Skript sollte derartiges eigentlich verkraften. Mir persönlich fehlt da eine encodeURIComponent an der passenden Stelle, aber ich vermute dass sich da die verwendete Jquery-Funktion drum kümmern sollte. Wo hast du den Code eigentlich stehen? Die Zusammenfassungszeile sieht auch anders aus als sie laut meinem Schnipsel lauten müsste. -- Bergi 20:35, 5. Okt. 2011 (CEST)

Das Skript steht in meiner common.js. Ich habe die Zsfz. verändert, weil es für mich Gewohnheit ist, wenn ich etwas hinzufüge in der Zeile erst die Aktion und dann das +/- zu schreiben. Noch eine andere Sache: Ist es möglich, dass statt einem Unterstrich (_) ein Leerzeichen ( ) geschrieben wird? Beim Lemmata mit mehr als einem Wort werden die Wörter auf der Werkstattseite mit _ getrennt. --Buckesfelder - Diskussion - Bewertung - Email 15:52, 6. Okt. 2011 (CEST)

Hat irgendwer einen Lösungsansatz? --Buckesfelder - Diskussion - Bewertung - Email 17:58, 8. Okt. 2011 (CEST)
Hallo Buckesfelder, ersetze in deinem Skript +page+ durch +page.replace(/_/g, ' ')+. --Wiegels „…“ 18:36, 8. Okt. 2011 (CEST)
Mit dem Leerzeichen funktioniert es jetzt. Fehlen nur noch die Umlaute. --Buckesfelder - Diskussion - Bewertung - Email 19:25, 8. Okt. 2011 (CEST)

Also, per Ganz-Fern-Diagnose, ohne in die inneren Abläufe einzusteigen (da könnte Schnark mehr zu sagen) würde vermutlich die Veränderung von zwei Zeilen helfen:

var page = mw.util.wikiUrlencode( mw.config.get('wgPageName') );
var r = "\n"+liste+" [["+decodeURIComponent(page).replace(/ /g," ")+"]]";

die jeweils die vorhandenen var-Zeilen ersetzen.

Schönen Sonntag --PerfektesChaos 20:12, 8. Okt. 2011 (CEST)

Ja, natürlich könnte man da manuell rum(en|de)codieren. Aber warum sollte das nötig sein? wgPageName ist doch ganz normal unenkodiert in UTF8 (abgesehen von den Unterstrichen), und die API sollte das so verarbeiten können. Ansonsten verstehe ich nicht wirklich, was deine Lösung bewirken soll, decodeURIComponent(encodeURIComponent(x)) hilft doch bei Umlauten nicht weiter? wikiURLencode behandelt nur _:/!'()*~ besonders. -- Bergi 22:42, 9. Okt. 2011 (CEST)
Er hat de facto UTF-8-Zeichen in der generierten Seite.
Du hast recht; ich hatte übersehen, dass das page von außerhalb der anonymen Funktion stammt, und mich faul an Wiegels’ Erfolg drangehängt.
Daraus würde folgen, dass change:function(text) den Input in UTF-8 bekommt, wie das etwa bei index.php und raw der Fall ist, aber beim Speichern UCS verwendet, wie das zwangsläufig beim api.php erfolgt.
Besser wäre es, wenn Schnark sich selbst darum kümmert; schönen Abend einstweilen --PerfektesChaos 23:13, 9. Okt. 2011 (CEST)
Nachtrag: encodeURIComponent kodiert alles Nicht-ASCII zu %..., und wikiURLencode ruft encodeURIComponent auf und macht noch Extras. LG --PerfektesChaos 23:21, 9. Okt. 2011 (CEST)
Ich würde in diesem Fall ganz auf mein Skript verzichten, und das Ganze direkt machen, siehe [1]: token bekommt man als mw.user.tokens.get('editToken'), die Zeitstempel sind auf eigenen Seiten, wo es zu keinem Bearbeitungskonflikt kommen sollte, unnötig, dazu noch ein appendtext und das Ganze mit $.post abschicken. --Schnark 09:46, 10. Okt. 2011 (CEST)

Mit einem anderen Browser funktioniert es. Daher ist die Sache für mich erledigt. --Der Buckesfelder - Diskussion - Bewertung - Email 14:27, 11. Okt. 2011 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: Der Buckesfelder - Diskussion - Bewertung - Email 14:27, 11. Okt. 2011 (CEST)

Leseseitenskript

Fehlersuche :D Wo ist da der Fehler?

// Grundscript von Bergi ([[Benutzer:✓]])
$(function(){
   // Konfiguration
   var leseseite = "Benutzer:" + "Der Buckesfelder" + "/Leseseite",
       leseseite = "Benutzer:" + "Der Buckesfelder" + "/Leseseite/",
       vor = /\s*{{Anker\|Neu}}/,
       liste = "*";

   var li = $(mw.util.addPortletLink("p-cactions", "#", "Leseseite+", "js-addLeseseite", "An die Leseseite unten anfügen"));
   li.find("a").click(function() {
      var page = mw.config.get('wgPageName');
      autoedit.edit({title:Leseseite, summary:page+"+", minor:true, method:"API", change:function(text){
         return text.replace(vor, function(match) {
            var r = "\n"+liste+" [["+page+"]]";
            return r + match;
         });
      }, callback:function(status) {
         if (status != "success")
            return alert("Problem beim Bearbeiten");
         li.find("a").text("…erfolgreich");
         window.setTimeout(function(){
            li.fadeOut();
         }, 3000);
      } });
   });
});

--Buckesfelder - Diskussion - Bewertung - Email 18:26, 5. Okt. 2011 (CEST)

Quizfrage: Was ist der Fehler (Fehlermeldungen, Verhalten (Ist/Soll), ...)? --Steef 389 18:48, 5. Okt. 2011 (CEST)

Ich möchte gerne auf einer Seite auf einen Button drücken, der dann auf der dieser den Artikel hinzufügt. Ähnlich dem Skript zuvor. Nur wird der Artikel irgendwie nicht hinzugefügt. Liegt das vielleicht an return r + match;? --Buckesfelder - Diskussion - Bewertung - Email 18:58, 5. Okt. 2011 (CEST)

Ändere einmal das title:Leseseite in title:leseseite (Javascript ist case sensitive) und entferne die Zeile leseseite = "Benutzer:" + "Der Buckesfelder" + "/Leseseite/". Falls es dann immer noch nicht funktioniet, gib bitte etwaige Fehlermeldungen in der Entwicklerkonsole deines Browsers an, siehe hier. Gruß --Steef 389 20:14, 5. Okt. 2011 (CEST)

Also dafür ist das Skript dann eigentlich nicht gedacht. Eine automatische Todo-Listen-Hilfe, OK, das hat noch Nutzen für die WP. Aber für persönliche Lesezeichen Edits zu "verschwenden" geht dann doch zu weit, der Aufwand für Versionsspeicherung etc. rechtfertigt das kaum. Ich sehe drei Möglichkeiten:

  • nutze die Lesezeichenfunktion deines Browsers. Wenn es dir um Verfügbarkeit an verschiedenen Maschinen geht, gibts genug Synchronisationsdienste für jeden Brauser
  • Speicherung der Liste in DomStorage/Cookies per Skript, Einblenden auf Knopfdruck oder in ausgewählte Seiten. Funktioniert halt nur auf einer Maschine
  • Missbrauch der Buchfunktion: Damit lassen sich Seitenlisten komfortabel zusammenstellen und ordnen, und die Speicherstruktur auf den Servern wird der Aufgabe dabei gerecht.

meint -- Bergi 20:43, 5. Okt. 2011 (CEST)

Ich probiere es mal mit der Buchfunktion aus. --Buckesfelder - Diskussion - Bewertung - Email 15:56, 6. Okt. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Der Buckesfelder - Diskussion - Bewertung - Email 14:27, 11. Okt. 2011 (CEST)

Fehlerhafte Weiterleitungen durch Interwikilinks

Hallo. Ich würde gerne wissen, ob es möglich ist, dass ein Skript Spezial:Kaputte Weiterleitungen abarbeitet und Interwikiweiterleitungen nach dem Schema [[Beispiel]] durch {{interwiki redirect|de:Beispiel}} ersetzt. Liebe Grüße --Der Buckesfelder - Diskussion - Bewertung - Email 19:45, 11. Okt. 2011 (CEST)

Du kannst auf Wikipedia:BA eine Anfrage an die Botbetreiber richten, aber ob das auf Benutzerseiten wirklich jemand durchführt weiß ich ja nicht. --StG1990 Disk. 22:20, 11. Okt. 2011 (CEST)
Und als (halb-)automatisches Skript in meiner common.js? --Buckesfelder - Diskussion - Bewertung - Email 23:55, 11. Okt. 2011 (CEST)
Das ist eine typische Botarbeit, die man sich an sich nicht freiwillig antut, außer man will sinnlos seinen Editcounter hochtreiben. Beatrage einfach einen entsprechenden Botlauf und lehne dich entspannt zurück. --StG1990 Disk. 23:59, 11. Okt. 2011 (CEST)

Okay. Dann mache ich das mal. --Buckesfelder - Diskussion - Bewertung - Email 00:15, 12. Okt. 2011 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: Buckesfelder - Diskussion - Bewertung - Email 00:39, 12. Okt. 2011 (CEST)

Lokale Dateien markieren

Seit dem MediaWiki-Update funktioniert das Markieren lokaler Dateien nicht mehr:

mw.util.addCSS('#bodyContent img[src^="http://upload.wikimedia.org/wikipedia/de/"] { border: 2px dotted #FFA055; }');

In Dateikategorien und bei Spezialseiten würde ich zudem gerne auf die Markierung verzichten. --Leyo 19:05, 13. Okt. 2011 (CEST)

Könnte an der relativen URL liegen. Mach mal das http: weg. Der Umherirrende 19:22, 13. Okt. 2011 (CEST)
Danke, das hat geholfen. Nur die Einschränkung fehlt jetzt noch.
In diesem Fall hat selbiges leider nicht geholfen. --Leyo 19:51, 13. Okt. 2011 (CEST)
Zum selektiven Einsatz
Weitere Infos auf Anfrage, falls erforderlich. LG --PerfektesChaos 20:07, 13. Okt. 2011 (CEST)
Ist auch hier beschrieben. -- πϵρήλιο 20:15, 13. Okt. 2011 (CEST)
Diese Änderung muss auf meiner Watchlist durchgerutscht sein.
Ich benutze eine JS-Seite, damit ich diese mittels Schnarks Modulverwaltung aktivieren und deaktivieren kann. --Leyo 20:35, 13. Okt. 2011 (CEST)
  • Falls der letzte Absatz eine Anfrage war, entging mir dies bislang.
  • Außer in Dateikategorien kommen im Kategorie-Namensraum praktisch keine Bildchen vor. Mit dieser Unterstellung lässt es sich zu deiner geistigen Entlastung relativ schlicht und erweiterbar formulieren:
switch ( mw.config.get( "wgNamespaceNumber" ) ) {
   case -1 :
   case 14 :
      break;
   default :
      mw.util.addCSS('#bodyContent img[src*="upload.wikimedia. ... #FFA055; }');
}   // switch wgNamespaceNumber
  • Die bisher verwendete CSS-Bedingung src^= verpflichtet zwingend den Beginn (^ ) der URL. Wie gesehen, ist man dabei wechselnden Unwägbarkeiten der Serverkonfiguration ausgesetzt. Ich würde nur src*= fordern und einen charakteristischen String (src*="/wikipedia/de/" würde bereits genügen), der irgendwo in der URL enthalten sein muss. Welcher Server mit welchem Protokoll in welcher Subdomain gerade konfiguriert ist, kann dir egal sein, und bei Veränderungen muss man es nicht anpassen.

Baldiges Wochenende --PerfektesChaos 09:50, 14. Okt. 2011 (CEST)

Vielen Dank! Funktioniert perfekt. --Leyo 12:09, 14. Okt. 2011 (CEST) PS. Zur etwas versteckten Frage habe ich unten einen neuen Abschnitt angelegt.
Doch noch nicht ganz erledigt. Nun werden nämlich bei mir auch TeX-Grafiken markiert. --Leyo 18:04, 14. Okt. 2011 (CEST)
  • Ich weiß nicht, wie die URL von TeX-Grafiken alles aussehen könnte; das Schlüsselwort heißt charakteristischer String. Die Texe scheinen /wikipedia/de/math/ zu enthalten. Weil sie auf upload.wikimedia.org/wikipedia/de/math stehen, wären sie von dem zu Beginn dieses Thread angegebenen Selektor aber auch immer schon gefunden worden.
  • Die URL der lokalen Bilder lautet etwa /wikipedia/de/thumb/a/a9/ – kann aber auch /wikipedia/de/a/a9/ sein. Deshalb Trick: Zweite CSS-Anweisung hinterher schieben; die erste wie gehabt für alle /wikipedia/de/ und danach eine mit /wikipedia/de/math/ und der Zuweisung border-style:none – sie überschreibt die erste.

Viel Spaß --PerfektesChaos 18:34, 14. Okt. 2011 (CEST)

Danke, das hat geklappt. --Leyo 03:54, 15. Okt. 2011 (CEST)
  • Wenn du gelegentlich mal wieder deine monobook-mark.js bearbeitest, würde ich empfehlen, die beiden CSS-Zuweisungen in einer einzigen mw.util.addCSS zusammenzufassen. Grund: Es erfolgen zweimal Veränderungen des DOM; dafür schmeißt der Brauser zweimal eine Reorganisation an.
    • Die Zeilenumbrüche und Leerzeichen in den CSS-Definitionen sind nur für uns doofe Menschen da. Für CSS reicht aus: …#FFA055}#bodyContent
    • Damit auch ich das noch lesen kann, würde ich persönlich schreiben
mw.util.addCSS('#bodyContent img[src*="/wikipedia/de/"] {'
             +    'border: dotted 2px #FFA055; }'
             + '#bodyContent img[src*="/wikipedia/de/math/"] {'
             +    'border-style: none; }');
  • Da du über die Modulverwaltung schaltest, brauchst du JS. In reinem CSS hieße die gesamte Aktion übrigens:
#bodyContent img[src*="/wikipedia/de/"] {
   border: dotted 2px #FFA055;
}
.ns--1,
.ns-14,
#bodyContent img[src*="/wikipedia/de/math/"] {
   border-style: none;
}
Sonniges Wochenende --PerfektesChaos 12:30, 15. Okt. 2011 (CEST)
Ich dachte mir schon, dass meine Umsetzung wohl nicht ganz optimal ist, auch wenn sie funktionierte. ;-) Ich habe nun deine Lösung implementiert. Danke! --Leyo 12:49, 15. Okt. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 12:49, 15. Okt. 2011 (CEST)

Extra-Editbuttons: Benutzerdefinierte Buttons funktionieren nicht mehr

Seit dem Mediawiki-Update sind meine benutzerdefinierten Buttons verschwunden. Das Entfernen von http: hat leider nicht geholfen. --Leyo 12:09, 14. Okt. 2011 (CEST)

Da würde ich Benutzer:✓ fragen, der das Gadget umgeschrieben hat, und vermutlich der einzige ist, der es komplett versteht. --Schnark 12:51, 14. Okt. 2011 (CEST)
Der liest hier bestimmt mir. --Leyo 13:31, 14. Okt. 2011 (CEST)
@Schnark: Ich will dir ja jetzt nicht den schwarzen Peter zuschieben, aber meines Erachtens liegt der Fehler in der Benutzung deiner Modulverwaltung :-)
@Leyo: Bei mir funktioniert importScript('Benutzer:Leyo/monobook-normal.js') bei aktiviertem Gadget tadellos. Wenn ich jedoch versuche, die Seite mit diesem Code zu laden, passiert gar nichts: keines der Skripte von -normal.js oder -text.js wird (laut Dragonfly) geladen. Ob meine Vermutung, dass du lieber load als register benutzen solltest, richtig ist, kann wohl nur Schnark beurteilen. Allerdings hieße das ja, dass deine Skripte unter Monobook schon eine geraume Zeit nicht mehr funktionieren? -- Bergi 20:41, 15. Okt. 2011 (CEST)
Bis auf inzwischen mehrheitlich gelöste Probleme mit dem Mediawiki-Update funktionieren die Scripte bei Monobook. Es muss wohl an etwas anderem liegen. --Leyo 00:33, 17. Okt. 2011 (CEST)
@Bergi: Du hast insofern recht, als dass meine Modulverwaltung dafür sorgt, dass die Definition vermutlich zu spät kommt, was aber kein Problem speziell meines Skripts ist. register ist schon richtig, wenn man register verwenden will, man muss halt noch auf Spezial:Leerseite?action=schnark-config dann die Skripte aktivieren.
@Leyo: Versuche es mal damit, die Definition von myButtons in deine common.js zu verschieben. --Schnark 09:29, 17. Okt. 2011 (CEST)
Das hätte keine negativen Auswirkungen bei einem Wechsel auf Vector? Alternativ könnte ich den Code ja auch direkt in die monobook.js (wegen der Ladereihenfolge ev. ganz oben) verschieben. --Leyo 10:16, 17. Okt. 2011 (CEST)
Die einfache Definition einer Variablen macht eigentlich niemals Probleme. So wie du es verwendest, ist es letztendlich egal, ob das in common.js oder in monobook.js steht, ebenso wie es auch egal ist, ob es oben oder unten oder in der Mitte steht. --Schnark 10:22, 17. Okt. 2011 (CEST)
Das Verschieben in die monobook.js hat Erfolg gebracht. Ich danke euch beiden! --Leyo 11:03, 17. Okt. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 11:03, 17. Okt. 2011 (CEST)

Skript zur Kategorisierung

Hallo, Kann ich mit einem Skript einen Artikel (Text und Lemma) nach bestimmten Wörtern durchsuchen und anhand dieser dann unter den Text Kategorien setzen? Bsp.:

  • Wenn im Text SPUNK steht, dann [[Kategorie:SPUNK]] setzen.
  • Wenn im Text SPUNK 400 steht, dann [[Kategorie:SPUNK 400]] setzen.
  • Wenn im Text BuKO steht, dann [[Kategorie:BuKo]] setzen.
  • usw.

--Der Buckesfelder  Disk.  bewerten  Email 15:55, 8. Nov. 2011 (CET)

Ja. -- Bergi 19:45, 8. Nov. 2011 (CET)

Okay. Danke. --Der Buckesfelder  Disk.  bewerten  Email 20:29, 8. Nov. 2011 (CET)

Archivierung dieses Abschnittes wurde gewünscht von: Der Buckesfelder  Disk.  bewerten  Email 20:29, 8. Nov. 2011 (CET)

Script funktioniert nur im Editmodus

Kann mir jemand sagen, weshalb das Script fürs Taggen von SVG-Grafiken mit Bugs nur funktioniert, wenn ich es im Editmodus aufrufe, nicht aber im Lesemodus? Eine if-else-Weiche habe ich eingebaut. Die entscheidende Codezeile (else) ist wohl folgende:

window.open(wgServer + wgScript + "?title=" + encodeURIComponent(wgPageName) + "&action=edit&functionName=addBaustein", "_self");

Eine Quick-and-Dirty-Lösung reicht mir vollkommen. --Leyo 19:36, 4. Aug. 2011 (CEST)

(nach BK)
  • Da gäbe es mehrere Gründe; einer wäre, dass deine Sicherheitseinstellungen dir kein window.open() erlauben. Weiterhin ist mir functionName in den de-WP-Hilfe:URL-Parameter nicht bekannt; auf Commons gibt es aber wohl sowas.
  • Ich würde ohnehin grundsätzlich anders vorgehen, mal ohne Austesten getippt:
Oben, wo du dein addPortletLink baust, würde ich bereits die wgAction testen:
// Bilder mit SVG-Bug taggen
if (wgNamespaceNumber === 6) $(function () {
   var machwas = false;
   if (wgAction === "edit") {   // (wgAction === "edit" || wgAction === "submit") // würde ich vorschlagen
      machwas  =  "javascript:addBaustein();void(0);"
   } else {   // } else if (wgAction === "view") // ... könnte beabsichtigt sein?
      machwas  =  wgScript + "?title=" + mw.util.wikiUrlencode(wgPageName) + "&action=edit&functionName=addBaustein";
   }
   if (machwas) {
      addPortletLink("p-cactions", machwas, "SVG bug", "ca-svgbug", "SVG-Bug eintragen");
   }
});

function addBaustein() {
   var newtext = "{{Low quality chem|SVG bug}}\n\n";
   var wpText = document.getElementById('wpTextbox1');
   var wpSummary = document.getElementById('wpSummary');
   wpText.value = newtext + wpText.value;
   wpSummary.value = "SVG bug";
}

if (mw.util.getParamValue("functionName") === "addBaustein") {
   addBaustein();
}
Warum window.open(url, "_self") statt document.location.href = url?
@Rillke: Dass es nicht funktioniert hast du ja selbst bemerkt. Möglich wäre window[mw.util.getParamValue('functionName')]();, aber das löst in jedem Fall eine riesengroße Sicherheitslücke aus! --Bergi 21:08, 4. Aug. 2011 (CEST)
functionName hatte ich schon oft gesehen und dachte fälschlicherweise, das sei so in MediaWiki implementiert. Wenn ich beispielsweise dieses Script anschaue, wird auch mir klar, dass da noch was fehlte.
Danke für den Vorschlag! Ich habe ihn mit leicht abgeänderten Funktionsnamen direkt unterhalb ergänzt. Nun erhalte ich den Hinweis „missing ) after argument list“. Ich entdecke aber keine fehlende Klammer. --Leyo 21:30, 4. Aug. 2011 (CEST)
Hallo Leyo, der Fehler wird durch eine eine fehlende öffnende geschweifte Klammer am Ende von Zeile 88 ausgelöst. --Wiegels „…“ 22:39, 4. Aug. 2011 (CEST)
(nach BK; zum zweiten Mal heute in diesem Abschnitt)
  1. Die Klammer { fehlt hinter (wgAction === "view") { – ich hatte dir leider nur den Anfang des }else{-Konstrukts vorgeschlagen … damit du den Button nicht in der Versionsgeschichte oder beim Versionsvergleich bekommst.
  2. Weil ich weiß, dass du FF hast: Strg+Umschalt+J hattest du gedrückt, und dann bekamst du genau diese Fehlermeldung in der Fehlerkonsole? Falls nicht, dann drück das mal vorher und bearbeite dann deine Seite und mach vor der Korrektur „Vorschau“; dann sagt er dir auch „vor if (machwas) {“ – und von da aus rückwärts gucken. Anders habe ich das auch nicht gesucht und gefunden.
VG --PerfektesChaos 22:55, 4. Aug. 2011 (CEST)
Danke euch beiden. Ich hatte die obige Fehlermeldung in der Fehlerkonsole gesehen und daher nach einer fehlenden runden Klammer gesucht. Jetzt gibt's keinen Fehler mehr, aber es klappt auch noch nicht wie gewünscht. Im Lesenmodus hat das Tab die gleiche Funktion wie „Bearbeiten“. Wenn ich also zweimal draufklicke (lesen → bearbeiten; Text einfügen), dann passt's. :-) --Leyo 23:14, 4. Aug. 2011 (CEST)

Ja, mein Herzchen. Oben schreibst du noch "&action=edit&functionName=addBaustein" und unten fragst du ("functionName") === "addBausteinX" – ich persönlich würde die ja einheitlich addBausteinSVG nennen, falls du irgendwann mit mehr Leyo-Bausteinen spielst. Gut’s Nächtle --PerfektesChaos 00:03, 5. Aug. 2011 (CEST)

Opps, peinlich! Genau daran lag's… Vielen Dank nochmals! --Leyo 00:17, 5. Aug. 2011 (CEST)

„window[mw.util.getParamValue('functionName')](); löst eine Sicherheitslücke aus“

Erledigt noch einmal raus, ich finde es schon viel zu gefährlich, dass nur diese eine Funktion aufgerufen werden kann. Die Vorlage ist nicht geschützt, wenn man das zeitlich ein bisschen geschickt koordiniert, kann erst die Vorlage vandalieren und sie dann auf die Hauptseite setzen lassen. (Zur Erinnerung: Die Hamster mögen es gar nicht gerne, auf der Hauptseite die letzten 500 Änderungen anzuzeigen, aber das wäre damit möglich.) Zumindest sollte mit
if (mw.config.get('wgNamespaceNumber') == 6 && mw.util.getParamValue("functionName") === "addBausteinSVGBUG") {
das Ganze nochmal explizit auf Dateien beschränkt werden. --Schnark 10:43, 5. Aug. 2011 (CEST)
Auf Anregung von Rillke habe ich's jetzt mit Ajax umgesetzt. Damit sind die Sicherheitsbedenken zumindest kleiner, oder? --Leyo 11:43, 5. Aug. 2011 (CEST)
Da ich erst jetzt sehe, dass ohnehin nicht automatisch abgespeichert wird, war es auch vorher schon kein Problem. Aber für den Fall, dass du mal auf die Idee kommst, noch ein automatisches Abspeichern einzubauen, solltest du unbedingt, das ganze noch absichern. --Schnark 11:52, 5. Aug. 2011 (CEST)
Das Problem ist eben, dass nicht nur eine Funktion damit aufgerufen werden kann, sondern alle (wenn auch ohne Parameter). Und wer hat schon einen Überblick über alle im window-scope herumschwirrenden Funktionen? Es ließe sich sicher ein Hotcat-Speichern oder änliches auslösen. --Bergi 12:32, 5. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 00:50, 27. Dez. 2011 (CET)

Watcher

  1. Wikipedia:Fragen zur Wikipedia/Archiv/2011/Woche 32#Klickzähler
  2. Benutzer Diskussion:Ianusius#Watcher

Könnte man

  1. ein Tool realisieren, dass beim Hoven / Klicken die aktuellen Beobachten + Aufrufzahlen anzeigt
  2. eine Tabelle dazu für die eigenen Artikel

? --ianusius ✆ Disk. ✪ (Art.) 17:02, 15. Aug. 2011 (CEST)

Ich habe die verlinkten Seiten gelesen und kann erstmal umreißen, was geht und was nicht.
  1. Auf der Seite, auf der du gerade bist, könnten Werkzeug-Links erscheinen, die auf Auswertungs-Tools für diese Seite führen; entspricht der Toolserver-Integration.
  2. Von einer Seite wikipedia.org aus kannst du allgemein keine Daten erhalten, die von toolserver.org oder stats.grok.se stammmen; nur wie vorgenannt dorthinklicken. Browser unterbinden es aus Sicherheitsgründen; beim FF lässt das sich mit Know-How ausdrücklich für bestimmte Verbindungen zulassen.
  3. Mit einem Hover für eine oder einige Sekunden bekommst du nur Daten aus mw:API:Properties – was du begehrst, ist da nicht dabei. Mit viel Aufwand lässt sich eine Art Pop-Up schreiben, das ein Link auf das Tool enthält und neben dem zu analysierenden Link schwebt.
  4. Skripte der Art, wie du sie dir wünscht, müssten eher auf dem Toolserver residieren.
  5. Eine monatliche Statistik wäre weniger mit JavaScript innerhalb deines deWP-Accounts zu schreiben, sondern mit Java oder einer anderen Sprache auf einem Webserver, auf dem du bestimmte Befugnisse hättest.
Hoffe geholfen zu haben, auch wenn es nicht weit hilft --PerfektesChaos 18:40, 15. Aug. 2011 (CEST)
  1. Gibt es ja schon, hab ich auch drin.
  2. schade.
  3. zum Vorschlag im letzten Satz: den Aufwand brauch man sich nicht zu machen, es gibt ja die Werkzeuge bei 1. .
  4. ist es wirklich nicht möglich, sich die Daten von sonstwo (z.B. Toolserver) zu holen und die dann in ein Pop-Up bzw. Hover-Fenster verlinken, sozusagen als redirect.
  5. der Serverspeicherplatz ist ja nicht das Problem, Toolserver würde ja reichen (wie z.B: soxred93-Tools). Kann irgendjemand dazu ein Programm schreiben?
auf jeden Fall war die Antwort schon sehr hilfreich. Grüße -- ianusius ✆ Disk. ✪ (Art.) 15:05, 16. Aug. 2011 (CEST)
Klingt, ehrlich gesagt, nach Editcountitis im Endstadium. --Bergi 15:57, 19. Aug. 2011 (CEST)

Antragsteller ist indefinit gesperrt. --Leyo 00:52, 27. Dez. 2011 (CET)

Archivierung dieses Abschnittes wurde gewünscht von: Leyo 00:52, 27. Dez. 2011 (CET)

Zwangsfixierung

Angeregt durch #Rand fixieren kam ich auf die Idee zusätzlich die Kopfleiste mit den Registerlaschen fixieren zu wollen. Ich bin auch soweit fast erfolgreich gewesen, und zwar damit:

#mw-page-base {position:fixed !important;}
#mw-head {
    position:fixed !important;
    background-color: white;
    background-image:  url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADpJREFUeF5VjUkOAEAIwoD//7lzGJd4MJHGSoBImkFETP67CdLldUd7KC6f8fv3+psd8znbtU5x354HaWQjOx76v7MAAAAASUVORK5CYII=");
    background-position: left bottom;
    background-repeat: repeat-x;}
#mw-head-base {padding-top:5em;}
#content {padding-top:6em;}

Leider scheitere ich nun daran, den Hintergrund von mw-head-base, sprich den blauen Strich über content zu fixieren, seit meiner Änderung ist er ganz verschwunden. Hat zufällig einer von Euch eine Idee? Vielen Dank! →‎↔13:55, 2. Aug. 2011 (CEST)

Hi. Also zunächst wundere ich mich über deine Änderungen bei #mw-page-base, #mw-head-base und #content. Ohne die drei Änderungen (die #content-Änderung schlägt wohl sowieso ohne !important nicht an) habe ich bei mir das gleiche Verhalten wie mit den drei Änderungen.
Wie du richtig feststellst ist der Strich weg, da du ja jetzt das Hintergrundbild in mw-head hast, was über mw-head-base liegt, das normalerweise den Strich anzeigt. Im Prinzip kommst du nicht um eine Umsortierung der vier entscheidenden Blöcke (die du schon in deinem CSS hast) drumrum. Die alte Reihenfolge ist "mw-page-base" hinter "mw-head-base" hinter "content" hinter "mw-head". "content" muss nun ganz nach hinten, du musst also "mw-page-base" und "mw-head-base" vorholen. Dazu bietet sich die CSS-Eigenschaft z-index an. Ich setze also den z-index für "mw-page-base" und "mw-head-base" auf 1000, den von "mw-head" auf 1001. Damit ist zunächst die richtige Reihenfolge hergestellt. Außerdem muss dann noch "mw-panel" vorgeholt werden, da sonst der Wikipedia-Ball und das ganze linke Panel zu weit hinten sind (z-index auch 1001).
Damit das ganze nicht mitscrollt müssen "mw-page-base", "mw-head-base" und "mw-head" auf "position:fixed" gesetzt werden. mw-page-base und mw-head-base sind in diesem Fall aber 0px breit, die "width"-Eigenschaft muss also jeweils noch auf 100% gesetzt werden. Da mw-page-base ja nun fixed ist, liegt mw-head-base 5em zu weit oben, da die margin-top-Eigenschaft normalerweise auf -5em gesetzt ist (um direkt über mw-page-base zu liegen). Die Eigenschaft müssen wir also überschreiben durch 0. Gleiches gilt für #content: das liegt nun ganz oben und muss mit nem margin runtergesetzt werden (margin-top: 5em). Insgesamt sieht das ganze so aus:
#mw-page-base {position:fixed !important; width:100%; z-index:1000;}
#mw-head-base {position:fixed !important; width:100%; z-index:1000; margin-top:0 !important;}
#mw-head {position:fixed !important; z-index:1001;}
#content { margin-top:5em; }
#mw-panel { z-index:1001; }
Ich hoffe, das hat geholfen und funktioniert bei dir (nur mit Opera getestet). --APPER\☺☹ 00:26, 3. Aug. 2011 (CEST)
Die drei unnötigen Änderungen sind wohl Überbleibsel aus meiner Rumprobiererei/-stocherei, und da ich immer nur einzeln versucht habe, sie wieder zu entfernen, was dann zu komischen Effekten führt, hab ich sie für notwendig gehalten. Komplett rausgeschmissen sieht es aber genauso aus wie vorher, also analog zu dem von Dir beobachteten Verhalten.
Auf die Idee mit dem z-index hätte ich auch selber kommen können. Zwei kleine Änderungen hat’s noch gebraucht, um auch im Firefox wie gewünscht auszusehen:
#mw-page-base { position:fixed !important; width:100%; z-index:1000; margin-top:-5em !important; } /* "margin-top:-5em !important;" rein verschiebt den Hintergrund nach oben */
#mw-head-base { position:fixed !important; width:100%; z-index:1000; } /* "margin-top:0 !important;" raus verschiebt die blaue Linie nach oben */
#mw-head      { z-index:1001; }
#content      { margin-top:5em; }
#mw-panel     { z-index:1001; }
Dazu noch die beiden position:fixed !important; in mw-head und mw-panel, die sowieso schon drinstanden und schon lüppt alles. Vielen Dank. :) →‎↔09:31, 3. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Monobook funktioniert nicht unter Firefox 5.0.1

Warum tut meine Monobook-/Vector-Skin unter Firefox 5.0.1 nimmer, im Firefox 3 aber ohne Probleme? Mir scheint, als würde das Event nie ausgelöst. --Flominator 15:33, 2. Aug. 2011 (CEST)

Kann mich schwach an FF5-Probleme damit erinnern, finde es aber nicht mehr. Irgendwelche Fehlermeldungen, was funktioniert sonst nicht? --Bergi 16:48, 2. Aug. 2011 (CEST)
Der FF lädt seit neuestem Scripe "asyncron" nach. Will heißen: Wenn 2 Scripte bei dir aufeinander aufbauen, und das 2. ist vor dem 1. fertig mit Laden, dann klappt die Sache nicht. Und wenn alles nach den Load-Befehlen auch nur eine der geladenen Dateien braucht, dann ist das völlig unbrauchbar. Ja, ich ärgere mich partiell mit dem gleichen Problem rum... --Guandalug 16:51, 2. Aug. 2011 (CEST)
Danke für die Antwort. Das ist ja echt nervig! War das beim 4er auch schon der Fall? --Flominator 07:34, 3. Aug. 2011 (CEST)
  1. Den FF4 gab es wohl nur vier Wochen (daher der Name). Aus guten Gründen werde ich einstweilen bei meinem FF3.6.18 bleiben.
    • Chrome ist grundsätzlich Kandidat für das identische Problem; macht es allerdings (noch) nicht beim Ressourcen-Laden.
    • Hintergrund ist, dass zur Beschleunigung bis zur Anzeige für den wartenden Benutzer moderne Browser zunehmend gleicheitig (parallel) die Prozesse und Netzwerkübertragung vornehmen und nicht nacheinander. Dieses asynchrone Konzept bedarf dann einiger Synchronisationsmaßnahmen.
  2. Autoren von Wiki-Benutzer-Skripten werden sich jetzt und in Zukunft nicht mehr darauf verlassen können, dass importScript-Vorgänge nacheinander erfolgen.
    • Völlig egal, wie das Problem schließlich gelöst wird – es bleibt mühsame Arbeit für den Skript-Autor zu tun.
    • Lösungsmöglichkeiten gibt es etliche, nachdem das individuelle Problem identifiziert wurde:
      • Ein explizites Callback durch das benötigte Skript könnte vereinbart werden – falls der Autor von benötigtem und benötigendem Skript identisch ist.
      • Für die Server-seitigen Skripte gibt es mit der .using-Funktion des ResourceLoaders eine hervorragende Lösung, die genau auf diese Situation abstellt. Für Benutzer-Skripte funktioniert dies unter MW 1.17/1.18 jedoch nur wacklig und kompliziert, wie ich im Frühjahr untersucht hatte.
      • MW könnte sein .load dahingehend erweitern, dass der FF-Parameter async angegeben werden kann. Das würde aber nicht bei jedem Browser und sicher funktionieren.
      • Vielleicht rettet schon ein simples $() um die benötigte Funktion.
      • Wenn es nur um eine jahrelang unveränderte Hilfsfunktion desselben Autors geht, könnte man sie redundant an den Anfang des benötigenden Skriptes kopieren.
      • Man muss aber immer wissen, welches Skript welches andere benötigt.
    • In jedem Fall ist eine gute Dokumentation jedes Skriptes hilfreich, die angibt, welche externe Software benötigt und vorausgesetzt wird.

Fürchte aktuell nicht helfen zu können --PerfektesChaos 09:44, 3. Aug. 2011 (CEST)

In diesem Fall ist dein Benutzername wohl Programm... ;) --Guandalug 09:46, 3. Aug. 2011 (CEST)
Erst einmal ein zur Aussage, dass das asynchrone Laden tierisch nervt.
Konkret wird es sich um Funktionsaufrufe wie add_links_article(); handeln, die dummerweise erfolgen, bevor das diese Funktion definierende Skript geladen ist. Entweder du verschiebst all diese Anweisungen direkt nach Benutzer:Flominator/change_links.js oder du tust Folgendes:
In change_links.js schreibst du am Ende
$(document).trigger('loadWikiScript', ['Benutzer:Flominator/change_links.js']);
und in deiner monobook.js
$(document).bind('loadWikiScript', function (e, name) {
 if (name == 'Benutzer:Flominator/change_links.js') {
  //hierher der Code, der die Funktionen aufruft
 }
});
Die Bezeichnung loadWikiScript und der Parameter Benutzer:Flominator/change_links.js sind prinzipiell beliebig, wären dann aber konsistent mit meinen Skripten.
Wenn du noch alle
document.addEventListener("DOMContentLoaded", function() {
}, false);
durch
$(function() {
});
ersetzt, dann funktionieren deine Skripte sogar im Internet Explorer. --Schnark 09:33, 4. Aug. 2011 (CEST)
So umgesetzt und auf Anhieb gewuppt. Danke, --Flominator 09:11, 28. Sep. 2011 (CEST)

Wie mache ich das denn dann mit Benutzer:Flominator/WhereWasI.js bzw. dessen Aufruf in der Monobook? --Flominator 09:55, 29. Sep. 2011 (CEST)

Da Benutzer:Flominator/WhereWasI.js ja nicht von Code aus anderen Skripten abhängt, sind keinerlei Verrenkungen mit bind('loadWikiScript') etc. nötig. Nur wenn du willst, dass das Skript auch im IE < 9 funktioniert musst du etwas tun, und zwar genau wie oben beschrieben DOMContentLoaded durch $ ersetzen. --Schnark 10:23, 29. Sep. 2011 (CEST)
Hast du eine Idee, warum das dann im FF 5 nicht mehr wuppt? --Flominator 10:32, 29. Sep. 2011 (CEST)
Habe es auch dort um $ ergänzt und schon klappt es. --Flominator 09:39, 30. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Leere Zusammenfassungszeile farblich hervorheben

Unter Wikipedia:Erzwungene Zusammenfassung wurde mal diskutiert, dass man das ausfüllen der Zusammenfassungszeile für unangemeldete Benutzer erzwingen sollte. Wenn man aber das Speichern solcher Bearbeitungen verhindet, kann es auch dazu führen, das "gute" Bearbeitungen nicht getätigt werden. Dadurch ist die Idee entstanden, per JavaScript die Zusammenfassungszeile und vielleicht auch den Speicher-Button farblich hervorzuheben. Meine Umsetzungs-Idee dazu findet sich unter Wikipedia Diskussion:Erzwungene Zusammenfassung#Andere JavaScript-Lösung: Hervorhebung der Zusammenfassungszeile. Bis jetzt habe ich nur für mich JavaScript erstellt, daher bin ich mir nicht sicher, ob mein Ansatz für alle Benutzer/Browser funktioniert. Außerdem weiß ich nicht, wie es später mal mit Support aussieht, aber das Problem habt ihr ja auch ;-) In der heutigen Zeit kann man das mit jQuery vermutlich verkürzen/vereinfachen. Mit jQuery habe ich noch nicht viel gearbeitet, daher könnte ich das ganze nicht umschreiben. Schön wäre es natürlich auch, wenn das Script jede Eingabe-Form erkennen könnte. Copy&Paste funktioniert, aber Drag&Drop nicht so gut.

Daher wäre mein Anliegen: Ich würde mich freuen, wenn es ein Skript-Modul gibt, welches eine leere Zusammenfassungszeile farblich hervorhebt und welches für alle Browser und für alle Eingabeformen funktioniert. Am schönsten wäre es, wenn beim Tippen bereits eine Rückmeldung gegeben wird. Es soll aber niemals das Speichern verhindert werden, wie es beispielsweise die Lösung der polnischen Wikipedia (pl:MediaWiki:Common-edit.js) macht.

Es hat keine Eile, die aktuelle Lösung liegt ja auch schon lange dort herum (ich nutze sie aber). Ich bin aber zuversichtlich, das man soetwas später auch mal standardmäßig/wikiweit aktivieren könnte. Ich bedanke mich schonmal im Voraus und bin gespannt. Vielleicht kann ich auch noch etwas lernen. Der Umherirrende 23:44, 4. Aug. 2011 (CEST)

  • Der 2009er Code lässt sich auf 2011er MW+jQuery umschreiben, egal von wem.
  • Damit ich die gewünschte Funktion richtig verstehe: Solange nur Whitespace oder nichts in der Summary steht, soll das Feld rot sein; sobald mindestens ein Non-Whitespace-Zeichen (auch Punkt?) vorhanden ist (egal ob durch Tastendruck oder Maus-Paste), soll es die normale Farbe annehmen; wenn das Feld anschließend wie und warum immer maximal Whitespace enthält, soll es wieder rot werden. – Event Handler Value, übernehmen Sie.
  • So ganz habe ich aber noch nicht kapiert, welchen Zusatznutzen dies gegenüber dem Einstellungen-Erinnerer bringt. Da ich zu 1% Zusammenfassungs-Vergesser, Signatur-Vergesser und Disku-Einrück-Vergesser (LiquiThread, please) bin, habe ich das Häkchen in den Einstellungen und fertig – 100% perfekt. Ich sehe es als Zumutung gegenüber den Mit-Autoren und Beobachtern an, nicht einmal ein t, k oder r mit einem einzigen Tastendruck zu hinterlassen und die Kollegen zur Diff zu zwingen. Auf eigenen Benutzerseiten ist es natürlich weniger wichtig, aber die Auto-Funktion des Browsers kommt mit einem Mausklick aus, oder ein k.
LG --PerfektesChaos 18:51, 5. Aug. 2011 (CEST)
Die Einstellung "forceeditsummary" war hier für eine kurze Zeit auch für unangemeldete Benutzer aktiv. Eine Auswertung von einigen Benutzer hat ergeben, dass in dem Zeitraum zwar viel weniger Vandalismus gespeichert wurde, aber gleichzeitig auch die Anzahl der sinnvollen Bearbeitungen von unangemeldeten Benutzern stark zurückgegangen ist. Ein möglicher Hintergrund könnte sein, dass die Benutzer auf Speichern drücken und dann denken, das die Bearbeitung gespeichert wird und nicht mehr warten, bis die nächste Seite ganz geladen wurde. Dadurch sehen diese Benutzer den Hinweis nicht, das ihre Bearbeitung garnicht gespeichert wurde, wiel die Zusammenfassungszeile fehlte. In der Diskussion darum kam dann mal die Idee, direkt eine Rückmeldung auf der Bearbeitenmaske zu geben und zwar durch ein rotes "Seite Speichern" + Tooltip und eine rote Zusammenfassungszeile + Tooltip, sofern die Zusammenfassungszeile leer ist oder nur den Autocomment enthält. Der Umherirrende 16:50, 7. Aug. 2011 (CEST)
  • Na, das klingt ja recht einleuchtend.
  • Das OnChange des Summary-Wertes ist ausnutzen; das wirkt unabhängig davon, ob Tastendruck, Maus-Paste oder programmatische Veränderung durch ein anderes Skript. Freunde von jQuery nehmen change() usw.
  • Ich probier erstmal ungetestet mein Glück: obsoleted
  • Beim Laden der Seite im Bearbeitungsmodus muss die Funktion zur Anfangsdekoration aufgerufen werden: obsoleted
  • Führender Whitespace ist in der Zusammenfassung sinnfrei und wird dann auch per Tastatureingabe nicht mehr akzeptiert. Man kann auch mehrfache Leerzeichen zu einem zusammenfassen oder bei einem einzelnen Punkt noch rot bleiben.
  • Kannst du ja mal einbauen und damit rumspielen. Müsste laufen.

Beste Grüße --PerfektesChaos 19:29, 7. Aug. 2011 (CEST)

Noch etwas nachgebessert; die Stelle, wo ich mich selbst beklaut hatte, war in DOM geschrieben; hatte ich heute abend etwas zu eifrig auf jQuery umgepolt. LG --PerfektesChaos 20:26, 7. Aug. 2011 (CEST)
etwas kürzer, ohne öffentliche function summaryChanged:
$( function() {
   var bg;
   $( "#wpSummary" ).change( function(e) {
      var s, t = e.target;
      if (typeof bg != "string") // nur beim ersten Mal initialisieren
         bg = t.style.backgroundColor;
      $(t).val( function(v) {
         return s = v.replace(/^\s*/, ""); // und alles andere Unerwünschte
      } ).css("backgroundColor", s.length ? bg : "red");
   } ).change(); // initialisieren
} );
@PerfektesChaos: Ich würde .data() statt element.decoration benutzen, das erschiene mir sicherer.
Wobei ich persönlich lieber möglichst auf style-Attribute (und Anfangs-Attributwert-Speichern) verzichte und stattdessen mit .addClass('invalid') arbeiten würde. Und bei "invalid" fällt mir gerade ein:
$( function() {
   $( "#wpSummary" ).attr('pattern', ".[\\s\\S]*");
   mw.util.addCSS("input:invalid { background:red; }");
} );
:-) --Bergi 20:49, 8. Aug. 2011 (CEST)
  • Sodele; zufällig hatte ich auch heute abend herumgespielt.
  • input:invalid ist natürlich genial; aber ich fürchte, das überfordert ältere Browser, wie der Umherirrende es richtig für den projektweiten Einsatz vorgegeben hatte. Ich weiß noch nicht mal, ob der IE das macht.
  • .change() reicht leider nicht aus. Zwar ist es im Endergebnis korrekt, die Reaktion beim (hier WP-unerfahrenen) Benutzer jedoch unbefriedigend: Das Ereignis tritt erst ein, nachdem das Feld verlassen wird. Während also bereits Text getippt wird oder gepastet wurde, ist das Feld immer noch rot. Ich entschloss mich daher zu einer ganzen Serie von Bindungen.
  • Die öffentliche Funktion ist nur ein vorübergehender Zustand zum Testen. Hinterher kann man sie an document oder document.editform binden und dadurch ein wenig aus dem Sichtfeld nehmen.
  • Die Beschriftung des wpSave beim Umherirrenden müsste man auch irgendwo zwischenlagern; das ist gegenüber der Hintergrundfarbe simpel.
  • Dass drei oder gar fünf Bindungen für ein ansprechendes Verhalten erforderlich sind, macht die gemeinsame Nutzung der Funktion erforderlich. Man kann sie natürlich zunächst anonym an change binden und anschließend bei Bindung an die weiteren Ereignisse dieses change referenzieren, dann vermeidet man den gesonderten Namen.
  • Mit den vielfachen Durchläufen ist es recht zeitkritsch und führt zu etlichen beobachtbaren Millisekunden bei jedem Tastendruck. Ich habe deshalb bewusst auf kurze, einfach zu schreibende Ausdrücke verzichtet.
    • Mehrfache jQuery-Durchsuchung des DOM bei jedem Tastendruck versuche ich möglichst durch Speicherung in document.editform.wpSummary.$ zu vermeiden.
    • Den momentanen Zustand rot / nicht rot merke ich mir in document.editform.wpSummary.lazy und ändere den Stil erst, wenn das wirklich erforderlich ist.
    • Reguläre Ausdrücke vermeide ich weitmöglichst.
    • Optimiert bis zum Anschlag.
  • IE8 hatte die Zuweisung eines leeren Stils nicht wirksam umgesetzt; es half nur die Entfernung des Attributs.
  • Das Merken eines ursprünglichen Stils habe ich gestrichen. Es stand in dem Part, aus dem ich mich beklaut hatte; aber in Wikis ist diesem Element kein eigener Stil zugewiesen worden, sondern er wird nur geerbt. Erst recht nahm IE dies dann nicht an.
  • Das reine Rot=red wird genauso von der forceeditsummary-Umrahmung benutzt. Damit geht das red-Feld grenzenlos im red-Rahmen unter. Außerdem ist in dem etwas blasseren Rot die Abschnittsüberschrift besser zu lesen; bei mir gilt sie ebenfalls als Zeichen für Faulheit.
  • Zum programmatischen Ausfüllen des Feldes kommt es durch die autofill-Funktion des Browsers ohne notwendiges key/mouse-Event.
  • .data() sehe ich nicht so arg an; solange es keinen Namenskonflikt gibt (change, onchange oder so), kann ich meiner Erfahrung nach beliebige Eigenschaften dranbamseln.
  • Code bis auf Weiteres unter Benutzer:PerfektesChaos/modern.js erhältlich.
  • Getestet unter FF3, IE8, Safari; um Chrome und Opera kümmere ich mich noch.
Schönen Abend. --PerfektesChaos 22:47, 8. Aug. 2011 (CEST)
if ( $summary ) willst du nicht schreiben, weil Objekte ohnehin immer wahr sind, if ( $summary.length ) ist es, was du suchst. Mehrere Events gleichzeitig kannst du mit $summary.bind( 'change keyup mouseup', summaryChanged ) binden. Im Eventhandler selbst musst du nicht so misstrauisch sein, this wird von jQuery grundsätzlich mit dem betroffenen DOM-Element belegt. --Schnark 09:26, 9. Aug. 2011 (CEST)
Danke schön, für das kritische Mitlesen und Mitdenken. Wird gleich so berücksichtigt.
Besonders interessant ist das multi-bind; das ebnet dann den Weg zur späteren anonymen Funktion.
Ich mache bekanntlich auch nur für Wiki mit jQuery rum; muss mich nach 10 Jahren DOM da immer noch reinzwingen.
Liebe Grüße --PerfektesChaos 10:42, 9. Aug. 2011 (CEST)
Ich weiß ja nicht seit wann es das input - event gibt, aber das deckt auch copy & paste (da wird mouseup selten ausgelöst) sowie alle anderen inputs ab. -- RE rillke fragen? 10:36, 9. Aug. 2011 (CEST)
  • Ein input steht nicht unter den jQuery-Events; insofern hilft es grad nicht. Grundsätzlich hätte ich nichts dagegen, wenn jQuery mir ein solches Event geben würde und mir dies im Fall älterer Browser entsprechend umsetzen würde. Das ist auch der Grund, warum ich überhaupt bereit bin jQuery einzusetzen: Dass ich eine einheitlich funktionierende Schnittstelle habe und nicht selbst Besonderheiten abbilden muss.
  • Per Definition muss der gesuchte Algorithmus mit jedem Browser funktionieren. Damit habe ich leichte Schwierigkeiten, weil fast jeder um mich herum ziemlich aktuelle Modelle hat. Ich bin aber auch kein hauptberuflicher Webdesigner für veraltete Browser.
  • Der angenommene unerfahrene Benutzer darf nicht verwirrt werden durch seltsames Verhalten der summary; es darf nicht dazu kommen, dass gültiger Text in die Zusammenfassungszeile gelangt ist und sie immer noch rot ist. Außerdem soll die Umschaltung so schnell wie möglich erfolgen und auf einem langsameren Rechner nicht bei jedem Tastendruck „nachfedern“. Insofern könnte man noch keydown hinzufügen.
  • Und betreffend alte Browser: Gestern abend habe ich bei Gelegenheit dieses Testens bemerkt, dass im IE8 "ABCDEF".substr(-2,2) offenbar "AB" ergibt; seit 1995 müsste es "EF" sein.
VG --PerfektesChaos 11:17, 9. Aug. 2011 (CEST)
(wenn hier alle die Reihenfolge der Antworten missachten, tu ich das auch mal) Wenn wir gerade bei veralteten Browsern sind: Soweit ich weiß, ignorieren alte Safaris die Hintergrundfarbe bei Eingabefeldern, da müsste man sich vielleicht eine andere Hervorhebung einfallen lassen (oder ignorieren). --Schnark 11:46, 9. Aug. 2011 (CEST)
(quetsch)
  • Reihenfolge: Tschuldigung; ich hatte bereits vor 11:00 begonnen, in externem Editor die Antwort zusammenzustellen. Als ich dann (wohl zwischen zwei Telefonaten) um 11:17 das Ergebnis einfügte, übersah ich, dass du schon um 11:00 geantwortet hattest.
  • Safari-alt: Der Umherirrende hatte ja in seinem Konzept die gleichzeitige Umtextung des Save-Button. Das würde als Signal für alle Browser langen, die bgcolor nicht unterstützen. Ob und bei welchen Safari-Versionen das tatsächlich auftrat und wieviele davon noch benutzt werden, wäre für uns unverhältnismäßige Geschichtsforschung. Bergi schlägt unten vor, statt style eine class zu verwenden; mit Zuweisung oder nicht einer class wpSummaryEmpty kann sich jeder passende Rot-Töne, ersatzweise einen Rahmen oder geblümte Hintergrundbilder einstellen.
LG --PerfektesChaos 10:05, 10. Aug. 2011 (CEST)
Input gibt es im IE erst ab der Version 9: [2], und auch cut, copy und paste sind nicht so verbreitet, wie man sich das wünschen würde. jQuery scheint diese Events bei nicht unterstützten Browsern auch nicht zu simulieren. --Schnark 11:00, 9. Aug. 2011 (CEST)
Trotzdem sollte es auch zumindest bei den neueren Browsern Copy & Paste unterstützen. Ein "Event-Listener" kann ja nicht schaden. Mouse-events sind übrigens sinnfrei. Wann werden die schon ausgelöst. -- RE rillke fragen? 12:06, 9. Aug. 2011 (CEST)
Drag'n'Drop? Mag ich nicht, bin ich nicht gewohnt, gibts aber. --Bergi 14:10, 9. Aug. 2011 (CEST)
@:invalid: Natürlich, das ist dann nur für moderne Browser; hätte aber den Vorteil dass man auch ganz einfach das Formular auf validierend schalten könnte und so sogar automatisch das Absenden unterbinden könnte. Fürs MediaWiki:common.js ungeeignet.
@öffentliche Funktion: Ja, wenn man sie woanders auch gebrauchen kann ist es immer gut sie öffentlich zu machen. Aber warum hängst du sie an irgendein dom-Element, statt an mw.util (beispielsweise)?
@zeitkritisch: Also wenn man Millisekunden sehen kann, läuft irgendwas falsch :-) Ein input-Feld mit maximal ~250 Zeichen auf derart einfache Ausdrücke zu prüfen sollte selbst in langsameren Browsern nicht spürbar sein.
@Optimierung: Ich weiß nicht ob man mittlerweile mehr auf die Länge des Quelltextes (Ladezeit) achten sollte als auf die Ausführzeit. Insbesondere den Verzicht auf (simple) reguläre Ausdrücke finde ich übervorsichtig, die while-Schleife ist deutlich komplizierter (zu lesen).
@lazy, $, learn und Co: Finde ich etwas kompliziert gelöst. Warum speicherst du das an dom-Elementen ab statt als lokale Variable? Soll das eine API werden, was passiert wenn ein Skript nach der Initialisierung (das ist doch das learn?) beispielsweise document.editform.wpSummary.$ ändert?
@red: Ja, kann man natürlich unkompliziert durch irgendwas schöneres ersetzen. Aber dennoch wird es immer Leute geben, die daran etwas auszusetzen haben und es ändern wollen, am einfachsten wäre doch die Lösung mit Klassen. Und ganz sicher findest du auch Leute, die ein generelles opt-out vermissen (mich zum Beispiel, auch wenn ichs nicht nutzen würde).
@/\*\/ *$/: Ich würde mich gestört fühlen, wenn das die Hintergrundfarbe auslöst. Oft tippe ich das auch manuell, und denke dann es genügt. Würde ich daher nur am Anfang prüfen, wenn überhaupt. Das größere Problem dürfte jedoch sein, dass Neulinge verwirrt werden, da sie keine Ahnung haben was /*…*/ bedeutet: „Da steht doch was, wieso ist das rot?“. Sollte man da mal zu Lösen anfangen (ein zweites input-Feld „Abschnitt“, befüllt automatisch mit einem weiteren das #wpSummary[hidden])?
Daher meine Lösung, ich hab sogar die regulären Ausdrücke mal weggelassen:
mw.util.validateSummary = function( $s ) {
   var isInvalid = false;
   $s.bind( "change keyup mouseup", function(e) {
      var old = isInvalid, s = "";
      $s.val( function(i, v) {
         while ( v.length && v.charCodeAt( 0 ) <= 32 )
            v = v.substr( 1 );
         return s = v;
      } ); // macht nichts wenn sich nichts ändert (keine DOM-Events), die Zuweisung abzufangen ist bloß aufwändig
      isInvalid = s.length === 0 || s.length >= 4 && s.substr(0, 2) === "/*" && /\*\/ *$/.test(s);
      if (isInvalid !== old)
         $s[isInvalid ? "addClass" : "removeClass"]("invalid");
   } ).change(); // init
}
if ( mw.config.get("wgAction") === "edit" || mw.config.get("wgAction") === "submit" )
   $( document ).ready( function() {
      if ( editsummaryHighlight === false )
         return; // opt-out
      mw.util.addCSS(".invalid { background-color: #FF4040; }"); // einfach überschreibbar
      mw.util.validateSummary( $("#wpSummary") );
   } );
--Bergi 14:10, 9. Aug. 2011 (CEST)
editsummaryHighlight === false müsste window.editsummaryHighlight === false heißen, da du sonst eine in den meisten Fällen undeklarierte Variable abfragst und einen ReferenceError bekommst. --Schnark 10:35, 10. Aug. 2011 (CEST)
Vielen Dank für euere Antworten. Sind ja einige Ideen entstanden. Ich werde mich dann mal durcharbeiten. Der Umherirrende 12:01, 13. Aug. 2011 (CEST)
  • Das sind allerdings erstmal nur Ansätze; bis dies einen Stand erreicht hat, dass es projektweit eingeführt werden kann, ist noch einiges zu tun.
  • Performance ist ein Problem. Bei jedem Tastendruck wird die Funktion ausgeführt. Auf einem ca. vier Jahre alten Netbook (früher Asus Eee PC), also 630 MHz, und auf einem Kinderzimmer-PC um 500 MHz gab es ein wahrnehmbares Prellen und sichtbare Verzögerung beim asdfghjklöä. Profiling ergab danach, dass das $(this) das Nadelöhr ist. Deshalb mein Ansatz der Zwischenspeicherung des $. In 99 % der Bedienungen wird nach dem ersten Tastendruck-Buchstaben die Farbumschaltung endgültig und erledigt sein; trotzdem muss man konsistent reagieren, falls später doch wieder alles gelöscht wird.
  • Der Vorschlag von Bergi, statt style eine zuvor definierte Klasse summaryEmpty zuzuweisen oder zu entziehen, ist zweifelsfrei überlegen.
  • Ich hatte meine Zwischenspeicherung an das DOM-Element gebunden, um nicht an unerwarteter Stelle globale Variable einzuführen. Ansonsten zielte ich auf eine anonyme Funktion im bind() ab; nur während des Experimentierens ist eine benannte Testfunktion übersichtlicher.
Viel Spaß --PerfektesChaos 13:03, 13. Aug. 2011 (CEST)
Ich habe mir das schon angeschaut und bin mit euren Vorschlägen erstmal zufrieden. Vielen Dank. Der Umherirrende 18:14, 27. Dez. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Der Umherirrende 18:14, 27. Dez. 2011 (CET)

Commons Redirect

Gibt es ein Script, dass einen direkt zur Dateibeschreibungsseite von Commons weiterleitet, wenn eine http://de.wikipedia.org/w/Datei:* Seite einen Link zur Commons Seite und das Commons-icon (im div id="commons-icon") enthält? Ich kenn mich nur mit Greasemonkey-Userscripts aus, und wüsst nicht wie ich sowas in der vector.js schreiben sollt.--CENNOXX 16:33, 6. Aug. 2011 (CEST)

Das muss es doch irgendwo geben? Ich finde jetzt aber auch keines. Für die Weiterleitung von Dateiseiten aus böte sich folgendes an:
var m = document.head.getElementsByTagName("link");
for (var i=0; i<m.length; i++)
	if(m[i].getAttribute("rel") === "canonical")
		document.location.href = m[i].getAttribute("href");
Durch das Ausnutzen des Canonical Links sollte auch problemlos ohne ready(), jQuery oder sonstwas funktionieren und muss nicht auf das Laden des (ganzen) Dokuments warten, da document.head bei Ausführung aus common.js längst bereit ist. Wenn du dich ein bisschen mit JavaScript auskennst, kannst du es sicher auch auf Commons-WL einschränken. Disclaimer: ich habe keine Ahnung, wo MediaWiki überall CanonicalLinks setzt, der ist mir nur im DOM aufgefallen.
Andere Lösungen lassen dich gar nicht erst auf die de-Dateibeschreibungsseite kommen, indem sie per $('img[src*="http://upload.wikimedia.org/wikipedia/commons/"]') nach aus dem Commons-Verzeichnis eingebundenen Bildern suchen und dann die (umgebenden!) Links ändern. --Bergi 20:22, 6. Aug. 2011 (CEST)
@CennoxX: Ich kenne deine Betätigungsfelder nicht, aber vielleicht können dir Leute aus dem Bild-Bereich helfen und haben was Fertiges? Wikipedia:CTB-Kreise oder so? Leyo?
LG --PerfektesChaos 23:00, 6. Aug. 2011 (CEST)
Früher führte bei einer Commons-Datei der Klick auf Bearbeiten oder Diskussion auf die lokale (nicht vorhandene) Dateibeschreibungsseite bzw. Diskussionsseite. Dies wurde vor einiger Zeit geändert. Eigentlich wäre ein Tab Versionsgeschichte mit Direktlink zur Commons-Versionsgeschichte – zumindest für einige Benutzer – praktisch. --Leyo 23:47, 7. Aug. 2011 (CEST)

Der Vierzeiler gefällt mir, funktioniert einbahnfrei! Spart mir einen Klick um zu den Kategorien zu kommen... Ich denk ist auch um einiges einfacher, als die zweite Möglichkeit. Danke! --CENNOXX 02:11, 7. Aug. 2011 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Rote Links korrigieren

Könnte man nicht ein JS-Tool (ähnlich wie HotCat) schreiben, dass, wenn man auf rote Links klickt, sich ein Fenster öffnet, wo ein Suchfenster ist. Z. B. beic dann [3], sodass man den Link einfach fixen kann. Man sollte es auch bei Vorlagen machen können. -- ianusius ✆ Disk. ✪ (Art.) 07:12, 19. Aug. 2011 (CEST)

Ja, kann man. Versuchs doch einfach mal, Anleitungen gibt es zuhauf. Tipp: Redlinks (auch auf Vorlagen) lassen sich per Selektor im DOM finden, dann ein Popup-Iframe mit der Suchseite (und evtl. etwas CSS zum Ausblenden von Seitenleisten); fortgeschrittener wäre eine API-Abfrage direkt in ein Popup. Jquery stellt wirkungsvolle Werkzeuge zur Verfügung. --Bergi 16:02, 19. Aug. 2011 (CEST)
Oder ein anderer Trick: Das redlink anklicken; dann erscheinen als Service:
  1. Ein Bearbeitungsfeld für die Neuanlage
  2. Die gewünschte Verlinkung zur Volltextsuche mit den von dir gewünschten Schlüsselwörtern
  3. Eine Verlinkung zur Suche im Index an der richtigen Stelle, gut bei Klammerlemmata
Okay, das gäbe dann zwei Mausklicks statt einem.
Grüße --PerfektesChaos 17:16, 19. Aug. 2011 (CEST)
Beide Möglichkeiten sind sehr gut, Nr. 2 sicher einfacher zu realisieren. Bei beidem bin ich aber vermutlich zu unerfahren. Grüße -- ianusius ✆ Disk. ✪ (Art.) 18:36, 19. Aug. 2011 (CEST)
Nr. 2 braucht niemand zu realisieren; das gibt es schon seit fast zehn Jahren. Probier’s mal aus: Patrick Steward anklicken und dann rechts oben unter „Suche“ die erste Möglichkeit; das war deine Frage. ;-)) --PerfektesChaos 19:19, 19. Aug. 2011 (CEST)
Ach so, Du meintest mit einer neuen Seite :D – könnte man nicht einfach folgenden Text in einem neuen Fenster einbinden?
<div style="float:right;font-size:95%;margin-left:0.5em;width:30em;">
'''Seite erstellen:''' [http://de.wikipedia.org/w/index.php?title={{PAGENAME}}&action=edit&redlink=1 hier klicken]
'''Suche'''
* [[{{ns:-1}}:Search/{{PAGENAME}}|nach „{{PAGENAME}}“]] in anderen Artikeln.
* [[{{ns:-1}}:Allpages/{{PAGENAME}}|nach ähnlichen Schreibweisen]] im Index.
</div>
Quelle: Vorlage:MediaWiki Newarticletext NS -- ianusius ✆ Disk. ✪ (Art.) 14:07, 20. Aug. 2011 (CEST)
Neues Fenster geht per target="_blank" im Link, wenn du nur den Kasten haben magst könntest du es mit einer data-URL versuchen (für Fortgeschrittene). Aber google doch einfach mal nach "jQuery Hover Popup". --Bergi 15:08, 20. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Link-Parameter+

Ist es möglich die Wikimedia Option „wpPreview“ vom Editformular als solchen in URL-Form darzustellen? wie &action=submit oder &action=edit Sinn ist es gleich beim betreffenden Linkklick auf die Vorschau der Seite zu kommen!? -- πϵρήλιο 00:11, 22. Aug. 2011 (CEST)

Um die Frage zu verstehen:
  • In welcher Situation befindest du dich vorher, um aus dieser auf eine Vorschau zu gelangen?
Falls du in einem Artikel bist und das Editieren beginnen möchtest, gibt es auf Einstellungen das Häkchen „Beim ersten Bearbeiten immer die Vorschau anzeigen“.
Falls du bereits editierst, wäre das Einfachste ein Klick-Event auf den passenden Knopf. Beim Bearbeiten werden die wesentlichen Infos nicht per URL übertragen, sondern etliche (auch unsichtbare) Zusatzinfos werden durch POST übermittelt.
Schönen Tag --PerfektesChaos 09:49, 22. Aug. 2011 (CEST)
Danke , Du hast es schon an der richtigen Stelle erkannt, also geht es nicht, da es wohl ohne Javascript nicht geht. Die Absicht war einfach eine Funktion wie subst durch die Vorschau zu parsen (neu expandiert), wie in der Vorlagen-Werkstatt angedacht. Grüße -- πϵρήλιο 14:21, 22. Aug. 2011 (CEST)
Ich gehe mal davon aus, du willst auf Gedeih und Verderb die REVISIONUSER-Variable für einen Tool-Link verwenden? Das geht auch in der editnotice, nicht nur in der Vorschau: http://de.wikipedia.org/wiki/?action=edit&editintro=Benutzer:✓/VeryUglyTSLink --Bergi 21:59, 23. Aug. 2011 (CEST)
Ups, das geht nur bei neuen Seiten bzw. neuen Abschnitten. Neuer Link: [4]. --Bergi 21:37, 25. Aug. 2011 (CEST)
Ja, die Möglichkeit die Vorschau sofort anzeigen zu lassen gibt es bei Mediawiki auch: mw:Manual:Parameters to index.php#Edit and submit. Beispiel: http://de.wikipedia.org/wiki/Benutzer:Perhelion/Sandbox?action=edit&preview=yes meins ist schöner :-) --Bergi 21:37, 25. Aug. 2011 (CEST)
Wow*, genau das! :D In der Tat ist deine Möglichkeit viel ansehnlicher (habe es im Thread der Werkstatt bekannt gemacht). -- πϵρήλιο 00:14, 26. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

(Form-)Variablen übermitteln

Ich habe eine weitere Frage, wie es mir scheint in obigen Bezug. Es geht darum einen benutzerdefinierten Wert (evt. in der Art eines Cookys, einfaches Boolean einer Checkbox) über mindestens einen neuen Seitenaufruf zu übermitteln, wobei es wieder ein Value des Editforms sein kann (über POST), was auf Anhieb nicht funzt. Konkret geht es um das Skript hier (von Olliminatore): Benutzer:Perhelion/signing.js (abgesehen von weiteren evt. Fehlern) Benutzerdefinierte Änderungen werden in der Diff-Ansicht komplett resettet (jedoch nicht im Preview). Ich dachte an viell. etwas wie new mw.Map(); oder halt einfach über die URL!? Eigentlich ganz simpel und bei den Wikimedia Standard-Elementen geht das ja auch (z.B. die Sichten Checkbox). -- πϵρήλιο 21:33, 28. Aug. 2011 (CEST)

  • Erstmal klingt es erstaunlich, dass der Wert beim Diff verlorenginge, während er beim Preview erhalten bliebe. Der Vorgang ist in beiden Fällen völlig gleich.
  • Beim Übermitteln der Bearbeiten-Formulardaten gibt der Server natürlich nur solche Elemente in die Folge-Seite, die er kennt. Eigene Daten gehen so verloren. Die nachfolgende Seite wird aus den POST-Daten komplett neu konstruiert.
  • mw.Map() wird dir nicht helfen. Das mw-Objekt ist auf der folgenden Diff/Preview-Seite komplett neu aufgebaut.
  • Es gibt genau zwei Möglichkeiten, von einer Seite auf die folgende Diff/Preview eigene Infos zu übermitteln:
    1. In den Text des Bearbeitungsfeldes integrieren; mit dem Risiko, dass etwas Unerwünschtes schließlich gespeichert wird.
    2. Cookies sind in der Tat ein Ausweg. Geht wie folgt:
   var spec = "perhelion.signing";
   // Abspeichern:
   jQuery.cookie( spec,
                  das_will_ich_abspeichern,
                  { expires: null, path: "/" } );
   // Auslesen:
   will_ich_wissen = jQuery.cookie( spec );
Beim Cookie empfiehlt es sich ggf., die aktuelle Seitennummer mit in den abgespeicherten Wert zu übernehmen. Stimmt sie beim Auslesen nicht überein, läuft etwas schief.
Guten Morgen --PerfektesChaos 00:21, 29. Aug. 2011 (CEST)
Hallo PerfektesChaos, vielen Dank, das werde ich so versuchen umzusetzen. Wegen dem Unterschied Diff/Preview, ist mir gar nicht so bewusst gewesen, ich vermute einfach mal, es liegt an dem (neuen?) Live-Preview (mittels Ajax, glaube ich mal irgendwo gelesen zu haben), oder doch an en:User:Pilaf/include/instaview.js -- πϵρήλιο 15:38, 29. Aug. 2011 (CEST)
Das mag sein; bei instaview bleibst du offenbar auf derselben Seite und alle Objekte und Definitionen, die einmal vorgenommen wurden, bleiben erhalten. Beim klassischen Klick auf die Buttons (action=submit) bekommst du vom Server eine vollständig neu generierte Seite. Viel Spaß --PerfektesChaos 17:29, 29. Aug. 2011 (CEST)
Habe es nun umgesetzt[5], wobei es im Chrome nicht funzt!? Chrome gibt beim Cookie auslesen immer null zurück (obwohl er auf alle Cookies akzeptieren steht) -- πϵρήλιο 15:15, 12. Sep. 2011 (CEST)
Du hast insofern Glück, als ich aus Versehen am Wochenende Chrome12 auf einem meiner Rechner mit installiert hatte; da ich nun im Lauf der Woche eine Testserie beabsichtige, werde ich dazu bald mehr sagen können. Es wäre dann ein Problem jQuery./.Chrome. Deinen Code habe ich hinsichtlich der cookies gelesen; sieht korrekt aus. Alternativ kannst du den traditionellen Weg ausprobieren: Schreibe einfach mal document.cookie="Test=HalloWelt"; alert(document.cookie); – es gibt allerdings weitere Sicherheitsfunktionen, mit denen ein Browser unterbinden kann, dass JavaScript Cookies auslesen kann, und nur http-Übermittlung des Wertes erlaubt. In Chrome müsstest du bei Optionen→Details→Cookies→AlleWebsitedaten die Inhalte lesen können. Ein Anwendungsbeispiel steht unter en:User:PerfektesChaos/js/Utilities/d.js #getCookie und unser jquery.cookie kocht auch nur mit Wasser. Viel Erfolg --PerfektesChaos 15:59, 12. Sep. 2011 (CEST)
Und weil ich zurzeit mit Chrome spiele und Tests mache: [Erweiterungen]→Edit This Cookie installieren. Damit kannst du deinen Keksen beim Bröseln zugucken. Schönes Wochenende --PerfektesChaos 11:29, 17. Sep. 2011 (CEST)
Danke auch für den Tip ;). Der Cookie ist tatsächlich da und wird nun auch ausgelesen, jedoch scheine ich noch ein paar Fehler ins Script gebaut zu haben (steht immer auf false, var regpages scheint auch zu spät erkannt zu werden, oder vermutlich ist es for (p in regpages) wie Schnark anmerkte, da z.B. direkt hier außer Funktion). Da ich das Cookie wirklich nur für den Moment der EditSession (15 min?) benötige habe ich anstatt des Benutzernamens den Edittoken genommen. Ich habe jedoch keine Ahnung wie lange dieser Cookie erhalten bleibt. -- πϵρήλιο 22:41, 18. Sep. 2011 (CEST)
  • Der Edittoken ist gefahrengeneigt (soll heißen: Auch wenn es im Moment zufällig so funktioniert, wie du dir das denkst, muss das nicht so bleiben; es ist kein sicheres Mittel zur Vermeidung von Fehlzuordnungen.).
  • Wenn schon, dann nimm die wpStarttime – die ist sekundengenau; wenn an ihren String noch die wgArticleId drangeklatscht wird, ist es narrensicher. Dies bei action=edit setzen; wenn das bei action=submit nicht übereinstimmt, sind alle entsprechenden Cookies gaga.

Schönen Tag --PerfektesChaos 09:04, 19. Sep. 2011 (CEST)

  • Ich meine nun alles so hinbekommen zu haben :D : Edittoken ist tatsächlich nicht geeignet, da er wie die SessionID für die gesamte Sitzung gilt(!?) Daher jetzt die von dir angeratene Seitennummer, sollte über jede Redundanz erhaben sein (wobei ich evt. auch das Ändern der wpStarttime beobachtete).
  • Was den Aufruf hier betrifft (über benutzerdefinierte var repages): so bin ich sehr verblüfft, da diese tatsächlich vom Script erst später erkannt wird, obwohl diese im Hauptscript (vector.js) definiert ist (evt. hängt das mit Schnarks jsmodules zusammen!?). Ich würde das Script dann noch für die :En. klar machen und in die Scriptsammlung hier eintragen dürfen!? Danke, einen schönen Tag ebenso. -- πϵρήλιο 13:27, 19. Sep. 2011 (CEST)
  • Eine Doku-Seite kannst du selbstverständlich in den Benutzerskripten verlinken.
  • Das mit den Edittoken habe ich noch nie begriffen; ich hole mir immer unmittelbar vor einem Abspeichern einen frischen. Der Server ist völlig frei, sich neue Token auszudenken; für jeden Edit, für jede Session, bei IP-Wechsel/HTTP-Bruch, alle Viertelstunde, wann immer.
Enjoy. --PerfektesChaos 09:28, 20. Sep. 2011 (CEST)
Danke, werde die nächste Zeit nicht mehr dazu kommen. Wobei sich eine weitere Aufgabe (die du evt. kennst oder brauchbar fändest) erschlossen hat, undzwar die Kompatibilität mit wikEd. So einfach wie es dort dokumentiert ist, ist es (für mich) jedenfalls nicht (ich muss sagen, sehr lange habe ich auch nicht getestet). Ein schönes Wochende -- πϵρήλιο 17:21, 23. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Monobook.js und Autobausteine

Ich würde gerne mir das Bausteinsetzen erleichtern. Ähnlich wie man mit Monobook.js von PDD automatisiert/einfach Löschanträge stellen kann würde ich das beispielsweise gern auch mit dem {{QS-Medizin}}-Baustein machen. Kann mir jemand helfen, ich durchschaue den Quelltext leider nicht. Grüße -- Christian2003·???RM 18:38, 4. Sep. 2011 (CEST)

Benutzer:Schnark/js/autoantraege. Grüße -- ianusius: ( Diskussion) 18:56, 4. Sep. 2011 (CEST)

Danke, das habe ich schon gefunden. Ich würde das aber gern in meine monobook.js einbauen, und das nur für die QS Medizin. Ich durchschaue aber nicht wie es funktioniert und kann dafür deswegen keinen Eintrag in meiner monobook.js ergänzen. Das kann doch eigentlich nicht so scher sein. Es gibt den Eintrag

w (0,trenner,'Auto-Bausteine',''); if (( isGeneric) && (!isSpecial)) w (4,"eintragen(1);","QS+","","+Qualitätssicherung");

Aber wo wird definiert, dass dann ein {{QS}} im Artikel und anschließend die Begründung auf der Wikipedia:QS eingetragen wird. Doch nicht in dieser Zeile, oder? -- Christian2003·???RM 19:03, 4. Sep. 2011 (CEST) OK, Benutzer:PDD/eintragen.js habe ich gefunden. Dann muss ich wohl eine eigen eintragen.js einbinden? -- Christian2003·???RM 19:11, 4. Sep. 2011 (CEST)

Naja, wenn sich jemand damit auskennt wäre toll, ich glaube ich brauche Ewigkeiten um die ganzen Variablen nachzuvollziehen.-- Christian2003·???RM 19:18, 4. Sep. 2011 (CEST)
Bei meinem Skript gibt es (noch) keine Möglichkeit, eigene Vorlagen einzufügen. Ob und wie das in PDDs Monobook funktioniert, kann dir wohl am besten PDD selbst erklären. --Schnark 12:13, 5. Sep. 2011 (CEST)
Ok, ich habe es jetzt anders gelöst. Das reicht mir. Das hier scheint doch zumindest mir zu kompliziert zu sein. PDD möchte ich keine zusätzliche Arbeit machen. Damit hier erl. Christian2003·???RM 14:01, 5. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

ToDo-Skript

Hallo, Ich wollte mal nachfragen, ob ich dass mit dem Grund im untenstehenden Skript richtig gemacht habe.

// Script von Bergi ([[Benutzer:✓]] gezimmert, erweitert von (Der) Buckesfelder, gewünscht in der http://de.wikipedia.org/wiki/Wikipedia:Technik/Werkstatt/Archiv#Halbautomatisches_Skript_für_ToDo-Liste & http://de.wikipedia.org/wiki/Wikipedia:Technik/Werkstatt/Archiv#ToDo-Skript

$(function(){
   // Konfiguration
   var todoseite = "Benutzer:" + "Der Buckesfelder" + "/Werkstatt",
       werkstatt = "Benutzer:" + "Der Buckesfelder" + "/Werkstatt/",
       vor = /\s*{{Anker\|Neu}}/,
       liste = "*";

   var li = $(mw.util.addPortletLink("p-cactions", "#", "ToDo+", "js-addTodo", "An die Todoliste unten anfügen"));
   li.find("a").click(function() {
      var page = mw.util.wikiUrlencode( mw.config.get('wgPageName') );
      autoedit.edit({title:todoseite, summary:"[["+decodeURIComponent(page).replace(/_/g," ")+"]] "+"+", minor:true, method:"API", change:function(text){
         return text.replace(vor, function(match) {
        var r = "\n== [["+decodeURIComponent(page).replace(/_/g," ")+"]] ==";
if (mw.config.get('wgArticleId')==0) { // wenn Seite (noch) nicht existiert
    r += "\n<small>[["+werkstatt+page+"|Bearbeitungslink]]</small>";
} else { // sonst
    var grund,
        gründe = [];
    while( grund = window.prompt("Gib bitte "+(gründe.length?"einen weiteren":"den ersten")+" Grund ein\nFreilassen zum Abbrechen", "")) { // solange etwas eingegeben wird
        gründe.push(grund);
    }
    if( gründe.length > 0 ) {
        if ( gründe.length == 1 ) {
            r += "\n'''Kommentar''': "+gründe[0]+" ";
        } else {
            r += "\n'''Kommentare''':\n* "+gründe.join("\n* ")+"\n";
        }} else {
            r+="\n'''Signatur''': ";
        } //<nowiki>
        r += "--[[Benutzer:{{subst:REVISIONS\BENUTZER}}|{{subst:REVISIONS\BENUTZER}}]] ~~~~~";
    } //</nowiki>
}
return r + match;
         });
      }, callback:function(status) {
         if (status != "success")
            return alert("Problem beim Bearbeiten");
         li.find("a").text("…erfolgreich");
         window.setTimeout(function(){
            li.fadeOut();
         }, 3000);
      } });
   });
});

--Der Buckesfelder - Diskussion - Bewertung - Email 10:41, 22. Okt. 2011 (CEST)

Nur mal auf die schnelle:
  1. case 1: r += "Kommentare:"+<br />*"+(p.grund);: hier fehlt ein " vor <br />
  2. Hinter case 0: r += "<br /><small>[["+werkstatt+page+"|Bearbeitungslink]]</small><br />'''Kommentare:'''"; fehlt ein break;
  3. Du willst im Switch nicht auf 1 prüfen, sondern auf alles außer 0. ==> default: oder sinnvoller if
  4. Nochmal die case 0:-Zeile: Was ist p?
  5. Du definierst r zweimal.
--Steef 389 12:05, 22. Okt. 2011 (CEST)
Ergänzend zu Steef, warum du die ArticleId nicht auf 1 prüfen willst: 0 Ist sie nur, wenn der Artikel noch nicht existiert (du auf der Anlegen-Seite bist). 1 ist sie nur auf dieser nicht existenten Seite (du wirst daher auf die Haupseite weitergeleitet).
Dann habe ich für dich mal eine ansprechende Einrückung vorgenommen.
Abgesehen davon definierst du dir eine Variable dialog, ohne sie zu nutzen, und du hast die Variable p, deren Property grund du abfragst, nicht definiert.
Ich vermute mal, du willst auf if (mw.config.get('wgArticleId') != 0) r += "<br />"+window.prompt("Gib bitte einen Grund ein", ""); hinaus.
-- Bergi 20:45, 22. Okt. 2011 (CEST)
Ich habe den Code oben verändert. Ist es jetzt richtig? --Buckesfelder - Diskussion - Bewertung - Email 19:45, 23. Okt. 2011 (CEST)
Ich kann dir nur sagen, ob es richtig ist, wenn du mir sagst, was es tun soll. Rein technisch: das break gehört da nicht hin und die Variable dialog erfüllt immer noch keinen Zweck. -- Bergi 22:30, 23. Okt. 2011 (CEST)
Tut mir leid. Grundsätzlich soll das Skript das tun, weshalb ich es mir damals gewünscht habe. Nur möchte ich jetzt auch, wenn der Artikel existiert, beim Hinzufügen in ein Feld eingeben können, was ich verbessern möchte. Dies soll dann bei Kommentare angezeigt werden. Grüße --Buckesfelder - Diskussion - Bewertung - Email 05:59, 24. Okt. 2011 (CEST)
OK, habe das Skript mal so umgeschrieben wie ich es dann machen würde. Den Zeilenumbruch nach der Überschrift muss du als Zeilenumbruch \n, nicht als <br /> schreiben; das habe ich mal ersetzt wo ich es sinnvoll fand. Übrigens: Wenn du einfach an die Seite unten einen Abschnitt hinzufügen willst (ohne Anker), dann ließe sich das auch per API direkt erledigen. -- Bergi 07:47, 24. Okt. 2011 (CEST)
Vielen, vielen Dank. Du bist super! Es benötige es weiterhin per Anker, da unten drunter noch Text stehen soll. Also vielen Dank nochmal. --Buckesfelder - Diskussion - Bewertung - Email 08:03, 24. Okt. 2011 (CEST)
Ein paar optische Kleinigkeiten habe ich noch:
  • Der Absatz sieht doch doof aus, deshalb weg.
  • Kommentare soll fett geschrieben sein.
  • Jedes Kommentar soll mit * davor versehen sein.
  • Es wäre toll, wenn hinter dem Grund, den man eingibt, automatisch --~~~~ angefügt werden könnte.
Grüße --Buckesfelder - Diskussion - Bewertung - Email 08:38, 24. Okt. 2011 (CEST)
Das schaffst du auch selber, du musst dazu nur die entsprechenden Strings ändern. Kurzanleitung: String ist in '' oder "" eingefasst, ein Zeilenumbruch wird als \n geschrieben, Verkettung erfolgt mit dem +. -- Bergi 22:41, 24. Okt. 2011 (CEST)

Ich habe es geschafft und aus Euphorie gleich noch einen weiteren Grund hinzugefügt. Doch der funktioniert so nicht. Wie muss ich es verändern, dass Grund 2 funktioniert und ich später auch noch weitere Gründe einbauen könnte? --Buckesfelder - Diskussion - Bewertung - Email 09:09, 25. Okt. 2011 (CEST)

Funktionieren tut er schon (er könnte sich höchstens aufregen, dass du nicht deklarierte Variablen verwendest), bloß musst du so halt exakt 2 Gründe eingeben um eine Ausgabe zu bekommen. Eine Möglichkeit, viele Gründe einzugeben, sähe vielleicht so aus (mit expliziter Klammerung):

var r = "\n== [["+decodeURIComponent(page).replace(/ /g," ")+"]] ==";
if (mw.config.get('wgArticleId')==0) { // wenn Seite (noch) nicht existiert
    r += "\n<small>[["+werkstatt+page+"|Bearbeitungslink]]</small>";
} else { // sonst
    var grund,
        gründe = [];
    while( grund = window.prompt("Gib bitte "+(gründe.length?"einen weiteren":"den ersten")+" Grund ein\nFreilassen zum Abbrechen", "")) { // solange etwas eingegeben wird
        gründe.push(grund);
    }
    if( gründe.length > 0 ) {
        if ( gründe.length == 1 ) {
            r += "\n'''Kommentar''': "+gründe[0];
        } else {
            r += "\n'''Kommentare''':\n* "+gründe.join("\n* ")+"\n";
        } //<nowiki>
        r += "--~~~~";
        // </nowiki>
    }
}
return r + match;

Übrigens solltest du dir mal das SelfHTML-Tutorial durchlesen, insbesondere die Grundlagen; die Einführung ist auch ganz sinnvoll. -- Bergi 11:38, 25. Okt. 2011 (CEST)
Also das Skript ansich funktioniert jetzt wohl so wie es soll, aber in habe wohl einen Fehler in der Verlinkung gemacht, als ich es von meiner common.js entfernt habe und hier eingefügt habe.
P. S. : Ich schaue mir die Links mal an. Habe ich eigentlich schon seit langem vor. --Buckesfelder - Diskussion - Bewertung - Email 14:23, 26. Okt. 2011 (CEST)
Ach ja, du kannst auf Skriptseiten auch die Zeichenfolge ~~~~ problemlos verwenden, sie wird nicht ersetzt (auch wenns mit Änderungen zeigen so aussieht). -- Bergi 01:49, 27. Okt. 2011 (CEST)

Die Signatur stand aber, nach dem Speichern und vor dem erneuten Bearbeiten, im Quelltext ausgeschrieben. --Buckesfelder - Diskussion - Bewertung - Email 07:35, 27. Okt. 2011 (CEST)

Oh, stimmmt. Nowiki in Kommentaren (siehe Beispiel) hilft dagegen, das hab ich in meiner Seite schon lang drin. -- Bergi 08:02, 27. Okt. 2011 (CEST)

Leider bin ich immernoch nicht weitergekommen. Kann mir jemand helfen? --Buckesfelder - Diskussion - Bewertung - Email 00:13, 28. Okt. 2011 (CEST)

Na, viel gibt es ja nicht das du an meiner funktionierenden Version geändert hast, oder? Dir sei nochmal die JS-Einführung nahegelegt. Oder ein Debugger, der dir auch etwas in der Form Syntax error at line 36 while loading http://de.wikipedia.org/w/index.php?title=Benutzer:Buckesfelder/ToDo.js&action=raw&ctype=text/javascript ausgibt (in Zeile 36 wird bemerkt, dass etwas mit der Klammerung nicht stimmt). -- Bergi 01:37, 28. Okt. 2011 (CEST)
Nachdem ich den Fehler behoben habe, ersetzt das Skript auf Benutzer:Der Buckesfelder/Werkstatt {{Anker|Neu}} durch undefined. Warum? --Der Buckesfelder - Diskussion - Bewertung - Email 18:38, 30. Okt. 2011 (CET)
Hast du hiermit nicht. Der Debugger sagt, dass er an der Stelle merkt, dass eine Klammer fehlt, und nicht, dass die Klammer an der Stelle fehlt (woher soll er denn das wissen?). Hast du die paar Seiten Syntax-Einführung auf SelfHTML schon gelesen?
Tipp: Der return-Befehl wird nicht erreicht, daher gibt die Funktion einen undefinierten Wert (void) zurück, der bei der automatischen Stringkonversion zu dem Ergebnis "undefined" führt. -- Bergi 18:57, 30. Okt. 2011 (CET)
Der Debugger sagte mir, dass an diese Stelle "}" gehört.
Nein, ich hatte leider noch keine Zeit. --Der Buckesfelder - Diskussion - Bewertung - Email 20:01, 30. Okt. 2011 (CET)
Jetzt sagt der Debugger mir gar nichts mehr und ich kommen nicht weiter. --Der Buckesfelder - Diskussion - Bewertung - Email 14:50, 31. Okt. 2011 (CET)
Code aktualisiert. --Der Buckesfelder - Diskussion - Bewertung - Email 14:52, 31. Okt. 2011 (CET)

Noch jemand da? Ich komme einfach nicht weiter. Ich habe schon überlegt, ob ich nicht jeden Befehl mit

try

testen sollte.

Und um euch nicht mehr so auf die Nerven zu gehen, habe ich mir folgendes Buch ausgeliehen: Christian Wenz: JavaScript. Das umfassende Handbuch. 9. Auflage. Galileo Computing, 2009, ISBN 978-3-8362-1397-4.. --Der Buckesfelder - Diskussion - Bewertung - Email 15:18, 4. Nov. 2011 (CET)

Nein, try hilft da nicht weiter - das verwirrt bloß. Dass du ein Buch lesen willst, ehrt dich - wahrscheinlich hätte es die Einführung von SelfHTML auch getan. Allerdings gibt es sowohl (deutlich) schlechtere als auch deutlich bessere Bücher als SelfHTML, wichtig ist das Herausgabedatum; ich würde auf alle Fälle ein in den letzten 5 Jahren Erschienenes nehmen. Eigentlich alle JS-Bücher helfen jedem Neuling bei der Einführung und grundliegenden Sprachelementen - aber wie (und ob) der sinnvolle Einsatz, Strategien zur Fehlervermeidung und Skriptstruktur sowie Code-Standards gelehrt werden unterscheidet sich erheblich. Ich muss gestehen, ich habe noch kein Buch gesehen, in das wirklich gut gemacht wird (Für Experten könnte ich ISBN 978-3-7723-6488-4 empfehlen, doch selbst da sind manche Aussagen imho falsch und Beispiele treffen selten den Kern).
Sobald du das Kapitel zu Kapitel zu Kontrollstrukturen durch hast, sollte dir auffallen dass du Fehler bei der Verzweigung gemacht hast - siehe meinen Tipp. -- Bergi 00:31, 6. Nov. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Ref-Fehler = Popup

Wäre es möglich, dass wenn es Fehler bei den Ref-Tags gibt, ein JS-Popup erscheint und warnt? Bei langen Artikeln übersieht man es oft. Grüße -- NyanDog 16:54, 23. Nov. 2011 (CET)

Eine schlichte Lösung wäre:
if (mw.config.get("wgAction") === "submit") {
   jQuery(function() {
      if (jQuery(".error").length) {
         alert("Schwerer Syntaxfehler im Wikitext");
      }
                      }
          );
}
Sie wirkt in der Vorschau (in der die ref-Fehler sichtbar sind) und erinnert auch an gut gekennzeichnete Fehler etwa in Vorlagen.
Die Zeilen wären in deine common.js einzutragen.
VG --PerfektesChaos 19:34, 23. Nov. 2011 (CET)
Super!! Danke. :) VG -- NyanDog 20:18, 23. Nov. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:35, 27. Dez. 2011 (CET)

Hallo zusammen, hat jemand eine Idee, wie man das Ding im ausgeblendeten Zustand so verschwinden lassen kann, dass es keinen Platz mehr belegt? --Flominator 18:43, 23. Aug. 2011 (CEST)

Hallo Flominator, ersetze
wlHinweis.style.visibility = 'hidden';
durch
wlHinweis.style.display = 'none';
--Wiegels „…“ 19:02, 23. Aug. 2011 (CEST)
Danke, --Flominator 19:06, 23. Aug. 2011 (CEST)
Oder gleich wlHinweis.parentNode.removeChild(wlHiwnweise);.
Ansonsten: document.getElementById musst du nicht prüfen, wenns das wirklich nicht geben sollte (IE<6?) darfs ruhig einen Fehler werfen… Und ersetze addOnloadHook() durch $(), das ist etwas schneller und zukunftssicherer. --Bergi 21:31, 23. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 09:48, 29. Dez. 2011 (CET)

Dort sind Codereviewer gefragt. :-) --Leyo 13:13, 7. Dez. 2011 (CET)

…insbesondere, was die Einschränkung auf bestimmte Namensräume angelangt. --Leyo 13:51, 28. Dez. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 18:47, 2. Jan. 2012 (CET)

API action=query

Hallo allerseits, ich habe eine Frage zur API query. Ich möchte eine Abfrage ob ein bestimmtes Template in einer Seite enthalten ist. Das klappt leider nur soweit dass ich die entsprechende Seite erhalte. http://de.wikipedia.org/w/api.php?action=query&prop=templates&titles=Wikipedia:WikiProjekt_Wappen&format=json

Dazu habe ich entsprechend nur folgende Dokus gefunden (ab 1.19 solls einfacher werden, s.a.Wikipedia:Technik/Skin/JS/mw#.Api):

Als praktisches Bsp. habe ich die Funktion erstautor bei Benutzer:Schnark/js/autoantraege.js gefunden, leider verstehe die Funktion nicht. Jedenfalls weiß ich nicht wie ich die Daten in einer Variable erhalten soll.ein SmileysymbolVorlage:Smiley/Wartung/kapituliere 

Konkret geht es um die "Vorlage:Autoarchiv" und "Vorlage:Autoarchiv-Erledigt" (in dem besagten Skript von Schnark gibt es eine solche Funktion nur ich brauche sie im Edit-Modus). Mein Stand:

	templateGet = function (callback) {
		var request
		$.getJSON(mw.util.wikiScript('api'), {action: 'query', prop: 'templates', titles: wgPageName, format: 'json'}, 
						function (json) {
								if (!json || !json.query || !json.query.pages) return callback('', true);
								var page = json.query.pages, page;  // warum page zweimal??
								for (var p in pages) page = pages[p]; // letzte?
								if (!page || !page.templates || !page.templates[0] || !page.templates[0].title) return callback('', true);
								request = page.templates[0].title 
								callback(page.templates[0].title, page.templates[0].ns === 10); // callback fehlt mir wohl!?
						}
		);
		return (request)
    }

Ich vermute stark jemand hier weiß die Lösung. Liebe Grüße und guten Rutsch.ein SmileysymbolVorlage:Smiley/Wartung/grün  -- πϵρήλιο 22:26, 30. Dez. 2011 (CET)

Nachdem ich mir http://api.jquery.com/jQuery.getJSON/ vorgenommen habe bin ich auch nicht weiter. Folgender Code gibt mir ein "error" zurück.
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.getJSON("http://de.wikipedia.org/w/api.php?action=query&prop=templates&titles=Wikipedia:WikiProjekt_Wappen&format=json", function() {
  alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });
-- πϵρήλιο 23:55, 30. Dez. 2011 (CET)

Die erste Kodierung ist mir leider zu unübersichtlich, als dass ich sie auf Anhieb lesen und dann darin Probleme finden könnte.

  • Ich habe es dir mal so aufgeschrieben, wie ich das lesen kann. Es ist ungetestet, sollte aber klappen.
  • Um die Komponenten richtig interpretieren zu können, ist indexpageids hilfreich. Dann kann man durch das Array .pageids[] schleifen (auch bei einer einzigen Seite), weil im Ergebnis-Objekt immer nach pageids gegliedert wird.
    • Nach den .pages[] direkt iteriert es sich aber mühsam.
    • for (var p in ist immer tückisch, wenn man ein Objekt nicht selbst gebaut hat. Gerade am Anfang stehen oft Prototypen; man muss also die Eigenarten jeder gefundenen Komponente erst analysieren.
  • Wenn du die Erweiterung Firebug in deinem Chrome installiert hast, kannst du die Auskommentierung von window.console. entfernen. Es zeigt dir die Objektstruktur, was ich auch regelmäßig brauche. Das beantwortet dann auch deine Frage, warum zweimal page.
  • Dein zweites Beispiel könnte das Problem haben, dass als zweiter Parameter ein query-Objekt (mit einem format:'json') erwartet wird, und als dritter die Callback-Funktion. Hier sind die query-Parameter in die URL integriert, was grundsätzlich auch geht, aber dann nicht mit $.getJSON().
  • Allgemein ermöglicht die abgestufte Analyse des zurückgegebenen JSON eine differenzierte Fehlermeldung.
    • So könnte .pageids[0] einen Wert kleiner/gleich Null enthalten. Dazu käme es (vielleicht nicht bei dieser Anwendung), wenn zwischen dem Laden der Seite zum Angucken und dem Starten der Skript-Anwendung jemand die Seite umbenannt und obendrein die WL gelöscht hätte.
    • Neben Meldungen für den späteren Anwender tut sich der doofe Entwickler leichter.
function template_get() {
   jQuery.getJSON( mw.util.wikiScript("api"),
                   { action:       "query",
                     prop:         "templates",
                     indexpageids: true,
                     titles:       wgPageName,
                     format:       "json" },
                   template_callback );
};   // template_get()

function template_callback(json) {
   // window.console.log("Hallo Welt");
   // window.console.dir(json);
   var query  =  (typeof(json) === "object");
   if (query) {
      query  =  json.query;
      if (query) {
         query  =  query.pages[ query.pageids[0] ];
         if (query) {
            query  =  query.templates;
            if (query) {
               alert(wgPageName + " enthält " + query.length + " Vorlagen\n"
                     "Der Name der ersten lautet: " +  query[0]);
               // window.console.dir(query);
           }
         }
      }
   }
};   // template_callback()

In diesem Sinne einen Guten Rutsch --PerfektesChaos 11:49, 31. Dez. 2011 (CET)

@Perhelion: Deine Funktionen sind beide mehr oder minder richtig, in ersterer hast du nur ein Paar Syntaxfehler drin:

	templateGet = function (callback) {
		return $.getJSON(mw.util.wikiScript('api'), {action: 'query', prop: 'templates', titles: wgPageName, format: 'json'}, 
			function (json) {
				if (!json || !json.query || !json.query.pages)
					return callback('', true);
				var pages = json.query.pages, page; // hier lag ein Typo: page_s_
				for (var p in pages)
					page = pages[p]; // stimmt so, pages ist ein Object mit genau einem Schlüssel
				if (!page || !page.templates || !page.templates[0] || !page.templates[0].title)
					return callback('', true);
				callback(page.templates[0].title, page.templates[0].ns === 10);
			}
		);
	}

Allerdings hast du, fürchte ich, noch nicht ganz verstanden wie du callback benutzen musst. Deine obige Funktion erzeugt eine lokale Variable request, erzeugt dann ein AJAX-Objekt welches die API asynchron aufruft, und gibt den Wert der Variable request zurück - nach wie vor undefined. Irgendwann – so kein Fehler passiert ist – kommt die Antwort der API, wird von jQuery verarbeitet und deine Funktion mit dem json-Objekt aufgerufen. Deine Funktion extrahiert also irgendwann in der Zukunft den Vorlagennamen der ersten eingebundenen Seite aus der Antwort, und ruft dann die Funktion callback mit dem Ergebnis auf. Diese Funktion kannst du dir also wie einen Event-Handler vorstellen, der vielleicht irgendwann mal aufgerufen wird – templateGet sorgt nur für den Start der Abfrage. Beispielaufruf: templateGet(function(title, isTmpl) { alert("Es wird die "+(isTmpl?"Vorlage":"Seite")+" '"+title+"' eingebunden");} );. Dein zweites Beispiel mit getJSON funktioniert bei mir tadellos (sucess - second sucess - complete).

@PerfektesChaos: indexpageids ist nicht notwendig. Das .pages-Objekt ist ein direkt aus JSON generiertes "plain Object", Object.prototype hat keine enumarablen Properties. Einer for-in-Schleife ist problemlos möglich und imho deutlich weniger umständlich.
weiß -- Bergi 17:09, 1. Jan. 2012 (CET)

Object.prototype kann durchaus Eigenschaften haben, die eine for-in-Schleife auch aufzählt, nämlich dann, wenn irgendjemand der Ansicht war, den Prototyp mit seinem Zeug zu verschmutzen. indexpageids ist daher durchaus angemessen, wobei ich zugeben muss, dass ich selbst das auch nicht verwende. --Schnark 09:07, 2. Jan. 2012 (CET)
  • Mein oben angegebenes Code-Beispiel richtete sich an jemand, der ersichtlich nicht mit API vertraut ist und seine ersten Schritte unternimmt.
  • Dass ein Routinier wie Schnark sowas auch in eine einzige Zeile schreiben kann und das bei ihm auch funktioniert, ist eine völlig andere Geschichte. Die fragliche Code-Sequenz stand in seinem Skript, das seine Arbeit tun und nicht als Übungsbeispiel und Ausgangspunkt für Weiterentwicklungen dienen soll.
  • Wenn mit 1.19 dieses mw.Api zum Rumspielen und praktischen Benutzen zur Verfügung stand, sollte eine Unterseite Wikipedia:Technik/Skin/JS/Api geschrieben werden; wie auch jetzt schon wp:JS/jQuery allmählich kommen sollte.
  • Die if-Abfragen oben sind auch dazu gedacht, in passenden Situationen das else für eine Fehlerbehandlung gegenübergestellt zu bekommen.
  • Im vorliegenden Fall ist die pageid der einzigen umgebenden Seite sogar bekannt, nämlich wgArticleId – die sich für einen sicheren Zugriff eignet.
  • Quellcode ist zu 90 % dazu da, von Menschen gelesen und auf Anhieb richtig verstanden zu werden; zu 10 % dazu, damit irgendeine doofe Maschine eine Syntax parst und dann so ausführt, wie es buchstäblich da steht.
  • Machen kann man sehr viel – wenn man weiß, was man tut, was man besser lässt und was zu tun ist, wenn dies oder jenes nicht mehr funktioniert. Wer noch am Anfang steht, bedient sich besser eines umständlichen, aber sicheren Weges und kann dann hinterher im Einzelfall kürzer fassen.
Geduldiges 2012 --PerfektesChaos 10:18, 2. Jan. 2012 (CET)
Um genau zu sein, stehen Teile von mw.Api bereits jetzt (= 1.18wmf1) zur Verfügung, nur leider sind die undokumentiert und von einem derart beschränktem Umfang, dass sie praktisch nutzlos sind – zumindest ich für mich habe beschlossen, dass ich mw.Api ignorieren werde, solange da nicht irgendetwas Grundsätzliches daran passiert. --Schnark 10:35, 2. Jan. 2012 (CET)
Genau das meinte ich mit erstmal Rumspielen; erst danach im Lichte der Erkenntnisse eine Doku-Seite schreiben.
Zurzeit verschmerze ich misslich ein Konzept hinter der Sache.
Wenn neue Bibliotheksfunktionen eine Vereinfachung beim Abfragen (primär wenig herauszuholen) und bei der Analyse eines Ergebnisses bringen sollten, wären diese vorrangig auf einer neuen Seite darzustellen. Dass die Leutchen sowas könnten, hat sich beim wirklich entlastenden .user.tokens.get("editToken") gezeigt, wobei hier die Arbeit bei PHP lag.
LG --PerfektesChaos 13:52, 2. Jan. 2012 (CET)
Vielen Dank für eure Hinweise und Anmerkungen, ich habe jetzt den Grund für meinen Fehler gefunden (wohl nicht gründlich gelesen ):
Additional Notes:
* Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.

Ich habe alles erfolgreich in die anonyme Funktion gepackt Benutzer:Perhelion/signing.js (und Funktionsnamen weggelassen, da ich es nur einmal benötige) Das Feature werde ich unter anderem bei Gelegenheit auf der Scriptseite dokumentieren. PS. Wobei ich nun seltsamer Weise die success und die error Msg bekomme (gestern noch nur success). @PerfektesChaos Ich habe mir auf Chrome und FF den Firebug installiert und auch verwendet, jedoch sehe ich kein Ergebnis bei window.console. -- πϵρήλιο 10:22, 6. Jan. 2012 (CET)

Firebug: Die Konsole enthält Filter. Vielleicht erstmal „Alle“ einstellen; die ausgesandten Meldungen sind vom Schweregrad Info/Debug-Info, während Firebug nach Installation vielleicht nur den Schweregrad Fehler oder Warnung anzeigt. Wird schon; geht bei mir seit Jahren. --PerfektesChaos 10:38, 6. Jan. 2012 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Perhelion 10:22, 6. Jan. 2012 (CET)

Gadget-Zeitzonenkonverter.js: Schwesterprojektlinks (z.B. Commons) werden missformatiert

von MediaWiki_Diskussion:Gadget-Zeitzonenkonverter.js#Schwesterprojektlinks_.28z.B._Commons.29_werden_missformatiert:

K@rl berichtete mir unter Benutzer Diskussion:Saibo#Darstellungsproblem von Commonslink von diesem:

Datei:Commonsprob.jpg

"Und zwar stellt sich der Link wie die Abbildung zeigt dar. Und zwar ergibt sich das wenn das Helferlein:Zeitzonenkonverter aktiv ist. (Lange gesucht - der letzte wars dann schließlich. Ich arbeite mit FF ist schon längere Zeit mit 7. bis 9.0"

Ich selbst kann es allerdings (wenn ich das Helferlein anschalte) mit FF 3.6 und Monobook an Ernst Rüdiger von Starhemberg nicht nachvollziehen. Viele Grüße --Saibo (Δ) 00:05, 28. Dez. 2011 (CET)

Ich kann es nachvollziehen (dass, nicht weshalb), müsste aber zur Lösung Wikipedia:TSW beiziehen. --Leyo 00:13, 28. Dez. 2011 (CET)
Und da sind wir nun. Ich bitte um Hilfe (auch wenn mich das Gadget selbst nicht interessiert). Viele Grüße --Saibo (Δ) 01:32, 28. Dez. 2011 (CET)

Damit auch ich es verstehe (habe keinen FF7, kann nichts reproduzieren):

  1. Wenn Zeitzonenkonverter aktiviert wurde und eine *{{Common… mit Sternchen davor vereinbart ist, sieht das aus wie auf dem Screenshot.
  2. Wenn Zeitzonenkonverter abgeschaltet wurde, sieht die gleiche Seite normal aus.
  3. Wenn Zeitzonenkonverter aktiviert wurde und eine {{Common… ohne Sternchen davor vereinbart ist, sieht das normal aus.

Richtig?

  • Interessantes Phänomen. Die Hintergründe sollten auf alle Fälle analysiert werden, um daraus zu lernen. Erstmal rätselhaft.
  • Das MediaWiki:Gadget-Zeitzonenkonverter.js enthält allerlei veralteten Code, der aber trotzdem mit FF7/8/9 laufen sollte.
    • So oder so könnte man die paar Zeilen von Zeitzonenkonverter.js auf aktuelles jQuery umschreiben. Vielleicht löst die in jQuery eingebaute Intelligenz das Problem von selbst.

VG --PerfektesChaos 12:24, 28. Dez. 2011 (CET)

Deine Analyse (1.–3.) ist zutreffend. Den veralteten, relativ kurzen Code zu aktualisieren, ist bestimmt eine gute Idee. --Leyo 12:50, 28. Dez. 2011 (CET)
(BK) Habs mir mal angeschaut. Die Funktion text_ersetzen funktioniert, wie sie soll, führt also keine Änderung durch. Das Problem liegt in der Zuweisung node.data = text_ersetzen(node.data);. In den angesprochenen Fällen wird text_ersetzen auf '\n' angewendet. Dieses ist im Quelltext vor dem sisterproject-div vorhanden. Nach der erneuten Zuweisung wird dieses allerdings nicht länger vom Parser Renderer (Gecko) ignoriert, sondern angezeigt. Keine Änderung führt also durch die Neuzuweisung zu einer optischen Änderung. Scheint mir ein Firefox-Problem (auch Beta 10) zu sein, im Opera tritt das Problem nicht auf. Gruß --Steef 389 12:52, 28. Dez. 2011 (CET)
  • @Steef – Ich glaube dir deine Darlegungen gerne, habe sie allerdings nicht verstanden. Welcher Parser bei welchem Browser? Tatsächlich der Renderer? Is ja’n Ding. Im Übrigen tatsächlich Browser-spezifisch, erst FF 7… und nur FF/Gecko (7?) auftretend.
  • Ohnehin hatte ich von Anfang an nicht verstanden, was überhaupt node.data sein soll; in meinem DOM kommt das standardmäßig und in dieser Form in diesem Zusammenhang gar nicht vor. Wenn es jemand neu schreibt, landet man vermutlich bei textContent bzw. innerHTML und vielleicht erledigt sich die Geschichte dann von selbst.
  • Die ganze Geschichte mit dem Ersetzen des Node rekursiv selbst durch sein i-tes Kind erschließt sich mir in ihrer Sinnhaftigkeit sowieso noch nicht und drängte mir sofortiges Neuschreiben auf, oder aber verständliches Kommentieren.
  • Im Übrigen stellte sich mir die Frage, ob man das nicht von vornherein auf NamespaceNumber>0 begrenzen sollte. Auf Disku-Seiten und FzW gibt es sicher reiche Beute; im ANR sind es nur ein paar Kästen der QS und LA zwischen sehr viel Nutztext ohne Signaturen, und bei den wenigen signierten Bausteinen ist die genaue Interpretation der Uhrzeit vermutlich nebensächlich.
Wird sich lösen lassen; wer schreibt das Zeitzonendings auf jQuery um? --PerfektesChaos 14:28, 28. Dez. 2011 (CET) / 14:32, 28. Dez. 2011 (CET)
Das Teil braucht wirklich kein jQuery. Ein NodeIterator ist schneller und einfacher.
// ersetzt CE(S)T durch ME(S)Z (ohne Änderung von Seiten)
jQuery(function() {
	var content = mw.util.$content[0];
	if (!content || mw.config.get("wgNamespace") < 0)
		return;
	if (mw.config.get("wgNamespace") == 0 && mw.util.$content.text().indexOf(" (CE") == -1) // im ANR schnelle Textsuche
		return;
	(function iterate_node(node) {
		if (node.nodeType === 3) { // Node.TEXT_NODE
			var text = node.data.replace(/(20\d\d) \(CE(S?)T\)/gi, '$1 (ME$2Z)');
			if (text !== node.data) // odd Gecko rendering error
 				node.data = text;
		} else if (node.nodeType === 1 && node.id !== 'editform') { // Node.ELEMENT_NODE
			for (var i = 0; i < node.childNodes.length; i++) {
				iterate_node(node.childNodes[i]); // rekursives Ablaufen des DOM
			}
		}
	})(content);
});
-- Bergi 19:51, 28. Dez. 2011 (CET)
  • Da propagiere ausgerechnet ich als alter DOM-Freund mal jQuery, und nun ist es wieder nicht genehm.
  • In der Gadget-Beschreibung heißt es: Der Zeitzonenkonverter wandelt beim Betrachten (nicht aber beim Bearbeiten, Speichern, etc.) in Signaturen alle „CET“ und „CEST“ in „MEZ“ bzw. „MESZ“ um.
    • Dementsprechend würde ich umhüllend wgNamespaceNumber > 0 (das Tool muss nicht unbedingt den Artikel-Text verfälschen; sonst >=0) und danach wgAction==="view" fordern. BEO hat keine Signaturen, und auch keine Zeitzone. Versionsgeschichte auch nie. Bei einer Diffpage sollte man die Original-Texte der Autoren sehen, und nicht irgendeine manipulierte Wirklichkeit.
  • Man könnte vor dem Start der Iteration noch den gesamten Text fragen, ob überhaupt " CET" oder " CEST" irgendwo enthalten sind, zumindest in einem Rutsch " CE".

Guten Rutsch --10:00, 29. Dez. 2011 (CET)

  • jQuery zu propagieren wird nie gerne gesehen (langsam und oft umständlich), und wenns per Standard-DOM einfacher geht schon gar nicht. :-)
  • Die Gagdet-Beschreibung bezieht sich auf „editiert nicht im Quelltext herum“, die Vorschau soll durchaus verändert werden. wgAction=="view" ist sicher nicht das einzige, die Nicht-Standardisierung ist genau der Grund warum ich wgAction nicht mag. Unterschriften im ANR sollten durchaus erfasst werden, daher würde ich höchstens Spezialseiten davon ausschließen. Diff-Ansichten sollten ebenso verändert werden, höchstens .diff könnte man ausschließen (und wenn schon so kompliziert dann pre.code und .example auch… :-)
  • Die Idee ist gut, ich frage mich aber ob das nötig ist. Muss nicht eine innerHTML-Serialisierung auch den ganzen Baum durchlaufen? Auch wenn String.indexOf vermutlich schneller als der RegEx ist, glaube ich nicht dass das Skript Performance-Probleme hat. -- Bergi 11:42, 29. Dez. 2011 (CET)
  • Erst Schnark hat mich dieses Jahr zu jQuery gebracht; mein anderes Ich ist in DOM strukturiert.
  • Ich benutze dieses Gadget nicht. Mir ist es wurst, wie die Zeitzone dargestellt wird.
    • Ich akzeptiere, dass es Benutzer gibt, die mit unverständlichem Denglisch Probleme haben, und helfe gern.
    • Ich verstehe, dass in Disku-Seiten und auf FzW etc. die Signaturen mit MEZ dargestellt werden sollen.
    • Ich habe ein erkenntnistheoretisches Problem damit, wenn die Wirklichkeit durch so viele Filter und Gaukeleien geschickt wird, dass meine Großhirnrinde am Ende nicht mehr Wirklichkeit und Realität unterscheiden kann. Das Bild auf meiner Netzhaut steht Kopf, irgendwer dreht es heimlich herum, der 2D-Flachbildschirm zeigt mir Fotos, ich sehe eine 3D-Welt, geheime Agenten bei Google entscheiden darüber, welche Suchergebnisse für mich wichtig sind und zeigen mir ihren Ausschnitt aus der Welt.
    • In einem Artikeltext könnten Zitate und Originaltexte vorkommen, die nicht verfälscht werden dürfen. Dafür sind ein paar QS/Belege und zeitweilig LA nachrangig, und weitaus überwiegend kommen Inhalte vor und keine Signaturen.
    • Auf einer Diffpage wird der ursprüngliche Quelltext zweier Versionen verglichen, und nicht veränderte Illusionen von Quelltext.
  • Im DOM kann man $content[0].textContent per .indexOf() durchsuchen. Wahrscheinlich wird .textContent erst in dem Moment gebildet, in dem es abgefordert wird, aber es wird von kompiliertem C++/Java im Browser generiert und nicht durch ein dödelndes JS in jQuery oder Wiki Knoten für Knoten iteriert.
    • Bei einem Artikeltext (wenn man schon ANR flöht) würde sich das lohnen. Auf einer Disku-Seite ist es Unfug, weil es praktisch immer einen Treffer geben müsste, wenn auf der Seite schon was passiert ist; ansonsten wäre sie sehr kurz. Für NS>0 würde ich auf eine Vorab-Inspektion verzichten.
    • Bei älterem IE ist .textContent unbekannt und heißt dort wohl .innerText, wenn ich das recht erinnere. Was wann warum .data ohne Benutzereingriff sei, hat sich mir immer noch nicht erschlossen. $content.text() müsste Browser-unabhängig aus dem Browser-internen DOM die reine Zeichenkette des Seiteninhalts extrahieren, ohne viel JS für eine Iteration zu benutzen.
Soviel zur Philosophie --PerfektesChaos 12:52, 29. Dez. 2011 (CET)
Ich empfehle Gehirn-Datenbank-Anschluss ohne Umwege, sodass du die Wirklichkeit der Bits und Bytes auf den WMF-Servern ohne erkenntnistheoretisches Problem nachvollziehen kannst. Vielleicht entkommst du so aus der Matrix… :-)
.data ist die write/read-Property, die den Inhalt von Textknoten darstellt. (MDN ist grad unavailable, Link kommt später)
Ich kann deine Befürchtungen nachvollziehen was das Verändern von Artikeltext angeht, dir jedoch versichern dass /20\d\d \(CES?T\)/gi nirgendwo außerhalb einer Unterschrift auftaucht. -- Bergi 15:01, 29. Dez. 2011 (CET)
Könnte bitte jemand mit dem Problem-Browser mein obiges Skript testen? Sollte sich einfach in der Konsole ausführen lassen, wer nicht weiß wie das geht kann den Code (bitte mit Herkunftsangabe) auf seine /common.js-Seite kopieren und das Gadget natürlich ausschalten. -- Bergi 22:56, 6. Jan. 2012 (CET)
Testen kann ich leider nicht.
Der Code sieht aber zumindest optisch gut aus – was einen Test leider nicht ersetzen kann.
Steef389 hat die Beseitigung des Bug im FF veranlasst – am 1. Januar 2013 kann der workaround auch aus dem Gadget wieder raus; dann müsste sich diese Browserversion von den WP-Autoren entmaterialisert haben.
Ansonsten ist das Gadget ja jetzt flotter als zuvor.
--PerfektesChaos 23:46, 6. Jan. 2012 (CET)
Ich habe Bergis Script in der Web-Konsole ausprobiert, auf dieser Diskussionsseite und auf Ernst Rüdiger von Starhemberg. Es schien alles wie gewünscht zu klappen. Fehlermeldungen oder Warnungen habe ich keine gekriegt. Gibt's eine Seite, die sich besonders gut zum Testen eigenen würde? --Leyo 02:10, 7. Jan. 2012 (CET)
Im Prinzip geht es mit jeder Seite die auf ein oder mehrere Mediawikiprojekte verweist. --K@rl (Verbessern ist besser als löschen) 16:43, 8. Jan. 2012 (CET)
PS. aktuell mit FF9.01 war aber bereits die letzten 2 Jahre (Version kann ich da nicht mehr genau nachvollziehen. --K@rl (Verbessern ist besser als löschen) 16:45, 8. Jan. 2012 (CET)
Script funktioniert mit FF 10. Und der Bug existiert seit Firefox 4.0b8. --Steef 389 20:11, 8. Jan. 2012 (CET)
Wenn kein Widerspruch kommt, überschreibe ich MediaWiki:Gadget-Zeitzonenkonverter.js mit dem neuen Script. --Leyo 21:31, 8. Jan. 2012 (CET)
Ich würde mich freuen und sage im Vorhinein schon danke :-) --K@rl (Verbessern ist besser als löschen) 21:48, 8. Jan. 2012 (CET)
Ich habe das Script von Bergi übernommen. --Leyo 14:32, 12. Jan. 2012 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Leyo 11:59, 17. Feb. 2012 (CET)

Bearbeiten und Versionsgeschichte verschwinden

Hallo nochmal.

Wenn ich

importScript('Benutzer:Giftpflanze/split-tabs.js'); //[[Benutzer:Giftpflanze/split-tabs.js]]

in meine common.js einbaue, verschwindet der Bearbeitungs- und der Versionsgeschichte-Button. Falls es hilft: Ich benutze das Vector-Skin. Was kann ich dagegen tun? --Der Buckesfelder - Benutzer - Diskussion - Bewertung 20:01, 10. Aug. 2011 (CEST)

Was soll denn das Skript eigentlich bewirken (ja, kann ich auch aus dem Code erahnen), gibts ne Doku, ist das zurzeit überhaupt lauffähig? Erstmal beim verantwortlichen Benutzer nachfragen. Ist es gar eine Feature und kein Bug?
Ansonsten: Vector stellt ein paar Skripte zur Verfügung, die dynamisch von der Fensterbreite abhängig Tabs (wie Bearbeiten und Versionsgeschichte) in das „Vector-Menu“ unter dem Ausklapp-Pfeil transferieren. Nachdem das Skript aber an der Editleiste rumändert, kann es dabei zu Fehlfunktionen kommen. Und wenns das nicht ist: Das Skript scheint die Buttons erstmal alle zu entfernen, um sie danach (bedingt?) wieder anzubringen. Wenn es dazwischen abstürzt, sind natürlich alle weg. Tut es das? --Bergi 20:34, 10. Aug. 2011 (CEST)
Am besten auf Benutzer:Giftpflanze mitteilen oder Benutzer auf diese Diskussion aufmerksam machen, und dabei neben eventuellen Meldungen in der Fehlerkonsole deines Browser vor allem auch die Größe deines Bildschirms nennen. Das $('ot-addsection') im Skript ist jedenfalls definitiv falsch, aber das kann die genannten Probleme nicht verursachen. --Schnark 12:09, 11. Aug. 2011 (CEST)
Erklärst du mir, warum das falsch ist? Und ein Screenshot wäre auch gut. – Giftpflanze 21:06, 13. Aug. 2011 (CEST)
Schnark ist die nächsten 2 Wochen out of Wikiverse; insofern antworte ich mal zwischendurch.
Ohne in dein Skript zu gucken: $('ot-addsection') ist verdächtig; der Selektor beginnt mit . für Klasse oder # für ID. Ohne beides ist es nicht die nahegelegte Funktionalität.
Beste Grüße --PerfektesChaos 21:55, 13. Aug. 2011 (CEST)

Ein bekannter Fehler ist es, dass die Tabs sich ineinanderschieben und dabei teilweise die linken die rechten überdecken. Wenn man die Fenstergröße variiert, berechnet Vector die Tabs jedoch neu. Dann verschwinden überzählige Tabs im Aufklappmenü. Bei der Benutzung des Skripts ist eine große Fenster- bzw. Bildschirmbreite vorteilhaft. An die Profis: Kann man Vector nach der Umgestaltung der Tabs eine Anweisung geben, die Darstellung anzupassen (wie bei der Änderung der Fenstergröße)?Habs jetzt selbst gefunden. – Giftpflanze 21:06, 13. Aug. 2011 (CEST)

Wo stelle dich denn die Größe ein? Ist die Bildschirmgröße gemeint? Die Größe im Reiter Aussehen in den Einstellungen ist ja nur für Dateibeschreibungsseiten, oder? --Der Buckesfelder - Benutzer - Diskussion - Bewertung 09:28, 14. Aug. 2011 (CEST)
Hallo Buckesfelder, mit Fenstergröße ist die Größe des Browserfensters gemeint. Eigentlich interessant ist dabei nur die Fensterbreite, die sich beispielsweise durch Ziehen des Rahmens mit dem Zeigegerät (Maus) ändern lässt. --Wiegels „…“ 17:12, 15. Aug. 2011 (CEST)
Das Browserfenster ist maximiert. --Der Buckesfelder - Benutzer - Diskussion - Bewertung 21:17, 21. Aug. 2011 (CEST)
So, was issn hier, irgendwie scheinen wir festzustecken … – Giftpflanze 12:11, 18. Sep. 2011 (CEST)

Frage von mir zum Skript: scheint seit neuestem unter secure nicht mehr zu funktionieren. – Giftpflanze 19:43, 29. Sep. 2011 (CEST)

Was du da machst, nennt man „gefahrengeneigt“.
  • Erstmal zum Verständnis: Die Vector-Skin betrachtet die aktuelle Breite des Browserfensters. Sie kennt die Beschriftung der Links für content action und stellt eine Mutmaßung an, wie viele dieser Beschriftungen in die als horizontale Leiste sichtbaren Tabs hineinpassen. Alle weiteren Links werden in das vertikale PopUp unter ▼ gesetzt. Grundsätzlich ist die Vector-Skin in der Lage mitzubekommen, wenn (ohne Neuladen der Seite) das Browserfenster breiter gezogen wird. Sie kann dann die obersten Links aus dem vertikalen PopUp herausnehmen und rechts an die Tab-Leiste anfügen. Wird die Breite des Browserfensters verringert, kann die Vector-Skin so viele Elemente rechts wegnehmen und oben auf das vertikale PopUp stapeln, bis es wieder passt.
  • Ich programmiere nicht erst seit gestern, aber in einen solchen Vorgang würde ich nur eingreifen wollen, wenn es absolut unvermeidlich ist.
  • Die Programmierer der Vector-Skin sind völlig frei, jederzeit ihr Skript zu ändern und auf Breitenänderung zu reagieren oder auch nicht und ihre dynamischen Strukturen anders zu gestalten, ohne jemand darüber informieren zu müssen. Sie müssen nicht damit rechnen, dass ein Benutzerskript hier eingreift.
  • Dass in diesem Benutzerskript irgendwann mal was nicht funktioniert, mag sein; aber es wird wohl wenig Neigung bestehen, dem hinterherzudebuggen und es irgendwie hinzuflicken.
Beste Grüße --PerfektesChaos 08:28, 30. Sep. 2011 (CEST)
Mit dem Update auf 1.18 (voraussichtlich Montag) kommt dann auch noch bugzilla:31212 dazu. --Schnark 09:36, 30. Sep. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:07, 14. Jul. 2012 (CEST)

js: Output von Tool sortieren / weiterleiten

Hallo, mag sich vielleicht jemand dies anschaun? Beste Grüße, ca$e 09:14, 19. Sep. 2011 (CEST)

  • Ich habe die Bausteine für sowas zur Hand und könnte es rein technisch.
  • Allerdings habe ich zurzeit noch einige Baustellen offen und muss sie vorrangig auf einen soliden (halb-)fertigen Status bringen, bevor ich etwas Neues anfangen kann. Kann also noch etwas dauern; wenn jemand anders vorher anfängt, bitte hier Nachricht hinterlassen.
  • Unbeschadet dessen versuche ich erstmal, eure Disku und Wünsche in eine Spezifikation umzusetzen:
    1. Ihr möchtet zwei Seiten haben:
      1. WP:Admin/.../.../IP-contrib
      2. WP:Admin/.../.../IP-contrib.js
    2. Die erste Seite ist ein Formular, in das man eine Anfrage eintragen kann.
    3. Die zweite Seite ist ein JS, das interessierte Benutzer in ihre common.js etc. eintragen können.
    4. Das Formular enthält folgende Felder:
      • IP (=range-begin)
      • Optional: range-end
      • Optional: namespace-only
      • Optional: Anzahl (Letzte; etwa 50)
      • Optional: Datum-Anfang (seit...) automatisch ausgefüllt bei Fortsetzung
      • Optional: Datum-Ende (bis...)
    5. Nach dem Auslösen steht auf der Formular-Seite zusätzlich folgende sortierbare Tabelle:
IP timestamp Seite BK Sonst noch was??
  • So richtig?
    • Ggf. ergänzen/ändern.
    • Die beiden Seiten WP:Admin/.../.../ schon mal leer anlegen und hier den Namen hinterlassen.
Nebenbei: Diese Seite hier verfügt sowohl über das Feature „Neuen Abschnitt hinzufügen“ wie auch mit gleicher Wirkung „Neue Frage stellen“. Dies bewirkt den angemessenen und sachgerechten Bearbeitungskommentar und ermöglicht den Beobachtern und Werkstattmitarbeitern den Überblick. Wenn unter falschem Bearbeitungskommentar fälschlich Stränge angezeigt werden, an denen man nicht mitarbeitet, führt das zum Ignorieren des neuen Abschnitts, wie hier zunächst geschehen.
VG --PerfektesChaos 13:03, 19. Sep. 2011 (CEST)
ja. super. vielen dank schon mal! jeweils (mit) difflink halt (noch). und möglichst so, dass man das (ergebnis)formular über url(-parameter) "ausfüllen" kann. ca$e 13:10, 19. Sep. 2011 (CEST)
  • Nicht ganz verstanden habe ich: „so, dass man das (ergebnis)formular über url(-parameter) "ausfüllen" kann“ – das einzige zum Ausfüllen wäre die Eingabe einer IP-Adresse, ggf. einer zweiten als range-Ende. Und diese sollen über URL-Parameter vorbelegt werden? Wo käme denn nun wieder diese URL her? Grundsätzlich aber machbar.
  • difflink ist kein Problem: Vergleich des Zustands vor dem IP-Edit und IP-Edit; Anzeige der diffpage in einem gesonderten (aber immer demselben) Browser-Fenster/Tab. Damit sähe die Tabelle so aus:
IP timestamp Seiten-Name BK diff Sonst noch was??
--PerfektesChaos 18:49, 19. Sep. 2011 (CEST)
die URL käme über eine monobook.js-Funktion zustande.
super! sowas wäre wirklich sehr nützlich! ca$e 19:49, 19. Sep. 2011 (CEST)

Und da möchtest du hineinschreiben:
/wiki/Wikipedia:Admin.../.../IP-contrib?IPbeg=127.0.0.0&IPend=127.0.0.255
Okay, wenn man das weiß, lassen sich die Formularfelder vorbelegen, falls die URL sowas enthält.
Und wohin bei WP:Admin soll der Spaß? --PerfektesChaos 21:33, 19. Sep. 2011 (CEST)

hmm... habe oben wohl nicht bei allem mitgedacht, darum: geht das denn innerhalb von wikipedia, so ein formular, was dann eine aufruf-url für /wiki/.../IP-contrib.js generiert? wenn ja, würde ich als ort vielleicht sowas wie Wikipedia:Helferlein/IP-Beiträge o.ä. vorschlagen. (mir persönlich würde ein Benutzer:PerfektesChaos/IP-contribs.js zum einbinden in meine monobook.js ja schon reichen. aber noch ein abfrage-formular dazu wäre natürlich hübsch.) ca$e 21:44, 19. Sep. 2011 (CEST)
hmm. könnte man das splarka skript (kopie unter Benutzer:Ca$e/contribsrange.js) vielleicht relativ schnell umbasteln, so dass nach timestamp sortiert wird? müsste man aus dem cidr[i] array als key abgreifen können, auf den ersten blick... sorry, habe selbst leider zu wenig zeit gerade, um da weiter darüber zu grübeln, gewiss kannst du / vielleicht sonstwer das viel besser & v.a. schneller anschaun? ca$e 22:28, 19. Sep. 2011 (CEST)
  1. Gehen tut der oben beschriebene Weg schon, keine Bange. (NB: Es gibt eine Formular-Seite, in der mindestens eine IP ausgefüllt wird; dann drückt man auf „Abschicken“ und bekommt auf derselben Seite die spezifizierte Tabelle angezeigt. Möglich ist alles, was die API ’rausrückt.) Ob das nun im WP-Namensraum als WP:Admin oder Helferlein oder als ein Benutzerskript bei mir residiert, steht dahin. Die erste Variante würde eine Weiterentwicklung von meiner Person ablösen.
  2. A propos Weiterentwicklung: Ein Umbasteln von Benutzer:Ca$e/contribsrange.js mag gern geschehen, aber nicht durch mich.

VG --PerfektesChaos 09:19, 20. Sep. 2011 (CEST)

ok, das ist natürlich großartig! ca$e 09:25, 20. Sep. 2011 (CEST)

Tja, nach dem neuen Software-Update scheint namespace-Eingrenzung bei contribs und auch Benutzer:Jan eissfeldt/contribsrange.js / das CIDR-Helferlein nicht mehr zu funktionieren. Benutzer:PDD/hideduplicatecontribs.js tut noch gut. Vielleicht könnte man gleich alles auf einmal lösen, also eine hübsche neue Beitragslisten-Modifikation, die a) API abfragt auch nach user-prefix, b) namespace / regex (vgl. das bei mir auch noch nicht funktionierende Gadget-rightsfilter.js) eingrenzen kann, c) nach Datum sortieren kann, d) filtern kann z.B. nach "nur kleine Edits" u.ä.? ca$e 13:08, 6. Okt. 2011 (CEST) Hat sich erstmal weitgehend erledigt, weil die Namespace-Filterung wieder da ist... ca$e 16:46, 6. Okt. 2011 (CEST)

  1. Ich denke, im Moment (in den nächsten Tagen/Wochen) müssen sowohl ich wie auch die Kollegen sich beschäftigen mit MW1.18, der Anpassung existierender Software an veränderte Umstände und dem Ausprobieren der neuen Spielzeuge, die uns MW1.18 gebracht hat. Es dürfte einen gewissen Rückstau geben an Implementierungen, die zurückgestellt waren bis zum fehlerfreien Funktionieren von 1.18, und die jetzt umgesetzt werden können.
  2. Ich habe inzwischen die Bausteine und eine Konzeption für deinen Wunsch gesammelt; bin jedoch auf Wochen hinaus ausgebucht, angebissene JS-Projekte usw. zum definierten Abschluss zu bringen. – Das ist so ähnlich wie wenn man drei Paletten Ziegelsteine auf der Baustelle zu stehen hat; davon ist das Dach noch nicht drauf, gemauert werden müsste schon noch.
  3. Beim konzeptionellen Durchdenken fiel mir auf, dass JS als Gadget oder gar Benutzerskript immer ein potenzielles Sicherheitsrisiko für den fremden Benutzer (hier: öfters solche mit Adminrechten) darstellt. Unter der domain toolserver.org wäre der Zugriff auf geschützte Informationen des angemeldeten Benutzers hingegen kaum möglich; reine Statistik- und Auswertungstools wie das hier gewünschte sollten deshalb besser dort residieren. Ich selbst plane allerdings nicht, in den nächsten Jahren den Kontext des toolserver zu erlernen und dort zu entwickeln. Vielleicht erstelle ich aber eine funktionierende JS-Demo, wenn ich zum Mauern komme.

VG --PerfektesChaos 18:22, 6. Okt. 2011 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:07, 14. Jul. 2012 (CEST)

Thumbbreite in den Kategorien

Mein Werbeblocker (Norton Personal Firewall) filtert von den Kategorieseiten bedauerlicherweise Thumbs mit 120px x 80px oder 120px x 90px wegen "verdächtigem Format" heraus. Da ich nicht weis, ob und wie man die Domain "upload.wikimedia.org" komplett von dieser Prüfung ausnehmen kann, würde ich die Größe der Thumbs ändern, damit der Filter nicht anschlägt.

Ich wollte daher mal fragen, ob jemand den Trick kennt, mit dem man auf Kategorienseiten die Abmessungen der Thumbnails ändern kann. Der Quelltext für so ein Thumb lautet z.B. (hier als Baum dargestellt):

<li class="gallerybox" style="width: 155px">
  <div style="width: 155px">
    <div class="thumb" style="width: 150px;">
      <div style="margin:27px auto;">
        <a href="Bildpfad" class="image">
          <img alt="Dateiname" src="//upload.wikimedia.org/...." width="120" height="80" />
        </a>
      </div>
    </div>
    <div class="gallerytext">...</div>
  </div>
</li>

Die HTML-Codierung {width="120" height="80"} überschreibt leider meine CSS-Datei. Geht es evtl. mit dyn. HTML der eigenen JS-Seite ? ÅñŧóñŜûŝî (Ð) 22:21, 9. Okt. 2011 (CEST)

Variante A: Nimm einen anständigen Werbeblocker. Solltest du gezwungen sein, diesen zu verwenden, mein Beileid.
Variante B: Erstellen einer Regel zur Umgehung des Werbeblockers
Variante C, das Skripten einer HTML-Änderung, kann ich nicht empfehlen. Schon allein weil ich nicht weiß, worauf der Werbeblocker reagiert. Verhindert er das Nachladen von Bildern, indem er die Größe des geladenen Bildes überprüft? Baut er den HTML-Quelltext um, den dein Browser überhaupt erst zu sehen bekommt? -- Bergi 22:57, 9. Okt. 2011 (CEST)
Zu A: Ich habe diesen Werbeblocker zusammen mit der ganzen Sicherheitssoftware als Dienst vom Provider und bis auf derartige Unzulänglichkeiten ist das Paket ok. Kann man denn einen anderen separat installieren und wo bekommt man den her ?
Zu B: Es ist wohl keine klassiche HTML-Folge wie "ad" in der URL (das habe ich schon eingetragen und deshalb sehe ich auch einige Thumbs mit /ad/ in der URL). Ein Zulassen von width="120" wirkt jedenfalls nicht.
Zu C: Schade.

ÅñŧóñŜûŝî (Ð) 00:13, 10. Okt. 2011 (CEST)

  • Mal ganz dumm gefragt: „Kategorieseiten“ meint etwa Kategorie:Datei:Chemie?
    • Die werden allerdings unabhängig von der in Einstellungen vorgegebenen Artikel-Minibild-Größe konstant mit max=120 und einheitlichem gallerybox-Raster von 155px generiert.
    • Grundsätzlich müsste es allerdings möglich sein, mit jQuery und relativ wenigen smarten Zeilen die HTML-Seite so umzugestalten, dass andere Bildgrößen vom Server abgefordert werden; in den upload-png-URL stehen allerdings die 120px fest drin; die müsste man auch umbenennen.
    • Bevor man das angeht, müsstest du allerdings wissen, was genau die Blockierung auslöst, sonst wären alle Bemühungen für die Katz. Das hat Bergi schon ganz richtig unter C angemerkt.
  • Andere Blocker gibt es kostenlos und reichlich; kommt auf deine(n) Browser an. Für FF ist Adblock Plus ein häufig benutzter.
  • Erste Priorität und einfachster Weg wäre allerdings, die Konfigurationsmöglichkeiten deiner vorhandenen Welt zu checken und dort eine Lösung zu finden. Ich weiß nicht, welche Möglichkeiten dein Provider dir zur individuellen Konfiguration lässt. Ich wüsste jetzt auch nicht, welche beschwipste Regel diese Blockierung auslösen sollte. Möglicherweise ist es gar nicht die Bildgröße, sondern eine Besonderheit der URL? Es gibt ja -zig legale Logos auf allen möglichen Websites, die auch ähnliche Größen haben. Die müssten ja dann ebenfalls gefiltert werden. Und du solltest die auslösende Regel schon ermittelt haben; sonst hast du dir alles mühsam umgebaut, und dein Provider schluckt trotzdem weiterhin die Bildchen, bevor sie dich erreichen.
Viel Spaß dabei --PerfektesChaos 01:14, 10. Okt. 2011 (CEST)
  • Ich meinte auf Commons:Category:Andromeda_Galaxy
  • Ich benutze Opera. Wenn ich dafür einen - möglichst preiswerten anderen Blocker hätte, dann würde ich diesen hier abschalten.
  • Die Protokolldatei gibt (Grund: width=120 height=80) als Begründung an. Der Browser zeigt allerdings einen Quelltext mit fehlenden (herausgeschnittenen) IMG-Tags an. Da müsste man doch was machen können ? ÅñŧóñŜûŝî (Ð) 01:32, 10. Okt. 2011 (CEST)
  • Zu Opera ist Bergi der Experte.
  • Welches WMF-Projekt, ist egal; die gallery bei dieser Art von Kategorie-Medien ist die gleiche.
  • „Sicherheitssoftware als Dienst vom Provider“ – hatte ich richtig dahingehend interpretiert, dass dein Provider schon die HTML-Datei beschnipselt und damit den Bildabruf unterbindet, bevor sie dich erreicht? Also du den Norton nicht auf CD geschenkt bekommen hast und der nicht bei dir auf dem Rechner liegt.
    • Das würde bedeuten, dass man die HTML-gallery erstmal rekonstruieren und das herausgeschnittene IMG wieder einbasteln müsste, um dann die reparierte Seite erneut zum Laden der Bilder zu veranlassen. – Technisch natürlich machbar, aber ein ziemlicher Akt, bis das funktioniert.
    • Umso mehr: Alles an Möglichkeiten durchforsten, die dein Provider dir zur Konfiguration lässt, und diese verdammte Regel finden und deaktivieren.
Wie dem auch sei – dann Gute Nacht. --PerfektesChaos 02:07, 10. Okt. 2011 (CEST)
  • Ist es nur diese eine spezielle Kategorieseite oder besteht das Problem mit allen?
  • Wie PerfektesChaos schon schrieb, ist der erste Weg eigentlich die Konfiguration des vorhandenen. Ich meinte auch nicht, dass du Zeichenfolgen wie 120px whitelisten sollst, sondern Domains (wie hier *.wikimedia.org/*). Oder alternativ die Thumbregel („beschwipst“ ist ein sehr schönes Wort dafür) finden und deaktivieren.
  • Adblocking in Opera: Popupblocker ist nativ eingebaut, und man kann eine URL-Blacklist erstellen (u.a. per Kontextmenü→Inhalt blockieren), von der garantiert nichts geladen wird. Diese Blacklists gibts auch gewartet im Internet zum runterladen. Diese Extensions hier machen vermutlich dasselbe, nur etwas komfortabler. Hab ich allerdings noch nie ausprobiert, mir genügt meine persönlich zusammengeklickte Blacklist (ich surf aber auch kaum auf Seiten mit viel Werbung).
    meint -- Bergi 19:02, 10. Okt. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:07, 14. Jul. 2012 (CEST)

Nutzung von Commons-Dateien

Es wäre praktisch ein Script zu haben, welches die Nutzung der Dateien in einer Kategorie anzeigt. GLAMorous ist zwar für manche Anwendungen auch nützlich, aber es zeigt nicht an, welche Dateien nirgends verwendet werden. Für Wartungskategorien wie Commons:Category:Images with a TeX equivalent oder Commons:Category:Duplicate ist aber genau das interessant.
Ist es möglich, Spezial:GlobalUsage für jede Datei in der Kategorie effizient via API abzufragen und den Status (im ANR verwendet, in irgendeinem NR verwendet, nirgends verwendet) durch farbliche Unterlegung des Dateinamens zu kennzeichnen? In Wikipedia:WikiProjekt Dateikategorisierung/Werkzeug/x.js ist eine ähnliche Funktionalität (Einfärben) enthalten. --Leyo 10:14, 2. Dez. 2011 (CET)

Hi; schön, dass du frisch und motiviert aus dem Urlaub zurück bist. Ich melde mich in Kürze bei dir direkt mit dem Stand der Dinge.
Zu deiner Frage: Das wäre sinnvollerweise in fileAdm direkt einzubauen, weil dort schon diese ganze API-Technologie und Färbe-Technik vorhanden ist. Benenne doch schon mal ein konkretes Farbschema … ;-)
Liebe Grüße --PerfektesChaos 10:22, 2. Dez. 2011 (CET)
Das Script soll auf Commons verwendet werden. Durch die Verwendung der dort funktionierenden Funktionalität &withJS= könnte das Script (ohne „Installation“) von allen Benutzern verwendet werden. --Leyo 10:27, 2. Dez. 2011 (CET)
Das verstehe ich nicht. fileAdm kann ohnehin von allen Benutzern verwendet werden, und wenn irgendein Skript (egal ob fileAdm oder ein anderes) mit &withJS= gestartet wird und fileAdm merkt, dass es sich gerade auf wgCanonicalSpecialPageName= Spezial:GlobalUsage befindet, dann würde es die gewünschte Aktion ausführen. --PerfektesChaos 10:38, 2. Dez. 2011 (CET)
Mit withJS können nur Skripte aus dem MediaWiki:-Namensraum dynamisch geladen werden. --Schnark 11:01, 2. Dez. 2011 (CET)
Danke für den technischen Hinweis; fileAdm ist aber ohnehin nicht als Benutzerskript konzipiert, und für den Rest gibt es Commons-Admins, etwa den Interessenten. VG --PerfektesChaos 11:22, 2. Dez. 2011 (CET)
Um zurück auf die Frage zu kommen:
  • Ich verstehe das so, dass der Benutzer bei Commons angemeldet wäre.
  • Eine API-Abfrage in anderen Projekten ist dann nicht möglich, weil eine asynchrone Query die gleiche Domain voraussetzt (Browser-Sicherheit) – ausgenommen, man würde das veraltete secure.wikimedia.org verwenden.
  • Ohne API-Abfrage ist als Benutzer (=JavaScript) eine differenzierte Einfärbung kaum möglich. Diese Information wäre nur von innen (PHP) oder dem Toolserver zugänglich.
  • Soweit ich das deute, macht GlobalUsage intern eine Art mw:API:Imageusage über alle Projekte. Das wäre dem Benutzer aus dem Browser heraus nicht möglich.
  • Es liefe eher auf eine Weiterentwicklung von glamorous.php hinaus, der mit commons_dupes.php zu kombinieren wäre. Beim letzteren steht ja auch schon: de.wikipedia : Article (1) – und es gibt Links und Knöpfe für “delete” und “universally replace”.
  • Wenn du die Differenzierung nach Namensräumen fallen lässt, wäre vielleicht eine JS-Lösung möglich:
    • Für jeden Dateinamen der Ausgangsliste (wie Commons:Category:Duplicate) wäre im Hintergrund Spezial:GlobalUsage aufzurufen (&limit=1) und dessen Ergebnis zu analysieren. Die Antwort wäre ja/nein.
    • Um eine Namensraum-Aussage treffen zu können, ob ANR oder nicht, müssten bis zum ausschließenden Treffer alle Einbindungen analysiert werden. Das können aber vielfach 500 sein.
    • fileAdm kann so generalisiert werden, dass die Methoden des bestehenden Analyse- und Farbdarstellungscodes auf die bisherige und die neue Nutzung anwendbar wären.
    • Mit welchen Antwortzeiten zu rechnen ist, steht dahin. Es kann durch ein Skript immer nur eine einzelne Verwendung abgefragt werden. Zwar sind einige Fragen zeitlich parallel denkbar, aber es würde sich ziehen. Immerhin ginge es schneller als manuell.
LG --PerfektesChaos 10:52, 6. Dez. 2011 (CET)
Zum zweiten Punkt: Soweit ich's verstehe, erfolgt die Abfrage nur auf Commons → Beispiel --Leyo 11:26, 6. Dez. 2011 (CET)
Globalusage steht als Query-Prop zur Verfügung. http://commons.wikimedia.org/w/api.php/api.php?action=query&prop=globalusage&generator=categorymembers&gcmtitle=Category%3ADuplicate&gcmtype=file ist damit problemlos möglich. Von Commons kann man sich die Daten per JSONP holen, das ist hier aber nicht nötig, da die Daten von theoretisch dieselben sind - nur kann man in de.wikipedia natürlich nicht die commons:Category:Duplicate abfragen. -- Bergi 13:55, 6. Dez. 2011 (CET)
Nur damit ich das auch in den richtigen Hals bekomme: Das soll heißen, es gibt noch mehr prop als auf mw:API:Properties draufsteht?? RRRrrrrrrrrrrrrrrrRRRRRRRrrrrrrr. commons:Commons:API commons:Commons:Commons API Wenn nicht dort – wo sonst dokumentiert? (Ja, autogenerated, merci)
Danke jedenfalls; damit wäre der Wunsch in fileAdm erfüllbar. --PerfektesChaos 19:16, 6. Dez. 2011 (CET)
Die API-Doku umfasst nur die Core-Module (Also auch nicht sitematrix, FlaggedRevs, AbuseFilter, CentralAuth, und weitere Extensions die eine API haben). Ich nutze immer die automatisch generierte Hilfe der Seite, wo ich die API anwenden möchte, dann hat man auch kein Problem mit den Versionen. MediaWiki.org ist außerdem häufig outdated. Der Umherirrende 20:20, 6. Dez. 2011 (CET)
Wieder was gelernt, danke.
Die von dir vorstehend beschriebenen Punkte wären dann auch prominent in mw:API hervorzuheben. Na gut, outdated könnte als Majestätsbeleidigung gewertet werden und zur weltweiten Benutzersperrung führen. Ich sehe aber Null Hinweis und wusste demzufolge nicht, dass sich in bestimmten Fällen die Suche in der mäßig übersichtlichen autogenerated lohnen kann.
Wenn ich das richtig deute, wäre Commons der Haupt- oder gar einzige Nutzer von mw:Extension:GlobalUsage – dann sollte commons:Commons:API auch darauf eingehen oder auf ein commons:Commons:GlobalUsage verweisen.
Schönen Tag --PerfektesChaos 10:28, 7. Dez. 2011 (CET)
Schön wäre es, wenn sich der Entwickler um das aktualisieren kümmert, der die Änderung gemacht hat, aber das kann man vermutlich nicht verlangen, weil es ja ein Wiki ist und jeder helfen kann. Da aber wenige Benutzer die Code-Änderungen verfolgen und daraus das Wiki aktualisieren, ist es outdated, so kommt es mir zumindestens vor, ich möchte damit aber niemanden beleidigen. Es gibt auch Entwickler, die ihre Extensions dort gut beschreiben und pflegen, aber das ist nicht Standard. Einige Sachen sind dort natürlich auch ausführlicher beschrieben, was auch hilft, aber für die Grundübersicht über die Parameter reicht mir das autogenerated help, sind ja seit neustem auch die Links auf die richtige Seite auf mediawiki.org enthalten.
GlobalUsage muss auf jedem Wiki installiert sein, welches daran teilnimmt, Spezial:GlobalUsage ist auf jedem Wiki aufrufbar und nutzbar, zeigen nur alle Wikis auf eine gemeinsame Datenbanktabelle, die vermutlich auf den Datenbankserver des CommonsWiki liegt. Der Umherirrende 21:15, 7. Dez. 2011 (CET)
Wer über Wikipedia:API kommt, erhält jetzt in diesem Sinne eine Einweisung.
Wenn ich das richtig deute, würde sich das deutschsprachige Personal zur Vervollständigung der verlinkten Übersetzung nunmehr überwiegend aus den hiesigen Werkstattmitarbeitern rekrutieren?
VG --PerfektesChaos 15:16, 10. Dez. 2011 (CET)
Das sieht gut aus. Wer die Übersetzungsarbeit macht, ist ja eigentlich egal. Manchmal ist es aber auch so, das die englische Beschreibung nicht alle Parameter auflistet. Der Umherirrende 17:15, 10. Dez. 2011 (CET)

Betreffend fileAdm: Ich hätte das Script am liebsten separat, da es auf Commons genutzt werden soll und dort auch ohne Einbindung in den eigenen Skin bzw. Auswahl als Gadget nutzbar sein soll (per Link in Wartungskategorie). Ein Beispiel für eine solche Nutzung via withJS ist Rillkes Gallery Tool. --Leyo 13:50, 8. Dez. 2011 (CET)

Betreffend fileAdm: Das ist ein Missverständnis. fileAdm ist von vornherein so konzipiert, dass es auf beliebigen Projekten verwendet werden kann. Auf welche Weise es gestartet wird, ist völlig unerheblich. Das kann im persönlichen Skin-Skript sein, per Gadget-Häkchen oder mittels withJS=. fileAdm weiß, in welcher Situation es sich befindet, und kann die dafür vorgesehenen Aktionen ausführen. Innerhalb von fileAdm existieren aber bereits alle erforderlichen Unterstützungs-Funktionen für die Einfärbung. Dies in zwei Skripte auseinanderzureißen hätte dann doppelten Wartungsaufwand bei Änderungen und Weiterentwicklung zur Folge.
Die Aufgabenstellung ist bislang nicht präzise genug: Welche Farben sollen verwendet werden, in der Situation genau welcher Namensräme oder welcher nicht?
Die bisher bekannt gewordene Aufgabenstellung wird anscheinend bereits von commons_dupes.php unterstützt. Dort steht schon: de.wikipedia : Article (1) – und es gibt Links und Knöpfe für “delete” und “universally replace”. Welche damit nicht zu lösenden Aufgaben sollen von dem gewünschten Tool unterstützt werden?
VG --PerfektesChaos 20:55, 8. Dez. 2011 (CET)
Hm, von commons_dupes ist mir nur die Anwendung zum übersichtlichen Vergleich von Duplikaten bekannt. Die Anfrage hier bezieht sich auf die Nutzung von Commons-Dateien in anderen Projekten.
Da die Analyse nach NR wie oben erwähnt zu viele Ressourcen frisst, kann man darauf verzichten. Daher würde ich folgendes Farbschema vorschlagen: grün für Dateien mit 0 Einbindungen, rot für ≥ 1 Einbindungen.
Die Dateiwartung auf Commons ist ganz anders als hier. Daher bin ich skeptisch, ob fileAdm dort ohne sehr umfangreiche Anpassungsarbeiten einsetzbar ist. Die dort bestehenden Scripte sind im Allgemeinen umfangreich und sie werden auch fortwährend unterhalten. Soweit meine bestimmt etwas subjektive Einschätzung. Wäre es vielleicht eine Möglichkeit die Unterstützungs-Funktionen für die Einfärbung aus fileAdm in ein Subscript zu packen, so dass dieses auch für andere Scripte zur Verfügung steht? --Leyo 02:33, 10. Dez. 2011 (CET)
Ich erlaube mir gewisse Zweifel, ob du hier Wesen und innere Struktur von fileAdm richtig einschätzt.
  • Die dir bekannten Aktivitäten sind für dewiki explizit freigeschaltet. In einem unbekannten Projekt sind alle Aktivitäten nur schlafend vorhanden.
  • fileAdm enthält aber erfoderliche und im Hintergrund ablaufende Hilfsfunktionen, darunter einen vollständigen Mechanismus, um nacheinander gruppenweise API-Abfragen auf Eigenschaften von Dateien auszuführen und die in der gallery dargestellten Bildnamen entsprechend farbig zu markieren.
  • Dass CTB in Commons nicht freizuschalten wäre, ist selbst mir klar; auch von anderen Aktivitäten war nicht die Rede.
  • Das "Herausoperieren eines Subskriptes" wäre unnötig kompliziert und würde parallele Wartungs- und Pflegearbeiten in zwei Skripten nach sich ziehen. Es gibt von mir nur ein einheitliches Skript, das abhängig von der Situation das tut, was es tun soll.
Wenn ich die Darlegungen von Bergi und dem Umherirrenden richtig interpretiere, dann ließe sich die GlobalUsage-Abfrage mit gleichem Ergebnis von jedem beliebigen Projekt aus vornehmen; gesondertes Wechseln zu Commons wäre dann nicht nötig.
  • Die gu-Abfrage wäre nicht vorzunehmen für lokal in einem nicht-Commons-Projekt vorhandene Dateien (wgArticleId>0; iulimit=1; Farbmarkierung grau=verwaist, gelb=lokal eingebunden; redirects=?).
  • Die Abfrage wäre über gulimit=1 zu begrenzen; Ergebnis: Gefunden oder nicht.
Schönes Wochenende --PerfektesChaos 15:16, 10. Dez. 2011 (CET)
Was deine Zweifel zu meinen Kenntnissen zur inneren Struktur von fileAdm angeht, hast du bestimmt recht. Da du dich als Commons-Nobody bezeichnest, dachte ich, dir könnte möglicherweise nicht klar sein, dass sich die Abläufe auf Commons teilweise sehr stark von denjenigen hier unterscheiden.
Dein Vorschlag tönt sinnvoll. Was man mit den Redirects (genauer: Dateien, die via Redirects eingebunden sind) am besten macht, weiss ich auch gerade nicht. Man könnte prüfen, ob Redirects auf eine Datei existieren (Special:WhatLinksHere). Falls ja, könnte man betreffende Dateien anders einfärben. Die Prüfung der Einbindung müsste dann von Hand gemacht werden, was aufgrund der geringen Häufigkeit kein Problem wäre. --Leyo 01:26, 12. Dez. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 15:07, 14. Jul. 2012 (CEST)

Review

Kurz umrissen, kann vielleicht jemand meine .js und .css mal einem Review unterziehen? Seit 2005 hat sich einiges dort angesammelt (vielleicht auch Müll), einiges funktioniert nicht richtig und einiges kann man vielleicht besser machen.

  • markadmins (kann bleiben man hat sich daran gewöhnt, oder gibt es was besseres?)
  • mw-rollback-link: reduzieren auf '‣' funktioniert nicht mehr
  • Lupin/popups.js sehr hilfreich
  • eigene Seiten "Atamari" (u.a. Disk) soll hervorgehoben werden. Hervorhebung in der Sidebar ist aber störend
  • Weiterleitungen sollen auch besonders hervorgehoben werden
  • In der Beobachtungsliste brauche ich Button für "Sperren" oder "zurück setzten" nicht, da kommt man zu schnell versehentlich darauf
  • editpage-copywarn-copywarn kenne ich, kann ausgeblendet werden
  • "Beobachtungsliste leeren" halte ich für kontraproduktiv, zu gefährlich

--Atamari 16:14, 11. Okt. 2011 (CEST)

Beide document.writes rauswerfen und die Skripte stattdessen in deinen Einstellungen unter Helferlein aktivieren (Rechtschreibprüfung und Navigations-Popups), für mw-rollback-link die Zeile ersetzen durch
if (mw.config.get('wgCanonicalSpecialPageName') === 'Recentchangeslinked') $(function(){
   $('span.mw-rollback-link a').text('‣');
});
Deine css schaue ich mir irgendwann anders an, falls es niemand sonst hier tut. --Schnark 09:31, 12. Okt. 2011 (CEST)
Danke, umgesetzt --Atamari 21:29, 12. Okt. 2011 (CEST)
Ist die Anfrage noch aktuell? --Leyo 15:56, 23. Mär. 2012 (CET)

Offenbar eingeschlafen.

Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 19:25, 4. Aug. 2012 (CEST)

Editor Rechtschreibfehler erkennen

Hallo, oft wenn ich hier bearbeite möchte ich einzelne Rechtschreibfehler berichtigen, die ich durch das erkennungshelferlein erkannt habe. doch dann beim bearbeiten ist es oftmals sehr lästig, die Stelle wiederzufinden. könnte man ein Script einsetzen damit der Rote Hintergrund auch im Editor erscheint? --Rooooo 19:56, 4. Nov. 2011 (CET)

  1. Sehe ich mit Entsetzen das Datum „4. Nov.“ – das heißt, dass wir deine kurze Frage völlig übersehen hatten. Sorry, war keine böse Absicht; wenn sowas passiert und nach einigen Tagen niemand reagiert hatte, einfach nochmal ein ping hinterherschicken.
  2. Um die Frage richtig zu verstehen: Du möchtest in dem Wikitext im Bearbeitungsfeld die rote Markierung haben?
    • Wenn du mit WikEd arbeitst, stünde im Bearbeitungsfeld HTML. Da könnte man einige Funktionen des MediaWiki:Gadget-Rechtschreibpruefung.js geschickt so überschreiben, dass der HTML-formatierte Wikitext diese roten Hervorhebungen erhält. Vielleicht hat hier schon mal jemand sowas gemacht? WikEd unterstützt solche Sachen grundsätzlich.
    • Ansonsten steht im Bearbeitungsfeld blanker Text, in dem kein Markup möglich ist. Schlimmer noch: Würde man dies versuchen, würde alles automatisch Eingefügte als neuer Artikeltext mit abgespeichert, wenn man es nicht mitbekommt.
    • Oder ginge es dir um die Markierung in der Vorschau, vielleicht auch Diffpage? Standardmäßig wird nur die Ansicht des fertigen Artikels (view) analysiert.
Liebe Grüße trotz später Antwort --PerfektesChaos 13:31, 11. Dez. 2011 (CET)
Okay, danke, habe jetzt auch nicht länger hier geguckt. WikEd benutze ich eigentlich nicht, werde ich aber mal ausprobieren.--Rooooo 14:23, 27. Dez. 2011 (CET)
Ja, wobei man dann noch etwas schreiben müsste, dass im von WikEd gebauten HTML-Text des Bearbeitungsfeldes die Ergebnisse der Rechtschreibprüfung ebenfalls gefunden und rot markiert werden. Ist aber überschaubar und grundsätzlich machbar, und wäre auch von allgemeinerem Interesse.
Diesmal kam die Reaktion schneller; Guten Rutsch schon mal --PerfektesChaos 14:53, 27. Dez. 2011 (CET)


Wikipedia:Technik/Werkstatt/Baustellen/Fehler im Bearbeitungsfeld hervorheben – hier erl.

Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 19:21, 4. Aug. 2012 (CEST)

Speicher-Button deaktivieren

Hallo zusammen, ich bin total begeistert von Benutzer:ParaDox/monobook/VirtualReferences.js, bis auf eine Kleinigkeit: Das Teil braucht bei langsamen Internetverbindungen ewig, bis es wieder entfernt ist. Daher passiert es mir öfters, dass ich schon auf Speichern drücken und damit der Kasten im Artikel verbleibt (vgl. [6]). Das nervt! Wäre es möglich, den Speichern-Button zu deaktivieren, bis der Kasten entfernt wurde? Einfärben würde zur Not auch reichen. Danke und Gruß, --Flominator 12:19, 13. Aug. 2011 (CEST)

  1. Grundsätzlich ist das alles machbar.
  2. Mittel der Wahl wäre, wenn es standardmäßig im VirtualReferences.js angeboten bzw. umgesetzt wird. Es ist tatsächlich ein Problem, das jeden Benutzer des Skriptes angeht. Allerdings scheint ParaDox seit Frühjahr 2010 nicht mehr aktiv zu sein.
  3. Alternativ kann man die Speicherfunktion, die normalerweise bei Klick- oder anderen Aktionen des Buttons ausgeführt wird, umbiegen auf eine eigene. Sie kann dann den aktuellen Artikeltext untersuchen, ob sich darin unerwünschte Zeichenketten irgendwelcher Art befinden. Falls ja, Meldungsbox zeigen und nichts tun; falls nein – die Original-Speicherfunktion ausführen.
Schönes Wochenende, auch nach gescheitertem LA --PerfektesChaos 13:14, 13. Aug. 2011 (CEST)
Danke für die Analyse. Ich habe mir gerade mal eine Kopie gezogen, aber mein Problem liegt nach wie vor darin, dass es einfach zu lange dauert, bis das hier ausgeführt wird. Wenn ich auf Speichern drücke, bevor alles geladen ist, habe ich das Problem nach wie vor. Gibt es da einen früheren Event, an den ich mich hängen könnte? --Flominator 19:46, 13. Aug. 2011 (CEST)
Schnark hatte dir weiter oben schon mal geraten, DOMContentLoaded zu ersetzen: Es kann dann eigentlich nicht sein, dass du den Speichern-Knopf zu sehen bekommst, bevor er schon längst disabled ist. Es ist dann der frühestmögliche Zeitpunkt. DOMContentLoaded trifft vermutlich bei dir zu spät ein, wie ich deiner Bemerkung entnehme. Im Verlauf dieses Jahres komme ich allerdings allmählich etwas durcheinander, was die diversen Veränderungen in den verschiedenen Browser-Familien betreffend unterschiedichster Load-Ereignisse angeht. LG --PerfektesChaos 20:11, 13. Aug. 2011 (CEST)
Zu sehen kann er schon sein bevor die erste Zeile JS ausgeführt wird. Opera beispielsweise bietet die Option an, mit dem Seitenaufbau beim ersten eintreffenden Bit (übertrieben) zu beginnen und dynamisch weiterzuparsen. Drücken lassen sollte sich Speichern aber tatsächlich erst wenn das ganze Dokument geladen ist.
Ich hätte auch vorgeschlagen, einfach die aus-dem-Quelltext-entfernen-Funktion auf das Klick-Event des Speicherbuttons draufzuhängen (wie das Hinzufügen bei Vorschau und Änderungen). Ich bin mir jetzt aber nicht sicher wie Paradox das gemacht hat, zumindest mein „extendedVirtualReferences“ funktionierte so. Zumindest Fragen zum theoretischen Ablauf des virtualReferences kann ich aber schnell beantworten, ich habe das schonmal durchanalysiert :-) --Bergi 21:14, 13. Aug. 2011 (CEST)
Wie aus meinem bereits angegebenen Link „weiter oben“ hervorgeht, nutzt er allerdings nicht Opera; FF ist darauf wohl noch nicht gekommen.
Vielleicht könnte man allgemein eine Musterlösung BeforeSaveHook (sei sie nun anonym oder nicht) zur Verfügung stellen, die sich jeder nach common.js kopieren kann (besser kein import). LiquiThread lässt ja auch noch auf sich warten; insofern könnte man bei ungerader Namensraum-Nummer explizit mit window.confirm() bestätigen lassen, dass kein ~~~~ vorkommen soll, oder Reste von VirtualReferences seien vorhanden; oder die Zusammenfassung ist noch nicht zufriedenstellend ausgefüllt …
disabled ist jedenfalls eine methodisch unbefriedigende bis gefahrengeneigte Lösung.
Schönen Abend. --PerfektesChaos 21:48, 13. Aug. 2011 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 00:53, 23. Aug. 2012 (CEST)

Stockphoto.js auf Commons funktioniert nicht im Internet Explorer

Auf Commons gibt es ein JavaScript welches einem bei der Nachnutzung von Bildern hilft. Leider wurde es für den Internet Explorer geblockt, da das Skript vermutlich für IE-Crashes verantwortlich war: commons:Commons:Village pump/Archive/2011/03#Internet Explorer (IE) 8.0.6 and IE 7.0.6 crash. Hat jemand Lust nach der Ursache zu forschen und auf Commons für eine entsprechende Anpassung zu sorgen? Es kann natürlich auch schon sein, das die Änderungen seit dem 17. Februar unwissend ein Fix enthalten. Das Skript wird in der Vector.js eingebunden. Ich würde mich freuen. Vielen Dank. Der Umherirrende 20:09, 11. Dez. 2011 (CET)

Siehe dazu auch commons:MediaWiki_talk:Stockphoto.js#fix_or_disable_for_Internet_explorer._It_is_crashing_the_whole_browser. Falls diskutiert werden sollte: bitte in Commons in jenem Abschnitt - dort gehört die Diskussion hin, sonst findet man sie nicht. :-) Viele Grüße --Saibo (Δ) 22:32, 11. Dez. 2011 (CET)
Und wenn sich schon jemand die Mühe macht und das Script gründlich überarbeitet, sollte es flexibel verwendet werden können: Text der Bildbeschreibungsseite rein Objekt mit Symbolen und Captions raus. Das hätte den Vorteil, dass es etwa in der Slideshow auch funktioniert. Danke! -- RE rillke fragen? 01:02, 28. Dez. 2011 (CET)
Wie ich gerade festgestellt habe, funktioniert es jetzt auf Commons für IE (wenn auch nur IE>7, aber dürfte erstmal reichen). Vielen Dank Rillke. Der Umherirrende 21:15, 11. Sep. 2012 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: Der Umherirrende 21:15, 11. Sep. 2012 (CEST)

Beobachtungsliste

Wie kann ich die Beobachtungsliste durch ~luxo/gwatch/watchlist.php ersetzen? --Der Buckesfelder  Disk.  bewerten  Email 20:33, 8. Nov. 2011 (CET)

Was meinst du mit ersetzen? Du benutzt einfach erstere nicht mehr und letztere schon. Oder geht es dir darum, (alle?) Links auf die BEO zu ändern? Oder gar von der BEO-Seite automatisch weiterzuleiten (was ich nicht empfehlen würde)? -- Bergi 22:27, 8. Nov. 2011 (CET)
Ich würde gerne entweder direkt von der Beo weitergeleitet werden, oder gwatch wird direkt in die Beo geladen werden. --Buckesfelder  Disk.  bewerten  Email 07:18, 9. Nov. 2011 (CET)
Für ersteres würde ich mw.config.get('wgCanonicalSpecialPageName') == "Watchlist" als Bedingung und dann document.location.replace() verwenden. Allerdings verhinderst du dabei todsicher, ohne Ausschalten von JS auf deine Wikpedia-BEO zu kommen.
Direktes In-die-Seite laden geht mit Frames, so in etwa mw.util.content.html('<iframe src="luxo" />'); (Inlineframe). Hat aber selbiges Problem. -- Bergi 21:19, 9. Nov. 2011 (CET)
… so in etwa … ERROR function not found … mw.util.content.html() … suggestions: mw.util.$content or mw.html.element() … Viel Spaß, schaut spaßig aus, schönen Abend --PerfektesChaos 21:43, 9. Nov. 2011 (CET)
Äh, ja, natürlich $content. Irgendwas war mir da doch schon merkwürdig vorgekommen. Ist mw.html.element eigentlich wirklich nur dafür gedacht, innerHTML-Strings bereitzustellen? -- Bergi 22:14, 9. Nov. 2011 (CET)
Also – was sich da jemand gedacht hat? Das weiß ich auch nicht. Es scheint mir um Escaping zu gehen; ich wäre nicht auf die Idee gekommen, das als Bibliotheksfunktion zu vermarkten, aber irgendwer hat sowas wohl öfters für sich gebraucht und das als Utility bereitgestellt. Na dann … LG --PerfektesChaos 23:17, 9. Nov. 2011 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 21:39, 19. Sep. 2012 (CEST)

Idee: Lagewunsch.js

Ich stelle mir folgendes vor: Ein Tool in dem ich schnell den korrekten ISO 3166-2-Code zusammen mit {{Coordinate}} oder {{Lagewunsch}} im Artikel anfügen kann. Ich stelle mir das so vor: das Tool sollte in der ersten Auswahl DACH, Afrika, Amerika, Asien, Europa sowie Australien und Ozeanien anbieten. Nach der Auswahl entsprechend ein Bundesland oder ein anderer Staat. Nach einem "ok" wird das Edit-Fenster geöffnet und oberhalb von den Kategorien die Vorlage {{Coordinate|Region=DE-NW}} hinzugefügt. Nach der Möglichkeit weitere Korrekturen am Artikel vorzunehmen, kann der Artikel gespeichert werden. Also ein wenig Ähnlichkeit mit dem HotCat.

Abgebildet sollte dann als Auswahlfeld die Struktur, die sich in der Kategorie:ISO 3166-2 wiederfindet.

Wenn man es ganz geschickt programmiert, dann könnte vielleicht aus der Kategoriestruktur des Artikels schon "erahnt" werden um welchen Staat oder Bundesland es sich handelt. --Atamari 16:19, 18. Okt. 2011 (CEST)

Damit du nicht das Gefühl hast, du würdest hier einfach ignoriert: Der Programmieraufwand an sich ist überschaubar, aber die Menge an Daten, die das Skript kennen müsste ist riesig. Man bräuchte eine Variable von der Gestalt
{
 'DACH': {
  'Deutschland': {
   '*': 'DE',
   'Baden-Württemberg': 'DE-BW',
   'Bayern': 'DE-BY',
//... 13 weitere Einträge
   'Thüringen': 'DE-TH'
  },
  'Österreich': {
   '*': 'AT',
   'Burgenland': 'AT-1',
//... 8 weitere Einträge
  },
  'Schweiz': {
//... 27 Einträge
  }
 },
 'Europa': {
  'Albanien': {
   '*': 'AL',
   'Qark Berat': 'AL-01',
//... 46 weitere Einträge
   'Kreis Vlora': 'AL-VL'
  },
//... Einträge für alle weiteren europäischen Länder
 },
//... Einträge für alle weiteren Kontinente
 'Sonstiges': {
  'Atlantik': {
   '*': 'XA'
  },
//... 5 weitere Einträge
  'Orbit': {
   '*': 'XO'
  }
 }
}
Falls du nach dieser Antwort immer noch ein solches Skript willst, und dich bereit erklärst, das obige Schema komplett auszufüllen, denke ich nochmal darüber nach, ob ich den Code dazuliefere, der dann aus den Daten eine nette Auswahl macht. --Schnark 11:20, 22. Okt. 2011 (CEST)
Im Grunde genommen existiert irgend wo alles - es kann (vielleicht) nur nicht vernünftig abgegfragt werden. Das geht mal wieder in Richtung Metadaten. Als erstes wird eine "Übersetzungstabelle" (rund 200 Zeilen) gebraucht: Lemma des Staates vs. ISO-3166-2. Also : Gambia, Vorlage:Info ISO-3166-2:GM (ähnliches gibt es auch in Vorlage:Infobox Ort in Gambia/Region zu ISO Code). Ob nun alle Staaten und alle unteren Code, die Gebietseinheiten der Staaten im selben Script sein müssen weis ich nicht, evtl. könnte man das geschickt über mehrere Tabellen lösen.

Wir sollen das mal nicht als kurzfristige Idee ansehen, sondern als eine langfristige. Danke für die Antwort. --Atamari 13:28, 22. Okt. 2011 (CEST)

Ohne programmierend tätig werden zu wollen:
Hier scheint mir die Trennung von Programm und Daten dringend geboten zu sein.
  • Es sollte eine gesonderte und aktualisierbare Seite (ohne .js-Endung) geben, auf der die Inhalte durch alle Autoren gepflegt werden können:
    DE    Deutschland
    DE-BE Berlin
  • Der Inhalt der Daten-Seite wird, sobald das Skript ernsthaft aktiv werden soll, per API eingelesen. Der Inhalt könnte alternativ komplett in eine JS-Objektstruktur eingelesen werden, oder aber per RegExp ausgefiltert werden und Zeichenkette bleiben, soweit nicht benötigt.
  • JSON würde ich im Interesse der Allgemeinverständlicheit für Datenpfleger vermeiden und mich auf plain text beschränken.
  • Neben den Kodierungen für die Inhalte mögen die Datensätze auch die PopUp-Struktur abbilden, also beispielsweise
          0 -- DACH
          0 DE    Deutschland
          0 DE-BE Berlin
          0 AT    Österreich
          0 CH    Schweiz
          1 -- restliches Europa
          2 -- Amerika
          3 -- Afrika
Viel Spaß --PerfektesChaos 19:26, 22. Okt. 2011 (CEST)
Es gibt bereits eine Wiki-Datenstruktur, die hervorragend allgemeinverständlich formuliert ist (in Vorlagensyntax :-), und sie lässt sich auch relativ passabel aufrufen. Per API nehme man als generator categorymembers von Kategorie:Vorlage:ISO-3166-1-Code, und dann revison-content. Daraus lässt sich Kontinent, ISO-Code, Name und sogar Lemma ziehen. Sowie für die nächste Abfrage (prefixindex als Generator für "Unterseiten") hat man auch gleich noch maxlevel und admtype zur Verfügung. Die Möglichkeit, DACH statt Kontinent zu nehmen steht dann erstmal allerdings nicht zur Verfügung (könnte aber hineingehackt werden).
So richtig komfortabel wären nun halt Karten als Auswahl. In der deWP gibts vereinzelt Imagemaps, aus denen man die Geodaten ziehen könnte, viel geht da aber nicht. Müsste man eher von OSM importieren. Es gibt doch auch schon Tools, die das können (wikiGetCoordinate oder wie das hieß?), könnte man sich da nicht die entsprechenden Codeabschnitte ausborgen?
Das Skript lässt sich also in 3 Teile zerlegen: Daten(struktur)aufruf (kann ich dir bauen), GUI zur Eingabe (gibts da nich schon schöne Frameworks? Sonst kann ich dir was simples Schneidern), und Einfügen in den Artikel (Von textInsert in der Bearbeitenansicht bis zu HotCat-Luxus ist ein weiter Weg).
Zu deinem anderen Vorschlag, dem Erahnen des Landes aus den Kategorien: Umpfh. Wenn du mit Kategoriestruktur sowas wie Catgraph meinst, wüsste ich nicht wie man das (in einem Schritt) abrufen kann. Ich glaube allerdings sowieso, dass der Artikeltext mehr Aufschluss darüber geben würde. Und egal welche Daten vorliegen, müsste man immer noch eine komplizierte Fuzzy-Suche implementieren, die aus dem Auftreten von „Der See liegt im ivorischen Regenwald“ die Elfenbeinküste herausrechnen kann… Mit solchen Algorithmen kann man bei Google & Co richtig Geld verdienen, glaub ja nicht dass ich das unter CC stelle :-) -- Bergi 21:52, 22. Okt. 2011 (CEST)
Zu kompliziert muss und soll es auch nicht sein, der Idee soll es nur ein UI sein um ein nach Staat spezifizierter Lagewunsch zu setzen. Mit Hilfe von Karten wäre man schon nahe dran am setzten der richtigen Artikel-Koordinaten. Die kann aber vielleicht nur ein Ortskundiger finden. Also es gibt rund 200 Iso-Codes für die Staaten - die ich bislang noch nicht auswendig kenne. Die Idee ist, mit einem Tool spätestens nach drei Klicks + Ok zum Ergebnis zu kommen. --Atamari 22:04, 22. Okt. 2011 (CEST)

@Bergi: Du warst ja kürzlich heldenhaft in der {{Coordinate}} unterwegs und kennst dich da besser aus.

  • Daraus würde folgen: Hardcoded im Skript-PopUp den ersten Auswahl-Level (DE,AT,CH,Europa/sonst,Asien,…) anbieten.
  • Nachdem der Anwender hier geklickt hat, API-queries zum Auffüllen des zweiten Levels (ISO-3166-2 bei DACH, Länderauswahl im Kontinent sonst; DE,AT,CH mögen auch „doppelt“ im sonstigen Europa auftauchen) und live das Angebot auffüllen.
  • Nachdem im Non-DACH das Land ausgewählt wurde, mit erneuter query für dieses Land schauen, ob es dazu ISO-3166-2 gibt; sonst fertig.

Klingt pfiffig. Fein (Trennung von Programm und Daten). Sonnigen Sonntag --PerfektesChaos 09:28, 23. Okt. 2011 (CEST)

„Erahnen aus Kategorien“ wird kaum gehen. Da wir so pfiffig sind, systematisch die Oberkat aus den Artikeln zu löschen, steht da nicht „Ort in Hessen“, sondern „Ort im Landkreis X“, „Straße in Wien“ oder „Springbrunnen in Sachsen“.
Für die Benutzerführung wäre es auch schwieriger, zwei Level bereits aufgepoppt zu zeigen und sich die Mutmaßung bestätigen zu lassen (sowas verstehen nur die Progammierer), als die aktiv durch die Auswahl klicken zu lassen. Hinzu kommt, dass bei Fehleinschätzung völlige Verwirrung beim Anwender ausbricht.
Im vorgenannten Sinne --PerfektesChaos 09:37, 23. Okt. 2011 (CEST)

Ich habe jetzt eine funktionierende Version fertig, die aber auf meine (4) Bibliotheken aufbaut. Also nicht wirklich öffentlichkeitswirksam. Ich kann versuchen, die Bibliotheken rauszustückeln, das dauert aber und wird hässlich. Wenns nötig ist, kann ich euch die Stückelei als Userscript für FF/Opera anbieten. Allerdings merkt man schon beim Zufall-Testen, wie schlecht gewartet unsere Metadatenvorlagen sind. -- Bergi 22:39, 23. Okt. 2011 (CEST)


Seit einem Jahr keine Bewegung, lange Geschichte, erstmal keine Weiterentwicklung sichtbar; zur Entlastung archiviert. --PerfektesChaos 22:23, 9. Nov. 2012 (CET)

Archivierung dieses Abschnittes wurde gewünscht von: --PerfektesChaos 22:23, 9. Nov. 2012 (CET)

CSS/metadata

Hallo, ich hoffe ich bin auf dieser neuen Seite richtig, sonst bitte ich um Platzverweis ;) Wir nutzen in {{Denkmalliste Österreich Tabellenzeile}} die CSS-Klasse "metadata" aus der mediawiki:common.css um eine Spalte für den gemeinen Leser auszublenden... Leider dürfte die Mobile Version das nicht mitbekommen haben, dort sind die Metadaten immer eingeblendet (graue Spalte, zB hier). Könnt ihr helfen? LG --AleXXw •שלום!•disk 20:24, 12. Jul. 2011 (CEST)

Wobei, eine andere Lösung für die Vorlage zu finden oder mobile zu bestimmten CSS zu bewegen? Letzteres ist ziemlich unmöglich, das alte Python-Skript versteht/wartet eh kein Entwickler mehr und eine neue PHP-Version lässt auf sich warten.
Zu ersterem mal ein Denkansatz für eine (häßliche) Lösung: [7]. Funktioniert aber wohl nicht. --Bergi 21:49, 12. Jul. 2011 (CEST)
Zweiteres, es würde schon reichen die für mobile verwendete CSS richtigzustellen... Mit den anderen metadata verwendenden Vorlagen wie etwa PD gehts ja auch (Bsp) Was du mir mit den Variablen sagen willst weis ich jetzt nicht genau ;) --AleXXw •שלום!•disk 22:08, 12. Jul. 2011 (CEST)
Ihr könntet es mal mit der zusätzlichen Klasse "nomobile" probieren. Im Quelltext des Mobile-Parsers sind die weiteren Elemente aufgeführt, die aus dem Artikel entfernt werden. Gruß --P.Copp 22:44, 12. Jul. 2011 (CEST)
Danke, hat funktioniert... Das Problem ist dass in der Konfiguration nur "table.metadata" ausgeblendet wird, richtigerweise müsste ".metadata" stehen. Kann man das irgendwo melden? LG --AleXXw •שלום!•disk 23:12, 12. Jul. 2011 (CEST)
Danke für den Hinweis, P.Copp, ich habs sogleich gemeldet. @AleXXw: Die Frage ist nur, wann das mal umgesetzt wird. Das mit den Variablen war so gedacht, dass mobile doch vielleicht für {{SERVER}} was anderes ausgeben könnte… Leider haben die aber keinen eigenen Parser. --Bergi 12:07, 13. Jul. 2011 (CEST)
Nach Schnark könnte man hier über MediaWiki:Mobile.css etwas erreichen. Dürfte dann:
/* Metadaten (bspw. [[Wikipedia:Personendaten|Personendaten]]) */
.metadata {
	display: none;
}
table.metadata {
	border: 1px solid #aaa;
}
.metadata-label {
	color: #aaa;
}
sein, oder? Wiederholung zu Common.css unschön, scheint hier aber notwendig zu sein. Der Umherirrende 15:10, 16. Nov. 2012 (CET)
Da man die Metadaten in der mobilen Version doch vermutlich ohnehin nicht einblenden kann, wenn sie einmal ausgeblendet sind, sollte die erste Anweisung ausreichen. --Schnark 09:26, 17. Nov. 2012 (CET)
Okay, ich habe das entsprechend angelegt. Der Umherirrende 15:13, 17. Nov. 2012 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Der Umherirrende 15:13, 17. Nov. 2012 (CET)

Vorlagen im Editor

Gibt es eine Möglichkeit, um einige Kopiervorlagen (Wie Vorlage:Internetquelle) ausklappbar im Editor in die Urheberrechtsbox zu integrieren? --IWorld@ 21:47, 1. Sep. 2011 (CEST)

Ja, viele.
Die Frage hat vermutlich ähnliche Zielrichtung wie oben und weiter oben?
Editor kann auch Wikipedia:WikEd sein; dann en:User:Cacycle/wikEd_customization#Custom_buttons
Dann geht noch Wikipedia:Bookmarklets.
Siehe dazu auch /GUI.
HGZH --PerfektesChaos 22:16, 1. Sep. 2011 (CEST)
Es soll nur wie folgendes Script aussehen:
// Benutzer:Mcaviglia - www.mcaviglia.ch - Zeile bitte stehen Lassen

document.write('<script type="text/javascript" src="' + 'http://www.mcaviglia.ch/gmap/get_coor_js.asp?l=de"></script>'); mediaWiki.loader.load("https://toolserver.org/~netaction/wikitrust.js");

--IWorld@ 13:40, 2. Sep. 2011 (CEST)

Okay; habe ich jetzt grundsätzlich verstanden.
Du möchtest einen Knopf haben, und wenn du draufklickst, soll sich dieses Formular öffnen; du möchtest einen Ort etc. auswählen, klickst auf dem Formular auf, äh, irgendwohin; und dann soll sich die Vorlage in den aktuellen Artikel hineinschreiben?
Klingt machbar.
Ich muss dazu erstmal auf die Suche nach einer Bedienungsanleitung zu mcaviglia gehen; Weiteres kommt im Lauf des Wochenendes.
Offen bleibt die Frage: Sieht es auf deiner Bearbeitungsseite aus
Das wäre schon nötig, um zu gucken, wo ich dir das Knöpfchen dazubauen kann.
VG --PerfektesChaos 14:18, 2. Sep. 2011 (CEST)
Nein, ich will nur eine auflappbare Box im Urherrechtshinweiskasten haben, wo die Vorlage zum Kopieren bereit liegt. Am besten wie hier. (Die 1.) --IWorld@ 15:18, 2. Sep. 2011 (CEST)
  • Mit einer aufklappbaren Box müsstest du dich noch einige Wochen gedulden; in der nächsten Version unserer MediaWiki-Software wird etwas vorhanden sein, mit dem man solche Klappboxen realisieren kann.
  • Allerdings ist deine Vorstellung von Urherrechtshinweiskasten und Kopieren ziemlich ungewöhnlich. Normalerweise macht man das etwas anders:
    • Du stehst mit deinem Cursor irgendwo im Wikitext.
    • Auf der Werkzeugleiste hast du ein Knöpfchen, sagen wir mal, IQ – da klickst du drauf und bekommst die Kopiervorlage an der aktuellen Cursorposition in den Wikitext eingefügt; selbstverständlich gleich mit aktuellem ISO-Datum. Gern auch als IQk und IQv für Kurzfassung und Vollprogramm.
    • Das Ergebnis ist wohl das, was du erreichen möchtest, und lässt sich kurzfristiger umsetzen.
    • Deshalb fragte ich, welche Knöpfchen du bei dir siehst.

VG --PerfektesChaos 15:42, 2. Sep. 2011 (CEST)

(BK) Hast du schonmal den Vorlagenmeister (Einstellungen→Gadgets) ausprobiert? Der dürfte für so häufig verwendete Vorlagen wie Internetquelle sehr gut funktionieren.
Bloß eine Kopiervorlage in die Seite einzufügen ist schon fast zu einfach:
$(function() {
   var templates = [ "{{Internetquelle\n|Parameter...}}"/*, "weitere Vorlagen"*/ ];
   if (mw.config.get("wgAction") != "edit" && mw.config.get("wgAction") != "submit")
      return;
   mw.util.addCSS("#copy-paste > pre { float:left; }");
   $('#editpage-copywarn').before('<div id="copy-paste"><pre>'+templates.join('</pre><pre>')+'</pre><div class="visualClear"/></div>');
});
Die Variable templates ist dabei ein Array (Liste), das du mit mehreren Komma-separierten Strings (deinen Kopiervorlagen) füllen kannst. Jeder String wird von Hochkommata umgeben, Zeilenumbrüche schreibst du als \n. Solltest du die Kopiervorlagen wirklich in statt vor dem Copyrighthinweis haben wollen, so ersetze before durch prepend. Sollten dir die pre-Kästen nicht gefallen, kannst du ihnen neben dem float:left noch weitere CSS-Eigenschaften zuweisen, zum Beispiel keinen Rahmen. --Bergi 16:00, 2. Sep. 2011 (CEST)
Eigentlich ist es das, was ich suche. Mit der Klappversion muss ich mich dann halt noch gedulden. Danke für euere Hilfe! --IWorld@ 18:01, 2. Sep. 2011 (CEST)

Hier nach einem guten Jahr erstmal abgeschlossen; zahlreiche Möglichkeiten über Werkzeugleisten usw.

Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 14:16, 2. Dez. 2012 (CET)

mw-collapsible in Navileisten

Ich habe unter Vorlage Diskussion:Navigationsleiste/Archiv/1#Ein- und Ausklappen mal auf die Anfrage geantwortet, doch die neue Klasse mw-collapsible zu verwenden. Vielleicht fällt euch noch ein bisschen Senf zum Thema ein. -- Bergi 22:32, 12. Nov. 2011 (CET)

Archivierung dieses Abschnittes wurde gewünscht von: TMg 20:07, 10. Jan. 2013 (CET)

Dort werden CSS-Skills für eine Fehlerbehebung gesucht. Edit-Kommertar dazu „inserat: suche jemand, der sich ein wenig mit CSS auskennt und die Positionskarte fixt“ --Spischot 10:57, 29. Jul. 2011 (CEST)

Es sind schon genug Anfragen gestellt wurden, dass ichs gesehen habe (3×BEO) :-)
Wegen meiner Anwort dort: Wie erreicht man table[style]:not(.klasse){width:100% !important;} so, dass es auch Browser ohne not verstehen? --Bergi 14:56, 29. Jul. 2011 (CEST)
Hat diese Neuerung vielleicht etwas gebracht? --Leyo 17:12, 2. Aug. 2011 (CEST)
Nein, außer der Programmiersprache des Backends hat sich ja nichts geändert. --Bergi 11:30, 3. Aug. 2011 (CEST)
Laut Schnark könnte hier über MediaWiki:Mobile.css nachgeholfen werden. CSS-Vorschläge, die überall funktionieren? Der Umherirrende 15:12, 16. Nov. 2012 (CET)
Nach einem kurzen Blick in den CSS-Inspektor: Mit mobile.css allein wird das wohl doch nichts, da das Zeug in der Vorlage keinerlei Klassen hat, die man verwenden könnte. Mehr als auf die inzwischen unter Vorlage Diskussion:Positionskarte/Archiv/1#mobile-Version archivierte Diskussion verlinken kann ich nicht. --Schnark 09:40, 17. Nov. 2012 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: Heubergen (Diskussion) 09:27, 14. Jun. 2013 (CEST)

Commons-Annotations vs. ImageSiblings

Moin, hat jemand von euch eine Idee, warum man entweder importScript('MediaWiki:Gadget-ImageAnnotator.js'); oder das bereits als Gadget verfügbare ImageSiblings nutzen kann, nicht jedoch beide? (vgl. Disk) Danke, --Flominator 11:16, 17. Sep. 2011 (CEST)

Auch wenn ich mir den Code nicht genauer angesehen habe, kann man generell sagen, dass Funktionen die das Gleiche tun, sich selten ungestört vertragen (dabei sind Variablen oder DOM Konflikte außer Acht). Vor allem bei direkten Events-Auslöser werden Funktionen einfach überschrieben, was ich hier mal vermute. -- πϵρήλιο 22:13, 18. Sep. 2011 (CEST)
Was kann man dagegen tun? --Flominator 12:16, 1. Nov. 2011 (CET)

MediaWiki:Gadget-ImageAnnotator.js wurde hier abgebaut. --PerfektesChaos 01:37, 2. Jul. 2013 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 01:37, 2. Jul. 2013 (CEST)