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
@@ -1,44 +1,39 @@
1
1
  format :html do
2
-
3
2
  view :header do |args|
4
-
5
- %{
6
- <div class="card-header #{ args[:header_class] }">
7
- <div class="card-header-title #{ args[:title_class] }">
8
- #{ _optional_render :toggle, args, :hide }
9
- #{ _optional_render :title, args }
3
+ %(
4
+ <div class="card-header #{args[:header_class]}">
5
+ <div class="card-header-title #{args[:title_class]}">
6
+ #{_optional_render :toggle, args, :hide}
7
+ #{_optional_render :title, args}
10
8
  </div>
11
- #{ _optional_render :type_info, args, :hide }
9
+ #{_optional_render :type_info, args, :hide}
12
10
  </div>
13
- #{ _optional_render :toolbar, args, :hide }
14
- }
11
+ #{_optional_render :toolbar, args, :hide}
12
+ )
15
13
  end
16
14
 
17
15
  def default_header_args args
18
- if @slot_view == :open && toolbar_pinned?
19
- args[:optional_toolbar] ||= :show
20
- end
21
- if show_view?(:toolbar,args.merge(default_visibility: :hide)) && card.type_code != :basic
16
+ args[:optional_toolbar] ||= :show if @slot_view == :open && toolbar_pinned?
17
+ if show_view?(:toolbar, args.merge(default_visibility: :hide)) && card.type_code != :basic
22
18
  args[:optional_type_info] ||= :show
23
19
  end
24
20
  end
25
21
 
26
22
  view :subheader do |args|
27
23
  args[:subheader] ||= toolbar_view_title(@slot_view) || _render_title(args)
28
- %{
24
+ %(
29
25
  <div class="card-subheader navbar-inverse btn-primary active">
30
- #{ args[:subheader] }
31
- #{ autosaved_draft_link if card.drafts.present? && @slot_view == :edit }
26
+ #{args[:subheader]}
27
+ #{autosaved_draft_link if card.drafts.present? && @slot_view == :edit}
32
28
  </div>
33
- }
29
+ )
34
30
  end
35
31
 
36
-
37
32
  view :toggle do |args|
38
- verb, adjective, direction = ( args[:toggle_mode] == :close ? %w{ open open expand } : %w{ close closed collapse-down } )
33
+ verb, adjective, direction = (args[:toggle_mode] == :close ? %w( open open expand ) : %w( close closed collapse-down ))
39
34
 
40
35
  link_to glyphicon(direction),
41
- path( view: adjective ),
36
+ path(view: adjective),
42
37
  remote: true,
43
38
  title: "#{verb} #{card.name}",
44
39
  class: "#{verb}-icon toggler slotter nodblclick"
@@ -53,11 +48,11 @@ format :html do
53
48
  end
54
49
 
55
50
  view :navbar_right do |args|
56
- render_link_list args.merge(class: "nav navbar-nav navbar-right")
51
+ render_link_list args.merge(class: 'nav navbar-nav navbar-right')
57
52
  end
58
53
 
59
54
  view :navbar_left do |args|
60
- render_link_list args.merge(class: "nav navbar-nav navbar-left")
55
+ render_link_list args.merge(class: 'nav navbar-nav navbar-left')
61
56
  end
62
57
 
63
58
  def show_follow?
@@ -67,6 +62,4 @@ format :html do
67
62
  def structure_editable?
68
63
  card.structure && card.template.ok?(:update)
69
64
  end
70
-
71
65
  end
72
-
@@ -12,34 +12,34 @@ format :html do
12
12
  end
13
13
 
14
14
  view :menu_link do |args|
15
- path_opts = {slot: {home_view: args[:home_view]}}
15
+ path_opts = { slot: { home_view: args[:home_view] } }
16
16
  path_opts[:is_main] = true if main?
17
- css_class = if show_view?(:horizontal_menu,args.merge(default_visibility: :hide, optional: true))
17
+ css_class = if show_view?(:horizontal_menu, args.merge(default_visibility: :hide, optional: true))
18
18
  'visible-xs'
19
19
  else
20
20
  'show-on-hover'
21
21
  end
22
22
  wrap_with :div, class: "vertical-card-menu card-menu #{css_class}" do
