Lashtw commited on
Commit
06a44ed
·
verified ·
1 Parent(s): 0e03b7a

Upload 10 files

Browse files
Files changed (1) hide show
  1. src/views/InstructorView.js +43 -43
src/views/InstructorView.js CHANGED
@@ -375,6 +375,46 @@ export async function renderInstructorView() {
375
 
376
  export function setupInstructorEvents() {
377
  console.log("Starting setupInstructorEvents...");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
 
379
  // Login Logic
380
  const authErrorMsg = document.getElementById('auth-error');
@@ -801,6 +841,8 @@ const checkPermissions = (instructor) => {
801
  if (!instructor) return;
802
 
803
  currentInstructor = instructor;
 
 
804
 
805
  // UI References (Live Query)
806
  const liveCreateBtn = document.getElementById('create-room-btn');
@@ -1401,50 +1443,7 @@ if (navInstBtn) {
1401
 
1402
 
1403
 
1404
- // Expose Nav Functions Globally
1405
- window.openAdminPanel = () => {
1406
- // Validation handled by UI visibility, but double check
1407
- if (!currentInstructor?.permissions?.includes('add_question')) return alert("無權限");
1408
 
1409
- // Use a simple prompt for now or open a modal
1410
- // For now, let's just toggle the admin view (or navigate)
1411
- // Since we reverted AdminView, we might just show an alert or a different modal
1412
- // Based on original code, it seemed to just show an alert or navigate?
1413
- alert("管理功能尚未開放 (Admin Function Placeholder)");
1414
- };
1415
-
1416
- window.openInstructorPanel = async () => {
1417
- if (!currentInstructor?.permissions?.includes('manage_instructors')) return alert("無權限");
1418
-
1419
- const modal = document.getElementById('instructor-modal');
1420
- if (modal) {
1421
- modal.classList.remove('hidden');
1422
- await loadInstructorList();
1423
- }
1424
- };
1425
-
1426
- // Add Instructor Event
1427
- window.addInstructorHandler = async () => {
1428
- const email = document.getElementById('new-inst-email').value.trim();
1429
- const name = document.getElementById('new-inst-name').value.trim();
1430
- const perms = [];
1431
- if (document.getElementById('perm-room').checked) perms.push('create_room');
1432
- if (document.getElementById('perm-q').checked) perms.push('add_question');
1433
- if (document.getElementById('perm-inst').checked) perms.push('manage_instructors');
1434
-
1435
- if (!email || !name) return alert("請輸入完整資料");
1436
-
1437
- try {
1438
- await addInstructor(email, name, perms);
1439
- alert("新增成功");
1440
- await loadInstructorList(); // Reload
1441
- document.getElementById('new-inst-email').value = '';
1442
- document.getElementById('new-inst-name').value = '';
1443
- } catch (e) {
1444
- console.error(e);
1445
- alert("新增失敗: " + e.message);
1446
- }
1447
- };
1448
 
1449
  const btnAddInst = document.getElementById('btn-add-inst');
1450
  if (btnAddInst) {
@@ -2605,3 +2604,4 @@ if (navInstBtn) {
2605
 
2606
 
2607
 
 
 
375
 
376
  export function setupInstructorEvents() {
377
  console.log("Starting setupInstructorEvents...");
378
+ if (typeof window.currentInstructor === 'undefined') window.currentInstructor = null;
379
+
380
+
381
+ // --- Global Nav Functions (Hoisted) ---
382
+ window.openAdminPanel = () => {
383
+ if (!window.currentInstructor?.permissions?.includes('add_question')) return alert("無權限");
384
+ alert("管理功能尚未開放 (Admin Function Placeholder)");
385
+ };
386
+
387
+ window.openInstructorPanel = async () => {
388
+ if (!window.currentInstructor?.permissions?.includes('manage_instructors')) return alert("無權限");
389
+ const modal = document.getElementById('instructor-modal');
390
+ if (modal) {
391
+ modal.classList.remove('hidden');
392
+ if (typeof loadInstructorList === 'function') await loadInstructorList();
393
+ else console.error("loadInstructorList not found");
394
+ }
395
+ };
396
+
397
+ window.addInstructorHandler = async () => {
398
+ const email = document.getElementById('new-inst-email').value.trim();
399
+ const name = document.getElementById('new-inst-name').value.trim();
400
+ const perms = [];
401
+ if (document.getElementById('perm-room').checked) perms.push('create_room');
402
+ if (document.getElementById('perm-q').checked) perms.push('add_question');
403
+ if (document.getElementById('perm-inst').checked) perms.push('manage_instructors');
404
+
405
+ if (!email || !name) return alert("請輸入完整資料");
406
+
407
+ try {
408
+ await addInstructor(email, name, perms);
409
+ alert("新增成功");
410
+ if (typeof loadInstructorList === 'function') await loadInstructorList();
411
+ document.getElementById('new-inst-email').value = '';
412
+ document.getElementById('new-inst-name').value = '';
413
+ } catch (e) {
414
+ console.error(e);
415
+ alert("新增失敗: " + e.message);
416
+ }
417
+ };
418
 
419
  // Login Logic
420
  const authErrorMsg = document.getElementById('auth-error');
 
841
  if (!instructor) return;
842
 
843
  currentInstructor = instructor;
844
+ window.currentInstructor = instructor; // Sync global for nav functions
845
+
846
 
847
  // UI References (Live Query)
848
  const liveCreateBtn = document.getElementById('create-room-btn');
 
1443
 
1444
 
1445
 
 
 
 
 
1446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1447
 
1448
  const btnAddInst = document.getElementById('btn-add-inst');
1449
  if (btnAddInst) {
 
2604
 
2605
 
2606
 
2607
+