diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-13 12:06:41 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-13 12:06:41 +0300 |
commit | 4f01ac5ba0bf72427ed4fef9b229d056dbb60e89 (patch) | |
tree | 55f2bfd319a18c05ac4e4401c7a0d7b13dd3d74f /app | |
parent | 213ce7805856f2cc1d019a03c76ae0d098337c26 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
12 files changed, 90 insertions, 39 deletions
diff --git a/app/assets/javascripts/diffs/components/diff_content.vue b/app/assets/javascripts/diffs/components/diff_content.vue index 9a1e59ec045..a5ffa84e3fb 100644 --- a/app/assets/javascripts/diffs/components/diff_content.vue +++ b/app/assets/javascripts/diffs/components/diff_content.vue @@ -124,8 +124,10 @@ export default { :diff-viewer-mode="diffViewerMode" :new-path="diffFile.new_path" :new-sha="diffFile.diff_refs.head_sha" + :new-size="diffFile.new_size" :old-path="diffFile.old_path" :old-sha="diffFile.diff_refs.base_sha" + :old-size="diffFile.old_size" :file-hash="diffFileHash" :project-path="projectPath" :a-mode="diffFile.a_mode" diff --git a/app/assets/javascripts/lib/graphql.js b/app/assets/javascripts/lib/graphql.js index ca797cde913..2c5278d16ae 100644 --- a/app/assets/javascripts/lib/graphql.js +++ b/app/assets/javascripts/lib/graphql.js @@ -26,8 +26,11 @@ export default (resolvers = {}, config = {}) => { createUploadLink(httpOptions), new BatchHttpLink(httpOptions), ), - cache: new InMemoryCache({ ...config.cacheConfig, freezeResults: true }), + cache: new InMemoryCache({ + ...config.cacheConfig, + freezeResults: config.assumeImmutableResults, + }), resolvers, - assumeImmutableResults: true, + assumeImmutableResults: config.assumeImmutableResults, }); }; diff --git a/app/assets/javascripts/monitoring/components/dashboard.vue b/app/assets/javascripts/monitoring/components/dashboard.vue index 94c7bf1cee4..705044565a0 100644 --- a/app/assets/javascripts/monitoring/components/dashboard.vue +++ b/app/assets/javascripts/monitoring/components/dashboard.vue @@ -187,8 +187,11 @@ export default { firstDashboard() { return this.allDashboards[0] || {}; }, + selectedDashboard() { + return this.allDashboards.find(d => d.path === this.currentDashboard) || this.firstDashboard; + }, selectedDashboardText() { - return this.currentDashboard || this.firstDashboard.display_name; + return this.selectedDashboard.display_name; }, showRearrangePanelsBtn() { return !this.showEmptyState && this.rearrangePanelsAvailable; @@ -199,6 +202,14 @@ export default { alertWidgetAvailable() { return IS_EE && this.prometheusAlertsAvailable && this.alertsEndpoint; }, + hasHeaderButtons() { + return ( + this.addingMetricsAvailable || + this.showRearrangePanelsBtn || + this.selectedDashboard.can_edit || + this.externalDashboardUrl.length + ); + }, }, created() { this.setEndpoints({ @@ -390,7 +401,7 @@ export default { </template> <gl-form-group - v-if="addingMetricsAvailable || showRearrangePanelsBtn || externalDashboardUrl.length" + v-if="hasHeaderButtons" label-for="prometheus-graphs-dropdown-buttons" class="dropdown-buttons col-md d-md-flex col-lg d-lg-flex align-items-end" > @@ -438,6 +449,14 @@ export default { </gl-modal> <gl-button + v-if="selectedDashboard.can_edit" + class="mt-1 js-edit-link" + :href="selectedDashboard.project_blob_path" + > + {{ __('Edit dashboard') }} + </gl-button> + + <gl-button v-if="externalDashboardUrl.length" class="mt-1 js-external-dashboard-link" variant="primary" diff --git a/app/assets/javascripts/pages/projects/settings/operations/show/index.js b/app/assets/javascripts/pages/projects/settings/operations/show/index.js index 7037933bc5a..a32c188909c 100644 --- a/app/assets/javascripts/pages/projects/settings/operations/show/index.js +++ b/app/assets/javascripts/pages/projects/settings/operations/show/index.js @@ -6,8 +6,6 @@ import initSettingsPanels from '~/settings_panels'; document.addEventListener('DOMContentLoaded', () => { mountErrorTrackingForm(); mountOperationSettings(); - if (gon.features.gfmGrafanaIntegration) { - mountGrafanaIntegration(); - } + mountGrafanaIntegration(); initSettingsPanels(); }); diff --git a/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue b/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue index ebb253ff422..b874bedab36 100644 --- a/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue +++ b/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue @@ -23,6 +23,11 @@ export default { type: String, required: true, }, + newSize: { + type: Number, + required: false, + default: 0, + }, oldPath: { type: String, required: true, @@ -31,6 +36,11 @@ export default { type: String, required: true, }, + oldSize: { + type: Number, + required: false, + default: 0, + }, projectPath: { type: String, required: false, @@ -85,6 +95,8 @@ export default { :diff-mode="diffMode" :new-path="fullNewPath" :old-path="fullOldPath" + :old-size="oldSize" + :new-size="newSize" :project-path="projectPath" :a-mode="aMode" :b-mode="bMode" diff --git a/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue b/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue index a17fc022195..4dbfdb6d79c 100644 --- a/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue +++ b/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue @@ -14,6 +14,16 @@ export default { type: String, required: true, }, + newSize: { + type: Number, + required: false, + default: 0, + }, + oldSize: { + type: Number, + required: false, + default: 0, + }, }, }; </script> @@ -22,12 +32,14 @@ export default { <div class="two-up view d-flex"> <image-viewer :path="oldPath" + :file-size="oldSize" :render-info="true" inner-css-classes="frame deleted" class="wrap w-50" /> <image-viewer :path="newPath" + :file-size="newSize" :render-info="true" :inner-css-classes="['frame', 'added']" class="wrap w-50" diff --git a/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue b/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue index cab92297ca7..e30871b66fc 100644 --- a/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue +++ b/app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue @@ -22,6 +22,16 @@ export default { type: String, required: true, }, + newSize: { + type: Number, + required: false, + default: 0, + }, + oldSize: { + type: Number, + required: false, + default: 0, + }, }, data() { return { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c85b192b34a..e4d878641b3 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -20,11 +20,11 @@ class ApplicationController < ActionController::Base before_action :authenticate_user!, except: [:route_not_found] before_action :enforce_terms!, if: :should_enforce_terms? before_action :validate_user_service_ticket! - before_action :check_password_expiration + before_action :check_password_expiration, if: :html_request? before_action :ldap_security_check before_action :sentry_context before_action :default_headers - before_action :add_gon_variables, unless: [:peek_request?, :json_request?] + before_action :add_gon_variables, if: :html_request? before_action :configure_permitted_parameters, if: :devise_controller? before_action :require_email, unless: :devise_controller? before_action :active_user_check, unless: :devise_controller? @@ -455,8 +455,8 @@ class ApplicationController < ActionController::Base response.headers['Page-Title'] = URI.escape(page_title('GitLab')) end - def peek_request? - request.path.start_with?('/-/peek') + def html_request? + request.format.html? end def json_request? @@ -466,7 +466,7 @@ class ApplicationController < ActionController::Base def should_enforce_terms? return false unless Gitlab::CurrentSettings.current_application_settings.enforce_terms - !(peek_request? || devise_controller?) + html_request? && !devise_controller? end def set_usage_stats_consent_flag diff --git a/app/controllers/concerns/confirm_email_warning.rb b/app/controllers/concerns/confirm_email_warning.rb index 86df0010665..32e1a46e580 100644 --- a/app/controllers/concerns/confirm_email_warning.rb +++ b/app/controllers/concerns/confirm_email_warning.rb @@ -4,15 +4,18 @@ module ConfirmEmailWarning extend ActiveSupport::Concern included do - before_action :set_confirm_warning, if: -> { Feature.enabled?(:soft_email_confirmation) } + before_action :set_confirm_warning, if: :show_confirm_warning? end protected + def show_confirm_warning? + html_request? && request.get? && Feature.enabled?(:soft_email_confirmation) + end + def set_confirm_warning return unless current_user return if current_user.confirmed? - return if peek_request? || json_request? || !request.get? email = current_user.unconfirmed_email || current_user.email diff --git a/app/controllers/concerns/uploads_actions.rb b/app/controllers/concerns/uploads_actions.rb index b87779c22d3..023c41821da 100644 --- a/app/controllers/concerns/uploads_actions.rb +++ b/app/controllers/concerns/uploads_actions.rb @@ -1,11 +1,16 @@ # frozen_string_literal: true module UploadsActions + extend ActiveSupport::Concern include Gitlab::Utils::StrongMemoize include SendFileUpload UPLOAD_MOUNTS = %w(avatar attachment file logo header_logo favicon).freeze + included do + prepend_before_action :set_request_format_from_path_extension + end + def create uploader = UploadService.new(model, params[:file], uploader_class).execute @@ -64,6 +69,18 @@ module UploadsActions private + # From ActionDispatch::Http::MimeNegotiation. We have an initializer that + # monkey-patches this method out (so that repository paths don't guess a + # format based on extension), but we do want this behaviour when serving + # uploads. + def set_request_format_from_path_extension + path = request.headers['action_dispatch.original_path'] || request.headers['PATH_INFO'] + + if match = path&.match(/\.(\w+)\z/) + request.format = match.captures.first + end + end + def uploader_class raise NotImplementedError end diff --git a/app/controllers/projects/grafana_api_controller.rb b/app/controllers/projects/grafana_api_controller.rb index 85f47b92e58..380a18818ab 100644 --- a/app/controllers/projects/grafana_api_controller.rb +++ b/app/controllers/projects/grafana_api_controller.rb @@ -4,8 +4,6 @@ class Projects::GrafanaApiController < Projects::ApplicationController include RenderServiceResults include MetricsDashboard - before_action :validate_feature_enabled!, only: [:metrics_dashboard] - def proxy result = ::Grafana::ProxyService.new( project, @@ -26,10 +24,6 @@ class Projects::GrafanaApiController < Projects::ApplicationController params.permit(:embedded, :grafana_url) end - def validate_feature_enabled! - render_403 unless Feature.enabled?(:gfm_grafana_integration) - end - def query_params params.permit(:query, :start, :end, :step) end diff --git a/app/workers/expire_build_artifacts_worker.rb b/app/workers/expire_build_artifacts_worker.rb index 9545227fa31..383fd30e098 100644 --- a/app/workers/expire_build_artifacts_worker.rb +++ b/app/workers/expire_build_artifacts_worker.rb @@ -7,25 +7,6 @@ class ExpireBuildArtifactsWorker feature_category :continuous_integration def perform - if Feature.enabled?(:ci_new_expire_job_artifacts_service, default_enabled: true) - perform_efficient_artifacts_removal - else - perform_legacy_artifacts_removal - end - end - - def perform_efficient_artifacts_removal Ci::DestroyExpiredJobArtifactsService.new.execute end - - # rubocop: disable CodeReuse/ActiveRecord - def perform_legacy_artifacts_removal - Rails.logger.info 'Scheduling removal of build artifacts' # rubocop:disable Gitlab/RailsLogger - - build_ids = Ci::Build.with_expired_artifacts.pluck(:id) - build_ids = build_ids.map { |build_id| [build_id] } - - ExpireBuildInstanceArtifactsWorker.bulk_perform_async(build_ids) - end - # rubocop: enable CodeReuse/ActiveRecord end |