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.
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