aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/components/courseware/CoursewareViewWidget.vue
blob: f6ab44c21e5736cb41f65d1345f4321786008aa5 (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<template>
    <sidebar-widget :title="$gettext('Ansichten')" v-if="structuralElement">
        <template #content>
            <ul class="widget-list widget-links sidebar-views cw-view-widget">
                <li :class="{ active: readView }">
                    <button @click="setReadView">
                        <translate>Lesen</translate>
                    </button>
                </li>
                <li
                    v-if="canEdit"
                    :class="{ active: editView }"
                >
                    <button @click="setEditView">
                        <translate>Bearbeiten</translate>
                    </button>
                </li>
                <li
                    v-if="context.type === 'courses' && canVisit"
                    :class="{ active: discussView }"
                >
                    <button @click="setDiscussView">
                        <translate>Kommentieren</translate>
                    </button>
                </li>
            </ul>
        </template>
    </sidebar-widget>
</template>

<script>
import SidebarWidget from '../SidebarWidget.vue';
import { mapActions, mapGetters } from 'vuex';

export default {
    name: 'courseware-view-widget',
    props: ['structuralElement', 'canVisit'],
    components: {
        SidebarWidget
    },
    computed: {
        ...mapGetters({
            viewMode: 'viewMode',
            context: 'context',
        }),
        readView() {
            return this.viewMode === 'read';
        },
        editView() {
            return this.viewMode === 'edit';
        },
        discussView() {
            return this.viewMode === 'discuss';
        },
        canEdit() {
            if (!this.structuralElement) {
                return false;
            }
            return this.structuralElement.attributes['can-edit'];
        },
    },
    methods: {
        ...mapActions({
            coursewareViewMode: 'coursewareViewMode',
            coursewareBlockAdder: 'coursewareBlockAdder',
            setToolbarItem: 'coursewareSelectedToolbarItem',
        }),
        setReadView() {
            this.coursewareViewMode('read');
            this.setToolbarItem('contents');
            this.coursewareBlockAdder({});
        },
        setEditView() {
            this.coursewareViewMode('edit');
        },
        setDiscussView() {
            this.coursewareViewMode('discuss');
        },
    },
};
</script>