Class: Alchemy::Admin::PublishPageButton

Inherits:
ViewComponent::Base
  • Object
show all
Defined in:
app/components/alchemy/admin/publish_page_button.rb

Overview

The button publishes the page and indicates unpublished changes if any.

Example

<%= render Alchemy::Admin::PublishPageButton.new(page: @page) %>

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(page:, published: false) ⇒ PublishPageButton



16
17
18
19
# File 'app/components/alchemy/admin/publish_page_button.rb', line 16

def initialize(page:, published: false)
  @page = page
  @published = published
end

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



14
15
16
# File 'app/components/alchemy/admin/publish_page_button.rb', line 14

def page
  @page
end

Instance Method Details

#button_labelObject



41
42
43
44
45
46
47
# File 'app/components/alchemy/admin/publish_page_button.rb', line 41

def button_label
  if page.public_version.nil?
    t(".publish_page")
  else
    t(".publish_changes")
  end
end

#disabled?Boolean



21
22
23
# File 'app/components/alchemy/admin/publish_page_button.rb', line 21

def disabled?
  @published || cannot?(:publish, page) || !has_unpublished_changes?
end

#has_unpublished_changes?Boolean



25
26
27
# File 'app/components/alchemy/admin/publish_page_button.rb', line 25

def has_unpublished_changes?
  !@published && page.has_unpublished_changes?
end

#publish_pathObject



49
50
51
# File 'app/components/alchemy/admin/publish_page_button.rb', line 49

def publish_path
  Alchemy::Engine.routes.url_helpers.publish_admin_page_path(page)
end

#tooltip_contentObject



29
30
31
32
33
34
35
36
37
38
39
# File 'app/components/alchemy/admin/publish_page_button.rb', line 29

def tooltip_content
  if !page.language.public?
    Alchemy.t(:publish_page_language_not_public)
  elsif cannot?(:publish, page)
    Alchemy.t(:publish_page_not_allowed)
  elsif @published || !has_unpublished_changes?
    Alchemy.t(:no_unpublished_changes)
  else
    Alchemy.t(:explain_publishing)
  end
end