diff --git a/admin.html b/admin.html index 92b7c7a..a874158 100644 --- a/admin.html +++ b/admin.html @@ -786,7 +786,22 @@

DSMNRU content dashboard

-
+
+ +
+
+
+
+
+
+ + +
+
+
+ + +
@@ -929,6 +948,13 @@

DSMNRU content dashboard

+
+ + +
diff --git a/admin.js b/admin.js index 1e8385f..5740bfe 100644 --- a/admin.js +++ b/admin.js @@ -87,6 +87,7 @@ document.addEventListener('DOMContentLoaded', function() { const course = document.getElementById('pyqCourse').value.trim(); const semester = document.getElementById('pyqSemester').value.trim(); const subject = document.getElementById('pyqSubject').value.trim(); + const branch = document.getElementById('pyqBranch').value.trim(); const session = document.getElementById('pyqSession').value.trim(); const file = document.getElementById('pyqFile').value; @@ -96,7 +97,7 @@ document.addEventListener('DOMContentLoaded', function() { } let currentSubject = subject; - let title = buildPyqTitle(course, semester, currentSubject, session); + let title = buildPyqTitle(course, branch, semester, currentSubject, session); let duplicateExists = await pyqTitleExists(title); if (duplicateExists === null) { @@ -123,7 +124,7 @@ document.addEventListener('DOMContentLoaded', function() { continue; } - title = buildPyqTitle(course, semester, currentSubject, session); + title = buildPyqTitle(course, branch, semester, currentSubject, session); duplicateExists = await pyqTitleExists(title); if (duplicateExists === null) { @@ -131,10 +132,14 @@ document.addEventListener('DOMContentLoaded', function() { } } - addItem('pyqs', { title, file, course, semester, subject: currentSubject, session }); + addItem('pyqs', { title, file, course, branch, semester, subject: currentSubject, session }); this.reset(); }); + + + setupAdminModeSwitcher(); + // Edit form document.getElementById('editForm').addEventListener('submit', function(e) { e.preventDefault(); @@ -145,7 +150,9 @@ document.addEventListener('DOMContentLoaded', function() { const course = document.getElementById('editCourse').value; const semester = document.getElementById('editSemester').value; editItem(type, index, { title, file, course, semester }); - bootstrap.Modal.getInstance(document.getElementById('editModal')).hide(); + const editModalEl = document.getElementById('editModal'); + window.bootstrap.Modal.getOrCreateInstance(editModalEl).hide(); + cleanupModalArtifacts(); }); }); @@ -169,6 +176,15 @@ function setupSectionCollapseBehavior() { }); } + +function cleanupModalArtifacts() { + document.body.classList.remove('modal-open'); + document.body.style.removeProperty('padding-right'); + document.querySelectorAll('.modal-backdrop').forEach(el => el.remove()); +} + +document.addEventListener('hidden.bs.modal', cleanupModalArtifacts); + function loadData() { // Auto-load pending uploads and registered users so counts and panels show immediately. loadPendingOnDemand(); @@ -463,8 +479,9 @@ function saveData() { console.warn('saveData() called - this project now uses Firestore. Use addItem/editItem/deleteItem instead.'); } -function buildPyqTitle(course, semester, subject, session) { - return `${normalizePyqText(course)} ${normalizePyqText(semester)} Sem ${normalizePyqText(subject)} {${normalizePyqText(session)}}`; +function buildPyqTitle(course, branch, semester, subject, session) { + const branchPart = normalizePyqText(branch); + return `${normalizePyqText(course)}${branchPart ? ` ${branchPart}` : ''} ${normalizePyqText(semester)} Sem ${normalizePyqText(subject)} {${normalizePyqText(session)}}`; } function normalizePyqText(value) { @@ -765,7 +782,7 @@ function renderContributors(contributors) {
-