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