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
@@ -6,16 +6,20 @@ end
6
6
 
7
7
  # must be called on all actions and before :set_name, :process_subcards and
8
8
  # :validate_delete_children
9
- event :assign_act,
10
- before: :prepare,
11
- when: proc { |c| c.history? || c.respond_to?(:attachment) } do
12
- @current_act = (@supercard && @supercard.current_act) ||
13
- Card::Act.create(ip_address: Env.ip)
14
- end
15
-
16
- event :assign_action, after: :assign_act do
9
+ # event :assign_act,
10
+ # after: :identify_action,
11
+ # when: proc { |c| c.history? || c.respond_to?(:attachment) } do
12
+ # @current_act = (@supercard && @supercard.current_act) ||
13
+ # Card::Act.create(ip_address: Env.ip)
14
+ # assign_action
15
+ # end
16
+ #
17
+ event :assign_action, :initialize,
18
+ when: proc { |c| c.history? || c.respond_to?(:attachment) } do
19
+ @current_act = director.need_act
17
20
  @current_action = Card::Action.create(
18
- card_act_id: @current_act.id, action_type: @action,
21
+ card_act_id: @current_act.id,
22
+ action_type: @action,
19
23
  draft: (Env.params['draft'] == 'true')
20
24
  )
21
25
  if @supercard && @supercard != self
@@ -29,7 +33,8 @@ end
29
33
 
30
34
  # stores changes in the changes table and assigns them to the current action
31
35
  # removes the action if there are no changes
32
- event :finalize_action, after: :stored, when: proc { |c| c.finalize_action? } do
36
+ event :finalize_action, :finalize,
37
+ when: proc { |c| c.finalize_action? } do
33
38
  @changed_fields = Card::TRACKED_FIELDS.select do |f|
34
39
  changed_attributes.member? f
35
40
  end
@@ -57,8 +62,8 @@ event :finalize_act,
57
62
  end
58
63
  end
59
64
 
60
- event :rollback_actions,
61
- before: :approve, on: :update,
65
+ event :rollback_actions, :prepare_to_validate,
66
+ on: :update,
62
67
  when: proc { |c| c.rollback_request? } do
63
68
  revision = { subcards: {} }
64
69
  rollback_actions = Env.params['action_ids'].map do |a_id|
@@ -136,9 +141,7 @@ end
136
141
  def descendant_card_ids parent_ids=[id]
137
142
  more_ids = Card.where('left_id IN (?)', parent_ids).pluck('id')
138
143
 
139
- if !more_ids.empty?
140
- more_ids += descendant_card_ids more_ids
141
- end
144
+ more_ids += descendant_card_ids more_ids unless more_ids.empty?
142
145
  more_ids
143
146
  end
144
147
 
@@ -302,11 +305,11 @@ HAML
302
305
 
303
306
  def wrap_diff field, content
304
307
  return '' unless content.present?
305
- %{
308
+ %(
306
309
  <span class="#{field}-diff">
307
310
  #{content}
308
311
  </span>
309
- }
312
+ )
310
313
  end
311
314
 
312
315
  def name_changes action, hide_diff=false
@@ -3,7 +3,6 @@ class Card
3
3
  Format.register :rss
4
4
 
5
5
  class RssFormat < HtmlFormat
6
-
7
6
  def internal_url relative_path
8
7
  card_url relative_path
9
8
  end
@@ -1,7 +1,6 @@
1
1
 
2
2
  format :css do
3
-
4
- def get_inclusion_defaults nested_card
3
+ def get_nest_defaults _nested_card
5
4
  { view: :raw }
6
5
  end
7
6
 
@@ -11,32 +10,29 @@ format :css do
11
10
  end
12
11
 
13
12
  view :titled do |args|
14
- major_comment( %{ Style Card: "#{ card.name }" } ) +
15
- _render_core( args )
13
+ major_comment(%( Style Card: "#{card.name}" )) + _render_core(args)
16
14
  end
17
15
 
18
16
  view :content do |args|
