card 1.101.4 → 1.101.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/config/i18n-tasks.yml +0 -5
  4. data/config/initializers/01_core_extensions/array.rb +2 -1
  5. data/config/initializers/01_core_extensions/hash.rb +1 -0
  6. data/config/initializers/01_core_extensions/object.rb +15 -11
  7. data/config/initializers/02_patches/active_job.rb +1 -1
  8. data/config/initializers/02_patches/active_record.rb +1 -3
  9. data/config/initializers/02_patches/better_errors.rb +1 -3
  10. data/config/initializers/02_patches/kaminari.rb +2 -2
  11. data/config/initializers/deck_config.rb +1 -1
  12. data/config/initializers/inflections.rb +1 -0
  13. data/config/initializers/internationalization.rb +23 -21
  14. data/config/initializers/mime_types.rb +1 -0
  15. data/config/initializers/notification.rb +1 -0
  16. data/config/initializers/patches.rb +6 -5
  17. data/config/locales/en.yml +10 -16
  18. data/db/migrate/20110511221913_require_earlier_migrations.rb +1 -0
  19. data/db/migrate/20121111025347_require_1_10_migrations.rb +1 -0
  20. data/db/migrate/20121118114000_split_link_type.rb +1 -0
  21. data/db/migrate/20121118115000_update_link_type.rb +1 -0
  22. data/db/migrate/20130106052640_table_cleanup.rb +2 -2
  23. data/db/migrate/20130109015336_trunk_left.rb +1 -0
  24. data/db/migrate/20130411210957_update_codenames.rb +1 -0
  25. data/db/migrate/20140822073704_create_new_revision_tables.rb +1 -0
  26. data/db/migrate/20141001105348_move_revisions_to_actions.rb +9 -3
  27. data/db/migrate/20141216053032_better_index_names.rb +9 -6
  28. data/db/migrate/20170908114442_create_delayed_jobs.rb +1 -1
  29. data/db/migrate/20170908114452_increase_text_size_for_delayed_jobs.rb +1 -1
  30. data/db/migrate/20180514152037_add_card_virtuals_table.rb +1 -1
  31. data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +2 -1
  32. data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +9 -9
  33. data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -2
  34. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +5 -5
  35. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +3 -2
  36. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +2 -4
  37. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -3
  38. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -3
  39. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +12 -8
  40. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +2 -4
  41. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +16 -9
  42. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +19 -11
  43. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
  44. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +1 -1
  45. data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +1 -1
  46. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +2 -0
  47. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +4 -2
  48. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +1 -1
  49. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -4
  50. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +8 -4
  51. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +14 -7
  52. data/db/migrate_core_cards/20150429090551_search_card_context.rb +6 -4
  53. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +4 -2
  54. data/db/migrate_core_cards/20150510031118_fix_skin_codenames.rb +2 -1
  55. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +3 -3
  56. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -1
  57. data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +4 -3
  58. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +6 -2
  59. data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
  60. data/db/migrate_core_cards/20150824135418_update_file_history.rb +2 -0
  61. data/db/migrate_core_cards/20160804112510_reorganize_scripts.rb +1 -1
  62. data/db/migrate_core_cards/20160811115836_rename_stats_to_admin.rb +1 -0
  63. data/db/migrate_core_cards/20160914132636_fix_mod_files.rb +2 -0
  64. data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +6 -6
  65. data/db/migrate_core_cards/20161103154836_update_keys.rb +2 -1
  66. data/db/migrate_core_cards/20170209132834_email_test_context.rb +2 -0
  67. data/db/migrate_core_cards/20170314175313_add_notification_event_card.rb +3 -3
  68. data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +1 -1
  69. data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +1 -1
  70. data/db/migrate_core_cards/20180712042655_head_rule.rb +3 -4
  71. data/db/migrate_core_cards/20180905061537_migrate_layouts.rb +4 -4
  72. data/db/migrate_core_cards/20181120200937_update_layout.rb +1 -1
  73. data/db/migrate_core_cards/20190320091257_upgrade_recaptcha_to_v3.rb +7 -7
  74. data/db/migrate_core_cards/20190424100531_update_credit_image.rb +1 -0
  75. data/db/migrate_core_cards/20190502130029_add_shark_and_help_desk_role.rb +15 -14
  76. data/db/migrate_core_cards/20190503122739_update_pristine_data.rb +1 -1
  77. data/db/migrate_core_cards/20190625153616_pointer_overhaul.rb +9 -5
  78. data/db/migrate_core_cards/20190718140126_add_guides.rb +3 -3
  79. data/db/migrate_core_cards/20190822093633_move_help_text_to_code.rb +1 -2
  80. data/db/migrate_core_cards/20190823220018_cleanup_for_decko_1_0.rb +1 -1
  81. data/db/migrate_core_cards/20190829093961_cardtype_grouping.rb +7 -7
  82. data/db/migrate_core_cards/20190902193208_input_type.rb +1 -3
  83. data/db/migrate_core_cards/20190909104250_add_cardtype_input_types.rb +2 -2
  84. data/db/migrate_core_cards/20191028135243_add_link_editor_to_tiny_mce_config.rb +1 -0
  85. data/db/migrate_core_cards/20191115160748_history_cleanup.rb +0 -1
  86. data/db/migrate_core_cards/20191118145629_codename_fixes.rb +1 -2
  87. data/db/migrate_core_cards/20200821231558_add_nest_list_type.rb +1 -1
  88. data/db/seed/new/card_actions.yml +2153 -2145
  89. data/db/seed/new/card_acts.yml +3 -3
  90. data/db/seed/new/card_references.yml +900 -858
  91. data/db/seed/new/cards.yml +4869 -4848
  92. data/db/seed/new/schema_migrations_deck_cards.yml +2 -0
  93. data/db/seed/test/fixtures/card_actions.yml +3563 -3547
  94. data/db/seed/test/fixtures/card_acts.yml +675 -675
  95. data/db/seed/test/fixtures/card_changes.yml +103 -103
  96. data/db/seed/test/fixtures/card_references.yml +2165 -2123
  97. data/db/seed/test/fixtures/cards.yml +7862 -7751
  98. data/db/seed/test/fixtures/schema_migrations_deck_cards.yml +2 -0
  99. data/db/test_seed.rb +33 -34
  100. data/lib/card.rb +1 -0
  101. data/lib/card/auth/token.rb +2 -2
  102. data/lib/card/cache.rb +2 -1
  103. data/lib/card/cache/all.rb +5 -0
  104. data/lib/card/cache/card_class.rb +3 -0
  105. data/lib/card/codename.rb +1 -1
  106. data/lib/card/content.rb +4 -8
  107. data/lib/card/content/chunk.rb +1 -1
  108. data/lib/card/content/clean.rb +4 -3
  109. data/lib/card/content/diff.rb +3 -2
  110. data/lib/card/content/diff/l_c_s/processor.rb +1 -1
  111. data/lib/card/content/diff/result.rb +1 -0
  112. data/lib/card/content/parser.rb +2 -2
  113. data/lib/card/content/truncate.rb +6 -6
  114. data/lib/card/director.rb +1 -1
  115. data/lib/card/director/all.rb +2 -2
  116. data/lib/card/director/card_methods.rb +1 -0
  117. data/lib/card/director/event_delay.rb +4 -6
  118. data/lib/card/director/run.rb +2 -0
  119. data/lib/card/director/stages.rb +3 -2
  120. data/lib/card/env/location.rb +4 -3
  121. data/lib/card/fetch.rb +7 -4
  122. data/lib/card/fetch/all.rb +1 -0
  123. data/lib/card/fetch/card_class.rb +35 -27
  124. data/lib/card/fetch/results.rb +9 -0
  125. data/lib/card/fetch/retrieve.rb +2 -0
  126. data/lib/card/fetch/store.rb +1 -0
  127. data/lib/card/format/content.rb +1 -3
  128. data/lib/card/format/error.rb +6 -1
  129. data/lib/card/format/method_delegation.rb +10 -2
  130. data/lib/card/format/nest.rb +2 -1
  131. data/lib/card/format/nest/fetch.rb +2 -0
  132. data/lib/card/format/nesting/mode.rb +1 -1
  133. data/lib/card/format/nesting/subformat.rb +2 -1
  134. data/lib/card/format/render.rb +2 -2
  135. data/lib/card/format/wrapper.rb +1 -1
  136. data/lib/card/lexicon.rb +3 -2
  137. data/lib/card/mark.rb +17 -15
  138. data/lib/card/model/save_helper.rb +3 -3
  139. data/lib/card/name.rb +10 -9
  140. data/lib/card/name/all.rb +3 -0
  141. data/lib/card/name/all/descendants.rb +3 -4
  142. data/lib/card/name/card_class.rb +2 -0
  143. data/lib/card/name/fields_and_traits.rb +4 -2
  144. data/lib/card/name/name_variants.rb +0 -1
  145. data/lib/card/query.rb +17 -17
  146. data/lib/card/query/card_query/interpretation.rb +1 -0
  147. data/lib/card/query/card_query/match_attributes.rb +2 -1
  148. data/lib/card/query/card_query/normalization.rb +1 -0
  149. data/lib/card/query/card_query/reference_attributes.rb +1 -1
  150. data/lib/card/query/join.rb +1 -1
  151. data/lib/card/query/value/match_value.rb +1 -0
  152. data/lib/card/reference/all.rb +7 -2
  153. data/lib/card/rule/all.rb +1 -0
  154. data/lib/card/rule/cache.rb +2 -0
  155. data/lib/card/set/advanced_api.rb +3 -2
  156. data/lib/card/set/event.rb +2 -2
  157. data/lib/card/set/event/all.rb +6 -0
  158. data/lib/card/set/event/delayed_event.rb +6 -6
  159. data/lib/card/set/event/options.rb +1 -0
  160. data/lib/card/set/format/abstract_format/view_definition.rb +1 -0
  161. data/lib/card/set/format/abstract_format/view_opts.rb +1 -0
  162. data/lib/card/set/i18n_scope.rb +4 -2
  163. data/lib/card/set/inheritance.rb +0 -1
  164. data/lib/card/set/loader.rb +0 -2
  165. data/lib/card/set/pattern/base.rb +3 -2
  166. data/lib/card/set/pattern/class_methods.rb +2 -2
  167. data/lib/card/set/required_field.rb +4 -1
  168. data/lib/card/setting.rb +3 -0
  169. data/lib/card/subcards.rb +3 -4
  170. data/lib/card/tasks/card/file_card_creator/abstract_file_card/ruby_file.rb +1 -1
  171. data/lib/card/tasks/card/file_card_creator/output_helper.rb +2 -4
  172. data/lib/card/tasks/card/migrate.rake +2 -2
  173. data/lib/card/view/cache.rb +6 -8
  174. data/lib/card/view/cache/cache_action.rb +1 -2
  175. data/lib/card/view/cache/stub.rb +1 -1
  176. data/lib/card/view/options.rb +3 -3
  177. data/lib/card/view/permission.rb +1 -0
  178. data/lib/cardio.rb +1 -1
  179. data/lib/cardio/migration.rb +1 -1
  180. data/lib/cardio/migration/deck_structure.rb +2 -4
  181. data/lib/cardio/migration/import.rb +2 -2
  182. data/lib/cardio/migration/import/import_data.rb +1 -0
  183. data/lib/cardio/mod.rb +1 -0
  184. data/lib/cardio/mod/load_strategy.rb +2 -4
  185. data/lib/cardio/mod/loader/set_loader.rb +2 -1
  186. data/lib/cardio/mod/module_template.rb +1 -0
  187. data/lib/cardio/modfiles.rb +2 -4
  188. data/lib/cardio/schema.rb +2 -4
  189. data/lib/cardio/utils.rb +1 -0
  190. data/lib/generators/card/format/format_generator.rb +1 -1
  191. data/lib/generators/card/migration/migration_generator.rb +2 -1
  192. data/lib/generators/card/mod/mod_generator.rb +3 -2
  193. data/lib/generators/card/set/set_generator.rb +3 -3
  194. data/lib/generators/card/template/template_generator.rb +1 -1
  195. data/mod/admin/set/self/admin.rb +6 -3
  196. data/mod/admin/set/self/trash.rb +1 -0
  197. data/mod/admin/spec/set/self/admin_spec.rb +4 -4
  198. data/mod/core/set/all/abort.rb +5 -5
  199. data/mod/core/set/all/assign_attributes.rb +5 -8
  200. data/mod/core/set/all/codename.rb +1 -0
  201. data/mod/core/set/all/collection.rb +4 -6
  202. data/mod/core/set/all/content.rb +3 -2
  203. data/mod/core/set/all/contextual_content.rb +2 -4
  204. data/mod/core/set/all/name_events.rb +13 -6
  205. data/mod/core/set/all/reference_events.rb +2 -0
  206. data/mod/core/set/all/states.rb +3 -3
  207. data/mod/core/set/all/subcards.rb +1 -1
  208. data/mod/core/set/all/trash.rb +5 -1
  209. data/mod/core/set/all/type.rb +4 -2
  210. data/mod/core/set/all/utils.rb +1 -1
  211. data/mod/core/spec/set/all/assign_attributes_spec.rb +10 -9
  212. data/mod/core/spec/set/all/clean_me_spec.rb +19 -4
  213. data/mod/core/spec/set/all/collection_spec.rb +1 -1
  214. data/mod/core/spec/set/all/export_spec.rb +1 -0
  215. data/mod/core/spec/set/all/initialize_spec.rb +11 -11
  216. metadata +4 -4
