card-mod-history 0.11.1 → 0.11.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e56c80e7368e6e50232d70a870e2fa72741733cce665d369f6152d22ec589005
4
- data.tar.gz: 915d13a68cf8a78914a6f576788ecb2daf9bb699d98f17161e0cbb5616f66b6e
3
+ metadata.gz: 1b8b4e1379d75e9bafc6ca63dae336c876ce322ae4a3f1a10d072c631711909b
4
+ data.tar.gz: 85e11664531b9f303306d972cc3de43184ae863f487e6c1caea2816f133f4da4
5
5
  SHA512:
6
- metadata.gz: fcfceefcf692a0e1dc150233f0e12382b965abac9b22f613fc05a9506f93b1a06dd8d86eb958e007cf75fa9b41eb6164795d20ac65da53bcf7c0e1c9401c4a1a
7
- data.tar.gz: 40a34f8e8d507bf69dbfd377185a884d3fd6ce2d376fc2bd1a8f902af4f6b66af8c0b2e6d56bf4cf05f58cb2d131dfe5ec1ef9d680de09dc32877860148d9a7f
6
+ metadata.gz: 734cd68d837125febdfe449468bcb48a1c6200853c0fca20b1c8217c1cd31427a1a1b2249bc2b6ec9170393d8b06e4a63ea30b5c4e113e16a2a69ebf161defaf
7
+ data.tar.gz: 6df7053eac175fbea41b30151659196dc72188b1c91295ab9aa680d31f777b2768d64c1d414340b2660887f71b717b06ac35cad3d930d534dd7be3c78356ea72
data/lib/card/act.rb CHANGED
@@ -108,7 +108,7 @@ class Card
108
108
  end
109
109
 
110
110
  def draft?
111
- main_action.draft
111
+ main_action&.draft
112
112
  end
113
113
 
114
114
  # time (in words) since act took place
@@ -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.draft ? :warning : :default
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)
@@ -22,7 +22,7 @@ class Card
22
22
  def revert_link
23
23
  revert_actions_link "revert to previous",
24
24
  { revert_to: :previous, revert_act: @act.id },
25
- "data-slot-selector": "#main > .card-slot"
25
+ { "data-slot-selector": "#main > .card-slot" }
26
26
  end
27
27
 
28
28
  def actions
@@ -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
- "<span class=\"nr\">##{@args[:act_seq]}</span>" +
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
 
@@ -50,8 +49,8 @@ class Card
50
49
  def revert_link
51
50
  revert_actions_link "revert to this",
52
51
  { revert_actions: actions.map(&:id) },
53
- class: "_close-modal",
54
- "data-slotter-mode": "update-modal-origin"
52
+ { class: "_close-modal",
53
+ "data-slotter-mode": "update-modal-origin" }
55
54
  end
56
55
  end
57
56
  end
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
- find id.to_i
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.each_with_object({}) do |(key, change), h|
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
@@ -1,5 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'activerecord-import'
2
+
3
+ require "activerecord-import"
3
4
 
4
5
  class Card
5
6
  # A _change_ is an alteration to a card's name, type, content, or trash state.
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
- history_parent_ids.map { |id| Card[id].history_ancestor_ids(recursion_level + 1) }
28
+ history_parent_ids.map { |id| Card[id].history_ancestor_ids(recursion_level + 1) }
28
29
  ids.flatten
29
30
  end
30
31
 
@@ -86,6 +86,7 @@ format :html do
86
86
 
87
87
  def act_paging acts, context
88
88
  return unless controller.request # paginate requires a request
89
+
89
90
  wrap_with :div, class: "slotter btn-sm" do
90
91
  paginate current_page_acts(acts), act_paging_opts(context)
91
92
  end
@@ -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 revision id is probably a mod (e.g. if you request
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
- action
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
@@ -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, tr(:error_not_latest_revision)
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
- # Note: #last_change_on uses the id to sort by date
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 [:field, :value, :card_action_id], values #, validate: false
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,
@@ -24,7 +24,7 @@ def select_action action_id
24
24
  end
25
25
 
26
26
  def selected_action_id
27
- @selected_action_id || (@current_action&.id) || last_action_id
27
+ @selected_action_id || @current_action&.id || last_action_id
28
28
  end
29
29
 
30
30
  def selected_action_id= action_id
@@ -41,8 +41,8 @@ def selected_content
41
41
  end
42
42
 
43
43
  def content_at_time_of_selected_action
44
- lc = last_change_on(:db_content, not_after: @selected_action_id, including_drafts: true)
45
- lc&.value
44
+ last_change_on(:db_content, not_after: selected_action_id,
45
+ including_drafts: true)&.value
46
46
  end
47
47
 
48
48
  def with_selected_action_id action_id
@@ -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
- return "" unless card.id
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
- total = updaters.size
22
- fetch_count = total > max_count ? max_count - 1 : max_count
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.1
4
+ version: 0.11.6
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: 2021-03-02 00:00:00.000000000 Z
13
+ date: 2021-05-21 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.1
21
+ version: 1.101.6
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.1
28
+ version: 1.101.6
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: http://decko.org
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.0.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