Class: Collavre::Comments::VersionsController

Inherits:
ApplicationController show all
Includes:
CommentScoping
Defined in:
app/controllers/collavre/comments/versions_controller.rb

Instance Method Summary collapse

Instance Method Details

#destroyObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'app/controllers/collavre/comments/versions_controller.rb', line 39

def destroy
  unless @comment.user == Current.user || @creative.has_permission?(Current.user, :admin)
    render json: { error: I18n.t("collavre.comments.not_owner") }, status: :forbidden and return
  end

  version = @comment.comment_versions.find(params[:id])
  was_selected = @comment.selected_version_id == version.id
  version.destroy!

  if was_selected
    # Roll back to the latest remaining version
    latest = @comment.comment_versions.order(:version_number).last
    if latest
      @comment.update!(selected_version_id: latest.id, content: latest.content)
    else
      @comment.update!(selected_version_id: nil)
    end
  end

  remaining = @comment.comment_versions.count
  render json: {
    selected_version_id: @comment.selected_version_id,
    content: @comment.content,
    total: remaining
  }
end

#indexObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/collavre/comments/versions_controller.rb', line 11

def index
  versions = @comment.comment_versions.order(:version_number).map do |v|
    {
      id: v.id,
      version_number: v.version_number,
      content: v.content,
      created_at: v.created_at.iso8601
    }
  end

  render json: {
    versions: versions,
    selected_version_id: @comment.selected_version_id,
    total: versions.size
  }
end

#selectObject



28
29
30
31
32
33
34
35
36
37
# File 'app/controllers/collavre/comments/versions_controller.rb', line 28

def select
  unless @comment.user == Current.user || @creative.has_permission?(Current.user, :admin)
    render json: { error: I18n.t("collavre.comments.not_owner") }, status: :forbidden and return
  end

  version = @comment.comment_versions.find(params[:id])
  @comment.update!(selected_version_id: version.id, content: version.content)

  render json: { selected_version_id: version.id, content: version.content }
end