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
diff options
context:
space:
mode:
Diffstat (limited to 'app/presenters')
-rw-r--r--app/presenters/issue_presenter.rb4
-rw-r--r--app/presenters/merge_request_presenter.rb11
-rw-r--r--app/presenters/ml/model_presenter.rb17
-rw-r--r--app/presenters/ml/models_index_presenter.rb21
-rw-r--r--app/presenters/packages/npm/package_presenter.rb27
-rw-r--r--app/presenters/packages/nuget/v2/metadata_index_presenter.rb48
-rw-r--r--app/presenters/packages/nuget/v2/service_index_presenter.rb48
-rw-r--r--app/presenters/projects/import_export/project_export_presenter.rb2
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')