23
- content_tag :div, class: 'btn-group slotter card-slot pull-right' do
24
- view_link(glyphicon(args[:menu_icon]), :vertical_menu, path_opts: path_opts).html_safe
25
- end
23
+ content_tag :div, class: 'btn-group slotter card-slot pull-right' do
24
+ view_link(glyphicon(args[:menu_icon]), :vertical_menu, path_opts: path_opts).html_safe
25
+ end
26
26
  end
27
27
  end
28
28
 
29
29
  view :vertical_menu, tags: :unknown_ok do |args|
30
- items = menu_item_list(args).map {|item| "<li class='#{args[:item_class]}'>#{item}</li>"}.join "\n"
30
+ items = menu_item_list(args).map { |item| "<li class='#{args[:item_class]}'>#{item}</li>" }.join "\n"
31
31
  wrap_with :ul, class: 'btn-group pull-right slotter' do
32
32
  [
33
- content_tag( :span, "<a href='#'>#{ glyphicon args[:menu_icon] }</a>".html_safe,
34
- class: 'open-menu dropdown-toggle', 'data-toggle'=>'dropdown', 'aria-expanded'=>'false'),
35
- content_tag( :ul, items.html_safe, class: 'dropdown-menu', role: 'menu'),
33
+ content_tag(:span, "<a href='#'>#{glyphicon args[:menu_icon]}</a>".html_safe,
34
+ class: 'open-menu dropdown-toggle', 'data-toggle' => 'dropdown', 'aria-expanded' => 'false'),
35
+ content_tag(:ul, items.html_safe, class: 'dropdown-menu', role: 'menu')
36
36
  ]
37
37
  end
38
38
  end
39
39
 
40
40
  view :horizontal_menu do |args|
41
41
  content_tag :div, class: 'btn-group slotter pull-right card-menu horizontal-card-menu hidden-xs' do
42
- menu_item_list(args.merge(html_args: {class: 'btn btn-default'})).join("\n").html_safe
42
+ menu_item_list(args.merge(html_args: { class: 'btn btn-default' })).join("\n").html_safe
43
43
  end
44
44
  end
45
45
 
@@ -57,7 +57,7 @@ format :html do
57
57
 
58
58
  def menu_edit_link args
59
59
  path_opts = { view: :edit }
60
- menu_item('edit', 'edit', path_opts, args[:html_args] )
60
+ menu_item('edit', 'edit', path_opts, args[:html_args])
61
61
  end
62
62
 
63
63
  def menu_discuss_link args
@@ -65,33 +65,31 @@ format :html do
65
65
  end
66
66
 
67
67
  def menu_page_link args
68
- menu_item('page', 'new-window', {card: card}, args[:html_args])
68
+ menu_item('page', 'new-window', { card: card }, args[:html_args])
69
69
  end
70
70
 
71
71
  def menu_rules_link args
72
- menu_item('rules', 'wrench', {view: :options}, args[:html_args])
72
+ menu_item('rules', 'wrench', { view: :options }, args[:html_args])
73
73
  end
74
74
 
75
75
  def menu_account_link args
76
- path_opts = { related: {name: '+*account',view: :edit} }
76
+ path_opts = { related: { name: '+*account', view: :edit } }
77
77
  menu_item('account', 'user', path_opts, args[:html_args])
78
78
  end
79
79
 
80
80
  def menu_more_link args
81
81
  path_opts = {
82
- view: args[:home_view] || :open,
83
- slot: {show: :toolbar}
84
- }
82
+ view: args[:home_view] || :open,
83
+ slot: { show: :toolbar }
84
+ }
85
85
  menu_item('', 'option-horizontal', path_opts, args[:html_args])
86
86
  end
87
87
 
88
-
89
88
  def menu_item text, icon, target, html_args={}
90
89
  link_text = "#{glyphicon(icon)}<span class='menu-item-label'>#{text}</span>".html_safe
91
90
  smart_link link_text, target, html_args || {}
92
91
  end
93
92
 
94
-
95
93
  def default_menu_link_args args
96
94
  args[:menu_icon] ||= 'cog'
97
95
  end
@@ -107,12 +105,12 @@ format :html do
107
105
 
108
106
  def show_menu_items
