card 1.17.4 → 1.18.0

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 (389) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +24 -25
  4. data/config/initializers/01_init_ruby_extensions.rb +0 -4
  5. data/config/initializers/inflections.rb +1 -1
  6. data/config/initializers/notification.rb +2 -2
  7. data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
  8. data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
  9. data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
  10. data/db/migrate/20130106052640_table_cleanup.rb +4 -4
  11. data/db/migrate/20130411210957_update_codenames.rb +2 -2
  12. data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
  13. data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
  14. data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
  15. data/db/migrate/20141216053032_better_index_names.rb +9 -9
  16. data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
  17. data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
  18. data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
  19. data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
  20. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
  21. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
  22. data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
  23. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
  24. data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
  25. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
  26. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
  27. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
  28. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
  29. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
  30. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
  31. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
  32. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
  33. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
  34. data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
  35. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
  36. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
  37. data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
  38. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
  39. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
  40. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
  41. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
  42. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
  43. data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
  44. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
  45. data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
  46. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
  47. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
  48. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
  49. data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
  50. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
  51. data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
  52. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
  53. data/db/schema.rb +92 -94
  54. data/db/seed/new/card_actions.yml +461 -469
  55. data/db/seed/new/card_acts.yml +154 -172
  56. data/db/seed/new/card_changes.yml +4076 -4031
  57. data/db/seed/new/card_references.yml +1584 -1927
  58. data/db/seed/new/cards.yml +2095 -2112
  59. data/db/seed/test/fixtures/card_actions.yml +1497 -1505
  60. data/db/seed/test/fixtures/card_acts.yml +454 -472
  61. data/db/seed/test/fixtures/card_changes.yml +7309 -7263
  62. data/db/seed/test/fixtures/card_references.yml +2263 -2613
  63. data/db/seed/test/fixtures/cards.yml +3298 -3316
  64. data/db/seed/test/seed.rb +3 -0
  65. data/lib/card.rb +17 -9
  66. data/lib/card/active_record_ext.rb +6 -8
  67. data/lib/card/active_record_helper.rb +42 -32
  68. data/lib/card/auth.rb +3 -3
  69. data/lib/card/cache.rb +4 -4
  70. data/lib/card/cache/persistent.rb +9 -5
  71. data/lib/card/cache/temporary.rb +5 -5
  72. data/lib/card/chunk.rb +1 -1
  73. data/lib/card/codename.rb +3 -2
  74. data/lib/card/content.rb +62 -57
  75. data/lib/card/core_ext.rb +20 -30
  76. data/lib/card/diff.rb +88 -76
  77. data/lib/card/director_register.rb +66 -0
  78. data/lib/card/env.rb +14 -17
  79. data/lib/card/exceptions.rb +7 -9
  80. data/lib/card/format.rb +18 -367
  81. data/lib/card/format/nest.rb +183 -0
  82. data/lib/card/format/permission.rb +63 -0
  83. data/lib/card/format/render.rb +140 -0
  84. data/lib/card/loader.rb +17 -26
  85. data/lib/card/location.rb +6 -6
  86. data/lib/card/mailer.rb +4 -7
  87. data/lib/card/migration.rb +1 -1
  88. data/lib/card/name.rb +3 -6
  89. data/lib/card/query.rb +8 -8
  90. data/lib/card/query/attributes.rb +6 -6
  91. data/lib/card/query/clause.rb +10 -10
  92. data/lib/card/query/join.rb +7 -9
  93. data/lib/card/query/reference.rb +17 -19
  94. data/lib/card/query/sql_statement.rb +2 -2
  95. data/lib/card/query/value.rb +15 -16
  96. data/lib/card/set.rb +106 -209
  97. data/lib/card/set/event.rb +126 -0
  98. data/lib/card/set_pattern.rb +42 -29
  99. data/lib/card/simplecov_helper.rb +19 -19
  100. data/lib/card/spec_helper.rb +40 -16
  101. data/lib/card/stage.rb +72 -0
  102. data/lib/card/stage_director.rb +231 -0
  103. data/lib/card/subcards.rb +56 -24
  104. data/lib/card/subdirector_array.rb +31 -0
  105. data/lib/card/success.rb +15 -18
  106. data/lib/card/version.rb +1 -2
  107. data/lib/card/view_cache.rb +4 -4
  108. data/lib/card/view_name.rb +10 -8
  109. data/lib/cardio.rb +1 -1
  110. data/lib/generators/card.rb +2 -4
  111. data/lib/generators/card/format/format_generator.rb +4 -4
  112. data/lib/generators/card/migration/migration_generator.rb +6 -6
  113. data/lib/generators/card/set/set_generator.rb +5 -6
  114. data/mod/01_core/chunk/include.rb +2 -1
  115. data/mod/01_core/chunk/link.rb +2 -2
  116. data/mod/01_core/chunk/literal.rb +6 -9
  117. data/mod/01_core/chunk/query_reference.rb +1 -1
  118. data/mod/01_core/chunk/reference.rb +2 -2
  119. data/mod/01_core/chunk/uri.rb +52 -63
  120. data/mod/01_core/format/html_format.rb +8 -12
  121. data/mod/01_core/format/text_format.rb +1 -1
  122. data/mod/01_core/set/all/actify.rb +96 -0
  123. data/mod/01_core/set/all/active_card.rb +7 -7
  124. data/mod/01_core/set/all/collection.rb +19 -20
  125. data/mod/01_core/set/all/content.rb +9 -7
  126. data/mod/01_core/set/all/erb.rb +5 -5
  127. data/mod/01_core/set/all/event.rb +60 -0
  128. data/mod/01_core/set/all/fetch.rb +13 -19
  129. data/mod/01_core/set/all/haml.rb +1 -1
  130. data/mod/01_core/set/all/initialize.rb +35 -41
  131. data/mod/01_core/set/all/location_history.rb +3 -5
  132. data/mod/01_core/set/all/name.rb +19 -68
  133. data/mod/01_core/set/all/name_validations.rb +56 -0
  134. data/mod/01_core/set/all/pattern.rb +2 -2
  135. data/mod/01_core/set/all/permissions.rb +14 -20
  136. data/mod/01_core/set/all/phases.rb +9 -200
  137. data/mod/01_core/set/all/references.rb +10 -10
  138. data/mod/01_core/set/all/rules.rb +3 -4
  139. data/mod/01_core/set/all/stages.rb +24 -0
  140. data/mod/01_core/set/all/states.rb +4 -4
  141. data/mod/01_core/set/all/subcards.rb +16 -26
  142. data/mod/01_core/set/all/templating.rb +1 -3
  143. data/mod/01_core/set/all/tracked_attributes.rb +47 -48
  144. data/mod/01_core/set/all/trash.rb +10 -10
  145. data/mod/01_core/set/all/type.rb +9 -8
  146. data/mod/01_core/set/all/utils.rb +10 -14
  147. data/mod/01_core/set/all/view_cache.rb +2 -2
  148. data/mod/01_core/set_pattern/01_all.rb +3 -3
  149. data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
  150. data/mod/01_core/set_pattern/03_type.rb +2 -2
  151. data/mod/01_core/set_pattern/04_star.rb +3 -3
  152. data/mod/01_core/set_pattern/05_rstar.rb +3 -3
  153. data/mod/01_core/set_pattern/06_right.rb +2 -2
  154. data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
  155. data/mod/01_core/set_pattern/08_self.rb +1 -1
  156. data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
  157. data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
  158. data/mod/01_core/spec/format/html_format_spec.rb +72 -57
  159. data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
  160. data/mod/01_core/spec/set/all/content_spec.rb +4 -4
  161. data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
  162. data/mod/01_core/spec/set/all/name_spec.rb +3 -4
  163. data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
  164. data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
  165. data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
  166. data/mod/01_core/spec/set/all/references_spec.rb +1 -1
  167. data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
  168. data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
  169. data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
  170. data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
  171. data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
  172. data/mod/01_core/spec/set/all/type_spec.rb +2 -5
  173. data/mod/01_history/lib/card/action.rb +8 -10
  174. data/mod/01_history/set/all/actions.rb +2 -4
  175. data/mod/01_history/set/all/content_history.rb +38 -32
  176. data/mod/01_history/set/all/history.rb +20 -17
  177. data/mod/02_basic_types/format/rss_format.rb +0 -1
  178. data/mod/02_basic_types/set/all/all_css.rb +9 -13
  179. data/mod/02_basic_types/set/all/all_csv.rb +14 -17
  180. data/mod/02_basic_types/set/all/all_js.rb +3 -4
  181. data/mod/02_basic_types/set/all/base.rb +2 -2
  182. data/mod/02_basic_types/set/all/file.rb +2 -5
  183. data/mod/02_basic_types/set/all/json.rb +19 -18
  184. data/mod/02_basic_types/set/all/rss.rb +3 -3
  185. data/mod/02_basic_types/set/all/text.rb +1 -3
  186. data/mod/02_basic_types/set/type/html.rb +4 -8
  187. data/mod/02_basic_types/set/type/plain_text.rb +2 -3
  188. data/mod/02_basic_types/set/type/pointer.rb +82 -92
  189. data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
  190. data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
  191. data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
  192. data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
  193. data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
  194. data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
  195. data/mod/03_machines/lib/card/machine.rb +95 -81
  196. data/mod/03_machines/lib/card/machine_input.rb +35 -34
  197. data/mod/03_machines/set/right/machine_input.rb +1 -1
  198. data/mod/03_machines/set/self/script_ace.rb +2 -3
  199. data/mod/03_machines/set/self/script_card_menu.rb +2 -3
  200. data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
  201. data/mod/03_machines/set/self/script_slot.rb +2 -2
  202. data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
  203. data/mod/03_machines/set/self/style_cards.rb +1 -1
  204. data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
  205. data/mod/03_machines/set/type/coffee_script.rb +9 -13
  206. data/mod/03_machines/set/type/css.rb +12 -13
  207. data/mod/03_machines/set/type/java_script.rb +6 -8
  208. data/mod/03_machines/set/type/scss.rb +4 -5
  209. data/mod/03_machines/set/type/skin.rb +3 -6
  210. data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
  211. data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
  212. data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
  213. data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
  214. data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
  215. data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
  216. data/mod/04_settings/lib/card/setting.rb +4 -4
  217. data/mod/04_settings/set/abstract/permission.rb +30 -37
  218. data/mod/04_settings/set/right/add_help.rb +3 -3
  219. data/mod/04_settings/set/right/script.rb +4 -5
  220. data/mod/04_settings/set/right/structure.rb +3 -4
  221. data/mod/04_settings/set/right/style.rb +3 -3
  222. data/mod/04_settings/set/self/add_help.rb +1 -1
  223. data/mod/04_settings/set/self/input.rb +1 -1
  224. data/mod/04_settings/set/self/on_create.rb +1 -1
  225. data/mod/04_settings/set/self/options.rb +1 -1
  226. data/mod/04_settings/set/self/options_label.rb +1 -1
  227. data/mod/04_settings/set/type/setting.rb +29 -44
  228. data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
  229. data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
  230. data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
  231. data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
  232. data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
  233. data/mod/05_email/format/email_html_format.rb +1 -1
  234. data/mod/05_email/format/email_text_format.rb +2 -2
  235. data/mod/05_email/lib/card/follow_option.rb +12 -15
  236. data/mod/05_email/set/all/email_html.rb +2 -3
  237. data/mod/05_email/set/all/email_text.rb +3 -3
  238. data/mod/05_email/set/all/follow.rb +14 -22
  239. data/mod/05_email/set/all/notify.rb +11 -11
  240. data/mod/05_email/set/all/observer.rb +7 -8
  241. data/mod/05_email/set/right/bcc.rb +4 -9
  242. data/mod/05_email/set/right/follow.rb +26 -39
  243. data/mod/05_email/set/right/follow_fields.rb +2 -2
  244. data/mod/05_email/set/right/followers.rb +3 -1
  245. data/mod/05_email/set/right/following.rb +13 -16
  246. data/mod/05_email/set/self/always.rb +1 -2
  247. data/mod/05_email/set/self/created.rb +4 -6
  248. data/mod/05_email/set/self/edited.rb +3 -7
  249. data/mod/05_email/set/self/follow_defaults.rb +11 -12
  250. data/mod/05_email/set/self/never.rb +2 -4
  251. data/mod/05_email/set/type/email_template.rb +40 -27
  252. data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
  253. data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
  254. data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
  255. data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
  256. data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
  257. data/mod/05_email/spec/set/right/following_spec.rb +1 -1
  258. data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
  259. data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
  260. data/mod/05_standard/lib/file_uploader.rb +8 -13
  261. data/mod/05_standard/lib/image_uploader.rb +8 -9
  262. data/mod/05_standard/set/abstract/attachment.rb +26 -43
  263. data/mod/05_standard/set/all/account.rb +2 -2
  264. data/mod/05_standard/set/all/comment.rb +11 -13
  265. data/mod/05_standard/set/all/error.rb +18 -18
  266. data/mod/05_standard/set/all/event_viz.rb +16 -29
  267. data/mod/05_standard/set/all/links.rb +35 -34
  268. data/mod/05_standard/set/all/list_changes.rb +10 -12
  269. data/mod/05_standard/set/all/rich_html/content.rb +13 -13
  270. data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
  271. data/mod/05_standard/set/all/rich_html/form.rb +22 -26
  272. data/mod/05_standard/set/all/rich_html/header.rb +18 -25
  273. data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
  274. data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
  275. data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
  276. data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
  277. data/mod/05_standard/set/right/account.rb +26 -14
  278. data/mod/05_standard/set/right/email.rb +2 -2
  279. data/mod/05_standard/set/right/password.rb +6 -5
  280. data/mod/05_standard/set/right/salt.rb +2 -2
  281. data/mod/05_standard/set/right/stats.rb +17 -20
  282. data/mod/05_standard/set/right/token.rb +1 -1
  283. data/mod/05_standard/set/right/when_created.rb +1 -1
  284. data/mod/05_standard/set/right/when_last_edited.rb +1 -1
  285. data/mod/05_standard/set/rstar/rules.rb +3 -3
  286. data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
  287. data/mod/05_standard/set/self/account_links.rb +21 -22
  288. data/mod/05_standard/set/self/admin_info.rb +5 -5
  289. data/mod/05_standard/set/self/alerts.rb +1 -1
  290. data/mod/05_standard/set/self/all.rb +1 -1
  291. data/mod/05_standard/set/self/foot.rb +1 -1
  292. data/mod/05_standard/set/self/head.rb +19 -22
  293. data/mod/05_standard/set/self/navbox.rb +3 -7
  294. data/mod/05_standard/set/self/now.rb +1 -1
  295. data/mod/05_standard/set/self/recent.rb +19 -25
  296. data/mod/05_standard/set/self/search.rb +2 -4
  297. data/mod/05_standard/set/self/signin.rb +6 -6
  298. data/mod/05_standard/set/self/stats.rb +31 -38
  299. data/mod/05_standard/set/self/version.rb +1 -2
  300. data/mod/05_standard/set/type/basic.rb +15 -17
  301. data/mod/05_standard/set/type/cardtype.rb +3 -3
  302. data/mod/05_standard/set/type/date.rb +1 -2
  303. data/mod/05_standard/set/type/file.rb +22 -33
  304. data/mod/05_standard/set/type/image.rb +30 -23
  305. data/mod/05_standard/set/type/layout_type.rb +4 -4
  306. data/mod/05_standard/set/type/list.rb +32 -38
  307. data/mod/05_standard/set/type/listed_by.rb +11 -13
  308. data/mod/05_standard/set/type/number.rb +5 -6
  309. data/mod/05_standard/set/type/phrase.rb +1 -1
  310. data/mod/05_standard/set/type/search_type.rb +25 -23
  311. data/mod/05_standard/set/type/session.rb +2 -3
  312. data/mod/05_standard/set/type/set.rb +46 -51
  313. data/mod/05_standard/set/type/signup.rb +18 -19
  314. data/mod/05_standard/set/type/toggle.rb +5 -5
  315. data/mod/05_standard/set/type/user.rb +6 -6
  316. data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
  317. data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
  318. data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
  319. data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
  320. data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
  321. data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
  322. data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
  323. data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
  324. data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
  325. data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
  326. data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
  327. data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
  328. data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
  329. data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
  330. data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
  331. data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
  332. data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
  333. data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
  334. data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
  335. data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
  336. data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
  337. data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
  338. data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
  339. data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
  340. data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
  341. data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
  342. data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
  343. data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
  344. data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
  345. data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
  346. data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
  347. data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
  348. data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
  349. data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
  350. data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
  351. data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
  352. data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
  353. data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
  354. data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
  355. data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
  356. data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
  357. data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
  358. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
  359. data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
  360. data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
  361. data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
  362. data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
  363. data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
  364. data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
  365. data/spec/lib/card/action_spec.rb +4 -4
  366. data/spec/lib/card/cache_spec.rb +3 -5
  367. data/spec/lib/card/chunk_spec.rb +6 -8
  368. data/spec/lib/card/codename_spec.rb +4 -6
  369. data/spec/lib/card/content_spec.rb +12 -17
  370. data/spec/lib/card/diff_spec.rb +59 -61
  371. data/spec/lib/card/format_spec.rb +55 -34
  372. data/spec/lib/card/loader_spec.rb +35 -37
  373. data/spec/lib/card/name_spec.rb +159 -145
  374. data/spec/lib/card/query_spec.rb +4 -4
  375. data/spec/lib/card/reference_spec.rb +24 -24
  376. data/spec/lib/card/set_pattern_spec.rb +3 -3
  377. data/spec/lib/card/stage_director_spec.rb +218 -0
  378. data/spec/lib/card/subcards_spec.rb +12 -16
  379. data/spec/lib/card/success_spec.rb +16 -18
  380. data/spec/lib/card/view_cache_spec.rb +1 -1
  381. data/spec/mailers/mailer_spec.rb +3 -5
  382. data/spec/models/card/cardtype_spec.rb +40 -51
  383. data/spec/models/card/create_spec.rb +58 -39
  384. data/spec/models/card/trash_spec.rb +23 -32
  385. data/spec/models/card/type_transition_spec.rb +41 -32
  386. data/spec/models/card/validation_spec.rb +13 -15
  387. data/spec/models/card_spec.rb +48 -59
  388. data/spec/spec_helper.rb +26 -31
  389. metadata +16 -2
