Method: Decidim::ContentBlockRegistry#register

Defined in:
lib/decidim/content_block_registry.rb

#register(scope, name) {|content_block| ... } ⇒ Object

Public: Registers a content block for the home page.

scope - a symbol or string representing the scope of the content block.

Will be persisted as a string.

name - a symbol representing the name of the content block &block - The content block definition.

Returns nothing. Raises an error if there’s already a content block registered with that name.

Yields:

  • (content_block)


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/decidim/content_block_registry.rb', line 52

def register(scope, name)
  scope = scope.to_s
  block_exists = content_blocks[scope].any? { |content_block| content_block.name == name }

  if block_exists
    raise(
      ContentBlockAlreadyRegistered,
      "There's a content block already registered with the name `:#{name}` for the scope `:#{scope}, must be unique"
    )
  end

  content_block = ContentBlockManifest.new(name: name)

  yield(content_block)

  content_block.validate!
  content_blocks[scope].push(content_block)
end