109
107
  disc_tagname = Card.fetch(:discussion, skip_modules: true).cardname
110
- disc_card = unless card.new_card? or card.junction? && card.cardname.tag_name.key == disc_tagname.key
111
- Card.fetch "#{card.name}+#{disc_tagname}", skip_modules: true, new: {}
108
+ disc_card = unless card.new_card? || card.junction? && card.cardname.tag_name.key == disc_tagname.key
109
+ Card.fetch "#{card.name}+#{disc_tagname}", skip_modules: true, new: {}
112
110
  end
113
111
 
114
112
  res = {
115
- discuss: disc_card && disc_card.ok?( disc_card.new_card? ? :comment : :read ),
113
+ discuss: disc_card && disc_card.ok?(disc_card.new_card? ? :comment : :read),
116
114
  page: card.name.present? && !main?,
117
115
  rules: card.virtual?
118
116
  }
@@ -1,10 +1,10 @@
1
1
  format :html do
2
2
  view :modal_link do |args|
3
3
  path_opts = args[:path_opts] || {}
4
- path_opts.merge!(layout: :modal)
4
+ path_opts[:layout] = :modal
5
5
  html_args = args[:html_args] || {}
6
- html_args.merge!('data-target' => '#modal-main-slot',
7
- 'data-toggle' => 'modal')
6
+ html_args['data-target'] = '#modal-main-slot'
7
+ html_args['data-toggle'] = 'modal'
8
8
  link_to(args[:text] || _render_title(args), path(path_opts), html_args)
9
9
  end
10
10
 
@@ -5,8 +5,8 @@ format :html do
5
5
  end
6
6
 
7
7
  view :toolbar do |args|
8
- navbar "toolbar-#{card.cardname.safe_key}-#{args[:home_view]}", toggle_align: :left, class: "slotter toolbar", navbar_type: 'inverse',
9
- collapsed_content: close_link(args.merge(class: 'pull-right visible-xs')) do
8
+ navbar "toolbar-#{card.cardname.safe_key}-#{args[:home_view]}", toggle_align: :left, class: 'slotter toolbar', navbar_type: 'inverse',
9
+ collapsed_content: close_link(args.merge(class: 'pull-right visible-xs')) do
10
10
  [
11
11
  close_link(args.merge(class: 'hidden-xs navbar-right')),
12
12
  (wrap_with(:form, class: 'navbar-form navbar-left') do
@@ -14,7 +14,7 @@ format :html do
14
14
  (account_split_button(args) if card.accountable?),
15
15
  activity_split_button(args),
16
16
  rules_split_button(args),
17
- edit_split_button(args),
17
+ edit_split_button(args)
18
18
  ]
19
19
  end),
