XWiki: kompletten Bereich als HTML exportieren.

16. Dezember 2010


 

XWiki hat ein nettes Feature, das es erlaubt, einzelne Seiten als HTML zu exportieren. Was weniger bekannt ist, obwohl dokumentiert, ist die Möglichkeit, mehrere Seiten zugleich zu exportieren.

Das liegt eventuell daran, dass dieses Feature nur dadurch erreichbar ist, dass man on der URL herumeditiert, eine gewisse Ahnung von HQL hat, und dabei die entsprechenden Werte im Kopf URL-encoded.

Ich vermute, dass es kein User-bashing ist, wenn ich mal behaupte, dass dies für die meisten Nutzer an der einen oder anderen Stelle oberhalb der Frustrationstoleranzschwelle liegt. Wenn die volle Flexibilität nicht gefragt ist, kann aber mit XWiki schnell etwas benutzerfreundliches gebastelt werden.

Zum Beispiel lässt sich ein „Exportieren Sie diesen Bereich“ Makro nach dem folgenden Kochrezept erstellen:

  • Auf irgend einer Seite in den Object-editor gehen
  • ein Objekt vom Typ „XWiki.WikiMacroClass“ hinzufügen
  • in dem neuen Objekt z.B. die folgenden Felder hinzufügen
    • Macro id: export_space_as_html
    • Macro name: HTML-Bereichsexport
    • Macro description: Ein Link, der es erlaubt, den aktuellen Bereich als HTML zu exportieren.
    • Default category: Content
    • Supports inline mode: Yes
    • Macro content type: No content
    • Content description: (leer lassen)
    • Macro code: wie folgt:

{{velocity}}
{{html}}
#set($exportQuery = $escapetool.url("${doc.getSpace()}.%"))
#set($exportUrl=$doc.getURL("export", "format=html&pages=$exportQuery"))
Bereich als HTML exportieren.
{{/html}}
{{/velocity}}

Einmal abspeichern, und das Makro lässt sich über den WYSIWYG-editor auch von technisch unbeschädigten Nutzern überall einbinden.

Leider funktioniert das Macro nicht in einem „virtuellen“ Wiki; wenn das Macro nicht in dem zentralen Verwaltungswiki eingetragen wird, dann kann es leider nicht verwendet werden; statt dessen müsste der obige Code jeweils an den entsprechenden Stellen im „Quellen“-editor der entsprechende Code eingefügt werden.