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
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-09 18:09:27 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-09 18:09:27 +0300
commitbe769d5fcced48143e92f83c997b7d5ba14873e1 (patch)
tree985b5acc88e4c235771bc19f5e9e7c746deaf9b3 /app
parent3fd585614449ccab7fdab083f210c09eb16a6ed2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/graphql_shared/possible_types.json1
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue3
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue3
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue19
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/browser_support_alert.vue5
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/sign_in_oauth_button.vue1
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue6
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/components/user_link.vue1
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/constants.js24
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_com.vue6
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/index.vue6
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/self_managed_alert.vue4
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/setup_instructions.vue4
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/version_select_form.vue6
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_page.vue1
-rw-r--r--app/assets/javascripts/jira_connect/subscriptions/pages/subscriptions_page.vue6
-rw-r--r--app/assets/javascripts/notes/components/note_header.vue3
-rw-r--r--app/assets/javascripts/work_items/components/work_item_assignees.vue10
-rw-r--r--app/controllers/organizations/application_controller.rb21
-rw-r--r--app/controllers/organizations/organizations_controller.rb11
-rw-r--r--app/helpers/issuables_helper.rb6
-rw-r--r--app/models/organizations/organization.rb4
-rw-r--r--app/policies/organizations/organization_policy.rb9
-rw-r--r--app/views/organizations/organizations/directory.html.haml2
-rw-r--r--app/views/projects/issues/service_desk/_issue.html.haml1
-rw-r--r--app/views/projects/merge_requests/_merge_request.html.haml1
26 files changed, 110 insertions, 54 deletions
diff --git a/app/assets/javascripts/graphql_shared/possible_types.json b/app/assets/javascripts/graphql_shared/possible_types.json
index c7a446b36f8..cf3a0003cd1 100644
--- a/app/assets/javascripts/graphql_shared/possible_types.json
+++ b/app/assets/javascripts/graphql_shared/possible_types.json
@@ -151,6 +151,7 @@
"VulnerabilityDetailList",
"VulnerabilityDetailMarkdown",
"VulnerabilityDetailModuleLocation",
+ "VulnerabilityDetailNamedList",
"VulnerabilityDetailTable",
"VulnerabilityDetailText",
"VulnerabilityDetailUrl"
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue
index 0b286bc903f..58b15b3eed1 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue
@@ -14,10 +14,11 @@ export default {
ADD_NAMESPACE_MODAL_ID,
};
</script>
+
<template>
<div>
<gl-button v-gl-modal="$options.ADD_NAMESPACE_MODAL_ID" category="primary" variant="info">
- {{ s__('Integrations|Add namespace') }}
+ {{ s__('JiraConnect|Link groups') }}
</gl-button>
<add-namespace-modal />
</div>
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue
index 0e209a09b16..b2700c660b1 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue
@@ -8,13 +8,14 @@ export default {
components: { GlModal, GroupsList },
modal: {
id: ADD_NAMESPACE_MODAL_ID,
- title: s__('Integrations|Link namespaces'),
+ title: s__('JiraConnect|Link groups'),
cancelProps: {
text: __('Cancel'),
},
},
};
</script>
+
<template>
<gl-modal
:modal-id="$options.modal.id"
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue
index a4b728335c5..3d02dcb1198 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue
@@ -65,7 +65,7 @@ export default {
this.groups = response.data;
})
.catch(() => {
- this.errorMessage = s__('Integrations|Failed to load namespaces. Please try again.');
+ this.errorMessage = s__('JiraConnect|Failed to load groups. Please try again.');
})
.finally(() => {
this.isLoadingMore = false;
@@ -102,20 +102,25 @@ export default {
</gl-alert>
<gl-search-box-by-type
- class="gl-mb-5"
+ class="gl-mb-3"
debounce="500"
- :placeholder="__('Search by name')"
+ :placeholder="__('Search groups')"
:is-loading="isLoadingMore"
:value="userSearchTerm"
@input="onGroupSearch"
/>
+ <p class="gl-mb-3">
+ {{
+ s__(
+ 'JiraConnect|Not seeing your groups? Only groups you have at least the Maintainer role for appear here.',
+ )
+ }}
+ </p>
+
<gl-loading-icon v-if="isLoadingInitial" size="lg" />
<div v-else-if="groups.length === 0" class="gl-text-center">
- <h5>{{ s__('Integrations|No available namespaces.') }}</h5>
- <p class="gl-mt-5">
- {{ s__('Integrations|You must have owner or maintainer permissions to link namespaces.') }}
- </p>
+ <h5 class="gl-mt-5">{{ s__('JiraConnect|No groups found.') }}</h5>
</div>
<ul
v-else
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/browser_support_alert.vue b/app/assets/javascripts/jira_connect/subscriptions/components/browser_support_alert.vue
index ea7db5be0c4..d627e8cdd3a 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/browser_support_alert.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/browser_support_alert.vue
@@ -11,14 +11,15 @@ export default {
GlLink,
},
i18n: {
- title: s__('Integrations|Your browser is not supported'),
+ title: s__('JiraConnect|Your browser is not supported'),
body: s__(
- 'Integrations|You must use a %{linkStart}supported browser%{linkEnd} to use the GitLab for Jira app.',
+ 'JiraConnect|You must use a %{linkStart}supported browser%{linkEnd} to use the GitLab for Jira app.',
),
},
DOCS_LINK_URL: helpPagePath('install/requirements', { anchor: 'supported-web-browsers' }),
};
</script>
+
<template>
<gl-alert variant="danger" :title="$options.i18n.title" :dismissible="false">
<gl-sprintf :message="$options.i18n.body">
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/sign_in_oauth_button.vue b/app/assets/javascripts/jira_connect/subscriptions/components/sign_in_oauth_button.vue
index bc8cdf35701..45a39fa5fab 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/sign_in_oauth_button.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/sign_in_oauth_button.vue
@@ -183,6 +183,7 @@ export default {
},
};
</script>
+
<template>
<gl-button
v-bind="$attrs"
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue b/app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue
index 4c039be9ba5..a765040a6e7 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue
@@ -24,11 +24,11 @@ export default {
fields: [
{
key: 'name',
- label: s__('Integrations|Linked namespaces'),
+ label: s__('JiraConnect|Linked groups'),
},
{
key: 'created_at',
- label: __('Added'),
+ label: __('Created on'),
tdClass: 'gl-vertical-align-middle! gl-w-20p',
},
{
@@ -38,7 +38,7 @@ export default {
},
],
i18n: {
- unlinkError: s__('Integrations|Failed to unlink namespace. Please try again.'),
+ unlinkError: s__('JiraConnect|Failed to unlink group. Please try again.'),
},
computed: {
...mapState(['subscriptions']),
diff --git a/app/assets/javascripts/jira_connect/subscriptions/components/user_link.vue b/app/assets/javascripts/jira_connect/subscriptions/components/user_link.vue
index cc0af0b9ab7..1e2c157b58d 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/components/user_link.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/components/user_link.vue
@@ -41,6 +41,7 @@ export default {
},
};
</script>
+
<template>
<div class="gl-font-base">
<gl-sprintf :message="signedInText">
diff --git a/app/assets/javascripts/jira_connect/subscriptions/constants.js b/app/assets/javascripts/jira_connect/subscriptions/constants.js
index 05c315e7b8a..72fd25a6230 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/constants.js
+++ b/app/assets/javascripts/jira_connect/subscriptions/constants.js
@@ -1,4 +1,4 @@
-import { s__ } from '~/locale';
+import { __, s__ } from '~/locale';
import { helpPagePath } from '~/helpers/help_page_helper';
export const DEFAULT_GROUPS_PER_PAGE = 10;
@@ -8,30 +8,30 @@ export const MINIMUM_SEARCH_TERM_LENGTH = 3;
export const ADD_NAMESPACE_MODAL_ID = 'add-namespace-modal';
-export const I18N_DEFAULT_SIGN_IN_BUTTON_TEXT = s__('Integrations|Sign in to GitLab');
-export const I18N_CUSTOM_SIGN_IN_BUTTON_TEXT = s__('Integrations|Sign in to %{url}');
-export const I18N_DEFAULT_SIGN_IN_ERROR_MESSAGE = s__('Integrations|Failed to sign in to GitLab.');
+export const I18N_DEFAULT_SIGN_IN_BUTTON_TEXT = __('Sign in to GitLab');
+export const I18N_CUSTOM_SIGN_IN_BUTTON_TEXT = s__('JiraConnect|Sign in to %{url}');
+export const I18N_DEFAULT_SIGN_IN_ERROR_MESSAGE = s__('JiraConnect|Failed to sign in to GitLab.');
export const I18N_DEFAULT_SUBSCRIPTIONS_ERROR_MESSAGE = s__(
- 'Integrations|Failed to load subscriptions.',
+ 'JiraConnect|Failed to load subscriptions.',
);
export const I18N_ADD_SUBSCRIPTION_SUCCESS_ALERT_TITLE = s__(
- 'Integrations|Namespace successfully linked',
+ 'JiraConnect|Group successfully linked',
);
export const I18N_ADD_SUBSCRIPTION_SUCCESS_ALERT_MESSAGE = s__(
- 'Integrations|You should now see GitLab.com activity inside your Jira Cloud issues. %{linkStart}Learn more%{linkEnd}',
+ 'JiraConnect|You should now see GitLab.com activity inside your Jira Cloud issues. %{linkStart}Learn more%{linkEnd}',
);
export const I18N_ADD_SUBSCRIPTIONS_ERROR_MESSAGE = s__(
- 'Integrations|Failed to link namespace. Please try again.',
+ 'JiraConnect|Failed to link group. Please try again.',
);
export const I18N_UPDATE_INSTALLATION_ERROR_MESSAGE = s__(
- 'Integrations|Failed to update the GitLab instance. See the %{linkStart}troubleshooting documentation%{linkEnd}.',
+ 'JiraConnect|Failed to update the GitLab instance. See the %{linkStart}troubleshooting documentation%{linkEnd}.',
);
export const I18N_OAUTH_APPLICATION_ID_ERROR_MESSAGE = s__(
- 'Integrations|Failed to load Jira Connect Application ID. Please try again.',
+ 'JiraConnect|Failed to load Jira Connect Application ID. Please try again.',
);
-export const I18N_OAUTH_FAILED_TITLE = s__('Integrations|Failed to sign in to GitLab.');
+export const I18N_OAUTH_FAILED_TITLE = s__('JiraConnect|Failed to sign in to GitLab.');
export const I18N_OAUTH_FAILED_MESSAGE = s__(
- 'Integrations|Ensure your instance URL is correct and your instance is configured correctly. %{linkStart}Learn more%{linkEnd}.',
+ 'JiraConnect|Ensure your instance URL is correct and your instance is configured correctly. %{linkStart}Learn more%{linkEnd}.',
);
export const INTEGRATIONS_DOC_LINK = helpPagePath('integration/jira/development_panel', {
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_com.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_com.vue
index 113ce34fdcd..78bdb5caa77 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_com.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_com.vue
@@ -17,8 +17,8 @@ export default {
},
},
i18n: {
- signInButtonTextWithSubscriptions: s__('Integrations|Sign in to add namespaces'),
- signInText: s__('JiraService|Sign in to GitLab to get started.'),
+ signInButtonTextWithSubscriptions: s__('JiraConnect|Sign in to link groups'),
+ signInText: s__('JiraConnect|Sign in to GitLab to get started.'),
},
GITLAB_COM_BASE_PATH,
methods: {
@@ -31,7 +31,7 @@ export default {
<template>
<div>
- <h2 class="gl-text-center gl-mb-7">{{ s__('JiraService|GitLab for Jira Configuration') }}</h2>
+ <h2 class="gl-text-center gl-mb-7">{{ s__('JiraConnect|GitLab for Jira Configuration') }}</h2>
<div v-if="hasSubscriptions">
<div class="gl-display-flex gl-justify-content-end gl-mb-3">
<sign-in-oauth-button
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/index.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/index.vue
index d9ce272563b..e05eb900efa 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/index.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/index.vue
@@ -68,9 +68,9 @@ export default {
},
},
i18n: {
- title: s__('JiraService|Welcome to GitLab for Jira'),
- signInSubtitle: s__('JiraService|Sign in to GitLab to link namespaces.'),
- changeVersionButtonText: s__('JiraService|Change GitLab version'),
+ title: s__('JiraConnect|Welcome to GitLab for Jira'),
+ signInSubtitle: s__('JiraConnect|Sign in to GitLab to link groups.'),
+ changeVersionButtonText: s__('JiraConnect|Change GitLab version'),
},
};
</script>
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/self_managed_alert.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/self_managed_alert.vue
index 8ddbbffa708..cd71ded87b5 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/self_managed_alert.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/self_managed_alert.vue
@@ -7,9 +7,9 @@ export default {
GlAlert,
},
i18n: {
- title: s__('JiraService|Are you a GitLab administrator?'),
+ title: s__('JiraConnect|Are you a GitLab administrator?'),
body: s__(
- "JiraService|Setting up this integration is only possible if you're a GitLab administrator.",
+ "JiraConnect|Setting up this integration is only possible if you're a GitLab administrator.",
),
},
};
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/setup_instructions.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/setup_instructions.vue
index 621bcccd19a..d8d2db18d9f 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/setup_instructions.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/setup_instructions.vue
@@ -13,11 +13,11 @@ export default {
<template>
<div class="gl-mt-5">
- <h3>{{ s__('JiraService|Continue setup in GitLab') }}</h3>
+ <h3>{{ s__('JiraConnect|Continue setup in GitLab') }}</h3>
<p>
{{
s__(
- 'JiraService|In order to complete the set up, you’ll need to complete a few steps in GitLab.',
+ 'JiraConnect|In order to complete the set up, you’ll need to complete a few steps in GitLab.',
)
}}
<gl-link
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/version_select_form.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/version_select_form.vue
index b750608d348..d3770cc310a 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/version_select_form.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_gitlab_multiversion/version_select_form.vue
@@ -85,14 +85,14 @@ export default {
},
radioOptions: RADIO_OPTIONS,
i18n: {
- title: s__('JiraService|What version of GitLab are you using?'),
+ title: s__('JiraConnect|What version of GitLab are you using?'),
saasRadioLabel: __('GitLab.com (SaaS)'),
saasRadioHelp: __('Most common'),
selfManagedRadioLabel: __('GitLab (self-managed)'),
buttonNext: __('Next'),
buttonSave: __('Save'),
- instanceURLInputLabel: s__('JiraService|GitLab instance URL'),
- instanceURLInputDescription: s__('JiraService|For example: https://gitlab.example.com'),
+ instanceURLInputLabel: s__('JiraConnect|GitLab instance URL'),
+ instanceURLInputDescription: s__('JiraConnect|For example: https://gitlab.example.com'),
},
};
</script>
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_page.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_page.vue
index ee20e21011f..87d7f73be2a 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_page.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/sign_in/sign_in_page.vue
@@ -22,6 +22,7 @@ export default {
},
};
</script>
+
<template>
<sign-in-gitlab-multiversion
v-if="isOauthSelfManagedEnabled"
diff --git a/app/assets/javascripts/jira_connect/subscriptions/pages/subscriptions_page.vue b/app/assets/javascripts/jira_connect/subscriptions/pages/subscriptions_page.vue
index d7213f683d8..ac30fa2faa0 100644
--- a/app/assets/javascripts/jira_connect/subscriptions/pages/subscriptions_page.vue
+++ b/app/assets/javascripts/jira_connect/subscriptions/pages/subscriptions_page.vue
@@ -27,7 +27,7 @@ export default {
<template>
<div>
- <h2 class="gl-text-center gl-mb-7">{{ s__('JiraService|GitLab for Jira Configuration') }}</h2>
+ <h2 class="gl-text-center gl-mb-7">{{ s__('JiraConnect|GitLab for Jira Configuration') }}</h2>
<gl-loading-icon v-if="subscriptionsLoading" size="lg" />
<div v-else-if="hasSubscriptions && !subscriptionsError">
@@ -39,10 +39,10 @@ export default {
</div>
<gl-empty-state
v-else
- :title="s__('Integrations|No linked namespaces')"
+ :title="s__('JiraConnect|No linked groups')"
:description="
s__(
- 'Integrations|Namespaces are the GitLab groups and subgroups you link to this Jira instance.',
+ 'JiraConnect|Groups are the GitLab groups and subgroups you link to this Jira instance.',
)
"
>
diff --git a/app/assets/javascripts/notes/components/note_header.vue b/app/assets/javascripts/notes/components/note_header.vue
index 5e776639a7a..83cebb9a0e0 100644
--- a/app/assets/javascripts/notes/components/note_header.vue
+++ b/app/assets/javascripts/notes/components/note_header.vue
@@ -8,8 +8,6 @@ import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
export default {
components: {
TimeAgoTooltip,
- GitlabTeamMemberBadge: () =>
- import('ee_component/vue_shared/components/user_avatar/badges/gitlab_team_member_badge.vue'),
GlIcon,
GlBadge,
GlLoadingIcon,
@@ -199,7 +197,6 @@ export default {
><span class="note-headline-light">@{{ author.username }}</span>
</a>
<slot name="note-header-info"></slot>
- <gitlab-team-member-badge v-if="author && author.is_gitlab_employee" />
</span>
<span v-if="emailParticipant" class="note-headline-light">{{
__('(external participant)')
diff --git a/app/assets/javascripts/work_items/components/work_item_assignees.vue b/app/assets/javascripts/work_items/components/work_item_assignees.vue
index 4e6583b65f8..d0d520ae5b1 100644
--- a/app/assets/javascripts/work_items/components/work_item_assignees.vue
+++ b/app/assets/javascripts/work_items/components/work_item_assignees.vue
@@ -126,8 +126,16 @@ export default {
assigneesTitleId() {
return uniqueId('assignees-title-');
},
+ deduplicatedUsers() {
+ return this.users.nodes.reduce((acc, current) => {
+ if (!acc.find((node) => node.user.id === current.user.id)) {
+ acc.push(current);
+ }
+ return acc;
+ }, []);
+ },
searchUsers() {
- return this.users.nodes.map((node) => addClass({ ...node, ...node.user }));
+ return this.deduplicatedUsers.map((node) => addClass({ ...node, ...node.user }));
},
pageInfo() {
return this.users.pageInfo;
diff --git a/app/controllers/organizations/application_controller.rb b/app/controllers/organizations/application_controller.rb
new file mode 100644
index 00000000000..5f5a57d176b
--- /dev/null
+++ b/app/controllers/organizations/application_controller.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module Organizations
+ class ApplicationController < ::ApplicationController
+ before_action :organization
+
+ private
+
+ def organization
+ return unless params[:organization_path]
+
+ @organization = Organizations::Organization.find_by_path(params[:organization_path])
+ end
+ strong_memoize_attr :organization
+
+ def authorize_action!(action)
+ access_denied! if Feature.disabled?(:ui_for_organizations)
+ access_denied! unless can?(current_user, action, organization)
+ end
+ end
+end
diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb
new file mode 100644
index 00000000000..0eb5c3aa6fd
--- /dev/null
+++ b/app/controllers/organizations/organizations_controller.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Organizations
+ class OrganizationsController < ApplicationController
+ feature_category :cell
+
+ before_action { authorize_action!(:admin_organization) }
+
+ def directory; end
+ end
+end
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 3796d8f0210..e247577aed0 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -159,7 +159,6 @@ module IssuablesHelper
author_output = link_to_member(project, issuable.author, size: 24, mobile_classes: "d-none d-sm-inline-block")
author_output << link_to_member(project, issuable.author, size: 24, by_username: true, avatar: false, mobile_classes: "d-inline d-sm-none")
- author_output << issuable_meta_author_slot(issuable.author, css_class: 'ml-1')
author_output << issuable_meta_author_status(issuable.author)
author_output
@@ -176,11 +175,6 @@ module IssuablesHelper
output.join.html_safe
end
- # This is a dummy method, and has an override defined in ee
- def issuable_meta_author_slot(author, css_class: nil)
- nil
- end
-
def issuables_state_counter_text(issuable_type, state, display_count)
titles = {
opened: _("Open"),
diff --git a/app/models/organizations/organization.rb b/app/models/organizations/organization.rb
index 764f752b557..79ed4e4cef4 100644
--- a/app/models/organizations/organization.rb
+++ b/app/models/organizations/organization.rb
@@ -24,6 +24,10 @@ module Organizations
id == DEFAULT_ORGANIZATION_ID
end
+ def to_param
+ path
+ end
+
private
def check_if_default_organization
diff --git a/app/policies/organizations/organization_policy.rb b/app/policies/organizations/organization_policy.rb
new file mode 100644
index 00000000000..cac8d07811d
--- /dev/null
+++ b/app/policies/organizations/organization_policy.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+module Organizations
+ class OrganizationPolicy < BasePolicy
+ rule { admin }.policy do
+ enable :admin_organization
+ end
+ end
+end
diff --git a/app/views/organizations/organizations/directory.html.haml b/app/views/organizations/organizations/directory.html.haml
new file mode 100644
index 00000000000..1d2fb66112b
--- /dev/null
+++ b/app/views/organizations/organizations/directory.html.haml
@@ -0,0 +1,2 @@
+- breadcrumb_title @organization.name
+- page_title @organization.name
diff --git a/app/views/projects/issues/service_desk/_issue.html.haml b/app/views/projects/issues/service_desk/_issue.html.haml
index 65887fbe325..04ea6103b83 100644
--- a/app/views/projects/issues/service_desk/_issue.html.haml
+++ b/app/views/projects/issues/service_desk/_issue.html.haml
@@ -23,7 +23,6 @@
#{_('created %{timeAgoString} by %{email} via %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(issue.created_at, placement: 'bottom'), email: issue.present(current_user: current_user).service_desk_reply_to, user: link_to_member(@project, issue.author, avatar: false) }}
- else
#{s_('IssueList|created %{timeAgoString} by %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(issue.created_at, placement: 'bottom'), user: link_to_member(@project, issue.author, avatar: false) }}
- = render_if_exists 'shared/issuable/gitlab_team_member_badge', author: issue.author
- if issue.milestone
%span.issuable-milestone.d-none.d-sm-inline-block
&nbsp;
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index 9142893d400..7b815d996e0 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -25,7 +25,6 @@
%span.issuable-authored.d-none.d-sm-inline-block.gl-text-gray-500!
&middot;
#{s_('IssueList|created %{timeAgoString} by %{user}').html_safe % { timeAgoString: time_ago_with_tooltip(merge_request.created_at, placement: 'bottom'), user: link_to_member(@project, merge_request.author, avatar: false, extra_class: 'gl-text-gray-500!') }}
- = render_if_exists 'shared/issuable/gitlab_team_member_badge', author: merge_request.author
- if merge_request.milestone
%span.issuable-milestone.d-none.d-sm-inline-block.gl-text-truncate.gl-max-w-26.gl-vertical-align-bottom
&nbsp;