diff options
author | Steve Azzopardi <sazzopardi@gitlab.com> | 2018-10-17 12:21:19 +0000 |
---|---|---|
committer | Steve Azzopardi <sazzopardi@gitlab.com> | 2018-10-17 12:21:19 +0000 |
commit | 3d51de1f023c3faf879e6521e19a236c231af292 (patch) | |
tree | af02bf1f18b1270b87619a0f2db52475ee04ff11 | |
parent | df8fdd94ec5be99ea18d3304358c6daa8f3c1155 (diff) | |
parent | 9735108f17d3b757965ae563131d7cbf979419db (diff) | |
download | gitlab-ce-3d51de1f023c3faf879e6521e19a236c231af292.tar.gz |
Merge branch '11-4-stable-prepare-rc7' into '11-4-stable'
Prepare 11.4 RC7 release
See merge request gitlab-org/gitlab-ce!22392
20 files changed, 123 insertions, 53 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index b1fa68e5df9..33e061fe7a0 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.125.0 +0.125.1 diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index e8aac51a299..a88b575ad99 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -202,7 +202,6 @@ document.addEventListener('DOMContentLoaded', () => { $('.navbar-toggler').on('click', () => { $('.header-content').toggleClass('menu-expanded'); - gl.lazyLoader.loadCheck(); }); // Show/hide comments on diff diff --git a/app/assets/javascripts/pages/users/user_overview_block.js b/app/assets/javascripts/pages/users/user_overview_block.js index 0009419cd0c..2ed177be558 100644 --- a/app/assets/javascripts/pages/users/user_overview_block.js +++ b/app/assets/javascripts/pages/users/user_overview_block.js @@ -1,10 +1,15 @@ import axios from '~/lib/utils/axios_utils'; +const DEFAULT_LIMIT = 20; + export default class UserOverviewBlock { constructor(options = {}) { this.container = options.container; this.url = options.url; - this.limit = options.limit || 20; + this.requestParams = { + limit: DEFAULT_LIMIT, + ...options.requestParams, + }; this.loadData(); } @@ -15,9 +20,7 @@ export default class UserOverviewBlock { axios .get(this.url, { - params: { - limit: this.limit, - }, + params: this.requestParams, }) .then(({ data }) => this.render(data)) .catch(() => loadingEl.classList.add('hide')); @@ -34,7 +37,9 @@ export default class UserOverviewBlock { if (count && count > 0) { document.querySelector(`${this.container} .js-view-all`).classList.remove('hide'); } else { - document.querySelector(`${this.container} .nothing-here-block`).classList.add('text-left', 'p-0'); + document + .querySelector(`${this.container} .nothing-here-block`) + .classList.add('text-left', 'p-0'); } loadingEl.classList.add('hide'); diff --git a/app/assets/javascripts/pages/users/user_tabs.js b/app/assets/javascripts/pages/users/user_tabs.js index 23b0348a99f..1de9945baad 100644 --- a/app/assets/javascripts/pages/users/user_tabs.js +++ b/app/assets/javascripts/pages/users/user_tabs.js @@ -182,18 +182,22 @@ export default class UserTabs { this.loadActivityCalendar('overview'); - UserTabs.renderMostRecentBlocks('#js-overview .activities-block', 5); - UserTabs.renderMostRecentBlocks('#js-overview .projects-block', 10); + UserTabs.renderMostRecentBlocks('#js-overview .activities-block', { + requestParams: { limit: 5 }, + }); + UserTabs.renderMostRecentBlocks('#js-overview .projects-block', { + requestParams: { limit: 10, skip_pagination: true }, + }); this.loaded.overview = true; } - static renderMostRecentBlocks(container, limit) { + static renderMostRecentBlocks(container, options) { // eslint-disable-next-line no-new new UserOverviewBlock({ container, url: $(`${container} .overview-content-list`).data('href'), - limit, + ...options, }); } @@ -216,7 +220,12 @@ export default class UserTabs { let calendarHint = ''; if (action === 'activity') { - calendarHint = sprintf(__('Summary of issues, merge requests, push events, and comments (Timezone: %{utcFormatted})'), { utcFormatted }); + calendarHint = sprintf( + __( + 'Summary of issues, merge requests, push events, and comments (Timezone: %{utcFormatted})', + ), + { utcFormatted }, + ); } else if (action === 'overview') { calendarHint = __('Issues, merge requests, pushes and comments.'); } @@ -224,7 +233,15 @@ export default class UserTabs { $calendarWrap.find('.calendar-hint').text(calendarHint); // eslint-disable-next-line no-new - new ActivityCalendar('.tab-pane.active .js-contrib-calendar', '.tab-pane.active .user-calendar-activities', data, calendarActivitiesPath, utcOffset, 0, monthsAgo); + new ActivityCalendar( + '.tab-pane.active .js-contrib-calendar', + '.tab-pane.active .user-calendar-activities', + data, + calendarActivitiesPath, + utcOffset, + 0, + monthsAgo, + ); }) .catch(() => flash(__('There was an error loading users activity calendar.'))); } diff --git a/app/assets/javascripts/right_sidebar.js b/app/assets/javascripts/right_sidebar.js index b27d635c6ac..e75dbaa3413 100644 --- a/app/assets/javascripts/right_sidebar.js +++ b/app/assets/javascripts/right_sidebar.js @@ -57,8 +57,6 @@ Sidebar.prototype.sidebarToggleClicked = function (e, triggered) { $allGutterToggleIcons.removeClass('fa-angle-double-left').addClass('fa-angle-double-right'); $('aside.right-sidebar').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); $('.layout-page').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded'); - - if (gl.lazyLoader) gl.lazyLoader.loadCheck(); } $this.attr('data-original-title', tooltipLabel); diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d16240af404..5b70c69d7f4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -56,10 +56,12 @@ class UsersController < ApplicationController def projects load_projects + skip_pagination = Gitlab::Utils.to_boolean(params[:skip_pagination]) + respond_to do |format| format.html { render 'show' } format.json do - pager_json("shared/projects/_list", @projects.count, projects: @projects) + pager_json("shared/projects/_list", @projects.count, projects: @projects, skip_pagination: skip_pagination) end end end diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb index 7bdcfcc38f7..066a5b1885c 100644 --- a/app/serializers/build_details_entity.rb +++ b/app/serializers/build_details_entity.rb @@ -9,7 +9,7 @@ class BuildDetailsEntity < JobEntity expose :runner, using: RunnerEntity expose :pipeline, using: PipelineEntity - expose :deployment_status, if: -> (*) { build.has_environment? } do + expose :deployment_status, if: -> (*) { build.starts_environment? } do expose :deployment_status, as: :status expose :persisted_environment, as: :environment, with: EnvironmentEntity diff --git a/app/serializers/issue_entity.rb b/app/serializers/issue_entity.rb index 16a477c92fa..c3f7d4651fb 100644 --- a/app/serializers/issue_entity.rb +++ b/app/serializers/issue_entity.rb @@ -42,6 +42,6 @@ class IssueEntity < IssuableEntity end expose :preview_note_path do |issue| - preview_markdown_path(issue.project, quick_actions_target_type: 'Issue', quick_actions_target_id: issue.id) + preview_markdown_path(issue.project, quick_actions_target_type: 'Issue', quick_actions_target_id: issue.iid) end end diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb index 380e8804f51..9ec24f799ef 100644 --- a/app/serializers/merge_request_widget_entity.rb +++ b/app/serializers/merge_request_widget_entity.rb @@ -222,7 +222,7 @@ class MergeRequestWidgetEntity < IssuableEntity end expose :preview_note_path do |merge_request| - preview_markdown_path(merge_request.project, quick_actions_target_type: 'MergeRequest', quick_actions_target_id: merge_request.id) + preview_markdown_path(merge_request.project, quick_actions_target_type: 'MergeRequest', quick_actions_target_id: merge_request.iid) end expose :merge_commit_path do |merge_request| diff --git a/app/views/shared/projects/_list.html.haml b/app/views/shared/projects/_list.html.haml index e1da05d8f08..06eb3d03e31 100644 --- a/app/views/shared/projects/_list.html.haml +++ b/app/views/shared/projects/_list.html.haml @@ -8,6 +8,7 @@ - user = local_assigns[:user] - show_last_commit_as_description = false unless local_assigns[:show_last_commit_as_description] == true - remote = false unless local_assigns[:remote] == true +- skip_pagination = false unless local_assigns[:skip_pagination] == true .js-projects-list-holder - if any_projects?(projects) @@ -25,6 +26,6 @@ = icon('lock fw', base: 'circle', class: 'fa-lg private-fork-icon') %strong= pluralize(@private_forks_count, 'private fork') %span you have no access to. - = paginate_collection(projects, remote: remote) + = paginate_collection(projects, remote: remote) unless skip_pagination - else .nothing-here-block No projects found diff --git a/changelogs/unreleased/52532-unable-to-toggle-issuable-sidebar-out-of-collapsed-state.yml b/changelogs/unreleased/52532-unable-to-toggle-issuable-sidebar-out-of-collapsed-state.yml new file mode 100644 index 00000000000..9abad3d2cd8 --- /dev/null +++ b/changelogs/unreleased/52532-unable-to-toggle-issuable-sidebar-out-of-collapsed-state.yml @@ -0,0 +1,5 @@ +--- +title: Allow Issue and Merge Request sidebar to be toggled from collapsed state +merge_request: 22353 +author: +type: fixed diff --git a/changelogs/unreleased/52564-personal-projects-pagination-in-profile-overview-tab-is-broken.yml b/changelogs/unreleased/52564-personal-projects-pagination-in-profile-overview-tab-is-broken.yml new file mode 100644 index 00000000000..bddc1e16fab --- /dev/null +++ b/changelogs/unreleased/52564-personal-projects-pagination-in-profile-overview-tab-is-broken.yml @@ -0,0 +1,5 @@ +--- +title: Hide pagination for personal projects on profile overview tab +merge_request: 22321 +author: +type: other diff --git a/changelogs/unreleased/52669-fixes-quick-actions-preview.yml b/changelogs/unreleased/52669-fixes-quick-actions-preview.yml new file mode 100644 index 00000000000..51b1425d04d --- /dev/null +++ b/changelogs/unreleased/52669-fixes-quick-actions-preview.yml @@ -0,0 +1,5 @@ +--- +title: Fixes close/reopen quick actions preview for issues and merge_requests +merge_request: 22343 +author: Jacopo Beschi @jacopo-beschi +type: fixed diff --git a/doc/ci/pipelines.md b/doc/ci/pipelines.md index 44589500eb0..371703a12c8 100644 --- a/doc/ci/pipelines.md +++ b/doc/ci/pipelines.md @@ -197,9 +197,9 @@ stage has a job with a manual action. > [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21767) in GitLab 11.4. -When you do not want to run a job immediately, you can [delay the job to run after a certain period](yaml/README.md#delayed). +When you do not want to run a job immediately, you can [delay the job to run after a certain period](yaml/README.md#when-delayed). This is especially useful for timed incremental rollout that new code is rolled out gradually. -For example, if you start rolling out new code and users do not experience trouble, GitLab automatically completes the deployment from 0% to 100%. +For example, if you start rolling out new code and users do not experience trouble, GitLab automatically completes the deployment from 0% to 100%. Alternatively, if you start rolling out and you noticed that a few users experience trouble with the version, you can stop the timed incremental rollout by canceling the pipeline, and [rolling](environments.md#rolling-back-changes) it back to the stable version. diff --git a/doc/user/project/img/issue_boards_core.png b/doc/user/project/img/issue_boards_core.png Binary files differindex 9e819160861..9e819160861 100755..100644 --- a/doc/user/project/img/issue_boards_core.png +++ b/doc/user/project/img/issue_boards_core.png diff --git a/doc/user/project/img/issue_boards_premium.png b/doc/user/project/img/issue_boards_premium.png Binary files differindex bd9164b2961..bd9164b2961 100755..100644 --- a/doc/user/project/img/issue_boards_premium.png +++ b/doc/user/project/img/issue_boards_premium.png diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb index 6224cbffe9d..a3a301504ff 100644 --- a/spec/features/projects/jobs_spec.rb +++ b/spec/features/projects/jobs_spec.rb @@ -423,6 +423,31 @@ describe 'Jobs', :clean_gitlab_redis_shared_state do end end + context 'when job stops environment', :js do + let(:environment) { create(:environment, name: 'production', project: project) } + let(:build) do + create( + :ci_build, + :success, + :trace_live, + environment: environment.name, + pipeline: pipeline, + options: { environment: { action: 'stop' } } + ) + end + + before do + visit project_job_path(project, build) + wait_for_requests + end + + it 'does not show environment information banner' do + expect(page).not_to have_selector('.js-environment-container') + expect(page).not_to have_selector('.environment-information') + expect(page).not_to have_text(environment.name) + end + end + describe 'environment info in job view', :js do before do visit project_job_path(project, job) diff --git a/spec/features/users/overview_spec.rb b/spec/features/users/overview_spec.rb index 11f357cbaa5..b0ff53f9ccb 100644 --- a/spec/features/users/overview_spec.rb +++ b/spec/features/users/overview_spec.rb @@ -104,8 +104,9 @@ describe 'Overview tab on a user profile', :js do end describe 'user has a personal project' do - let(:private_project) { create(:project, :private, namespace: user.namespace, creator: user) { |p| p.add_maintainer(user) } } - let!(:private_event) { create(:event, project: private_project, author: user) } + before do + create(:project, :private, namespace: user.namespace, creator: user) { |p| p.add_maintainer(user) } + end include_context 'visit overview tab' @@ -119,5 +120,31 @@ describe 'Overview tab on a user profile', :js do expect(find('#js-overview .projects-block')).to have_selector('.js-view-all', visible: true) end end + + describe 'user has more than ten personal projects' do + before do + create_list(:project, 11, :private, namespace: user.namespace, creator: user) do |project| + project.add_maintainer(user) + end + end + + include_context 'visit overview tab' + + it 'it shows max. ten entries in the list of projects' do + page.within('.projects-block') do + expect(page).to have_selector('.project-row', count: 10) + end + end + + it 'shows a link to the project list' do + expect(find('#js-overview .projects-block')).to have_selector('.js-view-all', visible: true) + end + + it 'does not show pagination' do + page.within('.projects-block') do + expect(page).not_to have_selector('.gl-pagination') + end + end + end end end diff --git a/spec/javascripts/right_sidebar_spec.js b/spec/javascripts/right_sidebar_spec.js index c7190ea9960..911ca19a3df 100644 --- a/spec/javascripts/right_sidebar_spec.js +++ b/spec/javascripts/right_sidebar_spec.js @@ -1,4 +1,4 @@ -/* eslint-disable no-var, one-var, one-var-declaration-per-line, no-return-assign, vars-on-top, jasmine/no-unsafe-spy, max-len */ +/* eslint-disable no-var, one-var, one-var-declaration-per-line, no-return-assign, vars-on-top, max-len */ import $ from 'jquery'; import MockAdapter from 'axios-mock-adapter'; @@ -92,33 +92,5 @@ import Sidebar from '~/right_sidebar'; }); }); }); - - describe('sidebarToggleClicked', () => { - const event = jasmine.createSpyObj('event', ['preventDefault']); - - beforeEach(() => { - spyOn($.fn, 'hasClass').and.returnValue(false); - }); - - afterEach(() => { - gl.lazyLoader = undefined; - }); - - it('calls loadCheck if lazyLoader is set', () => { - gl.lazyLoader = jasmine.createSpyObj('lazyLoader', ['loadCheck']); - - Sidebar.prototype.sidebarToggleClicked(event); - - expect(gl.lazyLoader.loadCheck).toHaveBeenCalled(); - }); - - it('does not throw if lazyLoader is not defined', () => { - gl.lazyLoader = undefined; - - const toggle = Sidebar.prototype.sidebarToggleClicked.bind(null, event); - - expect(toggle).not.toThrow(); - }); - }); }); }).call(window); diff --git a/spec/support/features/issuable_quick_actions_shared_examples.rb b/spec/support/features/issuable_quick_actions_shared_examples.rb index 846e697eb96..2a883ce1074 100644 --- a/spec/support/features/issuable_quick_actions_shared_examples.rb +++ b/spec/support/features/issuable_quick_actions_shared_examples.rb @@ -77,6 +77,15 @@ shared_examples 'issuable record that supports quick actions in its description expect(issuable.labels).to eq [label_bug] expect(issuable.milestone).to eq milestone end + + it 'removes the quick action from note and explains it in the preview' do + preview_note("Awesome!\n\n/close") + + expect(page).to have_content 'Awesome!' + expect(page).not_to have_content '/close' + issuable_name = issuable.is_a?(Issue) ? 'issue' : 'merge request' + expect(page).to have_content "Closes this #{issuable_name}." + end end context 'with a note containing only commands' do |