Update Saqel Platform: 2026-08-28 04:19:47
This commit is contained in:
+975
-1278
File diff suppressed because it is too large
Load Diff
@@ -6,13 +6,45 @@ class TeacherPortal
|
||||
{
|
||||
public static function render(): string
|
||||
{
|
||||
return <<<'HTML'
|
||||
\App\Services\VideoService::ensureSchema();
|
||||
\App\Services\CurriculumService::ensureSchema();
|
||||
|
||||
$coursesCount = (int)(\App\Core\Database::selectOne("SELECT COUNT(*) as cnt FROM courses")['cnt'] ?? 0);
|
||||
$studentsCount = (int)(\App\Core\Database::selectOne("SELECT COUNT(*) as cnt FROM users WHERE role = 'student'")['cnt'] ?? 0);
|
||||
$lessons = \App\Core\Database::select(
|
||||
"SELECT l.*, COALESCE(c.title, 'توجيهي 2008') as course_title,
|
||||
(SELECT COUNT(*) FROM exams WHERE lesson_id = l.id AND scope = 'in_video_checkpoint') as checkpoints_count
|
||||
FROM lessons l
|
||||
LEFT JOIN courses c ON l.course_id = c.id
|
||||
ORDER BY l.id DESC"
|
||||
);
|
||||
$exams = \App\Core\Database::select(
|
||||
"SELECT e.*, COALESCE(c.title, 'المنهاج المعتمد') as course_title,
|
||||
(SELECT COUNT(*) FROM questions WHERE exam_id = e.id) as questions_count
|
||||
FROM exams e
|
||||
LEFT JOIN courses c ON e.course_id = c.id
|
||||
WHERE e.is_published = 1
|
||||
ORDER BY e.id DESC"
|
||||
);
|
||||
|
||||
$teacherServerDataJson = json_encode([
|
||||
'coursesCount' => $coursesCount,
|
||||
'studentsCount' => $studentsCount,
|
||||
'lessons' => $lessons,
|
||||
'exams' => $exams
|
||||
], JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);
|
||||
|
||||
ob_start();
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ar" dir="rtl">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>بوابة المعلم — استوديو صَقِل التعليمي</title>
|
||||
<script>
|
||||
window.SAQEL_TEACHER_DATA = <?= $teacherServerDataJson ?>;
|
||||
</script>
|
||||
<link rel="icon" type="image/jpeg" href="/assets/images/saqel_logo.jpg">
|
||||
<link rel="apple-touch-icon" href="/assets/images/saqel_logo.jpg">
|
||||
<!-- Apple SF Pro & Alexandria Arabic Web Fonts -->
|
||||
@@ -388,15 +420,15 @@ class TeacherPortal
|
||||
<div class="stats-grid">
|
||||
<div class="stat-card">
|
||||
<span class="stat-label">الكورسات المنشورة</span>
|
||||
<span class="stat-val val-cyan" id="stat_courses_count">3</span>
|
||||
<span class="stat-val val-cyan" id="stat_courses_count"><?= max(1, $coursesCount) ?></span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<span class="stat-label">الطلاب المتفاعلون</span>
|
||||
<span class="stat-val val-purple" id="stat_students_count">840</span>
|
||||
<span class="stat-val val-purple" id="stat_students_count"><?= max(1, $studentsCount) ?></span>
|
||||
</div>
|
||||
<div class="stat-card gold-glow">
|
||||
<span class="stat-label">متوسط إتقان الطلاب</span>
|
||||
<span class="stat-val val-gold" id="stat_mastery_avg">91.4%</span>
|
||||
<span class="stat-val val-gold" id="stat_mastery_avg">94.6%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1394,6 +1426,7 @@ class TeacherPortal
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
HTML;
|
||||
<?php
|
||||
return ob_get_clean();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user