Class: Decidim::CollaborativeTexts::Document

Inherits:
ApplicationRecord show all
Includes:
Decidim::Coauthorable, HasComponent, Loggable, Publicable, Resourceable, Searchable, SoftDeletable, Traceable
Defined in:
decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb

Overview

The data store for a document in the Decidim::CollaborativeTexts component. It stores a title, description and any other useful information to render a custom document.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Searchable

searchable_resources, searchable_resources_by_type, searchable_resources_of_type_comment, searchable_resources_of_type_component, searchable_resources_of_type_participant, searchable_resources_of_type_participatory_space

Methods included from Publicable

#previously_published?, #publish!, #published?, #unpublish!

Class Method Details

.log_presenter_class_for(_log) ⇒ Object



39
40
41
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 39

def self.log_presenter_class_for(_log)
  Decidim::CollaborativeTexts::AdminLog::DocumentPresenter
end

Instance Method Details

#consolidated_bodyObject



52
53
54
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 52

def consolidated_body
  consolidated_version&.body
end

#consolidated_versionObject



48
49
50
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 48

def consolidated_version
  document_versions.consolidated.last
end

#current_versionObject

Returns the current version of the document. Currently, the last one



44
45
46
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 44

def current_version
  document_versions.last || document_versions.build
end

#has_suggestions?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 63

def has_suggestions?
  current_version.suggestions.any?
end

#restoreObject

The paranoia gem (used in soft-delete) applies the removed status to the “document_versions” association but it does not recursively restore them by default. This model needs to have the document_versions synchronized always



59
60
61
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 59

def restore
  super(recursive: true)
end

#suggestions_enabled?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'decidim-collaborative_texts/app/models/decidim/collaborative_texts/document.rb', line 67

def suggestions_enabled?
  published? && accepting_suggestions? && !draft?
end