-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtools.html
More file actions
278 lines (263 loc) · 24.2 KB
/
tools.html
File metadata and controls
278 lines (263 loc) · 24.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DSMNRU Tools</title>
<meta name="description" content="Study tools for DSMNRU students.">
<link rel="icon" href="img/Logo.png" type="image/png">
<link rel="shortcut icon" href="img/Logo.png" type="image/png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap">
<link rel="stylesheet" href="styles.css">
<meta name="theme-color" content="#0f172a">
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-firestore-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-auth-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.22.1/firebase-performance-compat.js"></script>
</head>
<body>
<header class="header-container">
<div class="container">
<div class="header-content">
<div class="header-top">
<h1><i class="fas fa-graduation-cap"></i> DSMNRU Archive</h1>
<div class="user-profile-section">
<button id="profileBtn" class="btn-user-profile" onclick="toggleProfileDropdown()">
<i class="fas fa-user-circle"></i>
<span id="userDisplayName">Login</span>
<i class="fas fa-chevron-down"></i>
</button>
<div id="profileDropdown" class="profile-dropdown" style="display: none;">
<div id="userLoggedOutMenu" style="display: none;">
<button class="dropdown-item" onclick="openLoginModal()"><i class="fas fa-sign-in-alt"></i> Login</button>
<button class="dropdown-item" onclick="openSignupModal()"><i class="fas fa-user-plus"></i> Sign Up</button>
</div>
<div id="userLoggedInMenu" style="display: none;">
<div class="dropdown-header">
<div class="user-profile-info">
<div class="user-avatar"><i class="fas fa-user-circle"></i></div>
<div class="user-info">
<div id="userNameDisplay"></div>
<small id="userEmailDisplay"></small>
</div>
</div>
</div>
<hr class="dropdown-divider">
<button class="dropdown-item" onclick="openProfileModal()"><i class="fas fa-user"></i> My Profile</button>
<button class="dropdown-item" onclick="openSettingsModal()"><i class="fas fa-cog"></i> Settings</button>
<hr class="dropdown-divider">
<button class="dropdown-item text-danger" onclick="logout()"><i class="fas fa-sign-out-alt"></i> Logout</button>
</div>
</div>
</div>
</div>
<p class="subtitle">Quick academic utilities for daily student use</p>
<div class="hero-highlights" aria-label="Site highlights">
<span class="hero-highlight"><i class="fas fa-calculator"></i> CGPA calculator</span>
<span class="hero-highlight"><i class="fas fa-calendar-check"></i> Attendance tracker</span>
<span class="hero-highlight"><i class="fas fa-book-open"></i> Study planner</span>
</div>
<div class="page-nav" aria-label="Site sections">
<a class="page-nav-link" href="index.html"><i class="fas fa-file-alt"></i> PYQs</a>
<a class="page-nav-link" href="contributors.html"><i class="fas fa-users"></i> Contributors</a>
<a class="page-nav-link active" href="tools.html"><i class="fas fa-tools"></i> Tools</a>
</div>
</div>
</div>
</header>
<main class="container mt-4">
<section class="student-tools-section py-5">
<div class="container">
<div class="section-header text-center">
<h2><i class="fas fa-tools"></i> Student Tools</h2>
<p class="section-description">Essential tools to help you excel in your academic journey</p>
</div>
<div class="tools-grid">
<div class="tool-card">
<div class="tool-icon"><i class="fas fa-calculator"></i></div>
<div class="tool-content">
<h3 class="tool-title">CGPA Calculator</h3>
<p class="tool-description">Calculate your Cumulative Grade Point Average (CGPA) and Semester Grade Point Average (SGPA) easily with our interactive calculator. Track your academic performance semester by semester.</p>
<div class="tool-actions">
<button class="btn-tool-primary" id="openCgpaBtn"><i class="fas fa-calculator"></i> Open CGPA Calculator</button>
<button class="btn-tool-info" onclick="showToolInfo('cgpa')"><i class="fas fa-info-circle"></i> Learn More</button>
</div>
</div>
</div>
<div class="tool-card attendance-card">
<div class="tool-icon"><i class="fas fa-calendar-check"></i></div>
<div class="tool-content">
<h3 class="tool-title">Attendance Tracker</h3>
<p class="tool-description">Track attendance per subject, mark present/absent, and see percentage & warnings.</p>
<div class="attendance-summary">
<span id="attendanceSubjects">0 subjects</span>
<span id="attendanceWarn">0 near limit</span>
</div>
<div class="tool-actions">
<button class="btn btn-tool-primary" id="openAttendanceBtn"><i class="fas fa-user-check"></i> Open Attendance Tracker</button>
<button class="btn-tool-info" onclick="showToolInfo('attendance')"><i class="fas fa-info-circle"></i> Learn More</button>
</div>
</div>
</div>
<div class="tool-card study-planner-card">
<div class="tool-icon"><i class="fas fa-book-open"></i></div>
<div class="tool-content">
<h3 class="tool-title">Study Planner</h3>
<p class="tool-description">Create personalized study schedules, set reminders for assignments and exams, and track your study progress effectively.</p>
<div class="planner-summary">
<div class="planner-stats">
<span id="plannerCount">0 tasks</span>
<span id="plannerCompleted">0 completed</span>
</div>
<div class="planner-progress">
<div class="planner-progress-bar"><div id="plannerProgressFill" style="width:0%"></div></div>
</div>
</div>
<div class="tool-actions">
<button class="btn btn-tool-primary" id="openPlannerBtn"><i class="fas fa-tasks"></i> Open Study Planner</button>
<button class="btn-tool-info" onclick="showToolInfo('planner')"><i class="fas fa-info-circle"></i> Learn More</button>
</div>
</div>
</div>
<div class="tool-card request-tool">
<div class="tool-icon"><i class="fas fa-plus-circle"></i></div>
<div class="tool-content">
<h3 class="tool-title">Request a Tool</h3>
<p class="tool-description">Have an idea for a tool that would help DSMNRU students? Let us know and we'll consider building it for the community.</p>
<div class="tool-actions">
<a href="https://t.me/dsmnru_bot" target="_blank" class="btn-tool-secondary"><i class="fab fa-telegram-plane"></i> Suggest Tool</a>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="upload-section py-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header bg-primary text-white">
<h5 class="mb-0"><i class="fas fa-cloud-upload-alt"></i> Help us grow the collection</h5>
</div>
<div class="card-body">
<p class="text-muted mb-4">Share your question papers and syllabus to help fellow students</p>
<div class="upload-form-shell">
<form id="userUploadForm">
<div class="mb-3">
<label for="uploadTitle" class="form-label">Title <span class="text-danger">*</span></label>
<input type="text" class="form-control" id="uploadTitle" placeholder="e.g.,Indian Consititution" required>
</div>
<div class="mb-3">
<label for="uploadName" class="form-label">Your Name <span class="text-danger">*</span></label>
<input type="text" class="form-control" id="uploadName" placeholder="Enter your name" required>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="uploadCourse" class="form-label">Course (optional)</label>
<input type="text" class="form-control" id="uploadCourse" placeholder="e.g., B.A.">
</div>
<div class="col-md-6 mb-3">
<label for="uploadSemester" class="form-label">Semester (optional)</label>
<input type="text" class="form-control" id="uploadSemester" placeholder="e.g., 6th">
</div>
</div>
<div class="mb-3">
<label for="uploadFile" class="form-label">PDF or Images <span class="text-danger">*</span></label>
<input type="file" class="form-control" id="uploadFile" accept=".pdf,image/*" multiple required>
<small class="form-text text-muted d-block mt-2">You can upload one PDF directly, or select multiple images from your gallery. Images are auto-converted into one PDF. Final PDF must be 10MB or less.</small>
<div id="uploadFilePreview" class="upload-file-preview" style="display: none;" aria-live="polite">
<div class="upload-file-preview-head">
<span id="uploadFilePreviewSummary">No files selected</span>
<span id="uploadFilePreviewPages">Estimated pages: 0</span>
</div>
<ul id="uploadFilePreviewList" class="upload-file-preview-list"></ul>
</div>
</div>
<button type="submit" class="btn btn-primary w-100"><i class="fas fa-upload"></i> Upload File</button>
</form>
<div id="uploadFormLockOverlay" class="upload-form-lock-overlay" aria-hidden="true">
<div class="upload-form-lock-card">
<div class="upload-form-lock-icon"><i class="fas fa-cloud-upload-alt"></i></div>
<h6 class="mb-2">Public upload form</h6>
<p class="mb-0">No signup required. Add your name and share a PDF to contribute to the archive.</p>
</div>
</div>
</div>
<div id="uploadStatus" class="mt-3" style="display: none;">
<div class="alert alert-info" role="alert">
<div id="uploadStatusMessage"></div>
<div id="uploadProgress" class="progress mt-2" style="display: none;">
<div id="uploadProgressBar" class="progress-bar" role="progressbar" style="width: 0%"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="footer-content">
<p>© 2025 DSMNRU Academic Archive. Made with <i class="fas fa-heart" style="color: #e74c3c;"></i> for students.</p>
<div class="social-links">
<a href="https://whatsapp.com/channel/0029Vat8KYICxoAmUBFMaO0t" target="_blank" title="WhatsApp"><i class="fab fa-whatsapp"></i></a>
</div>
</div>
</footer>
<!-- Common Modals -->
<div class="modal fade" id="loginModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Login</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><form id="loginForm"><div class="mb-3"><label class="form-label" for="loginEmail">Email</label><input id="loginEmail" class="form-control" type="email" required></div><div class="mb-3"><label class="form-label" for="loginPassword">Password</label><input id="loginPassword" class="form-control" type="password" required></div><div id="loginError" class="alert alert-danger" style="display:none;"></div><button type="submit" class="btn btn-primary w-100">Login</button></form></div></div></div>
</div>
<div class="modal fade" id="signupModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Sign Up</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><form id="signupForm"><div class="mb-3"><label class="form-label" for="signupEmail">Email</label><input id="signupEmail" class="form-control" type="email" required></div><div class="mb-3"><label class="form-label" for="signupPassword">Password</label><input id="signupPassword" class="form-control" type="password" required></div><div class="mb-3"><label class="form-label" for="signupConfirmPassword">Confirm Password</label><input id="signupConfirmPassword" class="form-control" type="password" required></div><div id="signupError" class="alert alert-danger" style="display:none;"></div><button type="submit" class="btn btn-primary w-100">Create Account</button></form></div></div></div>
</div>
<div class="modal fade" id="profileModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas fa-user"></i> My Profile</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><form id="profileForm"><div class="mb-3"><label class="form-label" for="profileName">Full Name</label><input id="profileName" class="form-control" required></div><div class="mb-3"><label class="form-label" for="profileEmail">Email Address</label><input id="profileEmail" class="form-control" type="email" readonly></div><div class="mb-3"><label class="form-label" for="profileCourse">Course</label><input id="profileCourse" class="form-control" required></div><div class="mb-3"><label class="form-label" for="profilePhone">Phone Number</label><input id="profilePhone" class="form-control" type="tel" required></div><div class="mb-3"><label class="form-label">Created</label><p id="profileCreatedDate" class="form-control-plaintext"></p></div><div id="profileError" class="alert alert-danger" style="display:none;"></div><div id="profileSuccess" class="alert alert-success" style="display:none;"></div><button type="submit" class="btn btn-primary w-100">Save Profile</button></form></div></div></div>
</div>
<div class="modal fade" id="settingsModal" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas fa-cog"></i> Settings</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><div class="d-grid gap-2"><button type="button" class="btn btn-outline-light" onclick="openChangePasswordModal()">Change Password</button></div></div></div></div></div>
<div class="modal fade" id="changePasswordModal" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Change Password</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><form id="changePasswordForm"><div class="mb-3"><label class="form-label" for="currentPassword">Current Password</label><input id="currentPassword" class="form-control" type="password" required></div><div class="mb-3"><label class="form-label" for="newPassword">New Password</label><input id="newPassword" class="form-control" type="password" required></div><div class="mb-3"><label class="form-label" for="confirmNewPassword">Confirm New Password</label><input id="confirmNewPassword" class="form-control" type="password" required></div><div id="passwordError" class="alert alert-danger" style="display:none;"></div><div id="passwordSuccess" class="alert alert-success" style="display:none;"></div><button type="submit" class="btn btn-primary w-100">Update Password</button></form></div></div></div></div>
<div class="modal fade" id="emailVerificationModal" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Verify Email</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p>We sent a verification link to <strong id="verificationEmail"></strong>.</p><div class="d-grid gap-2"><button type="button" class="btn btn-primary" id="resendVerificationBtn" onclick="resendVerificationEmail()">Resend verification email</button><button type="button" class="btn btn-outline-light" onclick="logoutAndChangeEmail()">Use a different email</button></div></div></div></div></div>
<div class="modal fade" id="profileCompletionModal" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas fa-user-check"></i> Complete Your Profile</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p>Your profile is incomplete. Completing it unlocks uploads and keeps your account organized.</p><div class="d-flex gap-2 justify-content-end"><button type="button" class="btn btn-outline-secondary" onclick="dismissProfileCompletionReminder()">Later</button><button type="button" class="btn btn-primary" onclick="openProfileModalFromReminder()">Complete profile</button></div></div></div></div></div>
<div class="modal fade" id="pdfModal" tabindex="-1" aria-labelledby="pdfModalLabel" aria-hidden="true"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="pdfModalLabel">Document Preview</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><div class="modal-body"><iframe id="pdfViewer" width="100%" height="500px" frameborder="0"></iframe></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button></div></div></div></div>
<div class="modal fade" id="shareModal" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Share Document</h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><input id="shareLink" class="form-control mb-3" readonly><button id="copyLinkBtn" class="btn btn-primary w-100">Copy Link</button></div></div></div></div>
<!-- CGPA Calculator Modal -->
<div class="modal fade" id="cgpaModal" tabindex="-1" aria-labelledby="cgpaModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="cgpaModalLabel">CGPA Calculator</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Enter number of subjects</label>
<div class="d-flex gap-2 align-items-center">
<button class="btn btn-outline-light" id="cgpaDec">-</button>
<input id="cgpaCount" type="number" class="form-control" value="1" min="1" max="20" />
<button class="btn btn-outline-light" id="cgpaInc">+</button>
</div>
</div>
<div id="cgpaSubjects"></div>
<div class="d-flex gap-3 mt-3">
<button class="btn btn-primary" id="calculateCgpaBtn"><i class="fas fa-rocket"></i> Calculate CGPA</button>
<button class="btn btn-outline-light" id="resetCgpaBtn">Reset</button>
</div>
<div class="mt-4">
<h5>Results</h5>
<div id="cgpaResults" class="mt-2"></div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="script.js"></script>
</body>
</html>