blob: f305afce4ecbf7a4288e857d86160eac7620ee90 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<template>
<div class="cw-shared-items">
<h2 v-if="sharedElements.length > 0">{{ $gettext('Geteilte Lernmaterialien') }}</h2>
<ul class="cw-tiles">
<CoursewareTile
v-for="element in sharedElements"
:key="element.id"
tag="li"
:color="element.attributes.payload.color"
:title="element.attributes.title"
:descriptionLink="getSharedElementUrl(element.id)"
:descriptionTitle="$gettext('Lernmaterial öffnen')"
:displayProgress="false"
:progress="0"
:imageUrl="element.relationships.image?.meta?.['download-url']"
>
<template #image-overlay>
{{ getOwnerName(element) }}
</template>
<template #description>
{{ element.attributes.payload.description }}
</template>
</CoursewareTile>
</ul>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import CoursewareTile from '../layouts/CoursewareTile.vue';
export default {
name: 'courseware-shared-items',
components: {
CoursewareTile,
},
computed: {
...mapGetters({
sharedElements: 'courseware-structural-elements-shared/all',
userById: 'users/byId',
}),
},
methods: {
getChildStyle(child) {
let url = child.relationships?.image?.meta?.['download-url'];
if (url) {
return { 'background-image': 'url(' + url + ')' };
} else {
return {};
}
},
getSharedElementUrl(elementId) {
return (
STUDIP.URLHelper.base_url + 'dispatch.php/contents/courseware/shared_content_courseware/' + elementId
);
},
getOwnerName(element) {
const ownerId = element.relationships.owner.data.id;
const owner = this.userById({ id: ownerId });
return owner.attributes['formatted-name'];
},
},
};
</script>
|