19
- _render_core( args )
17
+ _render_core args
20
18
  end
21
19
 
22
- view :missing do |args|
20
+ view :missing do |_args|
23
21
  major_comment "MISSING Style Card: #{card.name}"
24
22
  end
25
23
 
26
- view :import do |args|
27
- %{\n@import url("#{ _render_url item: :import }");\n}
24
+ view :import do |_args|
25
+ %{\n@import url("#{_render_url item: :import}");\n}
28
26
  end
29
27
 
30
28
  view :url, perms: :none do |args|
31
29
  page_path card.cardname, format: :css, item: args[:item]
32
- # card_url _render_linkname
30
+ # card_url _render_linkname
33
31
  end
34
32
 
35
33
  def major_comment comment, char='-'
36
- edge = %{/* #{ char * ( comment.length+4 ) } */}
37
- main = %{/* #{ char } #{ comment } #{ char } */}
34
+ edge = %(/* #{char * (comment.length + 4)} */)
35
+ main = %(/* #{char} #{comment} #{char} */)
38
36
  "#{edge}\n#{main}\n#{edge}\n\n"
39
37
  end
40
-
41
-
42
38
  end
@@ -1,7 +1,7 @@
1
1
  require 'csv'
2
2
 
3
3
  format :csv do
4
- def get_inclusion_defaults nested_card
4
+ def get_nest_defaults _nested_card
5
5
  { view: :core }
6
6
  end
7
7
 
@@ -9,44 +9,41 @@ format :csv do
9
9
  @depth == 0 ? :csv_row : :name
10
10
  end
11
11
 
12
-
13
- view :csv_row do |args|
14
- array = _render_raw.scan( /\{\{[^\}]*\}\}/ ).map do |inc|
15
- process_content( inc ).strip
12
+ view :csv_row do |_args|
13
+ array = _render_raw.scan(/\{\{[^\}]*\}\}/).map do |inc|
14
+ process_content(inc).strip
16
15
  end
17
16
 
18
17
  CSV.generate_line(array).strip
19
- #strip is because search already joins with newlines
18
+ # strip is because search already joins with newlines
20
19
  end
21
20
 
22
- view :missing do |args|
21
+ view :missing do |_args|
23
22
  ''
24
23
  end
25
24
 
26
- view :csv_title_row do |args|
27
- #NOTE: assumes all cards have the same structure!
25
+ view :csv_title_row do |_args|
26
+ # NOTE: assumes all cards have the same structure!
28
27
  begin
29
28
  card1 = search_results.first
30
29
 
31
30
  parsed_content = Card::Content.new card1.raw_content, self
32
- unless String === parsed_content.__getobj__
31
+ if parsed_content.__getobj__.is_a? String
32
+ ''
33
+ else
33
34
  titles = parsed_content.map do |chunk|
34
35
  next if chunk.class != Card::Chunk::Include
35
36
  opts = chunk.options
36
- if ['name','link'].member? opts[:view]
37
+ if %w(name link).member? opts[:view]
37
38
  opts[:view]
38
39
  else
39
40
  opts[:inc_name].to_name.tag
40
41
  end
41
- end.compact.map {|title| title.to_s.upcase }
42
- CSV.generate_line titles
43
-
44
- else
45
- ''
42
+ end.compact
43
+ CSV.generate_line titles.map { |title| title.to_s.upcase }
46
44
  end
47
45
  rescue
48
46
  ''
49
47
  end
50
48
  end
51
-
52
49
  end
@@ -1,7 +1,6 @@
1
-
1
+
2
2
  format :js do
3
- view :include_tag do |args|
4
- %{\n#{javascript_include_tag page_path(card.cardname) }\n }
3
+ view :include_tag do |_args|
4
+ %(\n#{javascript_include_tag page_path(card.cardname)}\n )
5
5
  end
6
-
7
6
  end
@@ -20,8 +20,8 @@ format do
20
20
  name.titleize
21
21
  else
22
22
  if ::Set.new([
23
- :downcase, :upcase, :swapcase, :reverse, :succ
24
- ]).include?(variant.to_sym)
23
+ :downcase, :upcase, :swapcase, :reverse, :succ
24
+ ]).include?(variant.to_sym)
25
25
  name.send variant