@@ -2,8 +2,8 @@
2
2
 
3
3
  class ConfigCardUpdates < Card::CoreMigration
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
- Card.merge_list json["card"]["value"], output_file: "tmp/unmerged_config_text.json"
7
+ Card.merge_list json['card']['value'], output_file: 'tmp/unmerged_config_text.json'
8
8
  end
9
9
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  class DeleteMachineOutput < Card::CoreMigration
4
4
  def up
5
- Card.search( right: { codename: 'machine_output' } ).each do |card|
6
- card.delete!
7
- end
5
+ Card.search(right: { codename: 'machine_output' }).each(&:delete!)
8
6
  end
9
7
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  class ConfigDescriptionsEtc < Card::CoreMigration
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
- Card.merge_list json["card"]["value"], output_file: "tmp/unmerged_config_text.json"
7
+ Card.merge_list json['card']['value'], output_file: 'tmp/unmerged_config_text.json'
8
8
 
9
9
  # fix missing +*from card
10
10
  c = Card.fetch "follower notification email+#{Card[:from].name}", new: {}
@@ -2,11 +2,11 @@
2
2
 
3
3
  class MakeSymlinksRelative < Card::Migration
4
4
  def up
5
- Card.paths['files'].each do |file_path|
5
+ Card.paths['files'].each do |file_path|
6
6
  files = Dir.glob(File.join file_path, '**', '*')
