Files
alrahma_sunday_school/app/Views/nav_builder/edit.php
T
2026-02-10 22:11:06 -05:00

98 lines
4.4 KiB
PHP

<?= $this->extend('layout/management_layout') ?>
</div>
</div>
<div class="row g-2 mt-2">
<div class="col-md-4"><label class="form-label">Route Name (optional)</label><input name="route_name" id="item-route" class="form-control" placeholder="e.g. admin.dashboard"></div>
<div class="col-md-5"><label class="form-label">URL (optional)</label><input name="url" id="item-url" class="form-control" placeholder="e.g. /administrator/student_profiles"></div>
<div class="col-md-3"><label class="form-label">Target</label><input name="target" id="item-target" class="form-control" placeholder="_self or _blank"></div>
</div>
<div class="row g-2 mt-2">
<div class="col-md-4"><label class="form-label">Icon (optional)</label><input name="icon" id="item-icon" class="form-control" placeholder="bi bi-people"></div>
<div class="col-md-8"><label class="form-label">CSS class</label><input name="css_class" id="item-css" class="form-control" placeholder="nav-link-custom"></div>
</div>
<div class="mt-3">
<label class="form-label">Visible to Roles</label>
<div class="row g-2">
<?php foreach ($roles as $r): $rid = md5($r); ?>
<div class="col-md-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="roles[]" id="role-<?= $rid ?>" value="<?= esc($r) ?>">
<label class="form-check-label" for="role-<?= $rid ?>"><?= esc($r) ?></label>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="mt-3 text-end">
<button class="btn btn-success">Save Item</button>
</div>
</form>
</div>
</div>
<h5>Existing Items</h5>
<table class="table table-hover align-middle">
<thead>
<tr>
<th>ID</th>
<th>Title</th>
<th>Type</th>
<th>Parent</th>
<th>Sort</th>
<th>Active</th>
<th>Roles</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($items as $it): ?>
<tr>
<td><?= $it['id'] ?></td>
<td><?= esc($it['title']) ?></td>
<td><span class="badge bg-secondary"><?= esc($it['type']) ?></span></td>
<td><?= $it['menu_parent_id'] ? ('#' . $it['menu_parent_id']) : '-' ?></td>
<td><?= (int)$it['sort_order'] ?></td>
<td><?= $it['is_active'] ? 'Yes' : 'No' ?></td>
<td>
<?php $r = $rolesMap[$it['id']] ?? [];
echo implode(', ', array_map('esc', $r)); ?>
</td>
<td>
<button class="btn btn-sm btn-outline-primary" onclick='fillEdit(<?= json_encode($it, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT) ?>, <?= json_encode($rolesMap[$it['id']] ?? []) ?>)'>Edit</button>
<form method="post" action="<?= site_url('admin/nav/delete-item/' . $it['id']) ?>" class="d-inline" onsubmit="return confirm('Delete item #<?= $it['id'] ?>?');">
<?= csrf_field() ?>
<button class="btn btn-sm btn-outline-danger">Delete</button>
</form>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<script>
function fillEdit(item, roles) {
document.getElementById('item-id').value = item.id;
document.getElementById('item-title').value = item.title;
document.getElementById('item-type').value = item.type;
document.getElementById('item-parent').value = item.menu_parent_id ?? '';
document.getElementById('item-sort').value = item.sort_order ?? 0;
document.getElementById('item-active').value = item.is_active;
document.getElementById('item-route').value = item.route_name ?? '';
document.getElementById('item-url').value = item.url ?? '';
document.getElementById('item-target').value = item.target ?? '';
document.getElementById('item-icon').value = item.icon ?? '';
document.getElementById('item-css').value = item.css_class ?? '';
// Roles checkboxes
document.querySelectorAll('input[name="roles[]"]').forEach(cb => {
cb.checked = roles.includes(cb.value.toLowerCase());
});
window.scrollTo({
top: 0,
behavior: 'smooth'
});
}
</script>
<?= $this->endSection() ?>