Class: ReleasesController

Inherits:
ApplicationController show all
Includes:
ReleaseHelper, UrlHelper
Defined in:
app/controllers/releases_controller.rb

Instance Method Summary collapse

Methods included from ReleaseHelper

#_format_time_ago, #format_change, #format_change_tag, #format_release_age, #format_release_date, #format_release_description, #format_release_subject, #format_time_ago, #ordered_by_tag, #replace_quotes

Methods included from UrlHelper

#feature_path, #github_commit_range_url, #github_commit_url, #github_project_url, #github_url?, #goldmine_case_number_url, #link_to_project_feature, #new_release_url, #releases_path

Methods inherited from ApplicationController

#after_sign_in_path_for, #api_authenticate!, #current_project, #expire_revision!, #followed_projects, #no_cache, #read_revision, #require_login, #return_or_cache_revision!, #revision, #save_current_project, #set_current_project, #unfurling?

Instance Method Details

#createObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/releases_controller.rb', line 47

def create
  @release = @releases.new(params[:release])
  @release.user = current_user
  authorize! :create, @release

  if @release.save
    ProjectNotification.release(@release).deliver! if params[:send_release_email]
    @release.tickets.resolve_all! if params[:resolve_tickets]

    redirect_to @release
  else
    @commit0 = @release.commit0
    @commit1 = @release.commit1

    if @release.can_read_commits?
      @release.load_commits!
      @release.load_tickets!
    end

    render action: "new"
  end
end

#destroyObject



112
113
114
115
116
117
118
# File 'app/controllers/releases_controller.rb', line 112

def destroy
  authorize! :destroy, @release

  @release.destroy

  redirect_to releases_url
end

#editObject



87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/controllers/releases_controller.rb', line 87

def edit
  authorize! :update, @release

  if params[:recreate]
    if @release.can_read_commits?
      @release.load_commits!
      @release.load_tickets!
      @release.build_changes_from_commits
    end
  end

  @release.release_changes = [ReleaseChange.new(@release, "", "")] if @release.release_changes.none?
  @release.valid?
end

#indexObject



10
11
12
13
14
15
16
17
18
# File 'app/controllers/releases_controller.rb', line 10

def index
  @title = "Releases • #{@project.name}"
  @title << " (#{@environment})" if @environment
  @q = params[:q]
  @q = nil if @q.blank?
  @releases = @project.releases.preload(:deploy).search(@q) if @q

  render partial: (@q ? "releases/results" : "releases/index") if request.xhr?
end

#newObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/controllers/releases_controller.rb', line 20

def new
  @title = "New Release (#{@environment}) • #{@project.name}"

  @deploy = Deploy.find_by_id(params[:deploy_id])
  @releases = @releases.before(@deploy.completed_at) if @deploy
  @commit0 = params.fetch :commit0, @releases.most_recent_commit
  @commit1 = params.fetch :commit1, @deploy.try(:commit)
  @release = @releases.new(commit0: @commit0, commit1: @commit1, deploy: @deploy)
  authorize! :create, @release

  @manual = params[:manual] == "true" || !@project.has_version_control?

  if @release.can_read_commits?
    @release.load_commits!
    @release.load_tickets!
    @release.build_changes_from_commits
  end

  @release.release_changes = [ReleaseChange.new(@release, "", "")] if @release.release_changes.none?

  if request.headers["X-PJAX"]
    render template: "releases/_new_release", layout: false
  else
    render
  end
end

#showObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'app/controllers/releases_controller.rb', line 72

def show
  authorize! :show, @release

  @title = "Release #{@release.release_date.strftime("%b %-d")}#{@project.name}"

  if request.format.oembed?
    render json: {
      version: "1.0",
      type: "link",
      author_name: "#{@project.slug} / #{@release.environment_name}",
      title: format_release_subject(@release),
      html: format_release_description(@release) }
  end
end

#updateObject



102
103
104
105
106
107
108
109
110
# File 'app/controllers/releases_controller.rb', line 102

def update
  authorize! :update, @release

  if @release.update_attributes(params[:release])
    redirect_to @release, notice: "Release was successfully updated."
  else
    render action: "edit"
  end
end