39301-vm/admin.php
2026-03-25 10:08:05 +00:00

129 lines
6.1 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/admin_layout.php';
library_bootstrap();
$documents = library_fetch_documents(false, []);
$metrics = library_catalog_metrics();
admin_render_header('Dashboard', 'dashboard');
?>
<!-- Metrics -->
<div class="row g-4 mb-5">
<div class="col-md-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<h6 class="text-uppercase text-secondary small fw-bold">Total Documents</h6>
<div class="d-flex align-items-center justify-content-between mt-3">
<h2 class="display-6 fw-bold mb-0 text-primary"><?= number_format($metrics['total_documents']) ?></h2>
<i class="bi bi-file-earmark-text fs-1 text-primary opacity-25"></i>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<h6 class="text-uppercase text-secondary small fw-bold">Public Titles</h6>
<div class="d-flex align-items-center justify-content-between mt-3">
<h2 class="display-6 fw-bold mb-0 text-success"><?= number_format($metrics['public_documents']) ?></h2>
<i class="bi bi-globe fs-1 text-success opacity-25"></i>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm border-0 h-100">
<div class="card-body">
<h6 class="text-uppercase text-secondary small fw-bold">Total Downloads</h6>
<div class="d-flex align-items-center justify-content-between mt-3">
<h2 class="display-6 fw-bold mb-0 text-info"><?= number_format($metrics['total_downloads']) ?></h2>
<i class="bi bi-download fs-1 text-info opacity-25"></i>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Recent Documents -->
<div class="col-lg-8">
<div class="card shadow-sm border-0 mb-4">
<div class="card-header bg-white py-3 border-bottom">
<h5 class="card-title mb-0">Recent Documents</h5>
</div>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr>
<th class="ps-4">Title / Author</th>
<th>Type / Category</th>
<th>Visibility</th>
<th class="text-end pe-4">Actions</th>
</tr>
</thead>
<tbody>
<?php if (empty($documents)): ?>
<tr><td colspan="4" class="text-center py-5 text-muted">No documents found.</td></tr>
<?php else: ?>
<?php foreach (array_slice($documents, 0, 10) as $doc): ?>
<tr>
<td class="ps-4">
<div class="fw-medium text-dark"><?= h($doc['title_en']) ?></div>
<div class="small text-muted" dir="rtl"><?= h($doc['title_ar']) ?></div>
<?php if (!empty($doc['author'])): ?>
<div class="small text-primary mt-1"><i class="bi bi-person me-1"></i><?= h($doc['author']) ?></div>
<?php endif; ?>
</td>
<td>
<?php if (!empty($doc['type_en'])): ?>
<span class="badge bg-info bg-opacity-10 text-info border border-info border-opacity-25 mb-1"><?= h($doc['type_en']) ?></span><br>
<?php endif; ?>
<span class="badge bg-light text-dark border">
<?= h($doc['cat_en'] ?? $doc['category']) ?>
</span>
</td>
<td>
<span class="badge bg-<?= $doc['visibility'] === 'public' ? 'success' : 'secondary' ?>">
<?= h($doc['visibility']) ?>
</span>
</td>
<td class="text-end pe-4">
<a href="/document.php?id=<?= $doc['id'] ?>" class="btn btn-sm btn-outline-primary" target="_blank">
<i class="bi bi-eye"></i> View
</a>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
<div class="card-footer bg-white text-center py-3">
<small class="text-muted">Showing last 10 uploads</small>
</div>
</div>
</div>
<!-- Material Entry Promo -->
<div class="col-lg-4">
<div class="card shadow-sm border-0">
<div class="card-header bg-primary text-white py-3">
<h5 class="card-title mb-0"><i class="bi bi-folder2-open me-2"></i>Material Entry</h5>
</div>
<div class="card-body p-4 text-center">
<p class="text-secondary mb-4">
Manage your library documents, upload new materials, and edit metadata including bilingual titles, summaries, and more.
</p>
<a href="/admin_documents.php" class="btn btn-primary w-100">
<i class="bi bi-plus-lg me-2"></i> Manage Documents
</a>
</div>
</div>
</div>
</div>
<?php admin_render_footer(); ?>