Logbuch

In diesem Logbuch werden Änderungen und Anpassungen am Unterbau des Wikis dokumentiert.

2010-08-13

2010-07-08

2010-05-11

2010-05-07

Plugins

Include

Das Plugin Include ermöglicht es, bestehende Wiki-Artikel innerhalb einer Artikels einzublenden. Wird vom Blog-Plugin benötigt.

Installation erfolgt über den Plugin-Manager.

Beispiele

{{page>[id]#[section]&[flags]}}
{{section>[id]#[section]&[flags]}}
{{namespace>[namespace]&[flags]}}
ID Kennung des Artikels der eingefügt werden soll
Section Beschränken der Einbindung auf einen bestimmten Abschnitt mit Unterabschnitten
Flags Optionen zur Einbindungssteuerung. Einzelne Optionen werden mit dem “&“ getrennt.

Gültige Optionen sind:

Flag Standard Beschreibung
firstseconly Nur den ersten Abschnitt einbinden.
fullpage * Den gesamten Artikel einbinden.
showfooter * Anzeigen einer Fußzeile des eingeblendeten Artikels.
nofooter Fußzeile des eingeblendeten Artikels nicht anzeigen.
showeditbtn * Bearbeitungsknopf unter dem eingeblendeten Artikel anzeigen.
noeditbtn Bearbeitungsknopf nicht unter dem eingeblendeten Artikel anzeigen.
noheader Titel des eingeblendeten Artikels nicht anzeigen.

Abhängigkeiten

Das Blog-Plugin ist von diesem Plugin Abhängig.

Blog

Das Blog-Plugin bindet die chronologisch letzten Artikel im Blog-Ansicht in einen Artikel ein.

Das Plugin kann über den Plugin-Manager Installiert werden.

Beispiele

{{blog>[namespace]?[number]&[flags]}}
Namespace Namesraum der für die Artikeleinblendung durchsucht werden soll
Number Maximale Anzahl der einzublendenden Artikel.
Flags Optionen zur Einbindungssteuerung. Einzelne Optionen werden mit dem “&“ getrennt.

Das Plugin verwendet für die Einblendung das Include-Plugin, es gelten die gleichen Flags:

Flag Standard Beschreibung
firstseconly Nur den ersten Abschnitt einbinden.
fullpage * Den gesamten Artikel einbinden.
showfooter * Anzeigen einer Fußzeile des eingeblendeten Artikels.
nofooter Fußzeile des eingeblendeten Artikels nicht anzeigen.
showeditbtn * Bearbeitungsknopf unter dem eingeblendeten Artikel anzeigen.
noeditbtn Bearbeitungsknopf nicht unter dem eingeblendeten Artikel anzeigen.
noheader Titel des eingeblendeten Artikels nicht anzeigen.

Abhängigkeiten

Das Pluging ist vom Include-Plugin und vom Feedmod-Plugin abhängig.

Feedmod

Das Feedmod-Plugin abeitet Artikel für die Einbindung mit dem Blog-Plugin um.

Das Plugin kann über den Plugin-Manager installiert werden.

Beispiele

Das Plugin hat kaum Interaktionsmöglichkeiten, die einzige ist die Kennzeichnung eines Artikels als „Draf“. Derart gekennzeichnete Artikel werden vom Blog-Plugin nicht mit eingebunden.

~~DRAFT~~

Abhängigkeiten

Das Blog-Plugin ist von diesem Plugin Abhängig.

Code2

Um Quelltexte und Code-Abschnitte besser darzustellen, habe ich das Plugin Code2 installiert. Es ersetzt die alte Verarbeitung der Code-Tags und bietet die Möglichkeit Zeilennummern einzufügen, Unter- und Überschriften zu setzen und natürlich Code Highlight.

Zur Installation muss das Plugin heruntergeladen und unterhalb des Verzeichnisses lib/plugins entpackt werden. Damit Bilder mit ins PDF eingebunden werden, ist die GD-Bibliothek im System zu installieren, danach muss der Indianer neu gestartet werden.

vsrv_10100-01:~# apt-get install php5-gd
vsrv_10100-01:~# /etc/init.d/apache2 restart

Beispiele

<code cpp 1 |h Kopfgesteuerte Schleife>

Kopfgesteuerte Schleife

1: int i = 0;
2: while ( i < 5 )
3: {
4:   i++;
5: }
<code cpp 99 |f Fußgesteuerte Schleife>
 99: int i = 0;
100: do {
101:   i++;
102: } while ( i < 5 )

Fußgesteuerte Schleife

Anpassungen

Da ich mich für eine Vorlage mit dunklem Hintergrund entschieden habe, müssen einige Farben des Stylesheets angepasst werden.

/lib/plugins/code/style.css

5: div.dokuwiki pre.code,pre.code{background:#fcfdfe none;color:#bbc;padding:0.4ex;}

/lib/plugins/code/style.css

38: div.code p.codehead,div.code p.codefoot{color:#a77;background:inherit;line-height:1.33;text-align:left;padding:0 0 0 1ex;}

Graphviz

Ein Diagramm erspart mir manchmal tausend Worte, weshalb mir ein entsprechendes Plugin für das Wiki sehr wichtig war. Wie der Inhalt eines Wikis kann sich die Darstellung eines Diagramms schnell verändern und muss ebenso schnell anpassbar sein. Stare Grafiken mit Gimp oder Photshop sind hier keine Lösung. Zum Glück gibt es das Graphviz Framework und für Dokuwiki das passende Graphviz Plugin.

Graphviz kann über den Plugin-Manager installiert werden.

Als Einstig in die Funktionsweise und die Syntax der Dot-Grafik mit Graphviz bietet sich das Graphviz-Tutorial von Björn Klippstein an. Tiefgreifende Information, Dokumentation und Beispiele sind auf der Graphviz-Projektseite zu finden.

Beispiele

 1: <graphviz>
 2: digraph {
 3: bgcolor = grey;
 4: graph [label="Logical Volumen Management Model" rankdir="BT" size="5,5"];
 5: node [shape=box, style=filled, color=yellow];
 6:   LV1 [label="Logical Volumen 1 (LV)"];
 7:   LV2 [label="Logical Volumen 2 (LV)"];
 8:   LV3 [label="Logical Volumen 2 (LV)"];
 9: node [shape=box, style=filled, color=blue];
10:   VG [label="                  Volumen Group (VG)                  "];
11: node [shape=box, style=filled, color=orange];
12:   PV1 [label="Physical Volumen 1 (PV)"];
13:   PV2 [label="Physical Volumen 2 (PV)"];
14: node [shape=box, style=filled, color=red];
15:   PP1 [label="Physical Partition 1 (PP)"];
16:   PP2 [label="Physical Partition 2 (PP)"];
17: edge [arrowhead=normal];
18:   VG  -> LV1;  VG -> LV2; VG -> LV3;
19:   PV1 -> VG;   PV2 -> VG;
20:   PP1 -> PV1;   PP2 -> PV2;
21: </graphviz>

Graph

tag

Schlagworte können bei der Suche nach Inhalten oder Lösungen sehr hilfreich sein. Das Plugin tag ermöglicht die Nutzung von Schlagworten.

Das Plugin kann über den Plugin-Manager installiert und über die Konfiguration verwaltet werden.

Beispiele

Das Einfügen einer Liste von Schlagworten kann über ein entsprechendes Tag erfolgen.

{{tag> test1 test2 test3}}

Es ist möglich eine Liste aller Inhalte anzuzeigen, die zu einer Schlagwortgruppe gehört.

{{topic> Wiki & Logbuch}}

Cloud

Wenn die Artikel schon mit Schlagworten versehen werden, sollten diese auch einfach genutzt werden können. Die Darstellung in einer Cloud ist hier ein einfacher Weg, für diesen Zweck wurde das Cloud-Plugin installiert. Die Installation des Plugins kann über den Plugin-Manager erfolgen.

Beispiele

Das Einbinden einer Cloud mit den vorhandenen Tags kann im Wiki einfach realisiert werden.

~~TAGCLOUD~~

Das Plugin kann auch ohne das Tag-Plugin arbeiten und in der Standardeinstellung die 50 meist verwendeten Worte als Cloud zusammenfassen.

~~CLOUD~~

Die Anzahl der Worte kann bis zu 999 anzuzeigenden Worten eingestellt werden.

~~CLOUD:10~~

Worte die von der Anzeige ausgeschlossen werden sollen, können in der Datei inc/lang/[lang-code]/stopwords.txt eingetragen werden.

Anpassungen

Die Farben der Cloud müssen an den dunklen Hintergrund des Wikis angepasst werden.

lib/plugins/cloud/style.css

 1: div.dokuwiki div#cloud { margin-bottom: 1em; }
 2:
 3: div.dokuwiki div#cloud a { padding: 0.5em; }
 4:
 5: div.dokuwiki div#cloud a.cloud1 { font-size: 10px; color: #D3E0F5; }
 6: div.dokuwiki div#cloud a.cloud2 { font-size: 12px; color: #AEC4E5; }
 7: div.dokuwiki div#cloud a.cloud3 { font-size: 14px; color: #88A9DB; }
 8: div.dokuwiki div#cloud a.cloud4 { font-size: 16px; color: #4A7AC2; }
 9: div.dokuwiki div#cloud a.cloud5 { font-size: 18px; color: #003F9E; }
10:
11: div.dokuwiki div#cloud a.cloud1_tag1 { font-size: 10px; color: #CEF0D0; }
12: div.dokuwiki div#cloud a.cloud2_tag1 { font-size: 12px; color: #AEE5B1; }
13: div.dokuwiki div#cloud a.cloud3_tag1 { font-size: 14px; color: #88DB8C; }
14: div.dokuwiki div#cloud a.cloud4_tag1 { font-size: 16px; color: #4AC250; }
15: div.dokuwiki div#cloud a.cloud5_tag1 { font-size: 18px; color: #009E08; }
16:
17: div.dokuwiki div#cloud a.cloud1_tag2 { font-size: 10px; color: #DeE0F5; }
18: div.dokuwiki div#cloud a.cloud2_tag2 { font-size: 12px; color: #AEC4E5; }
19: div.dokuwiki div#cloud a.cloud3_tag2 { font-size: 14px; color: #88A9DB; }
20: div.dokuwiki div#cloud a.cloud4_tag2 { font-size: 16px; color: #4A7AC2; }
21: div.dokuwiki div#cloud a.cloud5_tag2 { font-size: 18px; color: #104FaE; }

dw2pdf

Für den Export von Artikel in ein druckfähiges Format wurde das Plugin dw2pdf installiert. Vorher wurden verschiedene Methoden und Plugins ausprobiert, die aber alle nicht überzeugen konnten. Das verwendete Plugin rendert die Artikel in sauberes Postscript und fügt sowohl eine Kopf- wie auch eine Fußzeile und eine Quellenreferenz hinzu. Links können angeklickt werden und PDF-Lesezeichen werden aus der Überschriftenstruktur erzeugt. Zusätzlich ist dieses Plugin im Gegensatz zu seinen Mitbewerbern wie html2ps oder fpdf zügig in der Verarbeitung.

Das Plugin kann über den Plugin-Manager installiert werden.

Anpassungen

Leider sind mehre Anpassungen für die saubere Integration im Dokuwiki notwendig.

Integration eines PDF-Links in die obere Leiste

Zuerst ist in der main.php der verwendeten Vorlage die obere Bar-Leiste mit einem Eintrag für den PDF-Aufruf zu erweitern. Dieses wurde sowohl für die Knopf-, als auch für die Linkvariante durchgeführt.

lib/tpl/arctic_dark/main.php

72:       <div class="bar" id="bar__top">
73:         <div class="bar-left">
74:           <?php
75:             switch(tpl_getConf('wiki_actionlinks')) {
76:               case('buttons'):
77:                 tpl_button('edit');
78:                 tpl_button('history');
79:                 tpl_button('pdf');
80:                 break;
81:               case('links'):
82:                 tpl_actionlink('edit');
83:                 tpl_actionlink('history');
84:                 tpl_actionlink('pdf');
85:                 break;
86:             }
87:           ?>
88:         </div>

Danach müssen die PHP-Funktionen tpl_actionlink und tpl_button erweitert werden. Hier kann einfach die Fallunterscheidung mit einem Fall für den PDF-Export erweitert werde. Wichtig ist hier für die spätere Verarbeitung, dass das Action auf „do=export_pdf“ gesetzt wird.

template.php - tpl_actionlink

611: function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){
612:   global $ID;
613:   global $INFO;
614:   global $REV;
615:   global $ACT;
616:   global $conf;
617:   global $lang;
618:   global $auth;
619:
620:   // check disabled actions and fix the badly named ones
621:   $ctype = $type;
622:   if($type == 'history') $ctype='revisions';
623:   if(!actionOK($ctype)) return false;
624:
625:   $out = '';
626:   switch($type){
627:     case 'pdf':
628:       if(actionOK('pdf'))
629:         $out .= tpl_link(wl($ID,'do=export_pdf'),
630:                $pre.(($inner)?$inner:$lang['btn_export_pdf']).$suf,
631:                'class="action pdf" rel="nofollow"',1);
632:       break;

template.php - tpl_button

466: function tpl_button($type,$return=false){
467:   global $ACT;
468:   global $ID;
469:   global $REV;
470:   global $NS;
471:   global $INFO;
472:   global $conf;
473:   global $auth;
474:
475:   // check disabled actions and fix the badly named ones
476:   $ctype = $type;
477:   if($type == 'history') $ctype='revisions';
478:   if(!actionOK($ctype)) return false;
479:
480:   $out = '';
481:   switch($type){
482:     case 'pdf':
483:       if(actionOK('pdf'))
484:         $out .= html_btn('pdf',$ID,'',array('do' => 'export_pdf'));
485:       break;

Damit der Link oder der Knopf auch einen Text erhält, muss in allen verwendeten Sprachübersetzungen die passende Definition gesetzt werden.

inc/lang/de/lang.php"

20: $lang['btn_export_pdf']        = 'PDF exportieren';

Für das Icon ist das Design-Stylesheet der verwendeten Vorlage angepasst worden. Es wurde ein neuer Style für die Klasse Action PDF erstellt und über div.bar eingefügt. Zum Abschluss wurde eine passende Grafik in das Image-Verzeichnis kopiert.

lib/tpl/arctic_dark/arctic_design.css

415: div.dokuwiki div.bar a.pdf,
416: div.dokuwiki div.bar a.top {
417:   padding-left: 20px;
418: }
419:
420: div.dokuwiki div.bar a.pdf {
421:   background: transparent url(images/pdf.png) 0px 5px no-repeat;
422: }

ToDo

  • Steuercodes im Codetag-Bereich werden ausgegeben. Das Rendern der Code-Bereiche muss angepasst werden.
  • Grafiken sollen zentriert in die PDFs eingefügt werden.

Keywords

Für die Erstellung des HTML-Metatags 'keywords' der ausgelieferten Seite werden die Schlüsselwörter des Tag-Plugins verwendet. Damit auch für Seiten oder Artikel ohne Tags entsprechende Metadaten generiert werden können, wurde das Plugin Keywords installiert.

Installation

Das Plugin kann über die Pluginverwaltung installiert werden.

Beispiel

{{keywords>word1 word2 wordN}}

Description

Das Description-Plugin erzeugt aus dem automatisch generierten RSS-Abstract das HTML-Metatag 'Description'.

Installation

Das Plugin kann über die Pluginverwaltung installiert werden.

Templates

Metatags

Die Metatags 'Description' und 'Keywords' werden durch entsprechende Plugins automatisch generiert.

lib/tpl/arctic_dark/main.php

31: <head>
32:   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
33:
34:   <meta name="author" content="Marek Walther"/>
35:   <meta name="publisher" content="Marek Walther"/>
36:
37:   <title>
38:     <?php tpl_pagetitle()?>
39:     [<?php echo strip_tags($conf['title'])?>]
40:   </title>
41:
42:   <?php tpl_metaheaders()?>
43:
44:   <link rel="shortcut icon" href="<?php echo DOKU_TPL?>images/favicon.ico" />
45:
46:   <?php /*old includehook*/ @include(dirname(__FILE__).'/meta.html')?>
47:
48: </head>
wiki/logbuch.txt · Zuletzt geändert: 2010-08-14 23:04 von Marek Walther