card 1.101.4 → 1.101.5
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/config/i18n-tasks.yml +0 -5
- data/config/initializers/01_core_extensions/array.rb +2 -1
- data/config/initializers/01_core_extensions/hash.rb +1 -0
- data/config/initializers/01_core_extensions/object.rb +15 -11
- data/config/initializers/02_patches/active_job.rb +1 -1
- data/config/initializers/02_patches/active_record.rb +1 -3
- data/config/initializers/02_patches/better_errors.rb +1 -3
- data/config/initializers/02_patches/kaminari.rb +2 -2
- data/config/initializers/deck_config.rb +1 -1
- data/config/initializers/inflections.rb +1 -0
- data/config/initializers/internationalization.rb +23 -21
- data/config/initializers/mime_types.rb +1 -0
- data/config/initializers/notification.rb +1 -0
- data/config/initializers/patches.rb +6 -5
- data/config/locales/en.yml +10 -16
- data/db/migrate/20110511221913_require_earlier_migrations.rb +1 -0
- data/db/migrate/20121111025347_require_1_10_migrations.rb +1 -0
- data/db/migrate/20121118114000_split_link_type.rb +1 -0
- data/db/migrate/20121118115000_update_link_type.rb +1 -0
- data/db/migrate/20130106052640_table_cleanup.rb +2 -2
- data/db/migrate/20130109015336_trunk_left.rb +1 -0
- data/db/migrate/20130411210957_update_codenames.rb +1 -0
- data/db/migrate/20140822073704_create_new_revision_tables.rb +1 -0
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +9 -3
- data/db/migrate/20141216053032_better_index_names.rb +9 -6
- data/db/migrate/20170908114442_create_delayed_jobs.rb +1 -1
- data/db/migrate/20170908114452_increase_text_size_for_delayed_jobs.rb +1 -1
- data/db/migrate/20180514152037_add_card_virtuals_table.rb +1 -1
- data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +2 -1
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +9 -9
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -2
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +5 -5
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +3 -2
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +2 -4
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -3
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -3
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +12 -8
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +2 -4
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +16 -9
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +19 -11
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +1 -1
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +1 -1
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +2 -0
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +4 -2
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +1 -1
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -4
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +8 -4
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +14 -7
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +6 -4
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +4 -2
- data/db/migrate_core_cards/20150510031118_fix_skin_codenames.rb +2 -1
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +3 -3
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -1
- data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +4 -3
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +6 -2
- data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +2 -0
- data/db/migrate_core_cards/20160804112510_reorganize_scripts.rb +1 -1
- data/db/migrate_core_cards/20160811115836_rename_stats_to_admin.rb +1 -0
- data/db/migrate_core_cards/20160914132636_fix_mod_files.rb +2 -0
- data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +6 -6
- data/db/migrate_core_cards/20161103154836_update_keys.rb +2 -1
- data/db/migrate_core_cards/20170209132834_email_test_context.rb +2 -0
- data/db/migrate_core_cards/20170314175313_add_notification_event_card.rb +3 -3
- data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +1 -1
- data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +1 -1
- data/db/migrate_core_cards/20180712042655_head_rule.rb +3 -4
- data/db/migrate_core_cards/20180905061537_migrate_layouts.rb +4 -4
- data/db/migrate_core_cards/20181120200937_update_layout.rb +1 -1
- data/db/migrate_core_cards/20190320091257_upgrade_recaptcha_to_v3.rb +7 -7
- data/db/migrate_core_cards/20190424100531_update_credit_image.rb +1 -0
- data/db/migrate_core_cards/20190502130029_add_shark_and_help_desk_role.rb +15 -14
- data/db/migrate_core_cards/20190503122739_update_pristine_data.rb +1 -1
- data/db/migrate_core_cards/20190625153616_pointer_overhaul.rb +9 -5
- data/db/migrate_core_cards/20190718140126_add_guides.rb +3 -3
- data/db/migrate_core_cards/20190822093633_move_help_text_to_code.rb +1 -2
- data/db/migrate_core_cards/20190823220018_cleanup_for_decko_1_0.rb +1 -1
- data/db/migrate_core_cards/20190829093961_cardtype_grouping.rb +7 -7
- data/db/migrate_core_cards/20190902193208_input_type.rb +1 -3
- data/db/migrate_core_cards/20190909104250_add_cardtype_input_types.rb +2 -2
- data/db/migrate_core_cards/20191028135243_add_link_editor_to_tiny_mce_config.rb +1 -0
- data/db/migrate_core_cards/20191115160748_history_cleanup.rb +0 -1
- data/db/migrate_core_cards/20191118145629_codename_fixes.rb +1 -2
- data/db/migrate_core_cards/20200821231558_add_nest_list_type.rb +1 -1
- data/db/seed/new/card_actions.yml +2153 -2145
- data/db/seed/new/card_acts.yml +3 -3
- data/db/seed/new/card_references.yml +900 -858
- data/db/seed/new/cards.yml +4869 -4848
- data/db/seed/new/schema_migrations_deck_cards.yml +2 -0
- data/db/seed/test/fixtures/card_actions.yml +3563 -3547
- data/db/seed/test/fixtures/card_acts.yml +675 -675
- data/db/seed/test/fixtures/card_changes.yml +103 -103
- data/db/seed/test/fixtures/card_references.yml +2165 -2123
- data/db/seed/test/fixtures/cards.yml +7862 -7751
- data/db/seed/test/fixtures/schema_migrations_deck_cards.yml +2 -0
- data/db/test_seed.rb +33 -34
- data/lib/card.rb +1 -0
- data/lib/card/auth/token.rb +2 -2
- data/lib/card/cache.rb +2 -1
- data/lib/card/cache/all.rb +5 -0
- data/lib/card/cache/card_class.rb +3 -0
- data/lib/card/codename.rb +1 -1
- data/lib/card/content.rb +4 -8
- data/lib/card/content/chunk.rb +1 -1
- data/lib/card/content/clean.rb +4 -3
- data/lib/card/content/diff.rb +3 -2
- data/lib/card/content/diff/l_c_s/processor.rb +1 -1
- data/lib/card/content/diff/result.rb +1 -0
- data/lib/card/content/parser.rb +2 -2
- data/lib/card/content/truncate.rb +6 -6
- data/lib/card/director.rb +1 -1
- data/lib/card/director/all.rb +2 -2
- data/lib/card/director/card_methods.rb +1 -0
- data/lib/card/director/event_delay.rb +4 -6
- data/lib/card/director/run.rb +2 -0
- data/lib/card/director/stages.rb +3 -2
- data/lib/card/env/location.rb +4 -3
- data/lib/card/fetch.rb +7 -4
- data/lib/card/fetch/all.rb +1 -0
- data/lib/card/fetch/card_class.rb +35 -27
- data/lib/card/fetch/results.rb +9 -0
- data/lib/card/fetch/retrieve.rb +2 -0
- data/lib/card/fetch/store.rb +1 -0
- data/lib/card/format/content.rb +1 -3
- data/lib/card/format/error.rb +6 -1
- data/lib/card/format/method_delegation.rb +10 -2
- data/lib/card/format/nest.rb +2 -1
- data/lib/card/format/nest/fetch.rb +2 -0
- data/lib/card/format/nesting/mode.rb +1 -1
- data/lib/card/format/nesting/subformat.rb +2 -1
- data/lib/card/format/render.rb +2 -2
- data/lib/card/format/wrapper.rb +1 -1
- data/lib/card/lexicon.rb +3 -2
- data/lib/card/mark.rb +17 -15
- data/lib/card/model/save_helper.rb +3 -3
- data/lib/card/name.rb +10 -9
- data/lib/card/name/all.rb +3 -0
- data/lib/card/name/all/descendants.rb +3 -4
- data/lib/card/name/card_class.rb +2 -0
- data/lib/card/name/fields_and_traits.rb +4 -2
- data/lib/card/name/name_variants.rb +0 -1
- data/lib/card/query.rb +17 -17
- data/lib/card/query/card_query/interpretation.rb +1 -0
- data/lib/card/query/card_query/match_attributes.rb +2 -1
- data/lib/card/query/card_query/normalization.rb +1 -0
- data/lib/card/query/card_query/reference_attributes.rb +1 -1
- data/lib/card/query/join.rb +1 -1
- data/lib/card/query/value/match_value.rb +1 -0
- data/lib/card/reference/all.rb +7 -2
- data/lib/card/rule/all.rb +1 -0
- data/lib/card/rule/cache.rb +2 -0
- data/lib/card/set/advanced_api.rb +3 -2
- data/lib/card/set/event.rb +2 -2
- data/lib/card/set/event/all.rb +6 -0
- data/lib/card/set/event/delayed_event.rb +6 -6
- data/lib/card/set/event/options.rb +1 -0
- data/lib/card/set/format/abstract_format/view_definition.rb +1 -0
- data/lib/card/set/format/abstract_format/view_opts.rb +1 -0
- data/lib/card/set/i18n_scope.rb +4 -2
- data/lib/card/set/inheritance.rb +0 -1
- data/lib/card/set/loader.rb +0 -2
- data/lib/card/set/pattern/base.rb +3 -2
- data/lib/card/set/pattern/class_methods.rb +2 -2
- data/lib/card/set/required_field.rb +4 -1
- data/lib/card/setting.rb +3 -0
- data/lib/card/subcards.rb +3 -4
- data/lib/card/tasks/card/file_card_creator/abstract_file_card/ruby_file.rb +1 -1
- data/lib/card/tasks/card/file_card_creator/output_helper.rb +2 -4
- data/lib/card/tasks/card/migrate.rake +2 -2
- data/lib/card/view/cache.rb +6 -8
- data/lib/card/view/cache/cache_action.rb +1 -2
- data/lib/card/view/cache/stub.rb +1 -1
- data/lib/card/view/options.rb +3 -3
- data/lib/card/view/permission.rb +1 -0
- data/lib/cardio.rb +1 -1
- data/lib/cardio/migration.rb +1 -1
- data/lib/cardio/migration/deck_structure.rb +2 -4
- data/lib/cardio/migration/import.rb +2 -2
- data/lib/cardio/migration/import/import_data.rb +1 -0
- data/lib/cardio/mod.rb +1 -0
- data/lib/cardio/mod/load_strategy.rb +2 -4
- data/lib/cardio/mod/loader/set_loader.rb +2 -1
- data/lib/cardio/mod/module_template.rb +1 -0
- data/lib/cardio/modfiles.rb +2 -4
- data/lib/cardio/schema.rb +2 -4
- data/lib/cardio/utils.rb +1 -0
- data/lib/generators/card/format/format_generator.rb +1 -1
- data/lib/generators/card/migration/migration_generator.rb +2 -1
- data/lib/generators/card/mod/mod_generator.rb +3 -2
- data/lib/generators/card/set/set_generator.rb +3 -3
- data/lib/generators/card/template/template_generator.rb +1 -1
- data/mod/admin/set/self/admin.rb +6 -3
- data/mod/admin/set/self/trash.rb +1 -0
- data/mod/admin/spec/set/self/admin_spec.rb +4 -4
- data/mod/core/set/all/abort.rb +5 -5
- data/mod/core/set/all/assign_attributes.rb +5 -8
- data/mod/core/set/all/codename.rb +1 -0
- data/mod/core/set/all/collection.rb +4 -6
- data/mod/core/set/all/content.rb +3 -2
- data/mod/core/set/all/contextual_content.rb +2 -4
- data/mod/core/set/all/name_events.rb +13 -6
- data/mod/core/set/all/reference_events.rb +2 -0
- data/mod/core/set/all/states.rb +3 -3
- data/mod/core/set/all/subcards.rb +1 -1
- data/mod/core/set/all/trash.rb +5 -1
- data/mod/core/set/all/type.rb +4 -2
- data/mod/core/set/all/utils.rb +1 -1
- data/mod/core/spec/set/all/assign_attributes_spec.rb +10 -9
- data/mod/core/spec/set/all/clean_me_spec.rb +19 -4
- data/mod/core/spec/set/all/collection_spec.rb +1 -1
- data/mod/core/spec/set/all/export_spec.rb +1 -0
- data/mod/core/spec/set/all/initialize_spec.rb +11 -11
- metadata +4 -4
data/lib/card/director.rb
CHANGED
data/lib/card/director/all.rb
CHANGED
@@ -8,11 +8,11 @@ class Card
|
|
8
8
|
# effect that params changes in the CardController get lost
|
9
9
|
# (a crucial example are success params that are processed in
|
10
10
|
# CardController#soft_redirect)
|
11
|
-
def contextualize_delayed_event act_id, card, env, auth
|
11
|
+
def contextualize_delayed_event act_id, card, env, auth, &block
|
12
12
|
return yield unless delaying?
|
13
13
|
|
14
14
|
with_env_and_auth env, auth do
|
15
|
-
with_delay_act(act_id, card)
|
15
|
+
with_delay_act(act_id, card, &block)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -32,11 +32,9 @@ class Card
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
def with_env_and_auth env, auth
|
35
|
+
def with_env_and_auth env, auth, &block
|
36
36
|
Card::Auth.with auth do
|
37
|
-
Card::Env.with env
|
38
|
-
yield
|
39
|
-
end
|
37
|
+
Card::Env.with env, &block
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
data/lib/card/director/run.rb
CHANGED
@@ -40,6 +40,7 @@ class Card
|
|
40
40
|
@stage ||= -1
|
41
41
|
return false if in_or_after?(next_stage) || ahead_of_parent?(next_stage)
|
42
42
|
return false unless valid_card? next_stage
|
43
|
+
|
43
44
|
check_skipped_stage next_stage
|
44
45
|
true
|
45
46
|
end
|
@@ -50,6 +51,7 @@ class Card
|
|
50
51
|
|
51
52
|
def check_skipped_stage stage
|
52
53
|
return unless before? previous_stage_index(stage)
|
54
|
+
|
53
55
|
raise Card::Error, "stage #{previous_stage_symbol stage} was " \
|
54
56
|
"skipped for card #{@card}"
|
55
57
|
end
|
data/lib/card/director/stages.rb
CHANGED
@@ -22,9 +22,9 @@ class Card
|
|
22
22
|
|
23
23
|
def stage_index stage
|
24
24
|
case stage
|
25
|
-
when Symbol
|
25
|
+
when Symbol
|
26
26
|
STAGE_INDEX[stage]
|
27
|
-
when Integer
|
27
|
+
when Integer
|
28
28
|
stage
|
29
29
|
else
|
30
30
|
raise Card::Error, "not a valid stage: #{stage}"
|
@@ -33,6 +33,7 @@ class Card
|
|
33
33
|
|
34
34
|
def stage_ok? opts
|
35
35
|
return false unless stage
|
36
|
+
|
36
37
|
test = %i[during before after].find { |t| opts[t] }
|
37
38
|
test ? send("#{test}?", opts[t]) : true
|
38
39
|
end
|
data/lib/card/env/location.rb
CHANGED
@@ -9,7 +9,7 @@ class Card
|
|
9
9
|
Rails.logger.warn "Pass only strings to card_path. "\
|
10
10
|
"(#{rel_path} = #{rel_path.class})"
|
11
11
|
end
|
12
|
-
if rel_path
|
12
|
+
if rel_path.match? %r{^(https?:)?/}
|
13
13
|
rel_path
|
14
14
|
else
|
15
15
|
"#{Card.config.relative_url_root}/#{rel_path}"
|
@@ -17,7 +17,7 @@ class Card
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def card_url rel
|
20
|
-
rel
|
20
|
+
rel.match?(/^https?:/) ? rel : "#{protocol_and_host}#{card_path rel}"
|
21
21
|
end
|
22
22
|
|
23
23
|
def protocol_and_host
|
@@ -26,6 +26,7 @@ class Card
|
|
26
26
|
|
27
27
|
def cardname_from_url url
|
28
28
|
return unless (cardname = cardname_from_url_regexp)
|
29
|
+
|
29
30
|
m = url.match cardname
|
30
31
|
m ? Card::Name[m[:mark]] : nil
|
31
32
|
end
|
@@ -35,7 +36,7 @@ class Card
|
|
35
36
|
def cardname_from_url_regexp
|
36
37
|
return unless Env[:host]
|
37
38
|
|
38
|
-
%r{#{Regexp.escape Env[:host]}/(?<mark>[
|
39
|
+
%r{#{Regexp.escape Env[:host]}/(?<mark>[^?]+)}
|
39
40
|
end
|
40
41
|
|
41
42
|
extend Location # allows calls on Location constant, eg Location.card_url
|
data/lib/card/fetch.rb
CHANGED
@@ -10,7 +10,6 @@ class Card
|
|
10
10
|
# see arg options in all/fetch
|
11
11
|
def initialize *args
|
12
12
|
normalize_args args
|
13
|
-
absolutize_mark
|
14
13
|
validate_opts!
|
15
14
|
end
|
16
15
|
|
@@ -31,15 +30,19 @@ class Card
|
|
31
30
|
def normalize_args args
|
32
31
|
@opts = args.last.is_a?(Hash) ? args.pop : {}
|
33
32
|
@mark = Card.id_or_name args
|
33
|
+
normalize_mark
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
return unless mark.name?
|
38
|
-
|
36
|
+
def normalize_mark
|
37
|
+
return unless mark.name?
|
38
|
+
|
39
|
+
supercard = opts.dig :new, :supercard
|
40
|
+
@mark = mark.absolute_name supercard.name if supercard
|
39
41
|
end
|
40
42
|
|
41
43
|
def validate_opts!
|
42
44
|
return unless opts[:new] && opts[:skip_virtual]
|
45
|
+
|
43
46
|
raise Card::Error, "fetch called with new args and skip_virtual"
|
44
47
|
end
|
45
48
|
|
data/lib/card/fetch/all.rb
CHANGED
@@ -11,12 +11,14 @@ class Card
|
|
11
11
|
# * virtual cards
|
12
12
|
#
|
13
13
|
# @param args [Integer, String, Card::Name, Symbol, Array]
|
14
|
-
# one or more
|
15
|
-
# 1. a
|
16
|
-
# 2. a
|
17
|
-
#
|
14
|
+
# Initials args must be one or more "marks," which uniquely idenfify cards:
|
15
|
+
# 1. a name/key. (String or Card::Name)
|
16
|
+
# 2. a numeric id. Can be (a) an Integer or (b) a String with an integer
|
17
|
+
# prefixed with a tilde, eg "~1234"
|
18
|
+
# 3. a codename. Can be (a) a Symbol or (b) a String with a colon prefix,
|
19
|
+
# eg :mycodename
|
18
20
|
# If you pass more then one mark or an array of marks they get joined with a '+'.
|
19
|
-
# The final argument can be a
|
21
|
+
# The final argument can be a Hash to set the following options
|
20
22
|
# :skip_virtual Real cards only
|
21
23
|
# :skip_modules Don't load Set modules
|
22
24
|
# :look_in_trash Return trashed card objects
|
@@ -24,9 +26,10 @@ class Card
|
|
24
26
|
# new: { opts for Card#new } Return a new card when not found
|
25
27
|
# @return [Card]
|
26
28
|
def fetch *args
|
27
|
-
Card::Fetch.new(*args)
|
29
|
+
f = Card::Fetch.new(*args)
|
30
|
+
f.retrieve_or_new
|
28
31
|
rescue ActiveModel::RangeError => _e
|
29
|
-
|
32
|
+
Card.new name: "card id out of range: #{f.mark}"
|
30
33
|
end
|
31
34
|
|
32
35
|
# fetch only real (no virtual) cards
|
@@ -83,8 +86,8 @@ class Card
|
|
83
86
|
elsif block_given?
|
84
87
|
yield.to_name
|
85
88
|
end
|
86
|
-
rescue =>
|
87
|
-
rescue_fetch_name
|
89
|
+
rescue StandardError => e
|
90
|
+
rescue_fetch_name e, &block
|
88
91
|
end
|
89
92
|
|
90
93
|
# @param mark - see #fetch
|
@@ -93,38 +96,43 @@ class Card
|
|
93
96
|
fetch(*mark, skip_modules: true)&.type_id
|
94
97
|
end
|
95
98
|
|
96
|
-
#
|
97
|
-
#
|
98
|
-
|
99
|
-
|
100
|
-
|
99
|
+
# Specialized fetching appropriate for cards requested by URI
|
100
|
+
# @param params [Hash] hash in the style of parameters expected by Decko
|
101
|
+
# @option params [Hash] :card arguments for Card.new
|
102
|
+
# @option params [String] :mark.
|
103
|
+
# @option params [String] :type shortcut for card[:type]
|
104
|
+
# @option params [True/False] :look_in_trash - passed to Card.fetch
|
105
|
+
# @option params [True/False] :assign - override attributes of fetched card with
|
106
|
+
# card hash
|
107
|
+
def uri_fetch params
|
108
|
+
card_opts = uri_fetch_opts params
|
109
|
+
if params[:action] == "create"
|
101
110
|
# FIXME: we currently need a "new" card to catch duplicates
|
102
111
|
# (otherwise save will just act like a normal update)
|
103
112
|
# We may need a "#create" instance method to handle this checking?
|
104
113
|
Card.new card_opts
|
105
114
|
else
|
106
|
-
|
115
|
+
standard_uri_fetch params, card_opts
|
107
116
|
end
|
108
117
|
end
|
109
118
|
|
110
119
|
private
|
111
120
|
|
112
|
-
def
|
113
|
-
mark =
|
114
|
-
card =
|
115
|
-
|
116
|
-
|
117
|
-
card.assign_attributes card_opts if
|
121
|
+
def standard_uri_fetch params, card_opts
|
122
|
+
mark = params[:mark] || card_opts[:name]
|
123
|
+
card = fetch mark, new: card_opts,
|
124
|
+
skip_modules: true,
|
125
|
+
look_in_trash: params[:look_in_trash]
|
126
|
+
card.assign_attributes card_opts if params[:assign] && card&.real?
|
118
127
|
card&.include_set_modules
|
119
128
|
card
|
120
129
|
end
|
121
130
|
|
122
|
-
def
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
opts
|
131
|
+
def uri_fetch_opts params
|
132
|
+
Env.hash(params[:card]).tap do |opts|
|
133
|
+
opts[:type] ||= params[:type] if params[:type] # for /new/:type shortcut.
|
134
|
+
opts[:name] ||= Name[params[:mark]]&.tr "_", " "
|
135
|
+
end
|
128
136
|
end
|
129
137
|
|
130
138
|
def rescue_fetch_name error, &block
|
data/lib/card/fetch/results.rb
CHANGED
@@ -4,6 +4,7 @@ class Card
|
|
4
4
|
module Results
|
5
5
|
def results
|
6
6
|
return if card.nil?
|
7
|
+
|
7
8
|
card.new_card? ? new_result_card : finalize_result_card
|
8
9
|
end
|
9
10
|
|
@@ -34,6 +35,7 @@ class Card
|
|
34
35
|
|
35
36
|
def renew
|
36
37
|
return if new_opts.blank?
|
38
|
+
|
37
39
|
# Rails.logger.info "renewing: #{mark}, #{new_opts}"
|
38
40
|
@card = card.dup
|
39
41
|
@card.newish newish_opts
|
@@ -59,6 +61,7 @@ class Card
|
|
59
61
|
|
60
62
|
def update_supercard
|
61
63
|
return unless (sc = new_opts[:supercard])
|
64
|
+
|
62
65
|
@card.supercard = sc
|
63
66
|
@card.update_superleft @card.name
|
64
67
|
end
|
@@ -67,6 +70,7 @@ class Card
|
|
67
70
|
return true if new_opts.blank?
|
68
71
|
return false if type_change? || name_change?
|
69
72
|
return false if fancy_renew?
|
73
|
+
|
70
74
|
quick_content
|
71
75
|
true
|
72
76
|
end
|
@@ -84,19 +88,23 @@ class Card
|
|
84
88
|
|
85
89
|
def quick_content
|
86
90
|
return unless (content = assignable_content(new_opts[:default_content]))
|
91
|
+
|
87
92
|
@card.content = content
|
88
93
|
end
|
89
94
|
|
90
95
|
def name_change?
|
91
96
|
return false unless (new_name = new_opts[:name]&.to_name)
|
92
97
|
return false if new_name.relative? && mark.name? && mark.absolute?
|
98
|
+
|
93
99
|
new_name.to_s != @card.name.to_s
|
94
100
|
end
|
95
101
|
|
96
102
|
def type_change?
|
97
103
|
return true if @card.type_id.nil?
|
104
|
+
|
98
105
|
type_id = type_id_from_new_opts
|
99
106
|
return true if !type_id && supercard_might_change_type?
|
107
|
+
|
100
108
|
type_id && (type_id != @card.type_id)
|
101
109
|
end
|
102
110
|
|
@@ -118,6 +126,7 @@ class Card
|
|
118
126
|
def assign_name_from_mark
|
119
127
|
return if opts[:local_only]
|
120
128
|
return unless mark&.to_s != card.name
|
129
|
+
|
121
130
|
card.name = mark.to_s
|
122
131
|
end
|
123
132
|
end
|
data/lib/card/fetch/retrieve.rb
CHANGED
@@ -5,6 +5,7 @@ class Card
|
|
5
5
|
# look for card in cache. if that doesn't work, look in database
|
6
6
|
def retrieve_existing
|
7
7
|
return unless mark.present?
|
8
|
+
|
8
9
|
retrieve_from_cache || retrieve_from_db
|
9
10
|
end
|
10
11
|
|
@@ -26,6 +27,7 @@ class Card
|
|
26
27
|
|
27
28
|
def retrieval_from_db_query
|
28
29
|
return unless (query = retrieval_from_db_query_base)
|
30
|
+
|
29
31
|
query[:trash] = false unless look_in_trash?
|
30
32
|
query
|
31
33
|
end
|
data/lib/card/fetch/store.rb
CHANGED
@@ -20,6 +20,7 @@ class Card
|
|
20
20
|
# instantiate a card as a cache placeholder
|
21
21
|
def new_for_cache
|
22
22
|
return unless new_for_cache?
|
23
|
+
|
23
24
|
args = { name: mark, skip_modules: true }
|
24
25
|
args[:type_lookup] = :skip if skip_type_lookup?
|
25
26
|
args.merge! new_opts.slice(:type, :type_id, :type_code) if eager_caching?
|
data/lib/card/format/content.rb
CHANGED
@@ -2,7 +2,7 @@ class Card
|
|
2
2
|
class Format
|
3
3
|
module Content
|
4
4
|
def process_content override_content=nil, content_opts=nil, &block
|
5
|
-
content_obj = content_object override_content
|
5
|
+
content_obj = content_object override_content, content_opts
|
6
6
|
content_obj.process_chunks(&block)
|
7
7
|
content_obj.to_s
|
8
8
|
end
|
@@ -82,8 +82,6 @@ class Card
|
|
82
82
|
content ||= render_raw || ""
|
83
83
|
Card::Content.new content, self, content_opts
|
84
84
|
end
|
85
|
-
|
86
|
-
|
87
85
|
end
|
88
86
|
end
|
89
87
|
end
|
data/lib/card/format/error.rb
CHANGED
@@ -8,6 +8,7 @@ class Card
|
|
8
8
|
|
9
9
|
def anyone_can? task
|
10
10
|
return false unless task.is_a? Symbol
|
11
|
+
|
11
12
|
@anyone_can ||= {}
|
12
13
|
@anyone_can[task] = card.anyone_can? task if @anyone_can[task].nil?
|
13
14
|
@anyone_can[task]
|
@@ -29,7 +30,11 @@ class Card
|
|
29
30
|
end
|
30
31
|
|
31
32
|
def monitor_depth
|
32
|
-
|
33
|
+
if depth >= Card.config.max_depth
|
34
|
+
raise Card::Error::UserError,
|
35
|
+
t(:format_too_deep)
|
36
|
+
end
|
37
|
+
|
33
38
|
yield
|
34
39
|
end
|
35
40
|
|
@@ -46,12 +46,20 @@ class Card
|
|
46
46
|
|
47
47
|
def render_args underscore, bang, opts
|
48
48
|
# opts is a list; args is a hash. we're using various inputs to build the hash
|
49
|
-
|
50
|
-
args[:optional] =
|
49
|
+
interpret_render_opts opts do |args|
|
50
|
+
args[:optional] = optional_render_opt opts, args unless bang
|
51
51
|
args[:skip_perms] = true if underscore
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
def interpret_render_opts opts, &block
|
56
|
+
(opts[0] ? opts.shift.clone : {}).tap(&block)
|
57
|
+
end
|
58
|
+
|
59
|
+
def optional_render_opt opts, args
|
60
|
+
opts.shift || args[:optional] || :show
|
61
|
+
end
|
62
|
+
|
55
63
|
def new_action_view
|
56
64
|
CardActionView.new(controller).tap do |t|
|
57
65
|
t.extend CardController._helpers
|
data/lib/card/format/nest.rb
CHANGED
@@ -5,13 +5,14 @@ class Card
|
|
5
5
|
include Nest::Fetch
|
6
6
|
|
7
7
|
attr_accessor :format, :card, :view, :view_opts, :format_opts
|
8
|
+
|
8
9
|
def initialize format, cardish, view_opts={}, format_opts={}
|
9
10
|
@format = format
|
10
11
|
@view_opts = view_opts
|
11
12
|
@format_opts = format_opts.clone
|
12
13
|
@override = @format_opts.delete(:override) != false
|
13
14
|
@card ||= fetch_card cardish
|
14
|
-
#
|
15
|
+
# NOTE: fetch_card can alter view and view_opts[:nest_name]
|
15
16
|
end
|
16
17
|
|
17
18
|
def prepare
|