diff --git a/kolibri/plugins/coach/assets/src/composables/useFetchContentNode.js b/kolibri/plugins/coach/assets/src/composables/useFetchContentNode.js new file mode 100644 index 00000000000..5da15d364b9 --- /dev/null +++ b/kolibri/plugins/coach/assets/src/composables/useFetchContentNode.js @@ -0,0 +1,41 @@ +import { ref, getCurrentInstance } from 'vue'; +import ContentNodeResource from 'kolibri-common/apiResources/ContentNodeResource'; + +export default function useFetchContentNode(contentId) { + const contentNode = ref({}); + const ancestors = ref([]); + const questions = ref([]); + const loading = ref(true); + const store = getCurrentInstance().proxy.$store; + + const fetchContentNode = async () => { + ContentNodeResource.fetchModel({ + id: contentId, + getParams: { no_available_filtering: true }, + }) + .then(node => { + loading.value = false; + contentNode.value = node; + + if (node.ancestors.length) { + ancestors.value = node.ancestors; + } + + if (node.assessmentmetadata) { + questions.value = node.assessmentmetadata.assessment_item_ids; + } + }) + .catch(error => { + store.dispatch('handleApiError', { error }); + }); + }; + + fetchContentNode(); + + return { + loading, + ancestors, + contentNode, + questions, + }; +} diff --git a/kolibri/plugins/coach/assets/src/routes/lessonsRoutes.js b/kolibri/plugins/coach/assets/src/routes/lessonsRoutes.js index 4f81298cf42..82a87013979 100644 --- a/kolibri/plugins/coach/assets/src/routes/lessonsRoutes.js +++ b/kolibri/plugins/coach/assets/src/routes/lessonsRoutes.js @@ -37,7 +37,7 @@ import { import LessonLearnerExercisePage from '../views/lessons/reports/LessonLearnerExercisePage.vue'; import QuestionLearnersPage from '../views/common/reports/QuestionLearnersPage.vue'; import EditLessonDetails from '../views/lessons/LessonSummaryPage/sidePanels/EditLessonDetails'; -import PreviewSelectedResources from '../views/lessons/LessonSummaryPage/sidePanels/PreviewSelectedResources'; +import PreviewSelectedResources from '../views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/subPages/PreviewSelectedResources'; import LessonResourceSelection from '../views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/index.vue'; import SearchFilters from '../views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/subPages/SearchFilters.vue'; import SelectionIndex from '../views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/subPages/SelectionIndex.vue'; @@ -172,6 +172,17 @@ export default [ path: 'preview-resources', component: ManageSelectedResources, }, + { + name: PageNames.LESSON_PREVIEW_RESOURCE, + path: 'preview', + component: PreviewSelectedResources, + props: toRoute => { + const contentId = toRoute.query.contentId; + return { + contentId, + }; + }, + }, ], }, { diff --git a/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/UpdatedResourceSelection.vue b/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/UpdatedResourceSelection.vue index 08c64593ac1..e22f7e01109 100644 --- a/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/UpdatedResourceSelection.vue +++ b/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/UpdatedResourceSelection.vue @@ -37,7 +37,7 @@ import { ContentNodeKinds } from 'kolibri/constants'; import ContentCardList from '../../lessons/LessonResourceSelectionPage/ContentCardList.vue'; import ResourceSelectionBreadcrumbs from '../../lessons/LessonResourceSelectionPage/SearchTools/ResourceSelectionBreadcrumbs.vue'; - import { ViewMoreButtonStates } from '../../../constants'; + import { ViewMoreButtonStates, PageNames } from '../../../constants'; export default { name: 'UpdatedResourceSelection', @@ -148,12 +148,18 @@ }, methods: { contentLink(content) { - const { name, params, query } = this.$route; + const { params, query } = this.$route; if (!content.is_leaf) { return this.topicsLink(content.id); } - // Just return the current route; router-link will handle the no-op from here - return { name, params, query }; + return { + name: PageNames.LESSON_PREVIEW_RESOURCE, + params: params, + query: { + ...query, + contentId: content.id, + }, + }; }, topicsLink(topicId) { const route = this.getTopicLink?.(topicId); diff --git a/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/index.vue b/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/index.vue index 8ff6e6c79ef..42d9e925a43 100644 --- a/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/index.vue +++ b/kolibri/plugins/coach/assets/src/views/lessons/LessonSummaryPage/sidePanels/LessonResourceSelection/index.vue @@ -21,7 +21,6 @@
+ {{ coreString('selectFromChannels') }} +
+ +