7
- symlinks = files.select {|f| File.symlink? f }
7
+ symlinks = files.select { |f| File.symlink? f }
8
8
  symlinks.each do |symlink|
9
- base = File.basename( File.readlink(symlink) )
9
+ base = File.basename(File.readlink(symlink))
10
10
  File.delete symlink
11
11
  File.symlink base, symlink
12
12
  end
@@ -5,6 +5,6 @@ class FixNotificationHtmlMessage < Card::CoreMigration
5
5
  codename = :follower_notification_email
6
6
  dir = File.join data_path, 'mailer'
7
7
  html_message = Card[codename].fetch trait: 'html_message'
8
- html_message.update_attributes! content: File.read( File.join( dir, "#{codename}.html" ))
8
+ html_message.update_attributes! content: File.read(File.join(dir, "#{codename}.html"))
9
9
  end
10
10
  end
@@ -2,10 +2,9 @@
2
2
 
3
3
  class WatchersToFollowing < Card::CoreMigration
4
4
  def up
5
-
6
5
  follower_hash = Hash.new { |h, v| h[v] = [] }
7
6
 
8
- #NOTE: this migration must find cards in the trash, because the original (1.14.0) migration attempt
7
+ # NOTE: this migration must find cards in the trash, because the original (1.14.0) migration attempt
9
8
  # did not successfully migration to the +*following card but did successfully delete +*watchers cards.