20
20
  (wrap_with(:form, class: 'navbar-form navbar-right') do
@@ -39,7 +39,7 @@ format :html do
39
39
  when :edit, :edit_name, :edit_type, :edit_structure, :edit_nests
40
40
  'edit'
41
41
  when :related
42
- if args[:related_card] && (tag=args[:related_card].tag)
42
+ if args[:related_card] && (tag = args[:related_card].tag)
43
43
  case tag.codename
44
44
  when 'discussion', 'editors'
45
45
  'engage'
@@ -54,18 +54,17 @@ format :html do
54
54
  end
55
55
  end
56
56
 
57
-
58
57
  def toolbar_view_title view
59
- if view == :edit_rules
58
+ if view == :edit_rules
60
59
  current_set_card.name
61
60
  else
62
- {edit: 'content', edit_name: 'name', edit_type: 'type', edit_structure: 'structure', edit_nests: 'nests', history: 'history', common_rules: 'common', recent_rules: 'recent', grouped_rules: 'all', edit_nest_rules: 'nests'}[view]
61
+ { edit: 'content', edit_name: 'name', edit_type: 'type', edit_structure: 'structure', edit_nests: 'nests', history: 'history', common_rules: 'common', recent_rules: 'recent', grouped_rules: 'all', edit_nest_rules: 'nests' }[view]
63
62
  end
64
63
  end
65
64
 
66
65
  def activity_split_button args
67
- discuss = smart_link 'discuss', { related: Card[:discussion].key }
68
- editors = smart_link 'editors', { related: Card[:editors].key }
66
+ discuss = smart_link 'discuss', related: Card[:discussion].key
67
+ editors = smart_link 'editors', related: Card[:editors].key
69
68
  toolbar_split_button 'activity', { view: :history }, args do
70
69
  {
71
70
  history: (_render_history_link if card.history?),
@@ -75,13 +74,14 @@ format :html do
75
74
  }
76
75
  end
77
76
  end
77
+
78
78
  def rules_split_button args
79
- recent = smart_link 'recent', {view: :edit_rules, slot: {rule_view: :recent_rules}}
80
- common = smart_link 'common', {view: :edit_rules, slot: {rule_view: :common_rules}}
81
- group = smart_link 'by group', {view: :edit_rules, slot: {rule_view: :grouped_rules}}
82
- all = smart_link 'by name', {view: :edit_rules, slot: {rule_view: :all_rules}}
83
- nests = smart_link 'nests', {view: :edit_nest_rules, slot: {rule_view: :field_related_rules}}
84
- toolbar_split_button 'rules', {view: :edit_rules }, args do
79
+ recent = smart_link 'recent', view: :edit_rules, slot: { rule_view: :recent_rules }
80
+ common = smart_link 'common', view: :edit_rules, slot: { rule_view: :common_rules }
81
+ group = smart_link 'by group', view: :edit_rules, slot: { rule_view: :grouped_rules }
82
+ all = smart_link 'by name', view: :edit_rules, slot: { rule_view: :all_rules }
83
+ nests = smart_link 'nests', view: :edit_nest_rules, slot: { rule_view: :field_related_rules }
84
+ toolbar_split_button 'rules', { view: :edit_rules }, args do
85
85
  {
86
86
  common_rules: common,
87
87
  grouped_rules: group,
@@ -92,30 +92,31 @@ format :html do
92
92
  }
93
93
  end
94
94
  end
95
+
95
96
  def edit_split_button args
96
- toolbar_split_button 'edit', {view: :edit}, args do
97
+ toolbar_split_button 'edit', { view: :edit }, args do
97
98
  {
98
99
  edit: _render_edit_content_link(args),
99
100
  edit_nests: (_render_edit_nests_link if !card.structure && args[:nested_fields].present?),
100
- structure: (smart_link 'structure', {view: :edit_structure} if structure_editable?),
101
+ structure: (smart_link 'structure', view: :edit_structure if structure_editable?),
101
102
  edit_name: _render_edit_name_link,
102
- edit_type: _render_edit_type_link,
103
+ edit_type: _render_edit_type_link
103
104
  }
104
105
  end
105
106
  end
107
+
106
108
  def account_split_button args
107
- toolbar_split_button 'account', {related: Card[:account].key}, args do
109
+ toolbar_split_button 'account', { related: Card[:account].key }, args do
108
110
  {
109
- account: smart_link('details',{related: {name: "#{card.name}+#{Card[:account].key}", view: :edit}}),
110
- roles: smart_link('roles', {related: Card[:roles].key}),
111
- created: smart_link('created',{related: Card[:created].key}),
112
- edited: smart_link('edited', {related: Card[:edited].key}),
113
- follow: smart_link('follow', {related: Card[:follow].key})
111
+ account: smart_link('details', related: { name: "#{card.name}+#{Card[:account].key}", view: :edit }),
112
+ roles: smart_link('roles', related: Card[:roles].key),
113
+ created: smart_link('created', related: Card[:created].key),
114
+ edited: smart_link('edited', related: Card[:edited].key),
115
+ follow: smart_link('follow', related: Card[:follow].key)
114
116
  }
115
117
  end
116
118
  end
117
119
 
118
-
119
120
  def toolbar_split_button name, button_args, args
120
121
  button = button_link name, button_args, class: ('active' if args[:active_toolbar_button] == name)
121
122
  active_item =
@@ -129,16 +130,13 @@ format :html do
129
130
  @slot_view
130
131
  end
131
132
  split_button button, args.merge(active_item: active_item) do
132
- yield
133
+ yield
133
134
  end
134
135
  end
135
136
 
136
-
137
137
  def close_link args
138
- link_opts = {title: 'cancel'}
139
- if args[:subslot]
140
- link_opts[:path_opts] = {slot: {subframe: true}}
141
- end
138
+ link_opts = { title: 'cancel' }
139
+ link_opts[:path_opts] = { slot: { subframe: true } } if args[:subslot]
142
140
 
143
141
  link = view_link glyphicon('remove'), :home, link_opts.merge(class: 'btn-toolbar-control btn btn-primary')
144
142
  css_class = ['nav navbar-nav', args[:class]].compact.join "\n"
@@ -148,8 +146,9 @@ format :html do
148
146
  link
149
147
  ]