26
26
  else
27
27
  name
@@ -1,12 +1,9 @@
1
1
  format :file do
2
-
3
- view :core do |args|
2
+ view :core do |_args|
4
3
  'File rendering of this card not yet supported'
5
4
  end
6
5
 
7
-
8
- view :style do |args|
6
+ view :style do |_args|
9
7
  nil
10
8
  end
11
-
12
9
  end
@@ -1,7 +1,6 @@
1
1
 
2
2
  format :json do
3
-
4
- def get_inclusion_defaults nested_card
3
+ def get_nest_defaults _nested_card
5
4
  { view: :atom }
6
5
  end
7
6
 
@@ -17,25 +16,28 @@ format :json do
17
16
  view ||= :content
18
17
  raw = render view, args
19
18
  case
20
- when String === raw ; raw
21
- when params[:compress] ; JSON( raw )
22
- else ; JSON.pretty_generate raw
19
+ when raw.is_a?(String) then raw
20
+ when params[:compress] then JSON(raw)
21
+ else JSON.pretty_generate raw
23
22
  end
24
23
  end
25
24
 
26
- view :name_complete do |args|
27
- card.item_cards complete: params['term'], limit: 8, sort: 'name', return: 'name', context: ''
25
+ view :name_complete do |_args|
26
+ card.item_cards complete: params['term'], limit: 8, sort: 'name',
27
+ return: 'name', context: ''
28
28
  end
29
29
 
30
- view :status, tags: :unknown_ok, perms: :none do |args|
31
- status = case
32
- when !card.known? ; :unknown
33
- # do we want the following to prevent fishing? of course, they can always post...
34
- when !card.ok?(:read) ; :unknown
35
- when card.real? ; :real
36
- when card.virtual? ; :virtual
37
- else ; :wtf
38
- end
30
+ view :status, tags: :unknown_ok, perms: :none do |_args|
31
+ status =
32
+ case
33
+ when !card.known? then :unknown
34
+ # do we want the following to prevent fishing? of course, they can always
35
+ # post...
36
+ when !card.ok?(:read) then :unknown
37
+ when card.real? then :real
38
+ when card.virtual? then :virtual
39
+ else :wtf
40
+ end
39
41
 
40
42
  hash = { key: card.key, url_key: card.cardname.url_key, status: status }
41
43
  hash[:id] = card.id if status == :real
@@ -43,7 +45,7 @@ format :json do
43
45
  hash
44
46
  end
45
47
 
46
- view :content do |args|
48
+ view :content do |_args|
47
49
  req = controller.request
