Changes for page Administration

Last modified by Leon Poon on 2025/05/12 14:26

From version 4.1
edited by Leon Poon
on 2020/01/05 06:16
Change comment: Install extension [org.xwiki.platform:xwiki-platform-administration-ui/11.10.2]
To version 8.1
edited by Leon Poon
on 2024/03/23 04:26
Change comment: Install extension [org.xwiki.platform:xwiki-platform-administration-ui/15.10.7]

Summary

Details

Page properties
Content
... ... @@ -9,7 +9,7 @@
9 9  #set ($adminAction = 'admin')
10 10  #set ($crtCategoryId = "$!{request.category}")
11 11  #if ($crtCategoryId != '')
12 - #set ($crtCategoryId = $mathtool.toInteger($crtCategoryId))
12 + #set ($crtCategoryId = $numbertool.toNumber($crtCategoryId).intValue())
13 13  #end
14 14  #set ($crtSectionId = "$!{request.section}")
15 15  
... ... @@ -87,7 +87,7 @@
87 87  #set ($crtCategory = $NULL)
88 88  #foreach ($category in $adminMenu)
89 89   ## "Standard" URLs and icons for categories
90 - #set ($category.url = $xwiki.getURL($currentDoc, $adminAction, "category=${mathtool.sub($velocityCount, 1)}"))
90 + #set ($category.url = $xwiki.getURL($currentDoc, $adminAction, "category=${mathtool.sub($foreach.count, 1)}"))
91 91   #if ($xwiki.getDocument('XWiki.AdminSheet').getAttachment("${category.id}.png"))
92 92   #set ($category.iconReference = "XWiki.AdminSheet@${category.id}.png")
93 93   #else
... ... @@ -96,7 +96,7 @@
96 96   #set ($category.description = $services.localization.render("admin.${category.id}.description").trim())
97 97   #set ($category.cssClass = "${category.id}Icon")
98 98   #set ($category.name = $services.localization.render("admin.${category.id}").trim())
99 - #if ("$!{crtCategoryId}" != '' && $velocityCount == $mathtool.add($crtCategoryId, 1))
99 + #if ("$!{crtCategoryId}" != '' && $foreach.count == $mathtool.add($crtCategoryId, 1))
100 100   #set ($crtCategory = $category)
101 101   #end
102 102   ##
... ... @@ -232,11 +232,14 @@
232 232  
233 233  #macro (verticalNavigation $menu $options)
234 234   {{html clean="false"}}
235 - <div id="$!options.id" class="panel-group $!options.cssClass" role="tablist" aria-multiselectable="true">
235 + <nav id="$!options.id" class="panel-group $!options.cssClass"
236 + aria-label="$escapetool.xml($services.localization.render('administration.menu.label'))">
236 236   <div class="panel xform">
237 237   <label for="adminsearchmenu" class="hidden">$services.localization.render('search')</label>
238 238   <input type="text" class="form-control panel-group-filter" autocomplete="off" id="adminsearchmenu"
239 - placeholder="$escapetool.xml($services.localization.render('administration.menu.search.hint'))" />
240 + placeholder="$escapetool.xml($services.localization.render('administration.menu.search.hint'))"
241 + ## Disable the search input initially until the JavaScript code that handles the search is ready.
242 + disabled="disabled" />
240 240   </div>
241 241   #foreach ($item in $menu)
242 242   #verticalNavigationItem($item $options)
... ... @@ -246,7 +246,7 @@
246 246   $escapetool.xml($services.localization.render('administration.menu.search.noResults'))
247 247   </div>
248 248   </div>
249 - </div>
252 + </nav>
250 250   {{/html}}
251 251  #end
252 252  
... ... @@ -262,11 +262,11 @@
262 262   #set ($children = [])
263 263   #sortCollectionOfMapsByField($item.children, 'order', 99999, 'asc', $children)
264 264   <div class="panel panel-default">
265 - <a class="panel-heading#if (!$isActive) collapsed#end" role="tab" id="panel-heading-$escapedId"
268 + <a class="panel-heading#if (!$isActive) collapsed#end" id="panel-heading-$escapedId"
266 266   href="$!item.url" data-toggle="collapse"#if ("$!options.id" != '') data-parent="#$options.id" #end
267 267   data-target="#panel-body-$escapedId" aria-expanded="$isActive" aria-controls="panel-body-$escapedId"
268 268   title="$!escapetool.xml($item.description)">$!services.icon.renderHTML($item.icon)$escapetool.xml($name)</a>
269 - <div class="panel-collapse collapse#if ($isActive) in#end" role="tabpanel" id="panel-body-$escapedId"
272 + <section class="panel-collapse collapse#if ($isActive) in#end" id="panel-body-$escapedId"
270 270   aria-labelledby="panel-heading-$escapedId">
271 271   <div class="list-group">
272 272   #foreach ($child in $children)
... ... @@ -273,7 +273,7 @@
273 273   #verticalNavigationItem($child $options)
274 274   #end
275 275   </div>
276 - </div>
279 + </section>
277 277   </div>
278 278   #else
279 279   <a class="list-group-item#if ($isActive) active#end" data-id="$escapedId"
... ... @@ -331,7 +331,7 @@
331 331   #end
332 332  #end
333 333  (% id="document-title" %)(((
334 - = $services.localization.render("administration.sectionTitle$level", [$sectionName]) =
337 + = $services.localization.render("administration.sectionTitle$level", 'xwiki/2.1', [$sectionName]) =
335 335   ## Display the category/section description below the title.
336 336   #set ($categoryOrSectionId = $crtCategory.id)
337 337   #if ("$!crtSection.id" != '')
... ... @@ -365,11 +365,8 @@
365 365   ##------------------------------------------------------------------------------------------------------------
366 366   ## The Administration allows editing other pages from different applications inside the admin context (UI)
367 367   ##------------------------------------------------------------------------------------------------------------
368 - #if ("$!{request.editmode}" == 'inline' && $xwiki.exists($section))
369 - #set ($discard = $xcontext.setDisplayMode('edit'))
370 - {{html clean="false"}}{{include reference="XWiki.AdminInlineSheet" /}}{{/html}}
371 - #elseif ($xwiki.exists("XWiki.Admin${section}Sheet"))
372 - ## Custom XE administration section
371 + #if ($xwiki.exists("XWiki.Admin${section}Sheet"))
372 + ## Handle known XWiki administration sections
373 373   {{include reference="XWiki.Admin${section}Sheet" /}}
374 374   #elseif ($xwiki.exists($section))
375 375   {{html clean="false"}}#includeForm($section){{/html}}
XWiki.JavaScriptExtension[0]
Code
... ... @@ -3,6 +3,8 @@
3 3   $(document).on('click', '.admin-menu a.panel-heading', function(event) {
4 4   event.preventDefault();
5 5   });
6 + // Mark the administration menu as ready for user interaction.
7 + $('.admin-menu').attr('data-ready', true);
6 6  });
7 7  
8 8  /**
... ... @@ -24,7 +24,7 @@
24 24   // Filter the categories.
25 25   panelGroup.find('a.panel-heading').each(function() {
26 26   var panel = $(this).closest('.panel');
27 - var hasVisibleSections = panel.find('.list-group-item').not('.hidden').size() > 0;
29 + var hasVisibleSections = panel.find('.list-group-item').not('.hidden').length > 0;
28 28   var matchesFilterQuery = !filterItem.call($(this), text);
29 29   panel.toggle(hasVisibleSections || matchesFilterQuery);
30 30   if (!hasVisibleSections && matchesFilterQuery) {
... ... @@ -48,7 +48,7 @@
48 48   .next('.panel-collapse').addClass('in').css('height', '');
49 49   }
50 50   // Show/Hide the "No results." message.
51 - var hasVisibleCategories = panelGroup.find('a.panel-heading').filter(':visible').size() > 0;
53 + var hasVisibleCategories = panelGroup.find('a.panel-heading').filter(':visible').length > 0;
52 52   panelGroup.find('.noitems').toggleClass('hidden', hasVisibleCategories);
53 53   };
54 54  
... ... @@ -59,6 +59,8 @@
59 59   var panelGroup = $(this).closest('.panel-group');
60 60   var text = $(this).val().toLowerCase();
61 61   // Schedule a new filter operation.
62 - timeoutId = setTimeout($.proxy(filterPanelGroup, panelGroup, text), 500);
63 - });
64 + timeoutId = setTimeout(filterPanelGroup.bind(panelGroup, text), 500);
65 +
66 + // Finally, enable the search input.
67 + }).prop('disabled', false);
64 64  });
XWiki.StyleSheetExtension[0]
Code
... ... @@ -89,8 +89,8 @@
89 89  }
90 90  
91 91  .admin-menu .panel-heading.collapsed {
92 - border-bottom-left-radius: 3px;
93 - border-bottom-right-radius: 3px;
92 + border-bottom-left-radius: 5px;
93 + border-bottom-right-radius: 5px;
94 94  }
95 95  
96 96  .admin-menu a.panel-heading {
... ... @@ -112,8 +112,8 @@
112 112  }
113 113  
114 114  .admin-menu .panel-collapse > .list-group:last-child .list-group-item.last {
115 - border-bottom-right-radius: 3px;
116 - border-bottom-left-radius: 3px;
115 + border-bottom-right-radius: 5px;
116 + border-bottom-left-radius: 5px;
117 117  }
118 118  
119 119  .admin-menu .panel.noitems > .panel-heading {