Author SHA1 Message Date
hainm 5efb4d05cb feat: change route path id 2026-09-22 22:37:36 +07:00
6 changed files with 42 additions and 27 deletions
+20 -5
View File
@@ -23,13 +23,28 @@ function App() {
<Route index element={<Navigate to="/courses" replace />} /> <Route index element={<Navigate to="/courses" replace />} />
<Route path="/courses" element={<CoursesPage />} /> <Route path="/courses" element={<CoursesPage />} />
<Route path="/courses/new" element={<CourseFormPage />} /> <Route path="/courses/new" element={<CourseFormPage />} />
<Route path="/courses/:courseId/detail" element={<CourseDetail />} /> <Route
<Route path="/courses/:courseId/edit" element={<CourseFormPage />} /> path="/courses/detail/:courseId"
<Route path="/courses/:courseId/lessons/new" element={<LessonFormPage />} /> element={<CourseDetail />}
<Route path="/courses/:courseId/lessons/:lessonId/edit" element={<LessonFormPage />} /> />
<Route
path="/courses/edit/:courseId"
element={<CourseFormPage />}
/>
<Route
path="/courses/:courseId/lessons/new"
element={<LessonFormPage />}
/>
<Route
path="/courses/:courseId/lessons/edit/:lessonId"
element={<LessonFormPage />}
/>
<Route path="/lessons" element={<LessonPage />} /> <Route path="/lessons" element={<LessonPage />} />
<Route path="/question-bank/mcq" element={<MCQPage />} /> <Route path="/question-bank/mcq" element={<MCQPage />} />
<Route path="/question-bank/paragraph" element={<ParagraphPage />} /> <Route
path="/question-bank/paragraph"
element={<ParagraphPage />}
/>
<Route path="/users" element={<UsersPage />} /> <Route path="/users" element={<UsersPage />} />
<Route path="/settings/masterdata" element={<MasterdataPage />} /> <Route path="/settings/masterdata" element={<MasterdataPage />} />
<Route path="/settings/role" element={<RolePage />} /> <Route path="/settings/role" element={<RolePage />} />
+2 -2
View File
@@ -199,7 +199,7 @@ function CourseDetail() {
<Button <Button
variant="outline" variant="outline"
className="rounded-xl bg-app-surface-muted text-app-text hover:bg-app-interactive-hover" className="rounded-xl bg-app-surface-muted text-app-text hover:bg-app-interactive-hover"
onClick={() => navigate(`/courses/${courseId}/edit`)} onClick={() => navigate(`/courses/edit/${courseId}`)}
> >
<HiOutlinePencil className="w-4 h-4 mr-2" /> <HiOutlinePencil className="w-4 h-4 mr-2" />
Edit Edit
@@ -416,7 +416,7 @@ function CourseDetail() {
<div className="col-span-1 flex items-center justify-end gap-1"> <div className="col-span-1 flex items-center justify-end gap-1">
<button <button
onClick={() => onClick={() =>
navigate(`/courses/${courseId}/lessons/${lesson.id}/edit`) navigate(`/courses/${courseId}/lessons/edit/${lesson.id}`)
} }
className="w-8 h-8 rounded-lg flex items-center justify-center text-app-text-muted hover:text-app-primary hover:bg-app-primary-soft transition-colors" className="w-8 h-8 rounded-lg flex items-center justify-center text-app-text-muted hover:text-app-primary hover:bg-app-primary-soft transition-colors"
title="Edit" title="Edit"
+3 -3
View File
@@ -122,10 +122,10 @@ function CourseFormPage() {
await courseService.update(courseId, payload); await courseService.update(courseId, payload);
} else { } else {
const created = await courseService.create(payload); const created = await courseService.create(payload);
navigate(`/courses/${created.id}/detail`); navigate(`/courses/detail/${created.id}`);
return; return;
} }
navigate(`/courses/${courseId}/detail`); navigate(`/courses/detail/${courseId}`);
} catch (err) { } catch (err) {
setError(err.message || 'Failed to save course'); setError(err.message || 'Failed to save course');
} finally { } finally {
@@ -168,7 +168,7 @@ function CourseFormPage() {
<Button <Button
variant="outline" variant="outline"
className="rounded-xl bg-app-surface-muted text-app-text hover:bg-app-interactive-hover" className="rounded-xl bg-app-surface-muted text-app-text hover:bg-app-interactive-hover"
onClick={() => navigate(isEditing ? `/courses/${courseId}/detail` : '/courses')} onClick={() => navigate(isEditing ? `/courses/detail/${courseId}` : '/courses')}
disabled={saving} disabled={saving}
> >
<HiOutlineArrowLeft className="w-4 h-4 mr-2" /> <HiOutlineArrowLeft className="w-4 h-4 mr-2" />
+2 -2
View File
@@ -63,7 +63,7 @@ function CoursePage() {
}); });
const handleClick = (course) => { const handleClick = (course) => {
navigate(`/courses/${course.id}/detail`); navigate(`/courses/detail/${course.id}`);
}; };
return ( return (
@@ -130,7 +130,7 @@ function CoursePage() {
course={course} course={course}
image={course.image} image={course.image}
handleClick={() => handleClick(course)} handleClick={() => handleClick(course)}
onEdit={() => navigate(`/courses/${course.id}/edit`)} onEdit={() => navigate(`/courses/edit/${course.id}`)}
/> />
))} ))}
{filtered.length === 0 && ( {filtered.length === 0 && (
+1 -1
View File
@@ -110,7 +110,7 @@ function LessonPage() {
<button <button
type="button" type="button"
style={actionBtn} style={actionBtn}
onClick={() => navigate(`/courses/${row.courseId}/lessons/${row.id}/edit`)} onClick={() => navigate(`/courses/${row.courseId}/lessons/edit/${row.id}`)}
onMouseEnter={(e) => { e.target.style.background = '#7132f5'; e.target.style.color = '#ffffff'; }} onMouseEnter={(e) => { e.target.style.background = '#7132f5'; e.target.style.color = '#ffffff'; }}
onMouseLeave={(e) => { e.target.style.background = '#ffffff'; e.target.style.color = '#5741d8'; }} onMouseLeave={(e) => { e.target.style.background = '#ffffff'; e.target.style.color = '#5741d8'; }}
> >
+1 -1
View File
@@ -19,7 +19,7 @@ function ActionBar({ courseId, isPublished, onTogglePublish, onSaveDraft, saving
</Link> </Link>
<span>/</span> <span>/</span>
<Link <Link
to={`/courses/${courseId}/detail`} to={`/courses/detail/${courseId}`}
className="hover:text-primary transition-colors truncate max-w-[200px]" className="hover:text-primary transition-colors truncate max-w-[200px]"
> >
{courseId} {courseId}