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
@@ -30,19 +30,19 @@ format :html do
30
30
  end
31
31
 
32
32
  def email_warning
33
- %{
33
+ %(
34
34
  Email delivery is turned off.
35
35
  Change settings in config/application.rb to send sign up notifications.
36
- }
36
+ )
37
37
  end
38
38
 
39
39
  def recaptcha_warning
40
40
  warning =
41
41
  if Card::Env.localhost?
42
- %{Your captcha is currently working with temporary settings. This is fine for a local installation, but you will need new recaptcha keys if you want to make this site public.}
42
+ %(Your captcha is currently working with temporary settings. This is fine for a local installation, but you will need new recaptcha keys if you want to make this site public.)
43
43
  else
44
- process_content(%{You are configured to use [[*captcha]], but for that to work you need new recaptcha keys.
45
- })
44
+ process_content(%(You are configured to use [[*captcha]], but for that to work you need new recaptcha keys.
45
+ ))
46
46
  end
47
47
  <<-HTML
48
48
  <p>
@@ -1,5 +1,5 @@
1
1
 
2
- view :raw do |args|
2
+ view :raw do |_args|
3
3
  '<!-- *alerts is deprecated. please remove from layout -->'
4
4
  end
5
5
  view :core, :raw
@@ -1,5 +1,5 @@
1
1
 
2
- event :admin_tasks, on: :update, before: :approve do
2
+ event :admin_tasks, :initialize, on: :update do
3
3
  if (task = Env.params[:task])
4
4
  if Auth.always_ok?
5
5
  case task.to_sym
@@ -1,6 +1,6 @@
1
1
 
2
2
  format :html do
3
- view :raw do |args|
3
+ view :raw do |_args|
4
4
  '<!-- *foot is deprecated. please remove from layout -->'
5
5
  end
6
6
 
@@ -3,17 +3,17 @@ format :html do
3
3
  %(
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
6
- #{ head_title }
7
- #{ head_buttons }
8
- #{ head_stylesheets }
9
- #{ head_javascript }
6
+ #{head_title}
7
+ #{head_buttons}
8
+ #{head_stylesheets}
9
+ #{head_javascript}
10
10
  )
11
11
  end
12
12
 
13
13
  view :core do |args|
14
14
  case
15
15
  when focal? then CGI.escapeHTML _render_raw(args)
16
- when @mainline then "(*head)"
16
+ when @mainline then '(*head)'
17
17
  else _render_raw(args)
18
18
  end
19
19
  end
@@ -21,8 +21,8 @@ format :html do
21
21
  def head_title
22
22
  title = root.card && root.card.name
23
23
  title = nil if title.blank?