150
148
  end
151
- #list_tag link, class: css_class
149
+ # list_tag link, class: css_class
152
150
  end
151
+
153
152
  def toolbar_pin_button
154
153
  button_tag glyphicon('pushpin'), situation: :primary, remote: true, title: "#{'un' if toolbar_pinned?}pin", class: "btn-toolbar-control toolbar-pin #{'in' unless toolbar_pinned?}active"
155
154
  end
@@ -160,17 +159,14 @@ format :html do
160
159
  _optional_render(:delete_button, args, (card.ok?(:delete) ? :show : :hide)),
161
160
  _optional_render(:refresh_button, args, :show),
162
161
  _optional_render(:related_button, args, :show),
163
- _optional_render(:history_button, args, :hide),
162
+ _optional_render(:history_button, args, :hide)
164
163
  ]
165
164
  end
166
165
  end
167
166
 
168
-
169
-
170
-
171
- view :related_button do |args|
172
- path_opts = {slot: {show: :toolbar}}
173
- dropdown_button '', icon: 'education', class: 'related' do #, icon: 'eye-open' do
167
+ view :related_button do |_args|
168
+ path_opts = { slot: { show: :toolbar } }
169
+ dropdown_button '', icon: 'education', class: 'related' do # , icon: 'eye-open' do
174
170
  [
175
171
  menu_item(' children', 'baby-formula', path_opts.merge(related: '*children')),
176
172
  menu_item(' mates', 'bed', path_opts.merge(related: '*mates')),
@@ -179,49 +175,45 @@ format :html do
179
175
  ]
180
176
  end
181
177
  end
182
- view :refresh_button do |args|
183
- path_opts = {slot: {show: :toolbar},page: card}
178
+ view :refresh_button do |_args|
179
+ path_opts = { slot: { show: :toolbar }, page: card }
184
180
  icon = main? ? 'refresh' : 'new-window'
185
181
  toolbar_button('refresh', icon, 'hidden-xs hidden-sm hidden-md hidden-lg', path_opts: path_opts)
186
182
  end
187
183
 
188
-
189
- view :delete_button do |args|
184
+ view :delete_button do |_args|
190
185
  toolbar_button('delete', 'trash', 'hidden-xs hidden-sm hidden-md hidden-lg',
191
- action: :delete,
192
- class: 'slotter',
193
- remote: true,
194
- path_opts: {success: main? ? 'REDIRECT: *previous' : "TEXT: #{card.name} deleted"},
195
- :'data-confirm' => "Are you sure you want to delete #{card.name}?"
186
+ action: :delete,
187
+ class: 'slotter',
188
+ remote: true,
189
+ path_opts: { success: main? ? 'REDIRECT: *previous' : "TEXT: #{card.name} deleted" },
190
+ :'data-confirm' => "Are you sure you want to delete #{card.name}?"
196
191
  )
197
192
  end
198
193
 
199
-
200
-
201
194
  def toolbar_button text, symbol, hide=nil, tag_args={}
202
195
  hide ||= 'hidden-xs hidden-sm hidden-md hidden-lg'
203
- tag_args[:class] = [ tag_args[:class], 'btn btn-primary' ].compact * ' '
196
+ tag_args[:class] = [tag_args[:class], 'btn btn-primary'].compact * ' '
204
197
  tag_args[:title] ||= text
205
198
  link_text = "#{glyphicon symbol}<span class='menu-item-label #{hide}'>#{text}</span>"
206
199
 
207
200
  if cardname = tag_args.delete(:page)
208
201
  card_link cardname, class: klass, text: link_text
209
202
  elsif viewname = tag_args.delete(:view)
210
- tag_args[:path_opts] ||= {slot: {show: :toolbar}}
203
+ tag_args[:path_opts] ||= { slot: { show: :toolbar } }
211
204
  view_link link_text, viewname, tag_args
