Widget:A2Event: Unterschied zwischen den Versionen
J* (Diskussion | Beiträge) |
J* (Diskussion | Beiträge) |
||
Zeile 2: | Zeile 2: | ||
function wait4a2 (f){ | function wait4a2 (f){ | ||
− | + | if (window.a2 && window.a2.parser) { | |
− | + | f(); | |
− | + | } else { | |
− | + | if (window.importJS) { | |
− | + | importJS("MediaWiki:Skin/Projekt:Adventure2/lib.js"); | |
− | + | importJS("MediaWiki:Skin/Projekt:Adventure2/parser.js"); | |
− | + | } | |
− | + | window.setTimeout(function() { wait4a2(f); }, 100); | |
− | + | } | |
} | } | ||
$(function () { | $(function () { | ||
− | + | wait4a2(function () { | |
− | + | ||
− | + | var text = "<!--{$event|escape:'javascript'}-->"; | |
− | + | var list = window.a2.parser.parse(text); | |
− | + | var error = ""; | |
− | + | ||
− | + | try { | |
− | + | var event = window.a2.parser.parse("<!--{$event|escape:'javascript'}-->"); | |
− | + | } catch (e) { | |
− | + | var error = "Line " + e.line + ", Column " + e.column + ": " + e.message; | |
− | + | } | |
− | + | ||
− | + | if ("<!--{$action|escape:'javascript'}-->" != "render"){ | |
− | + | $pre = $("<pr"+"e/>"); | |
− | + | var lines = text.split("\n"); | |
− | + | for (var i=0; i<lines.length; i++) { | |
− | + | prefix = String(i); | |
− | + | while (prefix.length < 3) | |
− | + | prefix = " "+prefix; | |
− | + | ||
− | + | var lineText = document.createTextNode(prefix + ": " + lines[i]); | |
− | + | if (i==e.line){ | |
− | + | var $node = $('<span style="color: red;" />').append(lineText); | |
− | + | $node.append("<br/>").append(document.createTextNode(error)); | |
− | + | } else { | |
+ | var $node = $(lineText) | ||
+ | } | ||
+ | $pre.append($node); | ||
+ | } | ||
+ | |||
+ | if ($("#wikiPreview").length) | ||
+ | $cont = $("#wikiPreview"); | ||
+ | else | ||
+ | $cont = $("#bodyContent"); | ||
+ | |||
+ | $cont.append($pre); | ||
+ | |||
+ | return; | ||
+ | } | ||
+ | |||
+ | if (error) | ||
+ | return; | ||
+ | |||
+ | for (var i=0; i<list.length; i++) { | ||
+ | |||
+ | var type = list[i][0]; | ||
+ | var data = list[i][1]; | ||
+ | |||
+ | if (type == "event"){ | ||
+ | a2.registerEventHandler(data); | ||
+ | } else { | ||
+ | //FIXME: not yet implemented: declarations for item, page | ||
+ | } | ||
+ | } | ||
+ | }); | ||
}); | }); | ||
</script> | </script> |
Version vom 10. Juli 2012, 20:02 Uhr
<script type="text/javascript"> function wait4a2 (f){
if (window.a2 && window.a2.parser) { f(); } else { if (window.importJS) { importJS("MediaWiki:Skin/Projekt:Adventure2/lib.js"); importJS("MediaWiki:Skin/Projekt:Adventure2/parser.js"); } window.setTimeout(function() { wait4a2(f); }, 100); }
} $(function () {
wait4a2(function () {
var text = ""; var list = window.a2.parser.parse(text); var error = "";
try { var event = window.a2.parser.parse(""); } catch (e) { var error = "Line " + e.line + ", Column " + e.column + ": " + e.message; }
if ("" != "render"){ $pre = $("<pr"+"e/>"); var lines = text.split("\n"); for (var i=0; i<lines.length; i++) { prefix = String(i); while (prefix.length < 3) prefix = " "+prefix;
var lineText = document.createTextNode(prefix + ": " + lines[i]);
if (i==e.line){
var $node = $('').append(lineText);
$node.append("
").append(document.createTextNode(error));
} else {
var $node = $(lineText)
}
$pre.append($node);
}
if ($("#wikiPreview").length) $cont = $("#wikiPreview"); else $cont = $("#bodyContent");
$cont.append($pre);
return; }
if (error) return;
for (var i=0; i<list.length; i++) {
var type = list[i][0]; var data = list[i][1];
if (type == "event"){ a2.registerEventHandler(data); } else { //FIXME: not yet implemented: declarations for item, page } } });
}); </script>