48
50
  {
49
51
  url: (req && req.original_url),
@@ -62,5 +64,4 @@ format :json do
62
64
  h[:value] = _render_core args if @depth < max_depth
63
65
  h
64
66
  end
65
-
66
67
  end
@@ -23,12 +23,12 @@ format :rss do
23
23
  render_feed_body
24
24
  end
25
25
  end
26
- rescue =>e
26
+ rescue => e
27
27
  @xml.error "\n\nERROR rendering RSS: #{e.inspect}\n\n #{e.backtrace}"
28
28
  end
29
29
  end
30
30
 
31
- def raw_feed_items args
31
+ def raw_feed_items _args
32
32
  [card]
33
33
  end
34
34
 
@@ -46,7 +46,7 @@ format :rss do
46
46
  end
47
47
 
48
48
  view :feed_title do
49
- Card.global_setting(:title) + ' : ' + card.name.gsub(/^\*/,'')
49
+ Card.global_setting(:title) + ' : ' + card.name.gsub(/^\*/, '')
50
50
  end
51
51
 
52
52
  view :feed_item do |args|
@@ -1,8 +1,6 @@
1
1
 
2
2
  format :text do
3
-
4
3
  view :core do |args|
5
- HTMLEntities.new.decode "#{ strip_tags( super args ) }" #need this string method to get out of html_safe mode
4
+ HTMLEntities.new.decode strip_tags(super args).to_s # need this string method to get out of html_safe mode
6
5
  end
7
-
8
6
  end
@@ -3,11 +3,11 @@ def clean_html?
3
3
  end
4
4
 
5
5
  def diff_args
6
- {format: :raw}
6
+ { format: :raw }
7
7
  end
8
8
 
9
9
  format do
10
- view :closed_content do |args|
10
+ view :closed_content do |_args|
11
11
  ''
12
12
  end
13
13
 
@@ -16,12 +16,8 @@ format do
16
16
  end
17
17
  end
18
18
 
19
-
20
19
  format :html do
21
- view :editor do |args|
22
- text_area :content, rows: 5, class: 'card-content ace-editor-textarea', "data-card-type-code"=>card.type_code
20
+ view :editor do |_args|
21
+ text_area :content, rows: 5, class: 'card-content ace-editor-textarea', 'data-card-type-code' => card.type_code
23
22
  end
24
23
  end
25
-
26
-
27
-
@@ -1,13 +1,12 @@
1
1
  format :html do
2
-
3
- view :editor do |args|
2
+ view :editor do |_args|
4
3
  text_area :content,
5
4
  rows: 5,
6
5
  class: 'card-content',
7
6
  'data-card-type-code' => card.type_code
8
7
  end
9
8
 
10
- view :core do |args|
9
+ view :core do |_args|
11
10
  process_content_object(CGI.escapeHTML _render_raw)
12
11
  end
13
12
  end
@@ -1,27 +1,28 @@
1
1
 
2
2
 
3
- event :add_and_drop_items, before: :approve, on: :save do
3
+ event :add_and_drop_items, :prepare_to_validate, on: :save do
4
4
  adds = Env.params['add_item']
5
5
  drops = Env.params['drop_item']
6
6
  Array.wrap(adds).each { |i| add_item i } if adds
7
7
  Array.wrap(drops).each { |i| drop_item i } if drops
8
8
  end
9
9
 
10
- event :insert_item_event, before: :approve, on: :save, when: proc {|c| Env.params['insert_item']} do
10
+ event :insert_item_event, :prepare_to_validate,
11
+ on: :save, when: proc { Env.params['insert_item'] } do
11
12
  index = Env.params['item_index'] || 0
12
- self.insert_item index.to_i, Env.params['insert_item']
13
+ insert_item index.to_i, Env.params['insert_item']
13
14
  end
14
15
 
15
- phase_method :changed_item_names do
16
+ stage_method :changed_item_names do
16
17
  dropped_item_names + added_item_names
17
18
  end
18
19
 
19
- phase_method :dropped_item_names do
20
+ stage_method :dropped_item_names do
20
21
  old_items = item_names content: db_content_was
21
22
  old_items - item_names
22
23
  end
23
24
 
24
- phase_method :added_item_names do
25
+ stage_method :added_item_names do
25
26
  old_items = item_names content: db_content_was
26
27
  item_names - old_items
27
28
  end
@@ -33,8 +34,8 @@ format do
33
34
  end
34
35
  end
35
36
 
36
- def wrap_item item, args={}
37
- item #no wrap in base
37
+ def wrap_item item, _args={}
38
+ item # no wrap in base
38
39
  end
39
40
 
40
41
  view :core do |args|
@@ -51,46 +52,49 @@ format do
51
52
  end
52
53
 
53
54
  format :html do
54
-
55
55
  view :core do |args|
56
- %{<div class="pointer-list">#{ render_pointer_items args }</div>}
56
+ %(<div class="pointer-list">#{render_pointer_items args}</div>)
57
57
  end
58
58
 
59
59
  view :closed_content do |args|
60
- args[:item] = (args[:item] || inclusion_defaults(card)[:view])=='name' ? 'name' : 'link'
60
+ args[:item] =
61
+ if (args[:item] || nest_defaults(card)[:view]) == 'name'
62
+ 'name'
63
+ else
64
+ 'link'
65
+ end
61
66
  args[:joint] ||= ', '
62
67
  _render_core args
63
68
  end
64
69
 
65
- # view :edit do |args|
66
- # super(args.merge(pointer_item_class: 'form-control'))
67
- # end
70
+ # view :edit do |args|
71
+ # super(args.merge(pointer_item_class: 'form-control'))
72
+ # end
68
73
 
69
74
  view :editor do |args|
70
- part_view = (c = card.rule(:input)) ? c.gsub(/[\[\]]/,'') : :list
71
- hidden_field( :content, class: 'card-content') +
72
- raw(_render part_view, args)
75
+ part_view = (c = card.rule(:input)) ? c.gsub(/[\[\]]/, '') : :list
76
+ hidden_field(:content, class: 'card-content') +
77
+ raw(_render(part_view, args))
78
+ # .merge(pointer_item_class: 'form-control')))
79
+ end
73
80
 
74
- #.merge(pointer_item_class: 'form-control')))
81
+ def options_card_name
82
+ (oc = card.options_rule_card) ? oc.cardname.url_key : ':all'
75
83
  end
76
84
 
77
85
  view :list do |args|
78
86
  args ||= {}
79
87
  items = args[:item_list] || card.item_names(context: :raw)
80
88
  items = [''] if items.empty?
81
- options_card_name = (oc = card.options_rule_card) ? oc.cardname.url_key : ':all'
82
-
83
89
  extra_css_class = args[:extra_css_class] || 'pointer-list-ul'
84
90
 
85
91
  <<-HTML
86
92
  <ul class="pointer-list-editor #{extra_css_class}" data-options-card="#{options_card_name}">
87
- #{
88
- items.map do |item|
89
- _render_list_item args.merge( pointer_item: item )
90
- end * "\n"
91
- }
93
+ #{items.map do |item|
94
+ _render_list_item args.merge(pointer_item: item)
95
+ end.join "\n"}
92
96
  </ul>
93
- #{ add_item_button }
97
+ #{add_item_button}
94
98
  HTML
95
99
  end
96
100
 
@@ -103,26 +107,26 @@ format :html do
103
107
  end
104
108
 
105
109
  view :list_item do |args|
106
- <<-HTML
107
- <li class="pointer-li">
108
- <span class="input-group">
109
- <span class="input-group-addon handle">
110
- #{ glyphicon 'option-vertical left' }
111
- #{ glyphicon 'option-vertical right'}
112
- </span>
113
- #{ text_field_tag 'pointer_item', args[:pointer_item], class: 'pointer-item-text form-control' }
114
- <span class="input-group-btn">
115
- <button class="pointer-item-delete btn btn-default" type="button">
116
- #{ glyphicon 'remove'}
117
- </button>
118
- </span>
110
+ <<-HTML
111
+ <li class="pointer-li">
112
+ <span class="input-group">
113
+ <span class="input-group-addon handle">
114
+ #{glyphicon 'option-vertical left'}
115
+ #{glyphicon 'option-vertical right'}
116
+ </span>
117
+ #{text_field_tag 'pointer_item', args[:pointer_item],
118
+ class: 'pointer-item-text form-control'}
119
+ <span class="input-group-btn">
120
+ <button class="pointer-item-delete btn btn-default" type="button">
121
+ #{glyphicon 'remove'}
122
+ </button>
123
+ </span>
119
124
  </span>
