Class: ContentBlock

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/content_block.rb

Constant Summary collapse

NAME_REGISTRY =

The keys in this registry are “public” names for collaborator objects, and the values are reserved names of ContentBlock instances, which Hyrax uses as identifiers. Values also correspond to names of messages that can be sent to the ContentBlock class to return defined ContentBlock instances.

{
  marketing: :marketing_text,
  researcher: :featured_researcher,
  announcement: :announcement_text,
  about: :about_page,
  help: :help_page,
  terms: :terms_page,
  agreement: :agreement_page
}.freeze

Class Method Summary collapse

Class Method Details

.about_pageObject


61
62
63
# File 'app/models/content_block.rb', line 61

def about_page
  find_or_create_by(name: 'about_page')
end

.about_page=(value) ⇒ Object


65
66
67
# File 'app/models/content_block.rb', line 65

def about_page=(value)
  about_page.update(value: value)
end

.agreement_pageObject


69
70
71
72
# File 'app/models/content_block.rb', line 69

def agreement_page
  find_by(name: 'agreement_page') ||
    create(name: 'agreement_page', value: default_agreement_text)
end

.agreement_page=(value) ⇒ Object


74
75
76
# File 'app/models/content_block.rb', line 74

def agreement_page=(value)
  agreement_page.update(value: value)
end

.announcement_textObject


45
46
47
# File 'app/models/content_block.rb', line 45

def announcement_text
  find_or_create_by(name: 'announcement_text')
end

.announcement_text=(value) ⇒ Object


49
50
51
# File 'app/models/content_block.rb', line 49

def announcement_text=(value)
  announcement_text.update(value: value)
end

.default_agreement_textObject


95
96
97
98
99
100
101
# File 'app/models/content_block.rb', line 95

def default_agreement_text
  ERB.new(
    IO.read(
      Hyrax::Engine.root.join('app', 'views', 'hyrax', 'content_blocks', 'templates', 'agreement.html.erb')
    )
  ).result
end

.default_terms_textObject


103
104
105
106
107
108
109
# File 'app/models/content_block.rb', line 103

def default_terms_text
  ERB.new(
    IO.read(
      Hyrax::Engine.root.join('app', 'views', 'hyrax', 'content_blocks', 'templates', 'terms.html.erb')
    )
  ).result
end

53
54
55
# File 'app/models/content_block.rb', line 53

def featured_researcher
  find_or_create_by(name: 'featured_researcher')
end

57
58
59
# File 'app/models/content_block.rb', line 57

def featured_researcher=(value)
  featured_researcher.update(value: value)
end

.for(key) ⇒ Object

NOTE: method defined outside the metaclass wrapper below because `for` is a reserved word in Ruby.

Raises:

  • (ArgumentError)

20
21
22
23
24
# File 'app/models/content_block.rb', line 20

def self.for(key)
  key = key.respond_to?(:to_sym) ? key.to_sym : key
  raise ArgumentError, "#{key} is not a ContentBlock name" unless registered?(key)
  ContentBlock.public_send(NAME_REGISTRY[key])
end

.help_pageObject


78
79
80
# File 'app/models/content_block.rb', line 78

def help_page
  find_or_create_by(name: 'help_page')
end

.help_page=(value) ⇒ Object


82
83
84
# File 'app/models/content_block.rb', line 82

def help_page=(value)
  help_page.update(value: value)
end

.marketing_textObject


37
38
39
# File 'app/models/content_block.rb', line 37

def marketing_text
  find_or_create_by(name: 'marketing_text')
end

.marketing_text=(value) ⇒ Object


41
42
43
# File 'app/models/content_block.rb', line 41

def marketing_text=(value)
  marketing_text.update(value: value)
end

.registered?(key) ⇒ Boolean

Returns:

  • (Boolean)

33
34
35
# File 'app/models/content_block.rb', line 33

def registered?(key)
  NAME_REGISTRY.include?(key)
end

.terms_pageObject


86
87
88
89
# File 'app/models/content_block.rb', line 86

def terms_page
  find_by(name: 'terms_page') ||
    create(name: 'terms_page', value: default_terms_text)
end

.terms_page=(value) ⇒ Object


91
92
93
# File 'app/models/content_block.rb', line 91

def terms_page=(value)
  terms_page.update(value: value)
end

.whitelisted?(key) ⇒ Boolean

Deprecated.

Returns:

  • (Boolean)

28
29
30
31
# File 'app/models/content_block.rb', line 28

def whitelisted?(key)
  Deprecation.warn(self, "Samvera is deprecating '#{self}.whitelisted?' in Hyrax 3.0. Use #{self}.registered? instead.")
  registered?(key)
end