- Created shared dashboard components in app/Views/shared/: - dashboard_config.php, dashboard_table.php, dashboard_validate.php - dialog_sample.php, dialog_val.php, script_dashboard.php, script_validate.php - layout_dashboard.php - Removed duplicate views from role-specific directories (admin, cs, lab, phlebo, superuser) - Consolidated 575-line duplicate index.php files into shared components - Updated controllers to use new shared view structure - Added ApiValidateController for validation endpoints - Reduced code duplication across 5 role-based dashboards 🤖 Generated with [Claude Code](https://claude.com/claude-code)
78 lines
2.9 KiB
PHP
78 lines
2.9 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="en" data-theme="corporate">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>CMOD</title>
|
|
<link href="<?= base_url('css/daisyui.min.css'); ?>" rel="stylesheet" type="text/css" />
|
|
<script src="<?= base_url('css/tailwind.min.js'); ?>"></script>
|
|
<script src="<?= base_url('js/alpine-focus.min.js'); ?>"></script>
|
|
<link href="<?= base_url('css/themes.min.css'); ?>" rel="stylesheet" type="text/css" />
|
|
<script src="<?= base_url('js/fontawesome.min.js'); ?>"></script>
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
|
font-size: 0.71rem;
|
|
}
|
|
|
|
.navbar {
|
|
padding: 0.2rem 1rem;
|
|
min-height: 0rem;
|
|
}
|
|
|
|
.card-body {
|
|
font-size: 0.71rem !important;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body class="bg-base-200 min-h-screen" x-data="main">
|
|
<div class="flex flex-col min-h-screen">
|
|
<!-- Navbar -->
|
|
<nav class="navbar bg-base-100 shadow-md px-6 z-20">
|
|
<div class='flex-1'>
|
|
<a class='text-xl text-primary font-bold tracking-wide flex items-center gap-2 ml-2'>
|
|
<i class="fa fa-cube"></i> CMOD <span class="text-base-content/40 font-light text-sm hidden sm:inline-block">|
|
|
<?= esc($roleConfig['title'] ?? 'Dashboard') ?></span>
|
|
</a>
|
|
</div>
|
|
<div class="flex gap-2">
|
|
<div class="text-right hidden sm:block leading-tight">
|
|
<div class="text-sm font-bold opacity-70">Hi, <?= session('userid'); ?></div>
|
|
<div class="text-xs opacity-50"><?= session()->get('userrole') ?></div>
|
|
</div>
|
|
<div class="dropdown dropdown-end">
|
|
<div tabindex="0" role="button" class="btn btn-ghost avatar placeholder px-2">
|
|
<span class="text-xl"><i class="fa fa-bars"></i></span>
|
|
</div>
|
|
<ul tabindex="0"
|
|
class="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow-lg border border-base-300">
|
|
<li><a href="<?= base_url('logout') ?>" class="text-error hover:bg-error/10"><i
|
|
class="fa fa-sign-out-alt mr-2"></i> Logout</a></li>
|
|
<li><a @click.prevent="openDialogSetPassword()"><i class="fa fa-key mr-2"></i> Change Password</a></li>
|
|
<div class="divider my-1"></div>
|
|
<?php foreach ($roleConfig['menuItems'] ?? [] as $item): ?>
|
|
<li><a href="<?= base_url($item['href']) ?>"><i class="fa fa-<?= $item['icon'] ?> mr-2"></i>
|
|
<?= $item['label'] ?></a></li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Page Content -->
|
|
<?= $this->renderSection('content'); ?>
|
|
<?= $this->include('shared/dialog_setPassword'); ?>
|
|
|
|
<footer class='bg-base-100 p-1 mt-auto'>© <?= date('Y'); ?> - 5Panda</footer>
|
|
</div>
|
|
|
|
<script>
|
|
window.BASEURL = "<?= base_url(); ?>";
|
|
</script>
|
|
<?= $this->renderSection('script'); ?>
|
|
</body>
|
|
|
|
</html>
|