Fix KAN-3 project template flows

This commit is contained in:
2026-09-08 10:25:52 +00:00
parent db8855a056
commit fed6a282a4
13 changed files with 143 additions and 91 deletions
+2 -1
View File
@@ -25,6 +25,7 @@ import {
} from '@/components/ui/sidebar';
import { dashboard } from '@/routes';
import { index as adminUsers } from '@/routes/admin/users';
import { index as projectTemplatesIndex } from '@/routes/project-templates';
import { index as projectsIndex } from '@/routes/projects';
import { index as teamsIndex } from '@/routes/teams';
import type { NavItem } from '@/types';
@@ -48,7 +49,7 @@ const mainNavItems = computed<NavItem[]>(() => {
if (page.props.auth.permissions.projectCreate) {
items.push({
title: 'Project templates',
href: '/project-templates',
href: projectTemplatesIndex(),
icon: Layers3,
});
}
@@ -15,7 +15,11 @@ import {
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import AppLayout from '@/layouts/AppLayout.vue';
import { show as projectShow } from '@/routes/projects/index';
import { index as projectsIndex, show as projectShow } from '@/routes/projects/index';
import {
create as projectTemplateCreate,
store as projectTemplateStore,
} from '@/routes/projects/templates';
import type { BreadcrumbItem, ProjectTemplatesCreatePageProps } from '@/types';
const props = defineProps<ProjectTemplatesCreatePageProps>();
@@ -23,7 +27,7 @@ const props = defineProps<ProjectTemplatesCreatePageProps>();
const breadcrumbs: BreadcrumbItem[] = [
{
title: 'Projects',
href: '/projects',
href: projectsIndex(),
},
{
title: props.project.name,
@@ -31,7 +35,7 @@ const breadcrumbs: BreadcrumbItem[] = [
},
{
title: 'Save as new template',
href: `/projects/${props.project.id}/templates/create`,
href: projectTemplateCreate(props.project.id),
},
];
@@ -50,7 +54,7 @@ const copyAreasError = computed(() => {
});
const submit = (): void => {
form.post(`/projects/${props.project.id}/templates`, {
form.post(projectTemplateStore.url(props.project.id), {
preserveScroll: true,
});
};
@@ -15,7 +15,11 @@ import {
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import AppLayout from '@/layouts/AppLayout.vue';
import { index as projectTemplatesIndex } from '@/routes/project-templates';
import {
edit as projectTemplatesEdit,
index as projectTemplatesIndex,
update as projectTemplatesUpdate,
} from '@/routes/project-templates';
import type { BreadcrumbItem, ProjectTemplatesEditPageProps } from '@/types';
const props = defineProps<ProjectTemplatesEditPageProps>();
@@ -27,7 +31,7 @@ const breadcrumbs: BreadcrumbItem[] = [
},
{
title: props.template.name,
href: `/project-templates/${props.template.id}/edit`,
href: projectTemplatesEdit(props.template.id),
},
];
@@ -48,7 +52,7 @@ const copyAreasError = computed(() => {
const linkedProjectCount = computed(() => props.template.linked_project_count ?? 0);
const submit = (): void => {
form.patch(`/project-templates/${props.template.id}`, {
form.patch(projectTemplatesUpdate.url(props.template.id), {
preserveScroll: true,
});
};
@@ -11,7 +11,11 @@ import {
CardTitle,
} from '@/components/ui/card';
import AppLayout from '@/layouts/AppLayout.vue';
import { edit as projectTemplatesEdit } from '@/routes/project-templates';
import {
destroy as projectTemplatesDestroy,
edit as projectTemplatesEdit,
index as projectTemplatesIndex,
} from '@/routes/project-templates';
import { create as projectsCreate, index as projectsIndex } from '@/routes/projects/index';
import type { BreadcrumbItem, ProjectTemplatesIndexPageProps } from '@/types';
@@ -20,12 +24,12 @@ const props = defineProps<ProjectTemplatesIndexPageProps>();
const breadcrumbs: BreadcrumbItem[] = [
{
title: 'Project templates',
href: '/project-templates',
href: projectTemplatesIndex(),
},
];
const removeTemplate = (templateId: number): void => {
router.delete(`/project-templates/${templateId}`, {
router.delete(projectTemplatesDestroy.url(templateId), {
preserveScroll: true,
});
};
+1 -1
View File
@@ -63,7 +63,7 @@ const submit = (): void => {
form.source_template_id = '';
}
form.post(ProjectController.store(), {
form.post(ProjectController.store.url(), {
preserveScroll: true,
});
};
+2 -1
View File
@@ -22,6 +22,7 @@ import {
notifications as notificationSettings,
repositories as repositorySettings,
} from '@/routes/projects/settings';
import { create as projectTemplateCreate } from '@/routes/projects/templates';
import type { BreadcrumbItem, ProjectShowPageProps } from '@/types';
const props = defineProps<ProjectShowPageProps>();
@@ -99,7 +100,7 @@ const projectAreas = [
as-child
variant="outline"
>
<Link :href="`/projects/${project.id}/templates/create`">
<Link :href="projectTemplateCreate(project.id)">
Save as new template
</Link>
</Button>
@@ -89,12 +89,9 @@ const submitSwitchTemplate = (): void => {
return;
}
switchTemplateForm.submit(
ProjectController.switchTemplate(props.project.id),
{
preserveScroll: true,
},
);
switchTemplateForm.post(ProjectController.switchTemplate.url(props.project.id), {
preserveScroll: true,
});
};
const submitResetTemplate = (): void => {
@@ -102,7 +99,7 @@ const submitResetTemplate = (): void => {
return;
}
resetTemplateForm.submit(ProjectController.resetTemplate(props.project.id), {
resetTemplateForm.post(ProjectController.resetTemplate.url(props.project.id), {
preserveScroll: true,
});
};
@@ -112,7 +109,7 @@ const submitDelete = (): void => {
return;
}
deleteForm.submit(ProjectController.destroy(props.project.id), {
deleteForm.delete(ProjectController.destroy.url(props.project.id), {
preserveScroll: true,
});
};