212
205
  else
213
206
  path_opts = tag_args.delete(:path_opts) || {}
214
- path_opts.merge! action: tag_args.delete(:action) if tag_args[:action]
207
+ path_opts[:action] = tag_args.delete(:action) if tag_args[:action]
215
208
  link_to link_text, path_opts, tag_args
216
209
 
217
210
  end
218
211
  end
212
+
219
213
  def autosaved_draft_link
220
- view_link('autosaved draft', :edit, path_opts: {edit_draft: true, slot: {show: :toolbar}}, class: 'navbar-link slotter pull-right')
214
+ view_link('autosaved draft', :edit, path_opts: { edit_draft: true, slot: { show: :toolbar } }, class: 'navbar-link slotter pull-right')
221
215
  end
222
216
 
223
-
224
-
225
217
  def default_edit_content_link_args args
226
218
  args[:title] ||= 'content'
227
219
  end
@@ -258,8 +250,7 @@ format :html do
258
250
  view_link text, view, args
259
251
  end
260
252
 
261
-
262
253
  def recently_edited_settings?
263
- (rs = Card[:recent_settings]) && rs.item_names.present?
254
+ (rs = Card[:recent_settings]) && rs.item_names.present?
264
255
  end
265
256
  end
@@ -4,7 +4,7 @@ format :html do
4
4
  options_hash = {}
5
5
 
6
6
  if @context_names.present?
7
- options_hash['name_context'] = @context_names.map( &:key ) * ','
7
+ options_hash['name_context'] = @context_names.map(&:key) * ','
8
8
  end
9
9
 
10
10
  options_hash[:subslot] = 'true' if args[:subslot]
@@ -14,41 +14,41 @@ format :html do
14
14
  hash
15
15
  end
16
16
 
17
- JSON( options_hash )
17
+ JSON(options_hash)
18
18
  end
19
19
 
20
- def wrap args = {}
20
+ def wrap args={}
21
21
  @slot_view = @current_view
22
22
  classes = [
23
- ( 'card-slot' unless args[:no_slot] ),
24
- "#{ @current_view }-view",
25
- ( args[:slot_class] if args[:slot_class] ),
26
- ( "STRUCTURE-#{args[:structure].to_name.key}" if args[:structure]),
27
- card.safe_set_keys
28
- ].compact.join ' '
23
+ ('card-slot' unless args[:no_slot]),
24
+ "#{@current_view}-view",
25
+ (args[:slot_class] if args[:slot_class]),
26
+ ("STRUCTURE-#{args[:structure].to_name.key}" if args[:structure]),
27
+ card.safe_set_keys
28
+ ].compact.join ' '
29
29
  data = {
30
- 'card-id' => card.id,
31
- 'card-name' => h(card.name),
32
- 'slot' => html_escape_except_quotes(slot_options( args ))
33
- }
30
+ 'card-id' => card.id,
31
+ 'card-name' => h(card.name),
32
+ 'slot' => html_escape_except_quotes(slot_options(args))
33
+ }
34
34
  div =
35
35
  content_tag :div, output(yield).html_safe,
36
- id: card.cardname.url_key, data: data, style: h(args[:style]), class: classes
36
+ id: card.cardname.url_key, data: data, style: h(args[:style]), class: classes
37
37
 
38
- if params[:debug] == 'slot' && !tagged( @current_view, :no_wrap_comments )
38
+ if params[:debug] == 'slot' && !tagged(@current_view, :no_wrap_comments)
39
39
  name = h card.name
40
40
  space = ' ' * @depth
