From e0ab3ed5545df468411f1b8675de6873ed57e595 Mon Sep 17 00:00:00 2001 From: Fatih Acet Date: Sat, 18 Aug 2018 01:05:22 +0200 Subject: Disable Web IDE button if user is not allowed to push the source branch. --- .../components/mr_widget_header.vue | 42 +++++++++++++++----- changelogs/unreleased/_acet-disable-ide-button.yml | 5 +++ locale/gitlab.pot | 3 ++ .../components/mr_widget_header_spec.js | 45 ++++++++++++++-------- 4 files changed, 69 insertions(+), 26 deletions(-) create mode 100644 changelogs/unreleased/_acet-disable-ide-button.yml diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue index 72bd28ae03f..4c3f8dff3c4 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_header.vue @@ -4,6 +4,7 @@ import { n__, s__, sprintf } from '~/locale'; import { mergeUrlParams, webIDEUrl } from '~/lib/utils/url_utility'; import Icon from '~/vue_shared/components/icon.vue'; import clipboardButton from '~/vue_shared/components/clipboard_button.vue'; +import tooltip from '~/vue_shared/directives/tooltip'; import TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate.vue'; export default { @@ -13,6 +14,9 @@ export default { clipboardButton, TooltipOnTruncate, }, + directives: { + tooltip, + }, props: { mr: { type: Object, @@ -40,10 +44,19 @@ export default { }); }, webIdePath() { - return mergeUrlParams({ - target_project: this.mr.sourceProjectFullPath !== this.mr.targetProjectFullPath ? - this.mr.targetProjectFullPath : '', - }, webIDEUrl(`/${this.mr.sourceProjectFullPath}/merge_requests/${this.mr.iid}`)); + if (this.mr.canPushToSourceBranch) { + return mergeUrlParams({ + target_project: this.mr.sourceProjectFullPath !== this.mr.targetProjectFullPath ? + this.mr.targetProjectFullPath : '', + }, webIDEUrl(`/${this.mr.sourceProjectFullPath}/merge_requests/${this.mr.iid}`)); + } + + return null; + }, + ideButtonTitle() { + return !this.mr.canPushToSourceBranch + ? s__('mrWidget|You are not allowed to edit this project directly. Please fork to make changes.') + : ''; }, }, }; @@ -93,13 +106,22 @@ export default { v-if="mr.isOpen" class="branch-actions" > - - {{ s__("mrWidget|Open in Web IDE") }} - + + {{ s__("mrWidget|Open in Web IDE") }} + +