Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-05-17 17:48:15 +0300
committerPhil Hughes <me@iamphill.com>2017-05-17 17:48:15 +0300
commit4f0849f2fd1427b21bd6a043223f49d0c77fa3a3 (patch)
tree0c5922905959b40f17f3825764e94b9c27436f8e /app/assets/javascripts/issue_show
parent3301ca10552e7d95d7fb5108a180caa38ddfb9c5 (diff)
parent81c69c288b626a5bea2d5abddfe5dab1107e35e1 (diff)
Merge branch 'issue-edit-inline' into issue-edit-inline-description-template
[ci skip]
Diffstat (limited to 'app/assets/javascripts/issue_show')
-rw-r--r--app/assets/javascripts/issue_show/components/app.vue13
-rw-r--r--app/assets/javascripts/issue_show/components/edit_actions.vue13
-rw-r--r--app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue23
-rw-r--r--app/assets/javascripts/issue_show/components/form.vue5
-rw-r--r--app/assets/javascripts/issue_show/index.js4
-rw-r--r--app/assets/javascripts/issue_show/stores/index.js1
6 files changed, 55 insertions, 4 deletions
diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue
index 37326d2ae5b..9cd454e9f73 100644
--- a/app/assets/javascripts/issue_show/components/app.vue
+++ b/app/assets/javascripts/issue_show/components/app.vue
@@ -46,6 +46,10 @@ export default {
required: false,
default: () => [],
},
+ isConfidential: {
+ type: Boolean,
+ required: true,
+ },
markdownPreviewUrl: {
type: String,
required: true,
@@ -91,6 +95,7 @@ export default {
this.showForm = true;
this.store.formState = {
title: this.state.titleText,
+ confidential: this.isConfidential,
description: this.state.descriptionText,
};
},
@@ -99,7 +104,13 @@ export default {
},
updateIssuable() {
this.service.updateIssuable(this.store.formState)
- .then(() => {
+ .then((res) => {
+ const data = res.json();
+
+ if (data.confidential !== this.isConfidential) {
+ location.reload();
+ }
+
eventHub.$emit('close.form');
})
.catch(() => {
diff --git a/app/assets/javascripts/issue_show/components/edit_actions.vue b/app/assets/javascripts/issue_show/components/edit_actions.vue
index 4cefb236d32..e57b867f93b 100644
--- a/app/assets/javascripts/issue_show/components/edit_actions.vue
+++ b/app/assets/javascripts/issue_show/components/edit_actions.vue
@@ -7,6 +7,10 @@
type: Boolean,
required: true,
},
+ formState: {
+ type: Object,
+ required: true,
+ },
},
data() {
return {
@@ -14,6 +18,11 @@
updateLoading: false,
};
},
+ computed: {
+ isSubmitEnabled() {
+ return this.formState.title.trim() !== '';
+ },
+ },
methods: {
updateIssuable() {
this.updateLoading = true;
@@ -38,9 +47,9 @@
<div class="prepend-top-default append-bottom-default clearfix">
<button
class="btn btn-save pull-left"
- :class="{ disabled: updateLoading }"
+ :class="{ disabled: updateLoading || !isSubmitEnabled }"
type="submit"
- :disabled="updateLoading"
+ :disabled="updateLoading || !isSubmitEnabled"
@click="updateIssuable">
Save changes
<i
diff --git a/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue b/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue
new file mode 100644
index 00000000000..a0ff08e9111
--- /dev/null
+++ b/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue
@@ -0,0 +1,23 @@
+<script>
+ export default {
+ props: {
+ formState: {
+ type: Object,
+ required: true,
+ },
+ },
+ };
+</script>
+
+<template>
+ <fieldset class="checkbox">
+ <label for="issue-confidential">
+ <input
+ type="checkbox"
+ value="1"
+ id="issue-confidential"
+ v-model="formState.confidential" />
+ This issue is confidential and should only be visible to team members with at least Reporter access.
+ </label>
+ </fieldset>
+</template>
diff --git a/app/assets/javascripts/issue_show/components/form.vue b/app/assets/javascripts/issue_show/components/form.vue
index 429cb9fdf50..facdca4072d 100644
--- a/app/assets/javascripts/issue_show/components/form.vue
+++ b/app/assets/javascripts/issue_show/components/form.vue
@@ -3,6 +3,7 @@
import descriptionField from './fields/description.vue';
import editActions from './edit_actions.vue';
import descriptionTemplate from './fields/description_template.vue';
+ import confidentialCheckbox from './fields/confidential_checkbox.vue';
export default {
props: {
@@ -41,6 +42,7 @@
descriptionField,
descriptionTemplate,
editActions,
+ confidentialCheckbox,
},
computed: {
hasIssuableTemplates() {
@@ -76,7 +78,10 @@
:form-state="formState"
:markdown-preview-url="markdownPreviewUrl"
:markdown-docs="markdownDocs" />
+ <confidential-checkbox
+ :form-state="formState" />
<edit-actions
+ :form-state="formState"
:can-destroy="canDestroy" />
</form>
</template>
diff --git a/app/assets/javascripts/issue_show/index.js b/app/assets/javascripts/issue_show/index.js
index fdfd9732a91..f368dd5902c 100644
--- a/app/assets/javascripts/issue_show/index.js
+++ b/app/assets/javascripts/issue_show/index.js
@@ -27,6 +27,7 @@ document.addEventListener('DOMContentLoaded', () => {
canDestroy,
endpoint,
issuableRef,
+ isConfidential,
markdownPreviewUrl,
markdownDocs,
} = issuableElement.dataset;
@@ -39,7 +40,7 @@ document.addEventListener('DOMContentLoaded', () => {
initialTitle: issuableTitleElement.innerHTML,
initialDescriptionHtml: issuableDescriptionElement ? issuableDescriptionElement.innerHTML : '',
initialDescriptionText: issuableDescriptionTextarea ? issuableDescriptionTextarea.textContent : '',
- issuableTemplates: initialData.templates,
+ isConfidential: gl.utils.convertPermissionToBoolean(isConfidential),
markdownPreviewUrl,
markdownDocs,
projectPath: initialData.project_path,
@@ -57,6 +58,7 @@ document.addEventListener('DOMContentLoaded', () => {
initialDescriptionHtml: this.initialDescriptionHtml,
initialDescriptionText: this.initialDescriptionText,
issuableTemplates: this.issuableTemplates,
+ isConfidential: this.isConfidential,
markdownPreviewUrl: this.markdownPreviewUrl,
markdownDocs: this.markdownDocs,
projectPath: this.projectPath,
diff --git a/app/assets/javascripts/issue_show/stores/index.js b/app/assets/javascripts/issue_show/stores/index.js
index 3232875000d..d90716bef80 100644
--- a/app/assets/javascripts/issue_show/stores/index.js
+++ b/app/assets/javascripts/issue_show/stores/index.js
@@ -14,6 +14,7 @@ export default class Store {
};
this.formState = {
title: '',
+ confidential: false,
description: '',
};
}