0 Votes

Wiki source code of Menu content

Last modified by Ryan C on 2025/05/12 16:48

Show last authors
1 {{velocity}}
2 ## Add a top panel menu with customs entries
3 ## Doc: OutilsAdmin.MenuDocumentation.WebHome
4 ## Children page prefix for menu content
5 #set($TabPrefx = 'Tab-')
6 #set($colPrefx = 'Col-')
7 #set($ListPrefx = 'Listitem-')
8 ## Page displayed all menu content, all menu entries in flat way
9 #set($MenuContentDoc=$xwiki.getDocument("CustomExtension.TopPanelMenu.Content.WebHome"))
10 ## Main summary page (target of 'Main summary' link), include of previous doc ("CustomExtension.TopPanelMenu.Content.WebHome")
11 #set($MenuSommaireGalDoc=$xwiki.getDocument("CustomExtension.TopPanelMenu.MainSummary.WebHome"))
12 #set($useMainWiki = false)
13 ## Menu display in flat way on CustomExtension.TopPanelMenu.Content.WebHome page
14 #if ($doc.fullName == "CustomExtension.TopPanelMenu.Content.WebHome")
15 #set($discard = $xwiki.ssx.use("CustomExtension.TopPanelMenu.Style.Flat"))
16 ## menu displayed in flat way
17 #set($Flat = true)
18 #if ($hasAdmin)
19 ## Documentation
20 [[(Documentation v1.0 10/07/18)>>doc:CustomExtension.TopPanelMenu.Top panel menu documentation.WebHome]]
21 ----
22 #set($canUseMainWiki = !$xcontext.isMainWiki() && $xwiki.exists("${services.wiki.mainWikiId}:CustomExtension.TopPanelMenu.Content.WebHome"))
23 #if($canUseMainWiki)
24 #set($configDoc = $xwiki.getDocument('CustomExtension.TopPanelMenu.WikiSelectConfig'))
25 #set($settings = $configDoc.getObject('CustomExtension.TopPanelMenu.WikiSelectClass'))
26 #if (!$settings)
27 #set($discard = $configDoc.setHidden(true))
28 #set($discard = $configDoc.createNewObject('CustomExtension.TopPanelMenu.WikiSelectClass'))
29 #set($discard = $configDoc.save('created config object', true))
30 #set($settings = $configDoc.getObject('CustomExtension.TopPanelMenu.WikiSelectClass'))
31 #end
32 #set($useMainWiki = $settings.getValue('useMainWiki') == 1)
33 {{html wiki="true" clean="false"}}
34 <form class="xformInline" action="$escapetool.xml($configDoc.getURL('save'))" method="post">
35 <label for="CustomExtension.TopPanelMenu.WikiSelectClass_0_useMainWiki">Use navigation from main wiki instead?</label> $settings.display('useMainWiki','edit')
36 <input type="hidden" name="form_token" value="$services.csrf.getToken()" />
37 <input type="hidden" name="custom_action" value="save" />
38 <input type="submit" name="action_save" class="button btn btn-primary" value="Save Settings" />
39 </form>
40 {{/html}}
41
42 #end
43 #else
44 ## no admin, phooey. we need to set the $useMainWiki anyway
45 #set($configDoc = $xwiki.getDocument('CustomExtension.TopPanelMenu.WikiSelectConfig'))
46 #if($canUseMainWiki && $configDoc != $null)
47 #set($settings = $configDoc.getObject('CustomExtension.TopPanelMenu.WikiSelectClass'))
48 #if($settings)
49 #set($useMainWiki = $settings.getValue('useMainWiki') == 1)
50 #end
51 #end
52 #end
53 #else
54 #set($discard = $xwiki.jsx.use("CustomExtension.TopPanelMenu.Style.NavBar"))
55 #set($discard = $xwiki.ssx.use("CustomExtension.TopPanelMenu.Style.NavBar"))
56 #set($Flat = false)
57 #end
58 #set($FlatContent ='')
59 #set ($MyTabStr='')
60 #set($CloseIcone = '<a class="menu-close" data-dismiss="modal" type="button" title="' + $services.localization.render('CustomExtension.TopPanelMenu.Content.Close.Title') + '"><span class="glyphicon glyphicon-remove"> </span></a>')
61 {{html wiki="true"}}
62 ## List all children CustomExtension.TopPanelMenu.Content page to retrive each menu tabs and theirs content
63 ## <!-- Tabs -->
64 #set ($MyTabStr=${MyTabStr} + '<ul id="top-menu-tabs" class="nav nav-tabs navbar-inverse">')
65 ## HOME icon
66 #set ($MyTabStr=${MyTabStr} + '<li class="menu-panel"><a href="' + $services.rendering.escape($escapetool.xml($xwiki.getURL('Main.WebHome', 'view')), $doc.syntax) + '" title="' + $services.localization.render('CustomExtension.TopPanelMenu.Content.Home.Icon') +'"><span class="glyphicon glyphicon-home"> </span></a></li>')
67 ## Columns
68 #set ($MyColumns='')
69 #set ($MyPanel='')
70 #set($children = $sorttool.sort($MenuContentDoc.getChildren()))
71 #foreach ($child in $children)
72 #set($MyDoc=$xwiki.getDocument($child))
73 ## Page name and title
74 #set($MyDocName= $MyDoc.documentReference.parent.name)
75 #set($MyDocTitle= "${MyDoc.title}")
76 #if ($MyDocName.startsWith("$TabPrefx"))
77 ##tabs
78 #set($FlatContent =${FlatContent} + "= $MyDocTitle =
79 ")
80 #set ($MyTabStr=${MyTabStr} + '<li class="menu-panel" title="' + $services.localization.render('CustomExtension.TopPanelMenu.Content.Open.Menu') + '"><a data-toggle="tab" href="#' + $MyDocName +'">' + $MyDocTitle +'</a></li>')
81 ##
82 ## <!-- Group (columns and lists) displayed when click on tab -->
83 #set ($MyPanel=${MyPanel} + '<div id="' + $MyDocName +'" class="tab-pane fade">')
84 ## Close Button
85 #set ($MyPanel=${MyPanel} + $CloseIcone )
86 #set ($MyPanel=${MyPanel} + '<div class="row top-menu-row">')
87 ## Displayed all colums (children page of col-xx on the line)
88 ## List children page of Tab-01
89 #set($TabDocs=$MyDoc)
90 #foreach ($child1 in $sorttool.sort($TabDocs.getChildren()))
91 #set($child1Ref = $services.model.resolveDocument($child1))
92 ##<!-- 1st and other columns -->
93 #if ($child1Ref.parent.name.startsWith("$colPrefx"))
94 #set ($MyPanel=${MyPanel} + "<div class='col col-md-3 menu-col'>")
95 ## <!-- Groups vertical aligned -->
96 ## List bulleted lists: children pages of Col-xx
97 #set($ColDocs=$xwiki.getDocument($child1Ref))
98 #foreach ($child2 in $sorttool.sort($ColDocs.getChildren()))
99 #set($child2Ref = $services.model.resolveDocument($child2))
100 #if ($child2Ref.parent.name.startsWith("$ListPrefx"))
101 #set($child2RefStr = $services.model.serialize($child2Ref, 'default'))
102 #set($MyDoc2=$xwiki.getDocument($child2Ref))
103 #set($FlatContent =${FlatContent} + "== ${MyDoc2.title} ==
104 ")
105 ## Start of Bulleted list + links group title
106 #set ($MyPanel=${MyPanel} + "<div class='p-2 menu-listitem'>")
107 #set ($MyPanel=${MyPanel} + "<p class='titre-listitem'>${MyDoc2.title}</p>")
108 #set ($Liens="{{include reference='$child2RefStr' context='new' /}}")
109 #set ($MyPanel=${MyPanel} + "$Liens")
110 #set ($FlatContent =${FlatContent} + "$Liens
111 ")
112 #set ($MyPanel=${MyPanel} + "</div>")
113 #end
114 ## End of bulleted lists
115 #end
116 ## End of column
117 #set ($MyPanel=${MyPanel} + "</div>")
118 ##End of 'col col-md-3 menu-col'
119 #end
120 #end
121 ## End of all columns (children pages of col-xx)
122 #set ($MyPanel=${MyPanel} + '</div>') ##Fin de "row top-menu-row" (OK)
123 #set ($MyPanel=${MyPanel} + '<a href="' + $services.rendering.escape($escapetool.xml($xwiki.getURL("$MenuSommaireGalDoc", 'view')), $doc.syntax) + '" class="GoToSommaire" type="button" title="' + $services.localization.render("CustomExtension.TopPanelMenu.Content.GoToSummary") +'">' + $services.localization.render("CustomExtension.TopPanelMenu.Content.Summary") + '</a>')
124 #set ($MyPanel=${MyPanel} + '</div>') ##End of "tab-pane fade" (OK)
125 #end
126 #end
127 #set ($MyTabStr=${MyTabStr} + '</ul>')
128 ## displayed menu or summary table
129 #if ($Flat)
130
131 #if($useMainWiki)
132 <div class="navigationContentUnused">
133 #end
134
135 {{box cssClass="floatinginfobox" title="**Sommaire**"}}
136 {{toc numbered="true" depth="3"/}}
137 {{/box}}
138 ## If numberheadings extension is installed
139 ## {{numberedheadings/}}
140 $FlatContent
141
142 #if($useMainWiki)
143 </div>
144 #end
145
146 #else
147 <div class="menu-container">
148 ## Tabs
149 $MyTabStr
150 ## Menu displayed
151 <div id="top-menu-content" class="tab-content">
152 $MyPanel
153 </div> ## End of "top-menu-content"
154 </div> ## End of "menu-container"
155 #end
156 {{/html}}
157 {{/velocity}}