10
9
  # Therefore cards migrated using 1.14.0 or 1.14.1 will not have the correct migrations
11
10
 
@@ -13,19 +12,17 @@ class WatchersToFollowing < Card::CoreMigration
13
12
  Card.find_by_sql("select * from cards where right_id = #{watcher_card.id}").each do |card|
14
13
  card.include_set_modules
15
14
 
16
- if watched = card.left
17
- card.item_names.each do |user_name|
18
- follower_hash[user_name] << watched.name
19
- end
15
+ next unless watched = card.left
16
+ card.item_names.each do |user_name|
17
+ follower_hash[user_name] << watched.name
20
18
  end
21
19
  end
22
20
 
23
21
  follower_hash.each do |user, items|
24
- if card=Card.fetch(user) and card.account
25
- following = card.fetch trait: 'following', new: {type_code: :pointer}
26
- items.each { |item| following.add_item item }
27
- following.save!
28
- end
22
+ next unless (card = Card.fetch(user)) && card.account
23
+ following = card.fetch trait: 'following', new: { type_code: :pointer }
24
+ items.each { |item| following.add_item item }
25
+ following.save!
29
26
  end
30
27
  end
31
28
 
@@ -33,6 +30,5 @@ class WatchersToFollowing < Card::CoreMigration
33
30
  watchers.update_attributes codename: nil
