Technologické informace jsou v naší firmě důležité, takže ani my jsme neodolali pokušení používat Wiki. Existuje množství wiki engine v různých jazycích, naše volba byla javová – zvolili jsme JSPWiki.

Chtěl bych vám ukázat, jak je snadné v JSPWiki vytvořit zásuvný modul, neboli vlastní Wiki značku. Příkladem bude modul, který umožňuje vložit do stránek soubor ve formátu SVG. Nejprve krátce o tomto formátu.
SVG
SVG vektorový grafický formát, který je možné zobrazit ve webové stránce. Pokud je mi známo, je to jediný standartizovaný vektorový formát, který je možné na webu použít. Bohužel není příliš známý ani rozšířený, ale velmi často je v prohlížeči implicitně nainstalován nebo je možné prohlížeč rozšířit zásuvným modulem od Adobe.
Definice značky
Pojďme tedy k věci – co vlastně chceme do stránek přidat. Jde o následující jednoduchý HTML kód:
<embed src="/attach/AnyPage/test.svg"
width="75" height="35" type="image/svg+xml">
Psát HTML přímo do Wiki je proti její logice, takže zkusme si představit ve Wiki následující značku. Chceme tedy vytvořit zásuvný modul, který z této značky vytvoří výše uvedeným HTML kód – to je naše zadání pro modul.
[{svg src='test.svg' width='75' height='35'}]
Kód zásuvného modulu
package oxy.wiki;
import java.util.Map;
import com.ecyrd.jspwiki.WikiContext;
import com.ecyrd.jspwiki.WikiEngine;
import com.ecyrd.jspwiki.plugin.PluginException;
import com.ecyrd.jspwiki.plugin.WikiPlugin;
import com.ecyrd.jspwiki.attachment.Attachment;
import com.ecyrd.jspwiki.attachment.AttachmentManager;
public class svg implements WikiPlugin {
// Tridu je nutne pojmenovat stejne jako znacku
public String execute (WikiContext context, Map paramMap)
throws PluginException {
try{
// nacteni parametru tagu
String src = (String)paramMap.get("src"); // nazev obrazku
String width = (String)paramMap.get("width"); // sirka obrazku
String height = (String)paramMap.get("height"); // vyska
if (src == null)
throw new PluginException("svg-PlugIn: no \"src\" given");
// nasleduji vypocet skutecneho URL obrazku
String link = src;
WikiEngine engine = context.getEngine();
AttachmentManager mgr = engine.getAttachmentManager();
Attachment att = mgr.getAttachmentInfo( context, src );
if( att != null ){
link = context.getURL(WikiContext.ATTACH, att.getName());
}
// vykresleni HTML tagu
StringBuilder sb = new StringBuilder();
sb.append("<embed src=\"");
sb.append(link);
sb.append("\"");
if (width != null){
sb.append(" width=\"");
sb.append(width);
sb.append('\"');
}
if (height != null){
sb.append(" height=\"")
sb.append(height);
sb.append('\"');
}
sb.append(" type=\"image/svg+xml\">");
// vrati vykresleny HTML tag
return sb.toString();
} catch (Exception e) {
String message = "error in " +
this.getClass().getName() + ": " + e.getMessage();
throw new PluginException(message);
}
};
}
Nasazení modulu do JSPWiki
Nasazení modulu je jednoduché – stačí modul nahrát do příslušného adresáře a do souboru jspwiki.properties do property jspwiki.plugin.searchPath přidat název package našeho modulu. Pro načtení nového nastavení je potřeba JSPWiki restartovat.
Závěr
Snad vás můj článek inspiruje k používání JSPWiki a pomůže vám s vytváření modulů do ní. A pokud ne, tak alespoň článek připomenul jeden zajímavý grafický formát…

Poslední komentáře
před 1 rok 6 dnů
před 1 rok 13 týdnů
před 1 rok 34 týdnů
před 1 rok 41 týdnů
před 2 roky 13 týdnů
před 2 roky 13 týdnů
před 2 roky 13 týdnů
před 2 roky 51 týdnů
před 2 roky 51 týdnů
před 2 roky 51 týdnů