Module: Card::Set::All::History::Events

Extended by:
Card::Set
Defined in:
platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb

Overview

Set: All cards (History, Events)

Constant Summary

Constants included from Helpers

Helpers::SET_PATTERN_TEST_REGEXP

Constants included from Event::Api

Event::Api::OPTIONS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Card::Set

reset

Methods included from I18nScope

#mod_name, #scope

Methods included from Registrar

#extended, #finalize_load, #process_base_modules, #register_set

Methods included from Helpers

#format_module, #format_modules, #method_missing, #modules, #pattern_code, #respond_to_missing?, #set_name_parts, #shortname, #underscored_name

Methods included from Card::Set::AdvancedApi

#assign_type, #attachment, #define_set_from_error, #ensure_set, #setting_opts, #stage_method

Methods included from Format

#before, #format, layout_method_name, #view, view_method_name, view_setting_method_name, wrapper_method_name

Methods included from Inheritance

#include_set, #include_set_formats

Methods included from Trait

#card_accessor, #card_reader, #card_writer, #require_field

Methods included from Event::Api

#event

Class Method Details

.source_locationObject



7
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 7

def self.source_location; "/Users/ethan/dev/decko/gem/mod/history/set/all/history/events.rb"; end

Instance Method Details

#actionable?Boolean

can we store an action? (can be overridden, eg in files)

Returns:

  • (Boolean)


60
61
62
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 60

def actionable?
  history?
end

#edit_conflict?Boolean

Returns:

  • (Boolean)


72
73
74
75
76
77
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 72

def edit_conflict?
  last_action_id_before_edit &&
    last_action_id_before_edit.to_i != last_action_id &&
    (la = last_action) &&
    la.act.actor_id != Auth.current_id
end

#event: assign_actionObject

must be called on all actions and before :set_name, :process_subcards and :delete_children



22
23
24
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 22

event :assign_action, :initialize, when: :actionable? do
  @current_action = new_action
end

#event: detect_conflictObject



26
27
28
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 26

event :detect_conflict, :validate, on: :update, when: :edit_conflict? do
  errors.add :conflict, ::I18n.t(:history_error_not_latest_revision)
end

#event: finalize_actObject



55
56
57
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 55

event :finalize_act, after: :finalize_action, when: :act_card? do
  Card::Director.act.update! card_id: id
end

#event: finalize_actionObject

stores changes in the changes table and assigns them to the current action removes the action if there are no changes



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 32

event :finalize_action, :finalize, when: :finalize_action? do
  if changed_fields.present?
    @current_action.update! card_id: id

    # NOTE: #last_change_on uses the id to sort by date
    # so the changes for the create changes have to be created before the first change
    store_card_changes_for_create_action if first_change?
    store_card_changes unless first_create?
    # FIXME: a `@current_action.card` call here breaks specs in solid_cache_spec.rb
  elsif @current_action.card_changes.reload.empty?
    @current_action.delete
    @current_action = nil
  end
end

#event: rollback_actionsObject



47
48
49
50
51
52
53
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 47

event :rollback_actions, :prepare_to_validate, on: :update, when: :rollback_request? do
  update_args = process_revert_actions
  Env.params["revert_actions"] = nil
  update! update_args
  clear_drafts
  abort :success
end

#event: update_ancestor_timestampsObject



8
9
10
11
12
13
14
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 8

event :update_ancestor_timestamps, :integrate do
  ids = history_ancestor_ids
  return unless ids.present?

  Card.where(id: ids).update_all(updater_id: Auth.current_id, updated_at: Time.now)
  ids.map { |anc_id| Card.expire anc_id.cardname }
end

#finalize_action?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 68

def finalize_action?
  actionable? && current_action
end

#remove_empty_act?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'platypus/tmp/set/gem-defaults/mod015-history/all/history/events.rb', line 64

def remove_empty_act?
  act_card? && Director.act&.ar_actions&.reload&.empty?
end