34
31
  watchers.delete!
35
32
  end
36
-
37
33
  end
38
34
  end
@@ -2,9 +2,8 @@
2
2
 
3
3
  class AddAceScript < Card::CoreMigration
4
4
  def up
5
- Card[:all].fetch(trait: :script).add_item! "script: ace"
6
-
7
- Card.create! name: "script: ace",codename: "script_ace",type: "JavaScript"
5
+ Card[:all].fetch(trait: :script).add_item! 'script: ace'
8
6
 
7
+ Card.create! name: 'script: ace', codename: 'script_ace', type: 'JavaScript'
9
8
  end
10
9
  end
@@ -2,23 +2,23 @@
2
2
 
3
3
  class AddMoreFollowingCards < Card::CoreMigration
4
4
  def up
5
- Card.create! name: "*follow", codename: "follow", type_code: :setting
5
+ Card.create! name: '*follow', codename: 'follow', type_code: :setting
6
6
  Card.create! name: '*follow+*right+*default', type_code: :pointer
7
- Card.create! name: '*follow+*right+*input', type_code: :pointer, content: "[[radio]]"
7
+ Card.create! name: '*follow+*right+*input', type_code: :pointer, content: '[[radio]]'
8
8
  Card.create! name: '*follow+*right+*help', content: 'Get notified about changes', type_code: :phrase
9
9
 
10
- Card.create! name: "*followers", codename: "followers"
11
- Card.create! name: "*follow fields", codename: "follow_fields", type_code: :setting
12
- Card.create! name: "*follow fields+*right+*help", content: ""
13
- Card.create! name: "*follow fields+*right+*default", type_code: :pointer
14
- Card.create! name: "*all+*follow fields", content: "[[*include]]", type_code: :pointer
10
+ Card.create! name: '*followers', codename: 'followers'
11
+ Card.create! name: '*follow fields', codename: 'follow_fields', type_code: :setting
12
+ Card.create! name: '*follow fields+*right+*help', content: ''
13
+ Card.create! name: '*follow fields+*right+*default', type_code: :pointer
14
+ Card.create! name: '*all+*follow fields', content: '[[*include]]', type_code: :pointer
15
15
 
16
16
  # follow options
17
- Card.create! name: "*always", codename: "always"
18
- Card.create! name: "*never", codename: "never"
17
+ Card.create! name: '*always', codename: 'always'
18
+ Card.create! name: '*never', codename: 'never'
19
19
 
20
20
  # default follow rule
21
21
  Card.create! name: '*follow defaults', codename: 'follow_defaults', type_code: :pointer
22
- Card.create! name: "*all+*all+*follow", type_code: :pointer, content: '[[*never]]'
22
+ Card.create! name: '*all+*all+*follow', type_code: :pointer, content: '[[*never]]'
23
23
  end
24
24
  end
@@ -2,23 +2,23 @@
2
2
 
3
3
  class ImportBootstrapLayout < Card::CoreMigration
4
4
  def up
5
- layout = Card.fetch "Default Layout"
5
+ layout = Card.fetch 'Default Layout'
6
6
  if layout
7
- layout.name = "Classic Layout"
7
+ layout.name = 'Classic Layout'
8
8
  layout.update_referers = true
9
9
  layout.save!
10
10
  end
