===== Wstęp =====
* celem zadania było utworzenie pluginu dla Dokuwiki umożliwiającego renderowanie diagramów z zamieszczonego kodu DOT, oraz plików umieszczonych w wiki.
===== Rozbudowa istniejącego pluginu =====
Graphviz plugin dla Dokuwiki został oparty na znalezionym rozwiązaniu http://wiki.ioslo.net/dokuwiki/graphviz/
Wersja ta obsługiwała podstawową funkcjonalność, tj. renderowanie diagramów z zamieszczonego w wiki kodu dot.
W stosunku do znalezionej w sieci wersji wprowadzono następujące ulepszenia:
* możliwość renderowania diagramów z zamieszczonych w wiki plików dot
* możliwość renderowania diagramów z plików dot znajdujących się w sieci, poprzez podanie ścieżki url. Funkcjonalność ta została osiągnięta, dzięki wykorzystaniu narzędzia Curl.
* dodano możliwość zdefiniowania wysokości i szerokości renderowanych diagramów
* poprawiono sposób generowania plików png, gdyż w poprzedniej wersji zastosowane nieoptymalne rozwiązanie powodujące utratę jakości.
===== Instalacja pluginu =====
* plugin dostarczony jest w postaci archiwum TAR. Instalacja polega na wskazaniu odpowiedniej lokalizacji w managerze pluginów Dokuwiki. Dalszy proces instalacji przebiega automatycznie.
* aby możliwe było zamieszczanie w wiki plików *.dot niezbędne jest dodanie w pliku conf/mime.conf linii:
dot application/graphviz
===== Sposób użycia =====
* aby kod dot został przetworzony należy umieścić go pomiędzy odpowiednimi tagami, tak jak pokazano w poniższym przykładzie:
KOD DOT
* przykładowo po wpisaniu kodu:
digraph G {
a -> b;
}
uzyskany zostanie następujący efekt:
digraph G {
a -> b;
}
* istnieje możliwość wczytania pliku DOT zamieszczonego w wiki, np.
* można również wczytać plik DOT znajdujący się pod wskazanym adresem URL (do odczytania zawartości pliku plugin wykorzystuje narzędzie [[http://curl.haxx.se/|Curl]]).
* istnieje możliwość wyboru stylu grafu (domyślnie dot) spośród dostępnych opcji: dot, neato, twopi, circo, fdp
KOD DOT
* można ustalić rozmiar renderowanej bitmapy ustawiając odpowiednie wartości parametrów width i height:
KOD DOT
* Bardziej rozbudowany przykład użycia:
===== Zasadzki =====
W związku ze sposobem działania mechanizmu cache w Dokuwiki istnieje możliwość, że plugin nie zadziała poprawnie. Nie wgłębiając się w szczegóły mechanizm cache w Dokuwiki wywołuje plugin podczas zapisywania dokumentu. Sam plugin renderuje diagramy w przypadku, gdy natrafi na kod, którego nigdy wcześniej nie renderował. W przeciwnym przypadku zostanie załadowany obrazek przechowywany w pamięci cache. Może się zatem zdarzyć, że renderując diagram z zewnętrznego pliku który ulegnie zmianie, plugin tych zmian nie wykryje gdyż podany kod:
""
będzie w obu przypadkach identyczny. W razie wystąpienia tego typu problemów pomóc powinno wyczyszczenie zawartości katalogu:
wiki/data/media/graphviz
Można również użyć opcji NOCACHE -> http://wiki.splitbrain.org/wiki:caching