diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index c78f243ff62..c7b9c56c1a5 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -39,6 +39,41 @@ review-docs-cleanup: script: - ./scripts/trigger-build.rb docs cleanup +.review-docs-hugo: + extends: + - .default-retry + - .docs:rules:review-docs + image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine + stage: review + needs: [] + variables: + GIT_DEPTH: 1 + # By default, deploy the Review App using the `main` branch of the `gitlab-org/technical-writing-group/gitlab-docs-hugo` project + DOCS_BRANCH: main + environment: + name: review-docs/mr-${CI_MERGE_REQUEST_IID}-hugo + auto_stop_in: 2 weeks + url: https://new.docs.gitlab.com/upstream-review-mr-${DOCS_GITLAB_REPO_SUFFIX}-${CI_MERGE_REQUEST_IID} + on_stop: review-docs-hugo-cleanup + before_script: + - source ./scripts/utils.sh + - install_gitlab_gem + +# Deploy documentation review app by using GitLab Docs Hugo project (gitlab-org/technical-writing-group/gitlab-docs-hugo) +review-docs-hugo-deploy: + extends: .review-docs-hugo + script: + - ./scripts/trigger-build.rb docs-hugo deploy + +# Cleanup remote environment of gitlab-org/technical-writing-group/gitlab-docs-hugo +review-docs-hugo-cleanup: + extends: .review-docs-hugo + environment: + name: review-docs/mr-${CI_MERGE_REQUEST_IID}-hugo + action: stop + script: + - ./scripts/trigger-build.rb docs-hugo cleanup + .docs-markdown-lint-image: # When updating the image version here, update it in /scripts/lint-doc.sh too. image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.20-vale-3.7.1-markdownlint2-0.14.0-lychee-0.15.1 diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml index ff92e46df6d..e294578b4ec 100644 --- a/.rubocop_todo/layout/argument_alignment.yml +++ b/.rubocop_todo/layout/argument_alignment.yml @@ -2,7 +2,6 @@ # Cop supports --autocorrect. Layout/ArgumentAlignment: Exclude: - - 'ee/app/services/ee/issues/clone_service.rb' - 'ee/app/services/ee/keys/create_service.rb' - 'ee/app/services/ee/projects/create_from_template_service.rb' - 'ee/app/services/ee/projects/gitlab_projects_import_service.rb' diff --git a/app/assets/javascripts/custom_emoji/components/list.vue b/app/assets/javascripts/custom_emoji/components/list.vue index a41d1bc30f3..cd8b5493ca1 100644 --- a/app/assets/javascripts/custom_emoji/components/list.vue +++ b/app/assets/javascripts/custom_emoji/components/list.vue @@ -45,7 +45,7 @@ export default { return { text: __('New custom emoji'), attributes: { - variant: 'info', + variant: 'confirm', to: '/new', }, }; diff --git a/app/assets/javascripts/environments/components/stop_stale_environments_modal.vue b/app/assets/javascripts/environments/components/stop_stale_environments_modal.vue index 57873b28d37..9d5680f6f95 100644 --- a/app/assets/javascripts/environments/components/stop_stale_environments_modal.vue +++ b/app/assets/javascripts/environments/components/stop_stale_environments_modal.vue @@ -39,7 +39,6 @@ export default { modalProps: { primary: { text: s__('Environments|Clean up'), - attributes: [{ variant: 'info' }], }, cancel: { text: __('Cancel'), diff --git a/app/assets/javascripts/projects/settings/repository/branch_rules/components/branch_rule.vue b/app/assets/javascripts/projects/settings/repository/branch_rules/components/branch_rule.vue index ad77e97794c..7f94fd486e5 100644 --- a/app/assets/javascripts/projects/settings/repository/branch_rules/components/branch_rule.vue +++ b/app/assets/javascripts/projects/settings/repository/branch_rules/components/branch_rule.vue @@ -1,5 +1,6 @@ @@ -382,31 +353,8 @@ export default { data-testid="dashboard-description" >

- - - - - - - + {{ dashboardDescription }} +

