feat: change route path id
This commit is contained in:
+33
-18
@@ -18,24 +18,39 @@ function App() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route element={<MainLayout />}>
|
<Route element={<MainLayout />}>
|
||||||
<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="/lessons" element={<LessonPage />} />
|
<Route
|
||||||
<Route path="/question-bank/mcq" element={<MCQPage />} />
|
path="/courses/edit/:courseId"
|
||||||
<Route path="/question-bank/paragraph" element={<ParagraphPage />} />
|
element={<CourseFormPage />}
|
||||||
<Route path="/users" element={<UsersPage />} />
|
/>
|
||||||
<Route path="/settings/masterdata" element={<MasterdataPage />} />
|
<Route
|
||||||
<Route path="/settings/role" element={<RolePage />} />
|
path="/courses/:courseId/lessons/new"
|
||||||
<Route path="/settings/permission" element={<PermissionPage />} />
|
element={<LessonFormPage />}
|
||||||
</Route>
|
/>
|
||||||
</Routes>
|
<Route
|
||||||
|
path="/courses/:courseId/lessons/edit/:lessonId"
|
||||||
|
element={<LessonFormPage />}
|
||||||
|
/>
|
||||||
|
<Route path="/lessons" element={<LessonPage />} />
|
||||||
|
<Route path="/question-bank/mcq" element={<MCQPage />} />
|
||||||
|
<Route
|
||||||
|
path="/question-bank/paragraph"
|
||||||
|
element={<ParagraphPage />}
|
||||||
|
/>
|
||||||
|
<Route path="/users" element={<UsersPage />} />
|
||||||
|
<Route path="/settings/masterdata" element={<MasterdataPage />} />
|
||||||
|
<Route path="/settings/role" element={<RolePage />} />
|
||||||
|
<Route path="/settings/permission" element={<PermissionPage />} />
|
||||||
|
</Route>
|
||||||
|
</Routes>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
<Toaster />
|
<Toaster />
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|||||||
@@ -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 && (
|
||||||
|
|||||||
@@ -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'; }}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user