diff options
Diffstat (limited to 'app/presenters')
-rw-r--r-- | app/presenters/issue_presenter.rb | 4 | ||||
-rw-r--r-- | app/presenters/merge_request_presenter.rb | 11 | ||||
-rw-r--r-- | app/presenters/ml/model_presenter.rb | 17 | ||||
-rw-r--r-- | app/presenters/ml/models_index_presenter.rb | 21 | ||||
-rw-r--r-- | app/presenters/packages/npm/package_presenter.rb | 27 | ||||
-rw-r--r-- | app/presenters/packages/nuget/v2/metadata_index_presenter.rb | 48 | ||||
-rw-r--r-- | app/presenters/packages/nuget/v2/service_index_presenter.rb | 48 | ||||
-rw-r--r-- | app/presenters/projects/import_export/project_export_presenter.rb | 2 |
8 files changed, 127 insertions, 51 deletions
diff --git a/app/presenters/issue_presenter.rb b/app/presenters/issue_presenter.rb index 69d775d8125..42ecbc9988e 100644 --- a/app/presenters/issue_presenter.rb +++ b/app/presenters/issue_presenter.rb @@ -16,6 +16,10 @@ class IssuePresenter < Gitlab::View::Presenter::Delegated issue.project.emails_disabled? end + def project_emails_enabled? + issue.project.emails_enabled? + end + delegator_override :service_desk_reply_to def service_desk_reply_to return unless super.present? diff --git a/app/presenters/merge_request_presenter.rb b/app/presenters/merge_request_presenter.rb index 8d2baa6ee99..5c23af6e821 100644 --- a/app/presenters/merge_request_presenter.rb +++ b/app/presenters/merge_request_presenter.rb @@ -266,10 +266,15 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated def issues_sentence(project, issues) # Sorting based on the `#123` or `group/project#123` reference will sort - # local issues first. - issues.map do |issue| + # local issues numerically first. + issue_refs = issues.map do |issue| issue.to_reference(project) - end.sort.to_sentence + end + + issue_refs.sort_by do |issue_ref| + path_section = issue_ref.split('#') + [path_section.first, path_section.last.to_i] + end.to_sentence end def user_can_fork_project? diff --git a/app/presenters/ml/model_presenter.rb b/app/presenters/ml/model_presenter.rb new file mode 100644 index 00000000000..1317a13351b --- /dev/null +++ b/app/presenters/ml/model_presenter.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Ml + class ModelPresenter < Gitlab::View::Presenter::Delegated + presents ::Ml::Model, as: :model + + def latest_version_name + model.latest_version&.version + end + + def latest_package_path + return unless model.latest_version&.package_id.present? + + Gitlab::Routing.url_helpers.project_package_path(model.project, model.latest_version.package_id) + end + end +end diff --git a/app/presenters/ml/models_index_presenter.rb b/app/presenters/ml/models_index_presenter.rb deleted file mode 100644 index e2cb8e2d6c1..00000000000 --- a/app/presenters/ml/models_index_presenter.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -module Ml - class ModelsIndexPresenter - def initialize(models) - @models = models - end - - def present - data = @models.map do |m| - { - name: m.name, - version: m.version, - path: Gitlab::Routing.url_helpers.project_package_path(m.project, m) - } - end - - Gitlab::Json.generate({ models: data }) - end - end -end diff --git a/app/presenters/packages/npm/package_presenter.rb b/app/presenters/packages/npm/package_presenter.rb deleted file mode 100644 index 42f61182ab8..00000000000 --- a/app/presenters/packages/npm/package_presenter.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Packages - module Npm - class PackagePresenter - def initialize(metadata) - @metadata = metadata - end - - def name - metadata[:name] - end - - def versions - metadata[:versions] - end - - def dist_tags - metadata[:dist_tags] - end - - private - - attr_reader :metadata - end - end -end diff --git a/app/presenters/packages/nuget/v2/metadata_index_presenter.rb b/app/presenters/packages/nuget/v2/metadata_index_presenter.rb new file mode 100644 index 00000000000..0ce7c8956b3 --- /dev/null +++ b/app/presenters/packages/nuget/v2/metadata_index_presenter.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module Packages + module Nuget + module V2 + class MetadataIndexPresenter + def xml + Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| + xml['edmx'].Edmx('xmlns:edmx' => 'http://schemas.microsoft.com/ado/2007/06/edmx', Version: '1.0') do + xml['edmx'].DataServices('xmlns:m' => 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata', + 'm:DataServiceVersion' => '2.0', 'm:MaxDataServiceVersion' => '2.0') do + xml.Schema(xmlns: 'http://schemas.microsoft.com/ado/2006/04/edm', Namespace: 'NuGetGallery.OData') do + xml.EntityType(Name: 'V2FeedPackage', 'm:HasStream' => true) do + xml.Key do + xml.PropertyRef(Name: 'Id') + xml.PropertyRef(Name: 'Version') + end + xml.Property(Name: 'Id', Type: 'Edm.String', Nullable: false) + xml.Property(Name: 'Version', Type: 'Edm.String', Nullable: false) + xml.Property(Name: 'Authors', Type: 'Edm.String') + xml.Property(Name: 'Dependencies', Type: 'Edm.String') + xml.Property(Name: 'Description', Type: 'Edm.String') + xml.Property(Name: 'DownloadCount', Type: 'Edm.Int64', Nullable: false) + xml.Property(Name: 'IconUrl', Type: 'Edm.String') + xml.Property(Name: 'Published', Type: 'Edm.DateTime', Nullable: false) + xml.Property(Name: 'ProjectUrl', Type: 'Edm.String') + xml.Property(Name: 'Tags', Type: 'Edm.String') + xml.Property(Name: 'Title', Type: 'Edm.String') + xml.Property(Name: 'LicenseUrl', Type: 'Edm.String') + end + end + xml.Schema(xmlns: 'http://schemas.microsoft.com/ado/2006/04/edm', Namespace: 'NuGetGallery') do + xml.EntityContainer(Name: 'V2FeedContext', 'm:IsDefaultEntityContainer' => true) do + xml.EntitySet(Name: 'Packages', EntityType: 'NuGetGallery.OData.V2FeedPackage') + xml.FunctionImport(Name: 'FindPackagesById', + ReturnType: 'Collection(NuGetGallery.OData.V2FeedPackage)', EntitySet: 'Packages') do + xml.Parameter(Name: 'id', Type: 'Edm.String', FixedLength: 'false', Unicode: 'false') + end + end + end + end + end + end + end + end + end + end +end diff --git a/app/presenters/packages/nuget/v2/service_index_presenter.rb b/app/presenters/packages/nuget/v2/service_index_presenter.rb new file mode 100644 index 00000000000..a8fc9b673bf --- /dev/null +++ b/app/presenters/packages/nuget/v2/service_index_presenter.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module Packages + module Nuget + module V2 + class ServiceIndexPresenter + include API::Helpers::RelatedResourcesHelpers + + ROOT_ATTRIBUTES = { + xmlns: 'http://www.w3.org/2007/app', + 'xmlns:atom' => 'http://www.w3.org/2005/Atom' + }.freeze + + def initialize(project_or_group) + @project_or_group = project_or_group + end + + def xml + Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| + xml.service(ROOT_ATTRIBUTES.merge('xml:base' => xml_base)) do + xml.workspace do + xml['atom'].title('Default', type: 'text') + xml.collection(href: 'Packages') do + xml['atom'].title('Packages', type: 'text') + end + end + end + end + end + + private + + attr_reader :project_or_group + + def xml_base + base_path = case project_or_group + when Project + api_v4_projects_packages_nuget_v2_path(id: project_or_group.id) + when Group + api_v4_groups___packages_nuget_v2_path(id: project_or_group.id) + end + + expose_url(base_path) + end + end + end + end +end diff --git a/app/presenters/projects/import_export/project_export_presenter.rb b/app/presenters/projects/import_export/project_export_presenter.rb index 76cc8242da8..0c16c729e9c 100644 --- a/app/presenters/projects/import_export/project_export_presenter.rb +++ b/app/presenters/projects/import_export/project_export_presenter.rb @@ -52,3 +52,5 @@ module Projects end end end + +Projects::ImportExport::ProjectExportPresenter.prepend_mod_with('Projects::ImportExport::ProjectExportPresenter') |