Class: Concepts::VersionsController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/concepts/versions_controller.rb

Overview

Copyright 2011 innoQ Deutschland GmbH

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Instance Method Summary collapse

Instance Method Details

#branchObject

Raises:

  • (ActiveRecord::RecordNotFound)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/controllers/concepts/versions_controller.rb', line 48

def branch
  current_concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).published.last
  raise ActiveRecord::RecordNotFound.new("Couldn't find published concept with origin '#{params[:origin]}'") unless current_concept
  raise "There already is an unpublished version for concept '#{params[:origin]}'" if Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last

  authorize! :branch, current_concept

  new_version = nil
  ActiveRecord::Base.transaction do
    new_version = current_concept.branch(current_user)
    new_version.save!
  end
  flash[:success] = t("txt.controllers.versioning.branched")
  redirect_to edit_concept_path(:published => 0, :id => new_version)
end

#consistency_checkObject

Raises:

  • (ActiveRecord::RecordNotFound)


93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'app/controllers/concepts/versions_controller.rb', line 93

def consistency_check
  concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last
  raise ActiveRecord::RecordNotFound unless concept

  authorize! :check_consistency, concept

  if concept.valid_with_full_validation?
    flash[:success] = t("txt.controllers.versioning.consistency_check_success")
    redirect_to concept_path(:published => 0, :id => concept)
  else
    flash[:error] = t("txt.controllers.versioning.consistency_check_error")
    redirect_to edit_concept_path(:published => 0, :id => concept, :full_consistency_check => "1")
  end
end

#lockObject

Raises:

  • (ActiveRecord::RecordNotFound)


64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'app/controllers/concepts/versions_controller.rb', line 64

def lock
  new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last
  raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version
  raise "Concept with origin '#{params[:origin]}' has already been locked." if new_version.locked?

  authorize! :lock, new_version

  new_version.lock_by_user(current_user.id)
  new_version.save :validate => false

  flash[:success] = t("txt.controllers.versioning.locked")
  redirect_to edit_concept_path(:published => 0, :id => new_version)
end

#mergeObject

Raises:

  • (ActiveRecord::RecordNotFound)


19
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
46
# File 'app/controllers/concepts/versions_controller.rb', line 19

def merge
  current_concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).published.last
  new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last
  raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version

  authorize! :merge, new_version

  ActiveRecord::Base.transaction do
    if current_concept.blank? || current_concept.destroy
      new_version.publish
      new_version.unlock
      if new_version.valid_with_full_validation?
        new_version.save
        if RdfStore.update(rdf_url(:id => new_version, :format => :ttl), concept_url(:id => new_version, :format => :ttl))
          new_version.update_attribute(:rdf_updated_at, 1.seconds.since)
        end
        flash[:success] = t("txt.controllers.versioning.published")
        redirect_to concept_path(:id => new_version)
      else
        flash[:error] = t("txt.controllers.versioning.merged_publishing_error")
        redirect_to concept_path(:published => 0, :id => new_version)
      end
    else
      flash[:error] = t("txt.controllers.versioning.merged_delete_error")
      redirect_to concept_path(:published => 0, :id => new_version)
    end
  end
end

#to_reviewObject

Raises:

  • (ActiveRecord::RecordNotFound)


108
109
110
111
112
113
114
115
116
117
118
# File 'app/controllers/concepts/versions_controller.rb', line 108

def to_review
  concept = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last
  raise ActiveRecord::RecordNotFound unless concept

  authorize! :send_to_review, concept

  concept.to_review
  concept.save!
  flash[:success] = t("txt.controllers.versioning.to_review_success")
  redirect_to concept_path(:published => 0, :id => concept)
end

#unlockObject

Raises:

  • (ActiveRecord::RecordNotFound)


78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/concepts/versions_controller.rb', line 78

def unlock
  new_version = Iqvoc::Concept.base_class.by_origin(params[:origin]).unpublished.last
  raise ActiveRecord::RecordNotFound.new("Couldn't find unpublished concept with origin '#{params[:origin]}'") unless new_version
  raise "Concept with origin '#{params[:origin]}' wasn't locked." unless new_version.locked?

  authorize! :unlock, new_version

  new_version.unlock
  new_version.save :validate => false

  flash[:success] = t("txt.controllers.versioning.unlocked")

  redirect_to concept_path(:published => 0, :id => new_version)
end