Changes for page PlantUMLMacroGClass
Last modified by Helge Dahl on 2018/03/07 23:26
From empty
To version 1.1
edited by Helge Dahl
on 2018/01/23 13:01
on 2018/01/23 13:01
Change comment: Imported from XAR
Summary
-
Page properties (6 modified, 0 added, 0 removed)
-
Attachments (0 modified, 1 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,0 +1,1 @@ 1 +PlantUMLMacroGClass - Parent
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.PlantUMLMacro - Author
-
... ... @@ -1,1 +1,1 @@ 1 - XWiki.XWikiGuest1 +xwiki:XWiki.hde - Default language
-
... ... @@ -1,0 +1,1 @@ 1 +en - Syntax
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki 2. 11 +XWiki 2.0 - Content
-
... ... @@ -1,0 +1,80 @@ 1 +/* Groovy Class #* */ 2 + 3 +import net.sourceforge.plantuml.* 4 + 5 +class PlantUMLMacroGClass { 6 + def umldoc; 7 + def ctx; 8 + def umltext; 9 + def imageFormat; 10 + def enableImageMap; 11 + 12 + void setObjects( doc, context, text, format, imageMap) { 13 + umldoc = doc 14 + ctx = context 15 + umltext = text 16 + imageFormat = format 17 + enableImageMap = imageMap 18 + } 19 + 20 + String run( request, response) { 21 + // Using umlref, each diagram of the wiki page has its own unique url 22 + def umlref="1" 23 + if (null != ctx.umlref) { 24 + umlref=Integer.toString(Integer.valueOf(ctx.umlref)+1) 25 + } 26 + ctx.put("umlref", umlref) 27 + 28 + if("true".equals(request.preview)){ 29 + umltext = request.getSession().getAttribute("preview_uml_" + umlref) 30 + //request.getSession().removeAttribute("preview_uml_" + umlref) 31 + } 32 + 33 + def reader = new SourceStringReader("@startuml\n"+umltext+"\n@enduml") 34 + if ("plain".equals(request.xpage)) { 35 + if( !umlref.equals(request.uml) ){ 36 + return ""; 37 + } 38 + response.setContentType( "svg".equals(imageFormat) ? "image/svg+xml" : "image/png" ) 39 + def img = response.getOutputStream() 40 + def desc = reader.outputImage(img, new FileFormatOption("svg".equals(imageFormat) ? FileFormat.SVG : FileFormat.PNG)) 41 + img.close(); 42 + return "" 43 + } else if("xpart".equals(request.xpage)) { 44 + return "" 45 + } else { 46 + def preview = false 47 + if("wysiwyginput".equals(request.xpage) || request.getRequestURL().indexOf("/bin/preview/") != -1){ 48 + imageFormat = "png" 49 + enableImageMap = true 50 + preview = true 51 + request.getSession().setAttribute("preview_uml_" + umlref, umltext) 52 + } 53 + if("svg".equals(imageFormat)){ 54 + return "{{html clean=\"false\"}}" + "<p><embed src=\"" + umldoc.getURL("get") + "?xpage=plain¨=" + umlref + "\"/></p>" + "{{/html}}" 55 + } else { 56 + if( !enableImageMap ){ 57 + return "[[image:"+umldoc.getURL("get")+"?xpage=plain¨="+umlref+"||style=\"max-width:100%\"]]" 58 + } else { 59 + def imgMapHtml = "<map name=\"umlmap"+umlref+"\">"; 60 + String[] mapLines = new String[0]; 61 + //String map = reader.generateImage(new NullOutputStream(), new FileFormatOption(FileFormat.PNG, false)); 62 + String map = reader.getCMapData(0, new FileFormatOption(FileFormat.PNG, false)); 63 + if( map != null ){ 64 + mapLines = map.split("[\\r\\n]"); 65 + } 66 + for (int i = 1; (i + 1) < mapLines.length; i++) { 67 + imgMapHtml += mapLines[i] + "\n"; 68 + } 69 + imgMapHtml += "</map>" 70 + int random = (int)(Math.random() * 100) 71 + return "{{html clean=\"false\"}}" + 72 + "<p><img src=\"" + umldoc.getURL("get") + "?xpage=plain¨=" + umlref + (preview ? "&preview=true" : "") + "\" style=\"max-width:200%\" usemap=\"#umlmap"+umlref + "\"/>" + imgMapHtml + "</p>" + 73 + "{{/html}}" 74 + } 75 + } 76 + } 77 + } 78 +} 79 + 80 +/* *# */
- plantuml.jar
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.hde - Size
-
... ... @@ -1,0 +1,1 @@ 1 +0 bytes - Content