24
- title = params[:action] if title=='*placeholder'
25
- %(<title>#{title ? "#{title} - " : ''}#{ Card.global_setting :title }</title>)
24
+ title = params[:action] if title == '*placeholder'
25
+ %(<title>#{title ? "#{title} - " : ''}#{Card.global_setting :title}</title>)
26
26
  end
27
27
 
28
28
  def head_buttons
@@ -30,9 +30,7 @@ format :html do
30
30
  if root.card
31
31
  bits << universal_edit_button
32
32
  # RSS # move to mods!
33
- if root.card.type_id == SearchTypeID
34
- bits << rss_link
35
- end
33
+ bits << rss_link if root.card.type_id == SearchTypeID
36
34
  end
37
35
  bits.compact.join "\n "
38
36
  end
@@ -41,7 +39,7 @@ format :html do
41
39
  [:favicon, :logo].each do |name|
42
40
  if (c = Card[name]) && c.type_id == ImageID && !c.db_content.blank?
43
41
  href = subformat(c)._render_source size: :small
44
- return %{<link rel="shortcut icon" href="#{ href }" />}
42
+ return %(<link rel="shortcut icon" href="#{href}" />)
45
43
  end
46
44
  end
47
45
  end
@@ -49,14 +47,14 @@ format :html do
49
47
  def universal_edit_button
50
48
  return if root.card.new_record? || !root.card.ok?(:update)
51
49
  href = root.path view: :edit
52
- %{<link rel="alternate" type="application/x-wiki" title="Edit this page!" href="#{ href }"/>}
50
+ %(<link rel="alternate" type="application/x-wiki" title="Edit this page!" href="#{href}"/>)
53
51
  end
54
52
 
55
53
  def rss_link
56
54
  opts = { format: :rss }
57
55
  root.search_params[:vars].each { |key, val| opts["_#{key}"] = val }
58
56
  href = page_path root.card.cardname, opts
59
- %{<link rel="alternate" type="application/rss+xml" title="RSS" href="#{href}" />}
57
+ %(<link rel="alternate" type="application/rss+xml" title="RSS" href="#{href}" />)
60
58
  end
61
59
 
62
60
  def head_stylesheets
@@ -65,17 +63,17 @@ format :html do
65
63
  style_card ||= root.card.rule_card :style
66
64
  @css_path =
67
65
  if params[:debug] == 'style'
68
- page_path(style_card.cardname, item: :import, format: :css)
66
+ page_path(style_card.cardname, item: :import, format: :css)
69
67
  elsif style_card
70
68
  card_path style_card.machine_output_url
71
69
  end
72
70
  return unless @css_path
73
- %{<link href="#{@css_path}" media="all" rel="stylesheet" type="text/css" />}
71
+ %(<link href="#{@css_path}" media="all" rel="stylesheet" type="text/css" />)
74
72
  end
75
73
 
76
74
  def head_javascript
77
75
  varvals = [
78
- "window.wagn={rootPath:'#{ Card.config.relative_url_root }'}",
76
+ "window.wagn={rootPath:'#{Card.config.relative_url_root}'}",
79
77
  # tinyMCE doesn't load on non-root wagns w/o preinit line
80
78
  "window.tinyMCEPreInit={base:\"#{card_path 'assets/tinymce'}\",query:'3.5.9',suffix:''}"
81
79
  ]
@@ -98,11 +96,11 @@ format :html do
98
96
  end
99
97
  ie9_card = Card[:script_html5shiv_printshiv]
100
98
  <<-HTML
101
- #{ javascript_tag do varvals * ';' end }
102
- #{ @js_tag if @js_tag }
103
- <!--[if lt IE 9]>#{ javascript_include_tag ie9_card.machine_output_url if ie9_card }<![endif]-->
104
- #{ javascript_tag { "wagn.setTinyMCEConfig('#{ escape_javascript Card.global_setting(:tiny_mce).to_s }')" } }
105
- #{ google_analytics_head_javascript }
99
+ #{javascript_tag { varvals * ';' }}
100
+ #{@js_tag if @js_tag}
101
+ <!--[if lt IE 9]>#{javascript_include_tag ie9_card.machine_output_url if ie9_card}<![endif]-->
102
+ #{javascript_tag { "wagn.setTinyMCEConfig('#{escape_javascript Card.global_setting(:tiny_mce).to_s}')" }}
103
+ #{google_analytics_head_javascript}
106
104
  <script type="text/javascript">
107
105
  $('document').ready(function() {
108
106
  $('.card-slot').trigger('slotReady');
@@ -111,7 +109,6 @@ format :html do
111
109
  HTML
112
110
  end
113
111
 
114
-
115
112
  def google_analytics_head_javascript
116
113
  return unless (ga_key = Card.global_setting(:google_analytics_key))
117
114
  <<-JAVASCRIPT
@@ -1,10 +1,9 @@
1
1
 
2
2
  format :html do
3
-
4
- view :raw do |args|
3
+ view :raw do |_args|
5
4
  input_args = { class: 'navbox form-control' }
6
5
  @@placeholder ||= begin
7
- p = Card["#{Card[:navbox].name}+*placeholder"] and p.raw_content
6
+ (p = Card["#{Card[:navbox].name}+*placeholder"]) && p.raw_content
8
7
  end
9
8
  input_args[:placeholder] = @@placeholder if @@placeholder
10
9
 
@@ -22,12 +21,9 @@ format :html do
22
21
  end
23
22
 
24
23
  view :core do |args|
25
- tag_args = { method: 'get', role: 'search', class: "nodblclick navbox-form #{args[:navbar_class]}"}
24
+ tag_args = { method: 'get', role: 'search', class: "nodblclick navbox-form #{args[:navbar_class]}" }
26
25
  form_tag Card.path_setting('/:search'), tag_args do
27
26
  _render_raw args
28
27
  end
29
-
30
28
  end
31
-
32
29
  end
33
-
@@ -1,5 +1,5 @@
1
1
 
2
- view :raw do |args|
2
+ view :raw do |_args|
3
3
  Time.now.strftime '%A, %B %d, %Y %I:%M %p %Z'
4
4
  end
5
5
 
@@ -1,10 +1,9 @@
1
1
 
2
2
  view :title do |args|
3
- super args.merge( title: 'Recent Changes' )
3
+ super args.merge(title: 'Recent Changes')
4
4
  end
5
5
 
6
6
  format :html do
7
-
8
7
  view :card_list do |args|
9
8
  search_vars[:item] ||= :change
10
9
 
@@ -13,36 +12,31 @@ format :html do
13
12
  begin
14
13
  stamp = card.updated_at
15
14
  day = Date.new(stamp.year, stamp.month, stamp.day)
16
- rescue =>e
15
+ rescue => e
17
16
  day = Date.today
18
- card.content = "(error getting date)"
17
+ card.content = '(error getting date)'
19
18
  end
20
19
  cards_by_day[day] << card if card.followable?
21
20
  end
22
21
 
23
22
  paging = _optional_render :paging, args
24
- %{
25
- #{ paging }
26
- #{
27
- cards_by_day.keys.sort.reverse.map do |day|
28
- %{
29
- <h2>#{format_date(day, include_time = false) }</h2>
23
+ %(
24
+ #{paging}
25
+ #{cards_by_day.keys.sort.reverse.map do |day|
26
+ %(
27
+ <h2>#{format_date(day, include_time = false)}</h2>
30
28
  <div class="search-result-list">
31
- #{
32
- cards_by_day[day].map do |card|
33
- %{
34
- <div class="search-result-item item-#{ search_vars[:item] }">
35
- #{ nest(card, view: search_vars[:item]) }
36
- </div>
37
- }
38
- end * ' '
39
- }
29
+ #{cards_by_day[day].map do |card|
30
+ %(
31
+ <div class="search-result-item item-#{search_vars[:item]}">
32
+ #{nest(card, view: search_vars[:item])}
33
+ </div>
34
+ )
35
+ end * ' '}
40
36
  </div>
41
- }
42
- end * "\n"
43
- }
44
- #{ paging }
45
- }
37
+ )
38
+ end * "\n"}
39
+ #{paging}
40
+ )
46
41
  end
