Skip to content

Commit ba126c0

Browse files
committed
feat(pages/form): Add publiction fields component
Easier to overwrite if necessary
1 parent c5e8060 commit ba126c0

4 files changed

Lines changed: 51 additions & 33 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<alchemy-page-publication-fields>
2+
<label class="checkbox">
3+
<% if @page.attribute_fixed?(:public_on) || @page.attribute_fixed?(:public_until) %>
4+
<sl-tooltip class="like-hint-tooltip" content="<%= Alchemy.t(:attribute_fixed) %>" placement="bottom-start">
5+
<%= checkbox %>
6+
<%= Alchemy::Page.human_attribute_name :public %>
7+
</sl-tooltip>
8+
<% else %>
9+
<%= checkbox %>
10+
<%= Alchemy::Page.human_attribute_name :public %>
11+
<% end %>
12+
</label>
13+
14+
<%= content_tag :div, class: [
15+
@page.public_on.present? || @page.public_until.present? ? nil : 'hidden',
16+
'page-publication-date-fields',
17+
'input-row'
18+
] do %>
19+
<div class="input-column">
20+
<%= label :page, :public_on %>
21+
<%= datetime_local_field :page, :public_on, include_seconds: false,
22+
disabled: @page.attribute_fixed?(:public_on) %>
23+
</div>
24+
<div class="input-column">
25+
<%= label :page, :public_until %>
26+
<%= datetime_local_field :page, :public_until, include_seconds: false,
27+
disabled: @page.attribute_fixed?(:public_until) %>
28+
</div>
29+
<% end %>
30+
</alchemy-page-publication-fields>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module Alchemy
2+
module Admin
3+
class PagePublicationFields < ViewComponent::Base
4+
def initialize(page:)
5+
@page = page
6+
end
7+
8+
private
9+
10+
def checkbox
11+
check_box_tag :page_public, nil,
12+
@page.public? || @page.scheduled?,
13+
name: nil,
14+
disabled: @page.attribute_fixed?(:public_on)
15+
end
16+
end
17+
end
18+
end

app/views/alchemy/admin/pages/_form.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<div class="input check_boxes">
1010
<label class="control-label"><%= Alchemy.t(:page_status) %></label>
1111
<div class="control_group">
12-
<%= render 'alchemy/admin/pages/publication_fields' %>
12+
<%= render 'alchemy/admin/pages/publication_fields', page: %>
1313
<%= page_status_checkbox(page, :restricted) %>
1414
<% if Alchemy.config.sitemap.show_flag %>
1515
<%= page_status_checkbox(page, :sitemap) %>
Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,2 @@
1-
<alchemy-page-publication-fields>
2-
<% checkbox = check_box_tag :page_public, nil, @page.public? || @page.scheduled?, name: nil, disabled: @page.attribute_fixed?(:public_on) %>
3-
4-
<label class="checkbox">
5-
<% if @page.attribute_fixed?(:public_on) || @page.attribute_fixed?(:public_until) %>
6-
<sl-tooltip class="like-hint-tooltip" content="<%= Alchemy.t(:attribute_fixed) %>" placement="bottom-start">
7-
<%= checkbox %>
8-
<%= Alchemy::Page.human_attribute_name :public %>
9-
</sl-tooltip>
10-
<% else %>
11-
<%= checkbox %>
12-
<%= Alchemy::Page.human_attribute_name :public %>
13-
<% end %>
14-
</label>
15-
16-
<%= content_tag :div, class: [
17-
@page.public_on.present? || @page.public_until.present? ? nil : 'hidden',
18-
'page-publication-date-fields',
19-
'input-row'
20-
] do %>
21-
<div class="input-column">
22-
<%= label :page, :public_on %>
23-
<%= datetime_local_field :page, :public_on, include_seconds: false,
24-
disabled: @page.attribute_fixed?(:public_on) %>
25-
</div>
26-
<div class="input-column">
27-
<%= label :page, :public_until %>
28-
<%= datetime_local_field :page, :public_until, include_seconds: false,
29-
disabled: @page.attribute_fixed?(:public_until) %>
30-
</div>
31-
<% end %>
32-
</alchemy-page-publication-fields>
1+
<%# Overwrite this partial if you want to add more fields to the page schedule form %>
2+
<%= render Alchemy::Admin::PagePublicationFields.new(page:) %>

0 commit comments

Comments
 (0)