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:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/behaviors/markdown/render_metrics.js2
-rw-r--r--app/assets/javascripts/behaviors/preview_markdown.js4
-rw-r--r--app/assets/javascripts/blob/blob_file_dropzone.js8
-rw-r--r--app/assets/javascripts/boards/components/board.js15
-rw-r--r--app/assets/javascripts/boards/components/new_list_dropdown.js25
-rw-r--r--app/assets/javascripts/boards/models/issue.js25
-rw-r--r--app/assets/javascripts/boards/models/list.js14
-rw-r--r--app/assets/javascripts/boards/services/board_service.js6
-rw-r--r--app/assets/javascripts/boards/stores/boards_store.js5
-rw-r--r--app/assets/javascripts/boards/stores/boards_store_ee.js2
-rw-r--r--app/assets/javascripts/ci_variable_list/ci_variable_list.js2
-rw-r--r--app/assets/javascripts/clusters/clusters_bundle.js54
-rw-r--r--app/assets/javascripts/clusters/services/clusters_service.js2
-rw-r--r--app/assets/javascripts/clusters/stores/clusters_store.js1
-rw-r--r--app/assets/javascripts/compare_autocomplete.js10
-rw-r--r--app/assets/javascripts/contextual_sidebar.js2
-rw-r--r--app/assets/javascripts/cycle_analytics/components/stage_code_component.vue2
-rw-r--r--app/assets/javascripts/cycle_analytics/components/stage_review_component.vue2
-rw-r--r--app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js2
-rw-r--r--app/assets/javascripts/diff.js4
-rw-r--r--app/assets/javascripts/diff_notes/components/comment_resolve_btn.js12
-rw-r--r--app/assets/javascripts/diff_notes/components/jump_to_discussion.js14
-rw-r--r--app/assets/javascripts/diff_notes/components/resolve_count.js5
-rw-r--r--app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js16
-rw-r--r--app/assets/javascripts/diff_notes/mixins/discussion.js8
-rw-r--r--app/assets/javascripts/diff_notes/stores/comments.js14
-rw-r--r--app/assets/javascripts/diffs/components/commit_item.vue2
-rw-r--r--app/assets/javascripts/diffs/components/commit_widget.vue2
-rw-r--r--app/assets/javascripts/diffs/components/diff_content.vue1
-rw-r--r--app/assets/javascripts/environments/components/environment_actions.vue2
-rw-r--r--app/assets/javascripts/environments/components/environment_item.vue2
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_manager.js2
-rw-r--r--app/assets/javascripts/image_diff/helpers/badge_helper.js4
-rw-r--r--app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js4
-rw-r--r--app/assets/javascripts/image_diff/helpers/index.js1
-rw-r--r--app/assets/javascripts/image_diff/helpers/init_image_diff.js27
-rw-r--r--app/assets/javascripts/image_diff/helpers/utils_helper.js25
-rw-r--r--app/assets/javascripts/image_diff/init_discussion_tab.js4
-rw-r--r--app/assets/javascripts/issue_show/components/app.vue36
-rw-r--r--app/assets/javascripts/issue_show/services/index.js9
-rw-r--r--app/assets/javascripts/issue_show/stores/index.js1
-rw-r--r--app/assets/javascripts/labels_select.js18
-rw-r--r--app/assets/javascripts/lazy_loader.js2
-rw-r--r--app/assets/javascripts/lib/utils/notify.js6
-rw-r--r--app/assets/javascripts/locale/sprintf.js2
-rw-r--r--app/assets/javascripts/main.js2
-rw-r--r--app/assets/javascripts/merge_conflicts/components/diff_file_editor.js4
-rw-r--r--app/assets/javascripts/merge_conflicts/merge_conflict_store.js8
-rw-r--r--app/assets/javascripts/milestone_select.js6
-rw-r--r--app/assets/javascripts/monitoring/components/charts/time_series.vue24
-rw-r--r--app/assets/javascripts/monitoring/components/dashboard.vue2
-rw-r--r--app/assets/javascripts/namespace_select.js10
-rw-r--r--app/assets/javascripts/notes/components/discussion_actions.vue7
-rw-r--r--app/assets/javascripts/notes/components/noteable_note.vue2
-rw-r--r--app/assets/javascripts/pages/projects/graphs/show/stat_graph_contributors_util.js32
-rw-r--r--app/assets/javascripts/pages/projects/project.js10
-rw-r--r--app/assets/javascripts/pipelines/components/graph/graph_component.vue42
-rw-r--r--app/assets/javascripts/pipelines/components/pipelines_actions.vue2
-rw-r--r--app/assets/javascripts/pipelines/constants.js1
-rw-r--r--app/assets/javascripts/pipelines/mixins/graph_width_mixin.js50
-rw-r--r--app/assets/javascripts/privacy_policy_update_callout.js2
-rw-r--r--app/assets/javascripts/profile/gl_crop.js4
-rw-r--r--app/assets/javascripts/project_select.js10
-rw-r--r--app/assets/javascripts/search_autocomplete.js4
-rw-r--r--app/assets/javascripts/single_file_diff.js4
-rw-r--r--app/assets/javascripts/tracking.js15
-rw-r--r--app/assets/javascripts/users_select.js36
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue5
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js5
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js2
-rw-r--r--app/assets/javascripts/vue_shared/components/ci_badge_link.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/ci_icon.vue2
-rw-r--r--app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue11
-rw-r--r--app/assets/stylesheets/bootstrap_migration.scss2
-rw-r--r--app/assets/stylesheets/framework/flash.scss6
-rw-r--r--app/assets/stylesheets/framework/highlight.scss2
-rw-r--r--app/assets/stylesheets/mailers/highlighted_diff_email.scss2
-rw-r--r--app/assets/stylesheets/pages/boards.scss2
-rw-r--r--app/assets/stylesheets/pages/commits.scss2
-rw-r--r--app/assets/stylesheets/pages/cycle_analytics.scss10
-rw-r--r--app/assets/stylesheets/pages/issuable.scss2
-rw-r--r--app/assets/stylesheets/pages/notes.scss4
-rw-r--r--app/assets/stylesheets/pages/pipelines.scss2
-rw-r--r--app/controllers/admin/application_settings_controller.rb4
-rw-r--r--app/controllers/admin/clusters_controller.rb2
-rw-r--r--app/controllers/admin/services_controller.rb2
-rw-r--r--app/controllers/boards/issues_controller.rb4
-rw-r--r--app/controllers/boards/lists_controller.rb2
-rw-r--r--app/controllers/clusters/clusters_controller.rb2
-rw-r--r--app/controllers/concerns/record_user_last_activity.rb2
-rw-r--r--app/controllers/dashboard/milestones_controller.rb2
-rw-r--r--app/controllers/dashboard/projects_controller.rb2
-rw-r--r--app/controllers/dashboard/todos_controller.rb2
-rw-r--r--app/controllers/groups/runners_controller.rb2
-rw-r--r--app/controllers/import/github_controller.rb2
-rw-r--r--app/controllers/import/gitlab_projects_controller.rb2
-rw-r--r--app/controllers/import/manifest_controller.rb2
-rw-r--r--app/controllers/projects/blob_controller.rb2
-rw-r--r--app/controllers/projects/branches_controller.rb2
-rw-r--r--app/controllers/projects/clusters_controller.rb2
-rw-r--r--app/controllers/projects/commits_controller.rb2
-rw-r--r--app/controllers/projects/cycle_analytics_controller.rb2
-rw-r--r--app/controllers/projects/environments_controller.rb6
-rw-r--r--app/controllers/projects/forks_controller.rb2
-rw-r--r--app/controllers/projects/issues_controller.rb8
-rw-r--r--app/controllers/projects/jobs_controller.rb2
-rw-r--r--app/controllers/projects/merge_requests/creations_controller.rb6
-rw-r--r--app/controllers/projects/merge_requests_controller.rb6
-rw-r--r--app/controllers/projects/network_controller.rb2
-rw-r--r--app/controllers/projects/notes_controller.rb2
-rw-r--r--app/controllers/projects/pipelines_controller.rb4
-rw-r--r--app/controllers/projects/templates_controller.rb8
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/controllers/registrations_controller.rb2
-rw-r--r--app/controllers/root_controller.rb2
-rw-r--r--app/finders/environments_finder.rb2
-rw-r--r--app/finders/todos_finder.rb7
-rw-r--r--app/graphql/resolvers/full_path_resolver.rb2
-rw-r--r--app/graphql/resolvers/issues_resolver.rb2
-rw-r--r--app/helpers/application_settings_helper.rb4
-rw-r--r--app/helpers/boards_helper.rb2
-rw-r--r--app/helpers/diff_helper.rb2
-rw-r--r--app/helpers/emails_helper.rb2
-rw-r--r--app/helpers/issuables_helper.rb8
-rw-r--r--app/helpers/projects_helper.rb4
-rw-r--r--app/helpers/runners_helper.rb2
-rw-r--r--app/helpers/safe_params_helper.rb2
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--app/models/ci/pipeline.rb4
-rw-r--r--app/models/clusters/applications/ingress.rb21
-rw-r--r--app/models/clusters/cluster.rb2
-rw-r--r--app/models/concerns/avatarable.rb2
-rw-r--r--app/models/concerns/group_descendant.rb2
-rw-r--r--app/models/concerns/issuable_states.rb2
-rw-r--r--app/models/concerns/label_eventable.rb2
-rw-r--r--app/models/concerns/reactive_caching.rb6
-rw-r--r--app/models/concerns/relative_positioning.rb2
-rw-r--r--app/models/concerns/routable.rb4
-rw-r--r--app/models/concerns/sha_attribute.rb2
-rw-r--r--app/models/deployment.rb2
-rw-r--r--app/models/environment.rb2
-rw-r--r--app/models/individual_note_discussion.rb2
-rw-r--r--app/models/label.rb4
-rw-r--r--app/models/merge_request.rb6
-rw-r--r--app/models/merge_request_diff.rb4
-rw-r--r--app/models/milestone.rb4
-rw-r--r--app/models/network/graph.rb2
-rw-r--r--app/models/note.rb2
-rw-r--r--app/models/project.rb8
-rw-r--r--app/models/project_services/data_fields.rb2
-rw-r--r--app/models/project_services/issue_tracker_service.rb8
-rw-r--r--app/models/project_services/jira_service.rb6
-rw-r--r--app/models/repository.rb30
-rw-r--r--app/models/resource_label_event.rb2
-rw-r--r--app/models/snippet.rb2
-rw-r--r--app/models/todo.rb7
-rw-r--r--app/models/user_callout_enums.rb2
-rw-r--r--app/policies/project_snippet_policy.rb2
-rw-r--r--app/presenters/README.md2
-rw-r--r--app/serializers/README.md8
-rw-r--r--app/serializers/entity_date_helper.rb2
-rw-r--r--app/serializers/merge_request_poll_cached_widget_entity.rb2
-rw-r--r--app/services/access_token_validation_service.rb2
-rw-r--r--app/services/applications/create_service.rb2
-rw-r--r--app/services/auth/container_registry_authentication_service.rb2
-rw-r--r--app/services/ci/archive_trace_service.rb2
-rw-r--r--app/services/ci/create_pipeline_service.rb2
-rw-r--r--app/services/ci/pipeline_schedule_service.rb2
-rw-r--r--app/services/git/branch_hooks_service.rb2
-rw-r--r--app/services/issuable/clone/attributes_rewriter.rb2
-rw-r--r--app/services/issuable/common_system_notes_service.rb2
-rw-r--r--app/services/labels/transfer_service.rb2
-rw-r--r--app/services/merge_requests/build_service.rb2
-rw-r--r--app/services/merge_requests/refresh_service.rb2
-rw-r--r--app/services/metrics/dashboard/base_service.rb30
-rw-r--r--app/services/metrics/dashboard/system_dashboard_service.rb21
-rw-r--r--app/services/milestones/update_service.rb2
-rw-r--r--app/services/notes/create_service.rb2
-rw-r--r--app/services/projects/auto_devops/disable_service.rb2
-rw-r--r--app/services/projects/cleanup_service.rb2
-rw-r--r--app/services/projects/container_repository/cleanup_tags_service.rb2
-rw-r--r--app/services/projects/fork_service.rb9
-rw-r--r--app/services/projects/lfs_pointers/lfs_object_download_list_service.rb2
-rw-r--r--app/services/projects/open_issues_count_service.rb2
-rw-r--r--app/services/projects/propagate_service_template.rb2
-rw-r--r--app/services/projects/update_service.rb2
-rw-r--r--app/services/releases/update_service.rb2
-rw-r--r--app/services/system_note_service.rb2
-rw-r--r--app/services/todo_service.rb2
-rw-r--r--app/services/users/update_service.rb2
-rw-r--r--app/validators/addressable_url_validator.rb4
-rw-r--r--app/views/groups/runners/_group_runners.html.haml2
-rw-r--r--app/views/layouts/_page.html.haml2
-rw-r--r--app/views/layouts/nav/_dashboard.html.haml2
-rw-r--r--app/views/profiles/show.html.haml2
-rw-r--r--app/views/projects/pipelines/_with_tabs.html.haml2
-rw-r--r--app/views/shared/_promo.html.haml2
-rw-r--r--app/views/shared/issuable/_search_bar.html.haml2
-rw-r--r--app/workers/ci/archive_traces_cron_worker.rb2
-rw-r--r--app/workers/cluster_configure_worker.rb2
-rw-r--r--app/workers/cluster_project_configure_worker.rb2
-rw-r--r--app/workers/namespaces/schedule_aggregation_worker.rb2
-rw-r--r--app/workers/run_pipeline_schedule_worker.rb2
203 files changed, 657 insertions, 520 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/render_metrics.js b/app/assets/javascripts/behaviors/markdown/render_metrics.js
index 252b98610b6..8050604e6e7 100644
--- a/app/assets/javascripts/behaviors/markdown/render_metrics.js
+++ b/app/assets/javascripts/behaviors/markdown/render_metrics.js
@@ -2,7 +2,7 @@ import Vue from 'vue';
import Metrics from '~/monitoring/components/embed.vue';
import { createStore } from '~/monitoring/stores';
-// TODO: Handle copy-pasting - https://gitlab.com/gitlab-org/gitlab-ce/issues/64369.
+// TODO: Handle copy-pasting - https://gitlab.com/gitlab-org/gitlab-foss/issues/64369.
export default function renderMetrics(elements) {
if (!elements.length) {
return;
diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js
index b2571fb840c..1909830e9ed 100644
--- a/app/assets/javascripts/behaviors/preview_markdown.js
+++ b/app/assets/javascripts/behaviors/preview_markdown.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, object-shorthand, prefer-arrow-callback */
+/* eslint-disable func-names, no-var, prefer-arrow-callback */
import $ from 'jquery';
import axios from '~/lib/utils/axios_utils';
@@ -82,7 +82,7 @@ MarkdownPreview.prototype.fetchMarkdownPreview = function(text, url, success) {
})
.then(({ data }) => {
this.ajaxCache = {
- text: text,
+ text,
response: data,
};
success(data);
diff --git a/app/assets/javascripts/blob/blob_file_dropzone.js b/app/assets/javascripts/blob/blob_file_dropzone.js
index 9010cd0c3c1..9f0680cc6a7 100644
--- a/app/assets/javascripts/blob/blob_file_dropzone.js
+++ b/app/assets/javascripts/blob/blob_file_dropzone.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, object-shorthand, prefer-arrow-callback */
+/* eslint-disable func-names, prefer-arrow-callback */
import $ from 'jquery';
import Dropzone from 'dropzone';
@@ -32,7 +32,7 @@ export default class BlobFileDropzone {
url: form.attr('action'),
// Rails uses a hidden input field for PUT
// http://stackoverflow.com/questions/21056482/how-to-set-method-put-in-form-tag-in-rails
- method: method,
+ method,
clickable: true,
uploadMultiple: false,
paramName: 'file',
@@ -42,7 +42,7 @@ export default class BlobFileDropzone {
addRemoveLinks: true,
previewsContainer: '.dropzone-previews',
headers: csrf.headers,
- init: function() {
+ init() {
this.on('addedfile', function() {
toggleLoading(submitButton, submitButtonLoadingIcon, false);
dropzoneMessage.addClass(HIDDEN_CLASS);
@@ -69,7 +69,7 @@ export default class BlobFileDropzone {
});
},
// Override behavior of adding error underneath preview
- error: function(file, errorMessage) {
+ error(file, errorMessage) {
const stripped = $('<div/>')
.html(errorMessage)
.text();
diff --git a/app/assets/javascripts/boards/components/board.js b/app/assets/javascripts/boards/components/board.js
index c6122fbc686..58759fd1efe 100644
--- a/app/assets/javascripts/boards/components/board.js
+++ b/app/assets/javascripts/boards/components/board.js
@@ -50,6 +50,9 @@ export default Vue.extend({
};
},
computed: {
+ isLoggedIn() {
+ return Boolean(gon.current_user_id);
+ },
counterTooltip() {
const { issuesSize } = this.list;
return `${n__('%d issue', '%d issues', issuesSize)}`;
@@ -106,7 +109,11 @@ export default Vue.extend({
Sortable.create(this.$el.parentNode, sortableOptions);
},
created() {
- if (this.list.isExpandable && AccessorUtilities.isLocalStorageAccessSafe()) {
+ if (
+ this.list.isExpandable &&
+ AccessorUtilities.isLocalStorageAccessSafe() &&
+ !this.isLoggedIn
+ ) {
const isCollapsed = localStorage.getItem(`${this.uniqueKey}.expanded`) === 'false';
this.list.isExpanded = !isCollapsed;
@@ -120,10 +127,14 @@ export default Vue.extend({
if (this.list.isExpandable) {
this.list.isExpanded = !this.list.isExpanded;
- if (AccessorUtilities.isLocalStorageAccessSafe()) {
+ if (AccessorUtilities.isLocalStorageAccessSafe() && !this.isLoggedIn) {
localStorage.setItem(`${this.uniqueKey}.expanded`, this.list.isExpanded);
}
+ if (this.isLoggedIn) {
+ this.list.update();
+ }
+
// When expanding/collapsing, the tooltip on the caret button sometimes stays open.
// Close all tooltips manually to prevent dangling tooltips.
$('.tooltip').tooltip('hide');
diff --git a/app/assets/javascripts/boards/components/new_list_dropdown.js b/app/assets/javascripts/boards/components/new_list_dropdown.js
index c8a9cb1c296..229bb82152b 100644
--- a/app/assets/javascripts/boards/components/new_list_dropdown.js
+++ b/app/assets/javascripts/boards/components/new_list_dropdown.js
@@ -1,7 +1,9 @@
-/* eslint-disable func-names, no-new, promise/catch-or-return */
+/* eslint-disable func-names, no-new */
import $ from 'jquery';
+import { __ } from '~/locale';
import axios from '~/lib/utils/axios_utils';
+import flash from '~/flash';
import CreateLabelDropdown from '../../create_label';
import boardsStore from '../stores/boards_store';
@@ -26,18 +28,23 @@ $(document)
export default function initNewListDropdown() {
$('.js-new-board-list').each(function() {
- const $this = $(this);
+ const $dropdownToggle = $(this);
+ const $dropdown = $dropdownToggle.closest('.dropdown');
new CreateLabelDropdown(
- $this.closest('.dropdown').find('.dropdown-new-label'),
- $this.data('namespacePath'),
- $this.data('projectPath'),
+ $dropdown.find('.dropdown-new-label'),
+ $dropdownToggle.data('namespacePath'),
+ $dropdownToggle.data('projectPath'),
);
- $this.glDropdown({
+ $dropdownToggle.glDropdown({
data(term, callback) {
- axios.get($this.attr('data-list-labels-path')).then(({ data }) => {
- callback(data);
- });
+ axios
+ .get($dropdownToggle.attr('data-list-labels-path'))
+ .then(({ data }) => callback(data))
+ .catch(() => {
+ $dropdownToggle.data('bs.dropdown').hide();
+ flash(__('Error fetching labels.'));
+ });
},
renderRow(label) {
const active = boardsStore.findListByLabelId(label.id);
diff --git a/app/assets/javascripts/boards/models/issue.js b/app/assets/javascripts/boards/models/issue.js
index 086340105b7..1cee9e5725a 100644
--- a/app/assets/javascripts/boards/models/issue.js
+++ b/app/assets/javascripts/boards/models/issue.js
@@ -11,11 +11,6 @@ import boardsStore from '../stores/boards_store';
class ListIssue {
constructor(obj, defaultAvatar) {
- this.id = obj.id;
- this.iid = obj.iid;
- this.title = obj.title;
- this.confidential = obj.confidential;
- this.dueDate = obj.due_date;
this.subscribed = obj.subscribed;
this.labels = [];
this.assignees = [];
@@ -25,6 +20,16 @@ class ListIssue {
subscriptions: true,
};
this.isLoading = {};
+
+ this.refreshData(obj, defaultAvatar);
+ }
+
+ refreshData(obj, defaultAvatar) {
+ this.id = obj.id;
+ this.iid = obj.iid;
+ this.title = obj.title;
+ this.confidential = obj.confidential;
+ this.dueDate = obj.due_date;
this.sidebarInfoEndpoint = obj.issue_sidebar_endpoint;
this.referencePath = obj.reference_path;
this.path = obj.real_path;
@@ -42,11 +47,13 @@ class ListIssue {
this.milestone_id = obj.milestone.id;
}
- obj.labels.forEach(label => {
- this.labels.push(new ListLabel(label));
- });
+ if (obj.labels) {
+ this.labels = obj.labels.map(label => new ListLabel(label));
+ }
- this.assignees = obj.assignees.map(a => new ListAssignee(a, defaultAvatar));
+ if (obj.assignees) {
+ this.assignees = obj.assignees.map(a => new ListAssignee(a, defaultAvatar));
+ }
}
addLabel(label) {
diff --git a/app/assets/javascripts/boards/models/list.js b/app/assets/javascripts/boards/models/list.js
index 1edaf971afd..b3e56a34c28 100644
--- a/app/assets/javascripts/boards/models/list.js
+++ b/app/assets/javascripts/boards/models/list.js
@@ -1,4 +1,4 @@
-/* eslint-disable no-underscore-dangle, class-methods-use-this, consistent-return, no-shadow, no-param-reassign */
+/* eslint-disable no-underscore-dangle, class-methods-use-this, consistent-return, no-shadow */
import { __ } from '~/locale';
import ListLabel from './label';
@@ -45,7 +45,7 @@ class List {
const typeInfo = this.getTypeInfo(this.type);
this.preset = Boolean(typeInfo.isPreset);
this.isExpandable = Boolean(typeInfo.isExpandable);
- this.isExpanded = true;
+ this.isExpanded = !obj.collapsed;
this.page = 1;
this.loading = true;
this.loadingMore = false;
@@ -113,7 +113,8 @@ class List {
}
update() {
- gl.boardService.updateList(this.id, this.position).catch(() => {
+ const collapsed = !this.isExpanded;
+ return gl.boardService.updateList(this.id, this.position, collapsed).catch(() => {
// TODO: handle request error
});
}
@@ -259,12 +260,7 @@ class List {
}
onNewIssueResponse(issue, data) {
- issue.id = data.id;
- issue.iid = data.iid;
- issue.project = data.project;
- issue.path = data.real_path;
- issue.referencePath = data.reference_path;
- issue.assignableLabelsEndpoint = data.assignable_labels_endpoint;
+ issue.refreshData(data);
if (this.issuesSize > 1) {
const moveBeforeId = this.issues[1].id;
diff --git a/app/assets/javascripts/boards/services/board_service.js b/app/assets/javascripts/boards/services/board_service.js
index 56a6cab6c73..0d11db89511 100644
--- a/app/assets/javascripts/boards/services/board_service.js
+++ b/app/assets/javascripts/boards/services/board_service.js
@@ -2,7 +2,7 @@
/**
* This file is intended to be deleted.
* The existing functions will removed one by one in favor of using the board store directly.
- * see https://gitlab.com/gitlab-org/gitlab-ce/issues/61621
+ * see https://gitlab.com/gitlab-org/gitlab-foss/issues/61621
*/
import boardsStore from '~/boards/stores/boards_store';
@@ -32,8 +32,8 @@ export default class BoardService {
return boardsStore.createList(entityId, entityType);
}
- updateList(id, position) {
- return boardsStore.updateList(id, position);
+ updateList(id, position, collapsed) {
+ return boardsStore.updateList(id, position, collapsed);
}
destroyList(id) {
diff --git a/app/assets/javascripts/boards/stores/boards_store.js b/app/assets/javascripts/boards/stores/boards_store.js
index f57c684691c..6da1cca9628 100644
--- a/app/assets/javascripts/boards/stores/boards_store.js
+++ b/app/assets/javascripts/boards/stores/boards_store.js
@@ -82,7 +82,7 @@ const boardsStore = {
this.state.lists = _.sortBy(this.state.lists, 'position');
})
.catch(() => {
- // https://gitlab.com/gitlab-org/gitlab-ce/issues/30821
+ // https://gitlab.com/gitlab-org/gitlab-foss/issues/30821
});
this.removeBlankState();
},
@@ -278,10 +278,11 @@ const boardsStore = {
});
},
- updateList(id, position) {
+ updateList(id, position, collapsed) {
return axios.put(`${this.state.endpoints.listsEndpoint}/${id}`, {
list: {
position,
+ collapsed,
},
});
},
diff --git a/app/assets/javascripts/boards/stores/boards_store_ee.js b/app/assets/javascripts/boards/stores/boards_store_ee.js
index 09e3a938fbe..2a289ce5d0a 100644
--- a/app/assets/javascripts/boards/stores/boards_store_ee.js
+++ b/app/assets/javascripts/boards/stores/boards_store_ee.js
@@ -1,4 +1,4 @@
-// this is just to make ee_else_ce happy and will be cleaned up in https://gitlab.com/gitlab-org/gitlab-ce/issues/59807
+// this is just to make ee_else_ce happy and will be cleaned up in https://gitlab.com/gitlab-org/gitlab-foss/issues/59807
export default {
initEESpecific() {},
diff --git a/app/assets/javascripts/ci_variable_list/ci_variable_list.js b/app/assets/javascripts/ci_variable_list/ci_variable_list.js
index 0303e4e51dd..5c79f245f6d 100644
--- a/app/assets/javascripts/ci_variable_list/ci_variable_list.js
+++ b/app/assets/javascripts/ci_variable_list/ci_variable_list.js
@@ -54,7 +54,7 @@ export default class VariableList {
environment_scope: {
// We can't use a `.js-` class here because
// gl_dropdown replaces the <input> and doesn't copy over the class
- // See https://gitlab.com/gitlab-org/gitlab-ce/issues/42458
+ // See https://gitlab.com/gitlab-org/gitlab-foss/issues/42458
selector: `input[name="${this.formField}[variables_attributes][][environment_scope]"]`,
default: '*',
},
diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js
index 28850710f80..d386960f3b6 100644
--- a/app/assets/javascripts/clusters/clusters_bundle.js
+++ b/app/assets/javascripts/clusters/clusters_bundle.js
@@ -111,15 +111,25 @@ export default class Clusters {
this.initApplications(clusterType);
this.initEnvironments();
- if (clusterEnvironmentsPath) {
- this.fetchEnvironments();
+ if (clusterEnvironmentsPath && this.environments) {
+ this.store.toggleFetchEnvironments(true);
+
+ this.initPolling(
+ 'fetchClusterEnvironments',
+ data => this.handleClusterEnvironmentsSuccess(data),
+ () => this.handleEnvironmentsPollError(),
+ );
}
this.updateContainer(null, this.store.state.status, this.store.state.statusReason);
this.addListeners();
if (statusPath && !this.environments) {
- this.initPolling();
+ this.initPolling(
+ 'fetchClusterStatus',
+ data => this.handleClusterStatusSuccess(data),
+ () => this.handlePollError(),
+ );
}
}
@@ -179,16 +189,9 @@ export default class Clusters {
});
}
- fetchEnvironments() {
- this.store.toggleFetchEnvironments(true);
-
- this.service
- .fetchClusterEnvironments()
- .then(data => {
- this.store.toggleFetchEnvironments(false);
- this.store.updateEnvironments(data.data);
- })
- .catch(() => Clusters.handleError());
+ handleClusterEnvironmentsSuccess(data) {
+ this.store.toggleFetchEnvironments(false);
+ this.store.updateEnvironments(data.data);
}
static initDismissableCallout() {
@@ -224,21 +227,16 @@ export default class Clusters {
eventHub.$off('uninstallApplication');
}
- initPolling() {
+ initPolling(method, successCallback, errorCallback) {
this.poll = new Poll({
resource: this.service,
- method: 'fetchData',
- successCallback: data => this.handleSuccess(data),
- errorCallback: () => Clusters.handleError(),
+ method,
+ successCallback,
+ errorCallback,
});
if (!Visibility.hidden()) {
this.poll.makeRequest();
- } else {
- this.service
- .fetchData()
- .then(data => this.handleSuccess(data))
- .catch(() => Clusters.handleError());
}
Visibility.change(() => {
@@ -250,11 +248,21 @@ export default class Clusters {
});
}
+ handlePollError() {
+ this.constructor.handleError();
+ }
+
+ handleEnvironmentsPollError() {
+ this.store.toggleFetchEnvironments(false);
+
+ this.handlePollError();
+ }
+
static handleError() {
Flash(s__('ClusterIntegration|Something went wrong on our end.'));
}
- handleSuccess(data) {
+ handleClusterStatusSuccess(data) {
const prevStatus = this.store.state.status;
const prevApplicationMap = Object.assign({}, this.store.state.applications);
diff --git a/app/assets/javascripts/clusters/services/clusters_service.js b/app/assets/javascripts/clusters/services/clusters_service.js
index 9139e0beafb..fa12802b3de 100644
--- a/app/assets/javascripts/clusters/services/clusters_service.js
+++ b/app/assets/javascripts/clusters/services/clusters_service.js
@@ -17,7 +17,7 @@ export default class ClusterService {
};
}
- fetchData() {
+ fetchClusterStatus() {
return axios.get(this.options.endpoint);
}
diff --git a/app/assets/javascripts/clusters/stores/clusters_store.js b/app/assets/javascripts/clusters/stores/clusters_store.js
index a032f589ee4..5cddb4cc098 100644
--- a/app/assets/javascripts/clusters/stores/clusters_store.js
+++ b/app/assets/javascripts/clusters/stores/clusters_store.js
@@ -218,6 +218,7 @@ export default class ClusterStore {
environmentPath: environment.environment_path,
lastDeployment: environment.last_deployment,
rolloutStatus: {
+ status: environment.rollout_status ? environment.rollout_status.status : null,
instances: environment.rollout_status ? environment.rollout_status.instances : [],
},
updatedAt: environment.updated_at,
diff --git a/app/assets/javascripts/compare_autocomplete.js b/app/assets/javascripts/compare_autocomplete.js
index 5bfe158ceda..81ba15577fb 100644
--- a/app/assets/javascripts/compare_autocomplete.js
+++ b/app/assets/javascripts/compare_autocomplete.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, one-var, no-var, object-shorthand, no-else-return */
+/* eslint-disable func-names, one-var, no-var, no-else-return */
import $ from 'jquery';
import { __ } from './locale';
@@ -15,7 +15,7 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
const $fieldInput = $(`input[name="${$dropdown.data('fieldName')}"]`, $dropdownContainer);
const $filterInput = $('input[type="search"]', $dropdownContainer);
$dropdown.glDropdown({
- data: function(term, callback) {
+ data(term, callback) {
const params = {
ref: $dropdown.data('ref'),
search: term,
@@ -43,7 +43,7 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
filterRemote: Boolean($dropdown.data('refsUrl')),
fieldName: $dropdown.data('fieldName'),
filterInput: 'input[type="search"]',
- renderRow: function(ref) {
+ renderRow(ref) {
var link;
if (ref.header != null) {
return $('<li />')
@@ -58,10 +58,10 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
return $('<li />').append(link);
}
},
- id: function(obj, $el) {
+ id(obj, $el) {
return $el.attr('data-ref');
},
- toggleLabel: function(obj, $el) {
+ toggleLabel(obj, $el) {
return $el.text().trim();
},
clicked: () => clickHandler($dropdown),
diff --git a/app/assets/javascripts/contextual_sidebar.js b/app/assets/javascripts/contextual_sidebar.js
index 9263e9b27e4..f43b6f3d777 100644
--- a/app/assets/javascripts/contextual_sidebar.js
+++ b/app/assets/javascripts/contextual_sidebar.js
@@ -5,7 +5,7 @@ import bp from './breakpoints';
import { parseBoolean } from '~/lib/utils/common_utils';
// NOTE: at 1200px nav sidebar should not overlap the content
-// https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24555#note_134136110
+// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24555#note_134136110
const NAV_SIDEBAR_BREAKPOINT = 1200;
export const SIDEBAR_COLLAPSED_CLASS = 'js-sidebar-collapsed';
diff --git a/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue
index 333ea111cd6..55e5f4ffad2 100644
--- a/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue
+++ b/app/assets/javascripts/cycle_analytics/components/stage_code_component.vue
@@ -32,7 +32,7 @@ export default {
<div class="item-details">
<!-- FIXME: Pass an alt attribute here for accessibility -->
<user-avatar-image :img-src="mergeRequest.author.avatarUrl" />
- <h5 class="item-title merge-merquest-title">
+ <h5 class="item-title merge-request-title">
<a :href="mergeRequest.url"> {{ mergeRequest.title }} </a>
</h5>
<a :href="mergeRequest.url" class="issue-link"> !{{ mergeRequest.iid }} </a> &middot;
diff --git a/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue b/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue
index f874f11aff0..a295c8b496b 100644
--- a/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue
+++ b/app/assets/javascripts/cycle_analytics/components/stage_review_component.vue
@@ -34,7 +34,7 @@ export default {
<div class="item-details">
<!-- FIXME: Pass an alt attribute here for accessibility -->
<user-avatar-image :img-src="mergeRequest.author.avatarUrl" />
- <h5 class="item-title merge-merquest-title">
+ <h5 class="item-title merge-request-title">
<a :href="mergeRequest.url"> {{ mergeRequest.title }} </a>
</h5>
<a :href="mergeRequest.url" class="issue-link">!{{ mergeRequest.iid }}</a> &middot;
diff --git a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js
index c9a6b10b2f3..7744984edfc 100644
--- a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js
+++ b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js
@@ -74,7 +74,7 @@ export default () => {
// after a group is selected the cycle analyitcs data will be fetched). Once the
// old (current) page has been removed this entire created method as well as the
// variable itself can be completely removed.
- // Follow up issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/64490
+ // Follow up issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/64490
if (cycleAnalyticsEl.dataset.requestPath) this.fetchCycleAnalyticsData();
},
methods: {
diff --git a/app/assets/javascripts/diff.js b/app/assets/javascripts/diff.js
index 245f1a7c558..a343138a9e1 100644
--- a/app/assets/javascripts/diff.js
+++ b/app/assets/javascripts/diff.js
@@ -5,7 +5,7 @@ import { __ } from '~/locale';
import { getLocationHash } from './lib/utils/url_utility';
import FilesCommentButton from './files_comment_button';
import SingleFileDiff from './single_file_diff';
-import imageDiffHelper from './image_diff/helpers/index';
+import initImageDiffHelper from './image_diff/helpers/init_image_diff';
const UNFOLD_COUNT = 20;
let isBound = false;
@@ -28,7 +28,7 @@ export default class Diff {
.first()
.get(0);
const canCreateNote = firstFile && firstFile.hasAttribute('data-can-create-note');
- $diffFile.each((index, file) => imageDiffHelper.initImageDiff(file, canCreateNote));
+ $diffFile.each((index, file) => initImageDiffHelper.initImageDiff(file, canCreateNote));
if (!isBound) {
$(document)
diff --git a/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js b/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js
index 7817b41514d..84e07598fed 100644
--- a/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js
+++ b/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js
@@ -1,4 +1,4 @@
-/* eslint-disable object-shorthand, func-names, no-else-return, no-lonely-if */
+/* eslint-disable no-else-return, no-lonely-if */
/* global CommentsStore */
import $ from 'jquery';
@@ -19,17 +19,17 @@ const CommentAndResolveBtn = Vue.extend({
};
},
computed: {
- showButton: function() {
+ showButton() {
if (this.discussion) {
return this.discussion.isResolvable();
} else {
return false;
}
},
- isDiscussionResolved: function() {
+ isDiscussionResolved() {
return this.discussion.isResolved();
},
- buttonText: function() {
+ buttonText() {
if (this.isDiscussionResolved) {
if (this.textareaIsEmpty) {
return __('Unresolve thread');
@@ -50,7 +50,7 @@ const CommentAndResolveBtn = Vue.extend({
this.discussion = CommentsStore.state[this.discussionId];
}
},
- mounted: function() {
+ mounted() {
if (!this.discussionId) return;
const $textarea = $(
@@ -62,7 +62,7 @@ const CommentAndResolveBtn = Vue.extend({
this.textareaIsEmpty = $textarea.val() === '';
});
},
- destroyed: function() {
+ destroyed() {
if (!this.discussionId) return;
$(`.js-discussion-note-form[data-discussion-id=${this.discussionId}] .note-textarea`).off(
diff --git a/app/assets/javascripts/diff_notes/components/jump_to_discussion.js b/app/assets/javascripts/diff_notes/components/jump_to_discussion.js
index fe4088cadda..092c69a01d3 100644
--- a/app/assets/javascripts/diff_notes/components/jump_to_discussion.js
+++ b/app/assets/javascripts/diff_notes/components/jump_to_discussion.js
@@ -1,4 +1,4 @@
-/* eslint-disable object-shorthand, func-names, no-else-return, guard-for-in, no-restricted-syntax, no-lonely-if, no-continue */
+/* eslint-disable func-names, no-else-return, guard-for-in, no-restricted-syntax, no-lonely-if, no-continue */
/* global CommentsStore */
import $ from 'jquery';
@@ -15,24 +15,24 @@ const JumpToDiscussion = Vue.extend({
required: true,
},
},
- data: function() {
+ data() {
return {
discussions: CommentsStore.state,
discussion: {},
};
},
computed: {
- buttonText: function() {
+ buttonText() {
if (this.discussionId) {
return __('Jump to next unresolved discussion');
} else {
return __('Jump to first unresolved discussion');
}
},
- allResolved: function() {
+ allResolved() {
return this.unresolvedDiscussionCount === 0;
},
- showButton: function() {
+ showButton() {
if (this.discussionId) {
if (this.unresolvedDiscussionCount > 1) {
return true;
@@ -43,7 +43,7 @@ const JumpToDiscussion = Vue.extend({
return this.unresolvedDiscussionCount >= 1;
}
},
- lastResolvedId: function() {
+ lastResolvedId() {
let lastId;
for (const discussionId in this.discussions) {
const discussion = this.discussions[discussionId];
@@ -59,7 +59,7 @@ const JumpToDiscussion = Vue.extend({
this.discussion = this.discussions[this.discussionId];
},
methods: {
- jumpToNextUnresolvedDiscussion: function() {
+ jumpToNextUnresolvedDiscussion() {
let discussionsSelector;
let discussionIdsInScope;
let firstUnresolvedDiscussionId;
diff --git a/app/assets/javascripts/diff_notes/components/resolve_count.js b/app/assets/javascripts/diff_notes/components/resolve_count.js
index d8b056096f4..f960853b25b 100644
--- a/app/assets/javascripts/diff_notes/components/resolve_count.js
+++ b/app/assets/javascripts/diff_notes/components/resolve_count.js
@@ -1,4 +1,3 @@
-/* eslint-disable object-shorthand, func-names */
/* global CommentsStore */
import Vue from 'vue';
@@ -13,13 +12,13 @@ window.ResolveCount = Vue.extend({
required: true,
},
},
- data: function() {
+ data() {
return {
discussions: CommentsStore.state,
};
},
computed: {
- allResolved: function() {
+ allResolved() {
return this.resolvedDiscussionCount === this.discussionCount;
},
resolvedCountText() {
diff --git a/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js b/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js
index 4b204fdfeb0..5f2a17da630 100644
--- a/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js
+++ b/app/assets/javascripts/diff_notes/components/resolve_discussion_btn.js
@@ -1,4 +1,4 @@
-/* eslint-disable object-shorthand, func-names, no-else-return */
+/* eslint-disable no-else-return */
/* global CommentsStore */
/* global ResolveService */
@@ -20,34 +20,34 @@ const ResolveDiscussionBtn = Vue.extend({
required: true,
},
},
- data: function() {
+ data() {
return {
discussion: {},
};
},
computed: {
- showButton: function() {
+ showButton() {
if (this.discussion) {
return this.discussion.isResolvable();
} else {
return false;
}
},
- isDiscussionResolved: function() {
+ isDiscussionResolved() {
if (this.discussion) {
return this.discussion.isResolved();
} else {
return false;
}
},
- buttonText: function() {
+ buttonText() {
if (this.isDiscussionResolved) {
return __('Unresolve discussion');
} else {
return __('Resolve discussion');
}
},
- loading: function() {
+ loading() {
if (this.discussion) {
return this.discussion.loading;
} else {
@@ -55,13 +55,13 @@ const ResolveDiscussionBtn = Vue.extend({
}
},
},
- created: function() {
+ created() {
CommentsStore.createDiscussion(this.discussionId, this.canResolve);
this.discussion = CommentsStore.state[this.discussionId];
},
methods: {
- resolve: function() {
+ resolve() {
ResolveService.toggleResolveForDiscussion(this.mergeRequestId, this.discussionId);
},
},
diff --git a/app/assets/javascripts/diff_notes/mixins/discussion.js b/app/assets/javascripts/diff_notes/mixins/discussion.js
index dea64dca132..ef3001393cf 100644
--- a/app/assets/javascripts/diff_notes/mixins/discussion.js
+++ b/app/assets/javascripts/diff_notes/mixins/discussion.js
@@ -1,11 +1,11 @@
-/* eslint-disable object-shorthand, func-names, guard-for-in, no-restricted-syntax, */
+/* eslint-disable guard-for-in, no-restricted-syntax, */
const DiscussionMixins = {
computed: {
- discussionCount: function() {
+ discussionCount() {
return Object.keys(this.discussions).length;
},
- resolvedDiscussionCount: function() {
+ resolvedDiscussionCount() {
let resolvedCount = 0;
for (const discussionId in this.discussions) {
@@ -18,7 +18,7 @@ const DiscussionMixins = {
return resolvedCount;
},
- unresolvedDiscussionCount: function() {
+ unresolvedDiscussionCount() {
let unresolvedCount = 0;
for (const discussionId in this.discussions) {
diff --git a/app/assets/javascripts/diff_notes/stores/comments.js b/app/assets/javascripts/diff_notes/stores/comments.js
index 060bb044f78..69a972f644d 100644
--- a/app/assets/javascripts/diff_notes/stores/comments.js
+++ b/app/assets/javascripts/diff_notes/stores/comments.js
@@ -1,14 +1,14 @@
-/* eslint-disable object-shorthand, func-names, camelcase, no-restricted-syntax, guard-for-in */
+/* eslint-disable camelcase, no-restricted-syntax, guard-for-in */
/* global DiscussionModel */
import Vue from 'vue';
window.CommentsStore = {
state: {},
- get: function(discussionId, noteId) {
+ get(discussionId, noteId) {
return this.state[discussionId].getNote(noteId);
},
- createDiscussion: function(discussionId, canResolve) {
+ createDiscussion(discussionId, canResolve) {
let discussion = this.state[discussionId];
if (!this.state[discussionId]) {
discussion = new DiscussionModel(discussionId);
@@ -21,18 +21,18 @@ window.CommentsStore = {
return discussion;
},
- create: function(noteObj) {
+ create(noteObj) {
const discussion = this.createDiscussion(noteObj.discussionId);
discussion.createNote(noteObj);
},
- update: function(discussionId, noteId, resolved, resolved_by) {
+ update(discussionId, noteId, resolved, resolved_by) {
const discussion = this.state[discussionId];
const note = discussion.getNote(noteId);
note.resolved = resolved;
note.resolved_by = resolved_by;
},
- delete: function(discussionId, noteId) {
+ delete(discussionId, noteId) {
const discussion = this.state[discussionId];
discussion.deleteNote(noteId);
@@ -40,7 +40,7 @@ window.CommentsStore = {
Vue.delete(this.state, discussionId);
}
},
- unresolvedDiscussionIds: function() {
+ unresolvedDiscussionIds() {
const ids = [];
for (const discussionId in this.state) {
diff --git a/app/assets/javascripts/diffs/components/commit_item.vue b/app/assets/javascripts/diffs/components/commit_item.vue
index c82b4a7abc6..761fd1583ed 100644
--- a/app/assets/javascripts/diffs/components/commit_item.vue
+++ b/app/assets/javascripts/diffs/components/commit_item.vue
@@ -17,7 +17,7 @@ import initUserPopovers from '../../user_popovers';
*
* This Component was cloned from a HAML view. For the time being they
* coexist, but there is an issue to remove the duplication.
- * https://gitlab.com/gitlab-org/gitlab-ce/issues/51613
+ * https://gitlab.com/gitlab-org/gitlab-foss/issues/51613
*
*/
export default {
diff --git a/app/assets/javascripts/diffs/components/commit_widget.vue b/app/assets/javascripts/diffs/components/commit_widget.vue
index d45f91c7023..31ed003cc0f 100644
--- a/app/assets/javascripts/diffs/components/commit_widget.vue
+++ b/app/assets/javascripts/diffs/components/commit_widget.vue
@@ -11,7 +11,7 @@ import CommitItem from './commit_item.vue';
*
* This Component was cloned from a HAML view. For the time being,
* they coexist, but there is an issue to remove the duplication.
- * https://gitlab.com/gitlab-org/gitlab-ce/issues/51613
+ * https://gitlab.com/gitlab-org/gitlab-foss/issues/51613
*
*/
export default {
diff --git a/app/assets/javascripts/diffs/components/diff_content.vue b/app/assets/javascripts/diffs/components/diff_content.vue
index d59b1136677..9a1e59ec045 100644
--- a/app/assets/javascripts/diffs/components/diff_content.vue
+++ b/app/assets/javascripts/diffs/components/diff_content.vue
@@ -45,7 +45,6 @@ export default {
computed: {
...mapState({
projectPath: state => state.diffs.projectPath,
- endpoint: state => state.diffs.endpoint,
}),
...mapGetters('diffs', ['isInlineView', 'isParallelView']),
...mapGetters('diffs', ['getCommentFormForDiffFile']),
diff --git a/app/assets/javascripts/environments/components/environment_actions.vue b/app/assets/javascripts/environments/components/environment_actions.vue
index 21244c14977..22bba21526c 100644
--- a/app/assets/javascripts/environments/components/environment_actions.vue
+++ b/app/assets/javascripts/environments/components/environment_actions.vue
@@ -40,7 +40,7 @@ export default {
),
{ jobName: action.name },
);
- // https://gitlab.com/gitlab-org/gitlab-ce/issues/52156
+ // https://gitlab.com/gitlab-org/gitlab-foss/issues/52156
// eslint-disable-next-line no-alert
if (!window.confirm(confirmationMessage)) {
return;
diff --git a/app/assets/javascripts/environments/components/environment_item.vue b/app/assets/javascripts/environments/components/environment_item.vue
index 1d4a6e64f9d..c94039326aa 100644
--- a/app/assets/javascripts/environments/components/environment_item.vue
+++ b/app/assets/javascripts/environments/components/environment_item.vue
@@ -278,7 +278,7 @@ export default {
*/
isLastDeployment() {
// name: 'last?' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives
- // Vue i18n ESLint rules issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/63560
+ // Vue i18n ESLint rules issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/63560
// eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
return this.model && this.model.last_deployment && this.model.last_deployment['last?'];
},
diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js b/app/assets/javascripts/filtered_search/filtered_search_manager.js
index d1f52b91d9e..fd335362e5b 100644
--- a/app/assets/javascripts/filtered_search/filtered_search_manager.js
+++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js
@@ -474,7 +474,7 @@ export default class FilteredSearchManager {
}
})
.catch(() => {
- // https://gitlab.com/gitlab-org/gitlab-ce/issues/30821
+ // https://gitlab.com/gitlab-org/gitlab-foss/issues/30821
});
}
diff --git a/app/assets/javascripts/image_diff/helpers/badge_helper.js b/app/assets/javascripts/image_diff/helpers/badge_helper.js
index 000157efad0..7921650e8a0 100644
--- a/app/assets/javascripts/image_diff/helpers/badge_helper.js
+++ b/app/assets/javascripts/image_diff/helpers/badge_helper.js
@@ -1,3 +1,5 @@
+import { spriteIcon } from '~/lib/utils/common_utils';
+
export function createImageBadge(noteId, { x, y }, classNames = []) {
const buttonEl = document.createElement('button');
const classList = classNames.concat(['js-image-badge']);
@@ -20,7 +22,7 @@ export function addImageBadge(containerEl, { coordinate, badgeText, noteId }) {
export function addImageCommentBadge(containerEl, { coordinate, noteId }) {
const buttonEl = createImageBadge(noteId, coordinate, ['image-comment-badge']);
- buttonEl.innerHTML = gl.utils.spriteIcon('image-comment-dark');
+ buttonEl.innerHTML = spriteIcon('image-comment-dark');
containerEl.appendChild(buttonEl);
}
diff --git a/app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js b/app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js
index 7051a968dac..df3d90cff68 100644
--- a/app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js
+++ b/app/assets/javascripts/image_diff/helpers/comment_indicator_helper.js
@@ -1,3 +1,5 @@
+import { spriteIcon } from '~/lib/utils/common_utils';
+
export function addCommentIndicator(containerEl, { x, y }) {
const buttonEl = document.createElement('button');
buttonEl.classList.add('btn-transparent');
@@ -6,7 +8,7 @@ export function addCommentIndicator(containerEl, { x, y }) {
buttonEl.style.left = `${x}px`;
buttonEl.style.top = `${y}px`;
- buttonEl.innerHTML = gl.utils.spriteIcon('image-comment-dark');
+ buttonEl.innerHTML = spriteIcon('image-comment-dark');
containerEl.appendChild(buttonEl);
}
diff --git a/app/assets/javascripts/image_diff/helpers/index.js b/app/assets/javascripts/image_diff/helpers/index.js
index 4a100631003..feeb0e8fa16 100644
--- a/app/assets/javascripts/image_diff/helpers/index.js
+++ b/app/assets/javascripts/image_diff/helpers/index.js
@@ -21,5 +21,4 @@ export default {
resizeCoordinatesToImageElement: utilsHelper.resizeCoordinatesToImageElement,
generateBadgeFromDiscussionDOM: utilsHelper.generateBadgeFromDiscussionDOM,
getTargetSelection: utilsHelper.getTargetSelection,
- initImageDiff: utilsHelper.initImageDiff,
};
diff --git a/app/assets/javascripts/image_diff/helpers/init_image_diff.js b/app/assets/javascripts/image_diff/helpers/init_image_diff.js
new file mode 100644
index 00000000000..8eef930c372
--- /dev/null
+++ b/app/assets/javascripts/image_diff/helpers/init_image_diff.js
@@ -0,0 +1,27 @@
+import ImageDiff from '../image_diff';
+import ReplacedImageDiff from '../replaced_image_diff';
+import ImageFile from '../../commit/image_file';
+
+function initImageDiff(fileEl, canCreateNote, renderCommentBadge) {
+ const options = {
+ canCreateNote,
+ renderCommentBadge,
+ };
+ let diff;
+
+ // ImageFile needs to be invoked before initImageDiff so that badges
+ // can mount to the correct location
+ new ImageFile(fileEl); // eslint-disable-line no-new
+
+ if (fileEl.querySelector('.diff-file .js-single-image')) {
+ diff = new ImageDiff(fileEl, options);
+ diff.init();
+ } else if (fileEl.querySelector('.diff-file .js-replaced-image')) {
+ diff = new ReplacedImageDiff(fileEl, options);
+ diff.init();
+ }
+
+ return diff;
+}
+
+export default { initImageDiff };
diff --git a/app/assets/javascripts/image_diff/helpers/utils_helper.js b/app/assets/javascripts/image_diff/helpers/utils_helper.js
index beec99e6934..4b383b42dff 100644
--- a/app/assets/javascripts/image_diff/helpers/utils_helper.js
+++ b/app/assets/javascripts/image_diff/helpers/utils_helper.js
@@ -1,7 +1,4 @@
import ImageBadge from '../image_badge';
-import ImageDiff from '../image_diff';
-import ReplacedImageDiff from '../replaced_image_diff';
-import ImageFile from '../../commit/image_file';
export function resizeCoordinatesToImageElement(imageEl, meta) {
const { x, y, width, height } = meta;
@@ -70,25 +67,3 @@ export function getTargetSelection(event) {
},
};
}
-
-export function initImageDiff(fileEl, canCreateNote, renderCommentBadge) {
- const options = {
- canCreateNote,
- renderCommentBadge,
- };
- let diff;
-
- // ImageFile needs to be invoked before initImageDiff so that badges
- // can mount to the correct location
- new ImageFile(fileEl); // eslint-disable-line no-new
-
- if (fileEl.querySelector('.diff-file .js-single-image')) {
- diff = new ImageDiff(fileEl, options);
- diff.init();
- } else if (fileEl.querySelector('.diff-file .js-replaced-image')) {
- diff = new ReplacedImageDiff(fileEl, options);
- diff.init();
- }
-
- return diff;
-}
diff --git a/app/assets/javascripts/image_diff/init_discussion_tab.js b/app/assets/javascripts/image_diff/init_discussion_tab.js
index dbe4c06a4e9..54ff2858206 100644
--- a/app/assets/javascripts/image_diff/init_discussion_tab.js
+++ b/app/assets/javascripts/image_diff/init_discussion_tab.js
@@ -1,4 +1,4 @@
-import imageDiffHelper from './helpers/index';
+import initImageDiffHelper from './helpers/init_image_diff';
export default () => {
// Always pass can-create-note as false because a user
@@ -8,6 +8,6 @@ export default () => {
const diffFileEls = document.querySelectorAll('.timeline-content .diff-file.js-image-file');
[...diffFileEls].forEach(diffFileEl =>
- imageDiffHelper.initImageDiff(diffFileEl, canCreateNote, renderCommentBadge),
+ initImageDiffHelper.initImageDiff(diffFileEl, canCreateNote, renderCommentBadge),
);
};
diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue
index 88975c2cc73..b8b3a4f44fd 100644
--- a/app/assets/javascripts/issue_show/components/app.vue
+++ b/app/assets/javascripts/issue_show/components/app.vue
@@ -102,10 +102,10 @@ export default {
required: false,
default: '',
},
- issuableTemplates: {
- type: Array,
+ issuableTemplateNamesPath: {
+ type: String,
required: false,
- default: () => [],
+ default: '',
},
markdownPreviewPath: {
type: String,
@@ -156,9 +156,13 @@ export default {
store,
state: store.state,
showForm: false,
+ templatesRequested: false,
};
},
computed: {
+ issuableTemplates() {
+ return this.store.formState.issuableTemplates;
+ },
formState() {
return this.store.formState;
},
@@ -233,6 +237,7 @@ export default {
}
return undefined;
},
+
updateStoreState() {
return this.service
.getData()
@@ -245,7 +250,7 @@ export default {
});
},
- openForm() {
+ updateAndShowForm(templates = []) {
if (!this.showForm) {
this.showForm = true;
this.store.setFormState({
@@ -254,9 +259,32 @@ export default {
lock_version: this.state.lock_version,
lockedWarningVisible: false,
updateLoading: false,
+ issuableTemplates: templates,
+ });
+ }
+ },
+
+ requestTemplatesAndShowForm() {
+ return this.service
+ .loadTemplates(this.issuableTemplateNamesPath)
+ .then(res => {
+ this.updateAndShowForm(res.data);
+ })
+ .catch(() => {
+ createFlash(this.defaultErrorMessage);
+ this.updateAndShowForm();
});
+ },
+
+ openForm() {
+ if (!this.templatesRequested) {
+ this.templatesRequested = true;
+ this.requestTemplatesAndShowForm();
+ } else {
+ this.updateAndShowForm(this.issuableTemplates);
}
},
+
closeForm() {
this.showForm = false;
},
diff --git a/app/assets/javascripts/issue_show/services/index.js b/app/assets/javascripts/issue_show/services/index.js
index 3c8334bee50..b1deeaae0fc 100644
--- a/app/assets/javascripts/issue_show/services/index.js
+++ b/app/assets/javascripts/issue_show/services/index.js
@@ -17,4 +17,13 @@ export default class Service {
updateIssuable(data) {
return axios.put(this.endpoint, data);
}
+
+ // eslint-disable-next-line class-methods-use-this
+ loadTemplates(templateNamesEndpoint) {
+ if (!templateNamesEndpoint) {
+ return Promise.resolve([]);
+ }
+
+ return axios.get(templateNamesEndpoint);
+ }
}
diff --git a/app/assets/javascripts/issue_show/stores/index.js b/app/assets/javascripts/issue_show/stores/index.js
index 3c17e73ccec..d32747b5053 100644
--- a/app/assets/javascripts/issue_show/stores/index.js
+++ b/app/assets/javascripts/issue_show/stores/index.js
@@ -9,6 +9,7 @@ export default class Store {
lockedWarningVisible: false,
updateLoading: false,
lock_version: 0,
+ issuableTemplates: [],
};
}
diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js
index 8cc3bc8373f..b028e9564c9 100644
--- a/app/assets/javascripts/labels_select.js
+++ b/app/assets/javascripts/labels_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable no-useless-return, func-names, no-var, no-underscore-dangle, prefer-arrow-callback, one-var, prefer-template, no-new, consistent-return, object-shorthand, no-shadow, no-param-reassign, vars-on-top, no-lonely-if, no-else-return, dot-notation, no-empty */
+/* eslint-disable no-useless-return, func-names, no-var, no-underscore-dangle, prefer-arrow-callback, one-var, prefer-template, no-new, consistent-return, no-shadow, no-param-reassign, vars-on-top, no-lonely-if, no-else-return, dot-notation, no-empty */
/* global Issuable */
/* global ListLabel */
@@ -197,8 +197,8 @@ export default class LabelsSelect {
.catch(() => flash(__('Error saving label update.')));
};
$dropdown.glDropdown({
- showMenuAbove: showMenuAbove,
- data: function(term, callback) {
+ showMenuAbove,
+ data(term, callback) {
labelUrl = $dropdown.attr('data-labels');
axios
.get(labelUrl)
@@ -231,7 +231,7 @@ export default class LabelsSelect {
})
.catch(() => flash(__('Error fetching labels.')));
},
- renderRow: function(label) {
+ renderRow(label) {
var linkEl,
listItemEl,
colorEl,
@@ -316,7 +316,7 @@ export default class LabelsSelect {
selectable: true,
filterable: true,
selected: $dropdown.data('selected') || [],
- toggleLabel: function(selected, el) {
+ toggleLabel(selected, el) {
var $dropdownParent = $dropdown.parent();
var $dropdownInputField = $dropdownParent.find('.dropdown-input-field');
var isSelected = el !== null ? el.hasClass('is-active') : false;
@@ -350,7 +350,7 @@ export default class LabelsSelect {
}
},
fieldName: $dropdown.data('fieldName'),
- id: function(label) {
+ id(label) {
if (label.id <= 0) return label.title;
if ($dropdown.hasClass('js-issuable-form-dropdown')) {
@@ -363,7 +363,7 @@ export default class LabelsSelect {
return label.id;
}
},
- hidden: function() {
+ hidden() {
var isIssueIndex, isMRIndex, page;
page = $('body').attr('data-page');
isIssueIndex = page === 'projects:issues:index';
@@ -394,7 +394,7 @@ export default class LabelsSelect {
},
multiSelect: $dropdown.hasClass('js-multiselect'),
vue: $dropdown.hasClass('js-issue-board-sidebar'),
- clicked: function(clickEvent) {
+ clicked(clickEvent) {
const { $el, e, isMarking } = clickEvent;
const label = clickEvent.selectedObj;
@@ -478,7 +478,7 @@ export default class LabelsSelect {
}
}
},
- opened: function() {
+ opened() {
if ($dropdown.hasClass('js-issue-board-sidebar')) {
const previousSelection = $dropdown.attr('data-selected');
this.selected = previousSelection ? previousSelection.split(',') : [];
diff --git a/app/assets/javascripts/lazy_loader.js b/app/assets/javascripts/lazy_loader.js
index 66f25b622e0..9e8edd05b88 100644
--- a/app/assets/javascripts/lazy_loader.js
+++ b/app/assets/javascripts/lazy_loader.js
@@ -92,7 +92,7 @@ export default class LazyLoader {
onIntersection = entries => {
entries.forEach(entry => {
// We are using `intersectionRatio > 0` over `isIntersecting`, as some browsers did not ship the latter
- // See: https://gitlab.com/gitlab-org/gitlab-ce/issues/54407
+ // See: https://gitlab.com/gitlab-org/gitlab-foss/issues/54407
if (entry.intersectionRatio > 0) {
this.intersectionObserver.unobserve(entry.target);
this.lazyImages.push(entry.target);
diff --git a/app/assets/javascripts/lib/utils/notify.js b/app/assets/javascripts/lib/utils/notify.js
index e7f6255e5f1..3439db1e326 100644
--- a/app/assets/javascripts/lib/utils/notify.js
+++ b/app/assets/javascripts/lib/utils/notify.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, consistent-return, prefer-arrow-callback, no-return-assign, object-shorthand */
+/* eslint-disable func-names, no-var, consistent-return, prefer-arrow-callback, no-return-assign */
function notificationGranted(message, opts, onclick) {
var notification;
@@ -21,8 +21,8 @@ function notifyPermissions() {
function notifyMe(message, body, icon, onclick) {
var opts;
opts = {
- body: body,
- icon: icon,
+ body,
+ icon,
};
// Let's check if the browser supports notifications
/* eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings */
diff --git a/app/assets/javascripts/locale/sprintf.js b/app/assets/javascripts/locale/sprintf.js
index 68b64a3a16a..a3557fbf3fb 100644
--- a/app/assets/javascripts/locale/sprintf.js
+++ b/app/assets/javascripts/locale/sprintf.js
@@ -9,7 +9,7 @@ import _ from 'underscore';
@returns {String} the text with parameters replaces (e.g. '5 users use us')
@see https://ruby-doc.org/core-2.3.3/Kernel.html#method-i-sprintf
- @see https://gitlab.com/gitlab-org/gitlab-ce/issues/37992
+ @see https://gitlab.com/gitlab-org/gitlab-foss/issues/37992
*/
export default (input, parameters, escapeParameters = true) => {
let output = input;
diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js
index 0ddf40b0405..49be11d466d 100644
--- a/app/assets/javascripts/main.js
+++ b/app/assets/javascripts/main.js
@@ -37,6 +37,7 @@ import GlFieldErrors from './gl_field_errors';
import initUserPopovers from './user_popovers';
import { initUserTracking } from './tracking';
import { __ } from './locale';
+import initPrivacyPolicyUpdateCallout from './privacy_policy_update_callout';
import 'ee_else_ce/main_ee';
@@ -96,6 +97,7 @@ function deferredInitialisation() {
initUsagePingConsent();
initUserPopovers();
initUserTracking();
+ initPrivacyPolicyUpdateCallout();
if (document.querySelector('.search')) initSearchAutocomplete();
diff --git a/app/assets/javascripts/merge_conflicts/components/diff_file_editor.js b/app/assets/javascripts/merge_conflicts/components/diff_file_editor.js
index a62ebe23646..70b18d9728d 100644
--- a/app/assets/javascripts/merge_conflicts/components/diff_file_editor.js
+++ b/app/assets/javascripts/merge_conflicts/components/diff_file_editor.js
@@ -1,4 +1,4 @@
-/* eslint-disable no-useless-computed-key, object-shorthand, no-param-reassign */
+/* eslint-disable no-param-reassign */
/* global ace */
import Vue from 'vue';
@@ -42,7 +42,7 @@ import getModeByFileExtension from '~/lib/utils/ace_utils';
},
},
watch: {
- ['file.showEditor'](val) {
+ 'file.showEditor': function showEditorWatcher(val) {
this.resetEditorContent();
if (!val || this.fileLoaded || this.loading) {
diff --git a/app/assets/javascripts/merge_conflicts/merge_conflict_store.js b/app/assets/javascripts/merge_conflicts/merge_conflict_store.js
index 88bc0940741..e7fcc183715 100644
--- a/app/assets/javascripts/merge_conflicts/merge_conflict_store.js
+++ b/app/assets/javascripts/merge_conflicts/merge_conflict_store.js
@@ -1,4 +1,4 @@
-/* eslint-disable object-shorthand, no-param-reassign, camelcase, no-nested-ternary, no-continue */
+/* eslint-disable no-param-reassign, camelcase, no-nested-ternary, no-continue */
import $ from 'jquery';
import Vue from 'vue';
@@ -31,7 +31,7 @@ import { s__ } from '~/locale';
hasError: false,
isSubmitting: false,
isParallel: diffViewType === VIEW_TYPES.PARALLEL,
- diffViewType: diffViewType,
+ diffViewType,
conflictsData: {},
},
@@ -188,7 +188,7 @@ import { s__ } from '~/locale';
getHeadHeaderLine(id) {
return {
- id: id,
+ id,
richText: HEAD_HEADER_TEXT,
buttonTitle: HEAD_BUTTON_TITLE,
type: 'new',
@@ -233,7 +233,7 @@ import { s__ } from '~/locale';
getOriginHeaderLine(id) {
return {
- id: id,
+ id,
richText: ORIGIN_HEADER_TEXT,
buttonTitle: ORIGIN_BUTTON_TITLE,
type: 'old',
diff --git a/app/assets/javascripts/milestone_select.js b/app/assets/javascripts/milestone_select.js
index 9c0d55326ee..1738dbe439c 100644
--- a/app/assets/javascripts/milestone_select.js
+++ b/app/assets/javascripts/milestone_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable one-var, object-shorthand, no-else-return, no-self-compare, consistent-return, no-param-reassign, no-shadow */
+/* eslint-disable one-var, no-else-return, no-self-compare, consistent-return, no-param-reassign, no-shadow */
/* global Issuable */
/* global ListMilestone */
@@ -65,7 +65,7 @@ export default class MilestoneSelect {
milestoneLinkNoneTemplate = `<span class="no-value">${__('None')}</span>`;
}
return $dropdown.glDropdown({
- showMenuAbove: showMenuAbove,
+ showMenuAbove,
data: (term, callback) =>
axios.get(milestonesUrl).then(({ data }) => {
const extraOptions = [];
@@ -126,7 +126,7 @@ export default class MilestoneSelect {
return defaultLabel;
}
},
- defaultLabel: defaultLabel,
+ defaultLabel,
fieldName: $dropdown.data('fieldName'),
text: milestone => _.escape(milestone.title),
id: milestone => {
diff --git a/app/assets/javascripts/monitoring/components/charts/time_series.vue b/app/assets/javascripts/monitoring/components/charts/time_series.vue
index 5f1d742d952..f3f3bf15295 100644
--- a/app/assets/javascripts/monitoring/components/charts/time_series.vue
+++ b/app/assets/javascripts/monitoring/components/charts/time_series.vue
@@ -1,6 +1,5 @@
<script>
import { __ } from '~/locale';
-import { mapState } from 'vuex';
import { GlLink, GlButton } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import dateFormat from 'dateformat';
@@ -70,7 +69,6 @@ export default {
};
},
computed: {
- ...mapState('monitoringDashboard', ['exportMetricsToCsvEnabled']),
chartData() {
// Transforms & supplements query data to render appropriate labels & styles
// Input: [{ queryAttributes1 }, { queryAttributes2 }]
@@ -190,18 +188,6 @@ export default {
yAxisLabel() {
return `${this.graphData.y_label}`;
},
- csvText() {
- const chartData = this.chartData[0].data;
- const header = `timestamp,${this.graphData.y_label}\r\n`; // eslint-disable-line @gitlab/i18n/no-non-i18n-strings
- return chartData.reduce((csv, data) => {
- const row = data.join(',');
- return `${csv}${row}\r\n`;
- }, header);
- },
- downloadLink() {
- const data = new Blob([this.csvText], { type: 'text/plain' });
- return window.URL.createObjectURL(data);
- },
},
watch: {
containerWidth: 'onResize',
@@ -270,16 +256,6 @@ export default {
<div class="prometheus-graph">
<div class="prometheus-graph-header">
<h5 class="prometheus-graph-title js-graph-title">{{ graphData.title }}</h5>
- <gl-button
- v-if="exportMetricsToCsvEnabled"
- :href="downloadLink"
- :title="__('Download CSV')"
- :aria-label="__('Download CSV')"
- style="margin-left: 200px;"
- download="chart_metrics.csv"
- >
- {{ __('Download CSV') }}
- </gl-button>
<div class="prometheus-graph-widgets js-graph-widgets">
<slot></slot>
</div>
diff --git a/app/assets/javascripts/monitoring/components/dashboard.vue b/app/assets/javascripts/monitoring/components/dashboard.vue
index 7a5a3789bd6..12a4c83e053 100644
--- a/app/assets/javascripts/monitoring/components/dashboard.vue
+++ b/app/assets/javascripts/monitoring/components/dashboard.vue
@@ -262,7 +262,7 @@ export default {
return window.URL.createObjectURL(data);
},
// TODO: BEGIN, Duplicated code with panel_type until feature flag is removed
- // Issue number: https://gitlab.com/gitlab-org/gitlab-ce/issues/63845
+ // Issue number: https://gitlab.com/gitlab-org/gitlab-foss/issues/63845
getGraphAlerts(queries) {
if (!this.allAlerts) return {};
const metricIdsForChart = queries.map(q => q.metricId);
diff --git a/app/assets/javascripts/namespace_select.js b/app/assets/javascripts/namespace_select.js
index 2ef081837e6..4ddbec71ba6 100644
--- a/app/assets/javascripts/namespace_select.js
+++ b/app/assets/javascripts/namespace_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, object-shorthand, no-else-return, prefer-template, prefer-arrow-callback */
+/* eslint-disable func-names, no-else-return, prefer-template, prefer-arrow-callback */
import $ from 'jquery';
import Api from './api';
@@ -18,15 +18,15 @@ export default class NamespaceSelect {
search: {
fields: ['path'],
},
- fieldName: fieldName,
- toggleLabel: function(selected) {
+ fieldName,
+ toggleLabel(selected) {
if (selected.id == null) {
return selected.text;
} else {
return selected.kind + ': ' + selected.full_path;
}
},
- data: function(term, dataCallback) {
+ data(term, dataCallback) {
return Api.namespaces(term, function(namespaces) {
if (isFilter) {
const anyNamespace = {
@@ -39,7 +39,7 @@ export default class NamespaceSelect {
return dataCallback(namespaces);
});
},
- text: function(namespace) {
+ text(namespace) {
if (namespace.id == null) {
return namespace.text;
} else {
diff --git a/app/assets/javascripts/notes/components/discussion_actions.vue b/app/assets/javascripts/notes/components/discussion_actions.vue
index e3be91a4966..6bbf2fa6ee4 100644
--- a/app/assets/javascripts/notes/components/discussion_actions.vue
+++ b/app/assets/javascripts/notes/components/discussion_actions.vue
@@ -36,10 +36,11 @@ export default {
},
},
computed: {
+ resolvableNotes() {
+ return this.discussion.notes.filter(x => x.resolvable);
+ },
userCanResolveDiscussion() {
- return this.discussion.notes.every(
- note => note.current_user && note.current_user.can_resolve,
- );
+ return this.resolvableNotes.every(note => note.current_user && note.current_user.can_resolve);
},
},
};
diff --git a/app/assets/javascripts/notes/components/noteable_note.vue b/app/assets/javascripts/notes/components/noteable_note.vue
index 9019f0542b6..fa8fc7d02e4 100644
--- a/app/assets/javascripts/notes/components/noteable_note.vue
+++ b/app/assets/javascripts/notes/components/noteable_note.vue
@@ -98,7 +98,7 @@ export default {
// We need to do this to ensure we have the correct sentence order
// when translating this as the sentence order may change from one
// language to the next. See:
- // https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24427#note_133713771
+ // https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24427#note_133713771
const { id, url } = this.commit;
const commitLink = `<a class="commit-sha monospace" href="${escape(url)}">${truncateSha(
id,
diff --git a/app/assets/javascripts/pages/projects/graphs/show/stat_graph_contributors_util.js b/app/assets/javascripts/pages/projects/graphs/show/stat_graph_contributors_util.js
index ec3919dd073..505ca938f40 100644
--- a/app/assets/javascripts/pages/projects/graphs/show/stat_graph_contributors_util.js
+++ b/app/assets/javascripts/pages/projects/graphs/show/stat_graph_contributors_util.js
@@ -1,8 +1,8 @@
-/* eslint-disable func-names, object-shorthand, no-var, one-var, camelcase, no-param-reassign, no-return-assign, prefer-arrow-callback, consistent-return, no-cond-assign, no-else-return */
+/* eslint-disable func-names, no-var, one-var, camelcase, no-param-reassign, no-return-assign, prefer-arrow-callback, consistent-return, no-cond-assign, no-else-return */
import _ from 'underscore';
export default {
- parse_log: function(log) {
+ parse_log(log) {
var by_author, by_email, data, entry, i, len, total, normalized_email;
total = {};
by_author = {};
@@ -25,15 +25,15 @@ export default {
total = _.toArray(total);
by_author = _.toArray(by_author);
return {
- total: total,
- by_author: by_author,
+ total,
+ by_author,
};
},
- add_date: function(date, collection) {
+ add_date(date, collection) {
collection[date] = {};
return (collection[date].date = date);
},
- add_author: function(author, by_author, by_email) {
+ add_author(author, by_author, by_email) {
var data, normalized_email;
data = {};
data.author_name = author.author_name;
@@ -43,36 +43,36 @@ export default {
by_email[normalized_email] = data;
return data;
},
- store_data: function(entry, total, by_author) {
+ store_data(entry, total, by_author) {
this.store_commits(total, by_author);
this.store_additions(entry, total, by_author);
return this.store_deletions(entry, total, by_author);
},
- store_commits: function(total, by_author) {
+ store_commits(total, by_author) {
this.add(total, 'commits', 1);
return this.add(by_author, 'commits', 1);
},
- add: function(collection, field, value) {
+ add(collection, field, value) {
if (collection[field] == null) {
collection[field] = 0;
}
return (collection[field] += value);
},
- store_additions: function(entry, total, by_author) {
+ store_additions(entry, total, by_author) {
if (entry.additions == null) {
entry.additions = 0;
}
this.add(total, 'additions', entry.additions);
return this.add(by_author, 'additions', entry.additions);
},
- store_deletions: function(entry, total, by_author) {
+ store_deletions(entry, total, by_author) {
if (entry.deletions == null) {
entry.deletions = 0;
}
this.add(total, 'deletions', entry.deletions);
return this.add(by_author, 'deletions', entry.deletions);
},
- get_total_data: function(parsed_log, field) {
+ get_total_data(parsed_log, field) {
var log, total_data;
log = parsed_log.total;
total_data = this.pick_field(log, field);
@@ -80,7 +80,7 @@ export default {
return d.date;
});
},
- pick_field: function(log, field) {
+ pick_field(log, field) {
var total_data;
total_data = [];
_.each(log, function(d) {
@@ -88,7 +88,7 @@ export default {
});
return total_data;
},
- get_author_data: function(parsed_log, field, date_range) {
+ get_author_data(parsed_log, field, date_range) {
var author_data, log;
if (date_range == null) {
date_range = null;
@@ -111,7 +111,7 @@ export default {
return d[field];
}).reverse();
},
- parse_log_entry: function(log_entry, field, date_range) {
+ parse_log_entry(log_entry, field, date_range) {
var parsed_entry;
parsed_entry = {};
@@ -138,7 +138,7 @@ export default {
);
return parsed_entry;
},
- in_range: function(date, date_range) {
+ in_range(date, date_range) {
var ref;
if (date_range === null || (date_range[0] <= (ref = new Date(date)) && ref <= date_range[1])) {
return true;
diff --git a/app/assets/javascripts/pages/projects/project.js b/app/assets/javascripts/pages/projects/project.js
index 33e9a8e9d56..b99408e3609 100644
--- a/app/assets/javascripts/pages/projects/project.js
+++ b/app/assets/javascripts/pages/projects/project.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, no-return-assign, object-shorthand, vars-on-top */
+/* eslint-disable func-names, no-var, no-return-assign, vars-on-top */
import $ from 'jquery';
import Cookies from 'js-cookie';
@@ -123,7 +123,7 @@ export default class Project {
filterByText: true,
inputFieldName: $dropdown.data('inputFieldName'),
fieldName,
- renderRow: function(ref) {
+ renderRow(ref) {
var li = refListItem.cloneNode(false);
if (ref.header != null) {
@@ -144,13 +144,13 @@ export default class Project {
return li;
},
- id: function(obj, $el) {
+ id(obj, $el) {
return $el.attr('data-ref');
},
- toggleLabel: function(obj, $el) {
+ toggleLabel(obj, $el) {
return $el.text().trim();
},
- clicked: function(options) {
+ clicked(options) {
const { e } = options;
e.preventDefault();
if ($(`input[name="${fieldName}"]`).length) {
diff --git a/app/assets/javascripts/pipelines/components/graph/graph_component.vue b/app/assets/javascripts/pipelines/components/graph/graph_component.vue
index 27c1b639889..cfc72327ef7 100644
--- a/app/assets/javascripts/pipelines/components/graph/graph_component.vue
+++ b/app/assets/javascripts/pipelines/components/graph/graph_component.vue
@@ -2,35 +2,43 @@
import { GlLoadingIcon } from '@gitlab/ui';
import StageColumnComponent from './stage_column_component.vue';
import GraphMixin from '../../mixins/graph_component_mixin';
+import GraphWidthMixin from '~/pipelines/mixins/graph_width_mixin';
export default {
components: {
StageColumnComponent,
GlLoadingIcon,
},
- mixins: [GraphMixin],
+ mixins: [GraphMixin, GraphWidthMixin],
};
</script>
<template>
<div class="build-content middle-block js-pipeline-graph">
<div class="pipeline-visualization pipeline-graph pipeline-tab-content">
- <div v-if="isLoading" class="m-auto"><gl-loading-icon :size="3" /></div>
+ <div
+ :style="{
+ paddingLeft: `${graphLeftPadding}px`,
+ paddingRight: `${graphRightPadding}px`,
+ }"
+ >
+ <gl-loading-icon v-if="isLoading" class="m-auto" :size="3" />
- <ul v-if="!isLoading" class="stage-column-list">
- <stage-column-component
- v-for="(stage, index) in graph"
- :key="stage.name"
- :class="{
- 'append-right-48': shouldAddRightMargin(index),
- }"
- :title="capitalizeStageName(stage.name)"
- :groups="stage.groups"
- :stage-connector-class="stageConnectorClass(index, stage)"
- :is-first-column="isFirstColumn(index)"
- :action="stage.status.action"
- @refreshPipelineGraph="refreshPipelineGraph"
- />
- </ul>
+ <ul v-if="!isLoading" class="stage-column-list">
+ <stage-column-component
+ v-for="(stage, index) in graph"
+ :key="stage.name"
+ :class="{
+ 'append-right-48': shouldAddRightMargin(index),
+ }"
+ :title="capitalizeStageName(stage.name)"
+ :groups="stage.groups"
+ :stage-connector-class="stageConnectorClass(index, stage)"
+ :is-first-column="isFirstColumn(index)"
+ :action="stage.status.action"
+ @refreshPipelineGraph="refreshPipelineGraph"
+ />
+ </ul>
+ </div>
</div>
</div>
</template>
diff --git a/app/assets/javascripts/pipelines/components/pipelines_actions.vue b/app/assets/javascripts/pipelines/components/pipelines_actions.vue
index 4b2d816c6a0..9764e32955c 100644
--- a/app/assets/javascripts/pipelines/components/pipelines_actions.vue
+++ b/app/assets/javascripts/pipelines/components/pipelines_actions.vue
@@ -37,7 +37,7 @@ export default {
),
{ jobName: action.name },
);
- // https://gitlab.com/gitlab-org/gitlab-ce/issues/52156
+ // https://gitlab.com/gitlab-org/gitlab-foss/issues/52156
// eslint-disable-next-line no-alert
if (!window.confirm(confirmationMessage)) {
return;
diff --git a/app/assets/javascripts/pipelines/constants.js b/app/assets/javascripts/pipelines/constants.js
index eaa11a84cb9..d27829db50c 100644
--- a/app/assets/javascripts/pipelines/constants.js
+++ b/app/assets/javascripts/pipelines/constants.js
@@ -1,2 +1,3 @@
export const CANCEL_REQUEST = 'CANCEL_REQUEST';
export const PIPELINES_TABLE = 'PIPELINES_TABLE';
+export const LAYOUT_CHANGE_DELAY = 300;
diff --git a/app/assets/javascripts/pipelines/mixins/graph_width_mixin.js b/app/assets/javascripts/pipelines/mixins/graph_width_mixin.js
new file mode 100644
index 00000000000..2dbaa5a5c9a
--- /dev/null
+++ b/app/assets/javascripts/pipelines/mixins/graph_width_mixin.js
@@ -0,0 +1,50 @@
+import { debounceByAnimationFrame } from '~/lib/utils/common_utils';
+import { LAYOUT_CHANGE_DELAY } from '~/pipelines/constants';
+
+export default {
+ debouncedResize: null,
+ sidebarMutationObserver: null,
+ data() {
+ return {
+ graphLeftPadding: 0,
+ graphRightPadding: 0,
+ };
+ },
+ beforeDestroy() {
+ window.removeEventListener('resize', this.$options.debouncedResize);
+
+ if (this.$options.sidebarMutationObserver) {
+ this.$options.sidebarMutationObserver.disconnect();
+ }
+ },
+ created() {
+ this.$options.debouncedResize = debounceByAnimationFrame(this.setGraphPadding);
+ window.addEventListener('resize', this.$options.debouncedResize);
+ },
+ mounted() {
+ this.setGraphPadding();
+
+ this.$options.sidebarMutationObserver = new MutationObserver(this.handleLayoutChange);
+ this.$options.sidebarMutationObserver.observe(document.querySelector('.layout-page'), {
+ attributes: true,
+ childList: false,
+ subtree: false,
+ });
+ },
+ methods: {
+ setGraphPadding() {
+ // only add padding to main graph (not inline upstream/downstream graphs)
+ if (this.type && this.type !== 'main') return;
+
+ const container = document.querySelector('.js-pipeline-container');
+ if (!container) return;
+
+ this.graphLeftPadding = container.offsetLeft;
+ this.graphRightPadding = window.innerWidth - container.offsetLeft - container.offsetWidth;
+ },
+ handleLayoutChange() {
+ // wait until animations finish, then recalculate padding
+ window.setTimeout(this.setGraphPadding, LAYOUT_CHANGE_DELAY);
+ },
+ },
+};
diff --git a/app/assets/javascripts/privacy_policy_update_callout.js b/app/assets/javascripts/privacy_policy_update_callout.js
index 126b1ee1132..97f41deb30f 100644
--- a/app/assets/javascripts/privacy_policy_update_callout.js
+++ b/app/assets/javascripts/privacy_policy_update_callout.js
@@ -1,7 +1,7 @@
import PersistentUserCallout from '~/persistent_user_callout';
function initPrivacyPolicyUpdateCallout() {
- const callout = document.querySelector('.privacy-policy-update-64341');
+ const callout = document.querySelector('.js-privacy-policy-update');
PersistentUserCallout.factory(callout);
}
diff --git a/app/assets/javascripts/profile/gl_crop.js b/app/assets/javascripts/profile/gl_crop.js
index 6a07ccc7586..44bc2d9f5f8 100644
--- a/app/assets/javascripts/profile/gl_crop.js
+++ b/app/assets/javascripts/profile/gl_crop.js
@@ -1,4 +1,4 @@
-/* eslint-disable no-useless-escape, no-var, no-underscore-dangle, func-names, no-return-assign, object-shorthand, one-var, consistent-return, class-methods-use-this */
+/* eslint-disable no-useless-escape, no-var, no-underscore-dangle, func-names, no-return-assign, one-var, consistent-return, class-methods-use-this */
import $ from 'jquery';
import 'cropper';
@@ -100,7 +100,7 @@ import _ from 'underscore';
cropBoxMovable: false,
cropBoxResizable: false,
toggleDragModeOnDblclick: false,
- built: function() {
+ built() {
const $image = $(this);
const container = $image.cropper('getContainerData');
const { cropBoxWidth, cropBoxHeight } = _this;
diff --git a/app/assets/javascripts/project_select.js b/app/assets/javascripts/project_select.js
index dbe354a547b..88665ed2ab7 100644
--- a/app/assets/javascripts/project_select.js
+++ b/app/assets/javascripts/project_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, no-var, object-shorthand, one-var, no-else-return */
+/* eslint-disable func-names, no-var, one-var, no-else-return */
import $ from 'jquery';
import Api from './api';
@@ -28,7 +28,7 @@ export default function projectSelect() {
}
$(select).select2({
- placeholder: placeholder,
+ placeholder,
minimumInputLength: 0,
query: (function(_this) {
return function(query) {
@@ -79,18 +79,18 @@ export default function projectSelect() {
}
};
})(this),
- id: function(project) {
+ id(project) {
if (simpleFilter) return project.id;
return JSON.stringify({
name: project.name,
url: project.web_url,
});
},
- text: function(project) {
+ text(project) {
return project.name_with_namespace || project.name;
},
- initSelection: function(el, callback) {
+ initSelection(el, callback) {
return Api.project(el.val()).then(({ data }) => callback(data));
},
diff --git a/app/assets/javascripts/search_autocomplete.js b/app/assets/javascripts/search_autocomplete.js
index f02c55c3d5b..2f37dcec197 100644
--- a/app/assets/javascripts/search_autocomplete.js
+++ b/app/assets/javascripts/search_autocomplete.js
@@ -1,4 +1,4 @@
-/* eslint-disable no-return-assign, one-var, no-var, consistent-return, object-shorthand, prefer-template, class-methods-use-this, no-lonely-if, vars-on-top */
+/* eslint-disable no-return-assign, one-var, no-var, consistent-return, prefer-template, class-methods-use-this, no-lonely-if, vars-on-top */
import $ from 'jquery';
import { escape, throttle } from 'underscore';
@@ -171,7 +171,7 @@ export class SearchAutocomplete {
params: {
project_id: this.projectId,
project_ref: this.projectRef,
- term: term,
+ term,
},
})
.then(response => {
diff --git a/app/assets/javascripts/single_file_diff.js b/app/assets/javascripts/single_file_diff.js
index f2b9d75dd00..b70e384fae5 100644
--- a/app/assets/javascripts/single_file_diff.js
+++ b/app/assets/javascripts/single_file_diff.js
@@ -5,7 +5,7 @@ import { __ } from './locale';
import axios from './lib/utils/axios_utils';
import createFlash from './flash';
import FilesCommentButton from './files_comment_button';
-import imageDiffHelper from './image_diff/helpers/index';
+import initImageDiffHelper from './image_diff/helpers/init_image_diff';
import syntaxHighlight from './syntax_highlight';
const WRAPPER = '<div class="diff-content"></div>';
@@ -101,7 +101,7 @@ export default class SingleFileDiff {
FilesCommentButton.init($file);
const canCreateNote = $file.closest('.files').is('[data-can-create-note]');
- imageDiffHelper.initImageDiff($file[0], canCreateNote);
+ initImageDiffHelper.initImageDiff($file[0], canCreateNote);
if (cb) cb();
})
diff --git a/app/assets/javascripts/tracking.js b/app/assets/javascripts/tracking.js
index 03281b5ef49..1b4ca1d5741 100644
--- a/app/assets/javascripts/tracking.js
+++ b/app/assets/javascripts/tracking.js
@@ -10,12 +10,8 @@ const DEFAULT_SNOWPLOW_OPTIONS = {
forceSecureTracker: true,
eventMethod: 'post',
contexts: { webPage: true },
- // Page tracking tracks a single event when the page loads.
- pageTrackingEnabled: false,
- // Activity tracking tracks when a user is still interacting with the page.
- // Events like scrolling and mouse movements are used to determine if the
- // user has the tab active and is still actively engaging.
- activityTrackingEnabled: false,
+ formTracking: false,
+ linkClickTracking: false,
};
const extractData = (el, opts = {}) => {
@@ -96,6 +92,9 @@ export function initUserTracking() {
const opts = Object.assign({}, DEFAULT_SNOWPLOW_OPTIONS, window.snowplowOptions);
window.snowplow('newTracker', opts.namespace, opts.hostname, opts);
- if (opts.activityTrackingEnabled) window.snowplow('enableActivityTracking', 30, 30);
- if (opts.pageTrackingEnabled) window.snowplow('trackPageView'); // must be after enableActivityTracking
+ window.snowplow('enableActivityTracking', 30, 30);
+ window.snowplow('trackPageView'); // must be after enableActivityTracking
+
+ if (opts.formTracking) window.snowplow('enableFormTracking');
+ if (opts.linkClickTracking) window.snowplow('enableLinkClickTracking');
}
diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js
index 4b3c42ae848..e78ca56be0e 100644
--- a/app/assets/javascripts/users_select.js
+++ b/app/assets/javascripts/users_select.js
@@ -1,4 +1,4 @@
-/* eslint-disable func-names, one-var, no-var, prefer-rest-params, vars-on-top, prefer-arrow-callback, consistent-return, object-shorthand, no-shadow, no-else-return, no-self-compare, prefer-template, no-unused-expressions, yoda, prefer-spread, camelcase, no-param-reassign */
+/* eslint-disable func-names, one-var, no-var, prefer-rest-params, vars-on-top, prefer-arrow-callback, consistent-return, no-shadow, no-else-return, no-self-compare, prefer-template, no-unused-expressions, yoda, prefer-spread, camelcase, no-param-reassign */
/* global Issuable */
/* global emitSidebarEvent */
@@ -248,8 +248,8 @@ function UsersSelect(currentUser, els, options = {}) {
})}</span> <% } %>`,
);
return $dropdown.glDropdown({
- showMenuAbove: showMenuAbove,
- data: function(term, callback) {
+ showMenuAbove,
+ data(term, callback) {
return _this.users(
term,
options,
@@ -261,7 +261,7 @@ function UsersSelect(currentUser, els, options = {}) {
}.bind(this),
);
},
- processData: function(term, data, callback) {
+ processData(term, data, callback) {
let users = data;
// Only show assigned user list when there is no search term
@@ -326,7 +326,7 @@ function UsersSelect(currentUser, els, options = {}) {
}
anyUser = {
beforeDivider: true,
- name: name,
+ name,
id: null,
};
users.unshift(anyUser);
@@ -376,7 +376,7 @@ function UsersSelect(currentUser, els, options = {}) {
},
selectable: true,
fieldName: $dropdown.data('fieldName'),
- toggleLabel: function(selected, el, glDropdown) {
+ toggleLabel(selected, el, glDropdown) {
const inputValue = glDropdown.filterInput.val();
if (this.multiSelect && inputValue === '') {
@@ -404,8 +404,8 @@ function UsersSelect(currentUser, els, options = {}) {
return defaultLabel;
}
},
- defaultLabel: defaultLabel,
- hidden: function() {
+ defaultLabel,
+ hidden() {
if ($dropdown.hasClass('js-multiselect')) {
emitSidebarEvent('sidebar.saveAssignees');
}
@@ -422,7 +422,7 @@ function UsersSelect(currentUser, els, options = {}) {
},
multiSelect: $dropdown.hasClass('js-multiselect'),
inputMeta: $dropdown.data('inputMeta'),
- clicked: function(options) {
+ clicked(options) {
const { $el, e, isMarking } = options;
const user = options.selectedObj;
@@ -522,10 +522,10 @@ function UsersSelect(currentUser, els, options = {}) {
$dropdown.dropdown('toggle');
}
},
- id: function(user) {
+ id(user) {
return user.id;
},
- opened: function(e) {
+ opened(e) {
const $el = $(e.currentTarget);
const selected = getSelected();
if ($dropdown.hasClass('js-issue-board-sidebar') && selected.length === 0) {
@@ -546,7 +546,7 @@ function UsersSelect(currentUser, els, options = {}) {
}
},
updateLabel: $dropdown.data('dropdownTitle'),
- renderRow: function(user) {
+ renderRow(user) {
var avatar, img, username;
username = user.username ? '@' + user.username : '';
avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;
@@ -605,7 +605,7 @@ function UsersSelect(currentUser, els, options = {}) {
placeholder: __('Search for a user'),
multiple: $(select).hasClass('multiselect'),
minimumInputLength: 0,
- query: function(query) {
+ query(query) {
return _this.users(query.term, options, function(users) {
var anyUser, data, emailUser, index, len, name, nullUser, obj, ref;
data = {
@@ -638,7 +638,7 @@ function UsersSelect(currentUser, els, options = {}) {
name = s__('UsersSelect|Any User');
}
anyUser = {
- name: name,
+ name,
id: null,
};
data.results.unshift(anyUser);
@@ -661,24 +661,24 @@ function UsersSelect(currentUser, els, options = {}) {
return query.callback(data);
});
},
- initSelection: function() {
+ initSelection() {
var args;
args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.initSelection.apply(_this, args);
},
- formatResult: function() {
+ formatResult() {
var args;
args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.formatResult.apply(_this, args);
},
- formatSelection: function() {
+ formatSelection() {
var args;
args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [];
return _this.formatSelection.apply(_this, args);
},
dropdownCssClass: 'ajax-users-dropdown',
// we do not want to escape markup since we are displaying html in results
- escapeMarkup: function(m) {
+ escapeMarkup(m) {
return m;
},
});
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
index e294e1de976..2c113770d8b 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue
@@ -88,7 +88,8 @@ export default {
mergeButtonText() {
if (this.isMergingImmediately) {
return __('Merge in progress');
- } else if (this.isAutoMergeAvailable) {
+ }
+ if (this.isAutoMergeAvailable) {
return this.autoMergeText;
}
@@ -306,7 +307,7 @@ export default {
</template>
<template v-else>
<span class="bold js-resolve-mr-widget-items-message">
- {{ __('You can only merge once the items above are resolved') }}
+ {{ mergeDisabledText }}
</span>
</template>
</div>
diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
index eef49e20159..40e6203599f 100644
--- a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
+++ b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js
@@ -1,5 +1,7 @@
import { __ } from '~/locale';
+export const MERGE_DISABLED_TEXT = __('You can only merge once the items above are resolved.');
+
export default {
computed: {
isMergeButtonDisabled() {
@@ -11,6 +13,9 @@ export default {
this.mr.preventMerge,
);
},
+ mergeDisabledText() {
+ return MERGE_DISABLED_TEXT;
+ },
autoMergeText() {
// MWPS is currently the only auto merge strategy available in CE
return __('Merge when pipeline succeeds');
diff --git a/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js b/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
index f637a44bf2d..8a229d80954 100644
--- a/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
+++ b/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
@@ -37,7 +37,7 @@ export default class MRWidgetService {
// two endpoints are requested in order to get MR info:
// one which is etag-cached and invalidated and another one which is not cached
// the idea is to move all the fields to etag-cached endpoint and then perform only one request
- // https://gitlab.com/gitlab-org/gitlab-ce/issues/61559#note_188801390
+ // https://gitlab.com/gitlab-org/gitlab-foss/issues/61559#note_188801390
const getData = axios.get(this.endpoints.mergeRequestWidgetPath);
const getCachedData = axios.get(this.endpoints.mergeRequestCachedWidgetPath);
diff --git a/app/assets/javascripts/vue_shared/components/ci_badge_link.vue b/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
index b0962684430..0e0bb8735b4 100644
--- a/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
+++ b/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
@@ -7,7 +7,7 @@ import CiIcon from './ci_icon.vue';
*
* Receives status object containing:
* status: {
- * details_path: "/gitlab-org/gitlab-ce/pipelines/8150156" // url
+ * details_path: "/gitlab-org/gitlab-foss/pipelines/8150156" // url
* group:"running" // used for CSS class
* icon: "icon_status_running" // used to render the icon
* label:"running" // used for potential tooltip
diff --git a/app/assets/javascripts/vue_shared/components/ci_icon.vue b/app/assets/javascripts/vue_shared/components/ci_icon.vue
index 25f80219993..5d373e179b2 100644
--- a/app/assets/javascripts/vue_shared/components/ci_icon.vue
+++ b/app/assets/javascripts/vue_shared/components/ci_icon.vue
@@ -6,7 +6,7 @@ import Icon from '../../vue_shared/components/icon.vue';
*
* Receives status object containing:
* status: {
- * details_path: "/gitlab-org/gitlab-ce/pipelines/8150156" // url
+ * details_path: "/gitlab-org/gitlab-foss/pipelines/8150156" // url
* group:"running" // used for CSS class
* icon: "icon_status_running" // used to render the icon
* label:"running" // used for potential tooltip
diff --git a/app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue b/app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue
index 596fd48f96a..7f0345c7ec0 100644
--- a/app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue
+++ b/app/assets/javascripts/vue_shared/components/project_selector/project_selector.vue
@@ -1,6 +1,6 @@
<script>
import _ from 'underscore';
-import { GlLoadingIcon } from '@gitlab/ui';
+import { GlLoadingIcon, GlSearchBoxByType } from '@gitlab/ui';
import ProjectListItem from './project_list_item.vue';
const SEARCH_INPUT_TIMEOUT_MS = 500;
@@ -9,6 +9,7 @@ export default {
name: 'ProjectSelector',
components: {
GlLoadingIcon,
+ GlSearchBoxByType,
ProjectListItem,
},
props: {
@@ -53,9 +54,6 @@ export default {
isSelected(project) {
return Boolean(_.findWhere(this.selectedProjects, { id: project.id }));
},
- focusSearchInput() {
- this.$refs.searchInput.focus();
- },
onInput: _.debounce(function debouncedOnInput() {
this.$emit('searched', this.searchQuery);
}, SEARCH_INPUT_TIMEOUT_MS),
@@ -64,12 +62,11 @@ export default {
</script>
<template>
<div>
- <input
- ref="searchInput"
+ <gl-search-box-by-type
v-model="searchQuery"
:placeholder="__('Search your projects')"
type="search"
- class="form-control mb-3 js-project-selector-input"
+ class="mb-3"
autofocus
@input="onInput"
/>
diff --git a/app/assets/stylesheets/bootstrap_migration.scss b/app/assets/stylesheets/bootstrap_migration.scss
index 29473da21cc..c9b00e5ff27 100644
--- a/app/assets/stylesheets/bootstrap_migration.scss
+++ b/app/assets/stylesheets/bootstrap_migration.scss
@@ -342,7 +342,7 @@ input[type=color].form-control {
/*
Bootstrap 4.1.2 introduced a new default vertical alignment which breaks our icons,
so we need to reset the vertical alignment to the default value. See:
- - https://gitlab.com/gitlab-org/gitlab-ce/issues/51362
+ - https://gitlab.com/gitlab-org/gitlab-foss/issues/51362
*/
svg {
vertical-align: baseline;
diff --git a/app/assets/stylesheets/framework/flash.scss b/app/assets/stylesheets/framework/flash.scss
index af05d069f97..7e7b08797b2 100644
--- a/app/assets/stylesheets/framework/flash.scss
+++ b/app/assets/stylesheets/framework/flash.scss
@@ -131,16 +131,16 @@ $notification-box-shadow-color: rgba(0, 0, 0, 0.25);
}
}
-.with-system-header .flash-container {
+.with-system-header .flash-container.sticky {
top: $flash-container-top + $system-header-height;
}
.with-performance-bar {
- .flash-container {
+ .flash-container.sticky {
top: $flash-container-top + $performance-bar-height;
}
- &.with-system-header .flash-container {
+ &.with-system-header .flash-container.sticky {
top: $flash-container-top + $performance-bar-height + $system-header-height;
}
}
diff --git a/app/assets/stylesheets/framework/highlight.scss b/app/assets/stylesheets/framework/highlight.scss
index 983bd032da4..58516cbd1a9 100644
--- a/app/assets/stylesheets/framework/highlight.scss
+++ b/app/assets/stylesheets/framework/highlight.scss
@@ -71,7 +71,7 @@
}
// Vertically aligns <table> line numbers (eg. blame view)
-// see https://gitlab.com/gitlab-org/gitlab-ce/issues/54048
+// see https://gitlab.com/gitlab-org/gitlab-foss/issues/54048
td.line-numbers {
line-height: 1;
}
diff --git a/app/assets/stylesheets/mailers/highlighted_diff_email.scss b/app/assets/stylesheets/mailers/highlighted_diff_email.scss
index 33c114838c2..58c83ac7915 100644
--- a/app/assets/stylesheets/mailers/highlighted_diff_email.scss
+++ b/app/assets/stylesheets/mailers/highlighted_diff_email.scss
@@ -4,7 +4,7 @@
// avoid all descendant selectors (`table td`). This is because the CSS inlining
// we use performs dramatically worse on descendant selectors than the
// alternatives.
-// <https://gitlab.com/gitlab-org/gitlab-ee/issues/490#note_12283632>
+// <https://gitlab.com/gitlab-org/gitlab/issues/490#note_12283632>
//
// DO NOT ADD ANY DESCENDANT SELECTORS TO THIS FILE. Instead, use (in order of
// preference): plain class selectors, type (element name) selectors, or
diff --git a/app/assets/stylesheets/pages/boards.scss b/app/assets/stylesheets/pages/boards.scss
index 4bf0abccd00..d540a347dde 100644
--- a/app/assets/stylesheets/pages/boards.scss
+++ b/app/assets/stylesheets/pages/boards.scss
@@ -73,7 +73,7 @@
.board {
// the next line cannot be replaced with .d-inline-block because it breaks display: none of SortableJS
- // see https://gitlab.com/gitlab-org/gitlab-ce/issues/64828
+ // see https://gitlab.com/gitlab-org/gitlab-foss/issues/64828
display: inline-block;
width: calc(85vw - 15px);
diff --git a/app/assets/stylesheets/pages/commits.scss b/app/assets/stylesheets/pages/commits.scss
index 0b0a4e50146..be0311f584f 100644
--- a/app/assets/stylesheets/pages/commits.scss
+++ b/app/assets/stylesheets/pages/commits.scss
@@ -81,7 +81,7 @@
position: relative;
font-family: $monospace-font;
$left: 12px;
- overflow: hidden; // See https://gitlab.com/gitlab-org/gitlab-ce/issues/13987
+ overflow: hidden; // See https://gitlab.com/gitlab-org/gitlab-foss/issues/13987
.max-width-marker {
width: 72ch;
color: $commit-max-width-marker-color;
diff --git a/app/assets/stylesheets/pages/cycle_analytics.scss b/app/assets/stylesheets/pages/cycle_analytics.scss
index e20711a193d..76cd4f34865 100644
--- a/app/assets/stylesheets/pages/cycle_analytics.scss
+++ b/app/assets/stylesheets/pages/cycle_analytics.scss
@@ -1,5 +1,5 @@
-#cycle-analytics {
- max-width: 1000px;
+#cycle-analytics,
+.cycle-analytics {
margin: 24px auto 0;
position: relative;
@@ -41,7 +41,8 @@
width: 20%;
}
- .fa {
+ .fa,
+ svg {
color: $cycle-analytics-light-gray;
&:hover {
@@ -233,7 +234,7 @@
&.issue-title,
&.commit-title,
- &.merge-merquest-title {
+ &.merge-request-title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
@@ -266,6 +267,7 @@
color: $gl-text-color;
}
+ .mr-link,
.issue-link,
.commit-author-link,
.issue-author-link {
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 0e844b0e4a5..5617ab0af41 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -571,7 +571,7 @@
/*
* Overwrite hover style for dropdown items, so that they are not blue
- * This should be removed during dev of https://gitlab.com/gitlab-org/gitlab-ce/issues/44040
+ * This should be removed during dev of https://gitlab.com/gitlab-org/gitlab-foss/issues/44040
*/
li a {
&:hover,
diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss
index 6c03dbb56a7..d67a0f83aa2 100644
--- a/app/assets/stylesheets/pages/notes.scss
+++ b/app/assets/stylesheets/pages/notes.scss
@@ -492,7 +492,7 @@ $note-form-margin-left: 72px;
vertical-align: top;
white-space: normal;
- // Fixes subpixel rounding issue https://gitlab.com/gitlab-org/gitlab-ce/issues/53973
+ // Fixes subpixel rounding issue https://gitlab.com/gitlab-org/gitlab-foss/issues/53973
// background-color is needed for dark code preference
padding-bottom: 1px;
background-color: $white-light;
@@ -980,7 +980,7 @@ $note-form-margin-left: 72px;
}
//This needs to be deleted when Snippet/Commit comments are convered to Vue
-// See https://gitlab.com/gitlab-org/gitlab-ce/issues/53918#note_117038785
+// See https://gitlab.com/gitlab-org/gitlab-foss/issues/53918#note_117038785
.unstyled-comments {
.discussion-header {
padding: $gl-padding;
diff --git a/app/assets/stylesheets/pages/pipelines.scss b/app/assets/stylesheets/pages/pipelines.scss
index cda6c9ce0cc..1b2af932733 100644
--- a/app/assets/stylesheets/pages/pipelines.scss
+++ b/app/assets/stylesheets/pages/pipelines.scss
@@ -453,7 +453,7 @@
display: flex;
width: 100%;
background-color: $gray-light;
- padding: $gl-padding;
+ padding: $gl-padding 0;
overflow: auto;
}
diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb
index 03e935fceae..fbf63997b15 100644
--- a/app/controllers/admin/application_settings_controller.rb
+++ b/app/controllers/admin/application_settings_controller.rb
@@ -69,7 +69,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/63107')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/63107')
end
def application_setting_params
@@ -86,7 +86,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
params[:application_setting][:import_sources]&.delete("")
params[:application_setting][:restricted_visibility_levels]&.delete("")
- # TODO Remove domain_blacklist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-ce/issues/67204)
+ # TODO Remove domain_blacklist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
params.delete(:domain_blacklist_raw) if params[:domain_blacklist_file]
params.delete(:domain_blacklist_raw) if params[:domain_blacklist]
params.delete(:domain_whitelist_raw) if params[:domain_whitelist]
diff --git a/app/controllers/admin/clusters_controller.rb b/app/controllers/admin/clusters_controller.rb
index f54933de10f..5b1902fad51 100644
--- a/app/controllers/admin/clusters_controller.rb
+++ b/app/controllers/admin/clusters_controller.rb
@@ -11,3 +11,5 @@ class Admin::ClustersController < Clusters::ClustersController
@clusterable ||= InstanceClusterablePresenter.fabricate(Clusters::Instance.new, current_user: current_user)
end
end
+
+Admin::ClustersController.prepend_if_ee('EE::Admin::ClustersController')
diff --git a/app/controllers/admin/services_controller.rb b/app/controllers/admin/services_controller.rb
index c455930c044..e31e0e09978 100644
--- a/app/controllers/admin/services_controller.rb
+++ b/app/controllers/admin/services_controller.rb
@@ -46,6 +46,6 @@ class Admin::ServicesController < Admin::ApplicationController
# rubocop: enable CodeReuse/ActiveRecord
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42430')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42430')
end
end
diff --git a/app/controllers/boards/issues_controller.rb b/app/controllers/boards/issues_controller.rb
index 1d1a72d21f1..9894dd7d180 100644
--- a/app/controllers/boards/issues_controller.rb
+++ b/app/controllers/boards/issues_controller.rb
@@ -130,8 +130,8 @@ module Boards
end
def whitelist_query_limiting
- # Also see https://gitlab.com/gitlab-org/gitlab-ce/issues/42439
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42428')
+ # Also see https://gitlab.com/gitlab-org/gitlab-foss/issues/42439
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42428')
end
def validate_id_list
diff --git a/app/controllers/boards/lists_controller.rb b/app/controllers/boards/lists_controller.rb
index 7633e2aedd2..d0f4904c34e 100644
--- a/app/controllers/boards/lists_controller.rb
+++ b/app/controllers/boards/lists_controller.rb
@@ -25,7 +25,7 @@ module Boards
end
def update
- list = board.lists.movable.find(params[:id])
+ list = board.lists.find(params[:id])
service = Boards::Lists::UpdateService.new(board_parent, current_user, update_list_params)
result = service.execute(list)
diff --git a/app/controllers/clusters/clusters_controller.rb b/app/controllers/clusters/clusters_controller.rb
index b55061b5dc6..15f1e8284ff 100644
--- a/app/controllers/clusters/clusters_controller.rb
+++ b/app/controllers/clusters/clusters_controller.rb
@@ -31,7 +31,7 @@ class Clusters::ClustersController < Clusters::BaseController
# In EE (Premium) we can have any number, as multiple clusters are
# supported, but the number of clusters are fairly low currently.
#
- # See https://gitlab.com/gitlab-org/gitlab-ce/issues/55260 also.
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/55260 also.
@clusters = Kaminari.paginate_array(clusters).page(params[:page]).per(20)
@has_ancestor_clusters = finder.has_ancestor_clusters?
diff --git a/app/controllers/concerns/record_user_last_activity.rb b/app/controllers/concerns/record_user_last_activity.rb
index 372c803278d..a394ef9a2b8 100644
--- a/app/controllers/concerns/record_user_last_activity.rb
+++ b/app/controllers/concerns/record_user_last_activity.rb
@@ -6,7 +6,7 @@
# for any authenticated GET request. The DB update will only happen once per day.
#
# In order to determine if you should include this concern or not, please check the
-# description and discussion on this issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/54947
+# description and discussion on this issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/54947
module RecordUserLastActivity
include CookiesHelper
extend ActiveSupport::Concern
diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb
index 912036da0ea..d34a07324da 100644
--- a/app/controllers/dashboard/milestones_controller.rb
+++ b/app/controllers/dashboard/milestones_controller.rb
@@ -28,7 +28,7 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController
DashboardGroupMilestone.build_collection(groups, params)
end
- # See [#39545](https://gitlab.com/gitlab-org/gitlab-ce/issues/39545) for info about the deprecation of dynamic milestones
+ # See [#39545](https://gitlab.com/gitlab-org/gitlab-foss/issues/39545) for info about the deprecation of dynamic milestones
def dynamic_milestones
DashboardMilestone.build_collection(@projects, params)
end
diff --git a/app/controllers/dashboard/projects_controller.rb b/app/controllers/dashboard/projects_controller.rb
index 6457732dff0..9659d7719b9 100644
--- a/app/controllers/dashboard/projects_controller.rb
+++ b/app/controllers/dashboard/projects_controller.rb
@@ -55,7 +55,7 @@ class Dashboard::ProjectsController < Dashboard::ApplicationController
end
def render_projects
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/40260
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/40260
Gitlab::GitalyClient.allow_n_plus_1_calls do
render
end
diff --git a/app/controllers/dashboard/todos_controller.rb b/app/controllers/dashboard/todos_controller.rb
index 940d1482611..7012bfcefe3 100644
--- a/app/controllers/dashboard/todos_controller.rb
+++ b/app/controllers/dashboard/todos_controller.rb
@@ -84,7 +84,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController
end
def todos_page_count(todos)
- if todo_params.except(:sort, :page).empty? # rubocop: disable CodeReuse/ActiveRecord
+ if todo_params.except(:sort, :page).empty?
(current_user.todos_pending_count.to_f / todos.limit_value).ceil
else
todos.total_pages
diff --git a/app/controllers/groups/runners_controller.rb b/app/controllers/groups/runners_controller.rb
index af2b2cbd1fd..635c248024e 100644
--- a/app/controllers/groups/runners_controller.rb
+++ b/app/controllers/groups/runners_controller.rb
@@ -2,7 +2,7 @@
class Groups::RunnersController < Groups::ApplicationController
# Proper policies should be implemented per
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/45894
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/45894
before_action :authorize_admin_group!
before_action :runner, only: [:edit, :update, :destroy, :pause, :resume, :show]
diff --git a/app/controllers/import/github_controller.rb b/app/controllers/import/github_controller.rb
index 1cea0299fb2..72f830fc9a1 100644
--- a/app/controllers/import/github_controller.rb
+++ b/app/controllers/import/github_controller.rb
@@ -29,7 +29,7 @@ class Import::GithubController < Import::BaseController
def status
# Request repos to display error page if provider token is invalid
- # Improving in https://gitlab.com/gitlab-org/gitlab-ce/issues/55585
+ # Improving in https://gitlab.com/gitlab-org/gitlab-foss/issues/55585
client_repos
respond_to do |format|
diff --git a/app/controllers/import/gitlab_projects_controller.rb b/app/controllers/import/gitlab_projects_controller.rb
index 89889141be6..c9c487cec26 100644
--- a/app/controllers/import/gitlab_projects_controller.rb
+++ b/app/controllers/import/gitlab_projects_controller.rb
@@ -49,6 +49,6 @@ class Import::GitlabProjectsController < Import::BaseController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42437')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42437')
end
end
diff --git a/app/controllers/import/manifest_controller.rb b/app/controllers/import/manifest_controller.rb
index 320cd45b925..7ba8b3ce938 100644
--- a/app/controllers/import/manifest_controller.rb
+++ b/app/controllers/import/manifest_controller.rb
@@ -96,6 +96,6 @@ class Import::ManifestController < Import::BaseController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/48939')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/48939')
end
end
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index 4125f44d00a..7c3d43fb49a 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -95,7 +95,7 @@ class Projects::BlobController < Projects::ApplicationController
@form = Blobs::UnfoldPresenter.new(blob, diff_params)
# keep only json rendering when
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/44988 is done
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/44988 is done
if rendered_for_merge_request?
render json: DiffLineSerializer.new.represent(@form.diff_lines)
else
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb
index e7bdb4b2042..c125ed3605a 100644
--- a/app/controllers/projects/branches_controller.rb
+++ b/app/controllers/projects/branches_controller.rb
@@ -25,7 +25,7 @@ class Projects::BranchesController < Projects::ApplicationController
@refs_pipelines = @project.ci_pipelines.latest_successful_for_refs(@branches.map(&:name))
@merged_branch_names = repository.merged_branch_names(@branches.map(&:name))
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/48097
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/48097
Gitlab::GitalyClient.allow_n_plus_1_calls do
render
end
diff --git a/app/controllers/projects/clusters_controller.rb b/app/controllers/projects/clusters_controller.rb
index 98cd66cf6f9..079d30127d6 100644
--- a/app/controllers/projects/clusters_controller.rb
+++ b/app/controllers/projects/clusters_controller.rb
@@ -24,3 +24,5 @@ class Projects::ClustersController < Clusters::ClustersController
@repository ||= project.repository
end
end
+
+Projects::ClustersController.prepend_if_ee('EE::Projects::ClustersController')
diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb
index f540ccee386..76705b4410c 100644
--- a/app/controllers/projects/commits_controller.rb
+++ b/app/controllers/projects/commits_controller.rb
@@ -77,6 +77,6 @@ class Projects::CommitsController < Projects::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42330')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42330')
end
end
diff --git a/app/controllers/projects/cycle_analytics_controller.rb b/app/controllers/projects/cycle_analytics_controller.rb
index 3b0abecf2c9..b9d7dbd37be 100644
--- a/app/controllers/projects/cycle_analytics_controller.rb
+++ b/app/controllers/projects/cycle_analytics_controller.rb
@@ -42,6 +42,6 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42671')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42671')
end
end
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index 7f776b8b497..64de0e665d3 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -164,7 +164,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
result = dashboard_finder.find(
project,
current_user,
- environment,
+ environment: environment,
dashboard_path: params[:dashboard],
**dashboard_params.to_h.symbolize_keys
)
@@ -172,13 +172,13 @@ class Projects::EnvironmentsController < Projects::ApplicationController
result = dashboard_finder.find(
project,
current_user,
- environment,
+ environment: environment,
dashboard_path: params[:dashboard]
)
result[:all_dashboards] = dashboard_finder.find_all_paths(project)
else
- result = dashboard_finder.find(project, current_user, environment)
+ result = dashboard_finder.find(project, current_user, environment: environment)
end
respond_to do |format|
diff --git a/app/controllers/projects/forks_controller.rb b/app/controllers/projects/forks_controller.rb
index 1bb21857dcf..cb6d9c2ba18 100644
--- a/app/controllers/projects/forks_controller.rb
+++ b/app/controllers/projects/forks_controller.rb
@@ -62,6 +62,6 @@ class Projects::ForksController < Projects::ApplicationController
# rubocop: enable CodeReuse/ActiveRecord
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42335')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42335')
end
end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index a3dcb36aa3b..7a192a9ec2d 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -277,10 +277,10 @@ class Projects::IssuesController < Projects::ApplicationController
def whitelist_query_limiting
# Also see the following issues:
#
- # 1. https://gitlab.com/gitlab-org/gitlab-ce/issues/42423
- # 2. https://gitlab.com/gitlab-org/gitlab-ce/issues/42424
- # 3. https://gitlab.com/gitlab-org/gitlab-ce/issues/42426
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42422')
+ # 1. https://gitlab.com/gitlab-org/gitlab-foss/issues/42423
+ # 2. https://gitlab.com/gitlab-org/gitlab-foss/issues/42424
+ # 3. https://gitlab.com/gitlab-org/gitlab-foss/issues/42426
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42422')
end
end
diff --git a/app/controllers/projects/jobs_controller.rb b/app/controllers/projects/jobs_controller.rb
index c83d4e307a7..0fdd4d4f33d 100644
--- a/app/controllers/projects/jobs_controller.rb
+++ b/app/controllers/projects/jobs_controller.rb
@@ -96,7 +96,7 @@ class Projects::JobsController < Projects::ApplicationController
end
def json_trace
- # will be implemented with https://gitlab.com/gitlab-org/gitlab-ce/issues/66454
+ # will be implemented with https://gitlab.com/gitlab-org/gitlab-foss/issues/66454
end
def retry
diff --git a/app/controllers/projects/merge_requests/creations_controller.rb b/app/controllers/projects/merge_requests/creations_controller.rb
index 6ac5bb90706..808265634da 100644
--- a/app/controllers/projects/merge_requests/creations_controller.rb
+++ b/app/controllers/projects/merge_requests/creations_controller.rb
@@ -12,7 +12,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap
before_action :build_merge_request, except: [:create]
def new
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/40934
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/40934
Gitlab::GitalyClient.allow_n_plus_1_calls do
define_new_vars
end
@@ -92,7 +92,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap
def build_merge_request
params[:merge_request] ||= ActionController::Parameters.new(source_project: @project)
- # Gitaly N+1 issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/58096
+ # Gitaly N+1 issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/58096
Gitlab::GitalyClient.allow_n_plus_1_calls do
@merge_request = ::MergeRequests::BuildService.new(project, current_user, merge_request_params.merge(diff_options: diff_options)).execute
end
@@ -135,7 +135,7 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap
# rubocop: enable CodeReuse/ActiveRecord
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42384')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42384')
end
def incr_count_webide_merge_request
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index af87e04f9c8..e51ce752233 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -276,7 +276,7 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
if auto_merge_requested?
if merge_request.auto_merge_enabled?
# TODO: We should have a dedicated endpoint for updating merge params.
- # See https://gitlab.com/gitlab-org/gitlab-ce/issues/63130.
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/63130.
AutoMergeService.new(project, current_user, merge_params).update(merge_request)
else
AutoMergeService.new(project, current_user, merge_params)
@@ -328,8 +328,8 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
end
def whitelist_query_limiting
- # Also see https://gitlab.com/gitlab-org/gitlab-ce/issues/42441
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42438')
+ # Also see https://gitlab.com/gitlab-org/gitlab-foss/issues/42441
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42438')
end
def reports_response(report_comparison)
diff --git a/app/controllers/projects/network_controller.rb b/app/controllers/projects/network_controller.rb
index 6543711ecfa..47788438da9 100644
--- a/app/controllers/projects/network_controller.rb
+++ b/app/controllers/projects/network_controller.rb
@@ -41,6 +41,6 @@ class Projects::NetworkController < Projects::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42333')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42333')
end
end
diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb
index 13e8453ed00..c0b8c9e550d 100644
--- a/app/controllers/projects/notes_controller.rb
+++ b/app/controllers/projects/notes_controller.rb
@@ -86,6 +86,6 @@ class Projects::NotesController < Projects::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42383')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42383')
end
end
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb
index 477ba36e9d1..cfa46705483 100644
--- a/app/controllers/projects/pipelines_controller.rb
+++ b/app/controllers/projects/pipelines_controller.rb
@@ -204,8 +204,8 @@ class Projects::PipelinesController < Projects::ApplicationController
end
def whitelist_query_limiting
- # Also see https://gitlab.com/gitlab-org/gitlab-ce/issues/42343
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42339')
+ # Also see https://gitlab.com/gitlab-org/gitlab-foss/issues/42343
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42339')
end
def authorize_update_pipeline!
diff --git a/app/controllers/projects/templates_controller.rb b/app/controllers/projects/templates_controller.rb
index f987033a26c..95739f96d39 100644
--- a/app/controllers/projects/templates_controller.rb
+++ b/app/controllers/projects/templates_controller.rb
@@ -13,6 +13,14 @@ class Projects::TemplatesController < Projects::ApplicationController
end
end
+ def names
+ templates = @template_type.dropdown_names(project)
+
+ respond_to do |format|
+ format.json { render json: templates }
+ end
+ end
+
private
# User must have:
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index a6ed783b433..b8beecf823c 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -457,7 +457,7 @@ class ProjectsController < Projects::ApplicationController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42440')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42440')
end
def present_project
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb
index a973ed23da9..2e4c6a801b0 100644
--- a/app/controllers/registrations_controller.rb
+++ b/app/controllers/registrations_controller.rb
@@ -124,7 +124,7 @@ class RegistrationsController < Devise::RegistrationsController
end
def whitelist_query_limiting
- Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-ce/issues/42380')
+ Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42380')
end
def ensure_terms_accepted
diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb
index 310ae17abbf..5b06f4f4b51 100644
--- a/app/controllers/root_controller.rb
+++ b/app/controllers/root_controller.rb
@@ -15,7 +15,7 @@ class RootController < Dashboard::ProjectsController
before_action :redirect_logged_user, if: -> { current_user.present? }
def index
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/40260
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/40260
Gitlab::GitalyClient.allow_n_plus_1_calls do
super
end
diff --git a/app/finders/environments_finder.rb b/app/finders/environments_finder.rb
index 29c00e4b2c2..d4e803beb4e 100644
--- a/app/finders/environments_finder.rb
+++ b/app/finders/environments_finder.rb
@@ -51,7 +51,7 @@ class EnvironmentsFinder
# efficient way to get relevant environment entries.
# Currently, `#execute` method has a serious technical debt and
# we will likely rework on it in the future.
- # See more https://gitlab.com/gitlab-org/gitlab-ce/issues/63381
+ # See more https://gitlab.com/gitlab-org/gitlab-foss/issues/63381
def find
environments = project.environments
environments = by_name(environments)
diff --git a/app/finders/todos_finder.rb b/app/finders/todos_finder.rb
index ed6d20b9585..427fd3e7d85 100644
--- a/app/finders/todos_finder.rb
+++ b/app/finders/todos_finder.rb
@@ -47,11 +47,12 @@ class TodosFinder
sort(items)
end
- # Returns `true` if the current user has any todos for the given target.
+ # Returns `true` if the current user has any todos for the given target with the optional given state.
#
# target - The value of the `target_type` column, such as `Issue`.
- def any_for_target?(target)
- current_user.todos.any_for_target?(target)
+ # state - The value of the `state` column, such as `pending` or `done`.
+ def any_for_target?(target, state = nil)
+ current_user.todos.any_for_target?(target, state)
end
private
diff --git a/app/graphql/resolvers/full_path_resolver.rb b/app/graphql/resolvers/full_path_resolver.rb
index 2afd0411ea6..46d3360baae 100644
--- a/app/graphql/resolvers/full_path_resolver.rb
+++ b/app/graphql/resolvers/full_path_resolver.rb
@@ -7,7 +7,7 @@ module Resolvers
prepended do
argument :full_path, GraphQL::ID_TYPE,
required: true,
- description: 'The full path of the project, group or namespace, e.g., "gitlab-org/gitlab-ce"'
+ description: 'The full path of the project, group or namespace, e.g., "gitlab-org/gitlab-foss"'
end
def model_by_full_path(model, full_path)
diff --git a/app/graphql/resolvers/issues_resolver.rb b/app/graphql/resolvers/issues_resolver.rb
index 4e71a7a9ead..850df2885aa 100644
--- a/app/graphql/resolvers/issues_resolver.rb
+++ b/app/graphql/resolvers/issues_resolver.rb
@@ -50,7 +50,7 @@ module Resolvers
return Issue.none if project.nil?
# Will need to be be made group & namespace aware with
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/54520
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/54520
args[:project_id] = project.id
args[:iids] ||= [args[:iid]].compact
diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb
index 9a1a2b3a79c..8c5be1c315d 100644
--- a/app/helpers/application_settings_helper.rb
+++ b/app/helpers/application_settings_helper.rb
@@ -184,10 +184,10 @@ module ApplicationSettingsHelper
:disabled_oauth_sign_in_sources,
:domain_blacklist,
:domain_blacklist_enabled,
- # TODO Remove domain_blacklist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-ce/issues/67204)
+ # TODO Remove domain_blacklist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
:domain_blacklist_raw,
:domain_whitelist,
- # TODO Remove domain_whitelist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-ce/issues/67204)
+ # TODO Remove domain_whitelist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
:domain_whitelist_raw,
:outbound_local_requests_whitelist_raw,
:dsa_key_restriction,
diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb
index d3950219f3f..3f0679f9bf9 100644
--- a/app/helpers/boards_helper.rb
+++ b/app/helpers/boards_helper.rb
@@ -88,7 +88,7 @@ module BoardsHelper
end
def boards_link_text
- if current_board_parent.multiple_issue_boards_available?
+ if multiple_boards_available?
s_("IssueBoards|Boards")
else
s_("IssueBoards|Board")
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index 32431959851..7f3e78f3a81 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -189,11 +189,9 @@ module DiffHelper
params[:w] == '1'
end
- # rubocop: disable CodeReuse/ActiveRecord
def params_with_whitespace
hide_whitespace? ? request.query_parameters.except(:w) : request.query_parameters.merge(w: 1)
end
- # rubocop: enable CodeReuse/ActiveRecord
def toggle_whitespace_link(url, options)
options[:class] = [*options[:class], 'btn btn-default'].join(' ')
diff --git a/app/helpers/emails_helper.rb b/app/helpers/emails_helper.rb
index ee4991c0b53..c244eba9e08 100644
--- a/app/helpers/emails_helper.rb
+++ b/app/helpers/emails_helper.rb
@@ -102,7 +102,7 @@ module EmailsHelper
end
when String
# Technically speaking this should be Commit but per
- # https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15610#note_163812339
+ # https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/15610#note_163812339
# we can't deserialize Commit without custom serializer for ActiveJob
return "" unless Ability.allowed?(@recipient, :download_code, @project)
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 014523b54cb..24614b5030c 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -272,7 +272,7 @@ module IssuablesHelper
markdownPreviewPath: preview_markdown_path(parent),
markdownDocsPath: help_page_path('user/markdown'),
lockVersion: issuable.lock_version,
- issuableTemplates: issuable_templates(issuable),
+ issuableTemplateNamesPath: template_names_path(parent, issuable),
initialTitleHtml: markdown_field(issuable, :title),
initialTitleText: issuable.title,
initialDescriptionHtml: markdown_field(issuable, :description),
@@ -429,6 +429,12 @@ module IssuablesHelper
end
end
+ def template_names_path(parent, issuable)
+ return '' unless parent.is_a?(Project)
+
+ project_template_names_path(parent, template_type: issuable.class.name.underscore)
+ end
+
def issuable_sidebar_options(issuable)
{
endpoint: "#{issuable[:issuable_json_path]}?serializer=sidebar_extras",
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 5ed95311767..bf6abdb8c4b 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -235,7 +235,6 @@ module ProjectsHelper
#
# If no limit is applied we'll just issue a COUNT since the result set could
# be too large to load into memory.
- # rubocop: disable CodeReuse/ActiveRecord
def any_projects?(projects)
return projects.any? if projects.is_a?(Array)
@@ -245,10 +244,9 @@ module ProjectsHelper
projects.except(:offset).any?
end
end
- # rubocop: enable CodeReuse/ActiveRecord
# TODO: Remove this method when removing the feature flag
- # https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/11209#note_162234863
+ # https://gitlab.com/gitlab-org/gitlab/merge_requests/11209#note_162234863
# make sure to remove from the EE specific controller as well: ee/app/controllers/ee/dashboard/projects_controller.rb
def show_projects?(projects, params)
Feature.enabled?(:project_list_filter_bar) || !!(params[:personal] || params[:name] || any_projects?(projects))
diff --git a/app/helpers/runners_helper.rb b/app/helpers/runners_helper.rb
index d7a509e2bd3..d871aaa9c86 100644
--- a/app/helpers/runners_helper.rb
+++ b/app/helpers/runners_helper.rb
@@ -30,7 +30,7 @@ module RunnersHelper
end
# Due to inability of performing sorting of runners by cached "contacted_at" values we have to show uncached values if sorting by "contacted_asc" is requested.
- # Please refer to the following issue for more details: https://gitlab.com/gitlab-org/gitlab-ce/issues/55920
+ # Please refer to the following issue for more details: https://gitlab.com/gitlab-org/gitlab-foss/issues/55920
def runner_contacted_at(runner)
if params[:sort] == 'contacted_asc'
runner.uncached_contacted_at
diff --git a/app/helpers/safe_params_helper.rb b/app/helpers/safe_params_helper.rb
index 18bbf3347a8..72bf1377b02 100644
--- a/app/helpers/safe_params_helper.rb
+++ b/app/helpers/safe_params_helper.rb
@@ -3,7 +3,6 @@
module SafeParamsHelper
# Rails 5.0 requires to permit `params` if they're used in url helpers.
# Use this helper when generating links with `params.merge(...)`
- # rubocop: disable CodeReuse/ActiveRecord
def safe_params
if params.respond_to?(:permit!)
params.except(:host, :port, :protocol).permit!
@@ -11,5 +10,4 @@ module SafeParamsHelper
params
end
end
- # rubocop: enable CodeReuse/ActiveRecord
end
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 2393540b04c..1f8a0373450 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -64,7 +64,7 @@ module Ci
# `ci_builds` creation. We can look up a relevant `environment` through
# `deployment` relation today. This is much more efficient than expanding
# environment name with variables.
- # (See more https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22380)
+ # (See more https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/22380)
#
# However, we have to still expand environment name if it's a stop action,
# because `deployment` persists information for start action only.
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 0c331b0b8c9..20b8be4017e 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -373,7 +373,7 @@ module Ci
##
# TODO We do not completely switch to persisted stages because of
- # race conditions with setting statuses gitlab-ce#23257.
+ # race conditions with setting statuses gitlab-foss#23257.
#
def ordered_stages
return legacy_stages unless complete?
@@ -386,7 +386,7 @@ module Ci
end
def legacy_stages
- # TODO, this needs refactoring, see gitlab-ce#26481.
+ # TODO, this needs refactoring, see gitlab-foss#26481.
stages_query = statuses
.group('stage').select(:stage).order('max(stage_idx)')
diff --git a/app/models/clusters/applications/ingress.rb b/app/models/clusters/applications/ingress.rb
index 50def3ba38c..44c66f06059 100644
--- a/app/models/clusters/applications/ingress.rb
+++ b/app/models/clusters/applications/ingress.rb
@@ -35,6 +35,10 @@ module Clusters
'stable/nginx-ingress'
end
+ def values
+ content_values.to_yaml
+ end
+
def allowed_to_uninstall?
external_ip_or_hostname? && application_jupyter_nil_or_installable?
end
@@ -67,6 +71,23 @@ module Clusters
private
+ def specification
+ return {} unless Feature.enabled?(:ingress_modsecurity)
+
+ {
+ "controller" => {
+ "config" => {
+ "enable-modsecurity" => "true",
+ "enable-owasp-modsecurity-crs" => "true"
+ }
+ }
+ }
+ end
+
+ def content_values
+ YAML.load_file(chart_values_file).deep_merge!(specification)
+ end
+
def application_jupyter_nil_or_installable?
cluster.application_jupyter.nil? || cluster.application_jupyter&.installable?
end
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index 7a61622b139..6a5b98a4676 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -234,7 +234,7 @@ module Clusters
# as the AUTO_DEVOPS_DOMAIN is needed for CI_ENVIRONMENT_URL
#
# This method should is scheduled to be removed on
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/56959
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/56959
def legacy_auto_devops_domain
if project_type?
project&.auto_devops&.domain.presence ||
diff --git a/app/models/concerns/avatarable.rb b/app/models/concerns/avatarable.rb
index 80278e07e65..269145309fc 100644
--- a/app/models/concerns/avatarable.rb
+++ b/app/models/concerns/avatarable.rb
@@ -19,7 +19,7 @@ module Avatarable
module ShadowMethods
def avatar_url(**args)
# We use avatar_path instead of overriding avatar_url because of carrierwave.
- # See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11001/diffs#note_28659864
+ # See https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/11001/diffs#note_28659864
avatar_path(only_path: args.fetch(:only_path, true), size: args[:size]) || super
end
diff --git a/app/models/concerns/group_descendant.rb b/app/models/concerns/group_descendant.rb
index ed14b73ac1b..7e6a20c27e8 100644
--- a/app/models/concerns/group_descendant.rb
+++ b/app/models/concerns/group_descendant.rb
@@ -50,7 +50,7 @@ module GroupDescendant
child: child.inspect,
preloaded: preloaded.map(&:full_path)
}
- issue_url = 'https://gitlab.com/gitlab-org/gitlab-ce/issues/49404'
+ issue_url = 'https://gitlab.com/gitlab-org/gitlab-foss/issues/49404'
Gitlab::Sentry.track_exception(exception, issue_url: issue_url, extra: extras)
end
diff --git a/app/models/concerns/issuable_states.rb b/app/models/concerns/issuable_states.rb
index b722c541580..33bc41d7f44 100644
--- a/app/models/concerns/issuable_states.rb
+++ b/app/models/concerns/issuable_states.rb
@@ -6,7 +6,7 @@ module IssuableStates
# The state:string column is being migrated to state_id:integer column
# This is a temporary hook to populate state_id column with new values
# and should be removed after the state column is removed.
- # Check https://gitlab.com/gitlab-org/gitlab-ce/issues/51789 for more information
+ # Check https://gitlab.com/gitlab-org/gitlab-foss/issues/51789 for more information
included do
before_save :set_state_id
end
diff --git a/app/models/concerns/label_eventable.rb b/app/models/concerns/label_eventable.rb
index d22d93448e4..aad7259f2ad 100644
--- a/app/models/concerns/label_eventable.rb
+++ b/app/models/concerns/label_eventable.rb
@@ -5,7 +5,7 @@
# Contains functionality related to objects that support adding/removing labels.
#
# This concern is not used yet, it will be used for:
-# https://gitlab.com/gitlab-org/gitlab-ce/issues/48483
+# https://gitlab.com/gitlab-org/gitlab-foss/issues/48483
module LabelEventable
extend ActiveSupport::Concern
diff --git a/app/models/concerns/reactive_caching.rb b/app/models/concerns/reactive_caching.rb
index d91be73d6f0..f9a52cd54bd 100644
--- a/app/models/concerns/reactive_caching.rb
+++ b/app/models/concerns/reactive_caching.rb
@@ -173,11 +173,7 @@ module ReactiveCaching
end
def within_reactive_cache_lifetime?(*args)
- if Feature.enabled?(:reactive_caching_check_key_exists, default_enabled: true)
- Rails.cache.exist?(alive_reactive_cache_key(*args))
- else
- !!Rails.cache.read(alive_reactive_cache_key(*args))
- end
+ Rails.cache.exist?(alive_reactive_cache_key(*args))
end
def enqueuing_update(*args)
diff --git a/app/models/concerns/relative_positioning.rb b/app/models/concerns/relative_positioning.rb
index 6d3c7a7ed68..dfe3c391880 100644
--- a/app/models/concerns/relative_positioning.rb
+++ b/app/models/concerns/relative_positioning.rb
@@ -225,7 +225,7 @@ module RelativePositioning
def calculate_relative_position(calculation)
# When calculating across projects, this is much more efficient than
# MAX(relative_position) without the GROUP BY, due to index usage:
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/54276#note_119340977
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/54276#note_119340977
relation = scoped_items
.order(Gitlab::Database.nulls_last_order('position', 'DESC'))
.group(self.class.relative_positioning_parent_column)
diff --git a/app/models/concerns/routable.rb b/app/models/concerns/routable.rb
index 57118bf7a6b..bdd87437e2a 100644
--- a/app/models/concerns/routable.rb
+++ b/app/models/concerns/routable.rb
@@ -29,7 +29,7 @@ module Routable
#
# Usage:
#
- # Klass.find_by_full_path('gitlab-org/gitlab-ce')
+ # Klass.find_by_full_path('gitlab-org/gitlab-foss')
#
# Returns a single object, or nil.
def find_by_full_path(path, follow_redirects: false)
@@ -48,7 +48,7 @@ module Routable
#
# Usage:
#
- # Klass.where_full_path_in(%w{gitlab-org/gitlab-ce gitlab-org/gitlab-ee})
+ # Klass.where_full_path_in(%w{gitlab-org/gitlab-foss gitlab-org/gitlab})
#
# Returns an ActiveRecord::Relation.
def where_full_path_in(paths)
diff --git a/app/models/concerns/sha_attribute.rb b/app/models/concerns/sha_attribute.rb
index 177004deba6..c5826f58966 100644
--- a/app/models/concerns/sha_attribute.rb
+++ b/app/models/concerns/sha_attribute.rb
@@ -14,7 +14,7 @@ module ShaAttribute
# This only gets executed in non-production environments as an additional check to ensure
# the column is the correct type. In production it should behave like any other attribute.
- # See https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/5502 for more discussion
+ # See https://gitlab.com/gitlab-org/gitlab/merge_requests/5502 for more discussion
def validate_binary_column_exists!(name)
return unless database_exists?
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index bff5d348ca0..db7f9e06362 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -165,7 +165,7 @@ class Deployment < ApplicationRecord
def deployed_by
# We use deployable's user if available because Ci::PlayBuildService
# does not update the deployment's user, just the one for the deployable.
- # TODO: use deployment's user once https://gitlab.com/gitlab-org/gitlab-ce/issues/66442
+ # TODO: use deployment's user once https://gitlab.com/gitlab-org/gitlab-foss/issues/66442
# is completed.
deployable&.user || user
end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 3d3edcbbe66..fe438b142b2 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -54,7 +54,7 @@ class Environment < ApplicationRecord
# Search environments which have names like the given query.
# Do not set a large limit unless you've confirmed that it works on gitlab.com scale.
scope :for_name_like, -> (query, limit: 5) do
- where('name LIKE ?', "#{sanitize_sql_like(query)}%").limit(limit)
+ where(arel_table[:name].matches("#{sanitize_sql_like query}%")).limit(limit)
end
scope :for_project, -> (project) { where(project_id: project) }
diff --git a/app/models/individual_note_discussion.rb b/app/models/individual_note_discussion.rb
index d926e39f96e..bdfa6dcc6bd 100644
--- a/app/models/individual_note_discussion.rb
+++ b/app/models/individual_note_discussion.rb
@@ -20,7 +20,7 @@ class IndividualNoteDiscussion < Discussion
def convert_to_discussion!(save: false)
first_note.becomes!(Discussion.note_class).to_discussion.tap do
# Save needs to be called on first_note instead of the transformed note
- # because of https://gitlab.com/gitlab-org/gitlab-ce/issues/57324
+ # because of https://gitlab.com/gitlab-org/gitlab-foss/issues/57324
first_note.save if save
end
end
diff --git a/app/models/label.rb b/app/models/label.rb
index ea200b4937a..dbb96a2b9da 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -215,8 +215,8 @@ class Label < ApplicationRecord
#
# Label.first.to_reference # => "~1"
# Label.first.to_reference(format: :name) # => "~\"bug\""
- # Label.first.to_reference(project, target_project: same_namespace_project) # => "gitlab-ce~1"
- # Label.first.to_reference(project, target_project: another_namespace_project) # => "gitlab-org/gitlab-ce~1"
+ # Label.first.to_reference(project, target_project: same_namespace_project) # => "gitlab-foss~1"
+ # Label.first.to_reference(project, target_project: another_namespace_project) # => "gitlab-org/gitlab-foss~1"
#
# Returns a String
#
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index ac26d29ad19..63133ca285b 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -233,7 +233,7 @@ class MergeRequest < ApplicationRecord
# Use this method whenever you need to make sure the head_pipeline is synced with the
# branch head commit, for example checking if a merge request can be merged.
- # For more information check: https://gitlab.com/gitlab-org/gitlab-ce/issues/40004
+ # For more information check: https://gitlab.com/gitlab-org/gitlab-foss/issues/40004
def actual_head_pipeline
head_pipeline&.matches_sha_or_source_sha?(diff_head_sha) ? head_pipeline : nil
end
@@ -691,7 +691,7 @@ class MergeRequest < ApplicationRecord
def create_merge_request_diff
fetch_ref!
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/37435
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/37435
Gitlab::GitalyClient.allow_n_plus_1_calls do
merge_request_diffs.create!
reload_merge_request_diff
@@ -1389,7 +1389,7 @@ class MergeRequest < ApplicationRecord
end
# TODO: remove once production database rename completes
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/47592
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/47592
alias_attribute :allow_collaboration, :allow_maintainer_to_push
def allow_collaboration
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 4db2b7a74e5..8b5f10ce159 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -301,7 +301,7 @@ class MergeRequestDiff < ApplicationRecord
if without_files? && comparison = diff_refs&.compare_in(project)
# It should fetch the repository when diffs are cleaned by the system.
# We don't keep these for storage overload purposes.
- # See https://gitlab.com/gitlab-org/gitlab-ce/issues/37639
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/37639
comparison.diffs(diff_options)
else
diffs_collection(diff_options)
@@ -357,7 +357,7 @@ class MergeRequestDiff < ApplicationRecord
# use factories that rely on current code with an old schema. Without these
# `has_attribute?` guards, they fail with a `MissingAttributeError`.
#
- # For more details, see: https://gitlab.com/gitlab-org/gitlab-ce/issues/44990
+ # For more details, see: https://gitlab.com/gitlab-org/gitlab-foss/issues/44990
def write_uploader(column, identifier)
carrierwave_write_uploader(column, identifier) if has_attribute?(column)
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index 800c492e8e2..916c11a8d03 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -215,8 +215,8 @@ class Milestone < ApplicationRecord
#
# Milestone.first.to_reference # => "%1"
# Milestone.first.to_reference(format: :name) # => "%\"goal\""
- # Milestone.first.to_reference(cross_namespace_project) # => "gitlab-org/gitlab-ce%1"
- # Milestone.first.to_reference(same_namespace_project) # => "gitlab-ce%1"
+ # Milestone.first.to_reference(cross_namespace_project) # => "gitlab-org/gitlab-foss%1"
+ # Milestone.first.to_reference(same_namespace_project) # => "gitlab-foss%1"
#
def to_reference(from = nil, format: :name, full: false)
format_reference = milestone_format_reference(format)
diff --git a/app/models/network/graph.rb b/app/models/network/graph.rb
index ecbeb24ee0a..6b5ea0fc3fc 100644
--- a/app/models/network/graph.rb
+++ b/app/models/network/graph.rb
@@ -40,7 +40,7 @@ module Network
# Get commits from repository
#
def collect_commits
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/58013
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/58013
Gitlab::GitalyClient.allow_n_plus_1_calls do
find_commits(count_to_display_commit_in_center).map do |commit|
# Decorate with app/model/network/commit.rb
diff --git a/app/models/note.rb b/app/models/note.rb
index 7a62d70ca5d..b1829e71017 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -38,7 +38,7 @@ class Note < ApplicationRecord
redact_field :note
# Aliases to make application_helper#edited_time_ago_with_tooltip helper work properly with notes.
- # See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/10392/diffs#note_28719102
+ # See https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/10392/diffs#note_28719102
alias_attribute :last_edited_at, :updated_at
alias_attribute :last_edited_by, :updated_by
diff --git a/app/models/project.rb b/app/models/project.rb
index 57f1ca98ee2..7c065db9829 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -784,7 +784,7 @@ class Project < ApplicationRecord
if forked?
RepositoryForkWorker.perform_async(id)
elsif gitlab_project_import?
- # Do not retry on Import/Export until https://gitlab.com/gitlab-org/gitlab-ce/issues/26189 is solved.
+ # Do not retry on Import/Export until https://gitlab.com/gitlab-org/gitlab-foss/issues/26189 is solved.
RepositoryImportWorker.set(retry: false).perform_async(self.id)
else
RepositoryImportWorker.perform_async(self.id)
@@ -1316,7 +1316,7 @@ class Project < ApplicationRecord
result = self
# TODO: Make this go to the fork_network root immeadiatly
- # dependant on the discussion in: https://gitlab.com/gitlab-org/gitlab-ce/issues/39769
+ # dependant on the discussion in: https://gitlab.com/gitlab-org/gitlab-foss/issues/39769
result = result.fork_source while result&.forked?
result || self
@@ -1328,7 +1328,7 @@ class Project < ApplicationRecord
# network, or it is the base of the fork network.
#
# TODO: refactor this to get the correct lfs objects when implementing
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/39769
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/39769
def all_lfs_objects
lfs_storage_project.lfs_objects
end
@@ -2329,7 +2329,7 @@ class Project < ApplicationRecord
Gitlab::SafeRequestStore.fetch("project-#{id}:branch-#{branch_name}:user-#{user.id}:branch_allows_collaboration") do
next false if empty_repo?
- # Issue for N+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/49322
+ # Issue for N+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/49322
Gitlab::GitalyClient.allow_n_plus_1_calls do
merge_requests_allowing_collaboration(branch_name).any? do |merge_request|
merge_request.can_be_merged_by?(user)
diff --git a/app/models/project_services/data_fields.rb b/app/models/project_services/data_fields.rb
index 0f5385f8ce2..46136556ade 100644
--- a/app/models/project_services/data_fields.rb
+++ b/app/models/project_services/data_fields.rb
@@ -5,7 +5,7 @@ module DataFields
class_methods do
# Provide convenient accessor methods for data fields.
- # TODO: Simplify as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # TODO: Simplify as part of https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
def data_field(*args)
args.each do |arg|
self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
diff --git a/app/models/project_services/issue_tracker_service.rb b/app/models/project_services/issue_tracker_service.rb
index c201bd2ea18..3ecd5390d79 100644
--- a/app/models/project_services/issue_tracker_service.rb
+++ b/app/models/project_services/issue_tracker_service.rb
@@ -4,7 +4,7 @@ class IssueTrackerService < Service
validate :one_issue_tracker, if: :activated?, on: :manual_change
# TODO: we can probably just delegate as part of
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
data_field :project_url, :issues_url, :new_issue_url
default_value_for :category, 'issue_tracker'
@@ -25,7 +25,7 @@ class IssueTrackerService < Service
end
end
- # this will be removed as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # this will be removed as part of https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
def title
if title_attribute = read_attribute(:title)
title_attribute
@@ -36,7 +36,7 @@ class IssueTrackerService < Service
end
end
- # this will be removed as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # this will be removed as part of https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
def description
if description_attribute = read_attribute(:description)
description_attribute
@@ -49,7 +49,7 @@ class IssueTrackerService < Service
def handle_properties
# this has been moved from initialize_properties and should be improved
- # as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # as part of https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
return unless properties
@legacy_properties_data = properties.dup
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index 61ae78a0b95..86139c62f68 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -16,10 +16,10 @@ class JiraService < IssueTrackerService
# Jira Cloud version is deprecating authentication via username and password.
# We should use username/password for Jira Server and email/api_token for Jira Cloud,
- # for more information check: https://gitlab.com/gitlab-org/gitlab-ce/issues/49936.
+ # for more information check: https://gitlab.com/gitlab-org/gitlab-foss/issues/49936.
# TODO: we can probably just delegate as part of
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/63084
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/63084
data_field :username, :password, :url, :api_url, :jira_issue_transition_id
before_update :reset_password
@@ -298,7 +298,7 @@ class JiraService < IssueTrackerService
title: title,
status: status,
icon: {
- title: 'GitLab', url16x16: asset_url(Gitlab::Favicon.main, host: gitlab_config.url)
+ title: 'GitLab', url16x16: asset_url(Gitlab::Favicon.main, host: gitlab_config.base_url)
}
}
}
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 9d6413c5991..f084a314392 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -260,28 +260,8 @@ class Repository
raw_repository.languages(root_ref)
end
- # Makes sure a commit is kept around when Git garbage collection runs.
- # Git GC will delete commits from the repository that are no longer in any
- # branches or tags, but we want to keep some of these commits around, for
- # example if they have comments or CI builds.
- #
- # For Geo's sake, pass in multiple shas rather than calling it multiple times,
- # to avoid unnecessary syncing.
def keep_around(*shas)
- shas.each do |sha|
- next unless sha.present? && commit_by(oid: sha)
-
- next if kept_around?(sha)
-
- # This will still fail if the file is corrupted (e.g. 0 bytes)
- raw_repository.write_ref(keep_around_ref_name(sha), sha)
- rescue Gitlab::Git::CommandError => ex
- Rails.logger.error "Unable to create keep-around reference for repository #{disk_path}: #{ex}" # rubocop:disable Gitlab/RailsLogger
- end
- end
-
- def kept_around?(sha)
- ref_exists?(keep_around_ref_name(sha))
+ Gitlab::Git::KeepAround.execute(self, shas)
end
def archive_metadata(ref, storage_path, format = "tar.gz", append_sha:, path: nil)
@@ -580,7 +560,7 @@ class Repository
cache_method :has_visible_content?, fallback: false
def avatar
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/38327
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/38327
Gitlab::GitalyClient.allow_n_plus_1_calls do
if tree = file_on_head(:avatar)
tree.path
@@ -1119,7 +1099,7 @@ class Repository
private
# TODO Generice finder, later split this on finders by Ref or Oid
- # gitlab-org/gitlab-ce#39239
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/39239
def find_commit(oid_or_ref)
commit = if oid_or_ref.is_a?(Gitlab::Git::Commit)
oid_or_ref
@@ -1157,10 +1137,6 @@ class Repository
end
end
- def keep_around_ref_name(sha)
- "refs/#{REF_KEEP_AROUND}/#{sha}"
- end
-
def repository_event(event, tags = {})
Gitlab::Metrics.add_event(event, tags)
end
diff --git a/app/models/resource_label_event.rb b/app/models/resource_label_event.rb
index a6aa9ce0e7a..93d0a37d186 100644
--- a/app/models/resource_label_event.rb
+++ b/app/models/resource_label_event.rb
@@ -1,7 +1,5 @@
# frozen_string_literal: true
-# This model is not used yet, it will be used for:
-# https://gitlab.com/gitlab-org/gitlab-ce/issues/48483
class ResourceLabelEvent < ApplicationRecord
include Importable
include Gitlab::Utils::StrongMemoize
diff --git a/app/models/snippet.rb b/app/models/snippet.rb
index 273a42e6034..1e84b9fa12e 100644
--- a/app/models/snippet.rb
+++ b/app/models/snippet.rb
@@ -22,7 +22,7 @@ class Snippet < ApplicationRecord
redact_field :description
# Aliases to make application_helper#edited_time_ago_with_tooltip helper work properly with snippets.
- # See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/10392/diffs#note_28719102
+ # See https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/10392/diffs#note_28719102
alias_attribute :last_edited_at, :updated_at
alias_attribute :last_edited_by, :updated_by
diff --git a/app/models/todo.rb b/app/models/todo.rb
index aefd9d5ef28..6b71845856a 100644
--- a/app/models/todo.rb
+++ b/app/models/todo.rb
@@ -89,11 +89,12 @@ class Todo < ApplicationRecord
])
end
- # Returns `true` if the current user has any todos for the given target.
+ # Returns `true` if the current user has any todos for the given target with the optional given state.
#
# target - The value of the `target_type` column, such as `Issue`.
- def any_for_target?(target)
- exists?(target: target)
+ # state - The value of the `state` column, such as `pending` or `done`.
+ def any_for_target?(target, state = nil)
+ state.nil? ? exists?(target: target) : exists?(target: target, state: state)
end
# Updates the state of a relation of todos to the new state.
diff --git a/app/models/user_callout_enums.rb b/app/models/user_callout_enums.rb
index 772170a6b5b..e9f25d833d0 100644
--- a/app/models/user_callout_enums.rb
+++ b/app/models/user_callout_enums.rb
@@ -8,7 +8,7 @@ module UserCalloutEnums
# extended by EE.
#
# If you are going to add new items to this hash, check that you're not going
- # to conflict with EE-only values: https://gitlab.com/gitlab-org/gitlab-ee/blob/master/ee/app/models/ee/user_callout_enums.rb
+ # to conflict with EE-only values: https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/ee/user_callout_enums.rb
def self.feature_names
{
gke_cluster_integration: 1,
diff --git a/app/policies/project_snippet_policy.rb b/app/policies/project_snippet_policy.rb
index 424558be1fe..2a3e4ca174b 100644
--- a/app/policies/project_snippet_policy.rb
+++ b/app/policies/project_snippet_policy.rb
@@ -12,7 +12,7 @@ class ProjectSnippetPolicy < BasePolicy
condition(:is_author) { @user && @subject.author == @user }
# We have to check both project feature visibility and a snippet visibility and take the stricter one
- # This will be simplified - check https://gitlab.com/gitlab-org/gitlab-ce/issues/27573
+ # This will be simplified - check https://gitlab.com/gitlab-org/gitlab-foss/issues/27573
rule { ~can?(:read_project) }.policy do
prevent :read_project_snippet
prevent :update_project_snippet
diff --git a/app/presenters/README.md b/app/presenters/README.md
index a4d592b54d6..dc4173a880e 100644
--- a/app/presenters/README.md
+++ b/app/presenters/README.md
@@ -24,7 +24,7 @@ Presenters should be used for:
- Data and logic methods that can be pulled & combined into single methods from
view. This can include loops extracted from views too. A good example is
- https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7073/diffs.
+ https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/7073/diffs.
- Data and logic methods that can be pulled from models.
- Simple text output methods: it's ok if the method returns a string, but not a
whole DOM element for which we'd need HAML, a view context, helpers etc.
diff --git a/app/serializers/README.md b/app/serializers/README.md
index bb94745b0b5..93b21786015 100644
--- a/app/serializers/README.md
+++ b/app/serializers/README.md
@@ -317,9 +317,9 @@ MyObjectSerializer.new.represent(object.present)
[grape-entity-readme]: https://github.com/ruby-grape/grape-entity/blob/master/README.md
[grape-entity-class]: https://github.com/ruby-grape/grape-entity/blob/master/lib/grape_entity/entity.rb
[grape-entity-only]: https://github.com/ruby-grape/grape-entity/blob/master/README.md#returning-only-the-fields-you-want
-[presenters-readme]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/presenters/README.md
+[presenters-readme]: https://gitlab.com/gitlab-org/gitlab-foss/blob/master/app/presenters/README.md
[fluent-interface]: https://en.wikipedia.org/wiki/Fluent_interface
[json-schema-gem]: https://github.com/ruby-json-schema/json-schema
-[issue-20045]: https://gitlab.com/gitlab-org/gitlab-ce/issues/20045
-[issue-30898]: https://gitlab.com/gitlab-org/gitlab-ce/issues/30898
-[issue-27569]: https://gitlab.com/gitlab-org/gitlab-ce/issues/27569
+[issue-20045]: https://gitlab.com/gitlab-org/gitlab-foss/issues/20045
+[issue-30898]: https://gitlab.com/gitlab-org/gitlab-foss/issues/30898
+[issue-27569]: https://gitlab.com/gitlab-org/gitlab-foss/issues/27569
diff --git a/app/serializers/entity_date_helper.rb b/app/serializers/entity_date_helper.rb
index d8f267d7183..7dadf0eb016 100644
--- a/app/serializers/entity_date_helper.rb
+++ b/app/serializers/entity_date_helper.rb
@@ -55,7 +55,7 @@ module EntityDateHelper
is_upcoming = (due_date - Date.today).to_i > 0
time_ago = distance_of_time_in_words(due_date, Date.today)
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/49440
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/49440
#
# Need to improve the i18n here and do a full translation
# of the string instead of piecewise translations.
diff --git a/app/serializers/merge_request_poll_cached_widget_entity.rb b/app/serializers/merge_request_poll_cached_widget_entity.rb
index 005a3e47bbb..a3186ecbcdf 100644
--- a/app/serializers/merge_request_poll_cached_widget_entity.rb
+++ b/app/serializers/merge_request_poll_cached_widget_entity.rb
@@ -80,7 +80,7 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity
# Once SchedulePopulateMergeRequestMetricsWithEventsData fully runs,
# we can remove this method and just serialize MergeRequest#metrics
- # instead. See https://gitlab.com/gitlab-org/gitlab-ce/issues/41587
+ # instead. See https://gitlab.com/gitlab-org/gitlab-foss/issues/41587
def build_metrics(merge_request)
# There's no need to query and serialize metrics data for merge requests that are not
# merged or closed.
diff --git a/app/services/access_token_validation_service.rb b/app/services/access_token_validation_service.rb
index 40aa9250885..851d862c0cf 100644
--- a/app/services/access_token_validation_service.rb
+++ b/app/services/access_token_validation_service.rb
@@ -43,7 +43,7 @@ class AccessTokenValidationService
# We're comparing each required_scope against all token scopes, which would
# take quadratic time. This consideration is irrelevant here because of the
# small number of records involved.
- # https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12300/#note_33689006
+ # https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/12300/#note_33689006
token_scopes = token.scopes.map(&:to_sym)
required_scopes.any? do |scope|
diff --git a/app/services/applications/create_service.rb b/app/services/applications/create_service.rb
index d71174d1393..500db1e172a 100644
--- a/app/services/applications/create_service.rb
+++ b/app/services/applications/create_service.rb
@@ -6,7 +6,7 @@ module Applications
def initialize(current_user, params)
@current_user = current_user
- @params = params.except(:ip_address) # rubocop: disable CodeReuse/ActiveRecord
+ @params = params.except(:ip_address)
end
# EE would override and use `request` arg
diff --git a/app/services/auth/container_registry_authentication_service.rb b/app/services/auth/container_registry_authentication_service.rb
index 9c210f3a1f5..09a84950755 100644
--- a/app/services/auth/container_registry_authentication_service.rb
+++ b/app/services/auth/container_registry_authentication_service.rb
@@ -177,7 +177,7 @@ module Auth
# We still support legacy pipeline triggers which do not have associated
# actor. New permissions model and new triggers are always associated with
# an actor. So this should be improved once
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/37452 is resolved.
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/37452 is resolved.
#
def build_can_push?(requested_project)
# Build can push only to the project from which it originates
diff --git a/app/services/ci/archive_trace_service.rb b/app/services/ci/archive_trace_service.rb
index 700d78361a4..8fad9e9c869 100644
--- a/app/services/ci/archive_trace_service.rb
+++ b/app/services/ci/archive_trace_service.rb
@@ -48,7 +48,7 @@ module Ci
Gitlab::Sentry
.track_exception(error,
- issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/51502',
+ issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/51502',
extra: { job_id: job.id })
end
end
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index 539576147f3..eb4176035d3 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -94,7 +94,7 @@ module Ci
# rubocop: disable CodeReuse/ActiveRecord
def auto_cancelable_pipelines
- # TODO: Introduced by https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/23464
+ # TODO: Introduced by https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/23464
if Feature.enabled?(:ci_support_interruptible_pipelines, project, default_enabled: true)
project.ci_pipelines
.where(ref: pipeline.ref)
diff --git a/app/services/ci/pipeline_schedule_service.rb b/app/services/ci/pipeline_schedule_service.rb
index ef90d91c936..6028643489d 100644
--- a/app/services/ci/pipeline_schedule_service.rb
+++ b/app/services/ci/pipeline_schedule_service.rb
@@ -15,7 +15,7 @@ module Ci
ensure
##
# This is the temporary solution for avoiding the memory bloat.
- # See more https://gitlab.com/gitlab-org/gitlab-ce/issues/61955
+ # See more https://gitlab.com/gitlab-org/gitlab-foss/issues/61955
GC.start if Feature.enabled?(:ci_pipeline_schedule_force_gc, default_enabled: true)
end
end
diff --git a/app/services/git/branch_hooks_service.rb b/app/services/git/branch_hooks_service.rb
index 9f9d12d6cf8..c633cff2822 100644
--- a/app/services/git/branch_hooks_service.rb
+++ b/app/services/git/branch_hooks_service.rb
@@ -115,7 +115,7 @@ module Git
# It's not sufficient to just check for a blank SHA as it's possible for the
# branch to be pushed, but for the `post-receive` hook to never run:
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/59257
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/59257
def creating_branch?
strong_memoize(:creating_branch) do
Gitlab::Git.blank_ref?(params[:oldrev]) ||
diff --git a/app/services/issuable/clone/attributes_rewriter.rb b/app/services/issuable/clone/attributes_rewriter.rb
index 3c061d35558..10c89c62bf1 100644
--- a/app/services/issuable/clone/attributes_rewriter.rb
+++ b/app/services/issuable/clone/attributes_rewriter.rb
@@ -45,11 +45,9 @@ module Issuable
original_entity.resource_label_events.find_in_batches do |batch|
events = batch.map do |event|
entity_key = new_entity.is_a?(Issue) ? 'issue_id' : 'epic_id'
- # rubocop: disable CodeReuse/ActiveRecord
event.attributes
.except('id', 'reference', 'reference_html')
.merge(entity_key => new_entity.id, 'action' => ResourceLabelEvent.actions[event.action])
- # rubocop: enable CodeReuse/ActiveRecord
end
Gitlab::Database.bulk_insert(ResourceLabelEvent.table_name, events)
diff --git a/app/services/issuable/common_system_notes_service.rb b/app/services/issuable/common_system_notes_service.rb
index 6329ba81e48..a170a4dcae2 100644
--- a/app/services/issuable/common_system_notes_service.rb
+++ b/app/services/issuable/common_system_notes_service.rb
@@ -41,7 +41,7 @@ module Issuable
create_task_status_note
else
# TODO: Show this note if non-task content was modified.
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/33577
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/33577
create_description_change_note
end
end
diff --git a/app/services/labels/transfer_service.rb b/app/services/labels/transfer_service.rb
index 9cbc9fef529..91984403db3 100644
--- a/app/services/labels/transfer_service.rb
+++ b/app/services/labels/transfer_service.rb
@@ -77,7 +77,7 @@ module Labels
# in the project being transferred.
# IDs are fetched in a separate query because MySQL doesn't
# allow referring of 'label_links' table in UPDATE query:
- # https://gitlab.com/gitlab-org/gitlab-ce/-/jobs/62435068
+ # https://gitlab.com/gitlab-org/gitlab-foss/-/jobs/62435068
link_ids = labels.pluck('label_links.id')
LabelLink.where(id: link_ids, label_id: old_label_id)
diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb
index 9cd6f3959fd..214f145d09b 100644
--- a/app/services/merge_requests/build_service.rb
+++ b/app/services/merge_requests/build_service.rb
@@ -8,7 +8,7 @@ module MergeRequests
@params_issue_iid = params.delete(:issue_iid)
self.merge_request = MergeRequest.new
# TODO: this should handle all quick actions that don't have side effects
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/53658
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/53658
merge_quick_actions_into_params!(merge_request, only: [:target_branch])
merge_request.merge_params['force_remove_source_branch'] = params.delete(:force_remove_source_branch) if params.has_key?(:force_remove_source_branch)
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb
index f54642d7bd9..edcfc3bf33f 100644
--- a/app/services/merge_requests/refresh_service.rb
+++ b/app/services/merge_requests/refresh_service.rb
@@ -14,7 +14,7 @@ module MergeRequests
private
def refresh_merge_requests!
- # n + 1: https://gitlab.com/gitlab-org/gitlab-ce/issues/60289
+ # n + 1: https://gitlab.com/gitlab-org/gitlab-foss/issues/60289
Gitlab::GitalyClient.allow_n_plus_1_calls(&method(:find_new_commits))
# Be sure to close outstanding MRs before reloading them to avoid generating an
diff --git a/app/services/metrics/dashboard/base_service.rb b/app/services/metrics/dashboard/base_service.rb
index 8a42675c66d..c51c88d776a 100644
--- a/app/services/metrics/dashboard/base_service.rb
+++ b/app/services/metrics/dashboard/base_service.rb
@@ -7,6 +7,13 @@ module Metrics
class BaseService < ::BaseService
include Gitlab::Metrics::Dashboard::Errors
+ STAGES = ::Gitlab::Metrics::Dashboard::Stages
+ SEQUENCE = [
+ STAGES::CommonMetricsInserter,
+ STAGES::EndpointInserter,
+ STAGES::Sorter
+ ].freeze
+
def get_dashboard
return error('Insufficient permissions.', :unauthorized) unless allowed?
@@ -31,14 +38,20 @@ module Metrics
# Determines whether users should be able to view
# dashboards at all.
def allowed?
- Ability.allowed?(current_user, :read_environment, project)
+ if params[:environment]
+ Ability.allowed?(current_user, :read_environment, project)
+ elsif params[:cluster]
+ true # Authorization handled at controller level
+ else
+ false
+ end
end
# Returns a new dashboard Hash, supplemented with DB info
def process_dashboard
- Gitlab::Metrics::Dashboard::Processor
- .new(project, params[:environment], raw_dashboard)
- .process(insert_project_metrics: insert_project_metrics?)
+ ::Gitlab::Metrics::Dashboard::Processor
+ .new(project, raw_dashboard, sequence, params)
+ .process
end
# @return [String] Relative filepath of the dashboard yml
@@ -56,12 +69,11 @@ module Metrics
raise NotImplementedError
end
- # Determines whether custom metrics should be included
- # in the processed output.
- # @return [Boolean]
- def insert_project_metrics?
- false
+ def sequence
+ SEQUENCE
end
end
end
end
+
+Metrics::Dashboard::BaseService.prepend_if_ee('EE::Metrics::Dashboard::BaseService')
diff --git a/app/services/metrics/dashboard/system_dashboard_service.rb b/app/services/metrics/dashboard/system_dashboard_service.rb
index fcd71aadb03..ccfd9db8746 100644
--- a/app/services/metrics/dashboard/system_dashboard_service.rb
+++ b/app/services/metrics/dashboard/system_dashboard_service.rb
@@ -8,6 +8,13 @@ module Metrics
SYSTEM_DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
SYSTEM_DASHBOARD_NAME = 'Default'
+ SEQUENCE = [
+ STAGES::CommonMetricsInserter,
+ STAGES::ProjectMetricsInserter,
+ STAGES::EndpointInserter,
+ STAGES::Sorter
+ ].freeze
+
class << self
def all_dashboard_paths(_project)
[{
@@ -24,6 +31,10 @@ module Metrics
private
+ def cache_key
+ "metrics_dashboard_#{dashboard_path}"
+ end
+
def dashboard_path
SYSTEM_DASHBOARD_PATH
end
@@ -35,13 +46,11 @@ module Metrics
YAML.safe_load(yml)
end
- def cache_key
- "metrics_dashboard_#{dashboard_path}"
- end
-
- def insert_project_metrics?
- true
+ def sequence
+ SEQUENCE
end
end
end
end
+
+Metrics::Dashboard::SystemDashboardService.prepend_if_ee('EE::Metrics::Dashboard::SystemDashboardService')
diff --git a/app/services/milestones/update_service.rb b/app/services/milestones/update_service.rb
index c445c816554..782c6bc3e35 100644
--- a/app/services/milestones/update_service.rb
+++ b/app/services/milestones/update_service.rb
@@ -2,7 +2,6 @@
module Milestones
class UpdateService < Milestones::BaseService
- # rubocop: disable CodeReuse/ActiveRecord
def execute(milestone)
state = params[:state_event]
@@ -19,7 +18,6 @@ module Milestones
milestone
end
- # rubocop: enable CodeReuse/ActiveRecord
end
end
diff --git a/app/services/notes/create_service.rb b/app/services/notes/create_service.rb
index 248e81080cc..c136803ef3b 100644
--- a/app/services/notes/create_service.rb
+++ b/app/services/notes/create_service.rb
@@ -7,7 +7,7 @@ module Notes
note = Notes::BuildService.new(project, current_user, params).execute
- # n+1: https://gitlab.com/gitlab-org/gitlab-ce/issues/37440
+ # n+1: https://gitlab.com/gitlab-org/gitlab-foss/issues/37440
note_valid = Gitlab::GitalyClient.allow_n_plus_1_calls do
note.valid?
end
diff --git a/app/services/projects/auto_devops/disable_service.rb b/app/services/projects/auto_devops/disable_service.rb
index 6608b3da1a8..c90510c581d 100644
--- a/app/services/projects/auto_devops/disable_service.rb
+++ b/app/services/projects/auto_devops/disable_service.rb
@@ -19,7 +19,7 @@ module Projects
# We're using `limit` to optimize `auto_devops pipeline` query,
# since we only care about the first element, and using only `.count`
# is an expensive operation. See
- # https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21172#note_99037378
+ # https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/21172#note_99037378
# for more context.
# rubocop: disable CodeReuse/ActiveRecord
def first_pipeline_failure?
diff --git a/app/services/projects/cleanup_service.rb b/app/services/projects/cleanup_service.rb
index 9b4114ff42f..04624b96bf0 100644
--- a/app/services/projects/cleanup_service.rb
+++ b/app/services/projects/cleanup_service.rb
@@ -68,7 +68,7 @@ module Projects
# TODO: ensure the highlight cache is removed immediately. It's too hard
# to calculate the Redis keys at present.
#
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/61115
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/61115
end
def cleanup_note_diff_files(old_commit_shas)
diff --git a/app/services/projects/container_repository/cleanup_tags_service.rb b/app/services/projects/container_repository/cleanup_tags_service.rb
index 488290db824..d1d9b9f22e8 100644
--- a/app/services/projects/container_repository/cleanup_tags_service.rb
+++ b/app/services/projects/container_repository/cleanup_tags_service.rb
@@ -33,7 +33,7 @@ module Projects
end
def delete_tag_digest(digest, tags, other_tags)
- # Issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/21405
+ # Issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/21405
# we have to remove all tags due
# to Docker Distribution bug unable
# to delete single tag
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index d8fa9d37359..17686b45900 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -27,7 +27,7 @@ module Projects
# the database so they'll get cleaned up.
#
# TODO: refactor this to get the correct lfs objects when implementing
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/39769
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/39769
fork_to_project.lfs_objects_projects.delete_all
fork_to_project
@@ -51,7 +51,8 @@ module Projects
# been instantiated to avoid ActiveRecord trying to create it when
# initializing the project, as that would cause a foreign key constraint
# exception.
- relations_block: -> (project) { build_fork_network_member(project) }
+ relations_block: -> (project) { build_fork_network_member(project) },
+ skip_disk_validation: skip_disk_validation
}
if @project.avatar.present? && @project.avatar.image?
@@ -110,6 +111,10 @@ module Projects
@target_namespace ||= @params[:namespace] || current_user.namespace
end
+ def skip_disk_validation
+ @skip_disk_validation ||= @params[:skip_disk_validation] || false
+ end
+
def allowed_visibility_level
target_level = [@project.visibility_level, target_namespace.visibility_level].min
diff --git a/app/services/projects/lfs_pointers/lfs_object_download_list_service.rb b/app/services/projects/lfs_pointers/lfs_object_download_list_service.rb
index 4224b56c42c..d6e6480bdad 100644
--- a/app/services/projects/lfs_pointers/lfs_object_download_list_service.rb
+++ b/app/services/projects/lfs_pointers/lfs_object_download_list_service.rb
@@ -29,7 +29,7 @@ module Projects
# Getting all Lfs pointers already in the database and linking them to the project
linked_oids = LfsLinkService.new(project).execute(lfs_pointers_in_repository.keys)
# Retrieving those oids not present in the database which we need to download
- missing_oids = lfs_pointers_in_repository.except(*linked_oids) # rubocop: disable CodeReuse/ActiveRecord
+ missing_oids = lfs_pointers_in_repository.except(*linked_oids)
# Downloading the required information and gathering it inside a LfsDownloadObject for each oid
LfsDownloadLinkListService.new(project, remote_uri: current_endpoint_uri).execute(missing_oids)
rescue LfsDownloadLinkListService::DownloadLinksError => e
diff --git a/app/services/projects/open_issues_count_service.rb b/app/services/projects/open_issues_count_service.rb
index bc8f7f342f7..82632d63e5b 100644
--- a/app/services/projects/open_issues_count_service.rb
+++ b/app/services/projects/open_issues_count_service.rb
@@ -65,7 +65,7 @@ module Projects
# We only show total issues count for reporters
# which are allowed to view confidential issues
# This will still show a discrepancy on issues number but should be less than before.
- # Check https://gitlab.com/gitlab-org/gitlab-ce/issues/38418 description.
+ # Check https://gitlab.com/gitlab-org/gitlab-foss/issues/38418 description.
# rubocop: disable CodeReuse/ActiveRecord
def self.query(projects, public_only: true)
if public_only
diff --git a/app/services/projects/propagate_service_template.rb b/app/services/projects/propagate_service_template.rb
index 64f9b611c40..6013b00b8c6 100644
--- a/app/services/projects/propagate_service_template.rb
+++ b/app/services/projects/propagate_service_template.rb
@@ -70,7 +70,6 @@ module Projects
)
end
- # rubocop: disable CodeReuse/ActiveRecord
def service_hash
@service_hash ||=
begin
@@ -84,7 +83,6 @@ module Projects
end
end
end
- # rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def run_callbacks(batch)
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index 51a6f62e597..2dad1d05a2c 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -7,7 +7,6 @@ module Projects
ValidationError = Class.new(StandardError)
- # rubocop: disable CodeReuse/ActiveRecord
def execute
remove_unallowed_params
validate!
@@ -31,7 +30,6 @@ module Projects
rescue ValidationError => e
error(e.message)
end
- # rubocop: enable CodeReuse/ActiveRecord
def run_auto_devops_pipeline?
return false if project.repository.gitlab_ci_yml || !project.auto_devops&.previous_changes&.include?('enabled')
diff --git a/app/services/releases/update_service.rb b/app/services/releases/update_service.rb
index 7aa51c4a332..6ba8dac21f0 100644
--- a/app/services/releases/update_service.rb
+++ b/app/services/releases/update_service.rb
@@ -26,10 +26,8 @@ module Releases
Ability.allowed?(current_user, :update_release, release)
end
- # rubocop: disable CodeReuse/ActiveRecord
def empty_params?
params.except(:tag).empty?
end
- # rubocop: enable CodeReuse/ActiveRecord
end
end
diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb
index ad8acb26a2d..c01094bd689 100644
--- a/app/services/system_note_service.rb
+++ b/app/services/system_note_service.rb
@@ -242,7 +242,7 @@ module SystemNoteService
##
# TODO: Abort message should be sent by the system, not a particular user.
- # See https://gitlab.com/gitlab-org/gitlab-ce/issues/63187.
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/63187.
create_note(NoteSummary.new(noteable, project, author, body, action: 'merge'))
end
diff --git a/app/services/todo_service.rb b/app/services/todo_service.rb
index b1b0fb641df..2299a02fea1 100644
--- a/app/services/todo_service.rb
+++ b/app/services/todo_service.rb
@@ -191,7 +191,7 @@ class TodoService
end
def todo_exist?(issuable, current_user)
- TodosFinder.new(current_user).any_for_target?(issuable)
+ TodosFinder.new(current_user).any_for_target?(issuable, :pending)
end
private
diff --git a/app/services/users/update_service.rb b/app/services/users/update_service.rb
index eea5ff6e5db..422c8ed6575 100644
--- a/app/services/users/update_service.rb
+++ b/app/services/users/update_service.rb
@@ -57,7 +57,7 @@ module Users
params.reject! { |key, _| read_only.include?(key.to_sym) }
end
- @user.assign_attributes(params.except(*identity_attributes)) unless params.empty? # rubocop: disable CodeReuse/ActiveRecord
+ @user.assign_attributes(params.except(*identity_attributes)) unless params.empty?
end
def assign_identity
diff --git a/app/validators/addressable_url_validator.rb b/app/validators/addressable_url_validator.rb
index f292730441c..300bd01ed22 100644
--- a/app/validators/addressable_url_validator.rb
+++ b/app/validators/addressable_url_validator.rb
@@ -46,7 +46,7 @@ class AddressableUrlValidator < ActiveModel::EachValidator
# when saving/updating a record. Sometimes, the url
# is not resolvable at that point, and some automated
# tasks that uses that url won't work.
- # See https://gitlab.com/gitlab-org/gitlab-ce/issues/66723
+ # See https://gitlab.com/gitlab-org/gitlab-foss/issues/66723
BLOCKER_VALIDATE_OPTIONS = {
schemes: %w(http https),
ports: [],
@@ -112,7 +112,7 @@ class AddressableUrlValidator < ActiveModel::EachValidator
# when Gitlab::CurrentSettings creates an ApplicationSetting which then
# calls this validator.
#
- # See https://gitlab.com/gitlab-org/gitlab-ee/issues/9833
+ # See https://gitlab.com/gitlab-org/gitlab/issues/9833
ApplicationSetting.current&.allow_local_requests_from_web_hooks_and_services?
end
end
diff --git a/app/views/groups/runners/_group_runners.html.haml b/app/views/groups/runners/_group_runners.html.haml
index 806a24e2bbc..fd40ec5a984 100644
--- a/app/views/groups/runners/_group_runners.html.haml
+++ b/app/views/groups/runners/_group_runners.html.haml
@@ -8,7 +8,7 @@
= _('They can be managed using the %{link}.').html_safe % { link: link }
-# Proper policies should be implemented per
--# https://gitlab.com/gitlab-org/gitlab-ce/issues/45894
+-# https://gitlab.com/gitlab-org/gitlab-foss/issues/45894
- if can?(current_user, :admin_pipeline, @group)
= render partial: 'ci/runner/how_to_setup_runner',
locals: { registration_token: @group.runners_token,
diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml
index 443a73f5cce..6cdb85456c3 100644
--- a/app/views/layouts/_page.html.haml
+++ b/app/views/layouts/_page.html.haml
@@ -17,4 +17,6 @@
%div{ class: "#{(container_class unless @no_container)} #{@content_class}" }
.content{ id: "content-body" }
= render "layouts/flash", extra_flash_class: 'limit-container-width'
+ - if Gitlab.com?
+ = render_if_exists "layouts/privacy_policy_update_callout"
= yield
diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml
index ff0c5b241b2..7b0824ae2af 100644
--- a/app/views/layouts/nav/_dashboard.html.haml
+++ b/app/views/layouts/nav/_dashboard.html.haml
@@ -1,5 +1,5 @@
-# WAIT! Before adding more items to the nav bar, please see
--# https://gitlab.com/gitlab-org/gitlab-ce/issues/49713 for more information.
+-# https://gitlab.com/gitlab-org/gitlab-foss/issues/49713 for more information.
%ul.list-unstyled.navbar-sub-nav
- if dashboard_nav_link?(:projects)
= nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'dashboard/projects#index'], html_options: { id: 'nav-projects-dropdown', class: "home dropdown header-projects qa-projects-dropdown", data: { track_label: "projects_dropdown", track_event: "click_dropdown", track_value: "" } }) do
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index ffb90bbd354..0576f51fa83 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -72,7 +72,7 @@
%p= s_("Profiles|You can set your current timezone here")
.col-lg-8
-# TODO: might need an entry in user/profile.md to describe some of these settings
- -# https://gitlab.com/gitlab-org/gitlab-ce/issues/60070
+ -# https://gitlab.com/gitlab-org/gitlab-foss/issues/60070
%h5= ("Time zone")
= dropdown_tag(_("Select a timezone"), options: { toggle_class: 'btn js-timezone-dropdown input-lg', title: _("Select a timezone"), filter: true, placeholder: s_("OfSearchInADropdown|Filter"), data: { data: timezone_data } } )
%input.hidden{ :type => 'hidden', :id => 'user_timezone', :name => 'user[timezone]', value: @user.timezone }
diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml
index 56995ffbcee..8c3518e3a29 100644
--- a/app/views/projects/pipelines/_with_tabs.html.haml
+++ b/app/views/projects/pipelines/_with_tabs.html.haml
@@ -15,7 +15,7 @@
= render_if_exists "projects/pipelines/tabs_holder", pipeline: @pipeline, project: @project
.tab-content
- #js-tab-pipeline.tab-pane
+ #js-tab-pipeline.tab-pane.position-absolute.position-left-0.w-100
#js-pipeline-graph-vue
#js-tab-builds.tab-pane
diff --git a/app/views/shared/_promo.html.haml b/app/views/shared/_promo.html.haml
index 09edf4000d5..0f31b60d8d3 100644
--- a/app/views/shared/_promo.html.haml
+++ b/app/views/shared/_promo.html.haml
@@ -2,4 +2,4 @@
= link_to 'Homepage', promo_url
= link_to 'Blog', promo_url + '/blog/'
= link_to '@gitlab', 'https://twitter.com/gitlab'
- = link_to 'Requests', 'https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#feature-proposals'
+ = link_to 'Requests', 'https://gitlab.com/gitlab-org/gitlab-foss/blob/master/CONTRIBUTING.md#feature-proposals'
diff --git a/app/views/shared/issuable/_search_bar.html.haml b/app/views/shared/issuable/_search_bar.html.haml
index c9458475aa5..de994250649 100644
--- a/app/views/shared/issuable/_search_bar.html.haml
+++ b/app/views/shared/issuable/_search_bar.html.haml
@@ -6,7 +6,7 @@
.issues-filters{ class: ("w-100" if type == :boards_modal) }
.issues-details-filters.filtered-search-block.d-flex.flex-column.flex-md-row{ class: block_css_class, "v-pre" => type == :boards_modal }
- - if type == :boards
+ - if type == :boards && (multiple_boards_available? || current_board_parent.boards.size > 1)
= render "shared/boards/switcher", board: board
= form_tag page_filter_path, method: :get, class: 'filter-form js-filter-form w-100' do
- if params[:search].present?
diff --git a/app/workers/ci/archive_traces_cron_worker.rb b/app/workers/ci/archive_traces_cron_worker.rb
index ef2da729705..ad7a29719ac 100644
--- a/app/workers/ci/archive_traces_cron_worker.rb
+++ b/app/workers/ci/archive_traces_cron_worker.rb
@@ -9,7 +9,7 @@ module Ci
def perform
# Archive stale live traces which still resides in redis or database
# This could happen when ArchiveTraceWorker sidekiq jobs were lost by receiving SIGKILL
- # More details in https://gitlab.com/gitlab-org/gitlab-ce/issues/36791
+ # More details in https://gitlab.com/gitlab-org/gitlab-foss/issues/36791
Ci::Build.with_stale_live_trace.find_each(batch_size: 100) do |build|
Ci::ArchiveTraceService.new.execute(build, worker_name: self.class.name)
end
diff --git a/app/workers/cluster_configure_worker.rb b/app/workers/cluster_configure_worker.rb
index b0e551d4e03..e7a4797e68e 100644
--- a/app/workers/cluster_configure_worker.rb
+++ b/app/workers/cluster_configure_worker.rb
@@ -5,6 +5,6 @@ class ClusterConfigureWorker
include ClusterQueue
def perform(cluster_id)
- # Scheduled for removal in https://gitlab.com/gitlab-org/gitlab-ce/issues/59319
+ # Scheduled for removal in https://gitlab.com/gitlab-org/gitlab-foss/issues/59319
end
end
diff --git a/app/workers/cluster_project_configure_worker.rb b/app/workers/cluster_project_configure_worker.rb
index 8f48eca4d86..ad2437a77e9 100644
--- a/app/workers/cluster_project_configure_worker.rb
+++ b/app/workers/cluster_project_configure_worker.rb
@@ -5,6 +5,6 @@ class ClusterProjectConfigureWorker
include ClusterQueue
def perform(project_id)
- # Scheduled for removal in https://gitlab.com/gitlab-org/gitlab-ce/issues/59319
+ # Scheduled for removal in https://gitlab.com/gitlab-org/gitlab-foss/issues/59319
end
end
diff --git a/app/workers/namespaces/schedule_aggregation_worker.rb b/app/workers/namespaces/schedule_aggregation_worker.rb
index 983ce4bef4a..b7d580220d6 100644
--- a/app/workers/namespaces/schedule_aggregation_worker.rb
+++ b/app/workers/namespaces/schedule_aggregation_worker.rb
@@ -27,7 +27,7 @@ module Namespaces
#
# The migration and specs fails since NamespaceAggregationSchedule table
# does not exist at that point.
- # https://gitlab.com/gitlab-org/gitlab-ce/issues/50712
+ # https://gitlab.com/gitlab-org/gitlab-foss/issues/50712
def aggregation_schedules_table_exists?
return true unless Rails.env.test?
diff --git a/app/workers/run_pipeline_schedule_worker.rb b/app/workers/run_pipeline_schedule_worker.rb
index 351850e53cb..659f8b80397 100644
--- a/app/workers/run_pipeline_schedule_worker.rb
+++ b/app/workers/run_pipeline_schedule_worker.rb
@@ -39,7 +39,7 @@ class RunPipelineScheduleWorker
Gitlab::Sentry
.track_exception(error,
- issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/41231',
+ issue_url: 'https://gitlab.com/gitlab-org/gitlab-foss/issues/41231',
extra: { schedule_id: schedule.id })
end
# rubocop:enable Gitlab/RailsLogger