diff options
Diffstat (limited to 'resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue')
| -rw-r--r-- | resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue b/resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue index dd5d180..7dd30f0 100644 --- a/resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue +++ b/resources/vue/components/courseware/blocks/CoursewareImageMapBlock.vue @@ -26,9 +26,8 @@ :shape="area.shape" :coords="area.coords" :title="area.title" - :href="area.external_target" + :href="area.href" :target="area.link_target" - v-on="area.target_type === 'internal' ? {click: () => areaLink(area.internal_target)} : {}" /> </map> <div @@ -266,7 +265,7 @@ import BlockComponents from './block-components.js'; import blockMixin from '@/vue/mixins/courseware/block.js'; import VueResizeable from 'vue-resizable'; -import {mapActions, mapGetters} from 'vuex'; +import { mapActions, mapGetters } from 'vuex'; export default { name: 'courseware-image-map-block', @@ -331,6 +330,9 @@ export default { return ''; } }, + inCourseContext() { + return this.studipContext.type === 'courses'; + }, }, mounted() { this.initCurrentData(); @@ -349,7 +351,7 @@ export default { }, async loadFile() { const id = this.currentFileId; - if (id === '') { + if (!id) { return; } await this.loadFileRef({ id }); @@ -409,10 +411,8 @@ export default { } this.drawShapes(); - if (this.$refs.canvas.length === 0) { - this.image_from_canvas = this.context.canvas.toDataURL('image/jpeg', 1.0); - this.mapImage(); - } + this.image_from_canvas = this.context.canvas.toDataURL('image/jpeg', 1.0); + this.mapImage(); }; }, drawShapes() { @@ -539,6 +539,7 @@ export default { let coords = ''; let x = 0; let y = 0; + let internalURL = ''; area.id = 'shape-' + key; switch (shape.type) { @@ -564,29 +565,25 @@ export default { break; } area.title = shape.title; - if (shape.link_type === 'external') { - area.external_target = shape.target_external; - } else { - area.external_target = '#'; - } + if (shape.link_type === 'internal') { - area.internal_target = shape.target_internal; - } else { - area.internal_target = ''; + if (this.inCourseContext) { + internalURL = STUDIP.URLHelper.getURL(`dispatch.php/course/courseware/courseware/${this.studipContext.unit}?cid=${this.studipContext.id}#/structural_element/${shape.target_internal}`); + } else { + internalURL = STUDIP.URLHelper.getURL(`dispatch.php/contents/courseware/courseware/${this.studipContext.unit}?cid=${this.studipContext.id}#/structural_element/${shape.target_internal}`); + } } if (shape.link_type === 'external') { area.link_target = '_blank'; } else { area.link_target = '_self'; } + area.href = shape.link_type === 'external' ? shape.target_external : internalURL; area.link_type = shape.link_type; area.target_type = shape.link_type; this.areas.push(area); }); }, - areaLink(target) { - this.$router.push(target); - }, //edit methods addShape(addtype) { |