41
- %{<!--\n\n#{ space }BEGIN SLOT: #{ name }\n\n-->#{ div }<!--\n\n#{space}END SLOT: #{ name }\n\n-->}
41
+ %(<!--\n\n#{space}BEGIN SLOT: #{name}\n\n-->#{div}<!--\n\n#{space}END SLOT: #{name}\n\n-->)
42
42
  else
43
43
  div
44
44
  end
45
45
  end
46
46
 
47
47
  def wrap_body args={}
48
- css_classes = [ 'card-body' ]
48
+ css_classes = ['card-body']
49
49
  css_classes << args[:body_class] if args[:body_class]
50
- css_classes += [ 'card-content', card.safe_set_keys ] if args[:content]
51
- content_tag :div, class: css_classes.compact*' ' do
50
+ css_classes += ['card-content', card.safe_set_keys] if args[:content]
51
+ content_tag :div, class: css_classes.compact * ' ' do
52
52
  yield args
53
53
  end
54
54
  end
@@ -67,13 +67,13 @@ format :html do
67
67
  show_subheader = show_view?(:toolbar, args.merge(default_visibility: :hide)) && @current_view != :related && @current_view != :open
68
68
  wrap args do
69
69
  [
70
- _optional_render( :menu, args ),
70
+ _optional_render(:menu, args),
71
71
  panel(args) do
72
72
  [
73
- _optional_render( :header, args, :show),
74
- _optional_render( :subheader, args,(show_subheader ? :show : :hide)),
75
- _optional_render( :help, args.merge(help_class: 'alert alert-info'), :hide),
76
- wrap_body(args) { output( block.call(args) ) } ,
73
+ _optional_render(:header, args, :show),
74
+ _optional_render(:subheader, args, (show_subheader ? :show : :hide)),
75
+ _optional_render(:help, args.merge(help_class: 'alert alert-info'), :hide),
76
+ wrap_body(args) { output(yield(args)) }
77
77
  ]
78
78
  end
79
79
  ]
@@ -84,13 +84,13 @@ format :html do
84
84
  def subframe args={}
85
85
  wrap args do
86
86
  [
87
- _optional_render( :menu, args.merge(optional_horizontal_menu: :hide) ),
88
- _optional_render( :subheader, args, :show),
89
- _optional_render( :help, args.merge(help_class: 'alert alert-info'), :hide),
87
+ _optional_render(:menu, args.merge(optional_horizontal_menu: :hide)),
88
+ _optional_render(:subheader, args, :show),
89
+ _optional_render(:help, args.merge(help_class: 'alert alert-info'), :hide),
90
90
  panel(args) do
91
91
  [
92
- _optional_render( :header, args, :hide),
93
- wrap_body(args) { output( yield args ) } ,
92
+ _optional_render(:header, args, :hide),
93
+ wrap_body(args) { output(yield args) }
94
94
  ]
95
95
  end
96
96
  ]
@@ -102,40 +102,39 @@ format :html do
102
102
  form_opts[:hidden] = args.delete(:hidden)
103
103
  frame args do
104
104
  card_form action, form_opts do
105
- output( yield args )
105
+ output(yield args)
106
106
  end
107
107
  end
108
108
  end
109
109
 
110
-
111
110
  # alert_types: 'success', 'info', 'warning', 'danger'
112
111
  def alert alert_type, args={}
113
112
  css_class = "alert alert-#{alert_type} "
114
113
  css_class += 'alert-dismissible ' if args[:dismissible]
115
114
  css_class += args[:alert_class] if args[:alert_class]
116
- close_button = args[:dismissible] ? %{
115
+ close_button = args[:dismissible] ? %(
117
116
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
118
117
  <span aria-hidden="true">&times;</span>
119
118
  </button>
120
- } : ''
119
+ ) : ''
121
120
  content_tag :div, class: css_class, role: 'alert' do
122
- close_button + output( yield args)
121
+ close_button + output(yield args)
123
122
  end
124
123
  end
125
124
 
126
- def wrap_main(content)
127
- return content if Env.ajax? || params[:layout]=='none'
128
- %{<div id="main">#{content}</div>}
125
+ def wrap_main content
126
+ return content if Env.ajax? || params[:layout] == 'none'
127
+ %(<div id="main">#{content}</div>)
129
128
  end
130
129
 
131
130
  def wrap_with tag, content_or_args={}, html_args={}
132
131
  if block_given?
133
- content_tag( tag, content_or_args ) do
134
- output( yield ).html_safe
132
+ content_tag(tag, content_or_args) do
133
+ output(yield).html_safe
135
134
  end
136
135
  else
137
- content_tag( tag, html_args ) do
138
- output( content_or_args ).html_safe
136
+ content_tag(tag, html_args) do
137
+ output(content_or_args).html_safe
139
138
  end
140
139
  end
141
140
  end