129 lines
6.1 KiB
PHP
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(); ?>
|