@@ -1,6 +1,6 @@
1
1
  class IncreaseTextSizeForDelayedJobs < ActiveRecord::Migration[5.1]
2
2
  def self.up
3
- change_column :delayed_jobs, :handler, :text, :limit => 16777215
3
+ change_column :delayed_jobs, :handler, :text, limit: 16_777_215
4
4
  end
5
5
 
6
6
  def self.down
@@ -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: 16777215
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(kine cow kine)),
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" => "*structure",
7
- "*edit help" => "*help",
8
- "*links" => "*links to",
6
+ "*content" => "*structure",
7
+ "*edit help" => "*help",
8
+ "*links" => "*links to",
9
9
  "*inclusions" => "*includes",
10
- "*linkers" => "*linked to by",
11
- "*includers" => "*included by",
10
+ "*linkers" => "*linked to by",
11
+ "*includers" => "*included by",
12
12
  "*plus cards" => "*children",
13
13
  "*plus parts" => "*mates",
14
- "*editing" => "*edited"
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 : "*" + 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 dir)
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"] }, pristine: true
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(CSS SCSS Skin).each do |type|
30
- [:create, :update, :delete].each do |action|
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
- ).each_with_index do |sheet, index|
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(right_sidebar common classic_cards traditional).each do |sheetname|
7
- Card["style: #{sheetname}"].update! codename: nil, content: File.read("#{dir}/#{sheetname}.scss")
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(common traditional).each do |sheetname|
6
+ %w[common traditional].each do |sheetname|
7
7
  card = Card["style: #{sheetname}"]