11
11
 
12
- import_json "bootstrap_layout.json"#, pristine: true, output_file: nil
12
+ import_json 'bootstrap_layout.json' # , pristine: true, output_file: nil
13
13
  if layout && layout.pristine? &&
14
- all = Card[:all]
14
+ all = Card[:all]
15
15
  layout_rule_card = all.fetch trait: :layout
16
16
  style_rule_card = all.fetch trait: :style
17
17
  if layout_rule_card.pristine? && style_rule_card.pristine?
18
18
  layout_rule_card.update_attributes! content: '[[Default Layout]]'
19
19
  if style_rule_card.item_names.first == 'customized classic skin'
20
20
  Card.create! name: 'customized bootstrap skin', type: 'Skin',
21
- content: "[[classic bootstrap skin]]\n[[*css]]"
21
+ content: "[[classic bootstrap skin]]\n[[*css]]"
22
22
  style_rule_card.update_attributes! content: '[[customized bootstrap skin]]'
23
23
  else
24
24
  style_rule_card.update_attributes! content: '[[classic bootstrap skin]]'
@@ -26,7 +26,7 @@ class ImportBootstrapLayout < Card::CoreMigration
26
26
  end
27
27
  end
28
28
 
29
- Card.create! name: "*header+*self+*read", content: '[[Anyone]]'
29
+ Card.create! name: '*header+*self+*read', content: '[[Anyone]]'
30
30
 
31
31
  # merge "style: functional" and "style: standard" into "style: cards"
32
32
  old_func = Card[:style_functional]
@@ -39,7 +39,6 @@ class ImportBootstrapLayout < Card::CoreMigration
39
39
  old_stand.codename = nil
40
40
  old_stand.delete!
41
41
 
42
-
43
42
  # these are hard-coded
44
43
  Card.create! name: 'theme: bootstrap_default', type_code: :css, codename: 'theme_bootstrap_default'
45
44
  Card.create! name: 'style: bootstrap', type_code: :css, codename: 'bootstrap_css'
@@ -55,16 +54,15 @@ class ImportBootstrapLayout < Card::CoreMigration
55
54
  # retain old behavior (default view was content, now titled)
56
55
  Card.create! name: '*all+*default html view', content: 'content'
57
56
 
58
- # update layouts to have explicit views in inclusions
59
- Card.search( type_id: Card::LayoutTypeID ) do |lcard|
57
+ # update layouts to have explicit views in nests
58
+ Card.search(type_id: Card::LayoutTypeID) do |lcard|
60
59
  lcontent = Card::Content.new lcard.content, lcard
61
- lcontent.find_chunks( Card::Chunk::Include ).each do |nest|
62
- nest.explicit_view = (nest.options[:inc_name]=='_main' ? 'open' : 'core')
60
+ lcontent.find_chunks(Card::Chunk::Include).each do |nest|
61
+ nest.explicit_view = (nest.options[:inc_name] == '_main' ? 'open' : 'core')
63
62
  end
64
63
  lcard.update_attributes! content: lcontent.to_s
65
64
  end
66
65
 
67
66
  Card::Cache.reset_all
68
-
69
67
  end
70
68
  end
@@ -2,15 +2,15 @@
2
2
 
3
3
  class FollowingToFollowRule < Card::CoreMigration
4
4
  def up
5
- Card.search(right: {codename: 'following'}, left: {type: 'user'}).each do |following_card|
5
+ Card.search(right: { codename: 'following' }, left: { type: 'user' }).each do |following_card|
6
6
  user_name = following_card.cardname.left
7
7
  following_card.item_names.each do |followed_set_name|
8
8
  set_card = Card.fetch(followed_set_name, new: {})
9
- if (set_card.type_code != :set)
9
+ if set_card.type_code != :set
10
10
  set_card = set_card.default_follow_set_card
11
11
  end
12
- rule = Card.fetch set_card.follow_rule_name(user_name), new: {type: 'pointer'}
13
- rule.content = "[[*always]]"
12
+ rule = Card.fetch set_card.follow_rule_name(user_name), new: { type: 'pointer' }
13
+ rule.content = '[[*always]]'
14
14
  rule.save!
15
15
  end
16
16
  end
@@ -3,7 +3,7 @@
3
3
  class BootstrapThemes < Card::CoreMigration
4
4
  def up
5
5
  Card.create! name: 'themeless bootstrap skin', type_code: :skin, content: "[[style: bootstrap]]\n[[style: jquery-ui-smoothness]]\n[[style: cards]]\n[[style: right sidebar]]\n[[style: bootstrap cards]]"
6
- %w{cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti }.each do |theme|
6
+ %w(cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti ).each do |theme|
7
7
  Card.create! name: "theme: #{theme}", type_code: :css, codename: "theme_#{theme}"
8
8
  Card.create! name: "#{theme} skin", type_code: :skin, codename: "#{theme}_skin", content: "[[themeless bootstrap skin]]\n[[theme: #{theme}]]"
9
9
  end
@@ -16,7 +16,7 @@ class BootstrapThemes < Card::CoreMigration
16
16
  style_right = Card[:style].fetch trait: :right, new: {}
17
17
 
18
18
  style_right_options = style_right.fetch trait: :options, new: {}
