Benutzer Diskussion:Se4598/isbnsuche.js
Mitte September 2013
[Quelltext bearbeiten]Hat mir gut gefallen; genau so würde ich mir sowas vorstellen. Well done.
- Als Projektname schlage ich vor:
booksourcesDirect
- Format: Ich hatte auf der Spezifikation zur Veranschaulichung und zur einfacheren Wikifizierung eine Aufzählungsliste angegeben; für die Realisierung wäre aber
<br />
günstiger, um weniger umgebenden Text zu verdecken und das Fly-out klein zu halten.- Kann man dem Hintergrund Opazität/Transparenz von 90/10 oder sowas geben?
- Könntest du mal als beta.wmflabs.org/wiki/Benutzer:Se4598/booksourcesDirect.js eine metastabile und nur selten aktualisierte Kopie anlegen? Ich würde sie gern den beiden damals anfragenden Benutzern zur Erprobung anempfehlen, und dem ISBN-Experten RonMeier.
- Ein
mw.libs.booksourcesDirect
ist ohnehin nicht sinnvoll zu vermeiden.- Nur dort wäre ein persistentes
.loaded
zu setzen, das Mehrfach-Initialisierung in der Seite unterbindet (man denke an UseLivePreview). - Um eine offene Benutzerkonfiguration wiederfindbar und strukturiert abzulegen, ist ein Anwendungsobjekt ohnehin Mittel der Wahl.
- Das mag (später mal) ergänzt werden um eine persistente Speicherung einiger Definitionen (kleiner Schalter) mittels API in den user preferences.
- Dazu muss dann erst ein weiteres tipsy aufpoppen, das ich über irgendein Zahnrad herbeihole. Das wäre nur über eine vorhandene ISBN verfügbar, in der ich im Modus Nicht-"fixedtarget" ein tipsy bekäme.
- Problem: Wie kann ich mir einen Konfigurationsdialog aufmachen, wenn ich jetzt gerade fixedtarget bin? Und wenn ich überhaupt keinen Artikel offen habe, in dem eine ISBN vorkommt?
- Ein Weg wäre, die Nummer des Namensraums zur Verzweigung zu nutzen. Für ≥0 kann es Disku oder Portal sein. Bei <0 braucht das Gadget nie zu suchen und es wäre der wgCanonicalSpecialPageName auf Preferences zu prüfen, und falls ja im Helferlein-Abschnitt
mw-htmlform-gadgets
keck vor der ersten Überschrift ein virtuelles Helferlein einzufügen und diesem das Link auf seinen aufpoppenden Konfigurationsdialog zu geben. Damit stünde er immer an gleicher Stelle zur Verfügung. Im tipsy an der ISBN kann dann per Zahnrad auf die Special:Preferences#mw-prefsection-gadgets in neuem Tab verwiesen werden. - Diese ganze Technologie der Preferences bedarf aber noch einer Woche des Nachdenkens und einiges Drüberschlafens. Ich plane derzeit ein Gadget nur für JS-Programmierer, das alle für sämtliche Anwendungen gleiche Funktionalität unterstützt:
- Speicherung per API
- Auslesen und Übertragen der kompakten Syntax in ein Objekt der Anwendungssnotation
- Einfügen auf Special:Preferences#mw-prefsection-gadgets
- Neue Überschrift, falls noch nicht vorhanden und Helferlein nicht gleichzeitig auf der Seite als Gadget definiert ist (sonst dort Unterpunkt)
- Listenpunkt für diese Anwendung
- Definition
- potenzielle Gadget-ID des Helferleins
- Angezeigter Name des Helferleins
- Seitenname der Helferlein-Doku
- Weitere Erläuterung des Helferleins (weiß der Opt-In-Benutzer aber ohnehin)
- Definition
- Menüfeld aufpoppen mit von der Anwendung spezifiziertem Inhalt
- Einfach definierbarer Dialog mit einem Array von Objekten, deren jedes einen Parameter beschreibt:
- Langname (Komponente in der umgebenden Anwendung; Rückgabe-Objekt)
- Kurzname (255 Bytes total)
- Datentyp (bewirkt checkbox, radio, input:text)
- noime (Standard)
- Angezeigter Name
- Weitere Erläuterungen (HTML)
- Vorgabewert für unbekannten Wert; Fallback: checkbox→false | radio→0 | text→""
- Radio-enum (Array mit Schlüsselwörtern)
- Text-Validierungsfunktion (auch für Gesamtlänge 255 Bytes)
- Aktuell gespeicherter Wert, automatisch aus
mw.user.options
ausgelesen. - Momentaner Wert im Dialog
- [Speichern] / [Cancel]
- [Speichern] bewirkte die escaped Konstruktion des Wertes + API.
- Um benutzerdefinierte Preferences zu ermöglichen, müsstest du dem
.using()
noch hinzufügen:'user.options'
- Wenn es Preferences gibt, würden die dort gesetzten Werte die Zuweisung der benutzerdefinierten Konfiguration im Anwendungsobjekt überschreiben; ansonsten diese (so vorhanden) den Startwert für den Dialog in Preferences bilden; ansonsten Voreinstellung des Gadget (Kaskade).
- Nur dort wäre ein persistentes
- URL-Definition:
- Ich empfehle, in den ersten Statements der Kapsel eine Komponente als Objekt zu definieren, in der Schlüsselwörtern die URL zugeordnet werden. Die können im Lauf der Zeit anwachsen; französisch, japanisch oder was immer. Wer in einem anderen Wiki dei Werk installiert, kann sich schnell was dazuschreiben.
{ "*wiki*": "/wiki/Booksources/$1",
"DNB": "https://portal.d-nb.de/opac.htm?referrer=Wikipedia&method=simpleSearch&query=$1",
"KVK": "http://www.ubka.uni-karlsruhe.de/kvk.html?SB=$1&kataloge=SWB&kataloge=GBV",
"LCCN": ...
"amazon.de": "http://www.amazon.de/s/url=search-alias%3Daps&field-keywords=$1"
}
- Das
$1
hat sich bewährt und ist vertraut; wenn mal in einer URL ein$
vorkomen sollte, kann man immer noch URL-encoden, und eine1
wird ja wohl nicht dahinter stehen.
- Das
- URL-Konfiguration:
- Standardmäßig wird für die Benutzer eine Leerzeichen-getrennte Zeichenkette mit den Schlüsselwörtern vorgegeben; diese werden in dieser Reihenfolge zur Auswahl vorgeschlagen. Projektsprachenabhängig; also deutschsprachige vs. standard-English mit
"*wiki* LCCN amazon.com"
usw. Ein kleines.split()
und fertig ist die Laube.- Im Anwendungsobjekt können die Anwender eine andere Leerzeichen-getrennte Zeichenkette konfigurieren.
- Eines Tages könnten sie sogar in den user preferences eine andere Leerzeichen-getrennte Zeichenkette benennen.
- Im Anwendungsobjekt können die Anwender eine andere Leerzeichen-getrennte Zeichenkette konfigurieren.
- Wenn du schon so gern mit
$.extend()
hantierst, kannst du ein möglicherweise benutzerdefiniertes.config.URLs
damit zusammenführen; dadurch können Benutzer weitere Schlüsselwörter und URL hinzufügen und sogar vorhandene URL umdefinieren. Für user preferences ist das nix; das sollte man lieber mit c&p für die common.js nachvollziehbar weitergeben können. linkmode
wäre nicht"fixedtarget"
, sondern entweder- false / undefined / null – Tipsy
- Genau ein Schlüsselwort aus der URL-Liste; dann zeigen die
.mw-magiclink-isbn
eben immer auf genau diese Domain.
- Die Schlüsselwörter sind dazu gedacht, auch gleich im Menü gezeigt zu werden.
- Standardmäßig wird für die Benutzer eine Leerzeichen-getrennte Zeichenkette mit den Schlüsselwörtern vorgegeben; diese werden in dieser Reihenfolge zur Auswahl vorgeschlagen. Projektsprachenabhängig; also deutschsprachige vs. standard-English mit
- Benutzerkonfiguration
- Für das Anwendungsobjekt bietet sich an, auf die Zwischen-Ebene mit
.config
oder.options
zu verzichten; das macht die Hierarchie flacher. Es gibt halt reservierte Schlüsselwörter, mit denen sich die Vorgaben überschreiben bzw. mergen lassen. Alle Vorgaben stehen erstmal simpel auf false / undefined / null.
- Für das Anwendungsobjekt bietet sich an, auf die Zwischen-Ebene mit
ID | Datentyp | Vorgabe | preferences | Bemerkung |
---|---|---|---|---|
manytabs |
boolean | false | ja | (.everytargetown) true: Jede Domain eigenes; false: Alle in demselben |
closeonclick |
boolean | false | ja | |
linkmode |
boolean | false | ja | Schlüsselwort→Linkumlenkung; false→Menü |
select |
string | [[*]] DNB KVK amazon.de |
ja | Sprachabhängig |
URLs |
Objekt | built-in | nein |
- UseLivePreview usw.
- Die Funktion „Seite ausstatten“ müsste API-fähig mehrfach ausführbar sein, über mw.hook nach jeder Vorschau neu. Das Event ist mir noch nicht so ganz klar; es scheint so zu sein, dass "wikipage.content" auch bei der LivePreview neu ausgelöst würde. Siehe auch VE.
- Die Initialisierung ist hingegen schon gelaufen.
- Du kannst von
$(document).ready
wechseln zu JS#mw.hook und hast dann auch mw.util im Boot und kannst ab mw.util.$content anfangen nach ISBN zu suchen.
- Internationalisierungsfragen
- Wenn etwas mit
a.mw-magiclink-isbn
klassifiziert ist, kann das nur die URL der Spezialseite sein.- Dementsprechend würde ich den RegExp wählen zu
/\/wiki\/[^:\/]+:[^\/]+\/([0-9]+[xX]?)$/
- Das kann nur irgendeine Spezialseite in irgendeiner Sprache sein.
- Wenn das trotz
.mw-magiclink-isbn
nicht greifen sollte, kann das eigentlich nicht sein. Interne Fehlermeldung, und es pasiert halt nix.
- Dementsprechend würde ich den RegExp wählen zu
*wiki*
spart Gehampel bei der Übersetzung vonSpezialseite
. Könnte auch ein einzelnes*
sein; oder***
oder[*]
oder[[*]]
oder sowas.
- Wenn etwas mit
- Feature: Test auf korrekte ISBN
- Länge 10 oder 13 braucht nicht abgeprüft werden; magic generiert sonst kein Link.
- X nur am Ende und nur bei ISBN-10 braucht auch nicht geprüft werden.
- ISBN-13 beginnend nur mit 978 oder 979 hatte magic bereits gecheckt.
- Man könnte auf Verletzung der Prüfziffer kontrollieren. Es gibt Bücher, bei denen der Verlag sich beim früher manuellen Ausrechnen der Prüfziffer vertan hatte und eine fehlerhafte Prüfziffer in das Buch gedruckt hatte; sie sind deshalb auch unter der falschen ISBN in Datenbanken auffindbar.
- Die falsche Prüfziffer könnte trotzdem durch einen roten Rahmen 2px um das <a> des Wiki-HTML signalisiert werden.
- Ein Quellcode steht unter
WSTM.util.isbn.faith
in en:User:PerfektesChaos/js/WikiSyntaxTextMod/dU.js (kann aus der dortigen Umgebung noch stark gekürzt werden).
- Geschwindigkeitsoptimierung
- Zurzeit wird beim Aufbau jede URL mit einem aufgebauten Dingens ausgestattet. Das ist für die ersten Gehversuche auch völlig okay.
- Später könnte man bei Nicht-"fixedtarget" als Erstausstattung eine Initialisierungsfunktion setzen. Wird sie angeklickt, baut sie das PopUp und weist es zu und entfernt sich dafür selbst.
- Nur in Ansicht und Vorschau kann es das geben; nicht auf history und diffpage. Kann man noch auseinanderfummeln.
Liebe Grüße --PerfektesChaos (Diskussion) 19:12, 15. Sep. 2013 (CEST)
- Projektname: OK
<br />
OK- Opazität müsste gehen, steht in der tipsy-Doku.
- stabile Version kommt auf de.wikipedia.org, aber nachdem wir noch die eine grundsätzliche Designfrage geklärt haben
- Ein mw.libs-Objekt kommt natürlich, Name ist ja jetz klar.
.loaded
braucht man das? Evtl. brauch ich eher ein Marker, dass sich z.B. beim LivePreview ich mich nicht doppelt an ein Link binde, insbesondere wenn nicht der komplette Inhalt ausgetauscht wird (neues a-Element).- user.prefences ist zurzeit unwichtig und ist auf der langen Bank, Gründe haben wir ja dargelegt.
- Die Begrenzung auf diese 255 Zeichen gilt ja wie Umherirrender und die Doku sacht nur für den Schlüssel, Value ist theoretisch unbegrenzt groß.
- Du möchtest ein Objekt mit Displayname als Key und URL als Value. Ich habe mich für eine Funktion entschieden, die (DESIGNFRAGE) entweder wie zur zeit eben ein 2-dimensional-Array der Angaben rückgibt oder eben so ein Objekt wie du es dir vorstellt mit Key-Value-Paaren.
- Eine Funktion habe ich deshalb gewählt weil sie nicht für den User komplizierter als das direkte (Return-)Objekt/Array ist, dafür aber eine höhere Flexibilität bietet.
- Ein Array hat den Vorteil, dass die Reihenfolge durch das Array vorgegeben ist und es so keine separaten Reihenfolge-Einstellung geben muss
- Ein "select" ist auch überflüssig (wenn dann ja sowieso mit einem Objekt und nicht Array umzusetzen), da der User durch seine definierte Funktion es schon bestimmt.
- Ich gehe davon aus, dass jeder Benutzer sowieso das Skript konfiguriert, Defaultvalues im Skript selber sind nur eine Art Proof of Concept
- Die Doku kann eine voll ausgestattete (mit allen Bibliotheken) Funktion inklusive restlicher Config haben, aus der sich der User alles überflüssige wegstreicht (Zeilen löschen) und selbst die Links sich in die gewünschte Reihenfolge sortiert.
- Eine Zusammenführung mit einem ".config.URLs" ist überflüssig bzw. nicht der gewünschte Weg, siehe vorstehend.
- "linkmode" habe ich mir aus einem zukünftigen, mir aber noch nicht wirklich bekannten Grund offen gelassen, ein Schlüsselwort für die Auswahl aus den URL würde wahrscheinlich gehen, dafür habe ich aber jetzt noch die andere Einstellung, wo es der Benutzer einstellen kann.
- Wie die Defaulteinstellungen aussehen ist mir unklar bzw. nicht so wichtig, da ich davon ausgehe, da ja eine Konfiguration sowieso von nöten ist, eine vollständige Config vom User kopiert und angepasst wird.
- LivePreview:
- mw.hook kann ich nutzen OK, offene Frage zum LivePreview oben unter dem .loaded-Punkt
- Int:
- RegExp OK, kann ich anpassen, hatte vorher ja was mit .split('/'), was ja auch funktioniert, nur der Wert kann alles sein, wenn jemand .mw-magiclink-isbn faket.
- mit
*wiki*
meinst du bestimmt das in dem "select", fällt ja wie oben dargestellt weg.
- Feature: Test auf korrekte ISBN
- Ist in der Form wie dir dargestellt mMn. separat, also überall implementierbar.
- Geschwindigkeitsoptimierung
- Wo auf welchen Seiten ich suchen brauche, würde sich ja einschränken lassen, müsste ja view, edit und submit sein.
- Bring es das wirklich wenn, ich statt tipsy-Optionen setze und auf Klick binden, erst auf einen Klick binde und dann die Optionen setze (Ich meine mehrfaches setzen dieser würde sogar gehen)?
Ich hoffe, ich hab alle Punkte beantwortet. Bevor wir es den Betatestern überlassen, würde ich doch gerne geklärt haben, wie die URLs konfiguriert werden: Objekt oder Array, direkt oder Funktion. Ich bin wie es jetzt ist für Array aus Funktion, weil es die größtmögliche Flexibiliät (in der Funktion) bringt, ohne komplexer als eine direkte Schreibweise von einem Array/Objekt zu sein und das Array eine zusätzliche Variable, was man wie in welche Reihenfolge darstellt, überflüssig macht. User muss sich halt ein Block mit den URLs reinkopieren, statt sich mit einer Reihenfolge- und Auswahl-Var zu arbeiten, wobei er auch die URLs direkt und einfach manipulieren kann, um zusätzliche Suchoptionen der Zielseite einzustellen.--se4598 (Diskussion) 21:27, 15. Sep. 2013 (CEST)
- user.prefences nicht dringend, aber vorweg zum (fast) Abhaken:
- Die erlaubte Länge, und ob es JS überhaupt erlaubt sein soll, wurde auf Bugzilla und mw: öfters diskutiert. Dabei hieß es auch, dass die Länge beschränkt sein soll. Ich traue dem Zickzack nicht.
- mw:API:Options#Changing options schreibt: “There are currently no hard limits on the length or contents of the value” – liest sich nicht grad wie eine Ewigkeitsgarantie. Für den Gadget-Modus möchte ich mich auf 255 beschränken und auch einen übersichtlichen String verwenden. Eine .put() und .get() habe ich dabei auch vorgesehen, aber nicht für eine interaktive Gadget-Konfiguration und dann auch mit JSON im Fall von Objekten (darunter Array).
- URL per Schlüsselwort und Objekt:
- „Ich gehe davon aus, dass jeder Benutzer sowieso das Skript konfiguriert“ – User, die verschärft Literatur- und Bibliotheksrecherchen betreiben, sind Germanisten und Bibliothekare und Historiker und meiner Erfahrung nach das genaue Gegenteil von Programmierern. Mit einer Benutzerdefinition von URL in einem Array von Arrays sähe ich sie deutlich überfordert; ich habe die Erfahrung mit den Anwendern meiner ähnlich komplexen Gadget-Konfigurationen.
- Deshalb mein Wunsch einer Leerzeichen-getrennten Auflistung der Schlüsselwörter in einer simplen Zeichenkette.
- Wie definiert sich ein Benutzer die Situation einer portugiesischen Bibliothek mit etwas wie:
- ['KVK','http://www.ubka.uni-karlsruhe.de/kvk.html?SB='+isbn+'&kataloge=SWB&kataloge=GBV']
- Im Lauf der Zeit würde das Gadget 20 oder 30 weltweite URL erlernen; das heißt, Benutzer wären seltener und nur vorübergehend in der Situation, eine URL selbst definieren zu müssen.
- Dafür haben sie die Notwendigkeit, nach der jeweiligen Sach- und Sprachkunde aus den 30 URL die 5 auszuwählen, die für sie wichtig sind, und sie in die gewünschte Reihenfolge zu bringen.
- Eine Zeichenkette mit einer Aufzählung von Schlüsselwörtern geht auch auf den zurückgestellten user.prefences übersichtlich einzugeben. – Eine Options-Liste mit allen Schlüsselwörtern mit Bubble- aufsteigend und abwählen ist mir zu viel. Höchstens eine multicheck-Liste ohne Sortierung.
- Die Doku kann eine voll ausgestattete (mit allen Bibliotheken) Funktion inklusive restlicher Config haben, aus der sich der User alles überflüssige wegstreicht (Zeilen löschen) und selbst die Links sich in die gewünschte Reihenfolge sortiert. – Sorry, aber das kannste knicken. Das packen die nicht, und eine Auflistung eines Arrays von zwei Dutzend Arrays ewiglanger URL geht über eine Bildschirmseite und ist abschreckend. Was garantiert schiefläuft, ist, dass derjenige, der die letzten 20 URL wegstreicht, dann aber daran denken muss, beim nunmehr letzten Array-in-Array auch das Komma wegzunehmen, weil sonst der Browser einen JS-Syntaxfehler sieht und nix macht. Oder dummerweise der letzte Eintrag soll aber als dritter erscheinen; da muss jetzt aber noch ein Komma nachgetragen werden, und dafür das ganz hinten weggenommen. Das hatte ich regelmäßig bei den WSTM-Ersetzungsregeln mit jedem Anwender außer Schnark, bis das allmählich kapiert wurde.
- „Ich gehe davon aus, dass jeder Benutzer sowieso das Skript konfiguriert“ – User, die verschärft Literatur- und Bibliotheksrecherchen betreiben, sind Germanisten und Bibliothekare und Historiker und meiner Erfahrung nach das genaue Gegenteil von Programmierern. Mit einer Benutzerdefinition von URL in einem Array von Arrays sähe ich sie deutlich überfordert; ich habe die Erfahrung mit den Anwendern meiner ähnlich komplexen Gadget-Konfigurationen.
- „da ja eine Konfiguration sowieso von nöten ist, eine vollständige Config vom User kopiert und angepasst wird.“
- Und ich gehe davon aus, dass es ausreicht, das JS zu laden, vielleicht nur als Gadget anzukreuen; und dann sind für ein deutschsprachiges Wiki-Projekt schon nutzbare Grundeinstellungen (Spezialseite, DNB, KVK, LCCN) beisammen. Desgleichen für ein englischsprachiges Wiki (gleich alle unbekannten Sprachen), die haben dann eben mehr mit LCCN und British Library und amazon.com.
- LivePreview tauscht den gesamten HTML-Code des Content-Bereichs aus; aber die Initialisierung mit Benutzerkonfiguration ist immer noch vorhanden und soll nicht erneut ausgeführt werden.
- loaded:
- Es könnte auch dazu kommen, dass Benutzer noch ein mw.load() und gleichzeitig schon ein Gadget-Häkchen gesetzt haben. Du hattest mich kürzlich gefragt, was passiert, wenn WSTM zweimal geladen wird. Nix.
- Der Regelfall ist, dass Benutzer sich eine HTML-Seite angucken, ohne für jede ISBN eine Recherche anzustellen.
- Deshalb würde es ausreichen, das Menü erst in dem Moment zu generieren, wenn tatsächlich Interesse an einer ISBN vorliegt, und erstmal nur überall die Menügenerierungsfunktion zuzuweisen.
- Stabil natürlich auf wikipedia.org, aber metastabil und unkonfigurierbar und undokumentiert als Schnupperversion kann ruhig im kleinen Kreis erprobt werden, und frühzeitig einige Anregungen durch drei wirkliche Endbenutzer liefern.
- user.prefences nicht dringend, aber vorweg zum (fast) Abhaken:
So, jetzt I GOTO :bed
– schlaf du auch gut --PerfektesChaos (Diskussion) 01:23, 16. Sep. 2013 (CEST)
preferencesGadgetOptions
[Quelltext bearbeiten]Füge doch mal den nachstehenden Code (freihändig ungetestet) sinngemäß ein:
gagaGadgetForm = function () {
var dialog = {
script: "booksourcesDirect",
show: "ISBN-Suche",
support: "/wiki/User_Talk:Se4598/isbnsuche.js",
suffix: "Direkte Links auf Bibliotheken",
opts: [ { signature: "manytabs",
type: "checkbox",
show: "Jede Domain eigenen Tab (Fenster)",
val: false
},
{ signature: "closeonclick",
type: "checkbox",
show: "Bei Klick Auswahlmenü schließen",
val: false
},
{ signature: "linkmode",
type: "text",
val: "",
show: "ISBN-Link auf andere URL umlenken",
suffix: "Leer für Auswahlmenü",
minimum: 9,
maxlength: 20
},
{ signature: "select",
type: "text",
val: "[[*]] DNB KVK amazon.de",
show: "Auswahl an Datenquellen",
suffix: "(in Reihenfolge)",
minimum: 20,
maxlength: 100
}
]
};
mw.libs.preferencesGadgetOptions.form( dialog );
};
gagaGadget = function () {
if ( mw.config.get( "wgCanonicalSpecialPageName" ) === "Gadgets" ) {
gagaGadgetForm();
} else {
console.dir( mw.libs.preferencesGadgetOptions.fetch() );
}
};
if ( ! mw.loader.getState( "ext.gadget.preferencesGadgetOptions" ) ) {
mw.loader.implement( "ext.gadget.preferencesGadgetOptions",
[ "//de.wikipedia.beta.wmflabs.org"
+ "/w/index.php?title="
+ "User:PerfektesChaos/js/"
+ "preferencesGadgetOptions"
+ ".js"
+ "&action=raw&ctype=text/javascript"
+ "&maxage=10000" ],
{ },
{ } );
}
mw.loader.using( [ "user.options",
"ext.gadget.preferencesGadgetOptions" ],
gagaGadget );
Liebe Grüße --PerfektesChaos (Diskussion) 21:24, 19. Sep. 2013 (CEST)
Ende September
[Quelltext bearbeiten]- umseitig aktualisiert:
- dein preferencesGadgetOptions unten als Dummy rein
- schön geworden, aber natürlich gleich mal etwas schon angepasst
- Tipsy-wrapper, der nichts tut und sich selbst hoffentlich entfernen kann, gibts jetzt
- Opazität mit 90%: find ich aber nicht so schön
- mw.libs.booksourcesDirect ist das neue Konfigurationsobjekt, in das ich begrenzt auch zurückschreibe
- loaded-Variable
- mw.hook("wikipage.content").add(...): mal schaun, wie das jetzt wird, im Editiermodus habe ichs noch nicht probiert.
- CSS-Klassennamen an neuen Namen angepasst
- Zeilenumbrüche statt unnummerierte Liste
- RegExp angepasst
- Funktionen in der config angepasst und selbst nur noch für Poweruser dahinvegetierend. Arbeiten nun als Adapter, um folgende neue Konfigurationsvariablen zu verarbeiten:
- libraries: als Objekt
- Das müsste auch benutzerdefinierte Erweiterungen schon aufnehmen
- selectedlibraries: als String mit split, wobei ich das Leerzeichen gerade nicht so mag, vielleicht wäre ein Komma besser
- fixedlibrary: als String
- libraries: als Objekt
- ja, Amazon und alles andere ist nun eine Bibliothek
- ... und alles, was ich vergessen habe
- dein preferencesGadgetOptions unten als Dummy rein
- wie gewünscht metastabil unter Benutzer:Se4598/booksourcesDirect.js
- alle vorstehenden Änderungen ohne die funktionslosen Gadget-Einstellung
Liebe Grüße --se4598 (Diskussion) 15:28, 23. Sep. 2013 (CEST)
- Fein, wird aber noch dauern, bis ich das quellcodemäßig alles verdaut habe.
- Zurzeit schreibe ich an der denglischen Doku meines jüngsten Babys. Schwanger ging ich schon seit Monaten, du hast mir den Rest gegeben.
- Damit wird vielleicht auch klarer, was man mit dem Ding so alles anstellen kann.
- Den JS-Code habe ich inzwischen ausgebaut; aber noch nicht durchgetestet. Die Doku ist teilweise in der Funktionalität der hier hochgeladenen einstweilen stabilen Version etwas voraus; muss meine Festplatte mal verifizieren.
- Das metastabile Link werde ich im Lauf der Woche mal den drei Testkunden zur 3M vorsetzen.
- Bis bald --PerfektesChaos (Diskussion) 20:14, 23. Sep. 2013 (CEST)
- Ich weiß nicht, ob du es schon gemerkt hast, aber auf Special:Gadgets bist du bereits angekommen. Wenn der hellblaue Button etwas mickrig aussehen sollte, liegt das am dösigen PNG hier auf Beta. Trotzdem draufklicken.
- Jetzt nur noch Benutzer:PerfektesChaos/js/preferencesGadgetOptions #.fetch() mit den assume-Vorgaben füttern, und es sollte wirken.
- Bis dann --PerfektesChaos (Diskussion) 20:49, 23. Sep. 2013 (CEST)
- Ich weiß nicht, ob du es schon gemerkt hast, aber auf Special:Gadgets bist du bereits angekommen. Wenn der hellblaue Button etwas mickrig aussehen sollte, liegt das am dösigen PNG hier auf Beta. Trotzdem draufklicken.
Anfang Oktober
[Quelltext bearbeiten]Hi,
- die einen Abschnitt zuvor genannte URL wird gerade gelöscht.
- Nachfolger ist: echt live
- Die Tool-URL ist anzupassen auf die echte enWP; das hiesige Beta wird danach gelöscht.
Viel Spaß beim Anpassen der Optionen mit PREGO.fetch() --PerfektesChaos (Diskussion) 19:27, 1. Okt. 2013 (CEST)
- Die Testbenutzer werden zertifizierungstechnisch Probleme mit dem Laden aus wmflabs.org haben: Wird das Skript als https in mw.load gepackt, fehlt das Zertifikat; steht es als http, dann meckert die umgebende Wiki-Seite, die heutzutage immer unter https läuft.
- Ich habe deshalb eine Raubkopie angelegt:
- Bis dann --PerfektesChaos (Diskussion) 20:53, 2. Okt. 2013 (CEST)
- Es gibt weitere Begehrlichkeiten.
- Man könnte (Default: immer=Opt-Out, oder per Opt-In) als letzte Zeile eine nicht anklickbare Zeichenkette anzeigen, die die formatierte ISBN wiedergibt.
- Du kennst den dargestellten Inhalt des Links. Wenn dieser identisch ist mit der von mir formatierten Zeichenkette, kann die zusätzliche Darstellung entfallen.
- Die formatierte Version könnte sich auf ausdrücklichen Wunsch wahrscheinlich immer in das clipboard schreiben?
- Wenn die Prüfsumme nicht stimmt, könnte gleich in Rot ein ungültig stehen.
- Ich bereite eine isbnLib vor, die drei oder vier entsprechende API-Funktionen enthält.
- Die isbnLib nutzt die erprobten WSTM-Standards.
- Mein erster Test-User hatte gleich einen weiteren Wunsch:
- Er korrigiert ISBN-13, die bei Veröffentlichung vor 2007 angegeben sind, und ISBN-10, die gelegentlich nach 2007 herumgeistern.
- Dafür muss er im Moment immer in der DNB nach dem Gegenstück suchen.
- Es könnte bei dir ein Opt-In geben, das immer die formatierte vorgefundene Version (ISBN-13 bzw. ISBN-10) darstellt und dazu das Gegenstück (ISBN-10 bzw. ISBN-13); oder nix wenn ungültig.
- Das wäre dann von mir als API-Funktion bereitgestellt.
- Man könnte (Default: immer=Opt-Out, oder per Opt-In) als letzte Zeile eine nicht anklickbare Zeichenkette anzeigen, die die formatierte ISBN wiedergibt.
- Nett wäre für die nächsten beiden Test-User ein //test.wikipedia.org/wiki/User:Se4598/booksourcesDirect.js
- Schnen Feiertag, Brückentag, Wochenende --PerfektesChaos (Diskussion) 11:53, 3. Okt. 2013 (CEST)
- Es gibt weitere Begehrlichkeiten.
- Organisatorische Arbeiten am Feiertag *yay*, anyways das hab ich gerade gemacht
- https://de.wikipedia.org/wiki/Benutzer:Se4598/booksourcesDirect.js
- Die URL für die Einstellung ist auf enwiki umgestellt
- config.links darf jetzt (hier umseitig) auch ein 1-Element-Array-Element enthalten, voll mit HTML
- Für dich zum Testen deiner Sachen ergäbe sich dann, um dir unten die eine Zeile anzuhängen:
- Organisatorische Arbeiten am Feiertag *yay*, anyways das hab ich gerade gemacht
mw.libs.booksourcesDirect.links = function (isbn){
var ret = [];
var selLibs = config.selectedlibraries.split(' ');
for(var i = 0, l = selLibs.length; i < l; i++){
var val = config.libraries[selLibs[i]];
if(val === undefined){
ret.push(['!!!unknown library: '+selLibs[i]+'!!!', '/wiki/Special:Booksources/'+isbn]);
} else {
ret.push([selLibs[i], val.replace(/\$1/g,isbn)]);
}
}
/* Dein Code hier */
var isbnanzeige = 'BlaBlub '+isbn+' <span style="color:red">Ungültig</span>';
ret.push([isbnanzeige]);
return ret;
},
- (ungetestet, falls 'config' unbekannt sein sollte, durch 'mw.libs.booksourcesDirect' ersetzen). Jetzt erstmal ner Nachbarin den Drucker reparieren. Grüße --se4598 (Diskussion) 17:24, 3. Okt. 2013 (CEST)
- Mach mal bei der Nachbarin alles klar.
- Ich buddel mich durch und gebe die neue URL an zwei weitere Test-User weiter.
- Bis dann --PerfektesChaos (Diskussion) 21:35, 3. Okt. 2013 (CEST)
- Doku fertig, noch keine Zeile Quellcode. Muss erstmal WSTM aufrüsten.
- Schönes Wochenende --PerfektesChaos (Diskussion) 21:28, 4. Okt. 2013 (CEST)
- Im WikEd sind im Bearbeitungsfenster die ISBN verlinkt, jedoch per Special:BookSources/ in der URL.
- Das Scan-Muster sollte alternativ die URL auf wikinesisch und in der Landessprache des Projekts finden können.
- Schönes Wochenende einmal wieder --PerfektesChaos (Diskussion) 14:21, 12. Okt. 2013 (CEST)
- Das macht aber WikEd, nicht ich (bestimmt meintest du das auch). Das Scanmuster ist dein universelles. Meinst du, ich sollte mich irgendwie über die Klasse ".wikEdISBN" reinhängen und somit auch ein Popup im Editierfenster haben? Könnte mir vorstellen, dass ich da eventuell mit den Clickhandlern (allgemein und von wikEd) Probleme bekommen werde. Zudem habe ich noch nie ausprobiert, ob und wie etwas in einem iframe anders ist. --se4598 (Diskussion) 19:29, 15. Nov. 2013 (CET)