From 1af02dadd364a00a2c0d0daf94e62ffe6924428b Mon Sep 17 00:00:00 2001 From: root Date: Thu, 4 Jun 2026 02:55:19 -0400 Subject: [PATCH] cleanup codeigniter code --- package.json | 2 +- scripts/dump-school-policy.php | 31 +- scripts/gen-ci-route-meta.mjs | 92 ----- scripts/gen-view-route-meta.mjs | 140 ++++++++ src/App.tsx | 12 +- src/data/neStates.ts | 2 +- src/index.css | 2 +- src/lib/ciRouteManual.ts | 24 -- src/lib/ciRouteMeta.generated.ts | 324 ----------------- src/lib/ciSpaPaths.ts | 1 - .../{ciRouteLookup.ts => viewRouteLookup.ts} | 254 ++++++------- src/lib/viewRouteManual.ts | 24 ++ src/lib/viewRouteMeta.generated.ts | 338 ++++++++++++++++++ src/pages/CiPlaceholderPage.tsx | 47 --- src/pages/ForgotPasswordPage.tsx | 1 - src/pages/HomePage.css | 1 - src/pages/HomePage.tsx | 2 +- src/pages/LoginPage.tsx | 1 - src/pages/RegisterPage.tsx | 1 - src/pages/ViewRoutePlaceholderPage.tsx | 49 +++ ...temapPage.tsx => ViewRouteSitemapPage.tsx} | 119 +++--- src/pages/emails/EmailPreviewLayout.css | 1 - src/pages/emails/EmailTemplatePreviewPage.tsx | 2 +- src/pages/emails/EmailTemplatesIndexPage.tsx | 12 +- src/pages/emails/emailTemplatesRegistry.tsx | 64 ++-- src/pages/errors/AccessDeniedPage.tsx | 2 +- src/pages/errors/InvalidTokenPage.tsx | 1 - src/pages/expenses/ExpenseVendorFields.tsx | 4 - src/pages/parent/ParentParityShell.tsx | 25 +- src/pages/teacher/TeacherParityPages.tsx | 1 - src/styles/ci-registration.css | 1 - 31 files changed, 824 insertions(+), 756 deletions(-) delete mode 100644 scripts/gen-ci-route-meta.mjs create mode 100644 scripts/gen-view-route-meta.mjs delete mode 100644 src/lib/ciRouteManual.ts delete mode 100644 src/lib/ciRouteMeta.generated.ts rename src/lib/{ciRouteLookup.ts => viewRouteLookup.ts} (85%) create mode 100644 src/lib/viewRouteManual.ts create mode 100644 src/lib/viewRouteMeta.generated.ts delete mode 100644 src/pages/CiPlaceholderPage.tsx create mode 100644 src/pages/ViewRoutePlaceholderPage.tsx rename src/pages/{CiSitemapPage.tsx => ViewRouteSitemapPage.tsx} (59%) diff --git a/package.json b/package.json index a59287e..a789a4a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "test:api": "node scripts/test-api.mjs", - "gen:ci-meta": "node scripts/gen-ci-route-meta.mjs", + "gen:view-meta": "node scripts/gen-view-route-meta.mjs", "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", diff --git a/scripts/dump-school-policy.php b/scripts/dump-school-policy.php index 1958d98..57198b9 100644 --- a/scripts/dump-school-policy.php +++ b/scripts/dump-school-policy.php @@ -1,14 +1,31 @@ 'School Policy', + 'sections' => [ + [ + 'subsections' => [ + [ + 'body' => $html, + ], + ], + ], + ], +]; $outDir = $root . '/public/policy'; if (!is_dir($outDir)) { diff --git a/scripts/gen-ci-route-meta.mjs b/scripts/gen-ci-route-meta.mjs deleted file mode 100644 index 17f0133..0000000 --- a/scripts/gen-ci-route-meta.mjs +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Generates src/lib/ciRouteMeta.generated.ts from CodeIgniter app/Views/*.php files. - * Run: node scripts/gen-ci-route-meta.mjs - */ -import fs from 'fs' -import path from 'path' -import { fileURLToPath } from 'url' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const viewsRoot = path.resolve(__dirname, '../../app_codeigniter/app/Views') -const outFile = path.resolve(__dirname, '../src/lib/ciRouteMeta.generated.ts') - -const SKIP_DIRS = new Set([ - 'layout', - 'partials', - 'errors', - 'pagination', - 'docs', -]) - -function humanize(slug) { - const s = slug.replace(/\.php$/i, '').replace(/_/g, ' ') - return s.replace(/\b\w/g, (c) => c.toUpperCase()) -} - -function walk(dir, baseRel) { - const out = [] - let entries = [] - try { - entries = fs.readdirSync(dir, { withFileTypes: true }) - } catch { - return out - } - for (const e of entries) { - const rel = path.join(baseRel, e.name) - const full = path.join(dir, e.name) - if (e.isDirectory()) { - if (SKIP_DIRS.has(e.name)) continue - out.push(...walk(full, rel)) - } else if (e.isFile() && e.name.endsWith('.php')) { - out.push(rel.replace(/\\/g, '/')) - } - } - return out -} - -function main() { - if (!fs.existsSync(viewsRoot)) { - console.error('Missing Views folder:', viewsRoot) - process.exit(1) - } - - const files = walk(viewsRoot, '') - .filter((f) => !f.includes('/layout/')) - .sort() - - const entries = [] - for (const f of files) { - const parts = f.split('/') - const base = parts.pop().replace(/\.php$/i, '') - const section = parts.join('/') || '(root)' - const routeKey = [...parts, base].filter(Boolean).join('/') - const ciViewPath = f - const title = humanize(base) - entries.push({ routeKey, title, ciViewPath }) - } - - const lines = [] - lines.push(`/** Auto-generated by scripts/gen-ci-route-meta.mjs — do not edit by hand. */`) - lines.push(``) - lines.push(`export type CiRouteMetaEntry = {`) - lines.push(` title: string`) - lines.push(` ciViewPath: string`) - lines.push(`}`) - lines.push(``) - lines.push(`export const ciRouteMeta: Record = {`) - - for (const { routeKey, title, ciViewPath } of entries) { - const safeTitle = title.replace(/\\/g, '\\\\').replace(/'/g, "\\'") - const safeView = ciViewPath.replace(/\\/g, '/') - lines.push(` '${routeKey}': { title: '${safeTitle}', ciViewPath: '${safeView}' },`) - } - - lines.push(`}`) - lines.push(``) - - fs.mkdirSync(path.dirname(outFile), { recursive: true }) - fs.writeFileSync(outFile, lines.join('\n'), 'utf8') - console.log(`Wrote ${entries.length} entries → ${path.relative(process.cwd(), outFile)}`) -} - -main() diff --git a/scripts/gen-view-route-meta.mjs b/scripts/gen-view-route-meta.mjs new file mode 100644 index 0000000..87bb2f0 --- /dev/null +++ b/scripts/gen-view-route-meta.mjs @@ -0,0 +1,140 @@ +/** + * Generates src/lib/viewRouteMeta.generated.ts from discovered PHP view files. + * Run: node scripts/gen-view-route-meta.mjs + */ +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const projectRoot = path.resolve(__dirname, '..') +const parentRoot = path.resolve(projectRoot, '..') +const outFile = path.resolve(projectRoot, 'src/lib/viewRouteMeta.generated.ts') + +const SKIP_DIRS = new Set([ + 'layout', + 'partials', + 'errors', + 'pagination', + 'docs', +]) + +function humanize(slug) { + const normalized = slug.replace(/(\.blade)?\.php$/i, '').replace(/_/g, ' ') + return normalized.replace(/\b\w/g, (char) => char.toUpperCase()) +} + +function walk(dir, baseRel) { + const out = [] + let entries = [] + + try { + entries = fs.readdirSync(dir, { withFileTypes: true }) + } catch { + return out + } + + for (const entry of entries) { + const rel = path.join(baseRel, entry.name) + const full = path.join(dir, entry.name) + + if (entry.isDirectory()) { + if (SKIP_DIRS.has(entry.name)) continue + out.push(...walk(full, rel)) + continue + } + + if (entry.isFile() && /\.php$/i.test(entry.name)) { + out.push(rel.replace(/\\/g, '/')) + } + } + + return out +} + +function discoverViewRoots() { + const roots = [] + const fromEnv = process.env.VIEW_SOURCE_ROOT?.trim() + + if (fromEnv) { + roots.push(path.resolve(projectRoot, fromEnv)) + } + + let siblings = [] + try { + siblings = fs.readdirSync(parentRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => path.join(parentRoot, entry.name)) + } catch { + siblings = [] + } + + for (const sibling of siblings) { + roots.push(path.join(sibling, 'app', 'Views')) + roots.push(path.join(sibling, 'resources', 'views')) + } + + return [...new Set(roots)].filter((root) => fs.existsSync(root)) +} + +function resolveViewsRoot() { + let best = null + let bestCount = -1 + + for (const candidate of discoverViewRoots()) { + const count = walk(candidate, '').length + if (count > bestCount) { + best = candidate + bestCount = count + } + } + + return best +} + +function main() { + const viewsRoot = resolveViewsRoot() + if (!viewsRoot) { + console.error('Missing PHP view source folder. Set VIEW_SOURCE_ROOT to override discovery.') + process.exit(1) + } + + const files = walk(viewsRoot, '') + .filter((file) => !file.includes('/layout/')) + .sort() + + const entries = [] + for (const file of files) { + const parts = file.split('/') + const base = parts.pop().replace(/(\.blade)?\.php$/i, '') + const routeKey = [...parts, base].filter(Boolean).join('/') + const sourceViewPath = file + const title = humanize(base) + entries.push({ routeKey, title, sourceViewPath }) + } + + const lines = [] + lines.push('/** Auto-generated by scripts/gen-view-route-meta.mjs — do not edit by hand. */') + lines.push('') + lines.push('export type ViewRouteMetaEntry = {') + lines.push(' title: string') + lines.push(' sourceViewPath: string') + lines.push('}') + lines.push('') + lines.push('export const viewRouteMeta: Record = {') + + for (const { routeKey, title, sourceViewPath } of entries) { + const safeTitle = title.replace(/\\/g, '\\\\').replace(/'/g, "\\'") + const safeView = sourceViewPath.replace(/\\/g, '/') + lines.push(` '${routeKey}': { title: '${safeTitle}', sourceViewPath: '${safeView}' },`) + } + + lines.push('}') + lines.push('') + + fs.mkdirSync(path.dirname(outFile), { recursive: true }) + fs.writeFileSync(outFile, lines.join('\n'), 'utf8') + console.log(`Wrote ${entries.length} entries → ${path.relative(process.cwd(), outFile)}`) +} + +main() diff --git a/src/App.tsx b/src/App.tsx index 403764d..a759695 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -71,11 +71,11 @@ const AppHome = lazy(() => import('./pages/AppHome').then((m) => ({ default: m.A const AdminLandingDashboardPage = lazy(() => import('./pages/landing/AdminLandingDashboardPage').then((m) => ({ default: m.AdminLandingDashboardPage })), ) -const CiSitemapPage = lazy(() => - import('./pages/CiSitemapPage').then((m) => ({ default: m.CiSitemapPage })), +const ViewRouteSitemapPage = lazy(() => + import('./pages/ViewRouteSitemapPage').then((m) => ({ default: m.ViewRouteSitemapPage })), ) -const CiPlaceholderPage = lazy(() => - import('./pages/CiPlaceholderPage').then((m) => ({ default: m.CiPlaceholderPage })), +const ViewRoutePlaceholderPage = lazy(() => + import('./pages/ViewRoutePlaceholderPage').then((m) => ({ default: m.ViewRoutePlaceholderPage })), ) const NavBuilderPage = lazy(() => import('./pages/NavBuilderPage').then((m) => ({ default: m.NavBuilderPage })), @@ -1426,8 +1426,8 @@ export default function App() { }> - } /> - } /> + } /> + } /> diff --git a/src/data/neStates.ts b/src/data/neStates.ts index 238566e..9ceaa3c 100644 --- a/src/data/neStates.ts +++ b/src/data/neStates.ts @@ -1,4 +1,4 @@ -/** Northeast states — same labels as CodeIgniter user/register.php */ + export const NE_STATES: { abbr: string; name: string }[] = [ { abbr: 'CT', name: 'Connecticut' }, { abbr: 'ME', name: 'Maine' }, diff --git a/src/index.css b/src/index.css index 7c8c69b..4748a39 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,5 @@ :root { - /* Mirrors CodeIgniter management_layout theme tokens */ + --app-primary: #22a047; --mgmt-primary: #22a047; --mgmt-primary-hover: #1c863b; diff --git a/src/lib/ciRouteManual.ts b/src/lib/ciRouteManual.ts deleted file mode 100644 index e9d3cb0..0000000 --- a/src/lib/ciRouteManual.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { CiRouteMetaEntry } from './ciRouteMeta.generated' - -/** - * CI routes that do not map 1:1 to a single Views/*.php filename (composed dashboards, aliases). - * Keys use snake_case segments like the generated registry. - */ -export const ciRouteManual: Record = { - 'teacher/dashboard': { - title: 'Teacher dashboard', - ciViewPath: '(TeacherController::dashboard — see Views/teacher/*.php)', - }, - 'administrator/dashboard': { - title: 'Administrator dashboard', - ciViewPath: '(Support/administrator dashboards — see Views/administrator/*.php)', - }, - 'administrator/administratordashboard': { - title: 'Administrator dashboard', - ciViewPath: 'administrator/administratordashboard.php', - }, - 'landing_page/guest_dashboard': { - title: 'Guest dashboard', - ciViewPath: 'landing_page/guest_dashboard.php', - }, -} diff --git a/src/lib/ciRouteMeta.generated.ts b/src/lib/ciRouteMeta.generated.ts deleted file mode 100644 index 361b2cd..0000000 --- a/src/lib/ciRouteMeta.generated.ts +++ /dev/null @@ -1,324 +0,0 @@ -/** Auto-generated by scripts/gen-ci-route-meta.mjs — do not edit by hand. */ - -export type CiRouteMetaEntry = { - title: string - ciViewPath: string -} - -export const ciRouteMeta: Record = { - 'about': { title: 'About', ciViewPath: 'about.php' }, - 'account/choose_account': { title: 'Choose Account', ciViewPath: 'account/choose_account.php' }, - 'activate_account': { title: 'Activate Account', ciViewPath: 'activate_account.php' }, - 'admin/class_progress_list': { title: 'Class Progress List', ciViewPath: 'admin/class_progress_list.php' }, - 'admin/class_progress_view': { title: 'Class Progress View', ciViewPath: 'admin/class_progress_view.php' }, - 'admin/competition_winners/form': { title: 'Form', ciViewPath: 'admin/competition_winners/form.php' }, - 'admin/competition_winners/index': { title: 'Index', ciViewPath: 'admin/competition_winners/index.php' }, - 'admin/competition_winners/preview': { title: 'Preview', ciViewPath: 'admin/competition_winners/preview.php' }, - 'admin/competition_winners/scores': { title: 'Scores', ciViewPath: 'admin/competition_winners/scores.php' }, - 'admin/competition_winners/winners': { title: 'Winners', ciViewPath: 'admin/competition_winners/winners.php' }, - 'admin/student_score_card': { title: 'Student Score Card', ciViewPath: 'admin/student_score_card.php' }, - 'administrator/absence_vacation': { title: 'Absence Vacation', ciViewPath: 'administrator/absence_vacation.php' }, - 'administrator/academic_performance': { title: 'Academic Performance', ciViewPath: 'administrator/academic_performance.php' }, - 'administrator/admin_attendance_records': { title: 'Admin Attendance Records', ciViewPath: 'administrator/admin_attendance_records.php' }, - 'administrator/admin_profiles': { title: 'Admin Profiles', ciViewPath: 'administrator/admin_profiles.php' }, - 'administrator/administratordashboard': { title: 'Administratordashboard', ciViewPath: 'administrator/administratordashboard.php' }, - 'administrator/attendance': { title: 'Attendance', ciViewPath: 'administrator/attendance.php' }, - 'administrator/attendance_records': { title: 'Attendance Records', ciViewPath: 'administrator/attendance_records.php' }, - 'administrator/behavior_reports': { title: 'Behavior Reports', ciViewPath: 'administrator/behavior_reports.php' }, - 'administrator/broadcast_email': { title: 'Broadcast Email', ciViewPath: 'administrator/broadcast_email.php' }, - 'administrator/budget_reports': { title: 'Budget Reports', ciViewPath: 'administrator/budget_reports.php' }, - 'administrator/calendar': { title: 'Calendar', ciViewPath: 'administrator/calendar.php' }, - 'administrator/calendar_add_event': { title: 'Calendar Add Event', ciViewPath: 'administrator/calendar_add_event.php' }, - 'administrator/calendar_edit': { title: 'Calendar Edit', ciViewPath: 'administrator/calendar_edit.php' }, - 'administrator/calendar_view': { title: 'Calendar View', ciViewPath: 'administrator/calendar_view.php' }, - 'administrator/class_assignment': { title: 'Class Assignment', ciViewPath: 'administrator/class_assignment.php' }, - 'administrator/class_section': { title: 'Class Section', ciViewPath: 'administrator/class_section.php' }, - 'administrator/class_warning_modal': { title: 'Class Warning Modal', ciViewPath: 'administrator/class_warning_modal.php' }, - 'administrator/communication_logs': { title: 'Communication Logs', ciViewPath: 'administrator/communication_logs.php' }, - 'administrator/course_materials': { title: 'Course Materials', ciViewPath: 'administrator/course_materials.php' }, - 'administrator/create_parent': { title: 'Create Parent', ciViewPath: 'administrator/create_parent.php' }, - 'administrator/daily_attendance': { title: 'Daily Attendance', ciViewPath: 'administrator/daily_attendance.php' }, - 'administrator/daily_attendance_analysis': { title: 'Daily Attendance Analysis', ciViewPath: 'administrator/daily_attendance_analysis.php' }, - 'administrator/edit_parent': { title: 'Edit Parent', ciViewPath: 'administrator/edit_parent.php' }, - 'administrator/edit_teacher': { title: 'Edit Teacher', ciViewPath: 'administrator/edit_teacher.php' }, - 'administrator/emergency_contact/edit': { title: 'Edit', ciViewPath: 'administrator/emergency_contact/edit.php' }, - 'administrator/emergency_contact/index': { title: 'Index', ciViewPath: 'administrator/emergency_contact/index.php' }, - 'administrator/events/create_event': { title: 'Create Event', ciViewPath: 'administrator/events/create_event.php' }, - 'administrator/events/edit_event': { title: 'Edit Event', ciViewPath: 'administrator/events/edit_event.php' }, - 'administrator/events/event_charges': { title: 'Event Charges', ciViewPath: 'administrator/events/event_charges.php' }, - 'administrator/events/event_list': { title: 'Event List', ciViewPath: 'administrator/events/event_list.php' }, - 'administrator/exam_drafts': { title: 'Exam Drafts', ciViewPath: 'administrator/exam_drafts.php' }, - 'administrator/expense_management': { title: 'Expense Management', ciViewPath: 'administrator/expense_management.php' }, - 'administrator/fee_collection': { title: 'Fee Collection', ciViewPath: 'administrator/fee_collection.php' }, - 'administrator/fee_payment_records': { title: 'Fee Payment Records', ciViewPath: 'administrator/fee_payment_records.php' }, - 'administrator/feedback_complaints': { title: 'Feedback Complaints', ciViewPath: 'administrator/feedback_complaints.php' }, - 'administrator/grades': { title: 'Grades', ciViewPath: 'administrator/grades.php' }, - 'administrator/grading_management': { title: 'Grading Management', ciViewPath: 'administrator/grading_management.php' }, - 'administrator/health_records': { title: 'Health Records', ciViewPath: 'administrator/health_records.php' }, - 'administrator/index': { title: 'Index', ciViewPath: 'administrator/index.php' }, - 'administrator/ip_bans': { title: 'Ip Bans', ciViewPath: 'administrator/ip_bans.php' }, - 'administrator/late_slip_logs': { title: 'Late Slip Logs', ciViewPath: 'administrator/late_slip_logs.php' }, - 'administrator/manage_users': { title: 'Manage Users', ciViewPath: 'administrator/manage_users.php' }, - 'administrator/notifications_alerts': { title: 'Notifications Alerts', ciViewPath: 'administrator/notifications_alerts.php' }, - 'administrator/parent': { title: 'Parent', ciViewPath: 'administrator/parent.php' }, - 'administrator/parent_profile': { title: 'Parent Profile', ciViewPath: 'administrator/parent_profile.php' }, - 'administrator/paypal_transactions': { title: 'Paypal Transactions', ciViewPath: 'administrator/paypal_transactions.php' }, - 'administrator/payroll_management': { title: 'Payroll Management', ciViewPath: 'administrator/payroll_management.php' }, - 'administrator/performance_reviews': { title: 'Performance Reviews', ciViewPath: 'administrator/performance_reviews.php' }, - 'administrator/print_notification_admins': { title: 'Print Notification Admins', ciViewPath: 'administrator/print_notification_admins.php' }, - 'administrator/removed_students': { title: 'Removed Students', ciViewPath: 'administrator/removed_students.php' }, - 'administrator/scholarship_information': { title: 'Scholarship Information', ciViewPath: 'administrator/scholarship_information.php' }, - 'administrator/search_results': { title: 'Search Results', ciViewPath: 'administrator/search_results.php' }, - 'administrator/sections_auto_distribute': { title: 'Sections Auto Distribute', ciViewPath: 'administrator/sections_auto_distribute.php' }, - 'administrator/settings': { title: 'Settings', ciViewPath: 'administrator/settings.php' }, - 'administrator/student_class_assignment': { title: 'Student Class Assignment', ciViewPath: 'administrator/student_class_assignment.php' }, - 'administrator/student_profiles': { title: 'Student Profiles', ciViewPath: 'administrator/student_profiles.php' }, - 'administrator/subject_curriculum': { title: 'Subject Curriculum', ciViewPath: 'administrator/subject_curriculum.php' }, - 'administrator/teacher_class_assignment': { title: 'Teacher Class Assignment', ciViewPath: 'administrator/teacher_class_assignment.php' }, - 'administrator/teacher_submissions': { title: 'Teacher Submissions', ciViewPath: 'administrator/teacher_submissions.php' }, - 'administrator/teachers': { title: 'Teachers', ciViewPath: 'administrator/teachers.php' }, - 'appointment': { title: 'Appointment', ciViewPath: 'appointment.php' }, - 'attendance/admins_attendance_form': { title: 'Admins Attendance Form', ciViewPath: 'attendance/admins_attendance_form.php' }, - 'attendance/attendance_tracking': { title: 'Attendance Tracking', ciViewPath: 'attendance/attendance_tracking.php' }, - 'attendance/compose_email': { title: 'Compose Email', ciViewPath: 'attendance/compose_email.php' }, - 'attendance/early_dismissals': { title: 'Early Dismissals', ciViewPath: 'attendance/early_dismissals.php' }, - 'attendance/early_dismissals_add': { title: 'Early Dismissals Add', ciViewPath: 'attendance/early_dismissals_add.php' }, - 'attendance/edit_modal': { title: 'Edit Modal', ciViewPath: 'attendance/edit_modal.php' }, - 'attendance/parent_reports': { title: 'Parent Reports', ciViewPath: 'attendance/parent_reports.php' }, - 'attendance/teacher_attendance_form': { title: 'Teacher Attendance Form', ciViewPath: 'attendance/teacher_attendance_form.php' }, - 'attendance/teacher_attendance_month': { title: 'Teacher Attendance Month', ciViewPath: 'attendance/teacher_attendance_month.php' }, - 'attendance/view': { title: 'View', ciViewPath: 'attendance/view.php' }, - 'attendance/violations_notified': { title: 'Violations Notified', ciViewPath: 'attendance/violations_notified.php' }, - 'attendance/violations_pending': { title: 'Violations Pending', ciViewPath: 'attendance/violations_pending.php' }, - 'attendance_templates/index': { title: 'Index', ciViewPath: 'attendance_templates/index.php' }, - 'auth/select_role': { title: 'Select Role', ciViewPath: 'auth/select_role.php' }, - 'calendar': { title: 'Calendar', ciViewPath: 'calendar.php' }, - 'call_to_action': { title: 'Call To Action', ciViewPath: 'call_to_action.php' }, - 'class_prep/list': { title: 'List', ciViewPath: 'class_prep/list.php' }, - 'class_prep/print': { title: 'Print', ciViewPath: 'class_prep/print.php' }, - 'classes': { title: 'Classes', ciViewPath: 'classes.php' }, - 'communications/index': { title: 'Index', ciViewPath: 'communications/index.php' }, - 'configuration/configuration_view': { title: 'Configuration View', ciViewPath: 'configuration/configuration_view.php' }, - 'contact': { title: 'Contact', ciViewPath: 'contact.php' }, - 'contact_process': { title: 'Contact Process', ciViewPath: 'contact_process.php' }, - 'discounts/apply_voucher': { title: 'Apply Voucher', ciViewPath: 'discounts/apply_voucher.php' }, - 'discounts/create': { title: 'Create', ciViewPath: 'discounts/create.php' }, - 'discounts/list': { title: 'List', ciViewPath: 'discounts/list.php' }, - 'emails/_wrap_layout': { title: ' Wrap Layout', ciViewPath: 'emails/_wrap_layout.php' }, - 'emails/admin_student_registered': { title: 'Admin Student Registered', ciViewPath: 'emails/admin_student_registered.php' }, - 'emails/below_sixty_performance': { title: 'Below Sixty Performance', ciViewPath: 'emails/below_sixty_performance.php' }, - 'emails/broadcast_wrapper': { title: 'Broadcast Wrapper', ciViewPath: 'emails/broadcast_wrapper.php' }, - 'emails/calendar_notification': { title: 'Calendar Notification', ciViewPath: 'emails/calendar_notification.php' }, - 'emails/custom_html': { title: 'Custom Html', ciViewPath: 'emails/custom_html.php' }, - 'emails/dismissal': { title: 'Dismissal', ciViewPath: 'emails/dismissal.php' }, - 'emails/event_broadcast': { title: 'Event Broadcast', ciViewPath: 'emails/event_broadcast.php' }, - 'emails/extra_charge_notice': { title: 'Extra Charge Notice', ciViewPath: 'emails/extra_charge_notice.php' }, - 'emails/final_warning': { title: 'Final Warning', ciViewPath: 'emails/final_warning.php' }, - 'emails/follow_up': { title: 'Follow Up', ciViewPath: 'emails/follow_up.php' }, - 'emails/parent_attendance_admin': { title: 'Parent Attendance Admin', ciViewPath: 'emails/parent_attendance_admin.php' }, - 'emails/parent_attendance_parent': { title: 'Parent Attendance Parent', ciViewPath: 'emails/parent_attendance_parent.php' }, - 'emails/parent_email_extractor': { title: 'Parent Email Extractor', ciViewPath: 'emails/parent_email_extractor.php' }, - 'emails/payment_receipt': { title: 'Payment Receipt', ciViewPath: 'emails/payment_receipt.php' }, - 'emails/reset_password': { title: 'Reset Password', ciViewPath: 'emails/reset_password.php' }, - 'emails/status_admission_review': { title: 'Status Admission Review', ciViewPath: 'emails/status_admission_review.php' }, - 'emails/status_denied': { title: 'Status Denied', ciViewPath: 'emails/status_denied.php' }, - 'emails/status_enrolled': { title: 'Status Enrolled', ciViewPath: 'emails/status_enrolled.php' }, - 'emails/status_not_enrolled': { title: 'Status Not Enrolled', ciViewPath: 'emails/status_not_enrolled.php' }, - 'emails/status_payment_pending': { title: 'Status Payment Pending', ciViewPath: 'emails/status_payment_pending.php' }, - 'emails/status_refund_pending': { title: 'Status Refund Pending', ciViewPath: 'emails/status_refund_pending.php' }, - 'emails/status_waitlist': { title: 'Status Waitlist', ciViewPath: 'emails/status_waitlist.php' }, - 'emails/status_withdraw_review': { title: 'Status Withdraw Review', ciViewPath: 'emails/status_withdraw_review.php' }, - 'emails/status_withdrawn': { title: 'Status Withdrawn', ciViewPath: 'emails/status_withdrawn.php' }, - 'emails/student_removed': { title: 'Student Removed', ciViewPath: 'emails/student_removed.php' }, - 'emails/support_new_account': { title: 'Support New Account', ciViewPath: 'emails/support_new_account.php' }, - 'emails/welcome_parent': { title: 'Welcome Parent', ciViewPath: 'emails/welcome_parent.php' }, - 'emails/welcome_staff': { title: 'Welcome Staff', ciViewPath: 'emails/welcome_staff.php' }, - 'emails/welcome_user': { title: 'Welcome User', ciViewPath: 'emails/welcome_user.php' }, - 'emails/whatsapp_group_invitation': { title: 'Whatsapp Group Invitation', ciViewPath: 'emails/whatsapp_group_invitation.php' }, - 'emails/whatsapp_invite': { title: 'Whatsapp Invite', ciViewPath: 'emails/whatsapp_invite.php' }, - 'enroll_withdraw/enrollment_withdrawal': { title: 'Enrollment Withdrawal', ciViewPath: 'enroll_withdraw/enrollment_withdrawal.php' }, - 'enroll_withdraw/new-students': { title: 'New-Students', ciViewPath: 'enroll_withdraw/new-students.php' }, - 'expenses/create': { title: 'Create', ciViewPath: 'expenses/create.php' }, - 'expenses/edit': { title: 'Edit', ciViewPath: 'expenses/edit.php' }, - 'expenses/index': { title: 'Index', ciViewPath: 'expenses/index.php' }, - 'facility': { title: 'Facility', ciViewPath: 'facility.php' }, - 'family/card': { title: 'Card', ciViewPath: 'family/card.php' }, - 'family/compose_email': { title: 'Compose Email', ciViewPath: 'family/compose_email.php' }, - 'family/index': { title: 'Index', ciViewPath: 'family/index.php' }, - 'flags/flags_management': { title: 'Flags Management', ciViewPath: 'flags/flags_management.php' }, - 'flags/incident_analysis': { title: 'Incident Analysis', ciViewPath: 'flags/incident_analysis.php' }, - 'flags/processed_flags': { title: 'Processed Flags', ciViewPath: 'flags/processed_flags.php' }, - 'footer': { title: 'Footer', ciViewPath: 'footer.php' }, - 'grading/below_sixty': { title: 'Below Sixty', ciViewPath: 'grading/below_sixty.php' }, - 'grading/below_sixty_email_editor': { title: 'Below Sixty Email Editor', ciViewPath: 'grading/below_sixty_email_editor.php' }, - 'grading/comments': { title: 'Comments', ciViewPath: 'grading/comments.php' }, - 'grading/final': { title: 'Final', ciViewPath: 'grading/final.php' }, - 'grading/grading_main': { title: 'Grading Main', ciViewPath: 'grading/grading_main.php' }, - 'grading/homework': { title: 'Homework', ciViewPath: 'grading/homework.php' }, - 'grading/homework_tracking': { title: 'Homework Tracking', ciViewPath: 'grading/homework_tracking.php' }, - 'grading/midterm': { title: 'Midterm', ciViewPath: 'grading/midterm.php' }, - 'grading/participation': { title: 'Participation', ciViewPath: 'grading/participation.php' }, - 'grading/placement': { title: 'Placement', ciViewPath: 'grading/placement.php' }, - 'grading/placement_batch': { title: 'Placement Batch', ciViewPath: 'grading/placement_batch.php' }, - 'grading/placement_index': { title: 'Placement Index', ciViewPath: 'grading/placement_index.php' }, - 'grading/project': { title: 'Project', ciViewPath: 'grading/project.php' }, - 'grading/quiz': { title: 'Quiz', ciViewPath: 'grading/quiz.php' }, - 'grading/schedule_meeting': { title: 'Schedule Meeting', ciViewPath: 'grading/schedule_meeting.php' }, - 'grading/test': { title: 'Test', ciViewPath: 'grading/test.php' }, - 'header': { title: 'Header', ciViewPath: 'header.php' }, - 'home': { title: 'Home', ciViewPath: 'home.php' }, - 'index': { title: 'Index', ciViewPath: 'index.php' }, - 'inventory/adjust_form': { title: 'Adjust Form', ciViewPath: 'inventory/adjust_form.php' }, - 'inventory/book/form': { title: 'Form', ciViewPath: 'inventory/book/form.php' }, - 'inventory/book/index': { title: 'Index', ciViewPath: 'inventory/book/index.php' }, - 'inventory/classroom/audit_form': { title: 'Audit Form', ciViewPath: 'inventory/classroom/audit_form.php' }, - 'inventory/classroom/form': { title: 'Form', ciViewPath: 'inventory/classroom/form.php' }, - 'inventory/classroom/index': { title: 'Index', ciViewPath: 'inventory/classroom/index.php' }, - 'inventory/kitchen/form': { title: 'Form', ciViewPath: 'inventory/kitchen/form.php' }, - 'inventory/kitchen/index': { title: 'Index', ciViewPath: 'inventory/kitchen/index.php' }, - 'inventory/movements/edit': { title: 'Edit', ciViewPath: 'inventory/movements/edit.php' }, - 'inventory/movements/form': { title: 'Form', ciViewPath: 'inventory/movements/form.php' }, - 'inventory/movements/index': { title: 'Index', ciViewPath: 'inventory/movements/index.php' }, - 'inventory/office/form': { title: 'Form', ciViewPath: 'inventory/office/form.php' }, - 'inventory/office/index': { title: 'Index', ciViewPath: 'inventory/office/index.php' }, - 'inventory/summary': { title: 'Summary', ciViewPath: 'inventory/summary.php' }, - 'inventory/teacher_distribute': { title: 'Teacher Distribute', ciViewPath: 'inventory/teacher_distribute.php' }, - 'invoice_payment/invoice_management': { title: 'Invoice Management', ciViewPath: 'invoice_payment/invoice_management.php' }, - 'invoice_payment/pdf_template': { title: 'Pdf Template', ciViewPath: 'invoice_payment/pdf_template.php' }, - 'landing_page/admin_dashboard': { title: 'Admin Dashboard', ciViewPath: 'landing_page/admin_dashboard.php' }, - 'landing_page/guest_dashboard': { title: 'Guest Dashboard', ciViewPath: 'landing_page/guest_dashboard.php' }, - 'landing_page/parent_dashboard': { title: 'Parent Dashboard', ciViewPath: 'landing_page/parent_dashboard.php' }, - 'landing_page/student_dashboard': { title: 'Student Dashboard', ciViewPath: 'landing_page/student_dashboard.php' }, - 'landing_page/teacher_dashboard': { title: 'Teacher Dashboard', ciViewPath: 'landing_page/teacher_dashboard.php' }, - 'nav_builder/edit': { title: 'Edit', ciViewPath: 'nav_builder/edit.php' }, - 'nav_builder/index': { title: 'Index', ciViewPath: 'nav_builder/index.php' }, - 'navbar': { title: 'Navbar', ciViewPath: 'navbar.php' }, - 'notifications/list_active': { title: 'List Active', ciViewPath: 'notifications/list_active.php' }, - 'notifications/list_deleted': { title: 'List Deleted', ciViewPath: 'notifications/list_deleted.php' }, - 'parent/add_second_parent': { title: 'Add Second Parent', ciViewPath: 'parent/add_second_parent.php' }, - 'parent/assignments': { title: 'Assignments', ciViewPath: 'parent/assignments.php' }, - 'parent/attendance': { title: 'Attendance', ciViewPath: 'parent/attendance.php' }, - 'parent/calendar': { title: 'Calendar', ciViewPath: 'parent/calendar.php' }, - 'parent/class_progress_list': { title: 'Class Progress List', ciViewPath: 'parent/class_progress_list.php' }, - 'parent/class_progress_view': { title: 'Class Progress View', ciViewPath: 'parent/class_progress_view.php' }, - 'parent/classes': { title: 'Classes', ciViewPath: 'parent/classes.php' }, - 'parent/contact': { title: 'Contact', ciViewPath: 'parent/contact.php' }, - 'parent/edit_emergency_contact': { title: 'Edit Emergency Contact', ciViewPath: 'parent/edit_emergency_contact.php' }, - 'parent/edit_student_modal': { title: 'Edit Student Modal', ciViewPath: 'parent/edit_student_modal.php' }, - 'parent/enroll_classes': { title: 'Enroll Classes', ciViewPath: 'parent/enroll_classes.php' }, - 'parent/enroll_failure': { title: 'Enroll Failure', ciViewPath: 'parent/enroll_failure.php' }, - 'parent/enroll_success': { title: 'Enroll Success', ciViewPath: 'parent/enroll_success.php' }, - 'parent/event_participation': { title: 'Event Participation', ciViewPath: 'parent/event_participation.php' }, - 'parent/invoice_payment': { title: 'Invoice Payment', ciViewPath: 'parent/invoice_payment.php' }, - 'parent/no_kids_registred': { title: 'No Kids Registred', ciViewPath: 'parent/no_kids_registred.php' }, - 'parent/parent_message': { title: 'Parent Message', ciViewPath: 'parent/parent_message.php' }, - 'parent/payment_success': { title: 'Payment Success', ciViewPath: 'parent/payment_success.php' }, - 'parent/payment_view': { title: 'Payment View', ciViewPath: 'parent/payment_view.php' }, - 'parent/register_student': { title: 'Register Student', ciViewPath: 'parent/register_student.php' }, - 'parent/report_attendance': { title: 'Report Attendance', ciViewPath: 'parent/report_attendance.php' }, - 'parent/report_cards': { title: 'Report Cards', ciViewPath: 'parent/report_cards.php' }, - 'parent/scores': { title: 'Scores', ciViewPath: 'parent/scores.php' }, - 'parent/success_message': { title: 'Success Message', ciViewPath: 'parent/success_message.php' }, - 'parent/withdraw_success': { title: 'Withdraw Success', ciViewPath: 'parent/withdraw_success.php' }, - 'payment/_list_modal': { title: ' List Modal', ciViewPath: 'payment/_list_modal.php' }, - 'payment/discount': { title: 'Discount', ciViewPath: 'payment/discount.php' }, - 'payment/extra_charges': { title: 'Extra Charges', ciViewPath: 'payment/extra_charges.php' }, - 'payment/financial_report': { title: 'Financial Report', ciViewPath: 'payment/financial_report.php' }, - 'payment/financial_report_summary': { title: 'Financial Report Summary', ciViewPath: 'payment/financial_report_summary.php' }, - 'payment/manual_pay': { title: 'Manual Pay', ciViewPath: 'payment/manual_pay.php' }, - 'payment/manual_payment': { title: 'Manual Payment', ciViewPath: 'payment/manual_payment.php' }, - 'payment/notification_management': { title: 'Notification Management', ciViewPath: 'payment/notification_management.php' }, - 'payment/payment_redirect': { title: 'Payment Redirect', ciViewPath: 'payment/payment_redirect.php' }, - 'payment/unpaid_parents': { title: 'Unpaid Parents', ciViewPath: 'payment/unpaid_parents.php' }, - 'payment_list': { title: 'Payment List', ciViewPath: 'payment_list.php' }, - 'policy/picture_policy': { title: 'Picture Policy', ciViewPath: 'policy/picture_policy.php' }, - 'policy/picture_policy_partial': { title: 'Picture Policy Partial', ciViewPath: 'policy/picture_policy_partial.php' }, - 'policy/school_policy': { title: 'School Policy', ciViewPath: 'policy/school_policy.php' }, - 'policy/school_policy_partial': { title: 'School Policy Partial', ciViewPath: 'policy/school_policy_partial.php' }, - 'preferences': { title: 'Preferences', ciViewPath: 'preferences.php' }, - 'print_requests/admin_index': { title: 'Admin Index', ciViewPath: 'print_requests/admin_index.php' }, - 'print_requests/teacher_index': { title: 'Teacher Index', ciViewPath: 'print_requests/teacher_index.php' }, - 'printables_reports/badge_form': { title: 'Badge Form', ciViewPath: 'printables_reports/badge_form.php' }, - 'printables_reports/report_card': { title: 'Report Card', ciViewPath: 'printables_reports/report_card.php' }, - 'printables_reports/sticker_form': { title: 'Sticker Form', ciViewPath: 'printables_reports/sticker_form.php' }, - 'profile': { title: 'Profile', ciViewPath: 'profile.php' }, - 'refunds/list': { title: 'List', ciViewPath: 'refunds/list.php' }, - 'reimbursements/create': { title: 'Create', ciViewPath: 'reimbursements/create.php' }, - 'reimbursements/edit': { title: 'Edit', ciViewPath: 'reimbursements/edit.php' }, - 'reimbursements/index': { title: 'Index', ciViewPath: 'reimbursements/index.php' }, - 'reimbursements/under_processing': { title: 'Under Processing', ciViewPath: 'reimbursements/under_processing.php' }, - 'rfid/rfid_coming_soon': { title: 'Rfid Coming Soon', ciViewPath: 'rfid/rfid_coming_soon.php' }, - 'rfid/rfid_log_view': { title: 'Rfid Log View', ciViewPath: 'rfid/rfid_log_view.php' }, - 'rolepermission/add_permission': { title: 'Add Permission', ciViewPath: 'rolepermission/add_permission.php' }, - 'rolepermission/add_role': { title: 'Add Role', ciViewPath: 'rolepermission/add_role.php' }, - 'rolepermission/assign_role': { title: 'Assign Role', ciViewPath: 'rolepermission/assign_role.php' }, - 'rolepermission/edit_permission': { title: 'Edit Permission', ciViewPath: 'rolepermission/edit_permission.php' }, - 'rolepermission/edit_role': { title: 'Edit Role', ciViewPath: 'rolepermission/edit_role.php' }, - 'rolepermission/edit_role_permissions': { title: 'Edit Role Permissions', ciViewPath: 'rolepermission/edit_role_permissions.php' }, - 'rolepermission/list_roles': { title: 'List Roles', ciViewPath: 'rolepermission/list_roles.php' }, - 'rolepermission/permissionList': { title: 'PermissionList', ciViewPath: 'rolepermission/permissionList.php' }, - 'score_analysis/score_prediction': { title: 'Score Prediction', ciViewPath: 'score_analysis/score_prediction.php' }, - 'slips/preview_list': { title: 'Preview List', ciViewPath: 'slips/preview_list.php' }, - 'slips/slip_pdf': { title: 'Slip Pdf', ciViewPath: 'slips/slip_pdf.php' }, - 'spinner': { title: 'Spinner', ciViewPath: 'spinner.php' }, - 'staff/create': { title: 'Create', ciViewPath: 'staff/create.php' }, - 'staff/edit': { title: 'Edit', ciViewPath: 'staff/edit.php' }, - 'staff/index': { title: 'Index', ciViewPath: 'staff/index.php' }, - 'student/score_card': { title: 'Score Card', ciViewPath: 'student/score_card.php' }, - 'student/score_card_list': { title: 'Score Card List', ciViewPath: 'student/score_card_list.php' }, - 'success': { title: 'Success', ciViewPath: 'success.php' }, - 'support': { title: 'Support', ciViewPath: 'support.php' }, - 'support_requests': { title: 'Support Requests', ciViewPath: 'support_requests.php' }, - 'swagger_ui': { title: 'Swagger Ui', ciViewPath: 'swagger_ui.php' }, - 'teacher/absence_vacation': { title: 'Absence Vacation', ciViewPath: 'teacher/absence_vacation.php' }, - 'teacher/add_final_exam': { title: 'Add Final Exam', ciViewPath: 'teacher/add_final_exam.php' }, - 'teacher/add_homework': { title: 'Add Homework', ciViewPath: 'teacher/add_homework.php' }, - 'teacher/add_midterm_exam': { title: 'Add Midterm Exam', ciViewPath: 'teacher/add_midterm_exam.php' }, - 'teacher/add_participation': { title: 'Add Participation', ciViewPath: 'teacher/add_participation.php' }, - 'teacher/add_project': { title: 'Add Project', ciViewPath: 'teacher/add_project.php' }, - 'teacher/add_quiz': { title: 'Add Quiz', ciViewPath: 'teacher/add_quiz.php' }, - 'teacher/add_quiz_column_form': { title: 'Add Quiz Column Form', ciViewPath: 'teacher/add_quiz_column_form.php' }, - 'teacher/calendar': { title: 'Calendar', ciViewPath: 'teacher/calendar.php' }, - 'teacher/class_progress_history': { title: 'Class Progress History', ciViewPath: 'teacher/class_progress_history.php' }, - 'teacher/class_progress_submit': { title: 'Class Progress Submit', ciViewPath: 'teacher/class_progress_submit.php' }, - 'teacher/class_progress_view': { title: 'Class Progress View', ciViewPath: 'teacher/class_progress_view.php' }, - 'teacher/class_view': { title: 'Class View', ciViewPath: 'teacher/class_view.php' }, - 'teacher/competition_scores/index': { title: 'Index', ciViewPath: 'teacher/competition_scores/index.php' }, - 'teacher/competition_scores/scores': { title: 'Scores', ciViewPath: 'teacher/competition_scores/scores.php' }, - 'teacher/drafts': { title: 'Drafts', ciViewPath: 'teacher/drafts.php' }, - 'teacher/exam_drafts': { title: 'Exam Drafts', ciViewPath: 'teacher/exam_drafts.php' }, - 'teacher/homework_list': { title: 'Homework List', ciViewPath: 'teacher/homework_list.php' }, - 'teacher/inbox': { title: 'Inbox', ciViewPath: 'teacher/inbox.php' }, - 'teacher/no_classes': { title: 'No Classes', ciViewPath: 'teacher/no_classes.php' }, - 'teacher/scores': { title: 'Scores', ciViewPath: 'teacher/scores.php' }, - 'teacher/select_semester': { title: 'Select Semester', ciViewPath: 'teacher/select_semester.php' }, - 'teacher/sent': { title: 'Sent', ciViewPath: 'teacher/sent.php' }, - 'teacher/showupdate_attendance': { title: 'Showupdate Attendance', ciViewPath: 'teacher/showupdate_attendance.php' }, - 'teacher/teacher_assignment': { title: 'Teacher Assignment', ciViewPath: 'teacher/teacher_assignment.php' }, - 'teacher/teacher_contactus': { title: 'Teacher Contactus', ciViewPath: 'teacher/teacher_contactus.php' }, - 'teacher/teacher_message': { title: 'Teacher Message', ciViewPath: 'teacher/teacher_message.php' }, - 'teacher/teacher_navbar': { title: 'Teacher Navbar', ciViewPath: 'teacher/teacher_navbar.php' }, - 'teacher/teacher_support': { title: 'Teacher Support', ciViewPath: 'teacher/teacher_support.php' }, - 'teacher/trash': { title: 'Trash', ciViewPath: 'teacher/trash.php' }, - 'team': { title: 'Team', ciViewPath: 'team.php' }, - 'testimonial': { title: 'Testimonial', ciViewPath: 'testimonial.php' }, - 'user/create': { title: 'Create', ciViewPath: 'user/create.php' }, - 'user/edit': { title: 'Edit', ciViewPath: 'user/edit.php' }, - 'user/forgot_password': { title: 'Forgot Password', ciViewPath: 'user/forgot_password.php' }, - 'user/login': { title: 'Login', ciViewPath: 'user/login.php' }, - 'user/login_activity': { title: 'Login Activity', ciViewPath: 'user/login_activity.php' }, - 'user/password_reset_confirmation': { title: 'Password Reset Confirmation', ciViewPath: 'user/password_reset_confirmation.php' }, - 'user/password_set_success': { title: 'Password Set Success', ciViewPath: 'user/password_set_success.php' }, - 'user/register': { title: 'Register', ciViewPath: 'user/register.php' }, - 'user/reset_password': { title: 'Reset Password', ciViewPath: 'user/reset_password.php' }, - 'user/set_authorized_user_password': { title: 'Set Authorized User Password', ciViewPath: 'user/set_authorized_user_password.php' }, - 'user/set_password': { title: 'Set Password', ciViewPath: 'user/set_password.php' }, - 'user/user_list': { title: 'User List', ciViewPath: 'user/user_list.php' }, - 'user/welcome_back': { title: 'Welcome Back', ciViewPath: 'user/welcome_back.php' }, - 'welcome_message': { title: 'Welcome Message', ciViewPath: 'welcome_message.php' }, - 'whatsapp/manage_links': { title: 'Manage Links', ciViewPath: 'whatsapp/manage_links.php' }, - 'whatsapp/parent_contacts': { title: 'Parent Contacts', ciViewPath: 'whatsapp/parent_contacts.php' }, - 'whatsapp/parent_contacts_by_class': { title: 'Parent Contacts By Class', ciViewPath: 'whatsapp/parent_contacts_by_class.php' }, - 'winners/competitions/index': { title: 'Index', ciViewPath: 'winners/competitions/index.php' }, - 'winners/competitions/show': { title: 'Show', ciViewPath: 'winners/competitions/show.php' }, -} diff --git a/src/lib/ciSpaPaths.ts b/src/lib/ciSpaPaths.ts index 389a823..1b6e78d 100644 --- a/src/lib/ciSpaPaths.ts +++ b/src/lib/ciSpaPaths.ts @@ -1,4 +1,3 @@ -/** Map legacy CodeIgniter-style paths (as stored on roles / nav items) to this SPA. */ export function spaPathFromCiUrl(url: string | null | undefined): string | null { if (url == null) return null diff --git a/src/lib/ciRouteLookup.ts b/src/lib/viewRouteLookup.ts similarity index 85% rename from src/lib/ciRouteLookup.ts rename to src/lib/viewRouteLookup.ts index e73a8c8..3ff7490 100644 --- a/src/lib/ciRouteLookup.ts +++ b/src/lib/viewRouteLookup.ts @@ -1,132 +1,132 @@ -import { type CiRouteMetaEntry, ciRouteMeta } from './ciRouteMeta.generated' -import { ciRouteManual } from './ciRouteManual' - -/** CI registry keys whose folder layout does not match the SPA route (see `App.tsx`). */ -const CI_REGISTRY_APP_PATH_OVERRIDES: Record = { +import { type ViewRouteMetaEntry, viewRouteMeta } from './viewRouteMeta.generated' +import { viewRouteManual } from './viewRouteManual' + +/** view registry keys whose folder layout does not match the SPA route (see `App.tsx`). */ +const VIEW_REGISTRY_APP_PATH_OVERRIDES: Record = { // Nested views map to flat `/app/teacher/competition-scores` (+ dynamic detail route). 'teacher/competition_scores/index': '/app/teacher/competition-scores', 'teacher/competition_scores/scores': '/app/teacher/competition-scores', 'landing_page/admin_dashboard': '/app/landing-page/admin-dashboard', - /** CI `landing_page/teacher_dashboard.php` → SPA (underscore segment per legacy URL). */ + /** view `landing_page/teacher_dashboard.php` → SPA (underscore segment per legacy URL). */ 'landing_page/teacher_dashboard': '/app/teacher_dashboard', - 'flags/flags_management': '/app/administrator/flags/management', - 'flags/processed_flags': '/app/administrator/flags/processed', - 'flags/incident_analysis': '/app/administrator/flags/incident-analysis', - 'grading/grading_main': '/app/grading', - 'grading/below_sixty': '/app/grading/below-60', - 'grading/below_sixty_email_editor': '/app/grading/below-60/email-editor', - 'grading/comments': '/app/grading/scores/comments', - 'grading/final': '/app/grading/scores/final', - 'grading/homework': '/app/grading/scores/homework', - 'grading/homework_tracking': '/app/grading/homework-tracking', - 'grading/midterm': '/app/grading/scores/midterm', - 'grading/participation': '/app/grading/participation', - 'grading/placement': '/app/grading/placement', - /** Batch id is in the URL segment in CI; dynamic route uses `spaPathFromCiUrl` / placement-index when no id. */ - 'grading/placement_batch': '/app/grading/placement-index', - 'grading/placement_index': '/app/grading/placement-index', - 'grading/project': '/app/grading/scores/project', - 'grading/quiz': '/app/grading/scores/quiz', - 'grading/schedule_meeting': '/app/grading/schedule-meeting', - 'grading/test': '/app/grading/scores/test', - 'inventory/book/index': '/app/inventory/book', - 'inventory/book/form': '/app/inventory/book/create', - 'inventory/classroom/index': '/app/administrator/inventory/classroom', - 'inventory/classroom/form': '/app/administrator/inventory/classroom/create', - 'inventory/classroom/audit_form': '/app/administrator/inventory/classroom', - 'inventory/kitchen/index': '/app/administrator/inventory/kitchen', - 'inventory/kitchen/form': '/app/administrator/inventory/kitchen/create', - 'inventory/office/index': '/app/administrator/inventory/office', - 'inventory/office/form': '/app/administrator/inventory/office/create', - 'inventory/movements/index': '/app/administrator/inventory/movements', - 'inventory/movements/form': '/app/administrator/inventory/movements/create', - 'inventory/movements/edit': '/app/administrator/inventory/movements', - 'inventory/summary': '/app/administrator/inventory/summary', - 'inventory/adjust_form': '/app/administrator/inventory/summary', - 'inventory/teacher_distribute': '/app/teacher/inventory/book-distribute', - 'attendance/teacher_attendance_month': '/app/admin/teacher-attendance/month', - 'attendance/violations_pending': '/app/attendance/violations/pending', - 'attendance/violations_notified': '/app/attendance/violations/notified', - 'attendance/early_dismissals': '/app/attendance/early-dismissals', - 'attendance/early_dismissals_add': '/app/attendance/early-dismissals/new', - /** CI `enroll_withdraw/new-students.php` — registered students list (JWT `registered-new-students`). */ - 'enroll_withdraw/new-students': '/app/admin/enrollment/new-students', - 'enroll_withdraw/new_students': '/app/admin/enrollment/new-students', - 'administrator/sections_auto_distribute': '/app/administrator/sections/auto-distribute', - 'administrator/sections_promotion_totals': '/app/administrator/sections/promotion-totals', - /** CI `administrator/events/event_list.php` — school calendar list (`GET .../school-calendar/events`). */ - 'administrator/events/event_list': '/app/administrator/events', - 'administrator/events': '/app/administrator/events', - 'invoice_payment/invoice_management': '/app/administrator/invoice-payment', - /** PDF is generated server-side; SPA preview lives under invoice-payment/pdf/:id */ - 'invoice_payment/pdf_template': '/app/administrator/invoice-payment', - 'notifications/list_active': '/app/notifications/active', - 'notifications/list_deleted': '/app/notifications/deleted', - 'payment/manual_pay': '/app/administrator/payment/manual-pay', - 'payment/manual_payment': '/app/administrator/payment/manual-payment', - 'payment/notification_management': '/app/administrator/payment/notification-management', - 'payment/unpaid_parents': '/app/payment/unpaid-parents', - 'payment/discount': '/app/administrator/payment/discount-apply-student', - 'payment/extra_charges': '/app/admin/charges', - 'payment/financial_report': '/app/administrator/payment/financial-report', - 'payment/financial_report_summary': '/app/administrator/payment/financial-report-summary', - 'payment/payment_redirect': '/app/parent/payment-redirect', - 'policy/school_policy': '/school-policy', - 'policy/picture_policy': '/picture-policy', - 'print_requests/admin_index': '/app/admin/print-requests', - 'print_requests/teacher_index': '/app/teacher/print-requests', - 'printables_reports/sticker_form': '/app/printables_reports/stickers', - 'printables_reports/stickers': '/app/printables_reports/stickers', - 'printables_reports/badge_form': '/app/administrator/printables/badges', - 'printables_reports/report_card': '/app/administrator/printables/report-cards', - 'reimbursements/index': '/app/administrator/reimbursements', - 'reimbursements/create': '/app/administrator/reimbursements/create', - 'reimbursements/edit': '/app/administrator/reimbursements', - 'reimbursements/under_processing': '/app/administrator/reimbursements/under-processing', - 'report/combined': '/app/report/combined', - 'rfid/rfid_coming_soon': '/app/rfid_coming_soon', - 'rolepermission/list_roles': '/app/rolepermission/roles', - 'rolepermission/permissionList': '/app/rolepermission/list_permissions', - 'rolepermission/list_permissions': '/app/rolepermission/list_permissions', - 'rolepermission/add_permission': '/app/rolepermission/permissions/create', - 'rolepermission/add_role': '/app/rolepermission/roles/create', - 'rolepermission/assign_role': '/app/rolepermission/assign', - 'rolepermission/edit_permission': '/app/rolepermission/list_permissions', - 'rolepermission/edit_role': '/app/rolepermission/roles', - 'rolepermission/edit_role_permissions': '/app/rolepermission/roles', - 'score_analysis/score_prediction': '/app/administrator/score-analysis/score-prediction', - 'slips/preview_list': '/app/slips/preview', - 'slips/slip_pdf': '/app/slips/print', - 'staff/index': '/app/staff', - 'staff/create': '/app/staff/create', - 'student/score_card_list': '/app/student/score-card/list', - /** Detail view is reached with an id segment in the URL; map the view key to the list entry route. */ - 'student/score_card': '/app/student/score-card/list', - 'whatsapp/manage_links': '/app/whatsapp/manage-links', - 'whatsapp/parent_contacts': '/app/whatsapp/parent-contacts', - 'whatsapp/parent_contacts_by_class': '/app/whatsapp/parent-contacts-by-class', - 'winners/competitions/index': '/app/winners/competitions', -} - -/** Match CI `app/Views/...` keys: lowercase, hyphens in URL map to underscores. */ -export function getCiMeta(splat: string): CiRouteMetaEntry | null { - const raw = splat - .trim() - .replace(/^\/+|\/+$/g, '') - .toLowerCase() - if (!raw) return null - const withUnderscores = raw.replace(/-/g, '_') - return ( - ciRouteManual[withUnderscores] ?? ciRouteMeta[withUnderscores] ?? null - ) -} - -/** Build canonical SPA path from a registry key (snake segments) using kebab-case segments. */ -export function ciRegistryKeyToAppPath(routeKey: string): string { - const normalized = routeKey.trim().toLowerCase() - const override = CI_REGISTRY_APP_PATH_OVERRIDES[normalized] - if (override) return override - - const parts = routeKey.split('/').map((seg) => seg.replace(/_/g, '-')) - return `/app/${parts.join('/')}` -} + 'flags/flags_management': '/app/administrator/flags/management', + 'flags/processed_flags': '/app/administrator/flags/processed', + 'flags/incident_analysis': '/app/administrator/flags/incident-analysis', + 'grading/grading_main': '/app/grading', + 'grading/below_sixty': '/app/grading/below-60', + 'grading/below_sixty_email_editor': '/app/grading/below-60/email-editor', + 'grading/comments': '/app/grading/scores/comments', + 'grading/final': '/app/grading/scores/final', + 'grading/homework': '/app/grading/scores/homework', + 'grading/homework_tracking': '/app/grading/homework-tracking', + 'grading/midterm': '/app/grading/scores/midterm', + 'grading/participation': '/app/grading/participation', + 'grading/placement': '/app/grading/placement', + /** Batch id is in the URL segment in view; dynamic route uses `spaPathFromCiUrl` / placement-index when no id. */ + 'grading/placement_batch': '/app/grading/placement-index', + 'grading/placement_index': '/app/grading/placement-index', + 'grading/project': '/app/grading/scores/project', + 'grading/quiz': '/app/grading/scores/quiz', + 'grading/schedule_meeting': '/app/grading/schedule-meeting', + 'grading/test': '/app/grading/scores/test', + 'inventory/book/index': '/app/inventory/book', + 'inventory/book/form': '/app/inventory/book/create', + 'inventory/classroom/index': '/app/administrator/inventory/classroom', + 'inventory/classroom/form': '/app/administrator/inventory/classroom/create', + 'inventory/classroom/audit_form': '/app/administrator/inventory/classroom', + 'inventory/kitchen/index': '/app/administrator/inventory/kitchen', + 'inventory/kitchen/form': '/app/administrator/inventory/kitchen/create', + 'inventory/office/index': '/app/administrator/inventory/office', + 'inventory/office/form': '/app/administrator/inventory/office/create', + 'inventory/movements/index': '/app/administrator/inventory/movements', + 'inventory/movements/form': '/app/administrator/inventory/movements/create', + 'inventory/movements/edit': '/app/administrator/inventory/movements', + 'inventory/summary': '/app/administrator/inventory/summary', + 'inventory/adjust_form': '/app/administrator/inventory/summary', + 'inventory/teacher_distribute': '/app/teacher/inventory/book-distribute', + 'attendance/teacher_attendance_month': '/app/admin/teacher-attendance/month', + 'attendance/violations_pending': '/app/attendance/violations/pending', + 'attendance/violations_notified': '/app/attendance/violations/notified', + 'attendance/early_dismissals': '/app/attendance/early-dismissals', + 'attendance/early_dismissals_add': '/app/attendance/early-dismissals/new', + /** view `enroll_withdraw/new-students.php` — registered students list (JWT `registered-new-students`). */ + 'enroll_withdraw/new-students': '/app/admin/enrollment/new-students', + 'enroll_withdraw/new_students': '/app/admin/enrollment/new-students', + 'administrator/sections_auto_distribute': '/app/administrator/sections/auto-distribute', + 'administrator/sections_promotion_totals': '/app/administrator/sections/promotion-totals', + /** view `administrator/events/event_list.php` — school calendar list (`GET .../school-calendar/events`). */ + 'administrator/events/event_list': '/app/administrator/events', + 'administrator/events': '/app/administrator/events', + 'invoice_payment/invoice_management': '/app/administrator/invoice-payment', + /** PDF is generated server-side; SPA preview lives under invoice-payment/pdf/:id */ + 'invoice_payment/pdf_template': '/app/administrator/invoice-payment', + 'notifications/list_active': '/app/notifications/active', + 'notifications/list_deleted': '/app/notifications/deleted', + 'payment/manual_pay': '/app/administrator/payment/manual-pay', + 'payment/manual_payment': '/app/administrator/payment/manual-payment', + 'payment/notification_management': '/app/administrator/payment/notification-management', + 'payment/unpaid_parents': '/app/payment/unpaid-parents', + 'payment/discount': '/app/administrator/payment/discount-apply-student', + 'payment/extra_charges': '/app/admin/charges', + 'payment/financial_report': '/app/administrator/payment/financial-report', + 'payment/financial_report_summary': '/app/administrator/payment/financial-report-summary', + 'payment/payment_redirect': '/app/parent/payment-redirect', + 'policy/school_policy': '/school-policy', + 'policy/picture_policy': '/picture-policy', + 'print_requests/admin_index': '/app/admin/print-requests', + 'print_requests/teacher_index': '/app/teacher/print-requests', + 'printables_reports/sticker_form': '/app/printables_reports/stickers', + 'printables_reports/stickers': '/app/printables_reports/stickers', + 'printables_reports/badge_form': '/app/administrator/printables/badges', + 'printables_reports/report_card': '/app/administrator/printables/report-cards', + 'reimbursements/index': '/app/administrator/reimbursements', + 'reimbursements/create': '/app/administrator/reimbursements/create', + 'reimbursements/edit': '/app/administrator/reimbursements', + 'reimbursements/under_processing': '/app/administrator/reimbursements/under-processing', + 'report/combined': '/app/report/combined', + 'rfid/rfid_coming_soon': '/app/rfid_coming_soon', + 'rolepermission/list_roles': '/app/rolepermission/roles', + 'rolepermission/permissionList': '/app/rolepermission/list_permissions', + 'rolepermission/list_permissions': '/app/rolepermission/list_permissions', + 'rolepermission/add_permission': '/app/rolepermission/permissions/create', + 'rolepermission/add_role': '/app/rolepermission/roles/create', + 'rolepermission/assign_role': '/app/rolepermission/assign', + 'rolepermission/edit_permission': '/app/rolepermission/list_permissions', + 'rolepermission/edit_role': '/app/rolepermission/roles', + 'rolepermission/edit_role_permissions': '/app/rolepermission/roles', + 'score_analysis/score_prediction': '/app/administrator/score-analysis/score-prediction', + 'slips/preview_list': '/app/slips/preview', + 'slips/slip_pdf': '/app/slips/print', + 'staff/index': '/app/staff', + 'staff/create': '/app/staff/create', + 'student/score_card_list': '/app/student/score-card/list', + /** Detail view is reached with an id segment in the URL; map the view key to the list entry route. */ + 'student/score_card': '/app/student/score-card/list', + 'whatsapp/manage_links': '/app/whatsapp/manage-links', + 'whatsapp/parent_contacts': '/app/whatsapp/parent-contacts', + 'whatsapp/parent_contacts_by_class': '/app/whatsapp/parent-contacts-by-class', + 'winners/competitions/index': '/app/winners/competitions', +} + +/** Match view `app/Views/...` keys: lowercase, hyphens in URL map to underscores. */ +export function getViewRouteMeta(splat: string): ViewRouteMetaEntry | null { + const raw = splat + .trim() + .replace(/^\/+|\/+$/g, '') + .toLowerCase() + if (!raw) return null + const withUnderscores = raw.replace(/-/g, '_') + return ( + viewRouteManual[withUnderscores] ?? viewRouteMeta[withUnderscores] ?? null + ) +} + +/** Build canonical SPA path from a registry key (snake segments) using kebab-case segments. */ +export function registryKeyToAppPath(routeKey: string): string { + const normalized = routeKey.trim().toLowerCase() + const override = VIEW_REGISTRY_APP_PATH_OVERRIDES[normalized] + if (override) return override + + const parts = routeKey.split('/').map((seg) => seg.replace(/_/g, '-')) + return `/app/${parts.join('/')}` +} diff --git a/src/lib/viewRouteManual.ts b/src/lib/viewRouteManual.ts new file mode 100644 index 0000000..b2c632b --- /dev/null +++ b/src/lib/viewRouteManual.ts @@ -0,0 +1,24 @@ +import type { ViewRouteMetaEntry } from './viewRouteMeta.generated' + +/** + * Routes that do not map 1:1 to a single source view file (composed dashboards, aliases). + * Keys use snake_case segments like the generated registry. + */ +export const viewRouteManual: Record = { + 'teacher/dashboard': { + title: 'Teacher dashboard', + sourceViewPath: '(TeacherController::dashboard — see Views/teacher/*.php)', + }, + 'administrator/dashboard': { + title: 'Administrator dashboard', + sourceViewPath: '(Support/administrator dashboards — see Views/administrator/*.php)', + }, + 'administrator/administratordashboard': { + title: 'Administrator dashboard', + sourceViewPath: 'administrator/administratordashboard.php', + }, + 'landing_page/guest_dashboard': { + title: 'Guest dashboard', + sourceViewPath: 'landing_page/guest_dashboard.php', + }, +} diff --git a/src/lib/viewRouteMeta.generated.ts b/src/lib/viewRouteMeta.generated.ts new file mode 100644 index 0000000..11b674c --- /dev/null +++ b/src/lib/viewRouteMeta.generated.ts @@ -0,0 +1,338 @@ +/** Auto-generated by scripts/gen-view-route-meta.mjs — do not edit by hand. */ + +export type ViewRouteMetaEntry = { + title: string + sourceViewPath: string +} + +export const viewRouteMeta: Record = { + 'about': { title: 'About', sourceViewPath: 'about.php' }, + 'account/choose_account': { title: 'Choose Account', sourceViewPath: 'account/choose_account.php' }, + 'activate_account': { title: 'Activate Account', sourceViewPath: 'activate_account.php' }, + 'admin/certificates/audit_log': { title: 'Audit Log', sourceViewPath: 'admin/certificates/audit_log.php' }, + 'admin/certificates/index': { title: 'Index', sourceViewPath: 'admin/certificates/index.php' }, + 'admin/class_progress_list': { title: 'Class Progress List', sourceViewPath: 'admin/class_progress_list.php' }, + 'admin/class_progress_view': { title: 'Class Progress View', sourceViewPath: 'admin/class_progress_view.php' }, + 'admin/competition_winners/form': { title: 'Form', sourceViewPath: 'admin/competition_winners/form.php' }, + 'admin/competition_winners/index': { title: 'Index', sourceViewPath: 'admin/competition_winners/index.php' }, + 'admin/competition_winners/preview': { title: 'Preview', sourceViewPath: 'admin/competition_winners/preview.php' }, + 'admin/competition_winners/scores': { title: 'Scores', sourceViewPath: 'admin/competition_winners/scores.php' }, + 'admin/competition_winners/winners': { title: 'Winners', sourceViewPath: 'admin/competition_winners/winners.php' }, + 'admin/student_score_card': { title: 'Student Score Card', sourceViewPath: 'admin/student_score_card.php' }, + 'administrator/absence_vacation': { title: 'Absence Vacation', sourceViewPath: 'administrator/absence_vacation.php' }, + 'administrator/academic_performance': { title: 'Academic Performance', sourceViewPath: 'administrator/academic_performance.php' }, + 'administrator/admin_attendance_records': { title: 'Admin Attendance Records', sourceViewPath: 'administrator/admin_attendance_records.php' }, + 'administrator/admin_profiles': { title: 'Admin Profiles', sourceViewPath: 'administrator/admin_profiles.php' }, + 'administrator/administratordashboard': { title: 'Administratordashboard', sourceViewPath: 'administrator/administratordashboard.php' }, + 'administrator/attendance': { title: 'Attendance', sourceViewPath: 'administrator/attendance.php' }, + 'administrator/attendance_records': { title: 'Attendance Records', sourceViewPath: 'administrator/attendance_records.php' }, + 'administrator/behavior_reports': { title: 'Behavior Reports', sourceViewPath: 'administrator/behavior_reports.php' }, + 'administrator/broadcast_email': { title: 'Broadcast Email', sourceViewPath: 'administrator/broadcast_email.php' }, + 'administrator/budget_reports': { title: 'Budget Reports', sourceViewPath: 'administrator/budget_reports.php' }, + 'administrator/calendar': { title: 'Calendar', sourceViewPath: 'administrator/calendar.php' }, + 'administrator/calendar_add_event': { title: 'Calendar Add Event', sourceViewPath: 'administrator/calendar_add_event.php' }, + 'administrator/calendar_edit': { title: 'Calendar Edit', sourceViewPath: 'administrator/calendar_edit.php' }, + 'administrator/calendar_view': { title: 'Calendar View', sourceViewPath: 'administrator/calendar_view.php' }, + 'administrator/class_assignment': { title: 'Class Assignment', sourceViewPath: 'administrator/class_assignment.php' }, + 'administrator/class_section': { title: 'Class Section', sourceViewPath: 'administrator/class_section.php' }, + 'administrator/class_warning_modal': { title: 'Class Warning Modal', sourceViewPath: 'administrator/class_warning_modal.php' }, + 'administrator/communication_logs': { title: 'Communication Logs', sourceViewPath: 'administrator/communication_logs.php' }, + 'administrator/course_materials': { title: 'Course Materials', sourceViewPath: 'administrator/course_materials.php' }, + 'administrator/create_parent': { title: 'Create Parent', sourceViewPath: 'administrator/create_parent.php' }, + 'administrator/daily_attendance': { title: 'Daily Attendance', sourceViewPath: 'administrator/daily_attendance.php' }, + 'administrator/daily_attendance_analysis': { title: 'Daily Attendance Analysis', sourceViewPath: 'administrator/daily_attendance_analysis.php' }, + 'administrator/edit_parent': { title: 'Edit Parent', sourceViewPath: 'administrator/edit_parent.php' }, + 'administrator/edit_teacher': { title: 'Edit Teacher', sourceViewPath: 'administrator/edit_teacher.php' }, + 'administrator/emergency_contact/edit': { title: 'Edit', sourceViewPath: 'administrator/emergency_contact/edit.php' }, + 'administrator/emergency_contact/index': { title: 'Index', sourceViewPath: 'administrator/emergency_contact/index.php' }, + 'administrator/events/create_event': { title: 'Create Event', sourceViewPath: 'administrator/events/create_event.php' }, + 'administrator/events/edit_event': { title: 'Edit Event', sourceViewPath: 'administrator/events/edit_event.php' }, + 'administrator/events/event_charges': { title: 'Event Charges', sourceViewPath: 'administrator/events/event_charges.php' }, + 'administrator/events/event_charges_pdf': { title: 'Event Charges Pdf', sourceViewPath: 'administrator/events/event_charges_pdf.php' }, + 'administrator/events/event_list': { title: 'Event List', sourceViewPath: 'administrator/events/event_list.php' }, + 'administrator/exam_drafts': { title: 'Exam Drafts', sourceViewPath: 'administrator/exam_drafts.php' }, + 'administrator/exam_management': { title: 'Exam Management', sourceViewPath: 'administrator/exam_management.php' }, + 'administrator/expense_management': { title: 'Expense Management', sourceViewPath: 'administrator/expense_management.php' }, + 'administrator/fee_collection': { title: 'Fee Collection', sourceViewPath: 'administrator/fee_collection.php' }, + 'administrator/fee_payment_records': { title: 'Fee Payment Records', sourceViewPath: 'administrator/fee_payment_records.php' }, + 'administrator/feedback_complaints': { title: 'Feedback Complaints', sourceViewPath: 'administrator/feedback_complaints.php' }, + 'administrator/grades': { title: 'Grades', sourceViewPath: 'administrator/grades.php' }, + 'administrator/grading_management': { title: 'Grading Management', sourceViewPath: 'administrator/grading_management.php' }, + 'administrator/health_records': { title: 'Health Records', sourceViewPath: 'administrator/health_records.php' }, + 'administrator/index': { title: 'Index', sourceViewPath: 'administrator/index.php' }, + 'administrator/ip_bans': { title: 'Ip Bans', sourceViewPath: 'administrator/ip_bans.php' }, + 'administrator/late_slip_logs': { title: 'Late Slip Logs', sourceViewPath: 'administrator/late_slip_logs.php' }, + 'administrator/manage_users': { title: 'Manage Users', sourceViewPath: 'administrator/manage_users.php' }, + 'administrator/notifications_alerts': { title: 'Notifications Alerts', sourceViewPath: 'administrator/notifications_alerts.php' }, + 'administrator/parent': { title: 'Parent', sourceViewPath: 'administrator/parent.php' }, + 'administrator/parent_profile': { title: 'Parent Profile', sourceViewPath: 'administrator/parent_profile.php' }, + 'administrator/payroll_management': { title: 'Payroll Management', sourceViewPath: 'administrator/payroll_management.php' }, + 'administrator/performance_reviews': { title: 'Performance Reviews', sourceViewPath: 'administrator/performance_reviews.php' }, + 'administrator/print_notification_admins': { title: 'Print Notification Admins', sourceViewPath: 'administrator/print_notification_admins.php' }, + 'administrator/removed_students': { title: 'Removed Students', sourceViewPath: 'administrator/removed_students.php' }, + 'administrator/scholarship_information': { title: 'Scholarship Information', sourceViewPath: 'administrator/scholarship_information.php' }, + 'administrator/search_results': { title: 'Search Results', sourceViewPath: 'administrator/search_results.php' }, + 'administrator/sections_auto_distribute': { title: 'Sections Auto Distribute', sourceViewPath: 'administrator/sections_auto_distribute.php' }, + 'administrator/settings': { title: 'Settings', sourceViewPath: 'administrator/settings.php' }, + 'administrator/student_class_assignment': { title: 'Student Class Assignment', sourceViewPath: 'administrator/student_class_assignment.php' }, + 'administrator/student_profiles': { title: 'Student Profiles', sourceViewPath: 'administrator/student_profiles.php' }, + 'administrator/subject_curriculum': { title: 'Subject Curriculum', sourceViewPath: 'administrator/subject_curriculum.php' }, + 'administrator/teacher_class_assignment': { title: 'Teacher Class Assignment', sourceViewPath: 'administrator/teacher_class_assignment.php' }, + 'administrator/teacher_profiles': { title: 'Teacher Profiles', sourceViewPath: 'administrator/teacher_profiles.php' }, + 'administrator/teacher_submissions': { title: 'Teacher Submissions', sourceViewPath: 'administrator/teacher_submissions.php' }, + 'administrator/teachers': { title: 'Teachers', sourceViewPath: 'administrator/teachers.php' }, + 'administrator/trophy': { title: 'Trophy', sourceViewPath: 'administrator/trophy.php' }, + 'administrator/trophy_final': { title: 'Trophy Final', sourceViewPath: 'administrator/trophy_final.php' }, + 'administrator/trophy_winners': { title: 'Trophy Winners', sourceViewPath: 'administrator/trophy_winners.php' }, + 'administrator/tuition_forecast': { title: 'Tuition Forecast', sourceViewPath: 'administrator/tuition_forecast.php' }, + 'appointment': { title: 'Appointment', sourceViewPath: 'appointment.php' }, + 'attendance/admins_attendance_form': { title: 'Admins Attendance Form', sourceViewPath: 'attendance/admins_attendance_form.php' }, + 'attendance/attendance_tracking': { title: 'Attendance Tracking', sourceViewPath: 'attendance/attendance_tracking.php' }, + 'attendance/compose_email': { title: 'Compose Email', sourceViewPath: 'attendance/compose_email.php' }, + 'attendance/early_dismissals': { title: 'Early Dismissals', sourceViewPath: 'attendance/early_dismissals.php' }, + 'attendance/early_dismissals_add': { title: 'Early Dismissals Add', sourceViewPath: 'attendance/early_dismissals_add.php' }, + 'attendance/edit_modal': { title: 'Edit Modal', sourceViewPath: 'attendance/edit_modal.php' }, + 'attendance/parent_reports': { title: 'Parent Reports', sourceViewPath: 'attendance/parent_reports.php' }, + 'attendance/teacher_attendance_form': { title: 'Teacher Attendance Form', sourceViewPath: 'attendance/teacher_attendance_form.php' }, + 'attendance/teacher_attendance_month': { title: 'Teacher Attendance Month', sourceViewPath: 'attendance/teacher_attendance_month.php' }, + 'attendance/view': { title: 'View', sourceViewPath: 'attendance/view.php' }, + 'attendance/violations_notified': { title: 'Violations Notified', sourceViewPath: 'attendance/violations_notified.php' }, + 'attendance/violations_pending': { title: 'Violations Pending', sourceViewPath: 'attendance/violations_pending.php' }, + 'attendance_templates/index': { title: 'Index', sourceViewPath: 'attendance_templates/index.php' }, + 'auth/select_role': { title: 'Select Role', sourceViewPath: 'auth/select_role.php' }, + 'calendar': { title: 'Calendar', sourceViewPath: 'calendar.php' }, + 'call_to_action': { title: 'Call To Action', sourceViewPath: 'call_to_action.php' }, + 'certificates/verify': { title: 'Verify', sourceViewPath: 'certificates/verify.php' }, + 'class_prep/list': { title: 'List', sourceViewPath: 'class_prep/list.php' }, + 'class_prep/print': { title: 'Print', sourceViewPath: 'class_prep/print.php' }, + 'classes': { title: 'Classes', sourceViewPath: 'classes.php' }, + 'communications/index': { title: 'Index', sourceViewPath: 'communications/index.php' }, + 'configuration/configuration_view': { title: 'Configuration View', sourceViewPath: 'configuration/configuration_view.php' }, + 'contact': { title: 'Contact', sourceViewPath: 'contact.php' }, + 'contact_process': { title: 'Contact Process', sourceViewPath: 'contact_process.php' }, + 'discounts/apply_voucher': { title: 'Apply Voucher', sourceViewPath: 'discounts/apply_voucher.php' }, + 'discounts/create': { title: 'Create', sourceViewPath: 'discounts/create.php' }, + 'discounts/list': { title: 'List', sourceViewPath: 'discounts/list.php' }, + 'discounts/reverse_discount': { title: 'Reverse Discount', sourceViewPath: 'discounts/reverse_discount.php' }, + 'emails/_wrap_layout': { title: ' Wrap Layout', sourceViewPath: 'emails/_wrap_layout.php' }, + 'emails/admin_student_registered': { title: 'Admin Student Registered', sourceViewPath: 'emails/admin_student_registered.php' }, + 'emails/below_sixty_decision': { title: 'Below Sixty Decision', sourceViewPath: 'emails/below_sixty_decision.php' }, + 'emails/below_sixty_performance': { title: 'Below Sixty Performance', sourceViewPath: 'emails/below_sixty_performance.php' }, + 'emails/broadcast_wrapper': { title: 'Broadcast Wrapper', sourceViewPath: 'emails/broadcast_wrapper.php' }, + 'emails/calendar_notification': { title: 'Calendar Notification', sourceViewPath: 'emails/calendar_notification.php' }, + 'emails/custom_html': { title: 'Custom Html', sourceViewPath: 'emails/custom_html.php' }, + 'emails/dismissal': { title: 'Dismissal', sourceViewPath: 'emails/dismissal.php' }, + 'emails/event_broadcast': { title: 'Event Broadcast', sourceViewPath: 'emails/event_broadcast.php' }, + 'emails/extra_charge_notice': { title: 'Extra Charge Notice', sourceViewPath: 'emails/extra_charge_notice.php' }, + 'emails/final_warning': { title: 'Final Warning', sourceViewPath: 'emails/final_warning.php' }, + 'emails/follow_up': { title: 'Follow Up', sourceViewPath: 'emails/follow_up.php' }, + 'emails/parent_attendance_admin': { title: 'Parent Attendance Admin', sourceViewPath: 'emails/parent_attendance_admin.php' }, + 'emails/parent_attendance_parent': { title: 'Parent Attendance Parent', sourceViewPath: 'emails/parent_attendance_parent.php' }, + 'emails/parent_email_extractor': { title: 'Parent Email Extractor', sourceViewPath: 'emails/parent_email_extractor.php' }, + 'emails/payment_receipt': { title: 'Payment Receipt', sourceViewPath: 'emails/payment_receipt.php' }, + 'emails/reset_password': { title: 'Reset Password', sourceViewPath: 'emails/reset_password.php' }, + 'emails/status_admission_review': { title: 'Status Admission Review', sourceViewPath: 'emails/status_admission_review.php' }, + 'emails/status_denied': { title: 'Status Denied', sourceViewPath: 'emails/status_denied.php' }, + 'emails/status_enrolled': { title: 'Status Enrolled', sourceViewPath: 'emails/status_enrolled.php' }, + 'emails/status_not_enrolled': { title: 'Status Not Enrolled', sourceViewPath: 'emails/status_not_enrolled.php' }, + 'emails/status_payment_pending': { title: 'Status Payment Pending', sourceViewPath: 'emails/status_payment_pending.php' }, + 'emails/status_refund_pending': { title: 'Status Refund Pending', sourceViewPath: 'emails/status_refund_pending.php' }, + 'emails/status_waitlist': { title: 'Status Waitlist', sourceViewPath: 'emails/status_waitlist.php' }, + 'emails/status_withdraw_review': { title: 'Status Withdraw Review', sourceViewPath: 'emails/status_withdraw_review.php' }, + 'emails/status_withdrawn': { title: 'Status Withdrawn', sourceViewPath: 'emails/status_withdrawn.php' }, + 'emails/student_removed': { title: 'Student Removed', sourceViewPath: 'emails/student_removed.php' }, + 'emails/support_new_account': { title: 'Support New Account', sourceViewPath: 'emails/support_new_account.php' }, + 'emails/welcome_parent': { title: 'Welcome Parent', sourceViewPath: 'emails/welcome_parent.php' }, + 'emails/welcome_staff': { title: 'Welcome Staff', sourceViewPath: 'emails/welcome_staff.php' }, + 'emails/welcome_user': { title: 'Welcome User', sourceViewPath: 'emails/welcome_user.php' }, + 'emails/whatsapp_group_invitation': { title: 'Whatsapp Group Invitation', sourceViewPath: 'emails/whatsapp_group_invitation.php' }, + 'emails/whatsapp_invite': { title: 'Whatsapp Invite', sourceViewPath: 'emails/whatsapp_invite.php' }, + 'enroll_withdraw/enrollment_withdrawal': { title: 'Enrollment Withdrawal', sourceViewPath: 'enroll_withdraw/enrollment_withdrawal.php' }, + 'enroll_withdraw/new-students': { title: 'New-Students', sourceViewPath: 'enroll_withdraw/new-students.php' }, + 'expenses/create': { title: 'Create', sourceViewPath: 'expenses/create.php' }, + 'expenses/edit': { title: 'Edit', sourceViewPath: 'expenses/edit.php' }, + 'expenses/index': { title: 'Index', sourceViewPath: 'expenses/index.php' }, + 'facility': { title: 'Facility', sourceViewPath: 'facility.php' }, + 'family/card': { title: 'Card', sourceViewPath: 'family/card.php' }, + 'family/compose_email': { title: 'Compose Email', sourceViewPath: 'family/compose_email.php' }, + 'family/index': { title: 'Index', sourceViewPath: 'family/index.php' }, + 'flags/flags_management': { title: 'Flags Management', sourceViewPath: 'flags/flags_management.php' }, + 'flags/incident_analysis': { title: 'Incident Analysis', sourceViewPath: 'flags/incident_analysis.php' }, + 'flags/processed_flags': { title: 'Processed Flags', sourceViewPath: 'flags/processed_flags.php' }, + 'footer': { title: 'Footer', sourceViewPath: 'footer.php' }, + 'grading/all_decisions': { title: 'All Decisions', sourceViewPath: 'grading/all_decisions.php' }, + 'grading/below_sixty': { title: 'Below Sixty', sourceViewPath: 'grading/below_sixty.php' }, + 'grading/below_sixty_decision_email_editor': { title: 'Below Sixty Decision Email Editor', sourceViewPath: 'grading/below_sixty_decision_email_editor.php' }, + 'grading/below_sixty_decisions': { title: 'Below Sixty Decisions', sourceViewPath: 'grading/below_sixty_decisions.php' }, + 'grading/below_sixty_email_editor': { title: 'Below Sixty Email Editor', sourceViewPath: 'grading/below_sixty_email_editor.php' }, + 'grading/comments': { title: 'Comments', sourceViewPath: 'grading/comments.php' }, + 'grading/final': { title: 'Final', sourceViewPath: 'grading/final.php' }, + 'grading/grading_main': { title: 'Grading Main', sourceViewPath: 'grading/grading_main.php' }, + 'grading/homework': { title: 'Homework', sourceViewPath: 'grading/homework.php' }, + 'grading/homework_tracking': { title: 'Homework Tracking', sourceViewPath: 'grading/homework_tracking.php' }, + 'grading/midterm': { title: 'Midterm', sourceViewPath: 'grading/midterm.php' }, + 'grading/participation': { title: 'Participation', sourceViewPath: 'grading/participation.php' }, + 'grading/placement': { title: 'Placement', sourceViewPath: 'grading/placement.php' }, + 'grading/placement_batch': { title: 'Placement Batch', sourceViewPath: 'grading/placement_batch.php' }, + 'grading/placement_index': { title: 'Placement Index', sourceViewPath: 'grading/placement_index.php' }, + 'grading/project': { title: 'Project', sourceViewPath: 'grading/project.php' }, + 'grading/quiz': { title: 'Quiz', sourceViewPath: 'grading/quiz.php' }, + 'grading/schedule_meeting': { title: 'Schedule Meeting', sourceViewPath: 'grading/schedule_meeting.php' }, + 'grading/test': { title: 'Test', sourceViewPath: 'grading/test.php' }, + 'header': { title: 'Header', sourceViewPath: 'header.php' }, + 'home': { title: 'Home', sourceViewPath: 'home.php' }, + 'index': { title: 'Index', sourceViewPath: 'index.php' }, + 'inventory/adjust_form': { title: 'Adjust Form', sourceViewPath: 'inventory/adjust_form.php' }, + 'inventory/book/form': { title: 'Form', sourceViewPath: 'inventory/book/form.php' }, + 'inventory/book/index': { title: 'Index', sourceViewPath: 'inventory/book/index.php' }, + 'inventory/classroom/audit_form': { title: 'Audit Form', sourceViewPath: 'inventory/classroom/audit_form.php' }, + 'inventory/classroom/form': { title: 'Form', sourceViewPath: 'inventory/classroom/form.php' }, + 'inventory/classroom/index': { title: 'Index', sourceViewPath: 'inventory/classroom/index.php' }, + 'inventory/kitchen/form': { title: 'Form', sourceViewPath: 'inventory/kitchen/form.php' }, + 'inventory/kitchen/index': { title: 'Index', sourceViewPath: 'inventory/kitchen/index.php' }, + 'inventory/movements/edit': { title: 'Edit', sourceViewPath: 'inventory/movements/edit.php' }, + 'inventory/movements/form': { title: 'Form', sourceViewPath: 'inventory/movements/form.php' }, + 'inventory/movements/index': { title: 'Index', sourceViewPath: 'inventory/movements/index.php' }, + 'inventory/office/form': { title: 'Form', sourceViewPath: 'inventory/office/form.php' }, + 'inventory/office/index': { title: 'Index', sourceViewPath: 'inventory/office/index.php' }, + 'inventory/summary': { title: 'Summary', sourceViewPath: 'inventory/summary.php' }, + 'inventory/teacher_distribute': { title: 'Teacher Distribute', sourceViewPath: 'inventory/teacher_distribute.php' }, + 'invoice_payment/invoice_management': { title: 'Invoice Management', sourceViewPath: 'invoice_payment/invoice_management.php' }, + 'invoice_payment/pdf_template': { title: 'Pdf Template', sourceViewPath: 'invoice_payment/pdf_template.php' }, + 'landing_page/admin_dashboard': { title: 'Admin Dashboard', sourceViewPath: 'landing_page/admin_dashboard.php' }, + 'landing_page/guest_dashboard': { title: 'Guest Dashboard', sourceViewPath: 'landing_page/guest_dashboard.php' }, + 'landing_page/parent_dashboard': { title: 'Parent Dashboard', sourceViewPath: 'landing_page/parent_dashboard.php' }, + 'landing_page/student_dashboard': { title: 'Student Dashboard', sourceViewPath: 'landing_page/student_dashboard.php' }, + 'landing_page/teacher_dashboard': { title: 'Teacher Dashboard', sourceViewPath: 'landing_page/teacher_dashboard.php' }, + 'nav_builder/edit': { title: 'Edit', sourceViewPath: 'nav_builder/edit.php' }, + 'nav_builder/index': { title: 'Index', sourceViewPath: 'nav_builder/index.php' }, + 'navbar': { title: 'Navbar', sourceViewPath: 'navbar.php' }, + 'notifications/list_active': { title: 'List Active', sourceViewPath: 'notifications/list_active.php' }, + 'notifications/list_deleted': { title: 'List Deleted', sourceViewPath: 'notifications/list_deleted.php' }, + 'parent/add_second_parent': { title: 'Add Second Parent', sourceViewPath: 'parent/add_second_parent.php' }, + 'parent/assignments': { title: 'Assignments', sourceViewPath: 'parent/assignments.php' }, + 'parent/attendance': { title: 'Attendance', sourceViewPath: 'parent/attendance.php' }, + 'parent/calendar': { title: 'Calendar', sourceViewPath: 'parent/calendar.php' }, + 'parent/class_progress_list': { title: 'Class Progress List', sourceViewPath: 'parent/class_progress_list.php' }, + 'parent/class_progress_view': { title: 'Class Progress View', sourceViewPath: 'parent/class_progress_view.php' }, + 'parent/classes': { title: 'Classes', sourceViewPath: 'parent/classes.php' }, + 'parent/contact': { title: 'Contact', sourceViewPath: 'parent/contact.php' }, + 'parent/edit_emergency_contact': { title: 'Edit Emergency Contact', sourceViewPath: 'parent/edit_emergency_contact.php' }, + 'parent/edit_student_modal': { title: 'Edit Student Modal', sourceViewPath: 'parent/edit_student_modal.php' }, + 'parent/enroll_classes': { title: 'Enroll Classes', sourceViewPath: 'parent/enroll_classes.php' }, + 'parent/enroll_failure': { title: 'Enroll Failure', sourceViewPath: 'parent/enroll_failure.php' }, + 'parent/enroll_success': { title: 'Enroll Success', sourceViewPath: 'parent/enroll_success.php' }, + 'parent/event_participation': { title: 'Event Participation', sourceViewPath: 'parent/event_participation.php' }, + 'parent/invoice_payment': { title: 'Invoice Payment', sourceViewPath: 'parent/invoice_payment.php' }, + 'parent/no_kids_registred': { title: 'No Kids Registred', sourceViewPath: 'parent/no_kids_registred.php' }, + 'parent/parent_message': { title: 'Parent Message', sourceViewPath: 'parent/parent_message.php' }, + 'parent/payment_success': { title: 'Payment Success', sourceViewPath: 'parent/payment_success.php' }, + 'parent/payment_view': { title: 'Payment View', sourceViewPath: 'parent/payment_view.php' }, + 'parent/register_student': { title: 'Register Student', sourceViewPath: 'parent/register_student.php' }, + 'parent/report_attendance': { title: 'Report Attendance', sourceViewPath: 'parent/report_attendance.php' }, + 'parent/report_cards': { title: 'Report Cards', sourceViewPath: 'parent/report_cards.php' }, + 'parent/scores': { title: 'Scores', sourceViewPath: 'parent/scores.php' }, + 'parent/success_message': { title: 'Success Message', sourceViewPath: 'parent/success_message.php' }, + 'parent/withdraw_success': { title: 'Withdraw Success', sourceViewPath: 'parent/withdraw_success.php' }, + 'payment/_list_modal': { title: ' List Modal', sourceViewPath: 'payment/_list_modal.php' }, + 'payment/discount': { title: 'Discount', sourceViewPath: 'payment/discount.php' }, + 'payment/extra_charges': { title: 'Extra Charges', sourceViewPath: 'payment/extra_charges.php' }, + 'payment/financial_report': { title: 'Financial Report', sourceViewPath: 'payment/financial_report.php' }, + 'payment/financial_report_summary': { title: 'Financial Report Summary', sourceViewPath: 'payment/financial_report_summary.php' }, + 'payment/manual_pay': { title: 'Manual Pay', sourceViewPath: 'payment/manual_pay.php' }, + 'payment/manual_payment': { title: 'Manual Payment', sourceViewPath: 'payment/manual_payment.php' }, + 'payment/notification_management': { title: 'Notification Management', sourceViewPath: 'payment/notification_management.php' }, + 'payment/unpaid_parents': { title: 'Unpaid Parents', sourceViewPath: 'payment/unpaid_parents.php' }, + 'payment_list': { title: 'Payment List', sourceViewPath: 'payment_list.php' }, + 'policy/picture_policy': { title: 'Picture Policy', sourceViewPath: 'policy/picture_policy.php' }, + 'policy/picture_policy_partial': { title: 'Picture Policy Partial', sourceViewPath: 'policy/picture_policy_partial.php' }, + 'policy/school_policy': { title: 'School Policy', sourceViewPath: 'policy/school_policy.php' }, + 'policy/school_policy_partial': { title: 'School Policy Partial', sourceViewPath: 'policy/school_policy_partial.php' }, + 'preferences': { title: 'Preferences', sourceViewPath: 'preferences.php' }, + 'print_requests/admin_index': { title: 'Admin Index', sourceViewPath: 'print_requests/admin_index.php' }, + 'print_requests/teacher_index': { title: 'Teacher Index', sourceViewPath: 'print_requests/teacher_index.php' }, + 'printables_reports/badge_form': { title: 'Badge Form', sourceViewPath: 'printables_reports/badge_form.php' }, + 'printables_reports/certificates': { title: 'Certificates', sourceViewPath: 'printables_reports/certificates.php' }, + 'printables_reports/report_card': { title: 'Report Card', sourceViewPath: 'printables_reports/report_card.php' }, + 'printables_reports/sticker_form': { title: 'Sticker Form', sourceViewPath: 'printables_reports/sticker_form.php' }, + 'profile': { title: 'Profile', sourceViewPath: 'profile.php' }, + 'refunds/list': { title: 'List', sourceViewPath: 'refunds/list.php' }, + 'reimbursements/create': { title: 'Create', sourceViewPath: 'reimbursements/create.php' }, + 'reimbursements/edit': { title: 'Edit', sourceViewPath: 'reimbursements/edit.php' }, + 'reimbursements/index': { title: 'Index', sourceViewPath: 'reimbursements/index.php' }, + 'reimbursements/under_processing': { title: 'Under Processing', sourceViewPath: 'reimbursements/under_processing.php' }, + 'rfid/rfid_coming_soon': { title: 'Rfid Coming Soon', sourceViewPath: 'rfid/rfid_coming_soon.php' }, + 'rfid/rfid_log_view': { title: 'Rfid Log View', sourceViewPath: 'rfid/rfid_log_view.php' }, + 'rolepermission/add_permission': { title: 'Add Permission', sourceViewPath: 'rolepermission/add_permission.php' }, + 'rolepermission/add_role': { title: 'Add Role', sourceViewPath: 'rolepermission/add_role.php' }, + 'rolepermission/assign_role': { title: 'Assign Role', sourceViewPath: 'rolepermission/assign_role.php' }, + 'rolepermission/edit_permission': { title: 'Edit Permission', sourceViewPath: 'rolepermission/edit_permission.php' }, + 'rolepermission/edit_role': { title: 'Edit Role', sourceViewPath: 'rolepermission/edit_role.php' }, + 'rolepermission/edit_role_permissions': { title: 'Edit Role Permissions', sourceViewPath: 'rolepermission/edit_role_permissions.php' }, + 'rolepermission/list_roles': { title: 'List Roles', sourceViewPath: 'rolepermission/list_roles.php' }, + 'rolepermission/permissionList': { title: 'PermissionList', sourceViewPath: 'rolepermission/permissionList.php' }, + 'score_analysis/score_prediction': { title: 'Score Prediction', sourceViewPath: 'score_analysis/score_prediction.php' }, + 'slips/preview_list': { title: 'Preview List', sourceViewPath: 'slips/preview_list.php' }, + 'slips/slip_pdf': { title: 'Slip Pdf', sourceViewPath: 'slips/slip_pdf.php' }, + 'spinner': { title: 'Spinner', sourceViewPath: 'spinner.php' }, + 'staff/create': { title: 'Create', sourceViewPath: 'staff/create.php' }, + 'staff/edit': { title: 'Edit', sourceViewPath: 'staff/edit.php' }, + 'staff/index': { title: 'Index', sourceViewPath: 'staff/index.php' }, + 'student/score_card': { title: 'Score Card', sourceViewPath: 'student/score_card.php' }, + 'student/score_card_list': { title: 'Score Card List', sourceViewPath: 'student/score_card_list.php' }, + 'success': { title: 'Success', sourceViewPath: 'success.php' }, + 'support': { title: 'Support', sourceViewPath: 'support.php' }, + 'support_requests': { title: 'Support Requests', sourceViewPath: 'support_requests.php' }, + 'swagger_ui': { title: 'Swagger Ui', sourceViewPath: 'swagger_ui.php' }, + 'teacher/absence_vacation': { title: 'Absence Vacation', sourceViewPath: 'teacher/absence_vacation.php' }, + 'teacher/add_final_exam': { title: 'Add Final Exam', sourceViewPath: 'teacher/add_final_exam.php' }, + 'teacher/add_homework': { title: 'Add Homework', sourceViewPath: 'teacher/add_homework.php' }, + 'teacher/add_midterm_exam': { title: 'Add Midterm Exam', sourceViewPath: 'teacher/add_midterm_exam.php' }, + 'teacher/add_participation': { title: 'Add Participation', sourceViewPath: 'teacher/add_participation.php' }, + 'teacher/add_project': { title: 'Add Project', sourceViewPath: 'teacher/add_project.php' }, + 'teacher/add_quiz': { title: 'Add Quiz', sourceViewPath: 'teacher/add_quiz.php' }, + 'teacher/add_quiz_column_form': { title: 'Add Quiz Column Form', sourceViewPath: 'teacher/add_quiz_column_form.php' }, + 'teacher/calendar': { title: 'Calendar', sourceViewPath: 'teacher/calendar.php' }, + 'teacher/class_progress_history': { title: 'Class Progress History', sourceViewPath: 'teacher/class_progress_history.php' }, + 'teacher/class_progress_submit': { title: 'Class Progress Submit', sourceViewPath: 'teacher/class_progress_submit.php' }, + 'teacher/class_progress_view': { title: 'Class Progress View', sourceViewPath: 'teacher/class_progress_view.php' }, + 'teacher/class_view': { title: 'Class View', sourceViewPath: 'teacher/class_view.php' }, + 'teacher/competition_scores/index': { title: 'Index', sourceViewPath: 'teacher/competition_scores/index.php' }, + 'teacher/competition_scores/scores': { title: 'Scores', sourceViewPath: 'teacher/competition_scores/scores.php' }, + 'teacher/drafts': { title: 'Drafts', sourceViewPath: 'teacher/drafts.php' }, + 'teacher/exam_drafts': { title: 'Exam Drafts', sourceViewPath: 'teacher/exam_drafts.php' }, + 'teacher/homework_list': { title: 'Homework List', sourceViewPath: 'teacher/homework_list.php' }, + 'teacher/inbox': { title: 'Inbox', sourceViewPath: 'teacher/inbox.php' }, + 'teacher/no_classes': { title: 'No Classes', sourceViewPath: 'teacher/no_classes.php' }, + 'teacher/scores': { title: 'Scores', sourceViewPath: 'teacher/scores.php' }, + 'teacher/select_semester': { title: 'Select Semester', sourceViewPath: 'teacher/select_semester.php' }, + 'teacher/sent': { title: 'Sent', sourceViewPath: 'teacher/sent.php' }, + 'teacher/showupdate_attendance': { title: 'Showupdate Attendance', sourceViewPath: 'teacher/showupdate_attendance.php' }, + 'teacher/teacher_assignment': { title: 'Teacher Assignment', sourceViewPath: 'teacher/teacher_assignment.php' }, + 'teacher/teacher_contactus': { title: 'Teacher Contactus', sourceViewPath: 'teacher/teacher_contactus.php' }, + 'teacher/teacher_message': { title: 'Teacher Message', sourceViewPath: 'teacher/teacher_message.php' }, + 'teacher/teacher_navbar': { title: 'Teacher Navbar', sourceViewPath: 'teacher/teacher_navbar.php' }, + 'teacher/teacher_support': { title: 'Teacher Support', sourceViewPath: 'teacher/teacher_support.php' }, + 'teacher/trash': { title: 'Trash', sourceViewPath: 'teacher/trash.php' }, + 'team': { title: 'Team', sourceViewPath: 'team.php' }, + 'testimonial': { title: 'Testimonial', sourceViewPath: 'testimonial.php' }, + 'user/create': { title: 'Create', sourceViewPath: 'user/create.php' }, + 'user/edit': { title: 'Edit', sourceViewPath: 'user/edit.php' }, + 'user/forgot_password': { title: 'Forgot Password', sourceViewPath: 'user/forgot_password.php' }, + 'user/login': { title: 'Login', sourceViewPath: 'user/login.php' }, + 'user/login_activity': { title: 'Login Activity', sourceViewPath: 'user/login_activity.php' }, + 'user/password_reset_confirmation': { title: 'Password Reset Confirmation', sourceViewPath: 'user/password_reset_confirmation.php' }, + 'user/password_set_success': { title: 'Password Set Success', sourceViewPath: 'user/password_set_success.php' }, + 'user/register': { title: 'Register', sourceViewPath: 'user/register.php' }, + 'user/reset_password': { title: 'Reset Password', sourceViewPath: 'user/reset_password.php' }, + 'user/set_authorized_user_password': { title: 'Set Authorized User Password', sourceViewPath: 'user/set_authorized_user_password.php' }, + 'user/set_password': { title: 'Set Password', sourceViewPath: 'user/set_password.php' }, + 'user/user_list': { title: 'User List', sourceViewPath: 'user/user_list.php' }, + 'user/welcome_back': { title: 'Welcome Back', sourceViewPath: 'user/welcome_back.php' }, + 'welcome_message': { title: 'Welcome Message', sourceViewPath: 'welcome_message.php' }, + 'whatsapp/manage_links': { title: 'Manage Links', sourceViewPath: 'whatsapp/manage_links.php' }, + 'whatsapp/parent_contacts': { title: 'Parent Contacts', sourceViewPath: 'whatsapp/parent_contacts.php' }, + 'whatsapp/parent_contacts_by_class': { title: 'Parent Contacts By Class', sourceViewPath: 'whatsapp/parent_contacts_by_class.php' }, + 'winners/competitions/index': { title: 'Index', sourceViewPath: 'winners/competitions/index.php' }, + 'winners/competitions/show': { title: 'Show', sourceViewPath: 'winners/competitions/show.php' }, +} diff --git a/src/pages/CiPlaceholderPage.tsx b/src/pages/CiPlaceholderPage.tsx deleted file mode 100644 index 4cb7f56..0000000 --- a/src/pages/CiPlaceholderPage.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Link, useParams } from 'react-router-dom' -import { getCiMeta } from '../lib/ciRouteLookup' - -/** Fallback for CI-style paths not yet ported to dedicated React pages. */ -export function CiPlaceholderPage() { - const params = useParams() - const star = params['*'] ?? '' - const segments = star.split('/').filter(Boolean) - const meta = getCiMeta(star) - - const title = meta?.title ?? 'Section placeholder' - return ( -
- - -

{title}

- -

- Implement this screen using the matching routes in app_laravel/routes/api.php{' '} - (JWT Authorization: Bearer). See also API docs. -

-

- SPA path: /app/{star || '…'} -

-

- Browse all CI view routes - {' · '} - -

-
- ) -} diff --git a/src/pages/ForgotPasswordPage.tsx b/src/pages/ForgotPasswordPage.tsx index 8e65636..3d8109e 100644 --- a/src/pages/ForgotPasswordPage.tsx +++ b/src/pages/ForgotPasswordPage.tsx @@ -2,7 +2,6 @@ import { type FormEvent, useEffect, useRef, useState } from 'react' import { Link } from 'react-router-dom' import { requestForgotPassword } from '../api/passwordFlow' -/** Mirrors CodeIgniter `user/forgot_password.php` + confirmation modal from `password_reset_confirmation.php`. */ export function ForgotPasswordPage() { const [email, setEmail] = useState('') const [error, setError] = useState(null) diff --git a/src/pages/HomePage.css b/src/pages/HomePage.css index 73b8ed4..a81fd62 100644 --- a/src/pages/HomePage.css +++ b/src/pages/HomePage.css @@ -1,4 +1,3 @@ -/* Ported from CodeIgniter `Views/index.php` — scoped to avoid overriding global layout. */ .home-landing { --home-primary: #3a8fd1; --home-secondary: #2c5e8a; diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 652fd36..5d8ae59 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -12,7 +12,7 @@ function userMayLoadAdministratorHomeMetrics(user: AuthUser | null): boolean { return Boolean(r.administrator || r.admin || r.super_admin) } -/** Carousel + sections ported from CodeIgniter `Views/index.php` (Al Rahma public home). */ +/** Carousel + sections adapted from the previous public home content. */ const CAROUSEL_SLIDES = [ { image: '/images/carousel-1.png', diff --git a/src/pages/LoginPage.tsx b/src/pages/LoginPage.tsx index d1d0ea0..c91542d 100644 --- a/src/pages/LoginPage.tsx +++ b/src/pages/LoginPage.tsx @@ -4,7 +4,6 @@ import { fetchDashboardRoute } from '../api/session' import { useAuth } from '../auth/AuthProvider' import { spaPathFromCiUrl } from '../lib/ciSpaPaths' -/** Matches CodeIgniter `Views/user/login.php` (JWT via `/api/v1/auth/login`). */ export function LoginPage() { const { login } = useAuth() const navigate = useNavigate() diff --git a/src/pages/RegisterPage.tsx b/src/pages/RegisterPage.tsx index 652e18e..14adfe2 100644 --- a/src/pages/RegisterPage.tsx +++ b/src/pages/RegisterPage.tsx @@ -15,7 +15,6 @@ function formatUsPhone(input: string): string { return `${raw.slice(0, 3)}-${raw.slice(3, 6)}-${raw.slice(6)}` } -/** Matches CodeIgniter `Views/user/register.php` + Laravel `POST /api/v1/auth/register` (captcha flow). */ export function RegisterPage() { const navigate = useNavigate() diff --git a/src/pages/ViewRoutePlaceholderPage.tsx b/src/pages/ViewRoutePlaceholderPage.tsx new file mode 100644 index 0000000..b7bc9db --- /dev/null +++ b/src/pages/ViewRoutePlaceholderPage.tsx @@ -0,0 +1,49 @@ +import { Link, useParams } from 'react-router-dom' +import { getViewRouteMeta } from '../lib/viewRouteLookup' + +/** Fallback for mapped source-view paths not yet ported to dedicated React pages. */ +export function ViewRoutePlaceholderPage() { + const params = useParams() + const star = params['*'] ?? '' + const segments = star.split('/').filter(Boolean) + const meta = getViewRouteMeta(star) + + const title = meta?.title ?? 'Section placeholder' + return ( +
+ + +

{title}

+ +

+ Implement this screen using the matching Laravel routes and API endpoints (JWT{' '} + Authorization: Bearer). See also API docs. +

+

+ SPA path: /app/{star || '…'} +

+

+ Browse all mapped view routes +

+
+ ) +} diff --git a/src/pages/CiSitemapPage.tsx b/src/pages/ViewRouteSitemapPage.tsx similarity index 59% rename from src/pages/CiSitemapPage.tsx rename to src/pages/ViewRouteSitemapPage.tsx index ed72b39..e4b17d4 100644 --- a/src/pages/CiSitemapPage.tsx +++ b/src/pages/ViewRouteSitemapPage.tsx @@ -1,60 +1,59 @@ -import { useMemo } from 'react' -import { Link } from 'react-router-dom' -import { ciRouteMeta } from '../lib/ciRouteMeta.generated' -import { ciRegistryKeyToAppPath } from '../lib/ciRouteLookup' - -/** Browse every CodeIgniter view file mapped under `/app/…` (parity placeholders unless a dedicated route exists). */ -export function CiSitemapPage() { - const grouped = useMemo(() => { - const g = new Map() - for (const key of Object.keys(ciRouteMeta).sort()) { - const top = key.includes('/') ? key.slice(0, key.indexOf('/')) : key - const title = ciRouteMeta[key]?.title ?? key - const list = g.get(top) ?? [] - list.push({ key, title }) - g.set(top, list) - } - return [...g.entries()].sort(([a], [b]) => a.localeCompare(b)) - }, []) - - return ( -
- - -

- Generated from app_codeigniter/app/Views/**/*.php. Each link opens the parity - route under /app/…; unimplemented screens use the section placeholder with the - matching view path. Regenerate: npm run gen:ci-meta. -

- -
- {grouped.map(([section, items]) => ( -
-
-
{section}
-
    - {items.map(({ key, title }) => ( -
  • - {title} -
    - {key.replace(/\//g, ' / ')} -
    -
  • - ))} -
-
-
- ))} -
-
- ) -} +import { useMemo } from 'react' +import { Link } from 'react-router-dom' +import { viewRouteMeta } from '../lib/viewRouteMeta.generated' +import { registryKeyToAppPath } from '../lib/viewRouteLookup' + +export function ViewRouteSitemapPage() { + const grouped = useMemo(() => { + const groups = new Map() + for (const key of Object.keys(viewRouteMeta).sort()) { + const top = key.includes('/') ? key.slice(0, key.indexOf('/')) : key + const title = viewRouteMeta[key]?.title ?? key + const list = groups.get(top) ?? [] + list.push({ key, title }) + groups.set(top, list) + } + return [...groups.entries()].sort(([a], [b]) => a.localeCompare(b)) + }, []) + + return ( +
+ + +

+ Generated from discovered PHP view sources. Each link opens the mapped route under{' '} + /app/…; unimplemented screens use the section placeholder with the matching + source view path. Regenerate: npm run gen:view-meta. +

+ +
+ {grouped.map(([section, items]) => ( +
+
+
{section}
+
    + {items.map(({ key, title }) => ( +
  • + {title} +
    + {key.replace(/\//g, ' / ')} +
    +
  • + ))} +
+
+
+ ))} +
+
+ ) +} diff --git a/src/pages/emails/EmailPreviewLayout.css b/src/pages/emails/EmailPreviewLayout.css index 37fd86d..20e49ef 100644 --- a/src/pages/emails/EmailPreviewLayout.css +++ b/src/pages/emails/EmailPreviewLayout.css @@ -1,4 +1,3 @@ -/* Mirrors CodeIgniter `layout/email_layout.php` — scoped for admin preview only */ .email-preview-root { font-family: Arial, sans-serif; background-color: #f9f9f9; diff --git a/src/pages/emails/EmailTemplatePreviewPage.tsx b/src/pages/emails/EmailTemplatePreviewPage.tsx index 36c6285..e2cff59 100644 --- a/src/pages/emails/EmailTemplatePreviewPage.tsx +++ b/src/pages/emails/EmailTemplatePreviewPage.tsx @@ -26,7 +26,7 @@ export function EmailTemplatePreviewPage() {

{entry.title}

- CI: {entry.ciView} + Source template: {entry.sourceTemplatePath}

{entry.render()} diff --git a/src/pages/emails/EmailTemplatesIndexPage.tsx b/src/pages/emails/EmailTemplatesIndexPage.tsx index 25cb0f7..1abe263 100644 --- a/src/pages/emails/EmailTemplatesIndexPage.tsx +++ b/src/pages/emails/EmailTemplatesIndexPage.tsx @@ -8,8 +8,8 @@ export function EmailTemplatesIndexPage() {

Email templates (preview)

- React previews matching CodeIgniter Views/emails/*.php. Laravel should render the same HTML for - outgoing mail; this UI is for QA and copy review. + React previews matching the current PHP email templates. Laravel should render the same HTML + for outgoing mail; this UI is for QA and copy review.

@@ -21,7 +21,7 @@ export function EmailTemplatesIndexPage() { Template - CI view + Source template @@ -32,10 +32,12 @@ export function EmailTemplatesIndexPage() { {row.title} - {row.ciView} + {row.sourceTemplatePath} - + Preview diff --git a/src/pages/emails/emailTemplatesRegistry.tsx b/src/pages/emails/emailTemplatesRegistry.tsx index 279d261..4550615 100644 --- a/src/pages/emails/emailTemplatesRegistry.tsx +++ b/src/pages/emails/emailTemplatesRegistry.tsx @@ -71,164 +71,164 @@ export type EmailTemplateSlug = export type RegistryEntry = { title: string - ciView: string + sourceTemplatePath: string render: () => JSX.Element } export const EMAIL_TEMPLATE_REGISTRY: Record = { 'final-warning': { title: 'Final attendance warning', - ciView: 'app/Views/emails/final_warning.php', + sourceTemplatePath: 'emails/final_warning.php', render: () => , }, 'follow-up': { title: 'Attendance follow-up', - ciView: 'app/Views/emails/follow_up.php', + sourceTemplatePath: 'emails/follow_up.php', render: () => , }, dismissal: { title: 'Dismissal (absences)', - ciView: 'app/Views/emails/dismissal.php', + sourceTemplatePath: 'emails/dismissal.php', render: () => , }, 'parent-attendance-admin': { title: 'Parent attendance — admin notification', - ciView: 'app/Views/emails/parent_attendance_admin.php', + sourceTemplatePath: 'emails/parent_attendance_admin.php', render: () => , }, 'parent-attendance-parent': { title: 'Parent attendance — confirmation to parent', - ciView: 'app/Views/emails/parent_attendance_parent.php', + sourceTemplatePath: 'emails/parent_attendance_parent.php', render: () => , }, 'below-sixty-performance': { title: 'Below 60 performance', - ciView: 'app/Views/emails/below_sixty_performance.php', + sourceTemplatePath: 'emails/below_sixty_performance.php', render: () => , }, 'payment-receipt': { title: 'Payment receipt', - ciView: 'app/Views/emails/payment_receipt.php', + sourceTemplatePath: 'emails/payment_receipt.php', render: () => , }, 'extra-charge-notice': { title: 'Extra charge notice', - ciView: 'app/Views/emails/extra_charge_notice.php', + sourceTemplatePath: 'emails/extra_charge_notice.php', render: () => , }, 'reset-password': { title: 'Reset password', - ciView: 'app/Views/emails/reset_password.php', + sourceTemplatePath: 'emails/reset_password.php', render: () => , }, 'welcome-parent': { title: 'Welcome — parent activation', - ciView: 'app/Views/emails/welcome_parent.php', + sourceTemplatePath: 'emails/welcome_parent.php', render: () => , }, 'welcome-staff': { title: 'Welcome — staff activation', - ciView: 'app/Views/emails/welcome_staff.php', + sourceTemplatePath: 'emails/welcome_staff.php', render: () => , }, 'welcome-user': { title: 'Welcome — generic user', - ciView: 'app/Views/emails/welcome_user.php', + sourceTemplatePath: 'emails/welcome_user.php', render: () => , }, 'student-removed': { title: 'Student removed', - ciView: 'app/Views/emails/student_removed.php', + sourceTemplatePath: 'emails/student_removed.php', render: () => , }, 'support-new-account': { title: 'Support — new account alert', - ciView: 'app/Views/emails/support_new_account.php', + sourceTemplatePath: 'emails/support_new_account.php', render: () => , }, 'admin-student-registered': { title: 'Admin — student registered', - ciView: 'app/Views/emails/admin_student_registered.php', + sourceTemplatePath: 'emails/admin_student_registered.php', render: () => , }, 'status-admission-review': { title: 'Status — admission under review', - ciView: 'app/Views/emails/status_admission_review.php', + sourceTemplatePath: 'emails/status_admission_review.php', render: () => , }, 'status-denied': { title: 'Status — admission denied', - ciView: 'app/Views/emails/status_denied.php', + sourceTemplatePath: 'emails/status_denied.php', render: () => , }, 'status-enrolled': { title: 'Status — enrolled', - ciView: 'app/Views/emails/status_enrolled.php', + sourceTemplatePath: 'emails/status_enrolled.php', render: () => , }, 'status-not-enrolled': { title: 'Status — not enrolled', - ciView: 'app/Views/emails/status_not_enrolled.php', + sourceTemplatePath: 'emails/status_not_enrolled.php', render: () => , }, 'status-payment-pending': { title: 'Status — payment pending', - ciView: 'app/Views/emails/status_payment_pending.php', + sourceTemplatePath: 'emails/status_payment_pending.php', render: () => , }, 'status-refund-pending': { title: 'Status — refund pending', - ciView: 'app/Views/emails/status_refund_pending.php', + sourceTemplatePath: 'emails/status_refund_pending.php', render: () => , }, 'status-waitlist': { title: 'Status — waitlist', - ciView: 'app/Views/emails/status_waitlist.php', + sourceTemplatePath: 'emails/status_waitlist.php', render: () => , }, 'status-withdraw-review': { title: 'Status — withdraw under review', - ciView: 'app/Views/emails/status_withdraw_review.php', + sourceTemplatePath: 'emails/status_withdraw_review.php', render: () => , }, 'status-withdrawn': { title: 'Status — withdrawn', - ciView: 'app/Views/emails/status_withdrawn.php', + sourceTemplatePath: 'emails/status_withdrawn.php', render: () => , }, 'calendar-notification': { title: 'Calendar notification', - ciView: 'app/Views/emails/calendar_notification.php', + sourceTemplatePath: 'emails/calendar_notification.php', render: () => , }, 'event-broadcast': { title: 'Event broadcast', - ciView: 'app/Views/emails/event_broadcast.php', + sourceTemplatePath: 'emails/event_broadcast.php', render: () => , }, 'custom-html': { title: 'Custom HTML body', - ciView: 'app/Views/emails/custom_html.php', + sourceTemplatePath: 'emails/custom_html.php', render: () => , }, 'wrap-layout-sample': { title: 'Wrap layout ($body_html)', - ciView: 'app/Views/emails/_wrap_layout.php', + sourceTemplatePath: 'emails/_wrap_layout.php', render: () => , }, 'broadcast-wrapper-sample': { title: 'Broadcast wrapper ($content)', - ciView: 'app/Views/emails/broadcast_wrapper.php', + sourceTemplatePath: 'emails/broadcast_wrapper.php', render: () => , }, 'whatsapp-invite': { title: 'WhatsApp invite', - ciView: 'app/Views/emails/whatsapp_invite.php', + sourceTemplatePath: 'emails/whatsapp_invite.php', render: () => , }, 'whatsapp-group-invitation': { title: 'WhatsApp group invitation (draft text)', - ciView: 'app/Views/emails/whatsapp_group_invitation.php', + sourceTemplatePath: 'emails/whatsapp_group_invitation.php', render: () => , }, } diff --git a/src/pages/errors/AccessDeniedPage.tsx b/src/pages/errors/AccessDeniedPage.tsx index 042745c..4aec814 100644 --- a/src/pages/errors/AccessDeniedPage.tsx +++ b/src/pages/errors/AccessDeniedPage.tsx @@ -1,6 +1,6 @@ import { Link } from 'react-router-dom' -/** Port of CodeIgniter `Views/errors/access_denied.php`. */ + export function AccessDeniedPage() { return (
diff --git a/src/pages/errors/InvalidTokenPage.tsx b/src/pages/errors/InvalidTokenPage.tsx index 7ec8661..6b595cc 100644 --- a/src/pages/errors/InvalidTokenPage.tsx +++ b/src/pages/errors/InvalidTokenPage.tsx @@ -1,6 +1,5 @@ import { Link } from 'react-router-dom' -/** Port of CodeIgniter `Views/errors/invalid_token.php` (registration token invalid/expired). */ export function InvalidTokenPage() { return (
diff --git a/src/pages/expenses/ExpenseVendorFields.tsx b/src/pages/expenses/ExpenseVendorFields.tsx index aeae039..4693422 100644 --- a/src/pages/expenses/ExpenseVendorFields.tsx +++ b/src/pages/expenses/ExpenseVendorFields.tsx @@ -1,9 +1,5 @@ import { useEffect, useMemo, useState } from 'react' -/** - * Vendor / retailor UX from CodeIgniter `expenses/create.php` and `edit.php` - * (dropdown + Other text field). - */ export function ExpenseVendorFields({ retailors, initialRetailor, diff --git a/src/pages/parent/ParentParityShell.tsx b/src/pages/parent/ParentParityShell.tsx index 087a885..333ad11 100644 --- a/src/pages/parent/ParentParityShell.tsx +++ b/src/pages/parent/ParentParityShell.tsx @@ -1,13 +1,12 @@ import type { ReactNode } from 'react' export type ParentParitySpec = { - title: string - /** File name under `app/Views/parent/` (e.g. `calendar.php`). */ - ciViewFile: string - /** Example CodeIgniter URL paths (with leading slash). */ - legacyCiRoutes?: string[] -} - + title: string + /** File name under `app/Views/parent/` (e.g. `calendar.php`). */ + ciViewFile: string + legacyCiRoutes?: string[] +} + type ShellProps = ParentParitySpec & { children?: ReactNode fullWidth?: boolean @@ -20,12 +19,12 @@ export function ParentParityShell({ }: ShellProps) { return (
-
-

- {title} -

- -
+
+

+ {title} +

+ +
diff --git a/src/pages/teacher/TeacherParityPages.tsx b/src/pages/teacher/TeacherParityPages.tsx index 32725cf..9bc7a9d 100644 --- a/src/pages/teacher/TeacherParityPages.tsx +++ b/src/pages/teacher/TeacherParityPages.tsx @@ -1,3 +1,2 @@ -/** Barrel for CodeIgniter `Views/teacher/*` React parity screens. */ export * from './TeacherCorePages' export * from './TeacherRestPages' diff --git a/src/styles/ci-registration.css b/src/styles/ci-registration.css index ddfc2a8..ad26179 100644 --- a/src/styles/ci-registration.css +++ b/src/styles/ci-registration.css @@ -1,4 +1,3 @@ -/* Mirrors app_codeigniter/public/assets/css/register-form.css for auth/register pages */ .ci-auth-bg { background-color: #deffe1;