58 lines
1.7 KiB
PHP
58 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Zotlabs\Widget;
|
|
|
|
/**
|
|
* CivicNav — top-level section navigation widget.
|
|
*
|
|
* Renders Vital Signs / DSC Categories / Scenarios links with the current
|
|
* association slug carried through each URL. Active section is highlighted.
|
|
*
|
|
* Registered by vs01. Shared across vs01, dsc01, and scn01 PDLs.
|
|
* Requires argv(1) to contain the association slug — returns empty string
|
|
* on the module index page (no slug).
|
|
*/
|
|
class CivicNav {
|
|
|
|
public function widget($arr) {
|
|
$slug = \argv(1) ?? '';
|
|
if (!$slug) {
|
|
return '';
|
|
}
|
|
|
|
if (function_exists('head_add_css')) {
|
|
head_add_css('/addon/vs01/view/css/civicnav.css');
|
|
}
|
|
|
|
$module = \App::$module ?? '';
|
|
|
|
$sections = [
|
|
'vs01' => 'Vital Signs',
|
|
'dsc01' => 'DSC Categories',
|
|
'scn01' => 'Scenarios',
|
|
];
|
|
|
|
$slug_safe = htmlspecialchars($slug, ENT_QUOTES, 'UTF-8');
|
|
|
|
$out = '<nav class="civicnav" aria-label="Kane Diagnostics">';
|
|
$out .= '<ul class="civicnav-list">';
|
|
|
|
foreach ($sections as $mod => $label) {
|
|
$is_active = ($module === $mod);
|
|
$url = z_root() . '/' . $mod . '/' . $slug_safe;
|
|
$out .= '<li class="civicnav-item' . ($is_active ? ' civicnav-active' : '') . '">';
|
|
if ($is_active) {
|
|
$out .= '<span class="civicnav-link civicnav-current">' . $label . '</span>';
|
|
} else {
|
|
$out .= '<a href="' . $url . '" class="civicnav-link">' . $label . '</a>';
|
|
}
|
|
$out .= '</li>';
|
|
}
|
|
|
|
$out .= '</ul>';
|
|
$out .= '</nav>';
|
|
|
|
return $out;
|
|
}
|
|
}
|