Hilfe:Werkzeuge
Auf dieser Seite sollen alle möglichen Werkzeuge zusammengestellt werden, die das Erstellen von Seiten erleichtern oder ermöglichen.
Programme
Umwandlungsskript für Belohnungen für Abenteuer
Keiichi war so nett und hat eine Umwandlungsroutine entworfen, mit der einfach einzugebende Daten praktisch in eine Wiki-Tabelle umgewandelt werden können. Der Sourcecode liegt in Python vor.
#!/usr/bin/python # -*- coding: utf-8 -*- u"""Ad hoc übersetzer für das Wiki Aventurica ------------------------------------------ gedacht zur Übertragung der Daten von [[Belohnungen für Abenteuer]] in eine Tabelle von Keiichi ---- In eine Klasse umgesetzt von Alrik""" __version__='$Id: bel2tab.py,v 0.35 2005/05/10 09:40:00 Keiichi Exp $' import re, Tkinter from tkFileDialog import * from tkSimpleDialog import * class Belohnung2Wikitabelle: u"""Eine Ad-hoc-Übersetzerklasse, um einfacher zu editierende Daten in eine Wiki-Tabelle umzuformen""" def __init__(self, meister=None): pass # Einzelteile in Wiki-Tabellenzeile übertragen def __towiki(self, p1, p2, p3, p4, p5, design): if design==1: return u' |'+p1+'\n |'+p2+'\n |'+p3+'\n |'+p4+'\n |'+p5+'\n |-\n' else: return u'|'+p1+' ||'+p2+' ||'+p3+' ||'+p4+' ||'+p5+'\n|-\n' # Das eigentliche Programm def text2tab(self, text, design): outstring = u"""{{Achtung|Text=<center>Die Daten auf dieser Seite werden automatisch erzeugt.</center><br/> Bitte hier keine Änderungen durchführen, sondern stattdessen auf der Seite: [[Belohnungen für Abenteuer]]. Danke!}}\n\n""" # Tabellenanfang if design==1: outstring+=u'{| border=1\n !Abenteuer\n !Abenteuerpunkte\n !Geld\n !Erfahrung\n !Sonstiges\n |-\n' else: outstring+=u'{| border=1\n!Abenteuer !!Abenteuerpunkte !!Geld !!Erfahrung !!Sonstiges\n |-\n' ## Regelwerk, also eine Schablone herstellen, die dann auf den gesamten Text angewandt wird ## damit sind dann alle Textbestandteile dazwischen ausgeblendet # head variante 1, z.B. [[Der Inquisitor|E4 Der Inquisitor]] head1 = ('^\[\[.+\|(.+)\]\]') # head variante 2, z.B. [[Rückkehr der Finsternis]] 7GI.1 - [[Alptraum ohne Ende, 7GI]] head2 = ('^\[\[.+\]\].+\[\[(.+)\]\]') # Sind für beide Heads gleich rule2 = ('^\*Abenteuerpunkte:(.+)') rule3 = ('^\*Geld:(.+)') rule4 = ('^\*Erfahrung:(.+)') rule5 = ('^\*Sonstiges \(Waffen/Artefakte/etc\.\):(.+)') # Mit dieser Regel kommen die Regexps besser mit dem Wikilayout klar. Matcht entweder ein Newline oder alles mögliche bis zum nächsten Match flexrule = '(?:\n*?|[\s\S]*?)' # komplette Regel zusammenbauen crule1 = head1+flexrule+rule2+flexrule+rule3+flexrule+rule4+flexrule+rule5 crule2 = head2+flexrule+rule2+flexrule+rule3+flexrule+rule4+flexrule+rule5 crule = (crule1+'|'+crule2) # Regel compilieren und im text matchen, Problem: siehe oben p = re.compile(crule,re.MULTILINE) x = p.findall(text) # Fallunterscheidung für beide Heads. for i in x: if i[0]=='': outstring=outstring+self.__towiki(i[5],i[6],i[7],i[8],i[9], design) else: outstring=outstring+self.__towiki(i[0],i[1],i[2],i[3],i[4], design) #tabellenende if design==1: outstring+=u' ' outstring+=u'|}\n\n[[Kategorie:Listen]]' return outstring #zum Testen: if __name__=="__main__": fenster=Tkinter.Tk() design=askinteger(u"Design",u"""Wie soll das Design aussehen? Tabellenspalten zeilenweise darstellen (=1) oder alle Spalten in jeweils einer Zeile (=sonstige Zahl) ?""") quelldatei=u"Belohnung für Abenteuer.wiki.txt" quelldatei = askopenfilename(defaultextension='*.txt', filetypes=[('Alle Dateien','*.*'), ('Textdateien','*.txt'),('Wikidateien','*.wiki.txt')], initialfile=quelldatei) zieldatei=u'Belohnung für Abenteuer(Tabelle).wiki.txt' try: t=open(quelldatei,'r') except IOError: print u"Dateifehler, die Datei '%s' gibts vermutlich nicht. ->Abbruch" % quelldatei else: txt = t.read() t.close() b2t = Belohnung2Wikitabelle() try: vvv = b2t.text2tab(txt,design) except UnicodeDecodeError: ##ohne Fehlerabfrage hängt das Tk-Fenster abgestürzt herum print "Fehler: UnicodeDecodeError aufgetreten! Es wird CP1252 probiert..." txt=txt.decode("CP1252") try: vvv = b2t.text2tab(txt,design) except UnicodeDecodeError: ##ohne Fehlerabfrage hängt das Tk-Fenster abgestürzt herum print "Fehler: UnicodeDecodeError aufgetreten! Es wird CP1252 probiert..." else: print vvv zieldatei = asksaveasfile(defaultextension='*.txt', filetypes=[('Alle Dateien','*.*'), ('Textdateien','*.txt'),('Wikidateien','*.wiki.txt')], initialfile=zieldatei).name try: t=open(zieldatei,'w') except IOError: print u"Fehler: '%s' konnte nicht zum Schreiben geöffnet werden. ->Abbruch" % zieldatei else: t.write(vvv) t.flush() t.close() fenster.destroy()
Robotskripten
Siehe Wiki Aventurica:Robots
TeX Environment
Für Leute die TeX verwenden, ein Paar Hilfen, die einem Dokument das Aussehen eines DSA-Abenteuers verschaffen. Noch nicht perfekt, aber immerhin ein Anfang.
%% v0.1 -- erste Version -- Keiichi \usepackage{framed} \geometry{verbose,a4paper,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm,headheight=1cm,headsep=1cm,footskip=1cm} \setlength\parskip{\medskipamount} \setlength\parindent{0pt} \twocolumn \newenvironment{Meisterinfo}{% {\it Meisterinformationen:}\hfill\hfill\begin{leftbar} }{% \end{leftbar} } \newenvironment{Spezinfo}{% {\it Spezielle Informationen:}\hfill\hfill\linebreak }{% } \newenvironment{Allginfo}{% {\it Allgemeine Informationen:}\hfill\hfill\linebreak }{% } %% wir erneuern das Kommando um den Text ein wenig mehr an die die schwarze Linie ranzuholen \renewenvironment{leftbar}{% \def\FrameCommand{\vrule width 3pt \hspace{5pt}}% \MakeFramed {\advance\hsize-\width\FrameRestore}}% {\endMakeFramed}
Beispiel :
\begin{Meisterinfo}Es war einmal vor langer, langer Zeit eine Meisterinformation. Sie hatte einen schwarzen Balken neben sich und sah einfach toll aus ;) \end{Meisterinfo}
Geeignete Browser
- FireFox oder Mozilla
- jeder andere Browser, der CSS beherrscht (sonst werden manche Informationen überhaupt nicht angezeigt)
Browser-Addons
- WebDeveloper-Extensions, hervorragend geeignet, um in Echtzeit CSS-Styles zu verändern und zu Betrachten und damit um längen besser geeignet als einen eigenen Benutzerdefinierten Style auszuprobieren
- Leider scheinen die Extensions nur beim FireFox zu funktionieren. Bei Mozilla (1.8b1) ist "Edit CSS" nicht möglich.
- Wikipedia-Toolbar als Addon für FireFox, erleichtert das Editieren von Wikiseiten im Webbrowser
- weiteres unter Wikipedia:de:Helferlein
HTTP-Echtzeitmanipulation
Mit Hilfe von einem Filter-Proxy kann man Seiten in Echtzeit manipulieren. Sehr schön geeignet, wenn auch nicht ganz einfach zu bedienen ist der ProxoMitron, zu dem es noch dazu eine aktuell gehaltene Filterdatenbank von einer deutschen Supportseite gibt: Deutsche ProxoMitron-Website. Um es kurz gefasst zu sagen: Man startet den ProxoMitron, gibt ihn ggf. auf der Firewall HTTP-Zugriff (TCP:80,8080,20,21,443, UDP:53). Dann wird in jedem Programm, das in den Nutzen der Filterfunktionen kommen soll (Werbung ausfiltern, JavaScript-Spionage entschärfen, die unteren Filter nutzen) der Proxy auf dem lokalen Port "localhost:8080" eingestellt (ggf. Firewall anpassen). Nun kann normal weitergesurft werden, wobei alle Webdaten erst durch den Filter gejagt, entsprechend mannigfaltig (in Echtzeit !) manipuliert und dann erst (mit allen Verädnerungen) angezeigt werden.
Hier jetzt 2 Filter, um den Sysops ein wenig unter die Arme zu greifen.
- Der erste Filter setzt hinter jeden Link, der normalerweise einen Benutzerlink anzeigt 2 weitere Links in Klammer (B, ?). Der eine führt zur Benutzerdiskussionsseite, der andere zeigt die Benutzerbeiträge an. Natürlich bietet sich hier das Tabbing-System von Mozilla/Firefox an, d.h. immer mit der mittleren Maustaste anklicken, dann später die Tabs durchgehen.
- Der zweite Filter erzeugt hinter jedem Benutzernamen der nur aus einer IP-Adresse besteht (!) einen Link namens LUp, der zu einer DNS-Auflösungsseite (exyst.de) führt. So kann man mit einem Klick sofort sehen, wo der gute Beitragende herkommt. Auch hier mit mittlerer Maustaste unter Mozilla/Firefox das Tabbing ausnutzen.
Anleitung:Einfach mit der Maus inkl. Patterns alles markieren, ins Clipboard kopieren STRG+Einf, dann im ProxoMitron-Webfilter-Dialog mit rechter Maustaste Filter importieren):
[Patterns] Name = "{wiki} Benutzer mit Beiträgen+Diskussion" Active = TRUE Multi = TRUE URL = "dsa4.de/wiki/index.php\?title\=" Bounds = "$NEST(<a\s,</a>)" Limit = 500 Match = "(<a href=(\"|\')/wiki/index.php\?title=Benutzer:([^&]++)\1" "( (\&action=edit|)(\"|\') (class="new"|))\2 " "title=(\"|\')Benutzer:[^>]++>[^<]++</a> " "(\( <a href=[^<]++</a> \)|)" ")\0" Replace = "\0 (<a href="/wiki/index.php?title=Spezial:Contributions&target=\1"\2" "title="Benutzerbeiträge von \1">B</a>, " "<a href="/wiki/index.php?title=Benutzer_Diskussion:\1" " "title="Diskussion zu \1">?</a>) </li>" Name = "{wiki} Wiki IPs mit Lookup versehen" Active = TRUE URL = "dsa4.de/wiki" Bounds = "$NEST(<a\shref="/wiki/index.php\?title=*",</a>)" Limit = 500 Match = "(<a\shref\="/wiki/index.php\?title=" "(Benutzer:|Spezial:Contributions\&(amp;|)target\=)" "([0-9]++.[0-9]++.[0-9]++.[0-9]+)\1[^>]++(class="new"|) " "title=[^>]++>" "[^>]++</a>)\0" Replace = "<small><a href="http://www.exyst.de/hostname.php?inp_name=&inp_ip=\1">" "<font color="green">LUp</font><a/></small>\0"
Das ganze kann natürlich noch zu zahlreichen anderen Spielereien ausgebaut werden. Man könnte z.B. Teile der Homepage umbauen, das Navigationsmenü ergänzen bzw. verändern, etc.
Ich hatte z.B. ein neues Favicon http://dsa4.de/wiki/images/4/43/Favicon2.gif vorgeschlagen. Bisher kam aber keine Reaktion von Seiten der Sysops. Nun lasse ich es mir eben (durch den Filter verändert) selbst anzeigen, ätsch! Soll nur ein kleines Beispiel sein, was man sonst noch so damit basteln kann, alles nämlich ^^
[Patterns] Name = "{wiki} Anderes Favicon statt dsa4.de-Icon anzeigen" Active = TRUE Multi = TRUE URL = "dsa4.de/wiki" Bounds = "<link[^>]++/>" Limit = 80 Match = "<link rel="shortcut icon" href="/favicon.ico" />" Replace = "<link rel="shortcut icon" href="http://dsa4.de/wiki/images/4/43/Favicon2.gif" />"