splitting pages
This commit is contained in:
parent
18026059c0
commit
c7366417c4
@ -51,22 +51,43 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
$application = get_application($applicationId);
|
||||
$statusMeta = status_meta((string) $application['status']);
|
||||
$scoreValue = $application['evaluation_score'] !== null ? max(0, min(100, (int) $application['evaluation_score'])) : null;
|
||||
|
||||
render_page_start('تفاصيل الطلب #' . $applicationId, 'applications', 'عرض تفصيلي لطلب فتح المركز مع نموذج المراجعة للمشرف العام.');
|
||||
render_flash($flash);
|
||||
?>
|
||||
<section class="py-4 py-lg-5">
|
||||
<div class="container-xxl">
|
||||
<div class="page-banner mb-4 mb-lg-5">
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-8">
|
||||
<span class="eyebrow mb-3">ملف مستقل للمراجعة</span>
|
||||
<h1 class="page-title mb-2"><?= e((string) $application['center_name']) ?></h1>
|
||||
<p class="page-copy mb-3">مرجع الطلب #<?= e((string) $application['id']) ?> — مقدم الطلب <?= e((string) $application['director_name']) ?> من <?= e((string) $application['city']) ?>.</p>
|
||||
<div class="hero-meta">
|
||||
<span>تاريخ الإرسال: <?= e((string) $application['submitted_at']) ?></span>
|
||||
<span>آخر تحديث: <?= e((string) $application['updated_at']) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="page-banner-panel h-100 status-panel">
|
||||
<div class="mini-stat-label">الحالة الحالية</div>
|
||||
<div class="mb-3"><?= status_badge((string) $application['status']) ?></div>
|
||||
<div class="mini-stat-copy">هذا الملف مخصص لاتخاذ القرار وتوثيق الملاحظات بدلاً من خلطه مع قائمة الطلبات.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-8">
|
||||
<div class="app-card detail-card mb-4">
|
||||
<div class="section-head mb-4">
|
||||
<div>
|
||||
<div class="eyebrow mb-2">مرجع الطلب #<?= e((string) $application['id']) ?></div>
|
||||
<div class="section-title"><?= e((string) $application['center_name']) ?></div>
|
||||
<div class="section-copy">مقدم الطلب: <?= e((string) $application['director_name']) ?> — <?= e((string) $application['city']) ?></div>
|
||||
<div class="section-title">بيانات المركز</div>
|
||||
<div class="section-copy">عرض منظم لجميع البيانات المرسلة من صاحب الطلب في بطاقة واحدة.</div>
|
||||
</div>
|
||||
<?= status_badge((string) $application['status']) ?>
|
||||
<a class="btn btn-outline-secondary btn-sm px-3" href="applications.php">العودة إلى القائمة</a>
|
||||
</div>
|
||||
|
||||
<div class="row g-3 detail-grid">
|
||||
@ -93,7 +114,7 @@ render_flash($flash);
|
||||
</div>
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-title">الحالة الحالية: <?= e($statusMeta['label']) ?></div>
|
||||
<div class="timeline-copy text-muted">آخر تحديث بتاريخ <?= e((string) $application['updated_at']) ?>.</div>
|
||||
<div class="timeline-copy text-muted">آخر تحديث موثق بتاريخ <?= e((string) $application['updated_at']) ?>.</div>
|
||||
</div>
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-title">ملاحظات المشرف العام</div>
|
||||
@ -106,15 +127,21 @@ render_flash($flash);
|
||||
<div class="col-lg-4">
|
||||
<div class="app-card sidebar-card mb-4">
|
||||
<div class="section-title mb-3">ملخص القرار</div>
|
||||
<?php if ($scoreValue !== null): ?>
|
||||
<div class="score-bar mb-3" aria-label="درجة التقييم الأولي">
|
||||
<span style="width: <?= e((string) $scoreValue) ?>%"></span>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="summary-stack">
|
||||
<div class="summary-row"><span>الحالة</span><strong><?= e($statusMeta['label']) ?></strong></div>
|
||||
<div class="summary-row"><span>درجة الاستعداد</span><strong><?= $application['evaluation_score'] !== null ? e((string) $application['evaluation_score']) . '%' : 'غير محددة' ?></strong></div>
|
||||
<div class="summary-row"><span>درجة الاستعداد</span><strong><?= $scoreValue !== null ? e((string) $scoreValue) . '%' : 'غير محددة' ?></strong></div>
|
||||
<div class="summary-row"><span>آخر تحديث</span><strong><?= e((string) $application['updated_at']) ?></strong></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="app-card sidebar-card">
|
||||
<div class="section-title mb-3">إجراء المشرف العام</div>
|
||||
<div class="section-copy mb-3">هذه البطاقة مخصصة فقط لتغيير الحالة وتسجيل قرار المراجعة على هذا الطلب.</div>
|
||||
<?php if (!empty($reviewErrors['form'])): ?>
|
||||
<div class="alert alert-danger"><?= e($reviewErrors['form']) ?></div>
|
||||
<?php endif; ?>
|
||||
@ -134,7 +161,7 @@ render_flash($flash);
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="admin_notes">ملاحظات التقييم</label>
|
||||
<textarea class="form-control" id="admin_notes" name="admin_notes" rows="5" placeholder="سجّل نقاط القوة أو النواقص المطلوب استكمالها."><?= e((string) ($application['admin_notes'] ?? '')) ?></textarea>
|
||||
<textarea class="form-control" id="admin_notes" name="admin_notes" rows="6" placeholder="سجّل نقاط القوة أو النواقص المطلوب استكمالها."><?= e((string) ($application['admin_notes'] ?? '')) ?></textarea>
|
||||
</div>
|
||||
<div class="d-grid gap-2">
|
||||
<button class="btn btn-dark" type="submit">حفظ التحديث</button>
|
||||
|
||||
@ -7,24 +7,51 @@ $statusFilter = clean_text((string) ($_GET['status'] ?? 'all'), 50);
|
||||
$applications = list_applications($statusFilter);
|
||||
$stats = dashboard_metrics();
|
||||
$statusTabs = ['all' => 'الكل'] + array_map(fn ($meta) => $meta['label'], status_map());
|
||||
$currentCount = count($applications);
|
||||
$reviewBacklog = $stats['submitted'] + $stats['under_review'];
|
||||
$approvalRate = $stats['all'] > 0 ? (int) round(($stats['approved'] / $stats['all']) * 100) : 0;
|
||||
|
||||
render_page_start('لوحة الطلبات', 'applications', 'قائمة موحدة لطلبات فتح المراكز الصيفية مع فلترة حسب حالة المراجعة.');
|
||||
render_flash($flash);
|
||||
?>
|
||||
<section class="py-4 py-lg-5">
|
||||
<div class="container-xxl">
|
||||
<div class="page-banner mb-4 mb-lg-5">
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-8">
|
||||
<span class="eyebrow mb-3">صفحة مستقلة للمراجعة</span>
|
||||
<h1 class="page-title mb-3">لوحة طلبات فتح المراكز</h1>
|
||||
<p class="page-copy mb-0">تم تخصيص هذه الصفحة بالكامل لمتابعة الطلبات: مؤشرات سريعة، فلاتر واضحة، وجدول مراجعة عملي يقود مباشرة إلى صفحة التفاصيل واتخاذ القرار.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="page-banner-panel h-100">
|
||||
<div class="mini-stat-label">الحمل التشغيلي الحالي</div>
|
||||
<div class="mini-stat-value"><?= e((string) $reviewBacklog) ?></div>
|
||||
<div class="mini-stat-copy">طلبات تحتاج عملاً من المشرف العام الآن، مع نسبة اعتماد إجمالية تبلغ <?= e((string) $approvalRate) ?>٪.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-md-6 col-xl-3"><div class="app-card stat-tile"><div class="mini-stat-label">إجمالي الطلبات</div><div class="mini-stat-value"><?= e((string) $stats['all']) ?></div><div class="mini-stat-copy">جميع الطلبات في قاعدة البيانات.</div></div></div>
|
||||
<div class="col-md-6 col-xl-3"><div class="app-card stat-tile"><div class="mini-stat-label">بانتظار الاستلام</div><div class="mini-stat-value"><?= e((string) $stats['submitted']) ?></div><div class="mini-stat-copy">طلبات جديدة لم يبدأ تقييمها بعد.</div></div></div>
|
||||
<div class="col-md-6 col-xl-3"><div class="app-card stat-tile"><div class="mini-stat-label">تحت المراجعة</div><div class="mini-stat-value"><?= e((string) $stats['under_review']) ?></div><div class="mini-stat-copy">ملفات قيد التحقق والملاحظات.</div></div></div>
|
||||
<div class="col-md-6 col-xl-3"><div class="app-card stat-tile"><div class="mini-stat-label">معتمد</div><div class="mini-stat-value"><?= e((string) $stats['approved']) ?></div><div class="mini-stat-copy">مراكز جاهزة للانتقال لمرحلة التشغيل.</div></div></div>
|
||||
</div>
|
||||
|
||||
<div class="app-card mb-4">
|
||||
<div class="section-head flex-column flex-lg-row align-items-start align-items-lg-center gap-3 mb-3">
|
||||
<div>
|
||||
<div class="section-title">لوحة طلبات فتح المراكز</div>
|
||||
<div class="section-copy">واجهة المشرف العام لمراجعة جميع الطلبات، فرزها بالحالة، ثم الانتقال إلى التفاصيل لاتخاذ القرار.</div>
|
||||
<div class="section-title">أدوات الفرز والمتابعة</div>
|
||||
<div class="section-copy">اختر حالة محددة للتركيز على شريحة واحدة من الطلبات، أو ارجع إلى الكل لمراجعة الصورة العامة.</div>
|
||||
</div>
|
||||
<div class="d-flex flex-wrap gap-2">
|
||||
<a class="btn btn-dark btn-sm px-3" href="center_application.php">طلب جديد</a>
|
||||
<a class="btn btn-outline-secondary btn-sm px-3" href="applications.php">تحديث القائمة</a>
|
||||
<a class="btn btn-outline-secondary btn-sm px-3" href="applications.php">إعادة ضبط</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-pills">
|
||||
<div class="filter-pills mb-3">
|
||||
<?php foreach ($statusTabs as $value => $label): ?>
|
||||
<a class="filter-pill <?= $statusFilter === $value ? 'active' : '' ?>" href="applications.php?status=<?= e($value) ?>">
|
||||
<?= e($label) ?>
|
||||
@ -34,14 +61,21 @@ render_flash($flash);
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class="table-toolbar">
|
||||
<div class="table-toolbar-copy">الفلتر الحالي: <strong><?= e($statusTabs[$statusFilter] ?? 'الكل') ?></strong></div>
|
||||
<div class="table-toolbar-copy">عدد السجلات المعروضة: <strong><?= e((string) $currentCount) ?></strong></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="app-card">
|
||||
<?php if ($applications === []): ?>
|
||||
<div class="empty-state text-center py-5">
|
||||
<div class="empty-title mb-2">لا توجد طلبات ضمن هذا التصنيف.</div>
|
||||
<p class="text-muted mb-3">ابدأ بإنشاء أول طلب فتح مركز ليظهر هنا فوراً.</p>
|
||||
<a class="btn btn-dark" href="center_application.php">إنشاء طلب</a>
|
||||
<p class="text-muted mb-3">يمكنك إنشاء طلب جديد أو العودة إلى جميع الطلبات لاستكمال المراجعة.</p>
|
||||
<div class="d-flex flex-wrap justify-content-center gap-2">
|
||||
<a class="btn btn-dark" href="center_application.php">إنشاء طلب</a>
|
||||
<a class="btn btn-outline-secondary" href="applications.php">عرض الكل</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="table-responsive">
|
||||
@ -51,10 +85,11 @@ render_flash($flash);
|
||||
<th>المرجع</th>
|
||||
<th>المركز</th>
|
||||
<th>المدينة</th>
|
||||
<th>المدير</th>
|
||||
<th>المسؤول</th>
|
||||
<th>الفترة</th>
|
||||
<th>الحالة</th>
|
||||
<th>التقييم</th>
|
||||
<th>إجراء</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -76,6 +111,7 @@ render_flash($flash);
|
||||
</td>
|
||||
<td><?= status_badge((string) $application['status']) ?></td>
|
||||
<td><?= $application['evaluation_score'] !== null ? e((string) $application['evaluation_score']) . '%' : '—' ?></td>
|
||||
<td><a class="btn btn-outline-secondary btn-sm px-3" href="application_detail.php?id=<?= e((string) $application['id']) ?>">فتح الملف</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
|
||||
@ -569,3 +569,182 @@ textarea.form-control {
|
||||
.link-card p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.page-banner {
|
||||
padding: 1.5rem 1.7rem;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg);
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f7fafc 60%, #eef6f5 100%);
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.page-title {
|
||||
font-size: clamp(1.8rem, 2.5vw, 2.6rem);
|
||||
line-height: 1.35;
|
||||
font-weight: 700;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.page-copy {
|
||||
color: var(--muted);
|
||||
max-width: 60ch;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.page-banner-panel,
|
||||
.stat-tile,
|
||||
.form-section-block {
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
background: rgba(255, 255, 255, 0.88);
|
||||
}
|
||||
|
||||
.page-banner-panel,
|
||||
.stat-tile {
|
||||
padding: 1.15rem;
|
||||
}
|
||||
|
||||
.mini-stat-label {
|
||||
color: var(--muted);
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.mini-stat-value {
|
||||
font-size: clamp(1.7rem, 2.2vw, 2.3rem);
|
||||
font-weight: 700;
|
||||
color: var(--primary);
|
||||
margin-top: 0.35rem;
|
||||
}
|
||||
|
||||
.mini-stat-copy {
|
||||
color: var(--muted);
|
||||
margin-top: 0.45rem;
|
||||
line-height: 1.75;
|
||||
}
|
||||
|
||||
.form-section-block {
|
||||
padding: 1.1rem;
|
||||
background: var(--surface-muted);
|
||||
}
|
||||
|
||||
.form-section-heading {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.form-section-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 700;
|
||||
margin: 0 0 0.2rem;
|
||||
}
|
||||
|
||||
.form-section-copy,
|
||||
.table-toolbar-copy,
|
||||
.process-item small,
|
||||
.quick-link-item span {
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.form-section-copy {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.process-list,
|
||||
.quick-link-stack {
|
||||
display: grid;
|
||||
gap: 0.85rem;
|
||||
}
|
||||
|
||||
.process-item,
|
||||
.quick-link-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 0.85rem;
|
||||
padding: 0.9rem 0.95rem;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
background: var(--surface-muted);
|
||||
}
|
||||
|
||||
.process-item span {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
flex: 0 0 2rem;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 999px;
|
||||
background: #e6f6f4;
|
||||
color: var(--accent);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.process-item.active span {
|
||||
background: var(--accent);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.process-item strong,
|
||||
.quick-link-item strong {
|
||||
display: block;
|
||||
margin-bottom: 0.15rem;
|
||||
}
|
||||
|
||||
.quick-link-item {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
transition: transform 0.18s ease, border-color 0.18s ease, background-color 0.18s ease;
|
||||
}
|
||||
|
||||
.quick-link-item:hover {
|
||||
transform: translateY(-1px);
|
||||
border-color: var(--border-strong);
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.table-toolbar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
padding-top: 0.95rem;
|
||||
border-top: 1px solid #e9edf3;
|
||||
}
|
||||
|
||||
.score-bar {
|
||||
width: 100%;
|
||||
height: 0.65rem;
|
||||
background: #e8edf3;
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.score-bar span {
|
||||
display: block;
|
||||
height: 100%;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(90deg, #0f766e 0%, #14b8a6 100%);
|
||||
}
|
||||
|
||||
.status-panel .status-badge {
|
||||
font-size: 0.86rem;
|
||||
padding-inline: 0.85rem;
|
||||
padding-block: 0.45rem;
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px) {
|
||||
.page-banner {
|
||||
padding: 1.1rem;
|
||||
}
|
||||
|
||||
.form-section-block,
|
||||
.stat-tile,
|
||||
.page-banner-panel {
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ require_once __DIR__ . '/includes/app.php';
|
||||
$flash = consume_flash();
|
||||
$values = application_defaults();
|
||||
$errors = [];
|
||||
$stats = dashboard_metrics();
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
[$values, $errors] = validate_application_input($_POST);
|
||||
@ -26,15 +27,32 @@ render_flash($flash);
|
||||
?>
|
||||
<section class="py-4 py-lg-5">
|
||||
<div class="container-xxl">
|
||||
<div class="page-banner mb-4 mb-lg-5">
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-8">
|
||||
<span class="eyebrow mb-3">صفحة مستقلة للتقديم</span>
|
||||
<h1 class="page-title mb-3">طلب فتح مركز صيفي</h1>
|
||||
<p class="page-copy mb-0">هذه الصفحة مخصصة بالكامل لبيانات طلب المركز: تعريف الجهة، المسؤول المباشر، الطاقة التشغيلية، وملاحظات التنفيذ قبل انتقال الملف إلى لوحة المراجعة.</p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="page-banner-panel h-100">
|
||||
<div class="mini-stat-label">حالة سير الطلبات الحالية</div>
|
||||
<div class="mini-stat-value"><?= e((string) $stats['all']) ?></div>
|
||||
<div class="mini-stat-copy">إجمالي الطلبات المسجلة داخل النظام حتى الآن، منها <?= e((string) $stats['submitted']) ?> بانتظار الاستلام و<?= e((string) $stats['under_review']) ?> تحت المراجعة.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-8">
|
||||
<div class="app-card form-card">
|
||||
<div class="section-head mb-4">
|
||||
<div>
|
||||
<div class="section-title">تقديم طلب فتح مركز صيفي</div>
|
||||
<div class="section-copy">املأ الحقول التالية ليظهر الطلب مباشرة في لوحة المشرف العام ويبدأ مسار المراجعة.</div>
|
||||
<div class="section-title">بيانات الطلب الأساسية</div>
|
||||
<div class="section-copy">قسّمنا النموذج إلى مجموعات واضحة حتى لا تختلط بيانات المركز مع بيانات التشغيل والتواصل.</div>
|
||||
</div>
|
||||
<span class="header-chip">نموذج أولي</span>
|
||||
<span class="header-chip">نموذج منظم</span>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($errors['form'])): ?>
|
||||
@ -42,104 +60,142 @@ render_flash($flash);
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="post" novalidate>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-8">
|
||||
<label class="form-label" for="center_name">اسم المركز</label>
|
||||
<input class="form-control <?= isset($errors['center_name']) ? 'is-invalid' : '' ?>" id="center_name" name="center_name" value="<?= e($values['center_name']) ?>" placeholder="مثال: مركز الريادة الصيفي">
|
||||
<?php if (isset($errors['center_name'])): ?><div class="invalid-feedback"><?= e($errors['center_name']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="city">المدينة / المنطقة</label>
|
||||
<input class="form-control <?= isset($errors['city']) ? 'is-invalid' : '' ?>" id="city" name="city" value="<?= e($values['city']) ?>" placeholder="العاصمة">
|
||||
<?php if (isset($errors['city'])): ?><div class="invalid-feedback"><?= e($errors['city']) ?></div><?php endif; ?>
|
||||
<div class="form-section-block mb-4">
|
||||
<div class="form-section-heading">
|
||||
<div>
|
||||
<h2 class="form-section-title">تعريف المركز</h2>
|
||||
<p class="form-section-copy">معلومات الهوية الرسمية للمركز ومكان تشغيله والفئة التي سيخدمها.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-8">
|
||||
<label class="form-label" for="center_name">اسم المركز</label>
|
||||
<input class="form-control <?= isset($errors['center_name']) ? 'is-invalid' : '' ?>" id="center_name" name="center_name" value="<?= e($values['center_name']) ?>" placeholder="مثال: مركز الريادة الصيفي">
|
||||
<?php if (isset($errors['center_name'])): ?><div class="invalid-feedback"><?= e($errors['center_name']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="city">المدينة / المنطقة</label>
|
||||
<input class="form-control <?= isset($errors['city']) ? 'is-invalid' : '' ?>" id="city" name="city" value="<?= e($values['city']) ?>" placeholder="العاصمة">
|
||||
<?php if (isset($errors['city'])): ?><div class="invalid-feedback"><?= e($errors['city']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="center_type">نوع المركز</label>
|
||||
<select class="form-select <?= isset($errors['center_type']) ? 'is-invalid' : '' ?>" id="center_type" name="center_type">
|
||||
<option value="">اختر</option>
|
||||
<?php foreach (['بنين', 'بنات', 'مختلط'] as $option): ?>
|
||||
<option value="<?= e($option) ?>" <?= $values['center_type'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php if (isset($errors['center_type'])): ?><div class="invalid-feedback"><?= e($errors['center_type']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="gender_scope">الفئة المستهدفة</label>
|
||||
<select class="form-select <?= isset($errors['gender_scope']) ? 'is-invalid' : '' ?>" id="gender_scope" name="gender_scope">
|
||||
<option value="">اختر</option>
|
||||
<?php foreach (['طلاب', 'طالبات', 'طلاب وطالبات'] as $option): ?>
|
||||
<option value="<?= e($option) ?>" <?= $values['gender_scope'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php if (isset($errors['gender_scope'])): ?><div class="invalid-feedback"><?= e($errors['gender_scope']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="director_name">اسم مدير / مديرة المركز</label>
|
||||
<input class="form-control <?= isset($errors['director_name']) ? 'is-invalid' : '' ?>" id="director_name" name="director_name" value="<?= e($values['director_name']) ?>" placeholder="الاسم الرباعي">
|
||||
<?php if (isset($errors['director_name'])): ?><div class="invalid-feedback"><?= e($errors['director_name']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="phone">رقم الهاتف</label>
|
||||
<input class="form-control <?= isset($errors['phone']) ? 'is-invalid' : '' ?>" id="phone" name="phone" value="<?= e($values['phone']) ?>" placeholder="0500000000">
|
||||
<?php if (isset($errors['phone'])): ?><div class="invalid-feedback"><?= e($errors['phone']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="email">البريد الإلكتروني</label>
|
||||
<input type="email" class="form-control <?= isset($errors['email']) ? 'is-invalid' : '' ?>" id="email" name="email" value="<?= e($values['email']) ?>" placeholder="name@example.com">
|
||||
<?php if (isset($errors['email'])): ?><div class="invalid-feedback"><?= e($errors['email']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="expected_students">الطاقة الاستيعابية المتوقعة</label>
|
||||
<input type="number" min="10" max="2000" class="form-control <?= isset($errors['expected_students']) ? 'is-invalid' : '' ?>" id="expected_students" name="expected_students" value="<?= e($values['expected_students']) ?>" placeholder="150">
|
||||
<?php if (isset($errors['expected_students'])): ?><div class="invalid-feedback"><?= e($errors['expected_students']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="start_date">تاريخ البداية</label>
|
||||
<input type="date" class="form-control <?= isset($errors['start_date']) ? 'is-invalid' : '' ?>" id="start_date" name="start_date" value="<?= e($values['start_date']) ?>">
|
||||
<?php if (isset($errors['start_date'])): ?><div class="invalid-feedback"><?= e($errors['start_date']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="end_date">تاريخ النهاية</label>
|
||||
<input type="date" class="form-control <?= isset($errors['end_date']) ? 'is-invalid' : '' ?>" id="end_date" name="end_date" value="<?= e($values['end_date']) ?>">
|
||||
<?php if (isset($errors['end_date'])): ?><div class="invalid-feedback"><?= e($errors['end_date']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="notes">ملخص البرنامج والاحتياجات</label>
|
||||
<textarea class="form-control" id="notes" name="notes" rows="5" placeholder="مثال: المسارات التعليمية، عدد القاعات، الشركاء، أو أي متطلبات تشغيلية."><?= e($values['notes']) ?></textarea>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="center_type">نوع المركز</label>
|
||||
<select class="form-select <?= isset($errors['center_type']) ? 'is-invalid' : '' ?>" id="center_type" name="center_type">
|
||||
<option value="">اختر</option>
|
||||
<?php foreach (['بنين', 'بنات', 'مختلط'] as $option): ?>
|
||||
<option value="<?= e($option) ?>" <?= $values['center_type'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php if (isset($errors['center_type'])): ?><div class="invalid-feedback"><?= e($errors['center_type']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="gender_scope">الفئة المستهدفة</label>
|
||||
<select class="form-select <?= isset($errors['gender_scope']) ? 'is-invalid' : '' ?>" id="gender_scope" name="gender_scope">
|
||||
<option value="">اختر</option>
|
||||
<?php foreach (['طلاب', 'طالبات', 'طلاب وطالبات'] as $option): ?>
|
||||
<option value="<?= e($option) ?>" <?= $values['gender_scope'] === $option ? 'selected' : '' ?>><?= e($option) ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<?php if (isset($errors['gender_scope'])): ?><div class="invalid-feedback"><?= e($errors['gender_scope']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-actions mt-4 d-flex flex-wrap gap-2">
|
||||
<div class="form-section-block mb-4">
|
||||
<div class="form-section-heading">
|
||||
<div>
|
||||
<h2 class="form-section-title">بيانات المسؤول والتواصل</h2>
|
||||
<p class="form-section-copy">تُستخدم هذه البيانات للتواصل السريع أثناء التحقق واستكمال الملاحظات.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="director_name">اسم مدير / مديرة المركز</label>
|
||||
<input class="form-control <?= isset($errors['director_name']) ? 'is-invalid' : '' ?>" id="director_name" name="director_name" value="<?= e($values['director_name']) ?>" placeholder="الاسم الرباعي">
|
||||
<?php if (isset($errors['director_name'])): ?><div class="invalid-feedback"><?= e($errors['director_name']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="phone">رقم الهاتف</label>
|
||||
<input class="form-control <?= isset($errors['phone']) ? 'is-invalid' : '' ?>" id="phone" name="phone" value="<?= e($values['phone']) ?>" placeholder="0500000000">
|
||||
<?php if (isset($errors['phone'])): ?><div class="invalid-feedback"><?= e($errors['phone']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="email">البريد الإلكتروني</label>
|
||||
<input type="email" class="form-control <?= isset($errors['email']) ? 'is-invalid' : '' ?>" id="email" name="email" value="<?= e($values['email']) ?>" placeholder="name@example.com">
|
||||
<?php if (isset($errors['email'])): ?><div class="invalid-feedback"><?= e($errors['email']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-section-block mb-4">
|
||||
<div class="form-section-heading">
|
||||
<div>
|
||||
<h2 class="form-section-title">التشغيل والجدول الزمني</h2>
|
||||
<p class="form-section-copy">قدّم تقديراً للطاقة الاستيعابية والفترة الزمنية واحتياجات التنفيذ المباشرة.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="expected_students">الطاقة الاستيعابية المتوقعة</label>
|
||||
<input type="number" min="10" max="2000" class="form-control <?= isset($errors['expected_students']) ? 'is-invalid' : '' ?>" id="expected_students" name="expected_students" value="<?= e($values['expected_students']) ?>" placeholder="150">
|
||||
<?php if (isset($errors['expected_students'])): ?><div class="invalid-feedback"><?= e($errors['expected_students']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="start_date">تاريخ البداية</label>
|
||||
<input type="date" class="form-control <?= isset($errors['start_date']) ? 'is-invalid' : '' ?>" id="start_date" name="start_date" value="<?= e($values['start_date']) ?>">
|
||||
<?php if (isset($errors['start_date'])): ?><div class="invalid-feedback"><?= e($errors['start_date']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="end_date">تاريخ النهاية</label>
|
||||
<input type="date" class="form-control <?= isset($errors['end_date']) ? 'is-invalid' : '' ?>" id="end_date" name="end_date" value="<?= e($values['end_date']) ?>">
|
||||
<?php if (isset($errors['end_date'])): ?><div class="invalid-feedback"><?= e($errors['end_date']) ?></div><?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label class="form-label" for="notes">ملخص البرنامج والاحتياجات</label>
|
||||
<textarea class="form-control" id="notes" name="notes" rows="5" placeholder="مثال: المسارات التعليمية، عدد القاعات، الشركاء، أو أي متطلبات تشغيلية."><?= e($values['notes']) ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-actions d-flex flex-wrap gap-2 pt-2">
|
||||
<button class="btn btn-dark px-4" type="submit">إرسال الطلب</button>
|
||||
<a class="btn btn-outline-secondary px-4" href="applications.php">العودة إلى لوحة الطلبات</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<div class="app-card sidebar-card mb-4">
|
||||
<div class="section-title mb-3">ماذا يحدث بعد الإرسال؟</div>
|
||||
<ol class="workflow-list mb-0">
|
||||
<li>يسجل النظام الطلب ويعطيه مرجعاً مباشراً.</li>
|
||||
<li>يشاهد المشرف العام الطلب ضمن قائمة جميع المراكز.</li>
|
||||
<li>يتم تعيين حالة الطلب وتدوين ملاحظات التقييم الأولي.</li>
|
||||
<li>يمكن اعتماد المركز أو طلب الاستكمال.</li>
|
||||
</ol>
|
||||
<div class="section-title mb-3">مسار هذه الصفحة</div>
|
||||
<div class="process-list">
|
||||
<div class="process-item active"><span>1</span><div><strong>إدخال البيانات</strong><small>تجميع بيانات الهوية والتشغيل في صفحة واحدة.</small></div></div>
|
||||
<div class="process-item"><span>2</span><div><strong>التحقق والحفظ</strong><small>الحقول الإلزامية تُراجع قبل إنشاء المرجع.</small></div></div>
|
||||
<div class="process-item"><span>3</span><div><strong>الانتقال للمراجعة</strong><small>يظهر الطلب فوراً داخل لوحة المشرف العام.</small></div></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="app-card sidebar-card">
|
||||
<div class="section-title mb-3">الحقول المطلوبة في هذه النسخة</div>
|
||||
|
||||
<div class="app-card sidebar-card mb-4">
|
||||
<div class="section-title mb-3">الحد الأدنى المطلوب</div>
|
||||
<ul class="check-list mb-0">
|
||||
<li>هوية المركز والمنطقة</li>
|
||||
<li>بيانات المسؤول المباشر</li>
|
||||
<li>الفئة المستهدفة والطاقة التشغيلية</li>
|
||||
<li>مواعيد تنفيذ البرنامج</li>
|
||||
<li>ملخص احتياجات التشغيل</li>
|
||||
<li>اسم المركز والمنطقة التشغيلية.</li>
|
||||
<li>المسؤول المباشر ووسائل التواصل.</li>
|
||||
<li>نوع المركز والفئة المستهدفة.</li>
|
||||
<li>الطاقة التشغيلية ومواعيد البرنامج.</li>
|
||||
<li>ملخص احتياجات التنفيذ أو الشراكات.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="app-card sidebar-card">
|
||||
<div class="section-title mb-3">روابط الصفحة التالية</div>
|
||||
<div class="quick-link-stack">
|
||||
<a class="quick-link-item" href="applications.php"><strong>لوحة الطلبات</strong><span>متابعة جميع الطلبات بعد الإرسال.</span></a>
|
||||
<a class="quick-link-item" href="dashboard.php"><strong>لوحة القيادة</strong><span>مراجعة المؤشرات العامة للولاية.</span></a>
|
||||
<a class="quick-link-item" href="modules.php"><strong>هيكل النظام</strong><span>فهم حدود النسخة الحالية ومسار العمل.</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user