47
-
48
42
  end
@@ -3,7 +3,7 @@ format :html do
3
3
  view :title do |args|
4
4
  vars = root.search_params[:vars]
5
5
  if vars && vars[:keyword]
6
- args.merge! title: %{Search results for: <span class="search-keyword">}\
6
+ args[:title] = %(Search results for: <span class="search-keyword">)\
7
7
  "#{vars[:keyword]}</span>"
8
8
  end
9
9
  super args
@@ -39,9 +39,7 @@ format :json do
39
39
 
40
40
  def goto_items term, exact
41
41
  goto_names = Card.search goto_wql(term), "goto items for term: #{term}"
42
- if add_exact_to_goto_names? exact, goto_names
43
- goto_names.unshift exact.name
44
- end
42
+ goto_names.unshift exact.name if add_exact_to_goto_names? exact, goto_names
45
43
  goto_names.map do |name|
46
44
  [name, highlight(name, term), name.to_name.url_key]
47
45
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  format :html do
3
3
  view :open do |args|
4
- args.merge! optional_help: :show
4
+ args[:optional_help] = :show
5
5
  super args
6
6
  end
7
7
 
@@ -25,8 +25,8 @@ format :html do
25
25
  end
26
26
  args[:buttons] += raw(
27
27
  "<div style='float:right'>" \
28
- "#{ view_link 'RESET PASSWORD', :edit,
29
- path_opts: { slot: { hide: :toolbar } } }" \
28
+ "#{view_link 'RESET PASSWORD', :edit,
29
+ path_opts: { slot: { hide: :toolbar } }}" \
30
30
  '</div>') # FIXME: hardcoded styling
31
31
  args
32
32
  end
@@ -36,7 +36,7 @@ format :html do
36
36
  hidden: { success: "REDIRECT: #{Env.interrupted_action || '*previous'}" },
37
37
  recaptcha: :off
38
38
  }
39
- with_inclusion_mode :edit do
39
+ with_nest_mode :edit do
40
40
  card_form :update, form_args do