19
- style_right_options.content = %[{"type":"Skin","sort":"name"}]
19
+ style_right_options.content = %({"type":"Skin","sort":"name"})
20
20
  style_right_options.save!
21
21
 
22
22
  style_right_input = style_right.fetch trait: :input, new: {}
@@ -30,7 +30,7 @@ class BootstrapThemes < Card::CoreMigration
30
30
  import_json 'skin_images.json'
31
31
 
32
32
  if sidebar_card = Card['*sidebar']
33
- new_content = sidebar_card.content.gsub( /(\*(logo|credit))\|content/, '\1|content_panel' )
33
+ new_content = sidebar_card.content.gsub(/(\*(logo|credit))\|content/, '\1|content_panel')
34
34
  sidebar_card.update_attributes! content: new_content
35
35
  end
36
36
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  class BootswatchThemes < Card::CoreMigration
4
4
  def up
5
- themeless = Card.fetch 'themeless bootstrap skin', new: {type_code: :skin}
5
+ themeless = Card.fetch 'themeless bootstrap skin', new: { type_code: :skin }
6
6
  themeless.update_attributes! content: "[[style: jquery-ui-smoothness]]\n[[style: cards]]\n[[style: right sidebar]]\n[[style: bootstrap cards]]"
7
7
  bs = Card[:bootstrap_css]
8
8
  bs.update_attributes! codename: nil
@@ -10,18 +10,18 @@ class BootswatchThemes < Card::CoreMigration
10
10
 
11
11
  Card.create! name: 'bootswatch shared', type_code: :scss, codename: 'bootswatch_shared'
12
12
  Card.create! name: 'bootswatch theme+*right+*structure', type_id: Card::ScssID, content: '{{_left+variables}}{{bootswatch shared}}{{_left+style}}'
13
- %w{bootstrap_default cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti }.each do |theme_name|
13
+ %w(bootstrap_default cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti ).each do |theme_name|
14
14
  path = data_path "themes/#{theme_name}"
15
15
  theme = Card.fetch "#{theme_name} skin"
16
16
  if theme
17
17
  theme.update_attributes! type_id: Card::SkinID, content: "[[themeless bootstrap skin]]\n[[+bootswatch theme]]", subcards: {
18
- "+variables" => {type_id: Card::ScssID, content: File.read(File.join path, '_variables.scss')},
19
- "+style" => {type_id: Card::ScssID, content: File.read(File.join path, '_bootswatch.scss')}
18
+ '+variables' => { type_id: Card::ScssID, content: File.read(File.join path, '_variables.scss') },
19
+ '+style' => { type_id: Card::ScssID, content: File.read(File.join path, '_bootswatch.scss') }
20
20
  }
21
21
  else
