bible270 0.18.0 → 0.18.2
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/CHANGELOG.md +26 -1
- data/README.md +1 -1
- data/Rakefile +0 -3
- data/app/helpers/bible270/plan_helper.rb +1 -1
- data/app/views/bible270/admin/index.html.erb +2 -2
- data/app/views/bible270/admin/show.html.erb +1 -1
- data/app/views/bible270/comments/_comment.html.erb +1 -1
- data/app/views/bible270/likes/_likes.html.erb +23 -13
- data/app/views/bible270/profiles/edit.html.erb +1 -1
- data/app/views/bible270/readers/index.html.erb +1 -1
- data/app/views/bible270/readers/show.html.erb +1 -2
- data/app/views/bible270/shared/_styles.html.erb +10 -5
- data/lib/bible270/translations.rb +1 -0
- data/lib/bible270/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93a410e7fe7730dd0b5aad9f1d0c2532999545ebfae26af4694d0199876c86c9
|
|
4
|
+
data.tar.gz: e1efd12217adfeaf0bc834173dd3dc0d582c6fe0075169ce1849b56158749f97
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4665e5cdbe8e8ede757497e150e61b84255d6de40374f86cb043096336969ddd78053ff79ffecf61d19f7e5a5249c2999a79bf9e2bef8c30c1b4519883e6b63a
|
|
7
|
+
data.tar.gz: 89c03692d0c1dc038ce33c7c421b1d825da81843fdca7ace1edefabfb7b727f5b7ff061b92f3c5dda8e1c7c14c171904dee3142e3b61927eac4a0fad86b57609
|
data/CHANGELOG.md
CHANGED
|
@@ -6,7 +6,30 @@ All notable changes to bible270. Format follows [Keep a Changelog](https://keepa
|
|
|
6
6
|
|
|
7
7
|
See the changes since the last release:
|
|
8
8
|
|
|
9
|
-
**[Full Changelog](https://github.com/avonderluft/bible270/compare/v0.
|
|
9
|
+
**[Full Changelog](https://github.com/avonderluft/bible270/compare/v0.18.1...main)**
|
|
10
|
+
|
|
11
|
+
## [0.18.1] - 2026-08-12
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- increase reader avatar sizes across community, profile, admin, and reflection views
|
|
16
|
+
|
|
17
|
+
**[Full Changelog](https://github.com/avonderluft/bible270/compare/v0.18.0...v0.18.1)**
|
|
18
|
+
|
|
19
|
+
## [0.18.0] - 2026-08-10
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- `HEB/GRK` reading option with WLC links for the Old Testament, Psalms, and Proverbs, and mGNT links for the New Testament
|
|
24
|
+
- per-reader Bible Gateway or Blue Letter Bible source selection in Profile, with the same control available to admins
|
|
25
|
+
- `bible270:migrations:reconcile` task to safely align copied Bible270 and Active Storage schemas with local migration versions
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- original-language reading labels now display `Hebrew` or `Greek` for the relevant passage
|
|
30
|
+
- passage-source preferences use an extensible string value, defaulting to Bible Gateway and preserving earlier Blue Letter Bible selections during migration
|
|
31
|
+
|
|
32
|
+
**[Full Changelog](https://github.com/avonderluft/bible270/compare/v0.17.2...v0.18.0)**
|
|
10
33
|
|
|
11
34
|
## [0.17.2] - 2026-08-08
|
|
12
35
|
|
|
@@ -390,6 +413,8 @@ This is the initial public release.
|
|
|
390
413
|
|
|
391
414
|
* Email sign-in requires working Action Mailer delivery in the host application. Set `config.mailer_from`; delivery is inline by default, or set `email_sign_in_deliver_later` when a queue backend is available.
|
|
392
415
|
|
|
416
|
+
[0.18.1]: https://github.com/avonderluft/bible270/releases/tag/v0.18.1
|
|
417
|
+
[0.18.0]: https://github.com/avonderluft/bible270/releases/tag/v0.18.0
|
|
393
418
|
[0.17.2]: https://github.com/avonderluft/bible270/releases/tag/v0.17.2
|
|
394
419
|
[0.17.1]: https://github.com/avonderluft/bible270/releases/tag/v0.17.1
|
|
395
420
|
[0.17.0]: https://github.com/avonderluft/bible270/releases/tag/v0.17.0
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bible 270
|
|
2
2
|
|
|
3
|
-
[](https://rubygems.org/gems/bible270) [](https://rubygems.org/gems/bible270) [](https://coveralls.io/github/avonderluft/bible270?branch=main) [](https://rubygems.org/gems/bible270) [](https://github.com/avonderluft/bible270/releases)
|
|
4
4
|
|
|
5
5
|
A mountable **Rails engine** that drops a 270-day (9 month) interactive Bible reading plan into any Rails app, built with [ComfortableMediaSurfer](https://github.com/shakacode/comfortable-media-surfer) CMS in mind. Readers tick off each day's readings, post reflections, and see how everyone else is getting on, much like the social plans on Bible.com.
|
|
6
6
|
|
data/Rakefile
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require 'bundler/gem_tasks' # provides build / install / release
|
|
4
4
|
require 'rake/testtask'
|
|
5
|
-
require 'coveralls/rake/task'
|
|
6
5
|
|
|
7
6
|
Rake::TestTask.new(:test) do |t|
|
|
8
7
|
t.libs << 'test' << 'lib'
|
|
@@ -10,6 +9,4 @@ Rake::TestTask.new(:test) do |t|
|
|
|
10
9
|
t.warning = false
|
|
11
10
|
end
|
|
12
11
|
|
|
13
|
-
Coveralls::RakeTask.new
|
|
14
|
-
|
|
15
12
|
task default: :test
|
|
@@ -138,7 +138,7 @@ module Bible270
|
|
|
138
138
|
reader.avatar_url.presence
|
|
139
139
|
end
|
|
140
140
|
|
|
141
|
-
def b270_avatar(reader, size:
|
|
141
|
+
def b270_avatar(reader, size: 72)
|
|
142
142
|
src = b270_avatar_src(reader)
|
|
143
143
|
if src
|
|
144
144
|
image_tag src, class: 'b270-avatar', width: size, height: size, alt: reader.display_name
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<%= link_to 'Moderate reflections →', admin_comments_path %></p>
|
|
6
6
|
|
|
7
7
|
<div class="b270-panel">
|
|
8
|
-
<h2 class="b270-subhead">This run of the plan is <%= @enrollment_closed ? 'closed' : 'open' %> to new readers.</h2>
|
|
8
|
+
<h2 class="b270-subhead">This run of the plan is <%= @enrollment_closed ? 'closed' : 'open' %> to new readers.</h2>
|
|
9
9
|
<% if @enrollment_closed %>
|
|
10
10
|
<% if @enrollment_closed_at %>
|
|
11
11
|
<p class="b270-startline">Enrollment closed
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<div class="b270-list">
|
|
27
27
|
<% @readers.each do |reader| %>
|
|
28
28
|
<div class="b270-li">
|
|
29
|
-
<%= b270_avatar(reader, size:
|
|
29
|
+
<%= b270_avatar(reader, size: 72) %>
|
|
30
30
|
<div>
|
|
31
31
|
<div class="name"><%= link_to reader.display_name, admin_reader_path(reader), style: 'text-decoration:none' %>
|
|
32
32
|
<% if Bible270.config.admin?(reader) %> <span class="sub"><strong>[admin]</strong></span> <% end %>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<%= form_with url: admin_reader_profile_path(@reader), method: :patch, class: "b270-emailform",
|
|
17
17
|
html: { multipart: true } do %>
|
|
18
18
|
<div class="b270-avatarrow">
|
|
19
|
-
<%= b270_avatar(@reader, size:
|
|
19
|
+
<%= b270_avatar(@reader, size: 72) %>
|
|
20
20
|
<% if Bible270::Reader.avatar_uploads? %>
|
|
21
21
|
<label class="b270-field" style="flex:1">
|
|
22
22
|
<span>Picture</span>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
%>
|
|
8
8
|
<% editing = @editing_comment_id.present? && @editing_comment_id == comment.id %>
|
|
9
9
|
<div class="b270-comment <%= 'b270-reply' if reply %>" id="comment-<%= comment.id %>">
|
|
10
|
-
<%= b270_avatar(comment.reader, size: reply ?
|
|
10
|
+
<%= b270_avatar(comment.reader, size: reply ? 36 : 48) %>
|
|
11
11
|
<div style="flex:1">
|
|
12
12
|
<div class="b270-cmeta">
|
|
13
13
|
<strong><%= link_to comment.reader.display_name, reader_path(comment.reader), style: "text-decoration:none" %></strong>
|
|
@@ -1,27 +1,37 @@
|
|
|
1
1
|
<%# locals: (comment:) %>
|
|
2
2
|
<%#
|
|
3
|
-
|
|
4
|
-
the
|
|
5
|
-
|
|
6
|
-
Your own like is not drawn in the row: the button is your heart, filled, and
|
|
7
|
-
saying so. Drawing both gave a reader two hearts for one like.
|
|
3
|
+
Likes are summarized as a count followed by one heart. Hovering or focusing
|
|
4
|
+
the summary reveals every liker on a separate line.
|
|
8
5
|
%>
|
|
9
6
|
<%
|
|
10
7
|
liked = signed_in? && comment.liked_by?(current_reader)
|
|
11
|
-
|
|
8
|
+
likes = comment.likes
|
|
9
|
+
tooltip_id = "likers-#{comment.id}"
|
|
12
10
|
%>
|
|
13
11
|
<span class="b270-likes" id="likes-<%= comment.id %>">
|
|
14
|
-
<%
|
|
15
|
-
|
|
12
|
+
<% if likes.any? %>
|
|
13
|
+
<span class="b270-likecount"><%= likes.size %></span>
|
|
14
|
+
<% end %>
|
|
16
15
|
|
|
17
16
|
<% if signed_in? %>
|
|
18
|
-
<%= button_to like_comment_path(comment), method: :post, class: "b270-likebtn#{' liked' if
|
|
17
|
+
<%= button_to like_comment_path(comment), method: :post, class: "b270-likebtn#{' liked' if likes.any?}",
|
|
19
18
|
form: { style: "display:inline", data: { turbo_stream: true } },
|
|
20
|
-
aria: {
|
|
21
|
-
|
|
19
|
+
aria: {
|
|
20
|
+
label: liked ? "Take back your like" : "Like this reflection",
|
|
21
|
+
describedby: (tooltip_id if likes.any?)
|
|
22
|
+
} do %>
|
|
22
23
|
<%= Bible270::Comment::HEART %>
|
|
23
24
|
<% end %>
|
|
24
|
-
<% elsif
|
|
25
|
-
<span class="b270-
|
|
25
|
+
<% elsif likes.any? %>
|
|
26
|
+
<span class="b270-heart" tabindex="0" aria-label="<%= pluralize(likes.size, 'like') %>"
|
|
27
|
+
aria-describedby="<%= tooltip_id %>"><%= Bible270::Comment::HEART %></span>
|
|
28
|
+
<% end %>
|
|
29
|
+
|
|
30
|
+
<% if likes.any? %>
|
|
31
|
+
<span class="b270-liketooltip" id="<%= tooltip_id %>" role="tooltip">
|
|
32
|
+
<% likes.each do |like| %>
|
|
33
|
+
<span class="b270-liker"><%= like.reader.display_name %></span>
|
|
34
|
+
<% end %>
|
|
35
|
+
</span>
|
|
26
36
|
<% end %>
|
|
27
37
|
</span>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<%= form_with url: profile_path, method: :patch, class: "b270-emailform",
|
|
8
8
|
html: { multipart: true } do %>
|
|
9
9
|
<div class="b270-avatarrow">
|
|
10
|
-
<%= b270_avatar(current_reader, size:
|
|
10
|
+
<%= b270_avatar(current_reader, size: 72) %>
|
|
11
11
|
<% if Bible270::Reader.avatar_uploads? %>
|
|
12
12
|
<label class="b270-field" style="flex:1">
|
|
13
13
|
<span>Picture</span>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<% @readers.each_with_index do |r, i| %>
|
|
9
9
|
<div class="b270-li">
|
|
10
10
|
<span class="rank"><%= i + 1 %></span>
|
|
11
|
-
<%= b270_avatar(r, size:
|
|
11
|
+
<%= b270_avatar(r, size: 72) %>
|
|
12
12
|
<div>
|
|
13
13
|
<div class="name"><%= link_to r.display_name, reader_path(r), style: "text-decoration:none" %></div>
|
|
14
14
|
<div class="sub"><%= @days_completed[r.id] %> of <%= Bible270::Plan::DAYS %> days · joined <%= Bible270.local_time(r.created_at).strftime("%b %Y") %></div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% content_for :title, "#{@reader.display_name} — #{Bible270.config.app_name}" %>
|
|
2
2
|
<% content_for :hide_day_index, true %><%# this page has its own grid %>
|
|
3
3
|
<div style="display:flex;align-items:center;gap:16px;margin-bottom:8px">
|
|
4
|
-
<%= b270_avatar(@reader, size:
|
|
4
|
+
<%= b270_avatar(@reader, size: 72) %>
|
|
5
5
|
<div>
|
|
6
6
|
<h1 style="margin:0"><%= @reader.display_name %></h1>
|
|
7
7
|
<% if signed_in? && current_reader.id == @reader.id %>
|
|
@@ -26,4 +26,3 @@
|
|
|
26
26
|
<% end %>
|
|
27
27
|
</div>
|
|
28
28
|
<p class="b270-gridnote">Dot indicates days with reflections.</p>
|
|
29
|
-
|
|
@@ -171,16 +171,21 @@
|
|
|
171
171
|
.b270-mention{color:var(--teal);font-weight:600;text-decoration:none}
|
|
172
172
|
.b270-mention:hover{text-decoration:underline}
|
|
173
173
|
.b270-cactions{display:flex;align-items:center;gap:12px;margin-top:6px;flex-wrap:wrap}
|
|
174
|
-
.b270-likes{display:inline-flex;align-items:center;gap:
|
|
174
|
+
.b270-likes{display:inline-flex;align-items:center;gap:3px;position:relative}
|
|
175
175
|
.b270-heart{font-size:13px;line-height:1;cursor:default}
|
|
176
|
-
/*
|
|
177
|
-
|
|
178
|
-
visible against the paper, and hovering shows what clicking will give. */
|
|
176
|
+
/* The single heart is also the toggle for signed-in readers. It stays red
|
|
177
|
+
while anyone likes the reflection and returns to grey only at zero likes. */
|
|
179
178
|
.b270-likebtn{background:none;border:0;padding:0 2px;font-size:13px;line-height:1;cursor:pointer;
|
|
180
179
|
filter:grayscale(1);opacity:.5;transition:filter .12s,opacity .12s}
|
|
181
180
|
.b270-likebtn:hover{filter:none;opacity:1}
|
|
182
181
|
.b270-likebtn.liked{filter:none;opacity:1}
|
|
183
|
-
.b270-likecount{font-size:11.5px;color:var(--faint)
|
|
182
|
+
.b270-likecount{font-size:11.5px;color:var(--faint)}
|
|
183
|
+
.b270-liketooltip{display:none;position:absolute;z-index:10;top:calc(100% + 6px);left:0;
|
|
184
|
+
min-width:max-content;padding:6px 9px;border:1px solid var(--line-soft);
|
|
185
|
+
border-radius:7px;background:var(--ink);color:var(--paper);font-size:12px;
|
|
186
|
+
line-height:1.45;box-shadow:0 3px 10px rgba(0,0,0,.14)}
|
|
187
|
+
.b270-likes:hover .b270-liketooltip,.b270-likes:focus-within .b270-liketooltip{display:block}
|
|
188
|
+
.b270-liker{display:block;white-space:nowrap}
|
|
184
189
|
.b270-creply{margin-top:6px}
|
|
185
190
|
.b270-cbody{margin:3px 0 0;white-space:pre-wrap}
|
|
186
191
|
.b270-editform{margin-top:6px}
|
|
@@ -19,6 +19,7 @@ module Bible270
|
|
|
19
19
|
'LSB' => { label: 'Legacy Standard Bible', short: 'Legacy Standard Version', gateway: 'LSB', blue_letter: 'lsb' },
|
|
20
20
|
'ESV' => { label: 'English Standard Version', short: 'English Standard Version', gateway: 'ESV', blue_letter: 'esv' },
|
|
21
21
|
'KJV' => { label: 'King James Version', short: 'King James Version', gateway: 'KJV', blue_letter: 'kjv' },
|
|
22
|
+
'YLT' => { label: 'Young\'s Literal Translation', short: 'Young\'s Literal Translation', gateway: 'YLT', blue_letter: 'ylt' },
|
|
22
23
|
'HEB/GRK' => { label: 'Hebrew and Greek', short: 'Hebrew and Greek', gateway: 'WLC', blue_letter: 'wlc/mgnt' }
|
|
23
24
|
}.freeze
|
|
24
25
|
|
data/lib/bible270/version.rb
CHANGED