Sha256: 97c32116ea206c11f84f7e9e8e86d615e8937ccf1f8b542c42a4a31b2476662e

Contents?: true

Size: 1.36 KB

Versions: 1

Compression:

Stored size: 1.36 KB

Contents

class Revelry::Content::VersionsController < ApplicationController
  respond_to :json, :html
  include Revelry::Content::ControllerAuthorization

  before_action :check_authorization

  def info_for_paper_trail
    { rollback_version_id: params[:id] }
  end

  def index
    # Versions does not include the version, so grab versions, convert the
    # currents to mock versions, then combine and sort
    @versions = Revelry::Content::ContentVersion.all
    @content = Revelry::Content::Content.all.map { |content| Revelry::Content::PseudoContentVersion.new model: content }
    @all_versions = (@content + @versions).sort { |a, b| b.created_at - a.created_at }
    respond_with data: @all_versions
  end

  def revert_all_to
    newer_versions = Revelry::Content::ContentVersion.where('id >= ?', params[:id]).order('id desc')
    newer_versions.each do |version|
      if ['create', 'import create'].include? version.event
        unless version.id == params[:id].to_i
          item = version.item
          item.paper_trail_event = 'rollback create'
          version.item.destroy!
        end
      else
        reify = version.reify
        reify.paper_trail_event = "rollback #{ version.event }"
        reify.save!
      end
    end

    redirect_to :back
  end

  private

  def check_authorization
    throw "Unauthorized" unless Revelry::Content.config.authorize(self)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
revelry_content-1.0.0 app/controllers/revelry/content/versions_controller.rb