pages_core 3.11.2 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/assets/builds/pages_core/admin-dist.js +3 -3
- data/app/assets/stylesheets/pages/admin/components/header.scss +4 -4
- data/app/assets/stylesheets/pages/admin/components/modal.scss +0 -20
- data/app/assets/stylesheets/pages/admin.scss +0 -20
- data/app/assets/stylesheets/pages/errors.css +1 -1
- data/app/controllers/admin/calendars_controller.rb +36 -0
- data/app/controllers/admin/news_controller.rb +58 -0
- data/app/controllers/admin/pages_controller.rb +0 -1
- data/app/controllers/errors_controller.rb +1 -1
- data/app/controllers/sessions_controller.rb +1 -1
- data/app/helpers/admin/calendars_helper.rb +29 -0
- data/app/helpers/pages_core/admin/content_tabs_helper.rb +1 -0
- data/app/helpers/pages_core/admin/labelled_field_helper.rb +1 -1
- data/app/helpers/pages_core/application_helper.rb +1 -1
- data/app/javascript/components/Attachments.jsx +2 -1
- data/app/javascript/components/PageTreeNode.jsx +0 -8
- data/app/javascript/components/Toast.jsx +1 -1
- data/app/models/category.rb +1 -1
- data/app/models/concerns/pages_core/page_model/dated_page.rb +38 -0
- data/app/models/page.rb +1 -1
- data/app/policies/page_policy.rb +2 -6
- data/app/views/admin/calendars/show.html.erb +83 -0
- data/app/views/admin/invites/show.html.erb +6 -4
- data/app/views/admin/{pages/news.html.erb → news/index.html.erb} +12 -7
- data/app/views/admin/pages/_list_item.html.erb +2 -1
- data/app/views/admin/password_resets/show.html.erb +4 -2
- data/app/views/admin/users/login.html.erb +3 -3
- data/app/views/admin/users/new.html.erb +6 -4
- data/app/views/admin/users/new_password.html.erb +1 -1
- data/app/views/layouts/admin/_header.html.erb +4 -16
- data/app/views/layouts/admin/_page_header.html.erb +5 -3
- data/app/views/layouts/errors.html.erb +2 -2
- data/config/routes.rb +7 -2
- data/lib/pages_core/pages_plugin.rb +6 -1
- data/lib/rails/generators/pages_core/install/install_generator.rb +2 -2
- data/lib/rails/generators/pages_core/install/templates/delayed_job +2 -3
- data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +2 -2
- metadata +9 -6
- data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +0 -67
@@ -12,7 +12,7 @@ header {
|
|
12
12
|
color: $c-text-invert;
|
13
13
|
}
|
14
14
|
|
15
|
-
|
15
|
+
.logo {
|
16
16
|
position: absolute;
|
17
17
|
z-index: 2;
|
18
18
|
top: 11px;
|
@@ -21,7 +21,7 @@ header {
|
|
21
21
|
height: 27px;
|
22
22
|
}
|
23
23
|
|
24
|
-
|
24
|
+
.site-name {
|
25
25
|
color: $c-text-invert;
|
26
26
|
position: absolute;
|
27
27
|
top: 15px;
|
@@ -100,7 +100,7 @@ header {
|
|
100
100
|
}
|
101
101
|
}
|
102
102
|
|
103
|
-
|
103
|
+
.content-tabs {
|
104
104
|
list-style-type: none;
|
105
105
|
margin: 24px 0px -11px -18px;
|
106
106
|
padding: 0;
|
@@ -126,7 +126,7 @@ header {
|
|
126
126
|
}
|
127
127
|
}
|
128
128
|
|
129
|
-
|
129
|
+
.page-description {
|
130
130
|
@include vertical-gradient(#dceef6, #e7f3f9);
|
131
131
|
margin: 0;
|
132
132
|
padding: 16px 32px;
|
@@ -84,23 +84,3 @@ body.modal {
|
|
84
84
|
opacity: 1.0;
|
85
85
|
}
|
86
86
|
}
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
/* Old rules */
|
91
|
-
|
92
|
-
#modal-container {
|
93
|
-
z-index:20;
|
94
|
-
border: 1px solid #555;
|
95
|
-
position: absolute;
|
96
|
-
background: #f8f8f8;
|
97
|
-
padding:20px;
|
98
|
-
padding-top: 10px;
|
99
|
-
}
|
100
|
-
|
101
|
-
#modal-container h2 {
|
102
|
-
padding: 0 0 8px 0;
|
103
|
-
color: #27495e;
|
104
|
-
font-size: 1.45em;
|
105
|
-
border-bottom: 1px solid #e0e0e0;
|
106
|
-
}
|
@@ -49,26 +49,6 @@ td {
|
|
49
49
|
padding: 2px 16px 2px 0;
|
50
50
|
}
|
51
51
|
|
52
|
-
#flash-error,
|
53
|
-
#flash-notice {
|
54
|
-
padding: 16px 32px;
|
55
|
-
font-size: 12px;
|
56
|
-
}
|
57
|
-
|
58
|
-
#flash-error {
|
59
|
-
@include vertical-gradient(#970002, $c-red);
|
60
|
-
border-bottom: 1px solid #9c0002;
|
61
|
-
color: #fff299;
|
62
|
-
font-weight: bold;
|
63
|
-
}
|
64
|
-
|
65
|
-
#flash-notice {
|
66
|
-
background: #f5f3bc;
|
67
|
-
border-bottom: 1px solid #dad88a;
|
68
|
-
color: #3d3b00;
|
69
|
-
font-weight: normal;
|
70
|
-
}
|
71
|
-
|
72
52
|
.errorExplanation {
|
73
53
|
background-color: #ffd;
|
74
54
|
border-bottom: 1px solid #dda;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Admin
|
4
|
+
class CalendarsController < Admin::AdminController
|
5
|
+
before_action :find_year_and_month
|
6
|
+
|
7
|
+
require_authorization object: Page
|
8
|
+
|
9
|
+
def show
|
10
|
+
unless @year
|
11
|
+
redirect_to(admin_calendar_path(@locale, Time.zone.now.year))
|
12
|
+
return
|
13
|
+
end
|
14
|
+
@pages = if @month
|
15
|
+
calendar_items.in_year_and_month(@year, @month)
|
16
|
+
else
|
17
|
+
calendar_items.in_year(@year)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def calendar_items
|
24
|
+
Page.with_dates
|
25
|
+
.order("starts_at DESC")
|
26
|
+
.in_locale(@locale)
|
27
|
+
.visible
|
28
|
+
.paginate(per_page: 50, page: params[:page])
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_year_and_month
|
32
|
+
@year = params[:year]&.to_i
|
33
|
+
@month = params[:month]&.to_i
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Admin
|
4
|
+
class NewsController < Admin::AdminController
|
5
|
+
before_action :require_news_pages
|
6
|
+
before_action :find_news_pages
|
7
|
+
before_action :find_year_and_month
|
8
|
+
|
9
|
+
require_authorization object: Page
|
10
|
+
|
11
|
+
def index
|
12
|
+
@archive_finder = archive_finder(@news_pages, @locale)
|
13
|
+
unless @year
|
14
|
+
redirect_to(admin_news_index_path(@locale,
|
15
|
+
(@archive_finder.latest_year ||
|
16
|
+
Time.zone.now.year)))
|
17
|
+
return
|
18
|
+
end
|
19
|
+
@pages = @archive_finder.by_year_and_maybe_month(@year, @month)
|
20
|
+
.paginate(per_page: 50, page: params[:page])
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def archive_finder(parents, locale)
|
26
|
+
Page.where(parent_page_id: parents)
|
27
|
+
.visible
|
28
|
+
.order("published_at DESC")
|
29
|
+
.in_locale(locale)
|
30
|
+
.archive_finder
|
31
|
+
end
|
32
|
+
|
33
|
+
def find_news_pages
|
34
|
+
@news_pages = Page.news_pages
|
35
|
+
.in_locale(@locale)
|
36
|
+
.reorder("parent_page_id ASC, position ASC")
|
37
|
+
return if @news_pages.any?
|
38
|
+
|
39
|
+
redirect_to(admin_pages_url(@locale))
|
40
|
+
end
|
41
|
+
|
42
|
+
def find_year_and_month
|
43
|
+
@year = params[:year]&.to_i
|
44
|
+
@month = params[:month]&.to_i
|
45
|
+
end
|
46
|
+
|
47
|
+
# Redirect away if no news pages has been configured
|
48
|
+
def require_news_pages
|
49
|
+
return if Page.news_pages.any?
|
50
|
+
|
51
|
+
redirect_to(admin_pages_url(@locale))
|
52
|
+
end
|
53
|
+
|
54
|
+
def latest_year
|
55
|
+
archive_finder.latest_year_and_month.first || Time.zone.now.year
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Admin
|
4
|
+
module CalendarsHelper
|
5
|
+
def calendar_pages(locale)
|
6
|
+
Page.where(
|
7
|
+
id: Page.with_dates.visible.pluck(:parent_page_id).uniq.compact
|
8
|
+
).in_locale(locale)
|
9
|
+
end
|
10
|
+
|
11
|
+
def calendar_years_with_count
|
12
|
+
calendar_counts.each_with_object({}) do |entry, obj|
|
13
|
+
obj[entry[:year]] ||= 0
|
14
|
+
obj[entry[:year]] += entry[:count]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def calendar_months_count(year)
|
19
|
+
calendar_counts.filter { |e| e[:year] == year }
|
20
|
+
.map { |e| [e[:month], e[:count]] }
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def calendar_counts
|
26
|
+
@calendar_counts ||= Page.count_by_month
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -16,7 +16,8 @@ function filenameToName(str) {
|
|
16
16
|
|
17
17
|
export default function Attachments(props) {
|
18
18
|
const collection = useDragCollection(props.records);
|
19
|
-
const locales = props.locales
|
19
|
+
const locales = props.locales && props.locales.length > 0 ?
|
20
|
+
Object.keys(props.locales) : [props.locale];
|
20
21
|
const [deleted, setDeleted] = useState([]);
|
21
22
|
|
22
23
|
const uploadAttachment = (file) => {
|
@@ -328,7 +328,6 @@ export default class PageTreeNode extends React.Component {
|
|
328
328
|
let index = this.props.index;
|
329
329
|
let node = index.node;
|
330
330
|
|
331
|
-
var dateLabel = "";
|
332
331
|
var pageName = <span className="name">{this.pageName()}</span>;
|
333
332
|
var className = "page";
|
334
333
|
|
@@ -344,12 +343,6 @@ export default class PageTreeNode extends React.Component {
|
|
344
343
|
</a>;
|
345
344
|
}
|
346
345
|
|
347
|
-
if (node.id && node.starts_at) {
|
348
|
-
dateLabel = <span className="date">
|
349
|
-
{node.starts_at}
|
350
|
-
</span>;
|
351
|
-
}
|
352
|
-
|
353
346
|
if (node.news_page) {
|
354
347
|
iconClass = "fa fa-newspaper-o icon";
|
355
348
|
} else if (node.pinned) {
|
@@ -360,7 +353,6 @@ export default class PageTreeNode extends React.Component {
|
|
360
353
|
<div className={className}>
|
361
354
|
<i className={iconClass}></i>
|
362
355
|
{pageName}
|
363
|
-
{dateLabel}
|
364
356
|
{this.statusLabel()}
|
365
357
|
{this.collapsedLabel()}
|
366
358
|
{this.actions()}
|
data/app/models/category.rb
CHANGED
@@ -11,9 +11,47 @@ module PagesCore
|
|
11
11
|
|
12
12
|
scope :upcoming, -> { where("ends_at > ?", Time.zone.now) }
|
13
13
|
scope :past, -> { where("ends_at <= ?", Time.zone.now) }
|
14
|
+
scope :with_dates, -> { where.not(starts_at: nil) }
|
14
15
|
end
|
15
16
|
|
16
17
|
module ClassMethods
|
18
|
+
def count_by_month
|
19
|
+
connection.select_all(count_by_month_query).map(&:symbolize_keys)
|
20
|
+
end
|
21
|
+
|
22
|
+
def in_year(year)
|
23
|
+
time = Date.new(year.to_i).to_time
|
24
|
+
where("ends_at >= ? AND starts_at <= ?",
|
25
|
+
time.beginning_of_year,
|
26
|
+
time.end_of_year)
|
27
|
+
end
|
28
|
+
|
29
|
+
def in_year_and_month(year, month)
|
30
|
+
time = Date.new(year.to_i, month.to_i).to_time
|
31
|
+
where("ends_at >= ? AND starts_at <= ?",
|
32
|
+
time.beginning_of_month,
|
33
|
+
time.end_of_month)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def count_by_month_query
|
39
|
+
<<-SQL.squish
|
40
|
+
SELECT extract('year' FROM s.d)::integer AS year,
|
41
|
+
extract('month' FROM s.d)::integer AS month,
|
42
|
+
count(p.id) AS count
|
43
|
+
FROM (SELECT generate_series(
|
44
|
+
date_trunc('month', min(starts_at)::date),
|
45
|
+
max(ends_at)::date,
|
46
|
+
'1 month'::interval)::date AS d FROM pages) s
|
47
|
+
RIGHT JOIN pages p
|
48
|
+
ON p.ends_at::date >= s.d
|
49
|
+
AND p.starts_at::date <= (s.d + interval '1 month - 1 day')::date
|
50
|
+
WHERE p.starts_at IS NOT NULL
|
51
|
+
GROUP BY s.d
|
52
|
+
ORDER BY s.d DESC
|
53
|
+
SQL
|
54
|
+
end
|
17
55
|
end
|
18
56
|
|
19
57
|
# Finds the page's next sibling by date. Returns nil if there
|
data/app/models/page.rb
CHANGED
data/app/policies/page_policy.rb
CHANGED
@@ -5,8 +5,8 @@ class PagePolicy < Policy
|
|
5
5
|
true
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def calendar?
|
9
|
+
index?
|
10
10
|
end
|
11
11
|
|
12
12
|
def deleted?
|
@@ -17,10 +17,6 @@ class PagePolicy < Policy
|
|
17
17
|
user.role?(:pages)
|
18
18
|
end
|
19
19
|
|
20
|
-
def new_news?
|
21
|
-
create?
|
22
|
-
end
|
23
|
-
|
24
20
|
def show?
|
25
21
|
true
|
26
22
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<%
|
2
|
+
month_names = %w{January February March April May June July August September October November December}
|
3
|
+
page_title "Calendar"
|
4
|
+
page_description "Calendar"
|
5
|
+
|
6
|
+
if PagesCore.config.localizations?
|
7
|
+
self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n, calendar_admin_pages_path(l) }.join(link_separator)
|
8
|
+
end
|
9
|
+
%>
|
10
|
+
|
11
|
+
<% content_for :sidebar do %>
|
12
|
+
<h2>New entry</h2>
|
13
|
+
<p>
|
14
|
+
<%= form_tag new_admin_page_path, method: :get do %>
|
15
|
+
In <%= select_tag('parent',
|
16
|
+
options_for_select(calendar_pages(@locale).map{|p| [page_name(p, include_parents: true).gsub("»", "»"), p.id] })) %>
|
17
|
+
<%= submit_tag "Go", name: nil %>
|
18
|
+
<% end %>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
<div class="archive-index">
|
22
|
+
<% calendar_years_with_count.each do |year, year_count| %>
|
23
|
+
<h2>
|
24
|
+
<%= link_to_unless_current(year,
|
25
|
+
admin_calendar_path(
|
26
|
+
@locale,
|
27
|
+
year: year)
|
28
|
+
) %>
|
29
|
+
<span class="count">
|
30
|
+
(<%= year_count %>)
|
31
|
+
</span>
|
32
|
+
</h2>
|
33
|
+
<ul>
|
34
|
+
<% calendar_months_count(year).each do |month, month_count| %>
|
35
|
+
<li>
|
36
|
+
<% if year == @year && month == @month %>
|
37
|
+
<strong>
|
38
|
+
<%= month_names[month-1] %>
|
39
|
+
</strong>
|
40
|
+
<% else %>
|
41
|
+
<%= link_to_unless_current(
|
42
|
+
month_names[month-1],
|
43
|
+
admin_calendar_path(@locale,
|
44
|
+
month: month,
|
45
|
+
year: year)) %>
|
46
|
+
<% end %>
|
47
|
+
<span class="count">
|
48
|
+
(<%= month_count %>)
|
49
|
+
</span>
|
50
|
+
</li>
|
51
|
+
<% end %>
|
52
|
+
</ul>
|
53
|
+
<% end %>
|
54
|
+
</div>
|
55
|
+
<% end %>
|
56
|
+
|
57
|
+
<% if @pages.any? %>
|
58
|
+
<table class="list calendar-item-list">
|
59
|
+
<tr>
|
60
|
+
<th>Name</th>
|
61
|
+
<th>Date</th>
|
62
|
+
<th>Published</th>
|
63
|
+
<th>Section</th>
|
64
|
+
</tr>
|
65
|
+
<% @pages.each do |page| %>
|
66
|
+
<%= render(partial: "admin/pages/list_item",
|
67
|
+
locals: {
|
68
|
+
page: page,
|
69
|
+
date: true,
|
70
|
+
section: true,
|
71
|
+
sections: @parents
|
72
|
+
}) %>
|
73
|
+
<% end %>
|
74
|
+
</table>
|
75
|
+
|
76
|
+
<%= will_paginate @pages %>
|
77
|
+
<% else %>
|
78
|
+
<div class="content">
|
79
|
+
<p>
|
80
|
+
No calendar items have been posted yet.
|
81
|
+
</p>
|
82
|
+
</div>
|
83
|
+
<% end %>
|
@@ -12,10 +12,12 @@
|
|
12
12
|
<%= form_for(@user,
|
13
13
|
url: accept_admin_invite_path(@invite, token: @invite.token),
|
14
14
|
builder: PagesCore::FormBuilder) do |f| %>
|
15
|
-
<%= f.labelled_text_field :name %>
|
16
|
-
<%= f.labelled_text_field :email %>
|
17
|
-
<%= f.labelled_password_field
|
18
|
-
|
15
|
+
<%= f.labelled_text_field :name, autocomplete: "name" %>
|
16
|
+
<%= f.labelled_text_field :email, autocomplete: "email" %>
|
17
|
+
<%= f.labelled_password_field(:password,
|
18
|
+
autocomplete: "new-password") %>
|
19
|
+
<%= f.labelled_password_field(:confirm_password,
|
20
|
+
autocomplete: "new-password") %>
|
19
21
|
<p>
|
20
22
|
<button type="submit">
|
21
23
|
Sign up
|
@@ -4,15 +4,15 @@
|
|
4
4
|
page_description "<em>News: #{month_names[@month - 1] if @month} #{@year}</em>"
|
5
5
|
|
6
6
|
if PagesCore.config.localizations?
|
7
|
-
self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n,
|
7
|
+
self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n, admin_news_path(l) }.join(link_separator)
|
8
8
|
end
|
9
9
|
%>
|
10
10
|
|
11
11
|
<% content_for :sidebar do %>
|
12
|
-
<% if policy(Page).
|
12
|
+
<% if policy(Page).new? %>
|
13
13
|
<h2>New article</h2>
|
14
14
|
<p>
|
15
|
-
<%= form_tag
|
15
|
+
<%= form_tag new_admin_page_path, method: :get do %>
|
16
16
|
In
|
17
17
|
<%= select_tag('parent',
|
18
18
|
options_for_select(@news_pages.map{|p| [news_section_name(p, @news_pages).gsub("»", "»"), p.id] })) %>
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<% @archive_finder.years_with_count.reverse.each do |year, year_count| %>
|
25
25
|
<h2>
|
26
26
|
<%= link_to_unless_current(year,
|
27
|
-
|
27
|
+
admin_news_index_path(
|
28
28
|
@locale,
|
29
29
|
year: year,
|
30
30
|
category: @category&.slug)
|
@@ -44,7 +44,7 @@
|
|
44
44
|
(<%= page_count %>)
|
45
45
|
<% else %>
|
46
46
|
<%= link_to(month_names[month-1],
|
47
|
-
|
47
|
+
admin_news_index_path(@locale,
|
48
48
|
month: month,
|
49
49
|
year: year,
|
50
50
|
category: @category&.slug)) %>
|
@@ -68,8 +68,13 @@
|
|
68
68
|
<th>Section</th>
|
69
69
|
</tr>
|
70
70
|
<% @pages.each do |page| %>
|
71
|
-
<%= render(partial: "list_item",
|
72
|
-
locals: {
|
71
|
+
<%= render(partial: "admin/pages/list_item",
|
72
|
+
locals: {
|
73
|
+
page: page,
|
74
|
+
author: true,
|
75
|
+
section: true,
|
76
|
+
sections: @news_pages
|
77
|
+
}) %>
|
73
78
|
<% end %>
|
74
79
|
</table>
|
75
80
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
author ||= false
|
3
3
|
date ||= false
|
4
4
|
section ||= false
|
5
|
+
sections ||= []
|
5
6
|
%>
|
6
7
|
<tr class="<%= [page.status_label.downcase,((page.autopublish?) ? 'autopublish' : nil), ((page.pinned?) ? 'pinned' : nil)].join(' ') %>">
|
7
8
|
<td class="name">
|
@@ -44,7 +45,7 @@
|
|
44
45
|
<% end %>
|
45
46
|
<% if section %>
|
46
47
|
<td>
|
47
|
-
<%= news_section_name(page.parent,
|
48
|
+
<%= news_section_name(page.parent, sections) %>
|
48
49
|
</td>
|
49
50
|
<% end %>
|
50
51
|
</tr>
|
@@ -9,8 +9,10 @@
|
|
9
9
|
url: admin_password_reset_path(@password_reset_token, token: @password_reset_token.token),
|
10
10
|
builder: PagesCore::Admin::FormBuilder,
|
11
11
|
class: 'form') do |f| %>
|
12
|
-
<%= f.labelled_password_field
|
13
|
-
|
12
|
+
<%= f.labelled_password_field(:password,
|
13
|
+
autocomplete: "new-password") %>
|
14
|
+
<%= f.labelled_password_field(:confirm_password,
|
15
|
+
autocomplete: "new-password") %>
|
14
16
|
<p>
|
15
17
|
<button type="submit">
|
16
18
|
Change Password
|
@@ -19,11 +19,11 @@
|
|
19
19
|
<%= form_tag session_path do %>
|
20
20
|
<p>
|
21
21
|
<label>Email address</label>
|
22
|
-
<%= text_field_tag
|
22
|
+
<%= text_field_tag(:email, "", autocomplete: "email") %>
|
23
23
|
</p>
|
24
24
|
<p>
|
25
25
|
<label>Password</label>
|
26
|
-
<%= password_field_tag
|
26
|
+
<%= password_field_tag(:password, "", autocomplete: "current-password") %>
|
27
27
|
</p>
|
28
28
|
<p>
|
29
29
|
<button type="submit">Sign in</button>
|
@@ -54,7 +54,7 @@
|
|
54
54
|
and we'll send you a link where you can reset your password.
|
55
55
|
</p>
|
56
56
|
<p>
|
57
|
-
<%= text_field_tag
|
57
|
+
<%= text_field_tag(:email, "", autocomplete: "email") %>
|
58
58
|
</p>
|
59
59
|
<p>
|
60
60
|
<button type="submit">
|
@@ -9,10 +9,12 @@
|
|
9
9
|
|
10
10
|
<%= form_for [:admin, @user], builder: PagesCore::FormBuilder do |f| %>
|
11
11
|
|
12
|
-
<%= f.labelled_text_field :name %>
|
13
|
-
<%= f.labelled_text_field :email %>
|
14
|
-
<%= f.labelled_password_field
|
15
|
-
|
12
|
+
<%= f.labelled_text_field(:name, autocomplete: "name") %>
|
13
|
+
<%= f.labelled_text_field(:email, autocomplete: "email") %>
|
14
|
+
<%= f.labelled_password_field(:password,
|
15
|
+
autocomplete: "new-password") %>
|
16
|
+
<%= f.labelled_password_field(:confirm_password,
|
17
|
+
autocomplete: "new-password") %>
|
16
18
|
|
17
19
|
<p>
|
18
20
|
<button type="submit">
|