Spaces:
Running
Running
Upload 4 files
#370
by
ashrafElbialy
- opened
- index.html +160 -0
- parent.html +164 -0
- style.css +28 -0
- teacher.html +243 -0
index.html
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>EduPlan - Lesson Planner</title>
|
7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
+
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
|
9 |
+
<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
|
10 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
11 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
12 |
+
<style>
|
13 |
+
.gradient-bg {
|
14 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
15 |
+
}
|
16 |
+
.card-hover:hover {
|
17 |
+
transform: translateY(-5px);
|
18 |
+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
19 |
+
}
|
20 |
+
.transition-all {
|
21 |
+
transition: all 0.3s ease;
|
22 |
+
}
|
23 |
+
</style>
|
24 |
+
</head>
|
25 |
+
<body class="bg-gray-50">
|
26 |
+
<div id="vanta-bg" class="fixed inset-0 -z-10 opacity-20"></div>
|
27 |
+
|
28 |
+
<nav class="bg-white shadow-sm">
|
29 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
30 |
+
<div class="flex justify-between h-16">
|
31 |
+
<div class="flex items-center">
|
32 |
+
<i data-feather="book-open" class="text-indigo-600 mr-2"></i>
|
33 |
+
<span class="text-xl font-bold text-indigo-600">EduPlan</span>
|
34 |
+
</div>
|
35 |
+
<div class="hidden sm:ml-6 sm:flex sm:space-x-8">
|
36 |
+
<a href="index.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
|
37 |
+
<a href="teacher.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Teacher Portal</a>
|
38 |
+
<a href="parent.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Parent Portal</a>
|
39 |
+
</div>
|
40 |
+
<div class="-mr-2 flex items-center sm:hidden">
|
41 |
+
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500" aria-controls="mobile-menu" aria-expanded="false">
|
42 |
+
<i data-feather="menu"></i>
|
43 |
+
</button>
|
44 |
+
</div>
|
45 |
+
</div>
|
46 |
+
</div>
|
47 |
+
|
48 |
+
<div class="sm:hidden" id="mobile-menu">
|
49 |
+
<div class="pt-2 pb-3 space-y-1">
|
50 |
+
<a href="index.html" class="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Home</a>
|
51 |
+
<a href="teacher.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Teacher Portal</a>
|
52 |
+
<a href="parent.html" class="border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium">Parent Portal</a>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
</nav>
|
56 |
+
|
57 |
+
<main>
|
58 |
+
<div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8">
|
59 |
+
<div class="text-center">
|
60 |
+
<h1 class="text-4xl font-extrabold tracking-tight text-gray-900 sm:text-5xl md:text-6xl" data-aos="fade-down">
|
61 |
+
<span class="block">Streamline Your</span>
|
62 |
+
<span class="block text-indigo-600">Lesson Planning</span>
|
63 |
+
</h1>
|
64 |
+
<p class="mt-3 max-w-md mx-auto text-base text-gray-500 sm:text-lg md:mt-5 md:text-xl md:max-w-3xl" data-aos="fade-up" data-aos-delay="100">
|
65 |
+
A comprehensive solution for teachers to plan lessons and for parents to stay informed.
|
66 |
+
</p>
|
67 |
+
<div class="mt-5 max-w-md mx-auto sm:flex sm:justify-center md:mt-8" data-aos="fade-up" data-aos-delay="200">
|
68 |
+
<div class="rounded-md shadow">
|
69 |
+
<a href="teacher.html" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 md:py-4 md:text-lg md:px-10">
|
70 |
+
Teacher Portal
|
71 |
+
</a>
|
72 |
+
</div>
|
73 |
+
<div class="mt-3 rounded-md shadow sm:mt-0 sm:ml-3">
|
74 |
+
<a href="parent.html" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-gray-50 md:py-4 md:text-lg md:px-10">
|
75 |
+
Parent Portal
|
76 |
+
</a>
|
77 |
+
</div>
|
78 |
+
</div>
|
79 |
+
</div>
|
80 |
+
|
81 |
+
<div class="mt-16 grid gap-8 md:grid-cols-2 lg:grid-cols-3">
|
82 |
+
<div class="bg-white overflow-hidden shadow rounded-lg transition-all card-hover" data-aos="fade-up" data-aos-delay="100">
|
83 |
+
<div class="px-4 py-5 sm:p-6">
|
84 |
+
<div class="flex items-center">
|
85 |
+
<div class="flex-shrink-0 bg-indigo-500 rounded-md p-3">
|
86 |
+
<i data-feather="calendar" class="text-white"></i>
|
87 |
+
</div>
|
88 |
+
<div class="ml-5 w-0 flex-1">
|
89 |
+
<h3 class="text-lg font-medium text-gray-900">Weekly Planning</h3>
|
90 |
+
<p class="mt-1 text-sm text-gray-500">Organize lessons by week for better curriculum management.</p>
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
<div class="bg-white overflow-hidden shadow rounded-lg transition-all card-hover" data-aos="fade-up" data-aos-delay="200">
|
97 |
+
<div class="px-4 py-5 sm:p-6">
|
98 |
+
<div class="flex items-center">
|
99 |
+
<div class="flex-shrink-0 bg-indigo-500 rounded-md p-3">
|
100 |
+
<i data-feather="book" class="text-white"></i>
|
101 |
+
</div>
|
102 |
+
<div class="ml-5 w-0 flex-1">
|
103 |
+
<h3 class="text-lg font-medium text-gray-900">Subject Tracking</h3>
|
104 |
+
<p class="mt-1 text-sm text-gray-500">Manage multiple subjects with detailed lesson plans.</p>
|
105 |
+
</div>
|
106 |
+
</div>
|
107 |
+
</div>
|
108 |
+
</div>
|
109 |
+
|
110 |
+
<div class="bg-white overflow-hidden shadow rounded-lg transition-all card-hover" data-aos="fade-up" data-aos-delay="300">
|
111 |
+
<div class="px-4 py-5 sm:p-6">
|
112 |
+
<div class="flex items-center">
|
113 |
+
<div class="flex-shrink-0 bg-indigo-500 rounded-md p-3">
|
114 |
+
<i data-feather="users" class="text-white"></i>
|
115 |
+
</div>
|
116 |
+
<div class="ml-5 w-0 flex-1">
|
117 |
+
<h3 class="text-lg font-medium text-gray-900">Parent Access</h3>
|
118 |
+
<p class="mt-1 text-sm text-gray-500">Parents can view weekly plans for their children.</p>
|
119 |
+
</div>
|
120 |
+
</div>
|
121 |
+
</div>
|
122 |
+
</div>
|
123 |
+
</div>
|
124 |
+
</div>
|
125 |
+
</main>
|
126 |
+
|
127 |
+
<footer class="bg-white">
|
128 |
+
<div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
|
129 |
+
<p class="mt-8 text-center text-base text-gray-400">
|
130 |
+
© 2023 EduPlan. All rights reserved.
|
131 |
+
</p>
|
132 |
+
</div>
|
133 |
+
</footer>
|
134 |
+
|
135 |
+
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
|
136 |
+
<script>
|
137 |
+
VANTA.GLOBE({
|
138 |
+
el: "#vanta-bg",
|
139 |
+
mouseControls: true,
|
140 |
+
touchControls: true,
|
141 |
+
gyroControls: false,
|
142 |
+
minHeight: 200.00,
|
143 |
+
minWidth: 200.00,
|
144 |
+
scale: 1.00,
|
145 |
+
scaleMobile: 1.00,
|
146 |
+
color: 0x5b6ee1,
|
147 |
+
backgroundColor: 0xf8fafc,
|
148 |
+
size: 0.80
|
149 |
+
});
|
150 |
+
</script>
|
151 |
+
<script>AOS.init();</script>
|
152 |
+
<script>feather.replace();</script>
|
153 |
+
<script>
|
154 |
+
document.querySelector('[aria-controls="mobile-menu"]').addEventListener('click', function() {
|
155 |
+
const menu = document.getElementById('mobile-menu');
|
156 |
+
menu.classList.toggle('hidden');
|
157 |
+
});
|
158 |
+
</script>
|
159 |
+
</body>
|
160 |
+
</html>
|
parent.html
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Parent Portal - EduPlan</title>
|
7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
+
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
|
9 |
+
<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
|
10 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
11 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
12 |
+
<style>
|
13 |
+
.gradient-bg {
|
14 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
15 |
+
}
|
16 |
+
.card-hover:hover {
|
17 |
+
transform: translateY(-5px);
|
18 |
+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
19 |
+
}
|
20 |
+
.transition-all {
|
21 |
+
transition: all 0.3s ease;
|
22 |
+
}
|
23 |
+
</style>
|
24 |
+
</head>
|
25 |
+
<body class="bg-gray-50">
|
26 |
+
<nav class="bg-white shadow-sm">
|
27 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
28 |
+
<div class="flex justify-between h-16">
|
29 |
+
<div class="flex items-center">
|
30 |
+
<i data-feather="book-open" class="text-indigo-600 mr-2"></i>
|
31 |
+
<span class="text-xl font-bold text-indigo-600">EduPlan</span>
|
32 |
+
</div>
|
33 |
+
<div class="hidden sm:ml-6 sm:flex sm:space-x-8">
|
34 |
+
<a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
|
35 |
+
<a href="teacher.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Teacher Portal</a>
|
36 |
+
<a href="parent.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Parent Portal</a>
|
37 |
+
</div>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
</nav>
|
41 |
+
|
42 |
+
<main class="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8">
|
43 |
+
<div class="px-4 py-6 sm:px-0">
|
44 |
+
<div class="border-4 border-dashed border-gray-200 rounded-lg p-6">
|
45 |
+
<h2 class="text-2xl font-bold text-gray-900 mb-6">View Weekly Lesson Plans</h2>
|
46 |
+
|
47 |
+
<form id="viewForm" class="space-y-6">
|
48 |
+
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2">
|
49 |
+
<div>
|
50 |
+
<label for="viewWeekNumber" class="block text-sm font-medium text-gray-700">Week Number</label>
|
51 |
+
<select id="viewWeekNumber" name="viewWeekNumber" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
52 |
+
<option value="">Select Week</option>
|
53 |
+
<option value="1">Week 1</option>
|
54 |
+
<option value="2">Week 2</option>
|
55 |
+
<option value="3">Week 3</option>
|
56 |
+
<option value="4">Week 4</option>
|
57 |
+
<option value="5">Week 5</option>
|
58 |
+
<option value="6">Week 6</option>
|
59 |
+
<option value="7">Week 7</option>
|
60 |
+
<option value="8">Week 8</option>
|
61 |
+
<option value="9">Week 9</option>
|
62 |
+
<option value="10">Week 10</option>
|
63 |
+
</select>
|
64 |
+
</div>
|
65 |
+
|
66 |
+
<div>
|
67 |
+
<label for="viewClassName" class="block text-sm font-medium text-gray-700">Class Name</label>
|
68 |
+
<input type="text" id="viewClassName" name="viewClassName" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
69 |
+
</div>
|
70 |
+
</div>
|
71 |
+
|
72 |
+
<div class="flex justify-end">
|
73 |
+
<button type="submit" class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
74 |
+
View Plans
|
75 |
+
</button>
|
76 |
+
</div>
|
77 |
+
</form>
|
78 |
+
</div>
|
79 |
+
|
80 |
+
<div class="mt-8" id="plansContainer">
|
81 |
+
<h2 class="text-2xl font-bold text-gray-900 mb-6">Weekly Lesson Plans</h2>
|
82 |
+
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
|
83 |
+
<div id="plansList" class="divide-y divide-gray-200">
|
84 |
+
<!-- Lesson plans will be dynamically inserted here -->
|
85 |
+
<div class="p-6 text-center text-gray-500">
|
86 |
+
Select a week and class to view lesson plans
|
87 |
+
</div>
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
</div>
|
91 |
+
</div>
|
92 |
+
</main>
|
93 |
+
|
94 |
+
<script>
|
95 |
+
document.addEventListener('DOMContentLoaded', function() {
|
96 |
+
AOS.init();
|
97 |
+
feather.replace();
|
98 |
+
|
99 |
+
// Form submission handler
|
100 |
+
document.getElementById('viewForm').addEventListener('submit', function(e) {
|
101 |
+
e.preventDefault();
|
102 |
+
|
103 |
+
const weekNumber = document.getElementById('viewWeekNumber').value;
|
104 |
+
const className = document.getElementById('viewClassName').value;
|
105 |
+
|
106 |
+
if (!weekNumber || !className) {
|
107 |
+
alert('Please select both week number and class name');
|
108 |
+
return;
|
109 |
+
}
|
110 |
+
|
111 |
+
displayLessonPlans(weekNumber, className);
|
112 |
+
});
|
113 |
+
|
114 |
+
function displayLessonPlans(weekNumber, className) {
|
115 |
+
const lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
116 |
+
const filteredPlans = lessonPlans.filter(plan =>
|
117 |
+
plan.weekNumber === weekNumber && plan.className.toLowerCase() === className.toLowerCase()
|
118 |
+
);
|
119 |
+
|
120 |
+
const plansList = document.getElementById('plansList');
|
121 |
+
|
122 |
+
if (filteredPlans.length === 0) {
|
123 |
+
plansList.innerHTML = `
|
124 |
+
<div class="p-6 text-center text-gray-500">
|
125 |
+
No lesson plans found for Week ${weekNumber} and Class ${className}
|
126 |
+
</div>
|
127 |
+
`;
|
128 |
+
return;
|
129 |
+
}
|
130 |
+
|
131 |
+
plansList.innerHTML = '';
|
132 |
+
|
133 |
+
filteredPlans.forEach(plan => {
|
134 |
+
const planElement = document.createElement('div');
|
135 |
+
planElement.className = 'p-6';
|
136 |
+
planElement.innerHTML = `
|
137 |
+
<div class="flex items-center justify-between">
|
138 |
+
<div>
|
139 |
+
<h3 class="text-lg font-medium text-gray-900">${plan.subjectName} - Lesson ${plan.lessonNumber}</h3>
|
140 |
+
<p class="mt-1 text-sm text-gray-500">Week ${plan.weekNumber} | Class ${plan.className}</p>
|
141 |
+
</div>
|
142 |
+
</div>
|
143 |
+
<div class="mt-4">
|
144 |
+
<h4 class="text-sm font-medium text-gray-700">Materials:</h4>
|
145 |
+
<p class="mt-1 text-sm text-gray-600">${plan.materials}</p>
|
146 |
+
</div>
|
147 |
+
<div class="mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2">
|
148 |
+
<div>
|
149 |
+
<h4 class="text-sm font-medium text-gray-700">Textbook Pages:</h4>
|
150 |
+
<p class="mt-1 text-sm text-gray-600">${plan.textbookPages || 'N/A'}</p>
|
151 |
+
</div>
|
152 |
+
<div>
|
153 |
+
<h4 class="text-sm font-medium text-gray-700">Quiz:</h4>
|
154 |
+
<p class="mt-1 text-sm text-gray-600">${plan.quiz || 'N/A'}</p>
|
155 |
+
</div>
|
156 |
+
</div>
|
157 |
+
`;
|
158 |
+
plansList.appendChild(planElement);
|
159 |
+
});
|
160 |
+
}
|
161 |
+
});
|
162 |
+
</script>
|
163 |
+
</body>
|
164 |
+
</html>
|
style.css
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body {
|
2 |
+
padding: 2rem;
|
3 |
+
font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
|
4 |
+
}
|
5 |
+
|
6 |
+
h1 {
|
7 |
+
font-size: 16px;
|
8 |
+
margin-top: 0;
|
9 |
+
}
|
10 |
+
|
11 |
+
p {
|
12 |
+
color: rgb(107, 114, 128);
|
13 |
+
font-size: 15px;
|
14 |
+
margin-bottom: 10px;
|
15 |
+
margin-top: 5px;
|
16 |
+
}
|
17 |
+
|
18 |
+
.card {
|
19 |
+
max-width: 620px;
|
20 |
+
margin: 0 auto;
|
21 |
+
padding: 16px;
|
22 |
+
border: 1px solid lightgray;
|
23 |
+
border-radius: 16px;
|
24 |
+
}
|
25 |
+
|
26 |
+
.card p:last-child {
|
27 |
+
margin-bottom: 0;
|
28 |
+
}
|
teacher.html
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Teacher Portal - EduPlan</title>
|
7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
+
<link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet">
|
9 |
+
<script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
|
10 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
11 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
12 |
+
<style>
|
13 |
+
.gradient-bg {
|
14 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
15 |
+
}
|
16 |
+
.card-hover:hover {
|
17 |
+
transform: translateY(-5px);
|
18 |
+
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
19 |
+
}
|
20 |
+
.transition-all {
|
21 |
+
transition: all 0.3s ease;
|
22 |
+
}
|
23 |
+
</style>
|
24 |
+
</head>
|
25 |
+
<body class="bg-gray-50">
|
26 |
+
<nav class="bg-white shadow-sm">
|
27 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
28 |
+
<div class="flex justify-between h-16">
|
29 |
+
<div class="flex items-center">
|
30 |
+
<i data-feather="book-open" class="text-indigo-600 mr-2"></i>
|
31 |
+
<span class="text-xl font-bold text-indigo-600">EduPlan</span>
|
32 |
+
</div>
|
33 |
+
<div class="hidden sm:ml-6 sm:flex sm:space-x-8">
|
34 |
+
<a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Home</a>
|
35 |
+
<a href="teacher.html" class="border-indigo-500 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Teacher Portal</a>
|
36 |
+
<a href="parent.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Parent Portal</a>
|
37 |
+
</div>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
</nav>
|
41 |
+
|
42 |
+
<main class="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8">
|
43 |
+
<div class="px-4 py-6 sm:px-0">
|
44 |
+
<div class="border-4 border-dashed border-gray-200 rounded-lg p-6">
|
45 |
+
<h2 class="text-2xl font-bold text-gray-900 mb-6">Create New Lesson Plan</h2>
|
46 |
+
|
47 |
+
<form id="lessonForm" class="space-y-6">
|
48 |
+
<div class="grid grid-cols-1 gap-6 sm:grid-cols-3">
|
49 |
+
<div>
|
50 |
+
<label for="weekNumber" class="block text-sm font-medium text-gray-700">Week Number</label>
|
51 |
+
<select id="weekNumber" name="weekNumber" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
52 |
+
<option value="">Select Week</option>
|
53 |
+
<option value="1">Week 1</option>
|
54 |
+
<option value="2">Week 2</option>
|
55 |
+
<option value="3">Week 3</option>
|
56 |
+
<option value="4">Week 4</option>
|
57 |
+
<option value="5">Week 5</option>
|
58 |
+
<option value="6">Week 6</option>
|
59 |
+
<option value="7">Week 7</option>
|
60 |
+
<option value="8">Week 8</option>
|
61 |
+
<option value="9">Week 9</option>
|
62 |
+
<option value="10">Week 10</option>
|
63 |
+
</select>
|
64 |
+
</div>
|
65 |
+
|
66 |
+
<div>
|
67 |
+
<label for="lessonDay" class="block text-sm font-medium text-gray-700">Day</label>
|
68 |
+
<select id="lessonDay" name="lessonDay" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
69 |
+
<option value="">Select Day</option>
|
70 |
+
<option value="Sunday">Sunday</option>
|
71 |
+
<option value="Monday">Monday</option>
|
72 |
+
<option value="Tuesday">Tuesday</option>
|
73 |
+
<option value="Wednesday">Wednesday</option>
|
74 |
+
<option value="Thursday">Thursday</option>
|
75 |
+
</select>
|
76 |
+
</div>
|
77 |
+
|
78 |
+
<div>
|
79 |
+
<label for="lessonNumber" class="block text-sm font-medium text-gray-700">Lesson Number</label>
|
80 |
+
<input type="number" id="lessonNumber" name="lessonNumber" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
81 |
+
</div>
|
82 |
+
</div>
|
83 |
+
|
84 |
+
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2">
|
85 |
+
<div>
|
86 |
+
<label for="subjectName" class="block text-sm font-medium text-gray-700">Subject Name</label>
|
87 |
+
<input type="text" id="subjectName" name="subjectName" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
88 |
+
</div>
|
89 |
+
|
90 |
+
<div>
|
91 |
+
<label for="className" class="block text-sm font-medium text-gray-700">Class Name</label>
|
92 |
+
<input type="text" id="className" name="className" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
<div>
|
97 |
+
<label for="materials" class="block text-sm font-medium text-gray-700">Materials to be Studied</label>
|
98 |
+
<textarea id="materials" name="materials" rows="3" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"></textarea>
|
99 |
+
</div>
|
100 |
+
|
101 |
+
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2">
|
102 |
+
<div>
|
103 |
+
<label for="textbookPages" class="block text-sm font-medium text-gray-700">Textbook Page Numbers</label>
|
104 |
+
<input type="text" id="textbookPages" name="textbookPages" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
105 |
+
</div>
|
106 |
+
|
107 |
+
<div>
|
108 |
+
<label for="quiz" class="block text-sm font-medium text-gray-700">Quiz (if applicable)</label>
|
109 |
+
<input type="text" id="quiz" name="quiz" class="mt-1 block w-full py-2 px-3 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
|
110 |
+
</div>
|
111 |
+
</div>
|
112 |
+
|
113 |
+
<div class="flex justify-end">
|
114 |
+
<button type="submit" class="inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
115 |
+
Save Lesson Plan
|
116 |
+
</button>
|
117 |
+
</div>
|
118 |
+
</form>
|
119 |
+
</div>
|
120 |
+
|
121 |
+
<div class="mt-8">
|
122 |
+
<h2 class="text-2xl font-bold text-gray-900 mb-6">Saved Lesson Plans</h2>
|
123 |
+
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
|
124 |
+
<table class="min-w-full divide-y divide-gray-200">
|
125 |
+
<thead class="bg-gray-50">
|
126 |
+
<tr>
|
127 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Week</th>
|
128 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Day</th>
|
129 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Lesson</th>
|
130 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Subject</th>
|
131 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Class</th>
|
132 |
+
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
|
133 |
+
</tr>
|
134 |
+
</thead>
|
135 |
+
<tbody id="lessonPlansTable" class="bg-white divide-y divide-gray-200">
|
136 |
+
<!-- Lesson plans will be dynamically inserted here -->
|
137 |
+
</tbody>
|
138 |
+
</table>
|
139 |
+
</div>
|
140 |
+
</div>
|
141 |
+
</div>
|
142 |
+
</main>
|
143 |
+
|
144 |
+
<script>
|
145 |
+
document.addEventListener('DOMContentLoaded', function() {
|
146 |
+
AOS.init();
|
147 |
+
feather.replace();
|
148 |
+
|
149 |
+
// Load saved lesson plans from localStorage
|
150 |
+
loadLessonPlans();
|
151 |
+
|
152 |
+
// Form submission handler
|
153 |
+
document.getElementById('lessonForm').addEventListener('submit', function(e) {
|
154 |
+
e.preventDefault();
|
155 |
+
|
156 |
+
const lessonPlan = {
|
157 |
+
weekNumber: document.getElementById('weekNumber').value,
|
158 |
+
lessonDay: document.getElementById('lessonDay').value,
|
159 |
+
lessonNumber: document.getElementById('lessonNumber').value,
|
160 |
+
subjectName: document.getElementById('subjectName').value,
|
161 |
+
className: document.getElementById('className').value,
|
162 |
+
materials: document.getElementById('materials').value,
|
163 |
+
textbookPages: document.getElementById('textbookPages').value,
|
164 |
+
quiz: document.getElementById('quiz').value,
|
165 |
+
id: Date.now() // Unique ID for each lesson plan
|
166 |
+
};
|
167 |
+
|
168 |
+
saveLessonPlan(lessonPlan);
|
169 |
+
this.reset();
|
170 |
+
loadLessonPlans();
|
171 |
+
});
|
172 |
+
|
173 |
+
function saveLessonPlan(lessonPlan) {
|
174 |
+
let lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
175 |
+
lessonPlans.push(lessonPlan);
|
176 |
+
localStorage.setItem('lessonPlans', JSON.stringify(lessonPlans));
|
177 |
+
}
|
178 |
+
|
179 |
+
function loadLessonPlans() {
|
180 |
+
const lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
181 |
+
const tableBody = document.getElementById('lessonPlansTable');
|
182 |
+
tableBody.innerHTML = '';
|
183 |
+
|
184 |
+
lessonPlans.forEach(plan => {
|
185 |
+
const row = document.createElement('tr');
|
186 |
+
row.innerHTML = `
|
187 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">${plan.weekNumber}</td>
|
188 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">${plan.lessonDay}</td>
|
189 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">${plan.lessonNumber}</td>
|
190 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">${plan.subjectName}</td>
|
191 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">${plan.className}</td>
|
192 |
+
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
|
193 |
+
<button onclick="viewLessonPlan(${plan.id})" class="text-indigo-600 hover:text-indigo-900 mr-3">View</button>
|
194 |
+
<button onclick="editLessonPlan(${plan.id})" class="text-yellow-600 hover:text-yellow-900 mr-3">Edit</button>
|
195 |
+
<button onclick="deleteLessonPlan(${plan.id})" class="text-red-600 hover:text-red-900">Delete</button>
|
196 |
+
</td>
|
197 |
+
`;
|
198 |
+
tableBody.appendChild(row);
|
199 |
+
});
|
200 |
+
}
|
201 |
+
|
202 |
+
window.viewLessonPlan = function(id) {
|
203 |
+
const lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
204 |
+
const plan = lessonPlans.find(p => p.id === id);
|
205 |
+
|
206 |
+
if (plan) {
|
207 |
+
alert(`Week ${plan.weekNumber}, Lesson ${plan.lessonNumber}\nSubject: ${plan.subjectName}\nClass: ${plan.className}\nMaterials: ${plan.materials}\nTextbook Pages: ${plan.textbookPages}\nQuiz: ${plan.quiz || 'N/A'}`);
|
208 |
+
}
|
209 |
+
};
|
210 |
+
|
211 |
+
window.deleteLessonPlan = function(id) {
|
212 |
+
let lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
213 |
+
lessonPlans = lessonPlans.filter(p => p.id !== id);
|
214 |
+
localStorage.setItem('lessonPlans', JSON.stringify(lessonPlans));
|
215 |
+
loadLessonPlans();
|
216 |
+
};
|
217 |
+
|
218 |
+
window.editLessonPlan = function(id) {
|
219 |
+
const lessonPlans = JSON.parse(localStorage.getItem('lessonPlans')) || [];
|
220 |
+
const plan = lessonPlans.find(p => p.id === id);
|
221 |
+
|
222 |
+
if (plan) {
|
223 |
+
document.getElementById('weekNumber').value = plan.weekNumber;
|
224 |
+
document.getElementById('lessonDay').value = plan.lessonDay;
|
225 |
+
document.getElementById('lessonNumber').value = plan.lessonNumber;
|
226 |
+
document.getElementById('subjectName').value = plan.subjectName;
|
227 |
+
document.getElementById('className').value = plan.className;
|
228 |
+
document.getElementById('materials').value = plan.materials;
|
229 |
+
document.getElementById('textbookPages').value = plan.textbookPages;
|
230 |
+
document.getElementById('quiz').value = plan.quiz;
|
231 |
+
|
232 |
+
// Remove the old plan
|
233 |
+
let updatedPlans = lessonPlans.filter(p => p.id !== id);
|
234 |
+
localStorage.setItem('lessonPlans', JSON.stringify(updatedPlans));
|
235 |
+
|
236 |
+
// Scroll to form
|
237 |
+
document.getElementById('lessonForm').scrollIntoView({ behavior: 'smooth' });
|
238 |
+
}
|
239 |
+
};
|
240 |
+
});
|
241 |
+
</script>
|
242 |
+
</body>
|
243 |
+
</html>
|