From 5ae47029a3e5f759ed301d78e346bbb7f8191622 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Mon, 29 Jul 2019 11:09:51 +0200 Subject: [PATCH] Hide content blocks for teachers when not in edit mode --- client/src/components/Chapter.vue | 28 ++++++++++++++++++++++++-- client/src/components/ContentBlock.vue | 14 +++---------- client/src/helpers/content-block.js | 14 +++++++++++++ 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/client/src/components/Chapter.vue b/client/src/components/Chapter.vue index 19a50389..e7de2161 100644 --- a/client/src/components/Chapter.vue +++ b/client/src/components/Chapter.vue @@ -10,7 +10,7 @@ + :key="contentBlock.id" v-for="contentBlock in filteredContentBlocks"> @@ -20,6 +20,8 @@ import AddContentBlockButton from '@/components/AddContentBlockButton'; import {mapGetters} from 'vuex'; + import {isHidden} from '@/helpers/content-block'; + import {meQuery} from '@/graphql/queries'; export default { props: ['chapter', 'index'], @@ -30,8 +32,30 @@ }, computed: { - ...mapGetters(['editModule']) + ...mapGetters(['editModule']), + filteredContentBlocks() { + if (!(this.chapter && this.chapter.contentBlocks)) { + return [] + } + if (this.editModule) { + return this.chapter.contentBlocks; + } + return this.chapter.contentBlocks.filter(contentBlock => !isHidden(contentBlock, this.schoolClass)); + }, + schoolClass() { + return this.me.selectedClass; + }, }, + + data() { + return { + me: {} + } + }, + + apollo: { + me: meQuery + } } diff --git a/client/src/components/ContentBlock.vue b/client/src/components/ContentBlock.vue index 509ee994..8e77b257 100644 --- a/client/src/components/ContentBlock.vue +++ b/client/src/components/ContentBlock.vue @@ -69,6 +69,8 @@ import {mapGetters} from 'vuex'; + import {isHidden} from '@/helpers/content-block'; + const instruments = { base_communication: 'Sprache & Kommunikation', base_society: 'Gesellschaft' @@ -174,17 +176,7 @@ return this.me.selectedClass; }, hidden() { - if (!this.contentBlock.id || !this.contentBlock.visibleFor || !this.contentBlock.hiddenFor) { - return false; - } - if (this.contentBlock.userCreated) { - if (this.schoolClass.id === '') { - return false; - } - return !this.contentBlock.visibleFor.map(entry => entry.id).includes(this.schoolClass.id); - } else { - return this.contentBlock.hiddenFor.map(entry => entry.id).includes(this.schoolClass.id); - } + return isHidden(this.contentBlock, this.schoolClass); } }, diff --git a/client/src/helpers/content-block.js b/client/src/helpers/content-block.js index 563cfc1e..bad90b65 100644 --- a/client/src/helpers/content-block.js +++ b/client/src/helpers/content-block.js @@ -1,3 +1,17 @@ export function setUserBlockType(isAssignment) { return isAssignment ? 'TASK' : 'NORMAL'; } + +export const isHidden = (contentBlock, schoolClass) => { + if (!contentBlock.id || !contentBlock.visibleFor || !contentBlock.hiddenFor) { + return false; + } + if (contentBlock.userCreated) { + if (schoolClass.id === '') { + return false; + } + return !contentBlock.visibleFor.map(entry => entry.id).includes(schoolClass.id); + } else { + return contentBlock.hiddenFor.map(entry => entry.id).includes(schoolClass.id); + } +};