diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue index 573da3a00e..d243af8053 100644 --- a/website/client/components/challenges/challengeDetail.vue +++ b/website/client/components/challenges/challengeDetail.vue @@ -57,6 +57,7 @@ :type="column", :key="column", :taskListOverride='tasksByType[column]', + :showOptions="showOptions", @editTask="editTask", @taskDestroyed="taskDestroyed", v-if='tasksByType[column].length > 0') @@ -251,6 +252,9 @@ export default { canJoin () { return !this.isMember; }, + showOptions () { + return this.isLeader; + }, }, mounted () { if (!this.searchId) this.searchId = this.challengeId; diff --git a/website/client/components/group-plans/taskInformation.vue b/website/client/components/group-plans/taskInformation.vue index fbe4516d4f..201d67d71b 100644 --- a/website/client/components/group-plans/taskInformation.vue +++ b/website/client/components/group-plans/taskInformation.vue @@ -41,6 +41,7 @@ :type="column", :key="column", :taskListOverride='tasksByType[column]', + :showOptions="showOptions" v-on:editTask="editTask", v-on:loadGroupCompletedTodos="loadGroupCompletedTodos", v-on:taskDestroyed="taskDestroyed", @@ -176,6 +177,9 @@ export default { if (!this.group) return false; return this.group.leader && this.group.leader._id === this.user._id || this.group.managers && Boolean(this.group.managers[this.user._id]); }, + showOptions () { + return this.canCreateTasks; + }, }, methods: { async load () { diff --git a/website/client/components/tasks/column.vue b/website/client/components/tasks/column.vue index ebcdb873b6..a25d4567ad 100644 --- a/website/client/components/tasks/column.vue +++ b/website/client/components/tasks/column.vue @@ -45,6 +45,7 @@ v-for="task in taskList", :key="task.id", :task="task", :isUser="isUser", + :showOptions="showOptions" @editTask="editTask", @moveTo="moveTo", :group='group', @@ -311,6 +312,10 @@ export default { selectedTags: {}, taskListOverride: {}, group: {}, + showOptions: { + type: Boolean, + default: true, + }, }, // @TODO: maybe we should store the group on state? data () { const icons = Object.freeze({ diff --git a/website/client/components/tasks/task.vue b/website/client/components/tasks/task.vue index c7a7221f92..a9624dd660 100644 --- a/website/client/components/tasks/task.vue +++ b/website/client/components/tasks/task.vue @@ -19,7 +19,7 @@ .d-flex.justify-content-between h3.task-title(:class="{ 'has-notes': task.notes }", v-markdown="task.text") menu-dropdown.task-dropdown( - v-if="!isRunningYesterdailies", + v-if="!isRunningYesterdailies && showOptions", :right="task.type === 'reward'", ref="taskDropdown", v-b-tooltip.hover.top="$t('options')" @@ -555,7 +555,7 @@ export default { directives: { markdown: markdownDirective, }, - props: ['task', 'isUser', 'group', 'dueDate'], // @TODO: maybe we should store the group on state? + props: ['task', 'isUser', 'group', 'dueDate', 'showOptions'], // @TODO: maybe we should store the group on state? data () { return { random: uuid.v4(), // used to avoid conflicts between checkboxes ids