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
@@ -6,7 +6,7 @@ class AddCardVirtualsTable < ActiveRecord::Migration[4.2]
|
|
6
6
|
create_table :card_virtuals do |t|
|
7
7
|
t.integer :left_id
|
8
8
|
t.integer :right_id
|
9
|
-
t.text :content, limit:
|
9
|
+
t.text :content, limit: 16_777_215
|
10
10
|
end
|
11
11
|
|
12
12
|
add_index :card_virtuals, :right_id, name: "left_id_index"
|
@@ -37,7 +37,7 @@ class RailsInflectionUpdates < Cardio::Migration::Core
|
|
37
37
|
# plural, wrong singular, correct singular
|
38
38
|
word(['(\w+)lice', '(\w+)louse', '\1lice']),
|
39
39
|
word(['(\w+)mice', '(\w+)mouse', '\1mice']),
|
40
|
-
word_end(%w
|
40
|
+
word_end(%w[kine cow kine]),
|
41
41
|
word(keep_the_s("analysi")),
|
42
42
|
word(keep_the_s("axi"))
|
43
43
|
]
|
@@ -51,6 +51,7 @@ class RailsInflectionUpdates < Cardio::Migration::Core
|
|
51
51
|
|
52
52
|
card_names.reject! do |name| # change a name only once
|
53
53
|
next unless name =~ plural
|
54
|
+
|
54
55
|
# can't use fetch, because it uses the wrong key
|
55
56
|
# find_by_name is case-insensitve and finds the wrong cards for camel case names
|
56
57
|
card = Card.where(name: name).find { |card| card.name == name }
|
@@ -3,15 +3,15 @@
|
|
3
3
|
class RenamingForMenu < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
renames = {
|
6
|
-
"*content"
|
7
|
-
"*edit help"
|
8
|
-
"*links"
|
6
|
+
"*content" => "*structure",
|
7
|
+
"*edit help" => "*help",
|
8
|
+
"*links" => "*links to",
|
9
9
|
"*inclusions" => "*includes",
|
10
|
-
"*linkers"
|
11
|
-
"*includers"
|
10
|
+
"*linkers" => "*linked to by",
|
11
|
+
"*includers" => "*included by",
|
12
12
|
"*plus cards" => "*children",
|
13
13
|
"*plus parts" => "*mates",
|
14
|
-
"*editing"
|
14
|
+
"*editing" => "*edited"
|
15
15
|
}
|
16
16
|
renames.each do |oldname, newname|
|
17
17
|
puts "updating: #{oldname}"
|
@@ -21,7 +21,7 @@ class RenamingForMenu < Cardio::Migration::Core
|
|
21
21
|
c.save!
|
22
22
|
end
|
23
23
|
|
24
|
-
codenames = %w
|
24
|
+
codenames = %w[
|
25
25
|
by_name
|
26
26
|
by_update
|
27
27
|
by_create
|
@@ -37,9 +37,9 @@ class RenamingForMenu < Cardio::Migration::Core
|
|
37
37
|
discussion
|
38
38
|
created
|
39
39
|
edited
|
40
|
-
|
40
|
+
]
|
41
41
|
codenames.each do |codename|
|
42
|
-
name = codename =~ /^by|disc/ ? codename : "
|
42
|
+
name = codename =~ /^by|disc/ ? codename : "*#{codename}"
|
43
43
|
c = Card[name]
|
44
44
|
c.codename = codename
|
45
45
|
c.save!
|
@@ -3,10 +3,11 @@
|
|
3
3
|
class ImportHelpText < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
dir = data_path "1.11_help_text.json"
|
6
|
-
data = JSON.parse(File.read
|
6
|
+
data = JSON.parse(File.read(dir))
|
7
7
|
data.each do |atom|
|
8
8
|
c = atom["card"]
|
9
|
-
Card.merge c["name"], { type: c["type"], content: atom["views"][0]["parts"] },
|
9
|
+
Card.merge c["name"], { type: c["type"], content: atom["views"][0]["parts"] },
|
10
|
+
pristine: true
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
@@ -26,8 +26,8 @@ class AddStyleCards < Cardio::Migration::Core
|
|
26
26
|
|
27
27
|
# PERMISSIONS FOR CSS AND SCSS TYPES
|
28
28
|
|
29
|
-
%w
|
30
|
-
[
|
29
|
+
%w[CSS SCSS Skin].each do |type|
|
30
|
+
%i[create update delete].each do |action|
|
31
31
|
Card.create! name: "#{type}+#{Card[:type].name}+#{Card[action].name}",
|
32
32
|
content: "[[#{Card[:administrator].name}]]"
|
33
33
|
end
|
@@ -53,10 +53,10 @@ class AddStyleCards < Cardio::Migration::Core
|
|
53
53
|
|
54
54
|
simple_styles = []
|
55
55
|
classic_styles = []
|
56
|
-
%w
|
56
|
+
%w[
|
57
57
|
jquery-ui-smoothness.css functional.scss standard.scss right_sidebar.scss
|
58
58
|
common.scss classic_cards.scss traditional.scss
|
59
|
-
|
59
|
+
].each_with_index do |sheet, index|
|
60
60
|
name, type = sheet.split "."
|
61
61
|
name.tr! "_", " "
|
62
62
|
index < 5 ? simple_styles << name : classic_styles << name
|
@@ -90,7 +90,7 @@ class AddStyleCards < Cardio::Migration::Core
|
|
90
90
|
begin
|
91
91
|
Card.create! name: "#{Card[:all].name}+*style",
|
92
92
|
content: "[[#{default_skin}]]"
|
93
|
-
rescue
|
93
|
+
rescue StandardError
|
94
94
|
if default_skin =~ /customized/
|
95
95
|
all_style = Card["#{Card[:all].name}+*style"]
|
96
96
|
all_style.update content: "[[classic skin]]"
|
@@ -3,8 +3,9 @@
|
|
3
3
|
class MoveStylesToContent < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
dir = File.join data_path, "1.12_stylesheets"
|
6
|
-
%w
|
7
|
-
Card["style: #{sheetname}"].update! codename: nil,
|
6
|
+
%w[right_sidebar common classic_cards traditional].each do |sheetname|
|
7
|
+
Card["style: #{sheetname}"].update! codename: nil,
|
8
|
+
content: File.read("#{dir}/#{sheetname}.scss")
|
8
9
|
end
|
9
10
|
end
|
10
11
|
end
|
@@ -3,11 +3,9 @@
|
|
3
3
|
class UpdateStylesheets < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
dir = File.join data_path, "1.12_stylesheets"
|
6
|
-
%w
|
6
|
+
%w[common traditional].each do |sheetname|
|
7
7
|
card = Card["style: #{sheetname}"]
|
8
|
-
|
9
|
-
card.update! content: File.read("#{dir}/#{sheetname}.scss")
|
10
|
-
end
|
8
|
+
card.update! content: File.read("#{dir}/#{sheetname}.scss") if card&.pristine?
|
11
9
|
end
|
12
10
|
|
13
11
|
if (c = Card["*all+*style+file"])
|
@@ -4,8 +4,6 @@ class CommonCssPatch < Cardio::Migration::Core
|
|
4
4
|
def up
|
5
5
|
dir = File.join data_path, "1.12_stylesheets"
|
6
6
|
card = Card["style: common"]
|
7
|
-
|
8
|
-
card.update! content: File.read("#{dir}/common.scss")
|
9
|
-
end
|
7
|
+
card.update! content: File.read("#{dir}/common.scss") if card&.pristine?
|
10
8
|
end
|
11
9
|
end
|
@@ -6,12 +6,12 @@ end
|
|
6
6
|
class UserDataToCards < Cardio::Migration::Core
|
7
7
|
def up
|
8
8
|
puts "adding new codename cards"
|
9
|
-
[
|
9
|
+
%i[password token salt status signin stats].each do |codename|
|
10
10
|
Card.create! name: "*#{codename}", codename: codename
|
11
11
|
end
|
12
12
|
|
13
13
|
puts "setting read permissions for account cards (Administrator)"
|
14
|
-
[
|
14
|
+
%i[password token salt status email account].each do |codename|
|
15
15
|
rule_name = [codename, :right, :read].map { |code| Card[code].name } * "+"
|
16
16
|
rule_card = Card.fetch rule_name, new: {}
|
17
17
|
rule_card.content = "[[Administrator]]"
|
@@ -19,20 +19,22 @@ class UserDataToCards < Cardio::Migration::Core
|
|
19
19
|
end
|
20
20
|
|
21
21
|
puts "making email and password fields default to Phrase cards"
|
22
|
-
[
|
22
|
+
%i[email password].each do |field|
|
23
23
|
rulename = [field, :right, :default].map { |code| Card[code].name } * "+"
|
24
24
|
Card.create! name: rulename, type_id: Card::PhraseID
|
25
25
|
end
|
26
26
|
|
27
27
|
puts "signin permissions"
|
28
|
-
[
|
28
|
+
%i[read update].each do |setting|
|
29
29
|
rulename = [:signin, :self, setting].map { |code| Card[code].name } * "+"
|
30
30
|
Card.create! name: rulename, content: "[[#{Card[:anyone].name}]]"
|
31
31
|
end
|
32
32
|
|
33
33
|
puts "supporting legacy handling of +*email on User cards"
|
34
|
-
oldname = [
|
35
|
-
newname = [
|
34
|
+
oldname = %i[email right structure].map { |code| Card[code].name } * "+"
|
35
|
+
newname = %i[user email type_plus_right structure].map do |code|
|
36
|
+
Card[code].name
|
37
|
+
end * "+"
|
36
38
|
Card[oldname].update! name: newname
|
37
39
|
|
38
40
|
puts "importing all user details (for those not in trash) into +*account attributes"
|
@@ -40,15 +42,17 @@ class UserDataToCards < Cardio::Migration::Core
|
|
40
42
|
User.all.each do |user|
|
41
43
|
base = Card[user.card_id]
|
42
44
|
next unless base && !base.trash
|
45
|
+
|
43
46
|
puts "~ importing details for #{base.name}"
|
44
47
|
date_args = { created_at: user.created_at, updated_at: user.updated_at }
|
45
|
-
[
|
48
|
+
%i[email salt password status].each do |field|
|
46
49
|
cardname = "#{base.name}+#{Card[:account].name}+#{Card[field].name}"
|
47
50
|
user_field = (field == :password ? :crypted_password : field)
|
48
51
|
next unless (content = user.send(user_field))
|
52
|
+
|
49
53
|
begin
|
50
54
|
Card.create! date_args.merge(name: cardname, content: content)
|
51
|
-
rescue => e
|
55
|
+
rescue StandardError => e
|
52
56
|
puts "error importing #{cardname}: #{e.message}"
|
53
57
|
end
|
54
58
|
end
|
@@ -27,12 +27,10 @@ class AccountRequestsToSignups < Cardio::Migration::Core
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# get rid of old signup card unless there is other data there (most likely +*subject and +*message)
|
30
|
-
unless Card.search(return: :id, left_id: old_signup.id).first
|
31
|
-
old_signup.delete!
|
32
|
-
end
|
30
|
+
old_signup.delete! unless Card.search(return: :id, left_id: old_signup.id).first
|
33
31
|
|
34
32
|
# turn captcha off by default on signup
|
35
|
-
rulename = [
|
33
|
+
rulename = %i[signup type captcha].map { |code| Card[code].name } * "+"
|
36
34
|
captcha_rule = Card.fetch rulename, new: {}
|
37
35
|
captcha_rule.content = "0"
|
38
36
|
captcha_rule.save!
|
@@ -37,8 +37,8 @@ class AddScriptCards < Cardio::Migration::Core
|
|
37
37
|
|
38
38
|
# Permissions for JavaScript and CoffeeScript types
|
39
39
|
# ( the same as for CSS and SCSS)
|
40
|
-
%w
|
41
|
-
[
|
40
|
+
%w[JavaScript CoffeeScript].each do |type|
|
41
|
+
%i[create update delete].each do |action|
|
42
42
|
Card.gimme!("#{type}+#{Card[:type].name}+#{Card[action].name}",
|
43
43
|
content: "[[#{Card[:administrator].name}]]")
|
44
44
|
end
|
@@ -48,8 +48,10 @@ class AddScriptCards < Cardio::Migration::Core
|
|
48
48
|
Card.create! name: "*script", codename: :script, type_id: Card::SettingID
|
49
49
|
script_set = "*script+#{Card[:right].name}"
|
50
50
|
Card.create! name: "#{script_set}+#{Card[:default].name}", type_id: Card::PointerID
|
51
|
-
Card.create! name: "#{script_set}+#{Card[:read].name}",
|
52
|
-
|
51
|
+
Card.create! name: "#{script_set}+#{Card[:read].name}",
|
52
|
+
content: "[[#{Card[:anyone].name}]]"
|
53
|
+
Card.create! name: "#{script_set}+#{Card[:options].name}",
|
54
|
+
content: %( {"type":["in", "JavaScript", "CoffeeScript"] }), type: Card::SearchTypeID
|
53
55
|
Card.create! name: "#{script_set}+#{Card[:input].name}", content: "list"
|
54
56
|
Card.create! name: "#{script_set}+#{Card[:help].name}", content: %{ JavaScript (or CoffeeScript) for card's page. } # TODO: help link?
|
55
57
|
|
@@ -57,23 +59,28 @@ class AddScriptCards < Cardio::Migration::Core
|
|
57
59
|
default_rule_ending = "#{Card[:right].name}+#{Card[:default].name}"
|
58
60
|
Card.create! name: "*machine output", codename: :machine_output
|
59
61
|
Card.create! name: "*machine output+#{default_rule_ending}", type_id: Card::FileID
|
60
|
-
Card.create! name: "*machine output+#{Card[:right].name}+#{Card[:read].name}",
|
62
|
+
Card.create! name: "*machine output+#{Card[:right].name}+#{Card[:read].name}",
|
63
|
+
content: "_left"
|
61
64
|
Card.create! name: "*machine input", codename: :machine_input
|
62
65
|
Card.create! name: "*machine input+#{default_rule_ending}", type_id: Card::PointerID
|
63
66
|
|
64
67
|
# create default script rule
|
65
68
|
card_type = { "js" => "java_script", "coffee" => "coffee_script" }
|
66
|
-
scripts
|
67
|
-
|
69
|
+
scripts = %w[jquery tinymce slot card_menu jquery_helper
|
70
|
+
html5shiv_printshiv]
|
71
|
+
types = %w[js js coffee js js js]
|
68
72
|
# jquery.mobile (in jquery_helper) must be after card to avoid mobileinit nastiness
|
69
73
|
cardnames = scripts.map { |name| "script: #{name.tr('_', ' ')}" }
|
70
74
|
|
71
75
|
scripts.each_with_index do |name, index|
|
72
|
-
Card.create! name: cardnames[index], type: card_type[types[index]],
|
76
|
+
Card.create! name: cardnames[index], type: card_type[types[index]],
|
77
|
+
codename: "script_#{name}"
|
73
78
|
end
|
74
79
|
|
75
80
|
cardnames.pop # html5shiv_printshiv not in default list, only used for IE9 (handled in head.rb)
|
76
81
|
Card::Cache.reset_all
|
77
|
-
Card.create! name: "#{Card[:all].name}+*script", content: cardnames.map { |name|
|
82
|
+
Card.create! name: "#{Card[:all].name}+*script", content: cardnames.map { |name|
|
83
|
+
"[[#{name}]]"
|
84
|
+
}.join("\n")
|
78
85
|
end
|
79
86
|
end
|
@@ -3,14 +3,15 @@
|
|
3
3
|
class AddEmailCards < Cardio::Migration::Core
|
4
4
|
def up
|
5
5
|
# change notification rules
|
6
|
-
%w
|
6
|
+
%w[create update delete].each do |action|
|
7
7
|
Card.create! name: "*on #{action}", type_code: :setting, codename: "on_#{action}"
|
8
|
-
Card.create! name: "*on #{action}+*right+*help",
|
8
|
+
Card.create! name: "*on #{action}+*right+*help",
|
9
|
+
content: "Configures email to be sent when card is #{action}d."
|
9
10
|
Card.create! name: "*on #{action}+*right+*default", type_code: :pointer
|
10
11
|
end
|
11
12
|
|
12
13
|
# change email address list fields to pointers
|
13
|
-
[
|
14
|
+
%i[to from cc bcc].each do |field|
|
14
15
|
set = Card[field].fetch(:right, new: {})
|
15
16
|
default_rule = set.fetch(:default, new: {})
|
16
17
|
default_rule.type_id = Card::PointerID
|
@@ -27,7 +28,8 @@ class AddEmailCards < Cardio::Migration::Core
|
|
27
28
|
end
|
28
29
|
|
29
30
|
# create new cardtype for email templates
|
30
|
-
Card.create! name: "Email template", codename: :email_template,
|
31
|
+
Card.create! name: "Email template", codename: :email_template,
|
32
|
+
type_id: Card::CardtypeID
|
31
33
|
Card.create! name: "Email template+*type+*structure", content: %(
|
32
34
|
{{+#{Card[:from].name} | labeled | link}}
|
33
35
|
{{+#{Card[:to].name} | labeled | link}}
|
@@ -55,21 +57,25 @@ class AddEmailCards < Cardio::Migration::Core
|
|
55
57
|
data = JSON.parse(json)
|
56
58
|
data.each do |mail|
|
57
59
|
mail = mail.symbolize_keys!
|
58
|
-
Card.create! name: mail[:name], codename: mail[:codename],
|
59
|
-
|
60
|
-
Card.create! name: "#{mail[:name]}+*
|
60
|
+
Card.create! name: mail[:name], codename: mail[:codename],
|
61
|
+
type_id: Card::EmailTemplateID
|
62
|
+
Card.create! name: "#{mail[:name]}+*html message",
|
63
|
+
content: File.read(File.join(dir, "#{mail[:codename]}.html"))
|
64
|
+
Card.create! name: "#{mail[:name]}+*text message",
|
65
|
+
content: File.read(File.join(dir, "#{mail[:codename]}.txt"))
|
61
66
|
Card.create! name: "#{mail[:name]}+*subject", content: mail[:subject]
|
62
67
|
end
|
63
68
|
|
64
69
|
# move old hard-coded signup alert email handling to new card-based on_create handling
|
65
70
|
Card.create!(
|
66
|
-
name: ([
|
71
|
+
name: (%i[signup type on_create].map { |code| Card[code].name } * "+"),
|
67
72
|
type_id: Card::PointerID, content: "[[signup alert email]]"
|
68
73
|
)
|
69
74
|
if request_card = Card[:request]
|
70
|
-
[
|
75
|
+
%i[to from].each do |field|
|
71
76
|
if old_card = request_card.fetch(field) && !old_card.db_content.blank?
|
72
|
-
Card.create! name: "signup alert email+#{Card[field].name}",
|
77
|
+
Card.create! name: "signup alert email+#{Card[field].name}",
|
78
|
+
content: old_card.db_content
|
73
79
|
end
|
74
80
|
end
|
75
81
|
request_card.codename = nil
|
@@ -87,7 +93,8 @@ class AddEmailCards < Cardio::Migration::Core
|
|
87
93
|
wagn_bot = Card[:wagn_bot].account.email.present? ? Card[:wagn_bot].name : nil
|
88
94
|
token_emails_from = Card::Rule.global_setting("*invite+*from") || wagn_bot || "_user"
|
89
95
|
["verification email", "password reset email"].each do |token_email_template_name|
|
90
|
-
Card.create! name: "#{token_email_template_name}+#{Card[:from].name}",
|
96
|
+
Card.create! name: "#{token_email_template_name}+#{Card[:from].name}",
|
97
|
+
content: token_emails_from
|
91
98
|
end
|
92
99
|
|
93
100
|
if invite_card = Card[:invite]
|
@@ -118,6 +125,7 @@ class AddEmailCards < Cardio::Migration::Core
|
|
118
125
|
|
119
126
|
send = Card[:send]
|
120
127
|
return unless send
|
128
|
+
|
121
129
|
send.update codename: nil
|
122
130
|
send.delete!
|
123
131
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
class ConfigCardUpdates < Cardio::Migration::Core
|
4
4
|
def up
|
5
|
-
raw_json = File.read(data_path
|
5
|
+
raw_json = File.read(data_path("1.13_config_text.json"))
|
6
6
|
json = JSON.parse raw_json
|
7
7
|
Card.merge_list json["card"]["value"], output_file: "tmp/unmerged_config_text.json"
|
8
8
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
class ConfigDescriptionsEtc < Cardio::Migration::Core
|
4
4
|
def up
|
5
|
-
raw_json = File.read(data_path
|
5
|
+
raw_json = File.read(data_path("1.14_config_descriptions_etc.json"))
|
6
6
|
json = JSON.parse raw_json
|
7
7
|
Card.merge_list json["card"]["value"], output_file: "tmp/unmerged_config_text.json"
|
8
8
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class MakeSymlinksRelative < Cardio::Migration
|
4
4
|
def up
|
5
5
|
Card.paths["files"].each do |file_path|
|
6
|
-
files = Dir.glob(File.join
|
6
|
+
files = Dir.glob(File.join(file_path, "**", "*"))
|
7
7
|
symlinks = files.select { |f| File.symlink? f }
|
8
8
|
symlinks.each do |symlink|
|
9
9
|
base = File.basename(File.readlink(symlink))
|
@@ -13,6 +13,7 @@ class WatchersToFollowing < Cardio::Migration::Core
|
|
13
13
|
card.include_set_modules
|
14
14
|
|
15
15
|
next unless watched = card.left
|
16
|
+
|
16
17
|
card.item_names.each do |user_name|
|
17
18
|
follower_hash[user_name] << watched.name
|
18
19
|
end
|
@@ -20,6 +21,7 @@ class WatchersToFollowing < Cardio::Migration::Core
|
|
20
21
|
|
21
22
|
follower_hash.each do |user, items|
|
22
23
|
next unless (card = Card.fetch(user)) && card.account
|
24
|
+
|
23
25
|
following = card.fetch "following", new: { type_code: :pointer }
|
24
26
|
items.each { |item| following.add_item item }
|
25
27
|
following.save!
|
@@ -5,7 +5,8 @@ class AddMoreFollowingCards < Cardio::Migration::Core
|
|
5
5
|
Card.create! name: "*follow", codename: "follow", type_code: :setting
|
6
6
|
Card.create! name: "*follow+*right+*default", type_code: :pointer
|
7
7
|
Card.create! name: "*follow+*right+*input", type_code: :pointer, content: "[[radio]]"
|
8
|
-
Card.create! name: "*follow+*right+*help", content: "Get notified about changes",
|
8
|
+
Card.create! name: "*follow+*right+*help", content: "Get notified about changes",
|
9
|
+
type_code: :phrase
|
9
10
|
|
10
11
|
Card.create! name: "*followers", codename: "followers"
|
11
12
|
Card.create! name: "*follow fields", codename: "follow_fields", type_code: :setting
|
@@ -18,7 +19,8 @@ class AddMoreFollowingCards < Cardio::Migration::Core
|
|
18
19
|
Card.create! name: "*never", codename: "never"
|
19
20
|
|
20
21
|
# default follow rule
|
21
|
-
Card.create! name: "*follow defaults", codename: "follow_defaults",
|
22
|
+
Card.create! name: "*follow defaults", codename: "follow_defaults",
|
23
|
+
type_code: :pointer
|
22
24
|
Card.create! name: "*all+*all+*follow", type_code: :pointer, content: "[[*never]]"
|
23
25
|
end
|
24
26
|
end
|