Perl Mongers :: deutschsprachig - German.pm

A wiki for German-speaking Perl programming language user groups.

Änderungen, Hilfe

Treffen, Veranstaltungen

Leute, Gruppen, Ziele

PerlLernen

Best of Perl Books
Die Besten Bücher

ErfolgsStories

Links, FAQ, Forum

Mailing List

Impressum


Liebe(r) Perl Monger(in),

diese Site ist bereits seit langem ein Ziel von Spamrobotern. Neu ist, dass ich das Aufräumen leid bin. Darum schreibe mir eine Mail mit Deinem Usernamen und einem Crypt Passwort, damit Du einen passwortgeschtzten Zugang zu dieser Site von mir erhältst. Eines baldigen Tages wirst Du den brauchen, um hier weiterhin Seiten verändern zu können.

Vielen Dank, Sören


Amazon-Angebote... (Einkauf über diesen Link sponsort den Unterhalt von perlmongers.de)

  1. Fragen zur Dokumentation
    1. Gibt es irgendwo eine gute Dokumentation zu Kwiki
  2. Fragen zu besonderen Funktionen - KwikiSearch etc.
    1. Gibt es ein Inhaltsverzeichnis, auf dem alle Seiten angezeigt werden
  3. Fragen zu KwikiTemplate
    1. Wo kann man die Texte...ändern
    2. Wie kann man den KwikiUserNamen ausgeben
    3. Wie und wo kann man die Einstellungsseite ändern
  4. Fragen zum KwikiFormatter
    1. Warum geht das hier /srv/www/cgi-bin/hp-kwiki aber oben geht es nicht
    2. Warum werden in diesem Wiki WikiWords auseinander geschrieben
    3. Bei mir funktionieren einige Formatierungen nicht:
    4. Wie wird das Inhaltsverzeichnis oben automatisch erzeugt
  • Wie kann ich IF-Abfragen schachteln
  • Fragen zur Dokumentation

    Gibt es irgendwo eine gute Dokumentation zu Kwiki?

    • Die Kwiki-Seite ist http://www.kwiki.org/, dort gibts auch Dokumentation, allerdings ist die aktuelle Kwiki-Version anscheinend 0.33, also dürfte die Doku u.U. wenig mit diesem Wiki gemein haben.
      • Die Dokumentation ist dort zumeist auf dem Stand von CGI::Kwiki 0.17 und ein wenig CGI::Kwiki 0.18. Zu Kwiki 0.31 und Kwiki 0.33 ist dort nur sehr wenig zu finden. Das ärgert dortige Wikizens so sehr, daß sie alle Doku zu den alten Versionen gerne von dort "herausoperieren" wollen. Komischer Laden.
    • Dann gibt es noch perldoc lib/CGI::Kwiki (aus dem Hauptverzeichnis heraus aufgerufen), wenn man sich dem Perl-Code nähern will.
      • Sehr dürftig.

    Fragen zu besonderen Funktionen - Kwiki Search etc.

    Gibt es ein Inhaltsverzeichnis, auf dem alle Seiten angezeigt werden?

    • Ich habe gerade Site Map gefunden, das scheint in meinem Wiki so etwas zu leisten, hier aber nicht jetzt doch.
      • Ne gibts bei mir doch nicht, kommt aber immer als Suchergebnis (alle Seiten werden angezeigt, egal was ich im Suchfeld angebe).
    • Site Map ist action=search&search= - ich habe hier einfach eine Seite mit [&REDIRECT action=search&search=] angelegt. --Sören M. Laird Sörries
      • Klingt gut, klappt bei mir aber leider nicht. Hier aber schon, wie ich sehe. --Christian Dühl
        • Wenn das, was bei Dir nicht klappt, das Kwiki Redirect ist, heißt das was Du dazu noch brauchst Kwiki Kwiki: Patch Redirection.
          • Ja es scheitert an den Redirects (wie eine angelegte REDIRECT-Testseite zeigt). Ich hab den Patch so ähnlich (...) eingebaut, aber es läuft noch nicht. Ist natürlich aus der Ferne jetzt schwer was dazu zu sagen...
            • Nun habe ich es hinbekommen. Da der angegebene Patch bei mir nicht funktioniert hat, hab ich aus dem Patch und den Erfahungen mit den Link- und Textauszeichnungsfunktionen im Formatter.pm das folgende gebastelt:
    sub is_a_redirect {
        my ($self, $text) = @_;
        $self->split_method($text,
            qr{(?<!\!)(?<!\s)(\[\&REDIRECT\s+\S+\])}i,
            'is_a_redirect_format',
        );
    }
    
    sub is_a_redirect_format {
        my ($self, $text) = @_;
        my ($whereto) = $text =~ /^\[\&REDIRECT\s+(\S+)\]$/;
        $self->{redirect} = $whereto;
        return qq(<a href="$whereto">klick</a>);
    }

    is_a_redirect wird dabei zuoberst in process_order eingetragen. Damit klappts nun auch mit dem Inhaltsverzeichnis! Es klappt dann nur, wenn vor dem Redirect-Ausdruck kein Leerzeichen steht. Das hat den Vorteil, dass man das Redirect vorzeigen kann (in der Dokumentation).

    Fragen zu Kwiki Template

    Wo kann man die Texte...ändern?

    • der Buttons (EDIT, ...),
    • des Suchstrings (search) und
      • Kwiki Search - ich würde das durch Templates ersetzen, in config.yaml definieren (mach ich nachher auch)
    • des Textes in nicht vorhandenen Seiten
      • Generell kommen in den Templatedateien Zeichenketten in doppelten geschweiften Klammern vor, deren Inhalte wohl irgendwo ersetzt werden.
      • Ich hab aber leider noch nicht gefunden, wo das passiert. Im Gegensatz dazu werden Werte aus der Datei config.yaml durch Platzhalter der Form [% loc_preferences_page %] dargestellt. Diese werden in Kwiki Template ersetzt.

    Wie kann man den Kwiki User Namen ausgeben?

    • ...unter dem der Benutzer sich in den Einstellungen angemeldet hat (Wie machst Du das, Sören, dass im Linken Bereich unter dem Edit-Button noch der Link zu den Einstellungen (das ist klar) und der Name des Benutzers (das ist die Frage) erscheint?

    Wie und wo kann man die Einstellungsseite ändern?

    Kann man die Einstellungsseite so ergänzen, dass man weitere Felder hinzufügt, so dass der User etwa zwischen bestimmten css-Sets wählen kann?

    • In den Templates local/template/prefs_body.html und Kwiki Prefs

    Fragen zum Kwiki Formatter

    Warum geht das hier /srv/www/cgi-bin/hp-kwiki aber oben geht es nicht?

    • (Der String ist oben identisch (per Copy & Paste eingefügt!) Wenn ich raten soll liegt das an einem RE-Fehler, da nicht auf die erste schließende eckige Klammer ] gematcht wird, sondern auf das letze. Da scheint mir eine RE zu gierig zu sein. Das Einfügen eines Fragezeichens an der richtigen Stelle könnte das Problem vielleicht beheben. Allerdings passiert es in dieser Zeile nicht mit der einzelnen freistehenden schließenden Klammer.
      • Gut geraten, aber noch ganz knapp daneben, denn sonst hätte ich das Problem schon lang im Griff gehabt. Der Fehler lag in der Behandlung des Links zwischen den beiden [=proportional]-Texten. Trotzdem, so habe ich es endlich gefunden und dabei noch einen Bug bei den letzteren gleich mitgenommen.
    in sub http_link:
      Alt: qr{(?<!\!)\[(.*?(?:https?|ftp|irc):\S.*?)\]}
      Neu: qr{(?<!\!)\[([^\]]*?(?:https?|ftp|irc):\S[^\]]*?)\]}
    
    in sub inline:
      Alt: qr{(?<!\!)\[=(.*?)\]}
      Neu: qr{(?<!\!)\[=([^\]]*?\]?)\]} # Kann nun auch auf "]]" enden!
        • Aha. Leider sehen die Funktionen bei mir anders aus. Dafür tritt der Bug da aber auch gar nicht erst auf. Schade, dass ich auf einer anderen Version aufgesetzt habe. Naja, das werd ich schon irgendwie hinbekommen, wenn ich da noch Funktionalitäten einbauen will. -- Christian Dühl
          • Das wird schon gehen, keine Sorge.

    Warum werden in diesem Wiki Wiki Words auseinander geschrieben?

    • Hast Du dafür etwas geändert, Sören, oder ist das ein Unterschied zwischen 0.17 und 0.18? (Das ist oft schön, manchmal aber auch nicht, etwa bei SuSE etc.)
      • Weil ich das so haben wollte. Die Diskussionen und Beispiele dazu finden sich unter Kwiki Kwiki: Separated Wiki Words, Kwiki Kwiki: Spaced Page Name, Kwiki Kwiki: Spaced Title Name und Kwiki Kwiki: Free Link. Bin dabei zuerst meinen eigenen Weg gegangen, und hab dann immer wieder an die damalige Entwicklung der Diskussion angegelichen... bis ich das dann auch (überlegt) aufgab. Die Änderungen, die ich gemacht habe, gehen sehr tief in Kwiki ein (Kwiki Database, Kwiki Formatter, Kwiki Search und was nicht alles) und sind für Version 0.17. Ich kann Dir Diffs erstellen, aber die helfen für 0.18 auch nur, um die Idee zu kriegen. Einfach übernehmen ist leider nicht möglich, denn 0.17 und 0.18 sind da inkompatibel.
        • Ich hab jetzt eine (erstmal sehr einfache) Version davon eingebaut (ohne mir anzusehen, wie es andere gemacht haben ... tztztz). Dafür hab ich ein eigenes kleines Modul erstellt, das eine Funktion zum Auseinandernehmen der Namen (und Behandlung bestimmter Sonderfälle) enthält. Diese hab ich dann in Template.pm und Formatter.pm einsetze. Außerdem hab ich bei den Templates den Display-Header angepasst und dort ein 'page_id_spaced' an geeigneter Stelle eingetragen. Dafür hab ich dann in der Funktion render im Template.pm dafür gesorgt, dass die entsprechende Variable im Variablenhash gefüllt wird. Ob das die richtige Stelle dafür ist weiß ich nicht genau, aber es funktioniert. Will man dies fürs Editieren etc. auch haben, muss man wahrscheinlich zumindestens die entsprechenden Templates anpassen, das habe ich noch nicht gemacht. --Christian Dühl

    Bei mir funktionieren einige Formatierungen nicht:

    • durchgestrichen, kleingeschrieben Links durch externe Bilder auf externe Seiten (Beispiel siehe Grafik Formatierung oder Bielefeld PM).
      • Das sind Erweiterungen an Kwiki Formatter. Die ersten beiden sind vergleichsweise einfach, wobei das mit den Kommas für kleingeschrieben eine reichlich dumme - weil umständliche - Idee war... und sich demnächst einmal ändern könnte. Beispiele findest Du in Kwiki Formatter. Mit den Bildern in Links wird es sehr viel heikler, das ist noch ziemlich experimentell und hat zu zahlreichen Änderungen an Kwiki Formatter geführt. Diese will ich gerne wieder in eine weitere Subklasse packen, die ich dann auch veröffentliche. Siehe auch (uralte) Diskussion unter Kwiki Kwiki: Piki Wiki.
        • Inzwischen habe ich bei mir auch durchgestrichen und klein eingebaut, dazu noch groß und hoch- und tiefgestellt. Dazu habe ich lib/CGI/Kwiki/Formatter.pm geändert (jede dieser Funktionen muss in der Funktion process_order mit aufgeführt werden):
    sub durchgestrichen {
        my ($self, $text) = @_;
        $text =~ s#(?<![$WORD])-(\S.*?\S)-(?![$WORD])#<strike>$1</strike>#g;
        return $text;
    }
    sub hochgestellt {
        my ($self, $text) = @_;
        $text =~ s#(?[$WORD]$1</sup>#g;
        $text =~ s#\^(\S+)\^#<sup>$1</sup>#g;
        return $text;
    }
    sub tiefgestellt {
        my ($self, $text) = @_;
        $text =~ s#(?[$WORD]$1</sub>#g;
        $text =~ s#§(\S+)§#<sub>$1</sub>#g;
        return $text;
    }
    sub kleiner {
        my ($self, $text) = @_;
        $text =~ s#(?[$WORD]$1</small>#g;
        return $text;
    }
    sub groesser {
        my ($self, $text) = @_;
        $text =~ s#(?[$WORD]$1</big>#g;
        return $text;
    }

    Nun habe ich auch die "Grafik-als-Link" Funktion eingebaut (ebenfalls in Formatter.pm):

    sub http_picture_link {
        my ($self, $text) = @_;
        $self->split_method($text,
            qr{(?<!\!)(\[\S+\.(?:gif|jpg|jpeg|ppm|png|bmp)\s+http\S+\])}i,
            'http_picture_link_format',
        );
    }
    sub http_picture_link_format {
        my ($self, $text, $a, $b) = @_;
        my ($bild, $link) = $text =~ /^\[(.+)\s+(.+)\]$/;
        return qq(<a href="$link">) . $self->img_format($bild) . '</a>';
    }

    Eingetragen wird die Funktion (http_picture_link) dann in process_order vor named_http_link.

    Wie wird das Inhaltsverzeichnis oben automatisch erzeugt?

    Ich sehe, dass dafür im Wiki-Code dieser Seite

    [ &TOC ol link]

    (ohne das Leerzeichen nach der öffnenden Klammer) eingetragen ist. Das bewirkt bei mir allerdings nichts, also vermute ich, dass man dafür einen weiteren Patch braucht?!

    Wie kann ich IF-Abfragen schachteln?

    bei

    [% IF a %]
        [% IF b %]
        [% END %]
    [% END %]

    kommt Murks raus... =( Weiß wer Rat?


    Siehe Hilfe, Kwiki Tipps Und Tricks, Kwiki Diskussion

    Username: