Code source wiki de DiagramMacros

Modifié par superadmin le 06/04/2025 - 00:00

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 ## Get original document
59 #set ($originalDoc = $xcontext.macro.params.originalDocumentRef)
60 #if ("$!originalDoc" != '')
61 #set ($doc = $xwiki.getDocument($originalDoc))
62 #end
63 ## "Constants"
64 #set($previewImageName = "${diagramName}.png")
65 #set($previewImage = $doc.getAttachment($previewImageName))
66 #if (!$previewImage)
67 ## In some cases, the drawio file name is not the same as the PNG one.
68 #set($previewImageName = $xcontext.macro.params.tempPreview)
69 #set($previewImage = $doc.getAttachment($previewImageName))
70 #end
71 ## Variables
72 #set($displayDiagram = true)
73 #set($diagram = $NULL)
74 ##
75 ## Check if the diagram page exists
76 #set($docReferenceSerialized = $services.model.serialize($doc.documentReference, 'local'))
77 #set($diagrams = $services.query.xwql('from doc.object(Confluence.Macros.DiagramClass) as diagramObj where diagramObj.page = :page and diagramObj.diagramName = :diagramName').bindValue('page', $docReferenceSerialized).bindValue('diagramName', "$!diagramName").setLimit(1).execute())
78 #if($diagrams.size() > 0)
79 #set($diagram = $diagrams.get(0))
80 #end
81 ##
82 (% class="confluence-diagram-container" %)(((
83 ## The diagram exists -> display it
84 #if($displayDiagram && $diagram)
85 {{diagram reference="$services.rendering.escape($diagram, $xwiki.currentContentSyntaxId)" cached="false" /}}
86
87 #if($diagram && $xcontext.action != 'export')
88 ##
89 ## Display a button allowing the user to go back to confluence diagram mode
90 #if ($services.security.authorization.hasAccess('delete', $diagram))
91 #set($id = $mathtool.random(1, 100000))
92 {{translation key='confluencediagram.delete'/}}
93
94 {{html clean="false"}}
95 <a class="btn btn-primary" data-toggle="modal" data-target="#confluencediagram-${id}-modal">$escapetool.xml($services.localization.render('confluencediagram.delete.link'))</a>
96 {{/html}}
97
98 #displayConfluenceDiagramModal($id $diagram)
99 #end
100 #end
101 #else
102 #set($displayDiagram = false)
103 #end
104 ## Display the preview image if it exists
105 #if($previewImage && !$displayDiagram)
106 (% class="thumbnail" %)(((
107 #if("$!originalDoc" == '')
108 [[image:$services.rendering.escape($previewImageName, $services.rendering.resolveSyntax($xwiki.getCurrentContentSyntaxId()))]]
109 #else
110 {{html clean='false'}}<img src='$xwiki.getDocument($originalDoc).getAttachmentURL($previewImageName, 'download')'/>{{/html}}
111 #end
112 ##
113 ## Display a button allowing the user to create an XWiki diagram
114 #if ($services.security.authorization.hasAccess('edit', $doc.documentReference) && $xcontext.action != 'export')
115 (% class="caption" %)(((
116 {{translation key='confluencediagram.create'/}}
117
118 {{html clean=false}}
119 <form action="" method="post">
120 <input name="action" value="createDiagram" type="hidden" />
121 <input name="pageReferenceSerialized" class="create-diagram-page" value="$escapetool.xml($docReferenceSerialized)" type="hidden" />
122 <input name="diagramName" class="create-diagram-name" value="$escapetool.xml($diagramName)" type="hidden" />
123 <input name="diagramPNGName" class="create-diagram-png-name" value="$escapetool.xml($previewImageName)" type="hidden" />
124 <button type="submit" class="btn btn-primary create-diagram-btn">$escapetool.xml($services.localization.render('confluencediagram.create.confirm'))</button>
125 </form>
126 {{/html}}
127 )))
128 )))
129 #end
130 #end
131 )))
132 #end
133 #end
134 #macro(checkDiagramAppInstall)
135 #if (!$services.diagram)
136 #warnAboutDiagramAppInstall()
137 #end
138 #end
139 {{/velocity}}