41
41
  [
42
42
  _optional_render(:content_formgroup, args.merge(structure: true)),
@@ -79,7 +79,7 @@ format :html do
79
79
  end
80
80
  end
81
81
 
82
- event :signin, before: :approve, on: :update do
82
+ event :signin, :validate, on: :update do
83
83
  email = subfield :email
84
84
  email &&= email.content
85
85
  pword = subfield :password
@@ -127,7 +127,7 @@ event :send_reset_password_token,
127
127
  end
128
128
  end
129
129
 
130
- event :signout, before: :approve, on: :delete do
130
+ event :signout, :validate, on: :delete do
131
131
  Auth.signin nil
132
132
  abort :success
133
133
  end
@@ -1,9 +1,9 @@
1
1
 
2
2
  format :html do
3
- view :core do |args|
3
+ view :core do |_args|
4
4
  oldmem = session[:memory]
5
5
  session[:memory] = newmem = card.profile_memory
6
- stats = %{
6
+ stats = %(
7
7
  <table>
8
8
  <tr>
9
9
  <th>Stat</th>
@@ -12,87 +12,80 @@ format :html do
12
12
  </tr>
13
13
  <tr>
14
14
  <td>cards</td>
15
- <td>#{ Card.where(trash: false).count }</td>
15
+ <td>#{Card.where(trash: false).count}</td>
16
16
  <td></td>
17
17
  </tr>
18
18
  <tr>
19
19
  <td>trashed cards</td>
20
- <td>#{ Card.where(trash: true).count }</td>
21
- <td>#{link_to 'delete all', card_path( 'update/:all?task=empty_trash' )}</td>
20
+ <td>#{Card.where(trash: true).count}</td>
21
+ <td>#{link_to 'delete all', card_path('update/:all?task=empty_trash')}</td>
22
22
  </tr>
23
23
  <tr>
24
24
  <td>actions</td>
25
- <td>#{ Card::Action.count }</td>
26
- <td>#{link_to 'delete old', card_path( 'update/:all?task=delete_old_revisions' ) }</td>
25
+ <td>#{Card::Action.count}</td>
26
+ <td>#{link_to 'delete old', card_path('update/:all?task=delete_old_revisions')}</td>
27
27
  </tr>
28
28
  <tr><td>references</td>
29
- <td>#{ Card::Reference.count }</td>
30
- <td>#{link_to 'repair all', card_path( 'update/:all?task=repair_references' ) }</td>
29
+ <td>#{Card::Reference.count}</td>
30
+ <td>#{link_to 'repair all', card_path('update/:all?task=repair_references')}</td>
31
31
  </tr>
32
32
  <tr>
33
33
  <td>sessions</td>
34
- <td>#{ ActiveRecord::SessionStore::Session.count }</td>
34
+ <td>#{ActiveRecord::SessionStore::Session.count}</td>
35
35
  <td>
36
36
  delete older than
37
- #{ delete_sessions_link 1 }
38
- #{ delete_sessions_link 2 }
39
- #{ delete_sessions_link 3 }
37
+ #{delete_sessions_link 1}
38
+ #{delete_sessions_link 2}
39
+ #{delete_sessions_link 3}
40
40
  months
41
41
  </td>
42
42
  </tr>
43
- #{
44
- if Card.config.view_cache
45
- %{
43
+ #{if Card.config.view_cache
44
+ %(
46
45
  <tr>
47
46
  <td>view cache</td>
48
- <td>#{ Card::ViewCache.count }</td>
49
- <td>#{link_to 'clear view cache', card_path( 'update/:all?task=clear_view_cache' ) }</td>
47
+ <td>#{Card::ViewCache.count}</td>
48
+ <td>#{link_to 'clear view cache', card_path('update/:all?task=clear_view_cache')}</td>
50
49
  </tr>
51
- }
52
- end
53
- }
50
+ )
51
+ end}
54
52
 
55
53
  <tr>
56
54
  <td>memory now</td>
57
- <td>#{ newmem }M</td>
58
- <td>#{link_to 'clear cache', card_path( 'update/:all?task=clear_cache' ) }</td>
55
+ <td>#{newmem}M</td>
56
+ <td>#{link_to 'clear cache', card_path('update/:all?task=clear_cache')}</td>
59
57
  </tr>
60
- #{
61
- if oldmem
62
- %{
58
+ #{if oldmem
59
+ %(
63
60
  <tr>
64
61
  <td>memory prev</td>
65
- <td>#{ oldmem }M</td>
62
+ <td>#{oldmem}M</td>
66
63
  <td></td>
67
64
  </tr>
68
65
  <tr>
69
66
  <td>memory diff</td>
70
- <td>#{ newmem - oldmem }M</td>
67
+ <td>#{newmem - oldmem}M</td>
71
68
  <td></td>
72
69
  </tr>
73
70
 
74
- }
75
- end
76
- }
71
+ )
72
+ end}
77
73
  </table>
78
- }
74
+ )
79
75
  end
80
76
 
81
77
  def delete_sessions_link months
82
- link_to months, card_path( "update/:all?task=delete_old_sessions&months=#{months}")
78
+ link_to months, card_path("update/:all?task=delete_old_sessions&months=#{months}")
83
79
  end
84
80
  end
85
81
 
86
-
87
-
88
-
89
82
  def get_current_memory_usage
90
83
  `ps -o rss= -p #{Process.pid}`.to_i
91
84
  end
92
85
 
93
- def profile_memory(&block)
86
+ def profile_memory &block
94
87
  before = get_current_memory_usage
95
- file, line, _ = caller[0].split(':')
88
+ file, line, = caller[0].split(':')
96
89
  if block_given?
97
90
  instance_eval(&block)
98
91
  (get_current_memory_usage - before) / 1024