Die folgende Vorlage speichert über eine Upload-Seite Input von einer Textarea in einer Wiki-Seite bzw. lädt die Daten von dieser Seite und zeigt sie zum editieren an.
Eine zweite Seite lädt die Daten und convert sie vom CSV Format in ein JavaScript Object so dass per JavaScript auf die Daten zugegriffen werden kann.
Die Daten werden in der Datei zwischen code Tags gepackt, damit die Seite aufgerufen werden kann und die Daten anzeigt, wie sie in der Textarea eingegeben wurden.
Die Seite mit den Daten verwendet die Versionsverwaltung des Wikis. Das heisst, alle Änderungen der Daten werden aufgezeichnet und bleiben gespeichert bis die Seite gelöscht wird.
<wscript> function EncloseData( data ) EncloseData = "<" & "code>" & vbCRLF & data & vbCRLF & "</" & "code>" & vbCRLF end function function ExtractData( data ) ExtractData = TrimLines( ExtractPattern1( data, "<" & "code>([^\x00]*?)</" & "code>" ) ) end function sub Run dim action, data data = "" action = ReqForm("Action") if action = "Save" then data = Trim( ReqForm( "GeoDataInput" ) ) if data <> "" then WritePage "GeoData:MyData.js", EncloseData(data), "" end if else if PageExists( "GeoData:MyData.js" ) then data = ExtractData( ReadPage( "GeoData:MyData.js" ) ) end if end if Writeln "{{form|Form-Flags|[[" & PAGE_NAME & "]]}}" Writeln "{{form textarea|GeoDataInput|10|style=width:100%|" & FormString(data) & "}}" Writeln "{{form button|Action|Save}}" Writeln "{{end form}}" end sub Run </wscript> {{ListPages|GeoData:*.js|short|noext|No Geo File found}}
<wscript> function CSVtoJson( csv ) dim lines, line, s, i, items, nl nl = vbCRLF s = "" lines = Split( csv, vbCRLF ) for each line in lines line = Trim(line) if line <> "" then s = s & "{ ID: """ items = Split( line, "," ) i = 0 if UBound(items) >= i then s = s & Trim(items(i)) end if i = i + 1 s = s & """, X: " if UBound(items) >= i then s = s & Trim(items(i)) else s = s & "0" end if i = i + 1 s = s & ", Y: " if UBound(items) >= i then s = s & Trim(items(i)) else s = s & "0" end if i = i + 1 s = s & ", Z: " if UBound(items) >= i then s = s & Trim(items(i)) else s = s & "0" end if i = i + 1 s = s & ", Txt: """ if UBound(items) >= i then s = s & Trim(items(i)) end if s = s & """ }," & vbCRLF end if next s = "var GeoData = [" & vbCRLF & s & "];" & vbCRLF s = "<" & "jscript>" & nl & s & "</" & "jscript>" & nl CSVtoJson = s end function function ExtractData( data ) ExtractData = TrimLines( ExtractPattern1( data, "<" & "code>([^\x00]*?)</" & "code>" ) ) end function sub Run dim dataCSV, dataJS dataCSV = "" if PageExists( "GeoData:MyData.js" ) then dataCSV = ExtractData( ReadPage( "GeoData:MyData.js" ) ) end if if dataCSV = "" then Writeln "No Geo Data found. Please [[Upload Geo Data~newwindow]]" else dataJS = CSVtoJson( dataCSV ) Writeln dataJS end if end sub Run </wscript> <jscript> function DisplayData() { if (!xDef(GeoData)) { alert( 'GeoData not defined' ); return; } var s = ''; for (var i = 0; i < GeoData.length; i++) { s += GeoData[i].Txt + '<br>'; } xInnerHTML( output, s ); } xOnLoad( DisplayData ); </jscript> {{div|id=output}} {{end div}} [[Upload Geo Data~newwindow|Upload new Geo Data]], then reload this page (F5).