card-mod-history 0.11.0 → 0.11.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/card/act.rb +1 -1
- data/lib/card/act/act_renderer.rb +2 -2
- data/lib/card/act/act_renderer/relative_act_renderer.rb +1 -2
- data/lib/card/action.rb +2 -4
- data/lib/card/action/action_renderer.rb +2 -1
- data/lib/card/change.rb +2 -1
- data/set/all/history.rb +2 -1
- data/set/all/history/act_listing.rb +9 -6
- data/set/all/history/actions.rb +8 -4
- data/set/all/history/events.rb +3 -3
- data/set/all/history/selected.rb +1 -1
- data/set/all/history/views.rb +31 -0
- data/set/all/history_bridge.rb +31 -17
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0f47cae6066494760ecaf1b743c450f83cdb64bb78b805d9a89ecdb4ce4b49c
|
4
|
+
data.tar.gz: 1960fde3b8ecbb5c81be55c3d58396c8102b9d5f08445aa67f76a9450638ed02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1665db38b17b2161b58469430edb76ca1740040fd720d90d1fb0e795520c280df8d468cb9e1febe032c94c780dd88532d28aad030afc8dc759f4e92e644b0b08
|
7
|
+
data.tar.gz: cef187430a6a80a502f6b21d3592c6d0afb90739734808d19ba8a5d68ad9fe68133c58485eb1c70f00dd4e6ccb76ac98903314792b4b7ecebc4e8c8109c42546
|
data/lib/card/act.rb
CHANGED
@@ -123,7 +123,7 @@ class Card
|
|
123
123
|
# here. The problem is that here we have extra links in the title
|
124
124
|
# that are not supposed to expand the accordion
|
125
125
|
def act_accordion
|
126
|
-
context = @act.main_action
|
126
|
+
context = @act.main_action&.draft ? :warning : :default
|
127
127
|
<<-HTML
|
128
128
|
<div class="card card-#{context} nodblclick">
|
129
129
|
#{act_accordion_panel}
|
@@ -173,7 +173,7 @@ class Card
|
|
173
173
|
# save as current:
|
174
174
|
# not current, not deletion
|
175
175
|
def rollback_link
|
176
|
-
return unless card.ok? :update
|
176
|
+
return unless @card.ok? :update
|
177
177
|
|
178
178
|
wrap_with :div, class: "act-link collapse #{collapse_id} float-right" do
|
179
179
|
content_tag(:small, revert_link)
|
@@ -6,9 +6,8 @@ class Card
|
|
6
6
|
# for the card of the format that renders the act.
|
7
7
|
class RelativeActRenderer < ActRenderer
|
8
8
|
def title
|
9
|
-
|
9
|
+
%(<span class="nr">##{@args[:act_seq]}</span>) +
|
10
10
|
accordion_expand_link(@act.actor.name) +
|
11
|
-
" " +
|
12
11
|
wrap_with(:small, edited_ago)
|
13
12
|
end
|
14
13
|
|
data/lib/card/action.rb
CHANGED
@@ -48,7 +48,7 @@ class Card
|
|
48
48
|
# @return [Action, nil]
|
49
49
|
def fetch id
|
50
50
|
cache.fetch id.to_s do
|
51
|
-
|
51
|
+
where(id: id.to_i).take
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -177,9 +177,7 @@ class Card
|
|
177
177
|
|
178
178
|
# all changed values in hash form. { field1: new_value }
|
179
179
|
def changed_values
|
180
|
-
@changed_values ||= changes.
|
181
|
-
h[key] = change.value
|
182
|
-
end
|
180
|
+
@changed_values ||= changes.transform_values(&:value)
|
183
181
|
end
|
184
182
|
|
185
183
|
# @return [Hash]
|
@@ -2,6 +2,7 @@ class Card
|
|
2
2
|
class Action
|
3
3
|
class ActionRenderer
|
4
4
|
attr_reader :action, :header
|
5
|
+
|
5
6
|
def initialize format, action, header=true, action_view=:summary, hide_diff=false
|
6
7
|
@format = format
|
7
8
|
@action = action
|
@@ -58,7 +59,7 @@ class Card
|
|
58
59
|
else
|
59
60
|
link_to_view(
|
60
61
|
:related, name_changes,
|
61
|
-
path: { slot: { items: { view: "history", nest_name: @action.card.name } } }
|
62
|
+
path: { slot: { items: { view: "history", nest_name: @action.card.name } } }
|
62
63
|
# "data-slot-selector" => ".card-slot.history-view"
|
63
64
|
)
|
64
65
|
end
|
data/lib/card/change.rb
CHANGED
data/set/all/history.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
event :update_ancestor_timestamps, :integrate do
|
2
2
|
ids = history_ancestor_ids
|
3
3
|
return unless ids.present?
|
4
|
+
|
4
5
|
Card.where(id: ids).update_all(updater_id: Auth.current_id, updated_at: Time.now)
|
5
6
|
ids.map { |anc_id| Card.expire anc_id.cardname }
|
6
7
|
end
|
@@ -24,7 +25,7 @@ def history_ancestor_ids recursion_level=0
|
|
24
25
|
return [] if recursion_level > 5
|
25
26
|
|
26
27
|
ids = history_parent_ids +
|
27
|
-
|
28
|
+
history_parent_ids.map { |id| Card[id].history_ancestor_ids(recursion_level + 1) }
|
28
29
|
ids.flatten
|
29
30
|
end
|
30
31
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
ACTS_PER_PAGE = Card.config.acts_per_page
|
2
|
-
|
3
1
|
format :html do
|
4
2
|
def act_from_context
|
5
3
|
if (act_id = params["act_id"])
|
@@ -79,7 +77,7 @@ format :html do
|
|
79
77
|
end
|
80
78
|
|
81
79
|
def acts_per_page
|
82
|
-
@acts_per_page ||
|
80
|
+
@acts_per_page ||= Card.config.acts_per_page || 10
|
83
81
|
end
|
84
82
|
|
85
83
|
def acts_page_from_params
|
@@ -87,11 +85,16 @@ format :html do
|
|
87
85
|
end
|
88
86
|
|
89
87
|
def act_paging acts, context
|
88
|
+
return unless controller.request # paginate requires a request
|
89
|
+
|
90
90
|
wrap_with :div, class: "slotter btn-sm" do
|
91
|
-
|
92
|
-
|
91
|
+
paginate current_page_acts(acts), act_paging_opts(context)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def act_paging_opts context
|
96
|
+
{ remote: true, theme: "twitter-bootstrap-4" }.tap do |opts|
|
93
97
|
opts[:total_pages] = 10 if limited_paging? context
|
94
|
-
paginate acts, opts
|
95
98
|
end
|
96
99
|
end
|
97
100
|
|
data/set/all/history/actions.rb
CHANGED
@@ -7,12 +7,16 @@ end
|
|
7
7
|
def action_from_id action_id
|
8
8
|
return unless action_id.is_a?(Integer) || action_id =~ /^\d+$/
|
9
9
|
|
10
|
-
# if not an integer
|
10
|
+
# if not an integer, action_id is probably a mod (e.g. if you request
|
11
11
|
# files/:logo/standard.png)
|
12
|
-
action = Action.fetch action_id
|
13
|
-
return unless action.card_id == id
|
14
12
|
|
15
|
-
|
13
|
+
action_if_on_self Action.fetch(action_id)
|
14
|
+
end
|
15
|
+
|
16
|
+
def action_if_on_self action
|
17
|
+
return unless action.is_a? Action
|
18
|
+
|
19
|
+
action if action.card_id == id
|
16
20
|
end
|
17
21
|
|
18
22
|
def old_actions
|
data/set/all/history/events.rb
CHANGED
@@ -18,7 +18,7 @@ def actionable?
|
|
18
18
|
end
|
19
19
|
|
20
20
|
event :detect_conflict, :validate, on: :update, when: :edit_conflict? do
|
21
|
-
errors.add :conflict,
|
21
|
+
errors.add :conflict, Cardio.t(:history_error_not_latest_revision)
|
22
22
|
end
|
23
23
|
|
24
24
|
def edit_conflict?
|
@@ -34,7 +34,7 @@ event :finalize_action, :finalize, when: :finalize_action? do
|
|
34
34
|
if changed_fields.present?
|
35
35
|
@current_action.update! card_id: id
|
36
36
|
|
37
|
-
#
|
37
|
+
# NOTE: #last_change_on uses the id to sort by date
|
38
38
|
# so the changes for the create changes have to be created before the first change
|
39
39
|
store_card_changes_for_create_action if first_change?
|
40
40
|
store_card_changes unless first_create?
|
@@ -64,7 +64,7 @@ def store_each_history_field action_id, fields=nil
|
|
64
64
|
if false # Card::Change.supports_import?
|
65
65
|
# attach.feature fails with this
|
66
66
|
values = fields.map.with_index { |field, index| [index, yield(field), action_id] }
|
67
|
-
Card::Change.import [
|
67
|
+
Card::Change.import %i[field value card_action_id], values # , validate: false
|
68
68
|
else
|
69
69
|
fields.each do |field|
|
70
70
|
Card::Change.create field: field,
|
data/set/all/history/selected.rb
CHANGED
data/set/all/history/views.rb
CHANGED
@@ -32,4 +32,35 @@ format :html do
|
|
32
32
|
view :action_expanded do
|
33
33
|
action_content action_from_context, :expanded
|
34
34
|
end
|
35
|
+
|
36
|
+
view :change do
|
37
|
+
voo.show :title_link
|
38
|
+
voo.hide :menu
|
39
|
+
wrap do
|
40
|
+
[_render_title,
|
41
|
+
_render_menu,
|
42
|
+
_render_last_action]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
view :last_action do
|
47
|
+
%(
|
48
|
+
<span class="last-update">
|
49
|
+
#{render_last_action_verb} #{render_acted_at} ago by
|
50
|
+
#{nest card.last_actor, view: :link}
|
51
|
+
</span>
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
view :last_action_verb, cache: :never do
|
56
|
+
return unless (act = card.last_act)
|
57
|
+
return unless (action = act.action_on card.id)
|
58
|
+
|
59
|
+
case action.action_type
|
60
|
+
when :create then "added"
|
61
|
+
when :delete then "deleted"
|
62
|
+
else
|
63
|
+
link_to_view :history, "edited", class: "last-edited", rel: "nofollow"
|
64
|
+
end
|
65
|
+
end
|
35
66
|
end
|
data/set/all/history_bridge.rb
CHANGED
@@ -2,30 +2,17 @@ format :html do
|
|
2
2
|
view :creator_credit,
|
3
3
|
wrap: { div: { class: "text-muted creator-credit" } }, cache: :never do
|
4
4
|
return "" unless card.real?
|
5
|
+
|
5
6
|
"Created by #{nest card.creator, view: :link} "\
|
6
7
|
"#{time_ago_in_words(card.created_at)} ago"
|
7
8
|
end
|
8
9
|
|
9
10
|
view :updated_by, wrap: { div: { class: "text-muted" } } do
|
10
|
-
|
11
|
-
updaters = Card.search(updater_of: { id: card.id })
|
12
|
-
return "" unless updaters.present?
|
13
|
-
|
14
|
-
updaters = updater_links updaters, others_target: Card.fetch(card, :editors)
|
15
|
-
"Updated by #{updaters}"
|
16
|
-
end
|
17
|
-
|
18
|
-
def updater_links updaters, item_view: :link, max_count: 3, others_target: card
|
11
|
+
updaters = Card.search(updater_of: { id: card.id }) if card.id
|
19
12
|
return "" unless updaters.present?
|
20
13
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
reduced = first_card(fetch_count).map { |c| nest c, view: item_view }
|
25
|
-
if total > max_count
|
26
|
-
reduced << link_to_card(others_target, "#{total - fetch_count} others")
|
27
|
-
end
|
28
|
-
reduced.to_sentence
|
14
|
+
links = updater_links updaters, others_target: card.fetch(:editors)
|
15
|
+
"Updated by #{links}"
|
29
16
|
end
|
30
17
|
|
31
18
|
def acts_bridge_layout acts, context=:bridge
|
@@ -62,4 +49,31 @@ format :html do
|
|
62
49
|
act_listing(act, opts[:act_seq], :bridge)
|
63
50
|
end
|
64
51
|
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def updater_links updaters, item_view: :link, max_count: 3, others_target: card
|
56
|
+
total = updaters.size
|
57
|
+
num_to_show = number_of_updaters_to_show total, max_count
|
58
|
+
|
59
|
+
links =
|
60
|
+
links_to_updaters(updaters, num_to_show, item_view) +
|
61
|
+
link_to_other_updaters(total, others_target, num_to_show)
|
62
|
+
|
63
|
+
links.to_sentence
|
64
|
+
end
|
65
|
+
|
66
|
+
def number_of_updaters_to_show total, max_count
|
67
|
+
total > max_count ? max_count - 1 : max_count
|
68
|
+
end
|
69
|
+
|
70
|
+
def links_to_updaters updaters, num_to_show, item_view
|
71
|
+
updaters[0..(num_to_show - 1)].map { |c| nest c, view: item_view }
|
72
|
+
end
|
73
|
+
|
74
|
+
def link_to_other_updaters total, target, num_to_show
|
75
|
+
return [] unless total > num_to_show
|
76
|
+
|
77
|
+
link_to_card target, "#{total - num_to_show} others"
|
78
|
+
end
|
65
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card-mod-history
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-05-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: card
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.101.
|
21
|
+
version: 1.101.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 1.101.
|
28
|
+
version: 1.101.5
|
29
29
|
description: ''
|
30
30
|
email:
|
31
31
|
- info@decko.org
|
@@ -53,10 +53,15 @@ files:
|
|
53
53
|
- set/all/history/selected.rb
|
54
54
|
- set/all/history/views.rb
|
55
55
|
- set/all/history_bridge.rb
|
56
|
-
homepage:
|
56
|
+
homepage: https://decko.org
|
57
57
|
licenses:
|
58
58
|
- GPL-3.0
|
59
59
|
metadata:
|
60
|
+
source_code_uri: https://github.com/decko-commons/decko
|
61
|
+
homepage_uri: https://decko.org
|
62
|
+
bug_tracker_uri: https://github.com/decko-commons/decko/issues
|
63
|
+
wiki_uri: https://decko.org
|
64
|
+
documentation_url: http://docs.decko.org/
|
60
65
|
card-mod: history
|
61
66
|
post_install_message:
|
62
67
|
rdoc_options: []
|
@@ -73,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
78
|
- !ruby/object:Gem::Version
|
74
79
|
version: '0'
|
75
80
|
requirements: []
|
76
|
-
rubygems_version: 3.
|
81
|
+
rubygems_version: 3.1.4
|
77
82
|
signing_key:
|
78
83
|
specification_version: 4
|
79
84
|
summary: Revision histories in acts, actions, and changes
|