Changes for page KBCategoryLanding
Last modified by Isaac Mejia on 2026/06/08 20:12
From version 2.1
edited by Isaac Mejia
on 2026/06/08 20:12
on 2026/06/08 20:12
Change comment:
There is no comment for this version
To version 1.1
edited by Isaac Mejia
on 2026/06/08 20:07
on 2026/06/08 20:07
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,11 +1,12 @@ 1 1 {{velocity}} 2 2 ## ------------------------------------------------------------ 3 3 ## Category landing page for eFit subwiki 4 -## URL pattern:/Main/<Category>/WebHome5 -## e .g./Main/Payment_Management/WebHome4 +## Reads the category space from the URL so it works correctly 5 +## when included via {{include reference="KBCategoryLanding.WebHome"/}} 6 6 ## ------------------------------------------------------------ 7 7 8 -## Extract category from URL - grab segment after "Main" 8 +## Extract the space name from the request URI 9 +## URL pattern: /wiki/efit-kb.membies.com/view/<Space>/WebHome 9 9 #set ($uri = $request.getRequestURI()) 10 10 #set ($baseSpace = '') 11 11 #set ($catDisplayName = '') ... ... @@ -14,22 +14,23 @@ 14 14 #if ($uri.contains($viewMarker)) 15 15 #set ($afterView = $uri.substring($uri.indexOf($viewMarker) + $viewMarker.length())) 16 16 #set ($uriParts = $afterView.split('/')) 17 - ## uriParts: [0]=Main, [1]=Payment_Management, [2]=WebHome 18 - #if ($uriParts.size() > 1) 19 - #set ($baseSpace = $uriParts.get(1)) 18 + #if ($uriParts.size() > 0) 19 + #set ($baseSpace = $uriParts.get(0)) 20 20 #end 21 21 #end 22 22 23 -## Fallback 24 -#if ("$!baseSpace" == "" || $baseSpace == ' WebHome' || $baseSpace == 'Main')25 - #set ($baseSpace = $doc.space .replace('Main.', ''))23 +## Fallback to doc.space if URL parsing fails 24 +#if ("$!baseSpace" == "" || $baseSpace == 'KBCategoryLanding') 25 + #set ($baseSpace = $doc.space) 26 26 #end 27 27 28 -## FullXWikispacereferencee.g. "Main.Payment_Management"29 -#set ($ fullSpace ="Main." +$baseSpace)28 +## Build display name from space name (replace underscores with spaces) 29 +#set ($catDisplayName = $baseSpace.replace('_', ' ')) 30 30 31 -## Display name - replace underscores and hyphens with spaces 32 -#set ($catDisplayName = $baseSpace.replace('_', ' ').replace('-', '-')) 31 +## In eFit subwiki, articles live directly in the space (not a sub-space) 32 +## e.g. space = "Technical_Knowledge_Base", articles are in that space 33 +#set ($spaceA = $baseSpace) 34 +#set ($spaceB = $baseSpace) 33 33 34 34 ## ----------------------------- 35 35 ## Read query params safely ... ... @@ -64,7 +64,7 @@ 64 64 ## XWQL WHERE 65 65 ## ----------------------------- 66 66 #set ($where = 67 - "where doc.space = : fullSpace " +69 + "where doc.space = :spaceA " + 68 68 "and doc.name <> 'WebHome' " + 69 69 "and doc.hidden <> true " 70 70 ) ... ... @@ -84,7 +84,7 @@ 84 84 ) 85 85 86 86 #set ($countQuery = $services.query.xwql($countXwql)) 87 -#set ($discard = $countQuery.bindValue(' fullSpace', $fullSpace))89 +#set ($discard = $countQuery.bindValue('spaceA', $spaceA)) 88 88 #if ($hasFilter) 89 89 #set ($discard = $countQuery.bindValue('q', "%" + $filter.toLowerCase() + "%")) 90 90 #end ... ... @@ -119,7 +119,7 @@ 119 119 ) 120 120 121 121 #set ($listQuery = $services.query.xwql($listXwql)) 122 -#set ($discard = $listQuery.bindValue(' fullSpace', $fullSpace))124 +#set ($discard = $listQuery.bindValue('spaceA', $spaceA)) 123 123 #if ($hasFilter) 124 124 #set ($discard = $listQuery.bindValue('q', "%" + $filter.toLowerCase() + "%")) 125 125 #end ... ... @@ -177,11 +177,11 @@ 177 177 #if (!$hasFilter) 178 178 #set ($popXwql = 179 179 "select doc.fullName from XWikiDocument doc " + 180 - "where doc.space = : fullSpace and doc.name <> 'WebHome' and doc.hidden <> true " +182 + "where doc.space = :spaceA and doc.name <> 'WebHome' and doc.hidden <> true " + 181 181 "order by lower(doc.title)" 182 182 ) 183 183 #set ($popQuery = $services.query.xwql($popXwql)) 184 - #set ($discard = $popQuery.bindValue(' fullSpace', $fullSpace))186 + #set ($discard = $popQuery.bindValue('spaceA', $spaceA)) 185 185 #set ($discard = $popQuery.setLimit(4)) 186 186 #set ($popRows = $popQuery.execute()) 187 187 ... ... @@ -299,35 +299,104 @@ 299 299 300 300 <style> 301 301 .kb-category-page { max-width: 1200px; margin: 0 auto; padding: 0 1rem 3rem; } 304 + 302 302 .kb-hero { text-align: center; padding: 2.2rem 0 1rem; } 303 303 .kb-hero-title { font-size: 2.2rem; font-weight: 800; margin: 0; } 304 304 .kb-hero-subtitle { color: #6b7280; margin: 0.6rem 0 1.2rem; } 308 + 305 305 .kb-category-search { display: flex; gap: 0.6rem; justify-content: center; align-items: center; flex-wrap: wrap; } 306 -.kb-category-search-input { width: min(680px, 92vw); padding: 0.9rem 1.1rem; border: 1px solid #d1d5db; border-radius: 999px; font-size: 1.05rem; } 307 -.kb-category-search-button { padding: 0.9rem 1.1rem; border-radius: 999px; border: none; background: #2563eb; color: #fff; font-weight: 700; } 310 +.kb-category-search-input { 311 + width: min(680px, 92vw); 312 + padding: 0.9rem 1.1rem; 313 + border: 1px solid #d1d5db; 314 + border-radius: 999px; 315 + font-size: 1.05rem; 316 +} 317 +.kb-category-search-button { 318 + padding: 0.9rem 1.1rem; 319 + border-radius: 999px; 320 + border: none; 321 + background: #2563eb; 322 + color: #fff; 323 + font-weight: 700; 324 +} 308 308 .kb-category-clear { color: #6b7280; text-decoration: none; font-weight: 700; } 309 309 .kb-category-clear:hover { text-decoration: underline; } 310 310 .kb-muted { color: #9ca3af; } 328 + 311 311 .kb-category-columns { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: start; } 312 -@media (min-width: 1100px) { .kb-category-columns { grid-template-columns: 340px minmax(0, 1fr); gap: 2.5rem; } } 313 -@media (max-width: 1099px) { .kb-sidebar { order: 2; } .kb-main { order: 1; } } 314 -.kb-sidebar { border: 1px solid #e5e7eb; border-radius: 1rem; padding: 1rem 1.1rem; background: #fff; box-shadow: 0 4px 12px rgba(15,23,42,0.06); } 330 +@media (min-width: 1100px) { 331 + .kb-category-columns { grid-template-columns: 340px minmax(0, 1fr); gap: 2.5rem; } 332 +} 333 +@media (max-width: 1099px) { 334 + .kb-sidebar { order: 2; } 335 + .kb-main { order: 1; } 336 +} 337 + 338 +.kb-sidebar { 339 + border: 1px solid #e5e7eb; 340 + border-radius: 1rem; 341 + padding: 1rem 1.1rem; 342 + background: #fff; 343 + box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06); 344 +} 315 315 .kb-category-list { list-style: none; padding: 0; margin: 0.8rem 0 0; } 316 316 .kb-category-list li { margin: 0.5rem 0; } 347 + 317 317 .kb-category-header-row { display: flex; gap: 0.75rem; justify-content: space-between; align-items: baseline; flex-wrap: wrap; } 318 -.kb-article-count-badge { font-size: 0.85rem; padding: 0.15rem 0.55rem; border-radius: 999px; border: 1px solid #d4d4d8; background: #f4f4f5; color: #4b5563; } 349 + 350 +.kb-article-count-badge { 351 + font-size: 0.85rem; 352 + padding: 0.15rem 0.55rem; 353 + border-radius: 999px; 354 + border: 1px solid #d4d4d8; 355 + background: #f4f4f5; 356 + color: #4b5563; 357 +} 358 + 319 319 .kb-pager { display: flex; gap: 0.75rem; align-items: center; justify-content: space-between; margin: 1rem 0 1.25rem; flex-wrap: wrap; } 320 320 .kb-pager-pages { display: flex; gap: 0.35rem; align-items: center; flex-wrap: wrap; justify-content: center; } 321 -.kb-pager-btn { padding: 0.55rem 0.9rem; border-radius: 999px; border: 1px solid #e5e7eb; background: #fff; text-decoration: none; font-weight: 800; color: #111827; } 361 +.kb-pager-btn { 362 + padding: 0.55rem 0.9rem; 363 + border-radius: 999px; 364 + border: 1px solid #e5e7eb; 365 + background: #fff; 366 + text-decoration: none; 367 + font-weight: 800; 368 + color: #111827; 369 +} 322 322 .kb-pager-btn.is-disabled { opacity: 0.45; cursor: not-allowed; } 323 -.kb-pager-page { padding: 0.4rem 0.7rem; border-radius: 999px; border: 1px solid #e5e7eb; text-decoration: none; color: #111827; font-weight: 800; } 371 +.kb-pager-page { 372 + padding: 0.4rem 0.7rem; 373 + border-radius: 999px; 374 + border: 1px solid #e5e7eb; 375 + text-decoration: none; 376 + color: #111827; 377 + font-weight: 800; 378 +} 324 324 .kb-pager-page.is-current { background: #111827; color: #fff; border-color: #111827; } 325 325 .kb-pager-status { color: #6b7280; font-weight: 800; } 326 326 .kb-pager-bottom { justify-content: center; margin-top: 1.25rem; } 382 + 327 327 .kb-category-card-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.9rem; grid-template-columns: 1fr; } 328 -@media (min-width: 860px) { .kb-category-card-grid { grid-template-columns: 1fr 1fr; } } 329 -.kb-article-card { border: 1px solid #e5e7eb; border-radius: 0.95rem; padding: 0.9rem 1rem; background: #fff; box-shadow: 0 4px 12px rgba(15,23,42,0.06); } 330 -.kb-article-card-title { display: inline-block; font-size: 1.05rem; font-weight: 900; color: #2563eb; text-decoration: none; line-height: 1.25; } 384 +@media (min-width: 860px) { 385 + .kb-category-card-grid { grid-template-columns: 1fr 1fr; } 386 +} 387 +.kb-article-card { 388 + border: 1px solid #e5e7eb; 389 + border-radius: 0.95rem; 390 + padding: 0.9rem 1rem; 391 + background: #fff; 392 + box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06); 393 +} 394 +.kb-article-card-title { 395 + display: inline-block; 396 + font-size: 1.05rem; 397 + font-weight: 900; 398 + color: #2563eb; 399 + text-decoration: none; 400 + line-height: 1.25; 401 +} 331 331 .kb-article-card-title:hover { text-decoration: underline; } 332 332 .kb-article-card-meta { margin-top: 0.35rem; color: #6b7280; font-size: 0.86rem; } 333 333 .kb-article-card-empty { text-align: center; padding: 1.4rem; } ... ... @@ -338,6 +338,7 @@ 338 338 const input = document.querySelector('.kb-category-search-input'); 339 339 const grid = document.getElementById('kbCategoryGrid'); 340 340 if (!input || !grid) return; 412 + 341 341 input.addEventListener('input', function () { 342 342 const q = (input.value || '').trim().toLowerCase(); 343 343 const cards = grid.querySelectorAll('.kb-article-card[data-title]'); ... ... @@ -350,4 +350,3 @@ 350 350 </script> 351 351 {{/html}} 352 352 {{/velocity}} 353 -