diff --git a/app/assets/javascripts/work_items/components/create_work_item_modal.vue b/app/assets/javascripts/work_items/components/create_work_item_modal.vue index d332f1e356e..1383bf70a87 100644 --- a/app/assets/javascripts/work_items/components/create_work_item_modal.vue +++ b/app/assets/javascripts/work_items/components/create_work_item_modal.vue @@ -11,6 +11,7 @@ import { sprintfWorkItem, I18N_WORK_ITEM_ERROR_FETCHING_TYPES, ROUTES, + RELATED_ITEM_ID_URL_QUERY_PARAM, } from '../constants'; import namespaceWorkItemTypesQuery from '../graphql/namespace_work_item_types.query.graphql'; import CreateWorkItem from './create_work_item.vue'; @@ -134,6 +135,7 @@ export default { fullPath: this.fullPath, isGroup: this.isGroup, workItemTypeName: this.workItemTypeName, + query: this.relatedItem ? `?${RELATED_ITEM_ID_URL_QUERY_PARAM}=${this.relatedItem.id}` : '', }); }, newWorkItemText() { @@ -202,7 +204,10 @@ export default { event.preventDefault(); if (this.useVueRouter) { - this.$router.push({ name: ROUTES.new }); + this.$router.push({ + name: ROUTES.new, + query: { [RELATED_ITEM_ID_URL_QUERY_PARAM]: this.relatedItem?.id }, + }); } else { visitUrl(this.newWorkItemPath); } diff --git a/app/assets/javascripts/work_items/components/work_item_actions.vue b/app/assets/javascripts/work_items/components/work_item_actions.vue index e0182c773c9..def6a7a5f9b 100644 --- a/app/assets/javascripts/work_items/components/work_item_actions.vue +++ b/app/assets/javascripts/work_items/components/work_item_actions.vue @@ -188,6 +188,10 @@ export default { required: false, default: false, }, + isGroup: { + type: Boolean, + required: true, + }, }, data() { return { @@ -551,6 +555,7 @@ export default { :related-item="relatedItemData" :work-item-type-name="workItemType.toUpperCase()" :show-project-selector="!isEpic" + :is-group="isGroup" hide-button @workItemCreated="$emit('workItemCreated')" @hideModal="isCreateWorkItemModalVisible = false" diff --git a/app/assets/javascripts/work_items/components/work_item_detail.vue b/app/assets/javascripts/work_items/components/work_item_detail.vue index 2ba539f6722..33387062895 100644 --- a/app/assets/javascripts/work_items/components/work_item_detail.vue +++ b/app/assets/javascripts/work_items/components/work_item_detail.vue @@ -676,6 +676,7 @@ export default { :is-sticky-header-showing="isStickyHeaderShowing" :work-item-notifications-subscribed="workItemNotificationsSubscribed" :work-item-author-id="workItemAuthorId" + :is-group="isGroupWorkItem" @hideStickyHeader="hideStickyHeader" @showStickyHeader="showStickyHeader" @deleteWorkItem="$emit('deleteWorkItem', { workItemType, workItemId: workItem.id })" @@ -773,6 +774,7 @@ export default { :has-children="hasChildren" :work-item-author-id="workItemAuthorId" :can-create-related-item="workItemLinkedItems !== undefined" + :is-group="isGroupWorkItem" @deleteWorkItem="$emit('deleteWorkItem', { workItemType, workItemId: workItem.id })" @toggleWorkItemConfidentiality="toggleConfidentiality" @error="updateError = $event" diff --git a/app/assets/javascripts/work_items/components/work_item_sticky_header.vue b/app/assets/javascripts/work_items/components/work_item_sticky_header.vue index 3421792259e..12f619e7b86 100644 --- a/app/assets/javascripts/work_items/components/work_item_sticky_header.vue +++ b/app/assets/javascripts/work_items/components/work_item_sticky_header.vue @@ -71,6 +71,10 @@ export default { required: false, default: 0, }, + isGroup: { + type: Boolean, + required: true, + }, }, computed: { canUpdate() { @@ -175,6 +179,7 @@ export default { :work-item-state="workItem.state" :is-modal="isModal" :work-item-author-id="workItemAuthorId" + :is-group="isGroup" @deleteWorkItem="$emit('deleteWorkItem')" @toggleWorkItemConfidentiality=" $emit('toggleWorkItemConfidentiality', !workItem.confidential) diff --git a/app/assets/javascripts/work_items/constants.js b/app/assets/javascripts/work_items/constants.js index a424d2847b4..be29637931c 100644 --- a/app/assets/javascripts/work_items/constants.js +++ b/app/assets/javascripts/work_items/constants.js @@ -344,6 +344,7 @@ export const DEFAULT_EPIC_COLORS = '#1068bf'; export const MAX_FREQUENT_PROJECTS = 3; export const CREATE_NEW_WORK_ITEM_MODAL = 'create_new_work_item_modal'; +export const RELATED_ITEM_ID_URL_QUERY_PARAM = 'related_item_id'; export const WORK_ITEM_REFERENCE_CHAR = '#'; diff --git a/app/assets/javascripts/work_items/graphql/work_item_related_item.query.graphql b/app/assets/javascripts/work_items/graphql/work_item_related_item.query.graphql new file mode 100644 index 00000000000..c820a825a7d --- /dev/null +++ b/app/assets/javascripts/work_items/graphql/work_item_related_item.query.graphql @@ -0,0 +1,10 @@ +query workItemRelatedItem($id: WorkItemID!) { + workItem(id: $id) { + id + reference + workItemType { + id + name + } + } +} diff --git a/app/assets/javascripts/work_items/pages/create_work_item.vue b/app/assets/javascripts/work_items/pages/create_work_item.vue index 206cc819574..331e8637b3e 100644 --- a/app/assets/javascripts/work_items/pages/create_work_item.vue +++ b/app/assets/javascripts/work_items/pages/create_work_item.vue @@ -1,7 +1,8 @@