120
125
  </li>
121
126
  HTML
122
127
  end
123
128
 
124
-
125
- view :checkbox do |args|
129
+ view :checkbox do |_args|
126
130
  options = card.option_names.map do |option_name|
127
131
  checked = card.item_names.include?(option_name)
128
132
  label = ((o_card = Card.fetch(option_name)) && o_card.label) || option_name
@@ -130,80 +134,74 @@ format :html do
130
134
  description = pointer_option_description option_name
131
135
  <<-HTML
132
136
  <div class="pointer-checkbox">
133
- #{ check_box_tag "pointer_checkbox", option_name, checked, id: id, class: 'pointer-checkbox-button' }
137
+ #{check_box_tag 'pointer_checkbox', option_name, checked, id: id, class: 'pointer-checkbox-button'}
134
138
  <label for="#{id}">#{label}</label>
135
- #{ %{<div class="checkbox-option-description">#{ description }</div>} if description }
139
+ #{%(<div class="checkbox-option-description">#{description}</div>) if description}
136
140
  </div>
137
141
  HTML
138
142
  end.join "\n"
139
143
 
140
- %{<div class="pointer-checkbox-list">#{options}</div>}
144
+ %(<div class="pointer-checkbox-list">#{options}</div>)
141
145
  end
142
146
 
143
- view :multiselect do |args|
144
- select_tag("pointer_multiselect",
147
+ view :multiselect do |_args|
148
+ select_tag(
149
+ 'pointer_multiselect',
145
150
  options_for_select(card.option_names, card.item_names),
146
151
  multiple: true, class: 'pointer-multiselect form-control'
147
152
  )
148
153
  end
149
154
 
150
- view :radio do |args|
155
+ view :radio do |_args|
151
156
  input_name = "pointer_radio_button-#{card.key}"
152
157
  options = card.option_names.map do |option_name|
153
- checked = (option_name==card.item_names.first)
158
+ checked = (option_name == card.item_names.first)
154
159
  id = "pointer-radio-#{option_name.to_name.key}"
155
160
  label = ((o_card = Card.fetch(option_name)) && o_card.label) || option_name
156
161
  description = pointer_option_description option_name
157
162
  <<-HTML
158
163
  <li class="pointer-radio radio">
159
- #{ radio_button_tag input_name, option_name, checked, id: id, class: 'pointer-radio-button' }
160
- <label for="#{id}">#{ label }</label>
161
- #{ %{<div class="radio-option-description">#{ description }</div>} if description }
164
+ #{radio_button_tag input_name, option_name, checked, id: id, class: 'pointer-radio-button'}
165
+ <label for="#{id}">#{label}</label>
166
+ #{%(<div class="radio-option-description">#{description}</div>) if description}
162
167
  </li>
163
168
  HTML
164
169
  end.join("\n")
165
170
 
166
- %{<ul class="pointer-radio-list">#{options}</ul>}
171
+ %(<ul class="pointer-radio-list">#{options}</ul>)
167
172
  end
168
173
 
169
- view :select do |args|
170
- options = [["-- Select --",""]] + card.option_names.map{ |x| [x,x]}
171
- select_tag("pointer_select",
172
- options_for_select(options, card.item_names.first),
173
- class: 'pointer-select form-control'
174
- )
174
+ view :select do |_args|
175
+ options = [['-- Select --', '']] + card.option_names.map { |x| [x, x] }
176
+ select_tag('pointer_select',
177
+ options_for_select(options, card.item_names.first),
178
+ class: 'pointer-select form-control'
179
+ )
175
180
  end
176
181
 
177
-
178
182
  def pointer_option_description option
179
183
  pod_name = card.rule(:options_label) || 'description'
180
- dcard = Card[ "#{option}+#{pod_name}" ]
181
- if dcard and dcard.ok? :read
182
- with_inclusion_mode :normal do
184
+ dcard = Card["#{option}+#{pod_name}"]
185
+ if dcard && dcard.ok?(:read)
186
+ with_nest_mode :normal do
183
187
  subformat(dcard).render_core
184
188
  end
185
189
  end
186
190
  end
187
191
 
188
-
189
-
190
192
  def wrap_item item, args
191
- %{<div class="pointer-item item-#{args[:view]}">#{item}</div>}
193
+ %(<div class="pointer-item item-#{args[:view]}">#{item}</div>)
192
194
  end
193
-
194
-
195
195
  end
196
196
 
197
-
198
197
  format :css do
199
-
200
- #generalize to all collections?
198
+ # generalize to all collections?
201
199
  def default_item_view
202
200
  params[:item] || :content
203
201
  end
204
202
 
205
- view :titled do |args|
206
- %(#{major_comment "STYLE GROUP: \"#{card.name}\"", '='}#{ _render_core })
203
+ view :titled do |_args|
204
+ %(#{major_comment "STYLE GROUP: \"#{card.name}\"", '='}#{_render_core})
207
205
  end
208
206
 
209
207
  view :core do |args|
@@ -213,22 +211,18 @@ format :css do
213
211
  end
214
212
 
215
213
  view :content, :core
216
-
217
214
  end
218
215
 
219
-
220
216
  format :js do
221
-
222
217
  view :core do |args|
223
218
  card.item_cards.map do |item|
224
- nest item, view: ( args[:item] || :core)
219
+ nest item, view: (args[:item] || :core)
225
220
  end.join "\n\n"
226
221
  end
227
222
  end
228
223
 
229
-
230
224
  format :data do
231
- view :core do |args|
225
+ view :core do |_args|
232
226
  card.item_cards.map do |c|
233
227
  nest c
234
228
  end
@@ -236,7 +230,7 @@ format :data do
236
230
  end
237
231
 
238
232
  format :rss do
239
- def raw_feed_items args
233
+ def raw_feed_items _args
240
234
  @raw_feed_items ||= begin
241
235
  card.item_cards
242
236
  end
@@ -247,15 +241,13 @@ end
247
241
  # the new module will override the old module's events and functions.
248
242
  # this event is only on pointer card. Other type cards do not have this event,
249
243
  # so it is not overridden and will be run while updating type and content in the same request.
250
- event :standardize_items, before: :approve, on: :save, changed: :content,
251
- when: proc{ |c| c.type_id == Card::PointerID } do
252
- self.content = item_names(context: :raw).map { |name| "[[#{name}]]" }.join "\n"
244
+ event :standardize_items, :prepare_to_validate, on: :save, changed: :content,
245
+ when: proc { |c| c.type_id == Card::PointerID } do
246
+ self.content = item_names(context: :raw).map { |name| "[[#{name}]]" }.join "\n"
253
247
  end
254
248
 
255
-
256
-
257
249
  def diff_args
258
- {format: :pointer}
250
+ { format: :pointer }
259
251
  end
260
252
 
261
253
  def item_cards args={}
@@ -265,7 +257,7 @@ def item_cards args={}
265
257
  else
266
258
 
267
259
  itype = args[:type] || item_type
268
- #warn "item_card[#{inspect}], :complete"
260
+ # warn "item_card[#{inspect}], :complete"
269
261
  item_names(args).map do |name|
270
262
  new_args = itype ? { type: itype } : {}
271
263
  Card.fetch name, new: new_args
@@ -273,12 +265,11 @@ def item_cards args={}
273
265
  end
274
266
  end
275
267
 
276
-
277
268
  def item_names args={}
278
- context = args[:context] || self.cardname
279
- content = args[:content] || self.raw_content
269
+ context = args[:context] || cardname
270
+ content = args[:content] || raw_content
280
271
  content.to_s.split(/\n+/).map do |line|
281
- item_name = line.gsub( /\[\[|\]\]/, '').strip
272
+ item_name = line.gsub(/\[\[|\]\]/, '').strip
282
273
  if context == :raw
283
274
  item_name
284
275
  else
@@ -287,7 +278,6 @@ def item_names args={}
287
278
  end
288
279
  end
289
280
 
290
-
291
281
  def item_ids args={}
292
282
  item_names(args).map do |name|
293
283
  Card.fetch_id name
@@ -296,7 +286,7 @@ end
296
286
 
297
287
  def item_type
298
288
  opt = options_rule_card
299
- if !opt or opt==self #fixme, need better recursion prevention
289
+ if !opt || opt == self # fixme, need better recursion prevention
300
290
  nil
301
291
  else
302
292
  opt.item_type