summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects/releases_controller.rb32
-rw-r--r--app/controllers/projects/tags_controller.rb8
-rw-r--r--app/models/project.rb3
-rw-r--r--app/views/projects/releases/edit.html.haml6
-rw-r--r--app/views/projects/releases/show.html.haml1
-rw-r--r--app/views/projects/tags/_tag.html.haml2
-rw-r--r--app/views/projects/tags/edit.html.haml0
-rw-r--r--config/routes.rb5
8 files changed, 46 insertions, 11 deletions
diff --git a/app/controllers/projects/releases_controller.rb b/app/controllers/projects/releases_controller.rb
new file mode 100644
index 00000000000..877cc0f3674
--- /dev/null
+++ b/app/controllers/projects/releases_controller.rb
@@ -0,0 +1,32 @@
+class Projects::ReleasesController < Projects::ApplicationController
+ # Authorize
+ before_action :require_non_empty_project
+ before_action :authorize_download_code!
+ before_action :authorize_push_code!
+ before_action :tag
+ before_action :release
+
+ def show
+ end
+
+ def edit
+ end
+
+ def update
+ description = params[:release][:description]
+ release.update_attributes(description: description)
+ release.save
+
+ redirect_to namespace_project_tag_release_path(@project.namespace, @project, @tag.name)
+ end
+
+ private
+
+ def tag
+ @tag ||= @repository.find_tag(params[:tag_id])
+ end
+
+ def release
+ @release ||= @project.releases.find_or_initialize_by(tag: @tag.name)
+ end
+end
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb
index a30c284c41f..f565fbbbbc3 100644
--- a/app/controllers/projects/tags_controller.rb
+++ b/app/controllers/projects/tags_controller.rb
@@ -10,14 +10,6 @@ class Projects::TagsController < Projects::ApplicationController
@tags = Kaminari.paginate_array(sorted).page(params[:page]).per(PER_PAGE)
end
- def edit
- # TODO: implement
- end
-
- def update
- # TODO: implement
- end
-
def create
result = CreateTagService.new(@project, current_user).
execute(params[:tag_name], params[:ref], params[:message])
diff --git a/app/models/project.rb b/app/models/project.rb
index 74b89aad499..cd3de01a95f 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -121,6 +121,7 @@ class Project < ActiveRecord::Base
has_many :starrers, through: :users_star_projects, source: :user
has_many :ci_commits, dependent: :destroy, class_name: 'Ci::Commit', foreign_key: :gl_project_id
has_many :ci_builds, through: :ci_commits, source: :builds, dependent: :destroy, class_name: 'Ci::Build'
+ has_many :releases, dependent: :destroy
has_one :import_data, dependent: :destroy, class_name: "ProjectImportData"
has_one :gitlab_ci_project, dependent: :destroy, class_name: "Ci::Project", foreign_key: :gitlab_id
@@ -247,7 +248,7 @@ class Project < ActiveRecord::Base
joins(:namespace).
iwhere('namespaces.path' => namespace_path)
- projects.where('projects.path' => project_path).take ||
+ projects.where('projects.path' => project_path).take ||
projects.iwhere('projects.path' => project_path).take
end
diff --git a/app/views/projects/releases/edit.html.haml b/app/views/projects/releases/edit.html.haml
new file mode 100644
index 00000000000..3b4a5e72238
--- /dev/null
+++ b/app/views/projects/releases/edit.html.haml
@@ -0,0 +1,6 @@
+= form_for(@release, method: :put, url: namespace_project_tag_release_path(@project.namespace, @project, @tag.name), html: { class: 'form-horizontal gfm-form' }) do |f|
+ = render layout: 'projects/md_preview', locals: { preview_class: "md-preview", referenced_users: true } do
+ = render 'projects/zen', f: f, attr: :description, classes: 'js-quick-submit'
+ = render 'projects/notes/hints'
+ .error-alert
+ = f.submit 'Save changes', class: 'btn btn-save'
diff --git a/app/views/projects/releases/show.html.haml b/app/views/projects/releases/show.html.haml
new file mode 100644
index 00000000000..bd831500086
--- /dev/null
+++ b/app/views/projects/releases/show.html.haml
@@ -0,0 +1 @@
+= debug @release
diff --git a/app/views/projects/tags/_tag.html.haml b/app/views/projects/tags/_tag.html.haml
index 887f3ab075b..526dd3f580b 100644
--- a/app/views/projects/tags/_tag.html.haml
+++ b/app/views/projects/tags/_tag.html.haml
@@ -9,7 +9,7 @@
&nbsp;
= strip_gpg_signature(tag.message)
.controls
- = link_to edit_namespace_project_tag_path(@project.namespace, @project, tag.name), class: 'btn-grouped btn' do
+ = link_to edit_namespace_project_tag_release_path(@project.namespace, @project, tag.name), class: 'btn-grouped btn' do
= icon("pencil")
- if can? current_user, :download_code, @project
= render 'projects/repositories/download_archive', ref: tag.name, btn_class: 'btn-grouped btn-group-xs'
diff --git a/app/views/projects/tags/edit.html.haml b/app/views/projects/tags/edit.html.haml
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/app/views/projects/tags/edit.html.haml
+++ /dev/null
diff --git a/config/routes.rb b/config/routes.rb
index 8dc167cbbde..5836da47eb3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -569,7 +569,10 @@ Gitlab::Application.routes.draw do
end
resources :branches, only: [:index, :new, :create, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
- resources :tags, constraints: { id: Gitlab::Regex.git_reference_regex }
+ resources :tags, only: [:index, :new, :create, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex } do
+ resource :release
+ end
+
resources :protected_branches, only: [:index, :create, :update, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
resource :variables, only: [:show, :update]
resources :triggers, only: [:index, :create, :destroy]