8
- if card && card.pristine?
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
- if card && card.pristine?
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
@@ -3,8 +3,6 @@
3
3
  class ResetAccountRequestType < Cardio::Migration::Core
4
4
  def up
5
5
  arcard = Card[:signup]
6
- if arcard.type_code != :cardtype
7
- arcard.update type_id: Card::CardtypeID
8
- end
6
+ arcard.update type_id: Card::CardtypeID if arcard.type_code != :cardtype
9
7
  end
10
8
  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
- [:password, :token, :salt, :status, :signin, :stats].each do |codename|
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
- [:password, :token, :salt, :status, :email, :account].each do |codename|
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
- [:email, :password].each do |field|
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
- [:read, :update].each do |setting|
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 = [:email, :right, :structure].map { |code| Card[code].name } * "+"
35
- newname = [:user, :email, :type_plus_right, :structure].map { |code| Card[code].name } * "+"
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
- [:email, :salt, :password, :status].each do |field|
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 = [:signup, :type, :captcha].map { |code| Card[code].name } * "+"
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(JavaScript CoffeeScript).each do |type|
41
- [:create, :update, :delete].each do |action|
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}", content: "[[#{Card[:anyone].name}]]"
52
- Card.create! name: "#{script_set}+#{Card[:options].name}", content: %( {"type":["in", "JavaScript", "CoffeeScript"] }), type: Card::SearchTypeID
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}", content: "_left"
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 = %w(jquery tinymce slot card_menu jquery_helper html5shiv_printshiv)
67
- types = %w(js js coffee js js js)
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]], codename: "script_#{name}"
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| "[[#{name}]]" }.join("\n")
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(create update delete).each do |action|
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", content: "Configures email to be sent when card is #{action}d."
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
- [:to, :from, :cc, :bcc].each do |field|
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, type_id: Card::CardtypeID
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], type_id: Card::EmailTemplateID
59
- Card.create! name: "#{mail[:name]}+*html message", content: File.read(File.join(dir, "#{mail[:codename]}.html"))
60
- Card.create! name: "#{mail[:name]}+*text message", content: File.read(File.join(dir, "#{mail[:codename]}.txt"))
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: ([:signup, :type, :on_create].map { |code| Card[code].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
- [:to, :from].each do |field|
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}", content: old_card.db_content
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}", content: token_emails_from
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 "1.13_config_text.json")
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 "1.14_config_descriptions_etc.json")
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 file_path, "**", "*")
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", type_code: :phrase
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", type_code: :pointer
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