MediaWiki:Skin/Adventure/Stateful.js
aus Kamelopedia, der wüsten Enzyklopädie
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
/** * Stellt Statusfeatures für das Adventure bereit (noch experimentell). * * URL-Parameter, die mit "_adv_" anfangen, werden per Javascript quer durchs Adventure mitgeschleift, * solange bis sie auf leer gesetzt werden. * Wie alle URL-Parameter können sie mit #arg ausgelesenen und verarbeitet werden. * * Okay, jetzt nochmal, was soll das alles? * * - Klassisches Weiterschreiben: Link auf einer Seite ergänzen oder ähnliche Seite erstellen * - ermöglicht neue Handlungen direkt vor Ort * - Handlungen beeinflussen Situation nur direkt vor Ort * * - Weiterschreiben mit Statusfeatures: Statusparameter an Links anfügen * - ermöglicht neue Handlungen an anderen Orten * - Handlungen beeinflussen Situation beliebigen Orten * * Statusparameter-Links sehen so aus: * [http://kamelopedia.mormo.org/index.php/Projekt:Adventure/x?_adv_k=v] * (ersetze: x -> Zielseitennummer, k -> Key, v -> Value; zum Leersetzen v einfach weglassen) * * Abfrage: * {{#arg:_adv_k}} * (ersetze: k -> Key) * * Todo: * - Übersichtsseite über verwendete Statusfeatures / Keys (für Autoren, zur Kollisionsvermeidung) * * Bekannte Bugs: * - Tod führt nicht zu einem Reset der Stati */ function UrlArgs(url, advOnly){ this.args = {}; this.update = function(args) { for (var i in args) if (args[i] == "") delete this.args[i]; else this.args[i] = args[i]; } this.serialize = function(){ var s = ""; for (var i in this.args) s += "&" + i + "=" + this.args[i]; return s.substr(1); } this.keep = function() { var other = new UrlArgs(location.href, true); other.update(this.args); var s = other.serialize(); return this.base + (s ? "?"+s : "") + this.anchor; } this.base = /^[^?#]+/.exec(url)[0]; var anchor = /#(.+)/.exec(url); if (anchor == null) this.anchor = ""; else this.anchor = anchor[0]; var script = /\?([^#]+)/.exec(url); if (script == null) return; var pairs = script[1].split("&"); for (var i in pairs) { var kvs = pairs[i].split("="); if (kvs.length > 1 && (!advOnly || kvs[0].substr(0,1) == "_")) this.args[kvs[0]] = kvs[1]; } } function keepState(link) { link.href = new UrlArgs(link.href).keep(); } addOnloadHook(function () { $('#bodyContent a[href*="Adventure/"]').not(".new").each(function (a,b) { keepState(b); }); });