Code source wiki de DiagramMacros

Modifié par Admin le 21/07/2025 - 09:06

Afficher les derniers auteurs
1 {{velocity}}
2 #macro(displayConfluenceDiagramModal $id $diagram)
3
4 {{html clean="false"}}
5 <div class="modal fade" id="confluencediagram-${id}-modal" tabindex="-1" role="dialog" aria-labelledby="confluencediagram-${id}-title" aria-hidden="true">
6 <div class="modal-dialog modal-dialog-centered" role="document">
7 <div class="modal-content">
8 <div class="modal-header">
9 <div class="modal-title" id="confluencediagram-${id}-title">$escapetool.xml($services.localization.render('confluencediagram.modal.title'))</div>
10 <button type="button" class="close" data-dismiss="modal" aria-label="$escapetool.xml($services.localization.render('confluencediagram.modal.btn.close'))">
11 <span aria-hidden="true">&times;</span>
12 </button>
13 </div>
14 <div class="modal-body">
15 $escapetool.xml($services.localization.render('confluencediagram.modal.text'))
16 </div>
17 <div class="modal-footer">
18 <button type="button" class="btn btn-secondary" data-dismiss="modal">$escapetool.xml($services.localization.render('confluencediagram.modal.btn.close'))</button>
19 <form action="" method="post">
20 <input name="action" value="createDiagram" type="hidden" />
21 <input name="diagram" class="delete-diagram-page" type="hidden" value="$escapetool.xml($diagram)"/>
22 <button type="submit" class="btn btn-primary delete-diagram-btn">$escapetool.xml($services.localization.render("confluencediagram.modal.btn.confirm"))</button>
23 </form>
24 </div>
25 </div>
26 </div>
27 </div>
28 {{/html}}
29 #end
30 #macro(warnAboutDiagramAppInstall)
31 {{warning}}
32 #set ($queryString = $escapetool.url({
33 'section': 'XWiki.Extensions',
34 'search': 'Diagram'
35 }))
36 #set ($syntax = $services.rendering.resolveSyntax($xwiki.getCurrentContentSyntaxId()))
37 #set ($installURL = $xwiki.getURL('XWiki.XWikiPreferences', 'admin', $queryString))
38 #set ($message = $services.localization.render('confluencediagram.installRequired', ['linkPrefix', 'linkSuffix']))
39 #set ($escapedMessage = $services.rendering.escape($message, $syntax))
40 #set ($escapedLinkPrefix = $services.rendering.escape('linkPrefix', $syntax))
41 #set ($escapedLinkSuffix = $services.rendering.escape('linkSuffix', $syntax))
42 #set ($escapedMessage = $escapedMessage.replace($escapedLinkPrefix, '[[').replace($escapedLinkSuffix, ">>path:$installURL||target='_blank']]"))
43 $escapedMessage
44 {{/warning}}
45 #end
46 #macro(displayConfluenceDiagram)
47 #if (!$services.diagram)
48 #warnAboutDiagramAppInstall()
49 #else
50 #set($discard = $xwiki.jsx.use('Confluence.Macros.DiagramMacros'))
51 #set($discard = $xwiki.ssx.use('Confluence.Macros.DiagramMacros'))
52 ## Parameter for the gliffy macro
53 #set($diagramName = $xcontext.macro.params.name)
54 #if("$!diagramName" == "")
55 ## Parameter for the drawio macro
56 #set($diagramName = $xcontext.macro.params.diagramName)
57 #end
58 ## By default the diagramDocument should be the current doc
59 #set ($diagramDocument = $doc)
60 ## Get original document
61 #set ($originalDoc = $xcontext.macro.params.originalDocumentRef)
62 #if ("$!originalDoc" != '')
63 #set ($diagramDocument = $xwiki.getDocument($originalDoc))
64 #end
65 ## Used for gliffy macros that include a diagram from another page.
66 #set ($pageID = $xcontext.macro.params.pageid)
67 #if ("$!pageID" != '' && "$!originalDoc" == '')
68 #set ($reference = $services.gliffyscript.getReferenceFromConfluenceID($pageID))
69 ## When the reference is null we should display a warning.
70 #if ($reference)
71 #set ($diagramDocument = $xwiki.getDocument($reference))
72 #else
73 #set ($displayWarning = true)
74 #end
75 #set ($originalDoc = $diagramDocument)
76 #end
77 ## "Constants"
78 #set($previewImageName = "${diagramName}.png")
79 #set($previewImage = $diagramDocument.getAttachment($previewImageName))
80 #if (!$previewImage)
81 ## In some cases, the drawio file name is not the same as the PNG one.
82 #set($previewImageName = $xcontext.macro.params.tempPreview)
83 #set($previewImage = $diagramDocument.getAttachment($previewImageName))
84 #end
85 ## Variables
86 #set($displayDiagram = true)
87 #set($diagram = $NULL)
88 ##
89 ## Check if the diagram page exists
90 #set($diagramDocumentReferenceSerialized = $services.model.serialize($diagramDocument.documentReference, 'local'))
91 #set($diagrams = $services.query.xwql('from doc.object(Confluence.Macros.DiagramClass) as diagramObj where diagramObj.page = :page and diagramObj.diagramName = :diagramName').bindValue('page', $diagramDocumentReferenceSerialized).bindValue('diagramName', "$!diagramName").setLimit(1).execute())
92 #if($diagrams.size() > 0)
93 #set($diagram = $diagrams.get(0))
94 #end
95 ##
96 (% class="confluence-diagram-container" %)(((
97 ## The diagram exists -> display it
98 #if($displayDiagram && $diagram)
99 {{diagram reference="$services.rendering.escape($diagram, $xwiki.currentContentSyntaxId)" cached="false" /}}
100
101 #if($diagram && $xcontext.action != 'export')
102 ##
103 ## Display a button allowing the user to go back to confluence diagram mode
104 #if ($services.security.authorization.hasAccess('delete', $diagram))
105 #set($id = $mathtool.random(1, 100000))
106 {{translation key='confluencediagram.delete'/}}
107
108 {{html clean="false"}}
109 <a class="btn btn-primary" data-toggle="modal" data-target="#confluencediagram-${id}-modal">$escapetool.xml($services.localization.render('confluencediagram.delete.link'))</a>
110 {{/html}}
111
112 #displayConfluenceDiagramModal($id $diagram)
113 #end
114 #end
115 #else
116 #set($displayDiagram = false)
117 #end
118 ## Display the preview image if it exists
119 #if($previewImage && !$displayDiagram)
120 (% class="thumbnail" %)(((
121 #if("$!originalDoc" == '')
122 [[image:$services.rendering.escape($previewImageName, $services.rendering.resolveSyntax($xwiki.getCurrentContentSyntaxId()))]]
123 #else
124 {{html clean='false'}}<img src='$xwiki.getDocument($originalDoc).getAttachmentURL($previewImageName, 'download')'/>{{/html}}
125 #end
126 ##
127 ## Display a button allowing the user to create an XWiki diagram
128 #if ($services.security.authorization.hasAccess('edit', $diagramDocument.documentReference) && $xcontext.action != 'export')
129 (% class="caption" %)(((
130 {{translation key='confluencediagram.create'/}}
131
132 {{html clean=false}}
133 <form action="" method="post">
134 <input name="action" value="createDiagram" type="hidden" />
135 <input name="pageReferenceSerialized" class="create-diagram-page" value="$escapetool.xml($diagramDocumentReferenceSerialized)" type="hidden" />
136 <input name="diagramName" class="create-diagram-name" value="$escapetool.xml($diagramName)" type="hidden" />
137 <input name="diagramPNGName" class="create-diagram-png-name" value="$escapetool.xml($previewImageName)" type="hidden" />
138 <button type="submit" class="btn btn-primary create-diagram-btn">$escapetool.xml($services.localization.render('confluencediagram.create.confirm'))</button>
139 </form>
140 {{/html}}
141 )))
142 )))
143 #end
144 #elseif("$pageID" != "" && $displayWarning)
145 ##If the display fails then show a warning.
146 #set ($syntax = $services.rendering.resolveSyntax($xwiki.getCurrentContentSyntaxId()))
147 #set ($message = $services.localization.render('confluencediagram.warning.notfound'))
148
149 {{warning}}$message{{/warning}}
150 #end
151 )))
152 #end
153 #end
154 #macro(checkDiagramAppInstall)
155 #if (!$services.diagram)
156 #warnAboutDiagramAppInstall()
157 #end
158 #end
159 {{/velocity}}