Merge branch 'ee-870-backport' into 'master'
Backport some changes done from Time Tracking feature in EE. See merge request !7604
This commit is contained in:
commit
671c6d7d57
|
@ -12,7 +12,7 @@ module IssuableActions
|
|||
destroy_method = "destroy_#{issuable.class.name.underscore}".to_sym
|
||||
TodoService.new.public_send(destroy_method, issuable, current_user)
|
||||
|
||||
name = issuable.class.name.titleize.downcase
|
||||
name = issuable.human_class_name
|
||||
flash[:notice] = "The #{name} was successfully deleted."
|
||||
redirect_to polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable.class])
|
||||
end
|
||||
|
|
|
@ -69,7 +69,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
|||
respond_to do |format|
|
||||
format.html
|
||||
format.json do
|
||||
render json: @issue.to_json(include: [:milestone, :labels])
|
||||
render json: IssueSerializer.new.represent(@issue)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -60,7 +60,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
format.html { define_discussion_vars }
|
||||
|
||||
format.json do
|
||||
render json: @merge_request
|
||||
render json: MergeRequestSerializer.new.represent(@merge_request)
|
||||
end
|
||||
|
||||
format.patch do
|
||||
|
|
|
@ -146,24 +146,26 @@ class Projects::NotesController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def note_json(note)
|
||||
attrs = {
|
||||
award: false,
|
||||
id: note.id
|
||||
}
|
||||
|
||||
if note.is_a?(AwardEmoji)
|
||||
{
|
||||
attrs.merge!(
|
||||
valid: note.valid?,
|
||||
award: true,
|
||||
id: note.id,
|
||||
name: note.name
|
||||
}
|
||||
)
|
||||
elsif note.persisted?
|
||||
Banzai::NoteRenderer.render([note], @project, current_user)
|
||||
|
||||
attrs = {
|
||||
attrs.merge!(
|
||||
valid: true,
|
||||
id: note.id,
|
||||
discussion_id: note.discussion_id,
|
||||
html: note_html(note),
|
||||
award: false,
|
||||
note: note.note
|
||||
}
|
||||
)
|
||||
|
||||
if note.diff_note?
|
||||
discussion = note.to_discussion
|
||||
|
@ -188,15 +190,14 @@ class Projects::NotesController < Projects::ApplicationController
|
|||
attrs[:original_discussion_id] = note.original_discussion_id
|
||||
end
|
||||
end
|
||||
|
||||
attrs
|
||||
else
|
||||
{
|
||||
attrs.merge!(
|
||||
valid: false,
|
||||
award: false,
|
||||
errors: note.errors
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
attrs
|
||||
end
|
||||
|
||||
def authorize_admin_note!
|
||||
|
|
|
@ -251,6 +251,17 @@ module Issuable
|
|||
self.class.to_ability_name
|
||||
end
|
||||
|
||||
# Convert this Issuable class name to a format usable by notifications.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# issuable.class # => MergeRequest
|
||||
# issuable.human_class_name # => "merge request"
|
||||
|
||||
def human_class_name
|
||||
@human_class_name ||= self.class.name.titleize.downcase
|
||||
end
|
||||
|
||||
# Returns a Hash of attributes to be used for Twitter card metadata
|
||||
def card_attributes
|
||||
{
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
class IssuableEntity < Grape::Entity
|
||||
expose :id
|
||||
expose :iid
|
||||
expose :assignee_id
|
||||
expose :author_id
|
||||
expose :description
|
||||
expose :lock_version
|
||||
expose :milestone_id
|
||||
expose :position
|
||||
expose :state
|
||||
expose :title
|
||||
expose :updated_by_id
|
||||
expose :created_at
|
||||
expose :updated_at
|
||||
expose :deleted_at
|
||||
end
|
|
@ -0,0 +1,9 @@
|
|||
class IssueEntity < IssuableEntity
|
||||
expose :branch_name
|
||||
expose :confidential
|
||||
expose :due_date
|
||||
expose :moved_to_id
|
||||
expose :project_id
|
||||
expose :milestone, using: API::Entities::Milestone
|
||||
expose :labels, using: LabelEntity
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class IssueSerializer < BaseSerializer
|
||||
entity IssueEntity
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
class LabelEntity < Grape::Entity
|
||||
expose :id
|
||||
expose :title
|
||||
expose :color
|
||||
expose :description
|
||||
expose :group_id
|
||||
expose :project_id
|
||||
expose :template
|
||||
expose :created_at
|
||||
expose :updated_at
|
||||
end
|
|
@ -0,0 +1,14 @@
|
|||
class MergeRequestEntity < IssuableEntity
|
||||
expose :in_progress_merge_commit_sha
|
||||
expose :locked_at
|
||||
expose :merge_commit_sha
|
||||
expose :merge_error
|
||||
expose :merge_params
|
||||
expose :merge_status
|
||||
expose :merge_user_id
|
||||
expose :merge_when_build_succeeds
|
||||
expose :source_branch
|
||||
expose :source_project_id
|
||||
expose :target_branch
|
||||
expose :target_project_id
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class MergeRequestSerializer < BaseSerializer
|
||||
entity MergeRequestEntity
|
||||
end
|
|
@ -35,7 +35,7 @@ module Notes
|
|||
todo_service.new_note(note, current_user)
|
||||
end
|
||||
|
||||
if command_params && command_params.any?
|
||||
if command_params.present?
|
||||
slash_commands_service.execute(command_params, note)
|
||||
|
||||
# We must add the error after we call #save because errors are reset
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
- else
|
||||
.pull-right
|
||||
- if can?(current_user, :"destroy_#{issuable.to_ability_name}", @project)
|
||||
= link_to 'Delete', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), data: { confirm: "#{issuable.class.name.titleize} will be removed! Are you sure?" },
|
||||
= link_to 'Delete', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), data: { confirm: "#{issuable.human_class_name} will be removed! Are you sure?" },
|
||||
method: :delete, class: 'btn btn-danger btn-grouped'
|
||||
= link_to 'Cancel', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), class: 'btn btn-grouped btn-cancel'
|
||||
|
||||
|
|
Loading…
Reference in New Issue