Wiki source code of Menu content
Last modified by Kay Joo on 2026/05/16 08:21
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
![]() |
1.1 | 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}} |
✨ 실시간 통합 피드 (1인 1글 제한)
