0 ? get_application($applicationId) : null; $isApprovedSchool = $application && (string) $application['status'] === 'approved'; $errors = []; $cycleContext = ['cycles' => [], 'selected' => null, 'active' => null, 'read_only' => false]; $selectedCycle = null; $selectedCycleId = 0; $isCycleReadOnly = false; $cycleLabel = 'لا توجد دورة بعد'; $values = ['criteria' => []]; if ($application && $isApprovedSchool) { $cycleContext = resolve_school_cycle_context((int) $application['id'], $application, $requestedCycleId); $selectedCycle = $cycleContext['selected']; $selectedCycleId = $selectedCycle ? (int) ($selectedCycle['id'] ?? 0) : 0; $isCycleReadOnly = (bool) $cycleContext['read_only']; $cycleLabel = $selectedCycle ? (string) $selectedCycle['cycle_name'] : $cycleLabel; } $assessmentOptions = $isApprovedSchool && $selectedCycleId > 0 ? school_assessment_type_options_by_cycle((int) $application['id'], $selectedCycleId, false) : []; $selectedAssessmentId = $requestedAssessmentId; if ($selectedAssessmentId <= 0 && $assessmentOptions !== []) { $keys = array_keys($assessmentOptions); $selectedAssessmentId = (int) ($keys[0] ?? 0); } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $application) { $selectedAssessmentId = filter_input(INPUT_POST, 'assessment_id', FILTER_VALIDATE_INT) ?: $selectedAssessmentId; if (!$isApprovedSchool) { $errors['form'] = 'لا يمكن إعداد بنود التقييم قبل اعتماد المركز.'; } elseif ($selectedCycleId <= 0) { $errors['form'] = 'يرجى إنشاء دورة موسمية أولاً من صفحة المركز.'; } elseif ($isCycleReadOnly) { $errors['form'] = 'هذه الدورة مؤرشفة للقراءة فقط. افتح دورة جديدة أو اختر دورة نشطة لتعديل البنود.'; } elseif ($selectedAssessmentId <= 0 || !isset($assessmentOptions[$selectedAssessmentId])) { $errors['form'] = 'يرجى اختيار تقييم صحيح أولاً.'; } else { [$values, $errors] = validate_assessment_criteria_input((int) $application['id'], $selectedCycleId, $selectedAssessmentId, $_POST); if ($errors === []) { try { $savedRows = save_assessment_criteria_in_cycle((int) $application['id'], $selectedCycleId, $selectedAssessmentId, $values); set_flash('success', 'تم حفظ ' . $savedRows . ' بند/بنود لهذا التقييم.'); header('Location: ' . school_page_url('assessment_criteria.php', (int) $application['id'], $selectedCycleId) . '&assessment_id=' . urlencode((string) $selectedAssessmentId)); exit; } catch (Throwable $exception) { $errors['form'] = 'تعذر حفظ البنود حالياً. يرجى المحاولة مرة أخرى.'; } } } } $selectedAssessment = $selectedAssessmentId > 0 ? ($assessmentOptions[$selectedAssessmentId] ?? null) : null; $criteriaRows = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? list_assessment_criteria_by_assessment((int) $application['id'], $selectedCycleId, $selectedAssessmentId, false) : []; $criteriaMetrics = $isApprovedSchool && $selectedCycleId > 0 && $selectedAssessmentId > 0 ? school_assessment_criteria_metrics((int) $application['id'], $selectedCycleId, $selectedAssessmentId) : ['total' => 0, 'active' => 0, 'active_max_score' => 0.0]; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $values['criteria'] = []; foreach ($criteriaRows as $criterion) { $values['criteria'][] = [ 'id' => (int) ($criterion['id'] ?? 0), 'title' => (string) ($criterion['title'] ?? ''), 'max_score' => rtrim(rtrim(number_format((float) ($criterion['max_score'] ?? 0), 2, '.', ''), '0'), '.'), 'notes' => (string) ($criterion['notes'] ?? ''), 'is_active' => ((int) ($criterion['is_active'] ?? 0) === 1) ? '1' : '0', ]; } if ($values['criteria'] === []) { $values['criteria'][] = ['id' => 0, 'title' => 'الحفظ', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; $values['criteria'][] = ['id' => 0, 'title' => 'الطلاقة', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; $values['criteria'][] = ['id' => 0, 'title' => 'التجويد / النطق', 'max_score' => '10', 'notes' => '', 'is_active' => '1']; } } $pageTitle = $application && $selectedAssessment ? 'بنود التقييم: ' . (string) $selectedAssessment['title'] . ' — ' . (string) $application['center_name'] : 'إعداد بنود التقييم'; $pageDescription = 'صفحة مستقلة لبناء ورقة تقييم متعددة البنود مثل الحفظ والطلاقة والنطق لكل تقييم.'; $assessmentsUrl = $application ? school_page_url('assessments.php', (int) $application['id'], $selectedCycleId) : 'assessments.php'; $scoreSheetUrl = $application ? school_page_url('assessment_score_sheet.php', (int) $application['id'], $selectedCycleId) . '&assessment_id=' . urlencode((string) $selectedAssessmentId) : 'assessment_score_sheet.php'; $scoreListUrl = $application ? school_page_url('assessment_scores.php', (int) $application['id'], $selectedCycleId) : 'assessment_scores.php'; if (!$application) { http_response_code(404); } render_page_start($pageTitle, 'approved', $pageDescription, (string) ($application['favicon'] ?? '')); render_flash($flash); ?>
المدرسة غير موجودة

تحقق من رابط المدرسة أو ارجع إلى قائمة المراكز المعتمدة.

المراكز المعتمدة
البنود تُفتح بعد الاعتماد

اعتمد المركز أولاً حتى تتمكن من بناء أوراق تقييم تفصيلية.

اختر تقييماً أولاً

ابدأ من صفحة التقييمات ثم افتح إعداد البنود للتقييم المطلوب.

الرجوع إلى التقييمات
ورقة تقييم متعددة البنود

أضف البنود التي تريد للمعلم أن يرصدها بشكل مستقل، مثل الحفظ والطلاقة والنطق. سيظهر كل بند كعمود مستقل في صفحة الرصد، ويُحسب المجموع تلقائياً.

الوزن %
إجمالي البنود
كل البنود المحفوظة
البنود النشطة
هي التي تظهر في ورقة الرصد
المجموع النهائي
يُحدَّث تلقائياً داخل التقييم
هذه الدورة مؤرشفة، لذلك الصفحة معروضة للقراءة فقط.
بنود التقييم
يمكنك إضافة بنود جديدة، أو إيقاف بند قديم عن الظهور في ورقة الرصد.
$criterion): ?>
اسم البند الدرجة ملاحظة داخلية الحالة إجراء
>
> > قراءة فقط أوقف التفعيل لإخفائه
سيتم تحديث الدرجة النهائية للتقييم تلقائياً إلى مجموع البنود النشطة.