22
- Card.create! name: "#{theme_name.sub('_',' ')} skin", type_id: Card::SkinID, content: "[[themeless bootstrap skin]]\n[[+bootswatch theme]]", subcards: {
23
- "+variables" => {type_id: Card::ScssID, content: File.read(File.join path, '_variables.scss')},
24
- "+style" => {type_id: Card::ScssID, content: File.read(File.join path, '_bootswatch.scss')}
22
+ Card.create! name: "#{theme_name.sub('_', ' ')} skin", type_id: Card::SkinID, content: "[[themeless bootstrap skin]]\n[[+bootswatch theme]]", subcards: {
23
+ '+variables' => { type_id: Card::ScssID, content: File.read(File.join path, '_variables.scss') },
24
+ '+style' => { type_id: Card::ScssID, content: File.read(File.join path, '_bootswatch.scss') }
25
25
  }
26
26
  end
27
27
  end
@@ -2,32 +2,30 @@
2
2
 
3
3
  class SearchCardContext < Card::CoreMigration
4
4
  def up
5
- sep = %r{\W}
5
+ sep = /\W/
6
6
  replace = [
7
- ['[lr]+','l\\1'],
8
- ['[LR]+','L\\1'],
9
- ['(?=[LR]*[lr]+)(?=[lr]*[LR]+)[lrLR]+','l\\1'], # mix of lowercase and uppercase l's and r's
10
- ['left', 'LL'],
11
- ['right', 'LR'],
12
- ['self', 'left'],
13
- ['', 'left'],
7
+ ['[lr]+', 'l\\1'],
8
+ ['[LR]+', 'L\\1'],
9
+ ['(?=[LR]*[lr]+)(?=[lr]*[LR]+)[lrLR]+', 'l\\1'], # mix of lowercase and uppercase l's and r's
10
+ %w(left LL),
11
+ %w(right LR),
12
+ %w(self left),
13
+ ['', 'left']
14
14
  ]
15
15
  Card.search(type_id: ['in', Card::SearchTypeID, Card::SetID]).each do |card|
16
- if card.cardname.junction? && card.real?
17
- content = card.content
16
+ next unless card.cardname.junction? && card.real?
17
+ content = card.content
18
+ replace.each do |key, val|
19
+ content.gsub!(/(#{sep})_(#{key})(?=#{sep})/, "\\1_#{val}")
20
+ end
21
+ card.update_column :db_content, content
22
+ card.actions.each do |action|
23
+ next unless (content_change = action.change_for(:db_content).first)
24
+ content = content_change.value
18
25
  replace.each do |key, val|
19
26
  content.gsub!(/(#{sep})_(#{key})(?=#{sep})/, "\\1_#{val}")
20
27
  end
21
- card.update_column :db_content, content
22
- card.actions.each do |action|
23
- if (content_change = action.change_for(:db_content).first)
24
- content = content_change.value
25
- replace.each do |key, val|
26
- content.gsub!(/(#{sep})_(#{key})(?=#{sep})/, "\\1_#{val}")
27
- end
28
- content_change.update_column :value, content
29
- end
30
- end
28
+ content_change.update_column :value, content
31
29
  end
32
30
  end
33
31
  end
@@ -2,11 +2,10 @@
2
2
 
3
3
  class MenuCompatibility < Card::CoreMigration
4
4
  def up
5
-
6
5
  # Add bootswatch shared to old skins so that menu works
7
6
  bootswatch_shared = Card[:bootswatch_shared]
8
7
  Card.search(type_id: Card::SkinID) do |skin|
9
- if skin.item_cards.find { |item_card| item_card.codename.to_s == 'style_bootstrap_compatible'}
8
+ if skin.item_cards.find { |item_card| item_card.codename.to_s == 'style_bootstrap_compatible' }
10
9
  skin.add_item! bootswatch_shared.name
11
10
  end
12
11
  end
@@ -16,11 +15,8 @@ class MenuCompatibility < Card::CoreMigration
16
15
  [:style, :script].each do |setting|
17
16
  Card.search(
18
17
  right_id: Card::MachineOutputID,
19
- left: { right: {codename: setting.to_s } }
20
- ).each do |output_card|
21
- output_card.delete!
22
- end
18
+ left: { right: { codename: setting.to_s } }
19
+ ).each(&:delete!)
23
20
  end
24
-
25
21
  end
26
22
  end
@@ -2,12 +2,11 @@
2
2
 
3
3
  class FixSkinImages < Card::CoreMigration
4
4
  def up
5
-
6
5
  # This is needed because the bootswatch_themes migration removed codenames.
7
6
  # They were no longer needed for style handling but are still needed for images
8
- %w{bootstrap_default cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti }.each do |theme_name|
7
+ %w(bootstrap_default cerulean cosmo cyborg darkly flatly journal lumen paper readable sandstone simplex slate spacelab superhero united yeti ).each do |theme_name|
9
8
  theme_name = "#{theme_name}_skin"
10
- Card.fetch( theme_name ).update_attributes! codename: theme_name
9
+ Card.fetch(theme_name).update_attributes! codename: theme_name
11
10
  end
12
11
  end
13
12
  end
@@ -2,12 +2,12 @@
2
2
 
3
3
  class AddSessionCardtype < Card::CoreMigration
4
4
  def up
5
- session_card_name = Card.exists?( 'Session' ) ? 'BrowserSession' : 'Session'
5
+ session_card_name = Card.exists?('Session') ? 'BrowserSession' : 'Session'
6
6
  Card.create! name: session_card_name, type_code: :cardtype, codename: 'session',
7
- subcards: {'+description'=>{content: 'Session cards are for non-permanent content.
7
+ subcards: { '+description' => { content: 'Session cards are for non-permanent content.
8
8
  They are not stored in the database and can have different values for different users.
9
9
  You can use a Session card to keep track of certain state of a particular user like the content
10
- of shopping basket.'}}
10
+ of shopping basket.' } }
11
11
  Card::Cache.reset_all
12
12
  Card.create! name: '*edit toolbar pinned', type_code: :session, codename: 'edit_toolbar_pinned'
13
13
  Card.create! name: '*toolbar pinned', type_code: :session, codename: 'toolbar_pinned'
@@ -3,10 +3,10 @@
3
3
  class AddRecentSettingSessionCard < Card::CoreMigration
4
4
  def up
5
5
  Card.create! name: '*recent settings', codename: 'recent_settings', type_code: :pointer, subcards: {
6
- '+*self+*options' => {type_code: :search_type, content: '{"type":"setting"}'},
7
- '+*self+*update' => {content: '[[Anyone]]'},
8
- '+*self**create' => {content: '[[Anyone]]'},
9
- '+*self**read' => {content: '[[Anyone]]'}
6
+ '+*self+*options' => { type_code: :search_type, content: '{"type":"setting"}' },
7
+ '+*self+*update' => { content: '[[Anyone]]' },
8
+ '+*self**create' => { content: '[[Anyone]]' },
9
+ '+*self**read' => { content: '[[Anyone]]' }
10
10
  }
11
11
  end
12
12
  end
@@ -3,9 +3,9 @@
3
3
  class AddDebuggerSessionCard < Card::CoreMigration
4
4
  def up
5
5
  Card.create! name: '*debugger', type_code: :session, codename: 'debugger',
6
- subcards: {
7
- '+*self+*options'=>'[[on]]',
8
- '+*self+*input'=>'[[checkbox]]',
9
- '+*self+*help'=>'show more useful error pages'}
6
+ subcards: {
7
+ '+*self+*options' => '[[on]]',
8
+ '+*self+*input' => '[[checkbox]]',
9
+ '+*self+*help' => 'show more useful error pages' }
10
10
  end
11
11
  end