Ich habe mal ein einfaches Wiki Eintrag erstell Programm geschrieben (Java).
Mit einem Java Applet und 2 PHP Skripten kann man das WIKI dann zum laufen kriegen,
ist aber noch nicht fertig.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package scratch; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class WikiParser { public static void main(String[] args) throws IOException { StringBuilder wikipage = new StringBuilder(); BufferedReader in = new BufferedReader(new InputStreamReader(WikiParser.class.getResourceAsStream("wiki.html"))); String line; while ((line = in.readLine()) != null) { wikipage.append(line); } in.close(); String wiki = wikipage.toString(); Ctx page = wikiPage("... BBCode"); wiki = wiki.replace("{$title}", page.title).replace("{$vzcontent}", page.vz).replace("{$content}", page.page); System.out.println(wiki); } public static Ctx wikiPage(String str) { StringBuilder result = new StringBuilder(); Ctx ctx = new Ctx(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == '[') { String tag = nextTag(str, i); i += tag.length() - 1; if (tag.equalsIgnoreCase("(list)")) { ctx.rec++; result.append("<ol>"); } else if (tag.equalsIgnoreCase("(/list)")) { result.append("</ol>"); ctx.rec--; } else if (tag.equalsIgnoreCase("(*)")) { result.append("<li>"); } else if (tag.equalsIgnoreCase("(/*)")) { result.append("</li>"); } else if (tag.equalsIgnoreCase("(code)")) { if (!ctx.code) { result.append("<p class='codeBox'>"); ctx.code = true; } } else if (tag.equalsIgnoreCase("(/code) ")) { if (ctx.code) { result.append("</p>"); ctx.code = false; } } else if (tag.equalsIgnoreCase("(h)")) { result.append("<a name='hl"); result.append(ctx.headlines.size()); result.append("'><h"); if (ctx.rec > 4) { result.append(4); } else { result.append(ctx.rec); } result.append(">"); StringBuilder sb = new StringBuilder(); int x = i+1; while(x < str.length() && str.charAt(x) != '['){ sb.append(str.charAt(x)); x++; } ctx.headlines.add(sb.toString()); } else if (tag.equalsIgnoreCase("(/h)")) { result.append("</h"); if (ctx.rec > 4) { result.append(4); } else { result.append(ctx.rec); } result.append("></a>"); } else if (tag.equalsIgnoreCase("(b)")) { if (!ctx.bold) { result.append("<b>"); ctx.bold = true; } } else if (tag.equalsIgnoreCase("(/b)")) { if (ctx.bold) { result.append("</b>"); ctx.bold = false; } } else if (tag.equalsIgnoreCase("(i)")) { if (!ctx.italic) { result.append("<i>"); ctx.italic = true; } } else if (tag.equalsIgnoreCase("(/i)")) { if (ctx.italic) { result.append("</i>"); ctx.italic = false; } } else if (tag.equalsIgnoreCase("(u)")) { if (!ctx.underline) { result.append("<u>"); ctx.underline = true; } } else if (tag.equalsIgnoreCase("(/u)")) { if (ctx.underline) { result.append("</u>"); ctx.underline = false; } } else if (tag.startsWith("[url=") || tag.startsWith("[URL=")) { result.append("<a href='"); result.append(tag.substring(5, tag.length() - 1)); result.append("'>"); } else if (tag.equalsIgnoreCase("(/url)")) { result.append("</a>"); } else if (tag.equalsIgnoreCase("(img)")) { result.append("<img alt='Bild' src='"); } else if (tag.equalsIgnoreCase("(/img)")) { result.append("'>"); } else if (tag.equals("(q)")) { result.append("<blockquote>"); } else if (tag.equalsIgnoreCase("(/q)")) { result.append("</blockquote>"); } else if (tag.startsWith("[title=") || tag.startsWith("[TITLE=")) { ctx.title = tag.substring(7, tag.length() - 1); } } else { result.append(chr(c)); } } ctx.page = result.toString(); StringBuilder vzsb = new StringBuilder("<ul>"); for(int i = 0;i < ctx.headlines.size();i++){ String hline = (String)ctx.headlines.get(i); vzsb.append("<li>"); vzsb.append("<a href='#hl"); vzsb.append(i); vzsb.append("'>"); for(char c : hline.toCharArray()){ vzsb.append(chr(c)); } vzsb.append("</a>"); vzsb.append("</li>"); } vzsb.append("</ul>"); ctx.vz = vzsb.toString(); return ctx; } private static String nextTag(String str, int i) { StringBuilder tagres = new StringBuilder(); while (i < str.length()) { char tc = str.charAt(i); i++; tagres.append(tc); if (tc == ']') { break; } } return tagres.toString(); } private static class Ctx { int rec = 1; String page = "Kein Inhalt..."; String title = "Unbenannt"; String vz = ""; boolean code = false; boolean bold = false; boolean italic = false; boolean underline = false; ArrayList headlines = new ArrayList(); } private static String chr(char c) { if (c == '&') { return "&"; } else if (c == '<') { return "<"; } else if (c == '>') { return ">"; } else if (c == '\n') { return "<br />"; } else { return "" + c; } } }
... Ich musste die eckigen Klammern durch "(" und ")" ersetzten, da das
Forum sie sonst ausgewertet hätte.
Und Hier die wiki.html ( noch nicht fertig )
<html> <head> <title>Scratch Hilfe | {$title}</title> <style> .box { -wekbit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; box-shadow: 0px 0px 20px orange; background-color: orange; padding: 10px; margin: 10px; } .codeBox { font-family: 'Lucida Console', 'Bitstream Vera Sans Mono', 'Courier New', Monaco, Courier, monospace; background-color: white; border: 2px dotted gray; padding: 5px; } .vzBox { padding: 5px; border: 1px solid gray; background-color: white; width: 400px; } </style> </head> <body> <div class="box"> <img src="http://wiki.scratch.mit.edu/skins/scratch/logo.png" /> </div> <div class="box"> <h1> {$title} </h1> <div class="vzBox"> <p align="center"><b> Inhaltsverzeichniss </b></p> {$vzcontent} </div> {$content} </div> <div class="box"> <a href="">Aendern</a> | <a href="">Neuer Eintrag</a> | <a href="mailto:ZeroLuckBGN@googlemail.com">E-Mail</a> </div> </body> </html>
Last edited by ZeroLuck (2011-11-14 10:59:06)
Offline
(eintrag zu spät gesehen)
Ich würde ersteinmal überlegen, wo wir nen server herbekommen, bevor wir die seite erstellen...
was bringt eine seite, die man nicht aufrufen kann.....
ich kenn auch ein tutorial-webinterface...
vielleicht kann man das ja auch verwenden?
Last edited by akhof (2011-11-14 14:34:54)
Offline
Wobei wir wieder am Punkt wären: Scratch-Team, könntet ihr mal bitte?
Die haben sicher noch die eine oder andere (Sub-)Domain bzw. Ordner frei.
Wer schreibt die Mail?
Supersil
Offline
@Superstil
Warum sollten die uns einen (Sub) Domain geben?
Sie geben uns doch noch nicht einmal einen Moderator!
Außerdem wäre ein Subdomain von mit.edu
schon sehr ehrenswert ;D
@akhof
Wir können erstmal meinen Server verwenden (-----),
da deiner für uns leider nicht erreichbar ist.
Für die fertige Seite haben wir folgende Möglichkeiten:
1. Bei meinem gemieteten Server könnte ich noch einen 2. Domainnamen, bzw. Subdomainname registrieren.
2. Einen Freehoster suchen, wir werden wohl keinen guten (mit PHP usw.) finden...
3. Uns einen Server mieten (ca 5 EUR im Monat)
4. Irgendjemanden Fragen, zB. das Scratch Team mit dem freien scratchr Domain,
wird aber sicher nicht klappen.
ZeroLuck
--------------
Wer hat eigentlich schon gelesen das Adobe aufhört an Flash weiterzuentwickeln
inkl. Sicherheitsupdates?
(Ich weiß nicht ob es sich nur um die Mobile Version handelt)
Da HTML5 erfolgreicher ist/wird lohnt es sich aus irgendeinem Grund nicht...
Und das Scratch Team hat jetzt 4. Jahre an dem Flash Scratch gearbeitet, und jetzt ist es veraltet
Last edited by ZeroLuck (2012-04-14 18:06:06)
Offline
eigen. können wir auch die tutorials auf der Google-Sites-Site sammeln, und danach eine EIGENE Webseite erstellen??
https://sites.google.com/site/scratchde/
BITTE ANGUCKEN!!!
BITTE ANGUCKEN!!!
BITTE ANGUCKEN!!!
Last edited by akhof (2011-11-14 16:17:34)
Offline
@akhof
Ich habe geschaut. Toll!
Aber das Problem mit dem Sammeln ist das:
Die Tutorials sollten in einem einheitlichen Format sein,
sonst wird es sehr schwer sie auf eine andere Seite zu portieren.
Ich denke dieses Format ist sinnvoll (Genau das was mein WikiParser.java zu HTML macht)
Achtung: '(' = '[' und ')' = ']', hätte ich es mit eckigen klammern gemacht wäre
es wegen dem BBCode entsprechungen nicht geklappt.
(b)Fett(/b)
(i)Kusiv(/i)
(u)Unterstrichen(/u)
(code)Code(/code)
(url=...)URL mit Anzeige Text(/url)
(url)Addresse mit der URL als Anzeige Text(/url)
(title=...)Setzt das Thema der Seite. zB. "Die Scratch Oberfläche"
(img)Bildaddresse(/img)
(q)Zitat(/q)
(h)Überschrift(/h)
(list)(*)Item1(/*)(*)Item2(/*)(/list)
Eine Liste etw. so:
1. Das ist Item A
2. Das B
3. Und das hier C
ZeroLuck
Last edited by ZeroLuck (2011-11-15 08:44:28)
Offline
nagut....
da hast du VOLLKOMMEN recht!
Aber (ich nerve damit bestimmt schon :b) wir haben keinen Server - ohne Server -> kein Wiki
Ich dachte, dass man diese Tutorials später (bis wir einen Server haben) auf das Wiki lädt!
Aber die Idee mit dem Wiki ist nicht schlecht!
Kannst du mir dieses per email geben?
akhof
Last edited by akhof (2011-11-15 08:39:58)
Offline
akhof wrote:
nagut....
da hast du VOLLKOMMEN recht!
Aber (ich nerve damit bestimmt schon :b) wir haben keinen Server - ohne Server -> kein Wiki
Ich dachte, dass man diese Tutorials später (bis wir einen Server haben) auf das Wiki lädt!
Aber die Idee mit dem Wiki ist nicht schlecht!
Kannst du mir dieses per email zukommen lassen?
akhof
Das ganze Wiki?
Ich habe doch den Source code vom Wiki oben gepostet.
Es ist nicht mehr .
Aber ich glaube du meinst das Programm,
nicht den source code, oder?
Aber hier mal ein weiteren Eintrag (mit dem Programm erstellt).
http://www.zero-bgn.de/scratchgerman/account.html
So ist der "Tutorial source code"
[title=Der Scratch Account] [list] [*][h]Allgemein[/h] Auf der Scratch Webseite ([url]www.scratch.mit.edu[/url]) ist es möglich einen Scratch Account zu erstellen. Mit einem Scratch Account kannst du Fragen im Forum stellen und beantworten. Außerdem können Projekte hochgeladen werden, und anschließend von anderen Scratchern oder deinen Freunden angeschaut/gespielt werden. [/*] [*][h]Anmelden[/h] Man kann sich unter diesem Link hier [url=http://scratch.mit.edu/signup]Anmelden[/url]. Dies ist kostenlos, und man muss auch keine Daten abgeben wenn man ganz unten "Direkt zum Download" klickt. [/*] [*][h]Projekte hochladen[/h] Achtung: [list] [*]Um ein Projekt auf die Scratch Webseite hochzuladen wird ein Scratch Account benötigt.[/*] [*]Es ist für [u]alle[/u] möglich dein Projekt anzuschauen, herunterzuladen, zu ändern und auch wieder hochzuladen! (Auf ihr eigenes Profil)[/*] [*]Scratch Projekte welche größer als 10MB sind können nicht hochgeladen werden![/*] [*]Es ist außerden nicht möglich Projekte von "Scratch Mods" wie BYOB eines ist hochzuladen[/*] [/list] So wird in Scratch (1.4) ein Projekt hochgeladen: [img]http://wiki.scratch.mit.edu/images/Share_Icon.png[/img] [/*] [*][h]Projekte runterladen[/h] Um ein Projekt herunterzuladen muss man mit einem Scratch Account angemeldet sein. Nun kann man es mit einem Klick auf diesem Link herunterladen und mit Scratch öffnen: [img]http://wiki.scratch.mit.edu/images/Download_this_project.png[/img] [/*] [*][h]Forum (Deutsch)[/h] Das Deutsche Scratch Forum ist [url=http://scratch.mit.edu/forums/viewforum.php?id=14]hier[/url] zu finden. [/*] [/list]
Wenn du ein Tutorial hast, können wir es (temporär) auf meinem Server hochladen,
einfach mit einer mail schicken.
Last edited by ZeroLuck (2011-11-15 09:58:48)
Offline
gut!
ich habe mich wohl etwas blöde ausgedrückt...
bist du mit dem Aufbau auf https://sites.google.com/site/scratchde/home zufrieden??
Last edited by akhof (2011-11-15 08:54:56)
Offline
Vollständig!
Wenn du willst kannst du weiter die Tutorials mit dem google site machen,
und ich konvertiere sie dann ins BB-Code Format. Ich glaube die Bilder können wir
eh auf Google's Servern lassen, dann ist es ihr traffic und nicht unserer
Welches Tutorial wirst du als nächstes machen?
(Nicht das wir uns in die Quere kommen wie bei den Scratch Accounts )
Ey, Superstil, J_B_Production und TM_
Da ihr ja erfahrene Scratcher seit könnt ihr wenn ihr wollt auch schon anfangen
ein Tutorial zu machen, aber am besten hier posten welches ihr nehmt.
Sonst wissen wir nicht welche Themen noch frei sind.
ZeroLuck
Last edited by ZeroLuck (2011-11-15 09:00:55)
Offline
Allein die Kommunikation unter scratchern außerhalb von Projekten und Foren ist ja total rausgenommen. In Foren muss man jedes mal wieder mühselig gucken, und alles ist an alle, nie persönlich, und in Projekte oder Gallerien gehört das net rein
Offline
roijac wrote:
wenn man bei tutorial 1 ist, ist 5 nicht dabei
aber ausserdem toll
ps: KDE ist cool, wer auch immer die photos gemacht hat
Hey roijac.
Ich dachte du wärst nur im Englischen Forum (vorallem Advanced Topics) aktiv.
Und anscheinend kannst du auch diese komische Sprache "עברית"
EDIT
@akhof
Ich habe T2 erweitert, und hochgeladen.
zero-bgn.de/scratchgerman/oberflaeche.html
Last edited by ZeroLuck (2011-11-15 10:00:12)
Offline
ZeroLuck wrote:
@akhof
Ich habe T2 erweitert, und hochgeladen.
zero-bgn.de/scratchgerman/oberflaeche.html
Gut!
Nutzt dein Server Linux??
bzw: ist auf deinem server mysql und zlib möglich??
PS: Check bitte deine mails...
Last edited by akhof (2011-11-15 10:08:53)
Offline
Wow, so lange war ich doch gar nicht weg!?
Ok, da_mit wir das mal mit den Namen richtig machen:
Supersil, nicht Superstil
ZeroLuck, nicht ZeroLuke
2. Problem: Da_mit fixen lassen !
3. Wiki
Supersil
Last edited by Supersil (2011-11-15 11:14:03)
Offline
Supersil wrote:
Wow, so lange war ich doch gar nicht weg!?
Ok, da_mit wir das mal mit den Namen richtig machen:
Supersil, nicht Superstil
ZeroLuck, nicht ZeroLuke
2. Problem: Da_mit fixen lassen !
3. Wiki
Supersil
Du hast selber "Supersil" geschrieben HAHA
Na egal , is doch nur ein vergessenes 't'
Offline
ZeroLuck wrote:
Supersil wrote:
Wow, so lange war ich doch gar nicht weg!?
Ok, da_mit wir das mal mit den Namen richtig machen:
Supersil, nicht Superstil
ZeroLuck, nicht ZeroLuke
2. Problem: Da_mit fixen lassen !
3. Wiki
SupersilDu hast selber "Supersil" geschrieben HAHA
Na egal , is doch nur ein vergessenes 't'
Aber Supersil ist doch richtig??!!
PS: @ZeroLuk
Check your mails!!!
akhof
Offline
akhof wrote:
ZeroLuck wrote:
Supersil wrote:
Wow, so lange war ich doch gar nicht weg!?
Ok, da_mit wir das mal mit den Namen richtig machen:
Supersil, nicht Superstil
ZeroLuck, nicht ZeroLuke
2. Problem: Da_mit fixen lassen !
3. Wiki
SupersilDu hast selber "Supersil" geschrieben HAHA
Na egal , is doch nur ein vergessenes 't'Aber Supersil ist doch richtig??!!
PS: @ZeroLuk
Check your mails!!!
akhof
HAHA ja stimmt "Supersil" ist richtig, fail LOL
@akhof
Ich habe Mails geschaut, hat ein bischen länger gebraucht weil
ich noch ein skript dafür schreiben musste
Offline