parent
1456406705
commit
2db2f2148b
@ -0,0 +1,100 @@ |
|||||||
|
<script setup> |
||||||
|
import { useI18n } from "vue-i18n" |
||||||
|
import { ref } from "vue" |
||||||
|
import { useRouter } from "vue-router" |
||||||
|
import { storeToRefs } from "pinia" |
||||||
|
import EmptyState from "../EmptyState.vue" |
||||||
|
import BaseButton from "../basecomponents/BaseButton.vue" |
||||||
|
import Skeleton from "primevue/skeleton" |
||||||
|
import { useCidReqStore } from "../../store/cidReq" |
||||||
|
import courseService from "../../services/courseService" |
||||||
|
|
||||||
|
const { t } = useI18n() |
||||||
|
const router = useRouter() |
||||||
|
|
||||||
|
const cidReqStore = useCidReqStore() |
||||||
|
|
||||||
|
const { course, session } = storeToRefs(cidReqStore) |
||||||
|
|
||||||
|
const intro = ref(null) |
||||||
|
|
||||||
|
courseService.loadHomeIntro(course.value.id, session.value?.id).then((data) => (intro.value = data)) |
||||||
|
|
||||||
|
const goToIntroCreate = () => { |
||||||
|
router.push({ |
||||||
|
name: "ToolIntroCreate", |
||||||
|
params: { |
||||||
|
courseTool: intro.value.c_tool.iid, |
||||||
|
}, |
||||||
|
query: { |
||||||
|
cid: course.value.id, |
||||||
|
sid: session.value?.id, |
||||||
|
parentResourceNodeId: course.value.resourceNode.id, |
||||||
|
ctoolIntroId: intro.value.iid, |
||||||
|
}, |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
const goToIntroUpdate = () => { |
||||||
|
router.push({ |
||||||
|
name: "ToolIntroUpdate", |
||||||
|
params: { |
||||||
|
id: `/api/c_tool_intros/${intro.value.iid}`, |
||||||
|
}, |
||||||
|
query: { |
||||||
|
cid: course.value.id, |
||||||
|
sid: session.value?.id, |
||||||
|
ctoolintroIid: intro.value.iid, |
||||||
|
ctoolId: intro.value.c_tool.iid, |
||||||
|
parentResourceNodeId: course.value.resourceNode.id, |
||||||
|
id: `/api/c_tool_intros/${intro.value.iid}`, |
||||||
|
}, |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
const goToCreateOrUpdate = () => { |
||||||
|
if (intro.value.createInSession) { |
||||||
|
goToIntroCreate() |
||||||
|
|
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
goToIntroUpdate() |
||||||
|
} |
||||||
|
|
||||||
|
defineExpose({ |
||||||
|
introduction: intro, |
||||||
|
goToCreateOrUpdate, |
||||||
|
}) |
||||||
|
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<div |
||||||
|
v-if="intro" |
||||||
|
class="mb-4" |
||||||
|
> |
||||||
|
<div |
||||||
|
v-if="intro.introText" |
||||||
|
v-html="intro.introText" |
||||||
|
/> |
||||||
|
<EmptyState |
||||||
|
v-else |
||||||
|
:detail="t('Add a course introduction to display to your students.')" |
||||||
|
:summary="t('You don\'t have any course content yet.')" |
||||||
|
icon="courses" |
||||||
|
> |
||||||
|
<BaseButton |
||||||
|
:label="t('Course introduction')" |
||||||
|
class="mt-4" |
||||||
|
icon="plus" |
||||||
|
type="primary" |
||||||
|
@click="goToIntroCreate" |
||||||
|
/> |
||||||
|
</EmptyState> |
||||||
|
</div> |
||||||
|
<Skeleton |
||||||
|
v-else |
||||||
|
class="mb-4" |
||||||
|
height="21.5rem" |
||||||
|
/> |
||||||
|
</template> |
||||||
Loading…
Reference in new issue