card 1.16.6 → 1.16.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +234 -49
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/VERSION +1 -1
  6. data/config/initializers/mime_types.rb +3 -3
  7. data/config/initializers/notification.rb +1 -1
  8. data/db/migrate/20121118115000_update_link_type.rb +8 -8
  9. data/db/migrate/20130411210957_update_codenames.rb +2 -2
  10. data/db/migrate/20140822073704_create_new_revision_tables.rb +12 -13
  11. data/db/migrate/20141001105348_move_revisions_to_actions.rb +16 -16
  12. data/db/migrate/20141121172918_rename_card_migration_table.rb +4 -4
  13. data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -3
  14. data/db/migrate_core_cards/20130823192433_add_style_cards.rb +45 -47
  15. data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +1 -1
  16. data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +3 -3
  17. data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +3 -3
  18. data/db/migrate_core_cards/20130927191728_account_events.rb +6 -6
  19. data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -1
  20. data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -1
  21. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +19 -19
  22. data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +11 -12
  23. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +35 -36
  24. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +55 -55
  25. data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
  26. data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +2 -2
  27. data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +3 -3
  28. data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +2 -2
  29. data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -8
  30. data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -2
  31. data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +16 -16
  32. data/db/migrate_core_cards/20141230204340_uri_codename.rb +1 -1
  33. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +19 -19
  34. data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -3
  35. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +15 -15
  36. data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +11 -11
  37. data/db/migrate_core_cards/20150331135745_new_card_menu.rb +1 -1
  38. data/db/migrate_core_cards/20150429090551_search_card_context.rb +1 -1
  39. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -3
  40. data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +1 -1
  41. data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +4 -4
  42. data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +5 -5
  43. data/db/migrate_core_cards/20150605115802_add_performance_log_card.rb +1 -1
  44. data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -2
  45. data/db/migrate_core_cards/20150611203506_rails_inflection_updates.rb +5 -5
  46. data/db/migrate_core_cards/20150627205133_fix_script_bootstrap_card_type.rb +1 -1
  47. data/db/migrate_core_cards/20150702130543_remove_edit_toolbar_pinned.rb +1 -1
  48. data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +5 -5
  49. data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
  50. data/db/migrate_core_cards/20150824135418_update_file_history.rb +3 -3
  51. data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +2 -2
  52. data/db/migrate_core_cards/20150910085603_remove_performance_log_card.rb +1 -1
  53. data/lib/card.rb +4 -4
  54. data/lib/card/active_record_ext.rb +8 -8
  55. data/lib/card/auth.rb +6 -6
  56. data/lib/card/cache.rb +1 -1
  57. data/lib/card/chunk.rb +1 -1
  58. data/lib/card/content.rb +1 -1
  59. data/lib/card/diff.rb +10 -10
  60. data/lib/card/env.rb +1 -1
  61. data/lib/card/format.rb +12 -12
  62. data/lib/card/loader.rb +1 -1
  63. data/lib/card/migration.rb +1 -1
  64. data/lib/card/name.rb +4 -4
  65. data/lib/card/query.rb +255 -61
  66. data/lib/card/query/attributes.rb +310 -0
  67. data/lib/card/query/clause.rb +12 -15
  68. data/lib/card/query/join.rb +73 -0
  69. data/lib/card/query/reference.rb +51 -0
  70. data/lib/card/query/sql_statement.rb +228 -0
  71. data/lib/card/query/value.rb +66 -0
  72. data/lib/card/reference.rb +6 -6
  73. data/lib/card/set.rb +12 -12
  74. data/lib/card/set_pattern.rb +9 -9
  75. data/lib/card/spec_helper.rb +5 -5
  76. data/lib/card/success.rb +1 -1
  77. data/lib/cardio.rb +7 -7
  78. data/lib/generators/card/format/format_generator.rb +3 -3
  79. data/lib/generators/card/migration/migration_generator.rb +5 -5
  80. data/lib/generators/card/set/set_generator.rb +4 -4
  81. data/mod/01_core/chunk/include.rb +4 -4
  82. data/mod/01_core/chunk/link.rb +5 -5
  83. data/mod/01_core/chunk/literal.rb +2 -2
  84. data/mod/01_core/chunk/query_reference.rb +8 -8
  85. data/mod/01_core/chunk/uri.rb +18 -18
  86. data/mod/01_core/format/html_format.rb +4 -4
  87. data/mod/01_core/set/all/active_card.rb +2 -2
  88. data/mod/01_core/set/all/collection.rb +21 -26
  89. data/mod/01_core/set/all/content.rb +2 -2
  90. data/mod/01_core/set/all/fetch.rb +6 -6
  91. data/mod/01_core/set/all/initialize.rb +4 -4
  92. data/mod/01_core/set/all/location_history.rb +2 -2
  93. data/mod/01_core/set/all/name.rb +14 -14
  94. data/mod/01_core/set/all/pattern.rb +1 -1
  95. data/mod/01_core/set/all/permissions.rb +12 -12
  96. data/mod/01_core/set/all/phases.rb +29 -12
  97. data/mod/01_core/set/all/references.rb +14 -14
  98. data/mod/01_core/set/all/rules.rb +8 -8
  99. data/mod/01_core/set/all/templating.rb +10 -9
  100. data/mod/01_core/set/all/tracked_attributes.rb +7 -7
  101. data/mod/01_core/set/all/trash.rb +6 -6
  102. data/mod/01_core/set/all/type.rb +7 -7
  103. data/mod/01_core/set/all/utils.rb +4 -4
  104. data/mod/01_core/set/all/view_cache.rb +1 -1
  105. data/mod/01_core/set_pattern/02_all_plus.rb +2 -2
  106. data/mod/01_core/set_pattern/03_type.rb +1 -1
  107. data/mod/01_core/set_pattern/04_star.rb +1 -1
  108. data/mod/01_core/set_pattern/05_rstar.rb +2 -2
  109. data/mod/01_core/set_pattern/06_right.rb +4 -4
  110. data/mod/01_core/set_pattern/07_type_plus_right.rb +4 -4
  111. data/mod/01_core/set_pattern/08_self.rb +1 -1
  112. data/mod/01_core/spec/chunk/uri_spec.rb +73 -73
  113. data/mod/01_core/spec/format/html_format_spec.rb +5 -5
  114. data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +1 -1
  115. data/mod/01_core/spec/set/all/collection_spec.rb +22 -22
  116. data/mod/01_core/spec/set/all/content_spec.rb +1 -1
  117. data/mod/01_core/spec/set/all/fetch_spec.rb +24 -24
  118. data/mod/01_core/spec/set/all/initialize_spec.rb +9 -9
  119. data/mod/01_core/spec/set/all/name_spec.rb +8 -8
  120. data/mod/01_core/spec/set/all/pattern_spec.rb +10 -10
  121. data/mod/01_core/spec/set/all/permissions_spec.rb +45 -45
  122. data/mod/01_core/spec/set/all/references_spec.rb +1 -1
  123. data/mod/01_core/spec/set/all/rules2_spec.rb +15 -15
  124. data/mod/01_core/spec/set/all/rules_spec.rb +37 -37
  125. data/mod/01_core/spec/set/all/templating_spec.rb +21 -21
  126. data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +55 -55
  127. data/mod/01_core/spec/set/all/trash_spec.rb +4 -4
  128. data/mod/01_core/spec/set/all/type_spec.rb +15 -15
  129. data/mod/01_history/lib/card/act.rb +2 -2
  130. data/mod/01_history/lib/card/action.rb +22 -22
  131. data/mod/01_history/lib/card/change.rb +1 -1
  132. data/mod/01_history/set/all/actions.rb +2 -2
  133. data/mod/01_history/set/all/content_history.rb +4 -4
  134. data/mod/01_history/set/all/history.rb +46 -46
  135. data/mod/02_basic_types/set/all/all_css.rb +10 -10
  136. data/mod/02_basic_types/set/all/all_csv.rb +7 -7
  137. data/mod/02_basic_types/set/all/base.rb +25 -25
  138. data/mod/02_basic_types/set/all/json.rb +16 -16
  139. data/mod/02_basic_types/set/all/rss.rb +7 -7
  140. data/mod/02_basic_types/set/type/html.rb +2 -2
  141. data/mod/02_basic_types/set/type/plain_text.rb +1 -1
  142. data/mod/02_basic_types/set/type/pointer.rb +39 -31
  143. data/mod/02_basic_types/spec/set/all/all_css_spec.rb +1 -1
  144. data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +1 -1
  145. data/mod/02_basic_types/spec/set/all/base_spec.rb +18 -18
  146. data/mod/02_basic_types/spec/set/all/json_spec.rb +4 -4
  147. data/mod/02_basic_types/spec/set/all/rss_spec.rb +8 -2
  148. data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +1 -1
  149. data/mod/02_basic_types/spec/set/type/pointer_spec.rb +54 -44
  150. data/mod/03_machines/lib/card/machine.rb +46 -29
  151. data/mod/03_machines/lib/card/machine_input.rb +34 -10
  152. data/mod/03_machines/set/type/coffee_script.rb +3 -3
  153. data/mod/03_machines/set/type/css.rb +8 -8
  154. data/mod/03_machines/set/type/java_script.rb +4 -4
  155. data/mod/03_machines/set/type/scss.rb +2 -2
  156. data/mod/03_machines/set/type/skin.rb +1 -1
  157. data/mod/03_machines/spec/lib/shared_machine_examples.rb +27 -27
  158. data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +8 -8
  159. data/mod/03_machines/spec/set/type/coffeescript_spec.rb +6 -6
  160. data/mod/03_machines/spec/set/type/css_spec.rb +9 -9
  161. data/mod/03_machines/spec/set/type/javascript_spec.rb +6 -6
  162. data/mod/03_machines/spec/set/type/scss_spec.rb +5 -5
  163. data/mod/03_machines/spec/set/type/skin_spec.rb +25 -25
  164. data/mod/04_settings/lib/card/setting.rb +11 -11
  165. data/mod/04_settings/set/abstract/permission.rb +9 -9
  166. data/mod/04_settings/set/right/script.rb +1 -1
  167. data/mod/04_settings/set/right/structure.rb +0 -5
  168. data/mod/04_settings/set/right/style.rb +2 -2
  169. data/mod/04_settings/set/self/accountable.rb +1 -1
  170. data/mod/04_settings/set/self/add_help.rb +1 -1
  171. data/mod/04_settings/set/self/autoname.rb +1 -1
  172. data/mod/04_settings/set/self/captcha.rb +1 -1
  173. data/mod/04_settings/set/self/create.rb +1 -1
  174. data/mod/04_settings/set/self/default.rb +1 -1
  175. data/mod/04_settings/set/self/delete.rb +1 -1
  176. data/mod/04_settings/set/self/help.rb +1 -1
  177. data/mod/04_settings/set/self/input.rb +1 -1
  178. data/mod/04_settings/set/self/layout.rb +1 -1
  179. data/mod/04_settings/set/self/on_create.rb +1 -1
  180. data/mod/04_settings/set/self/on_delete.rb +1 -1
  181. data/mod/04_settings/set/self/on_update.rb +1 -1
  182. data/mod/04_settings/set/self/options.rb +1 -1
  183. data/mod/04_settings/set/self/options_label.rb +1 -1
  184. data/mod/04_settings/set/self/read.rb +1 -1
  185. data/mod/04_settings/set/self/script.rb +1 -1
  186. data/mod/04_settings/set/self/structure.rb +1 -1
  187. data/mod/04_settings/set/self/style.rb +1 -1
  188. data/mod/04_settings/set/self/table_of_contents.rb +1 -1
  189. data/mod/04_settings/set/self/thanks.rb +1 -1
  190. data/mod/04_settings/set/self/update.rb +1 -1
  191. data/mod/04_settings/set/type/setting.rb +14 -14
  192. data/mod/04_settings/spec/set/right/comment_spec.rb +5 -5
  193. data/mod/04_settings/spec/set/right/create_spec.rb +1 -1
  194. data/mod/04_settings/spec/set/right/script_spec.rb +5 -5
  195. data/mod/04_settings/spec/set/right/structure_spec.rb +4 -2
  196. data/mod/04_settings/spec/set/right/style_spec.rb +7 -7
  197. data/mod/04_settings/spec/set/type/setting_spec.rb +2 -2
  198. data/mod/05_email/lib/card/follow_option.rb +24 -24
  199. data/mod/05_email/set/all/follow.rb +24 -16
  200. data/mod/05_email/set/all/notify.rb +25 -23
  201. data/mod/05_email/set/all/observer.rb +5 -5
  202. data/mod/05_email/set/right/bcc.rb +8 -8
  203. data/mod/05_email/set/right/follow.rb +44 -17
  204. data/mod/05_email/set/right/follow_fields.rb +1 -1
  205. data/mod/05_email/set/right/following.rb +49 -40
  206. data/mod/05_email/set/self/always.rb +2 -2
  207. data/mod/05_email/set/self/created.rb +1 -1
  208. data/mod/05_email/set/self/edited.rb +4 -4
  209. data/mod/05_email/set/self/follow.rb +1 -1
  210. data/mod/05_email/set/self/follow_defaults.rb +9 -9
  211. data/mod/05_email/set/self/never.rb +1 -1
  212. data/mod/05_email/set/type/email_template.rb +9 -9
  213. data/mod/05_email/set/type_plus_right/user/follow.rb +16 -16
  214. data/mod/05_email/spec/set/all/follow_spec.rb +10 -10
  215. data/mod/05_email/spec/set/all/notify_spec.rb +82 -82
  216. data/mod/05_email/spec/set/all/observer_spec.rb +16 -16
  217. data/mod/05_email/spec/set/right/followers_spec.rb +6 -6
  218. data/mod/05_email/spec/set/self/follow_defaults_spec.rb +2 -2
  219. data/mod/05_standard/lib/carrier_wave/cardmount.rb +5 -5
  220. data/mod/05_standard/lib/image_uploader.rb +8 -8
  221. data/mod/05_standard/set/abstract/attachment.rb +18 -18
  222. data/mod/05_standard/set/all/account.rb +5 -5
  223. data/mod/05_standard/set/all/comment.rb +7 -7
  224. data/mod/05_standard/set/all/error.rb +25 -25
  225. data/mod/05_standard/set/all/event_viz.rb +1 -1
  226. data/mod/05_standard/set/all/links.rb +9 -9
  227. data/mod/05_standard/set/all/rich_html/content.rb +34 -34
  228. data/mod/05_standard/set/all/rich_html/editing.rb +35 -35
  229. data/mod/05_standard/set/all/rich_html/form.rb +20 -20
  230. data/mod/05_standard/set/all/rich_html/header.rb +8 -8
  231. data/mod/05_standard/set/all/rich_html/menu.rb +33 -33
  232. data/mod/05_standard/set/all/rich_html/modal.rb +16 -16
  233. data/mod/05_standard/set/all/rich_html/toolbar.rb +63 -63
  234. data/mod/05_standard/set/all/rich_html/wrapper.rb +8 -8
  235. data/mod/05_standard/set/right/account.rb +27 -27
  236. data/mod/05_standard/set/right/email.rb +5 -5
  237. data/mod/05_standard/set/right/password.rb +5 -5
  238. data/mod/05_standard/set/rstar/rules.rb +52 -52
  239. data/mod/05_standard/set/self/account_links.rb +27 -27
  240. data/mod/05_standard/set/self/all.rb +1 -1
  241. data/mod/05_standard/set/self/head.rb +5 -5
  242. data/mod/05_standard/set/self/navbox.rb +11 -11
  243. data/mod/05_standard/set/self/recent.rb +2 -2
  244. data/mod/05_standard/set/self/search.rb +13 -13
  245. data/mod/05_standard/set/self/signin.rb +19 -19
  246. data/mod/05_standard/set/self/stats.rb +2 -2
  247. data/mod/05_standard/set/type/basic.rb +1 -1
  248. data/mod/05_standard/set/type/cardtype.rb +5 -5
  249. data/mod/05_standard/set/type/date.rb +1 -1
  250. data/mod/05_standard/set/type/file.rb +7 -7
  251. data/mod/05_standard/set/type/image.rb +8 -8
  252. data/mod/05_standard/set/type/number.rb +2 -2
  253. data/mod/05_standard/set/type/phrase.rb +1 -1
  254. data/mod/05_standard/set/type/search_type.rb +27 -21
  255. data/mod/05_standard/set/type/session.rb +2 -2
  256. data/mod/05_standard/set/type/set.rb +37 -37
  257. data/mod/05_standard/set/type/signup.rb +25 -25
  258. data/mod/05_standard/set/type/uri.rb +1 -1
  259. data/mod/05_standard/set/type/user.rb +21 -21
  260. data/mod/05_standard/spec/chunk/include_spec.rb +16 -16
  261. data/mod/05_standard/spec/chunk/link_spec.rb +18 -18
  262. data/mod/05_standard/spec/chunk/query_reference_spec.rb +1 -1
  263. data/mod/05_standard/spec/set/all/account_spec.rb +7 -7
  264. data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
  265. data/mod/05_standard/spec/set/all/history_spec.rb +14 -14
  266. data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +1 -1
  267. data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +2 -2
  268. data/mod/05_standard/spec/set/right/account_spec.rb +9 -9
  269. data/mod/05_standard/spec/set/right/email_spec.rb +8 -8
  270. data/mod/05_standard/spec/set/right/password_spec.rb +9 -9
  271. data/mod/05_standard/spec/set/right/stats_spec.rb +1 -1
  272. data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
  273. data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
  274. data/mod/05_standard/spec/set/rstar/rules_spec.rb +2 -2
  275. data/mod/05_standard/spec/set/self/account_links_spec.rb +2 -2
  276. data/mod/05_standard/spec/set/self/all_spec.rb +8 -11
  277. data/mod/05_standard/spec/set/self/head_spec.rb +1 -1
  278. data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
  279. data/mod/05_standard/spec/set/self/now_spec.rb +1 -1
  280. data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
  281. data/mod/05_standard/spec/set/self/version_spec.rb +1 -1
  282. data/mod/05_standard/spec/set/type/email_template_spec.rb +25 -25
  283. data/mod/05_standard/spec/set/type/file_spec.rb +4 -4
  284. data/mod/05_standard/spec/set/type/html_spec.rb +3 -3
  285. data/mod/05_standard/spec/set/type/image_spec.rb +6 -6
  286. data/mod/05_standard/spec/set/type/layout_type_spec.rb +1 -1
  287. data/mod/05_standard/spec/set/type/search_type_spec.rb +10 -10
  288. data/mod/05_standard/spec/set/type/signup_spec.rb +11 -11
  289. data/mod/05_standard/spec/set/type/toggle_spec.rb +2 -2
  290. data/mod/05_standard/spec/set/type/uri_spec.rb +9 -9
  291. data/mod/06_bootstrap/set/all/bootstrap/helper.rb +10 -10
  292. data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +4 -4
  293. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -1
  294. data/spec/lib/card/action_spec.rb +2 -2
  295. data/spec/lib/card/cache_spec.rb +7 -7
  296. data/spec/lib/card/content_spec.rb +31 -37
  297. data/spec/lib/card/diff_spec.rb +56 -56
  298. data/spec/lib/card/format_spec.rb +11 -11
  299. data/spec/lib/card/query_spec.rb +382 -265
  300. data/spec/lib/card/reference_spec.rb +133 -140
  301. data/spec/lib/card/set_pattern_spec.rb +10 -9
  302. data/spec/lib/card/set_spec.rb +11 -11
  303. data/spec/lib/card/success_spec.rb +16 -8
  304. data/spec/mailers/mailer_spec.rb +5 -5
  305. data/spec/models/card/cardtype_spec.rb +20 -20
  306. data/spec/models/card/create_spec.rb +6 -6
  307. data/spec/models/card/trash_spec.rb +20 -20
  308. data/spec/models/card/type_transition_spec.rb +3 -3
  309. data/spec/models/card/validation_spec.rb +5 -5
  310. data/spec/models/card_spec.rb +24 -24
  311. data/spec/spec_helper.rb +5 -5
  312. data/tmpsets/set/mod001-01_core/all/active_card.rb +2 -2
  313. data/tmpsets/set/mod001-01_core/all/collection.rb +23 -26
  314. data/tmpsets/set/mod001-01_core/all/content.rb +2 -2
  315. data/tmpsets/set/mod001-01_core/all/fetch.rb +6 -6
  316. data/tmpsets/set/mod001-01_core/all/initialize.rb +8 -4
  317. data/tmpsets/set/mod001-01_core/all/name.rb +14 -14
  318. data/tmpsets/set/mod001-01_core/all/pattern.rb +1 -1
  319. data/tmpsets/set/mod001-01_core/all/permissions.rb +12 -12
  320. data/tmpsets/set/mod001-01_core/all/phases.rb +31 -13
  321. data/tmpsets/set/mod001-01_core/all/references.rb +14 -14
  322. data/tmpsets/set/mod001-01_core/all/rules.rb +8 -10
  323. data/tmpsets/set/mod001-01_core/all/templating.rb +10 -9
  324. data/tmpsets/set/mod001-01_core/all/tracked_attributes.rb +7 -7
  325. data/tmpsets/set/mod001-01_core/all/trash.rb +9 -8
  326. data/tmpsets/set/mod001-01_core/all/type.rb +7 -7
  327. data/tmpsets/set/mod001-01_core/all/utils.rb +16 -4
  328. data/tmpsets/set/mod001-01_core/all/view_cache.rb +1 -1
  329. data/tmpsets/set/mod002-01_history/all/actions.rb +2 -2
  330. data/tmpsets/set/mod002-01_history/all/content_history.rb +11 -7
  331. data/tmpsets/set/mod002-01_history/all/history.rb +46 -46
  332. data/tmpsets/set/mod003-02_basic_types/all/all_css.rb +10 -10
  333. data/tmpsets/set/mod003-02_basic_types/all/all_csv.rb +7 -7
  334. data/tmpsets/set/mod003-02_basic_types/all/base.rb +25 -25
  335. data/tmpsets/set/mod003-02_basic_types/all/json.rb +16 -16
  336. data/tmpsets/set/mod003-02_basic_types/all/rss.rb +7 -7
  337. data/tmpsets/set/mod003-02_basic_types/type/html.rb +2 -2
  338. data/tmpsets/set/mod003-02_basic_types/type/plain_text.rb +1 -1
  339. data/tmpsets/set/mod003-02_basic_types/type/pointer.rb +38 -31
  340. data/tmpsets/set/mod004-03_machines/right/machine_output.rb +4 -0
  341. data/tmpsets/set/mod004-03_machines/type/coffee_script.rb +3 -3
  342. data/tmpsets/set/mod004-03_machines/type/css.rb +8 -8
  343. data/tmpsets/set/mod004-03_machines/type/java_script.rb +4 -4
  344. data/tmpsets/set/mod004-03_machines/type/scss.rb +2 -2
  345. data/tmpsets/set/mod004-03_machines/type/skin.rb +1 -1
  346. data/tmpsets/set/mod005-04_settings/abstract/permission.rb +9 -9
  347. data/tmpsets/set/mod005-04_settings/right/script.rb +1 -1
  348. data/tmpsets/set/mod005-04_settings/right/structure.rb +0 -5
  349. data/tmpsets/set/mod005-04_settings/right/style.rb +2 -2
  350. data/tmpsets/set/mod005-04_settings/self/accountable.rb +1 -1
  351. data/tmpsets/set/mod005-04_settings/self/add_help.rb +1 -1
  352. data/tmpsets/set/mod005-04_settings/self/autoname.rb +1 -1
  353. data/tmpsets/set/mod005-04_settings/self/captcha.rb +1 -1
  354. data/tmpsets/set/mod005-04_settings/self/create.rb +1 -1
  355. data/tmpsets/set/mod005-04_settings/self/default.rb +1 -1
  356. data/tmpsets/set/mod005-04_settings/self/delete.rb +1 -1
  357. data/tmpsets/set/mod005-04_settings/self/help.rb +1 -1
  358. data/tmpsets/set/mod005-04_settings/self/input.rb +1 -1
  359. data/tmpsets/set/mod005-04_settings/self/layout.rb +1 -1
  360. data/tmpsets/set/mod005-04_settings/self/on_create.rb +1 -1
  361. data/tmpsets/set/mod005-04_settings/self/on_delete.rb +1 -1
  362. data/tmpsets/set/mod005-04_settings/self/on_update.rb +1 -1
  363. data/tmpsets/set/mod005-04_settings/self/options.rb +1 -1
  364. data/tmpsets/set/mod005-04_settings/self/options_label.rb +1 -1
  365. data/tmpsets/set/mod005-04_settings/self/read.rb +1 -1
  366. data/tmpsets/set/mod005-04_settings/self/script.rb +1 -1
  367. data/tmpsets/set/mod005-04_settings/self/structure.rb +1 -1
  368. data/tmpsets/set/mod005-04_settings/self/style.rb +1 -1
  369. data/tmpsets/set/mod005-04_settings/self/table_of_contents.rb +1 -1
  370. data/tmpsets/set/mod005-04_settings/self/thanks.rb +1 -1
  371. data/tmpsets/set/mod005-04_settings/self/update.rb +1 -1
  372. data/tmpsets/set/mod005-04_settings/type/setting.rb +14 -14
  373. data/tmpsets/set/mod006-05_email/all/follow.rb +24 -16
  374. data/tmpsets/set/mod006-05_email/all/notify.rb +25 -23
  375. data/tmpsets/set/mod006-05_email/all/observer.rb +8 -8
  376. data/tmpsets/set/mod006-05_email/right/bcc.rb +8 -8
  377. data/tmpsets/set/mod006-05_email/right/follow.rb +44 -17
  378. data/tmpsets/set/mod006-05_email/right/follow_fields.rb +1 -1
  379. data/tmpsets/set/mod006-05_email/right/following.rb +49 -40
  380. data/tmpsets/set/mod006-05_email/self/always.rb +2 -2
  381. data/tmpsets/set/mod006-05_email/self/created.rb +1 -1
  382. data/tmpsets/set/mod006-05_email/self/edited.rb +4 -4
  383. data/tmpsets/set/mod006-05_email/self/follow.rb +1 -1
  384. data/tmpsets/set/mod006-05_email/self/follow_defaults.rb +9 -9
  385. data/tmpsets/set/mod006-05_email/self/never.rb +1 -1
  386. data/tmpsets/set/mod006-05_email/type/email_template.rb +9 -9
  387. data/tmpsets/set/mod006-05_email/type_plus_right/user/follow.rb +17 -17
  388. data/tmpsets/set/mod007-05_standard/abstract/attachment.rb +98 -46
  389. data/tmpsets/set/mod007-05_standard/all/account.rb +5 -5
  390. data/tmpsets/set/mod007-05_standard/all/comment.rb +7 -7
  391. data/tmpsets/set/mod007-05_standard/all/error.rb +26 -26
  392. data/tmpsets/set/mod007-05_standard/all/event_viz.rb +1 -1
  393. data/tmpsets/set/mod007-05_standard/all/links.rb +10 -9
  394. data/tmpsets/set/mod007-05_standard/all/rich_html/content.rb +34 -34
  395. data/tmpsets/set/mod007-05_standard/all/rich_html/editing.rb +35 -35
  396. data/tmpsets/set/mod007-05_standard/all/rich_html/form.rb +20 -20
  397. data/tmpsets/set/mod007-05_standard/all/rich_html/header.rb +8 -8
  398. data/tmpsets/set/mod007-05_standard/all/rich_html/menu.rb +33 -33
  399. data/tmpsets/set/mod007-05_standard/all/rich_html/modal.rb +16 -16
  400. data/tmpsets/set/mod007-05_standard/all/rich_html/toolbar.rb +63 -63
  401. data/tmpsets/set/mod007-05_standard/all/rich_html/wrapper.rb +8 -8
  402. data/tmpsets/set/mod007-05_standard/right/account.rb +27 -27
  403. data/tmpsets/set/mod007-05_standard/right/email.rb +5 -5
  404. data/tmpsets/set/mod007-05_standard/right/password.rb +5 -5
  405. data/tmpsets/set/mod007-05_standard/rstar/rules.rb +52 -52
  406. data/tmpsets/set/mod007-05_standard/self/account_links.rb +27 -27
  407. data/tmpsets/set/mod007-05_standard/self/all.rb +1 -1
  408. data/tmpsets/set/mod007-05_standard/self/head.rb +5 -5
  409. data/tmpsets/set/mod007-05_standard/self/navbox.rb +11 -11
  410. data/tmpsets/set/mod007-05_standard/self/recent.rb +2 -2
  411. data/tmpsets/set/mod007-05_standard/self/search.rb +13 -13
  412. data/tmpsets/set/mod007-05_standard/self/signin.rb +19 -19
  413. data/tmpsets/set/mod007-05_standard/self/stats.rb +2 -2
  414. data/tmpsets/set/mod007-05_standard/type/basic.rb +1 -1
  415. data/tmpsets/set/mod007-05_standard/type/cardtype.rb +5 -5
  416. data/tmpsets/set/mod007-05_standard/type/date.rb +1 -1
  417. data/tmpsets/set/mod007-05_standard/type/file.rb +23 -8
  418. data/tmpsets/set/mod007-05_standard/type/image.rb +10 -8
  419. data/tmpsets/set/mod007-05_standard/type/number.rb +2 -2
  420. data/tmpsets/set/mod007-05_standard/type/phrase.rb +1 -1
  421. data/tmpsets/set/mod007-05_standard/type/search_type.rb +21 -19
  422. data/tmpsets/set/mod007-05_standard/type/session.rb +2 -2
  423. data/tmpsets/set/mod007-05_standard/type/set.rb +37 -37
  424. data/tmpsets/set/mod007-05_standard/type/signup.rb +25 -25
  425. data/tmpsets/set/mod007-05_standard/type/uri.rb +1 -1
  426. data/tmpsets/set/mod007-05_standard/type/user.rb +21 -21
  427. data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/helper.rb +10 -10
  428. data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/wrapper.rb +4 -4
  429. data/tmpsets/set/mod008-06_bootstrap/all/rich_bootstrap.rb +1 -1
  430. data/tmpsets/set_pattern/101-all_plus.rb +2 -2
  431. data/tmpsets/set_pattern/102-type.rb +1 -1
  432. data/tmpsets/set_pattern/103-star.rb +1 -1
  433. data/tmpsets/set_pattern/104-rstar.rb +2 -2
  434. data/tmpsets/set_pattern/105-right.rb +4 -4
  435. data/tmpsets/set_pattern/106-type_plus_right.rb +4 -4
  436. data/tmpsets/set_pattern/107-self.rb +1 -1
  437. metadata +7 -5
  438. data/lib/card/query/card_clause.rb +0 -528
  439. data/lib/card/query/ref_clause.rb +0 -47
  440. data/lib/card/query/value_clause.rb +0 -65
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class Card; module Set; module Right; module FollowFields; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/right/follow_fields.rb ~~~~~~~~~~~
3
- event :follow_fields_changed, :before=>:extend do
3
+ event :follow_fields_changed, before: :extend do
4
4
  Card.follow_caches_expired
5
5
  end
6
6
 
@@ -6,51 +6,60 @@ def virtual?; true end
6
6
 
7
7
  format :html do
8
8
 
9
- view :core do |args|
10
- if card.left and Auth.signed_in?
11
- render_rule_editor args
12
- else
13
- followers_card = Card.fetch("#{card.cardname.left}+#{Card[:followers].name}")
14
- nest followers_card, :view=>:titled, :item=>:link
15
- end
16
- end
17
-
18
- view :status do |args|
19
- if rcard = current_follow_rule_card
20
- rcard.item_cards.map do |item|
21
- %{<div class="alert alert-success" role="alert">
22
- <strong>#{rcard.rule_set.follow_label}</strong>: #{item.title}
23
- </div>}
24
- end.join
25
- else
26
- "No following preference"
27
- end
28
- end
29
-
30
- view :closed_content do |args|
31
- ''
32
- end
33
-
9
+ view :core do |args|
10
+ if card.left && Auth.signed_in?
11
+ render_rule_editor args
12
+ else
13
+ fname = "#{card.cardname.left}+#{Card[:followers].name}"
14
+ fcard = Card.fetch fname
15
+ nest fcard, view: :titled, item: :link
16
+ end
17
+ end
18
+
19
+ view :status do |args|
20
+ if (rcard = current_follow_rule_card)
21
+ rcard.item_cards.map do |item|
22
+ %{<div class="alert alert-success" role="alert">
23
+ <strong>#{rcard.rule_set.follow_label}</strong>: #{item.title}
24
+ </div>}
25
+ end.join
26
+ else
27
+ 'No following preference'
28
+ end
29
+ end
30
+
31
+ view :closed_content do |args|
32
+ ''
33
+ end
34
+
34
35
  =begin
35
36
  view :editor do |args|
36
- hidden_field( :content, :class=>'card-content', 'no-autosave'=>true) +
37
+ hidden_field( :content, class: 'card-content', 'no-autosave'=>true) +
37
38
  (args.delete(:select_list) ? raw(render_rule_editor(args)) : super(args) )
38
39
  end
39
40
  =end
40
-
41
- view :rule_editor do |args|
42
- preference_name = "#{card.left.default_follow_set_card.name}+#{Auth.current.name}+#{Card[:follow].name}"
43
- rule_context = Card.fetch preference_name, :new=>{:type_id=>PointerID}
44
- wrap_with :div, :class=>'edit-rule' do
45
- subformat(current_follow_rule_card || rule_context).render_edit_rule :rule_context=>rule_context,
46
- :success=>{ :view=>'status', :id=>card.name }
47
- end
48
- end
49
-
50
- def current_follow_rule_card
51
- card.left.rule_card :follow, :user=>Auth.current
52
- end
53
-
41
+
42
+ view :rule_editor do |args|
43
+ preference_name = [
44
+ card.left.default_follow_set_card.name,
45
+ Auth.current.name,
46
+ Card[:follow].name
47
+ ]*'+'
48
+ rule_context = Card.fetch preference_name, new: { type_id: PointerID }
49
+
50
+ wrap_with :div, class: 'edit-rule' do
51
+ follow_context = current_follow_rule_card || rule_context
52
+ subformat(follow_context).render_edit_rule(
53
+ rule_context: rule_context,
54
+ success: { view: 'status', id: card.name }
55
+ )
56
+ end
57
+ end
58
+
59
+ def current_follow_rule_card
60
+ card.left.rule_card :follow, user: Auth.current
61
+ end
62
+
54
63
  end
55
64
 
56
65
 
@@ -2,9 +2,9 @@
2
2
  class Card; module Set; module Self; module Always; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/always.rb ~~~~~~~~~~~
3
3
  include Card::FollowOption
4
4
 
5
- self.follow_opts :position=>2
5
+ follow_opts position: 2
6
6
 
7
- self.follow_test { |follower_id, accounted_ids| true }
7
+ follow_test { |follower_id, accounted_ids| true }
8
8
 
9
9
  def title
10
10
  'Following'
@@ -2,7 +2,7 @@
2
2
  class Card; module Set; module Self; module Created; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/created.rb ~~~~~~~~~~~
3
3
  include Card::FollowOption
4
4
 
5
- self.restrictive_follow_opts :position=>1
5
+ self.restrictive_follow_opts position: 1
6
6
 
7
7
  self.follower_candidate_ids do |card|
8
8
  [ card.creator_id ]
@@ -2,22 +2,22 @@
2
2
  class Card; module Set; module Self; module Edited; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/edited.rb ~~~~~~~~~~~
3
3
  include Card::FollowOption
4
4
 
5
- self.restrictive_follow_opts :position=>2
5
+ self.restrictive_follow_opts position: 2
6
6
 
7
7
  self.follower_candidate_ids do |card|
8
8
  # FIXME? - could optimize by not using cards table...
9
- Card.search :editor_of=>card.name, :return=>:id
9
+ Card.search editor_of: card.name, return: :id
10
10
  end
11
11
 
12
12
 
13
- def title
13
+ def title
14
14
  'Following content you edited'
15
15
  end
16
16
 
17
17
  def label
18
18
  "follow if I edited"
19
19
  end
20
-
20
+
21
21
  def description set_card
22
22
  "#{set_card.follow_label} I edited"
23
23
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class Card; module Set; module Self; module Follow; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/follow.rb ~~~~~~~~~~~
3
3
  extend Card::Setting
4
- setting_opts :group=>:other, :position=>7, :rule_type_editable => false, :user_specific=>true
4
+ setting_opts group: :other, position: 7, rule_type_editable: false, user_specific: true
5
5
 
6
6
 
7
7
  # ~~~~~~~~~~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/follow.rb ~~~~~~~~~~~
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class Card; module Set; module Self; module FollowDefaults; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/follow_defaults.rb ~~~~~~~~~~~
3
- event :update_follow_rules, :after=>:store, :on=>:save, :when=> proc { |c| c.update_all_users } do
3
+ event :update_follow_rules, after: :store, on: :save, when: proc { |c| c.update_all_users } do
4
4
  defaults = item_names.map do |item|
5
5
  if ((set_card = Card.fetch item.to_name.left) && set_card.type_code == :set)
6
6
  option_card = Card.fetch(item.to_name.right) || Card[item.to_name.right.to_sym]
@@ -15,9 +15,9 @@ event :update_follow_rules, :after=>:store, :on=>:save, :when=> proc { |c| c.upd
15
15
  end
16
16
  end.compact
17
17
  Auth.as_bot do
18
- Card.search(:type=>'user').each do |user|
18
+ Card.search(type: 'user').each do |user|
19
19
  defaults.each do |set_card, option|
20
- if (follow_rule = Card.fetch(set_card.follow_rule_name(user.name), :new=>{}))
20
+ if (follow_rule = Card.fetch(set_card.follow_rule_name(user.name), new: {}))
21
21
  follow_rule.drop_item "*never"
22
22
  follow_rule.drop_item "*always"
23
23
  follow_rule.add_item option
@@ -30,7 +30,7 @@ event :update_follow_rules, :after=>:store, :on=>:save, :when=> proc { |c| c.upd
30
30
  end
31
31
 
32
32
  format :html do
33
- view :edit, :perms=>:update, :tags=>:unknown_ok do |args|
33
+ view :edit, perms: :update, tags: :unknown_ok do |args|
34
34
  frame_and_form :update, args do
35
35
  [
36
36
  _optional_render( :content_formgroup, args ),
@@ -55,13 +55,13 @@ format :html do
55
55
  def default_edit_args args
56
56
  args[:hidden] ||= {}
57
57
  args[:hidden].reverse_merge!(
58
- :success => '_self',
59
- :card => { :update_all_users => false }
58
+ success: '_self',
59
+ card: { update_all_users: false }
60
60
  )
61
61
  args[:buttons] = %{
62
- #{ button_tag 'Submit and update all users', :disable_with=>'Updating', :class=>'follow-updater', :situation=>'primary' }
63
- #{ button_tag 'Submit', :class=>'follow' }
64
- #{ button_tag 'Cancel', :class=>'slotter', :type=>'button', :href=>path(:view=>:edit, :id=>card.id)}
62
+ #{ button_tag 'Submit and update all users', disable_with: 'Updating', class: 'follow-updater', situation: 'primary' }
63
+ #{ button_tag 'Submit', class: 'follow' }
64
+ #{ button_tag 'Cancel', class: 'slotter', type: 'button', href: path(view: :edit, id: card.id)}
65
65
  }
66
66
 
67
67
  end
@@ -2,7 +2,7 @@
2
2
  class Card; module Set; module Self; module Never; extend Card::Set # ~~~~~~~~~~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/05_email/set/self/never.rb ~~~~~~~~~~~
3
3
  include Card::FollowOption
4
4
 
5
- self.follow_opts :position=>3
5
+ self.follow_opts position: 3
6
6
 
7
7
  self.follow_test { |follower_id, accounted_ids| false }
8
8
 
@@ -18,7 +18,7 @@ def process_email_field field, config, args
18
18
  config[field] =
19
19
  if args[field]
20
20
  args[field]
21
- elsif field_card = fetch(:trait=>field)
21
+ elsif field_card = fetch(trait: field)
22
22
  # configuration can be anything visible to configurer
23
23
  user = ( args[:follower] and Card.fetch(args[:follower]) ) || field_card.updater
24
24
  Auth.as( user ) do
@@ -33,7 +33,7 @@ def process_message_field field, config, args, format, special_args=nil
33
33
  process_email_field( field, config, args ) do |field_card|
34
34
  content_args = args.clone
35
35
  content_args.merge! special_args if special_args
36
- field_card.contextual_content args[:context], { :format=>format }, content_args
36
+ field_card.contextual_content args[:context], { format: format }, content_args
37
37
  end
38
38
  end
39
39
 
@@ -43,13 +43,13 @@ def email_config args={}
43
43
 
44
44
  [:to, :from, :cc, :bcc].each do |field_name|
45
45
  process_email_field( field_name, config, args ) do |field_card|
46
- field_card.process_email_addresses args[:context], {:format=>'email_text'}, args
46
+ field_card.process_email_addresses args[:context], {format: 'email_text'}, args
47
47
  end
48
48
  end
49
49
  process_email_field( :attach, config, args ) do |field_card|
50
50
  field_card.extended_item_contents args[:context]
51
51
  end
52
- process_message_field :subject, config, args, 'email_text', :content_opts=>{ :chunk_list=>:inclusion_only }
52
+ process_message_field :subject, config, args, 'email_text', content_opts: { chunk_list: :inclusion_only }
53
53
  process_message_field :text_message, config, args, 'email_text'
54
54
  process_message_field :html_message, config, args, 'email_html'
55
55
  config[:html_message] = Card::Mailer.layout config[:html_message] if config[:html_message].present?
@@ -68,7 +68,7 @@ end
68
68
 
69
69
 
70
70
  format do
71
- view :mail, :perms=>:none do |args|
71
+ view :mail, perms: :none do |args|
72
72
  args = card.email_config(args)
73
73
  text_message = args.delete(:text_message)
74
74
  html_message = args.delete(:html_message)
@@ -78,11 +78,11 @@ format do
78
78
  if alternative
79
79
  if attachment_list and !attachment_list.empty?
80
80
  content_type 'multipart/mixed'
81
- part :content_type => 'multipart/alternative' do |copy|
82
- copy.part :content_type => 'text/plain' do |plain|
81
+ part content_type: 'multipart/alternative' do |copy|
82
+ copy.part content_type: 'text/plain' do |plain|
83
83
  plain.body = text_message
84
84
  end
85
- copy.part :content_type => 'text/html' do |html|
85
+ copy.part content_type: 'text/html' do |html|
86
86
  html.body = html_message
87
87
  end
88
88
  end
@@ -104,7 +104,7 @@ format do
104
104
  if attachment_list
105
105
  attachment_list.each_with_index do |cardname, i|
106
106
  if c = Card[ cardname ] and c.respond_to?(:attachment)
107
- add_file :filename => "attachment-#{i + 1}.#{c.attachment.extension}", :content => File.read( c.attachment.path )
107
+ add_file filename: "attachment-#{i + 1}.#{c.attachment.extension}", content: File.read( c.attachment.path )
108
108
  end
109
109
  end
110
110
  end
@@ -77,13 +77,13 @@ format :html do
77
77
 
78
78
  # returns hashes with existing and suggested follow options
79
79
  # structure:
80
- # set_pattern_class => [ {:card=>rule_card, :options=>['*always', '*created'] },.... ]
80
+ # set_pattern_class => [ {card: rule_card, options: ['*always', '*created'] },.... ]
81
81
  def followed_by_set
82
82
  res = Hash.new { |h,k| h[k] = [] }
83
83
  never = Card[:never].name
84
84
  card.item_cards.each do |follow_rule|
85
85
  options = follow_rule.item_names.reject { |item| item == never}
86
- res[follow_rule.rule_set.subclass_for_set] << { :card=>follow_rule, :options=>options }
86
+ res[follow_rule.rule_set.subclass_for_set] << { card: follow_rule, options: options }
87
87
  end
88
88
 
89
89
  if Auth.signed_in? && Auth.current_id == card.left.id
@@ -94,8 +94,8 @@ format :html do
94
94
  rule[:options] << option
95
95
  end
96
96
  else
97
- rule_card = Card.new(:name=>suggested_rule_name)
98
- res[set_card.subclass_for_set] << {:card=>rule_card, :options=>[option]}
97
+ rule_card = Card.new(name: suggested_rule_name)
98
+ res[set_card.subclass_for_set] << {card: rule_card, options: [option]}
99
99
  end
100
100
  end
101
101
  end
@@ -109,15 +109,15 @@ format :html do
109
109
  end
110
110
 
111
111
  sets = followed_by_set
112
- wrap_with :div, :class=>'pointer-list-editor' do
113
- wrap_with :ul, :class=>'delete-list list-group' do
112
+ wrap_with :div, class: 'pointer-list-editor' do
113
+ wrap_with :ul, class: 'delete-list list-group' do
114
114
 
115
115
  Card.set_patterns.select{|p| sets[p]}.reverse.map do |set_pattern|
116
116
  sets[set_pattern].map do |rule|
117
117
  rule[:options].map do |option|
118
118
 
119
- content_tag :li, :class=>'list-group-item' do
120
- subformat(rule[:card]).render_follow_item :condition=>option, :hide=>hide_buttons
119
+ content_tag :li, class: 'list-group-item' do
120
+ subformat(rule[:card]).render_follow_item condition: option, hide: hide_buttons
121
121
  end
122
122
 
123
123
  end.join("\n")
@@ -142,12 +142,12 @@ format :html do
142
142
  hide_buttons = [:delete_follow_rule_button, :add_follow_rule_button]
143
143
  end
144
144
  never = Card[:never].name
145
- wrap_with :div, :class=>'pointer-list-editor' do
146
- wrap_with :ul, :class=>'delete-list list-group' do
145
+ wrap_with :div, class: 'pointer-list-editor' do
146
+ wrap_with :ul, class: 'delete-list list-group' do
147
147
 
148
148
  ignore_list.map do |rule_card|
149
- content_tag :li, :class=>'list-group-item' do
150
- subformat(rule_card).render_follow_item :condition=>never, :hide=>hide_buttons
149
+ content_tag :li, class: 'list-group-item' do
150
+ subformat(rule_card).render_follow_item condition: never, hide: hide_buttons
151
151
  end
152
152
  end.join "\n"
153
153
 
@@ -155,16 +155,16 @@ format :html do
155
155
  end
156
156
  end
157
157
 
158
- view :pointer_items, :tags=>:unknown_ok do |args|
159
- super(args.merge(:item=>:link))
158
+ view :pointer_items, tags: :unknown_ok do |args|
159
+ super(args.merge(item: :link))
160
160
  end
161
161
 
162
- view :errors, :perms=>:none do |args|
162
+ view :errors, perms: :none do |args|
163
163
  if card.errors.any?
164
164
  if card.errors.find { |attrib,msg| attrib == :permission_denied }
165
- save_interrupted_action(request.env['REQUEST_URI'])
165
+ Env.save_interrupted_action(request.env['REQUEST_URI'])
166
166
  title = "Problems with #{card.name}"
167
- frame args.merge(:panel_class=>"panel panel-warning", :title=>title, :hide=>'menu' ) do
167
+ frame args.merge(panel_class: "panel panel-warning", title: title, hide: 'menu' ) do
168
168
  "Please #{ link_to 'sign in', card_url(':signin') }" #" #{to_task}"
169
169
  end
170
170
  else
@@ -6,82 +6,83 @@ def self.included host_class
6
6
  host_class.extend CarrierWave::CardMount
7
7
  end
8
8
 
9
- event :select_file_revision, :after=>:select_action do
9
+ event :select_file_revision, after: :select_action do
10
10
  attachment.retrieve_from_store!(attachment.identifier)
11
11
  end
12
12
 
13
- event :determine_store_place, :before=>:prepare, :on=>:update do
14
- @store_place = load_from_mod || :deck
15
- end
16
-
17
- event :upload_attachment, :before=>:validate_name, :on=>:save, :when=>proc { |c| c.preliminary_upload? } do
13
+ event :upload_attachment, before: :validate_name, on: :save, when: proc { |c| c.preliminary_upload? } do
18
14
  save_original_filename # save original filename as comment in action
19
15
  write_identifier # set db_content (needs original filename to determine extension)
20
16
  store_attachment!
21
17
  finalize_action # create Card::Change entry for db_content
22
- @current_action.update_attributes! :draft => true, :card_id => (new_card? ? upload_cache_card.id : id)
23
-
18
+ @current_action.update_attributes! draft: true, card_id: (new_card? ? upload_cache_card.id : id)
24
19
  success << {
25
- :target => (new_card? ? upload_cache_card : '_self'),
26
- :type=> type_name,
27
- :view => 'preview_editor',
28
- :rev_id => current_action.id
20
+ target: (new_card? ? upload_cache_card : self),
21
+ type: type_name,
22
+ view: 'preview_editor',
23
+ rev_id: current_action.id
29
24
  }
30
25
  abort :success
31
26
  end
32
27
 
33
- event :assign_attachment_on_create, :after=>:prepare, :on=>:create do
34
- if save_preliminary_upload? && (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
28
+ event :assign_attachment_on_create, after: :prepare, on: :create, when: proc { |c| c.save_preliminary_upload? } do
29
+ if (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
35
30
  upload_cache_card.selected_action_id = action.id
36
31
  upload_cache_card.select_file_revision
37
32
  assign_attachment upload_cache_card.attachment.file, action.comment
38
- action.delete # TODO: delete files too
39
33
  end
40
34
  end
41
35
 
42
- event :assign_attachment_on_update, :after=>:prepare, :on=>:update do
43
- if save_preliminary_upload? && (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
36
+ event :assign_attachment_on_update, after: :prepare, on: :update, when: proc { |c| c.save_preliminary_upload? } do
37
+ if (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
44
38
  uploaded_file =
45
39
  with_selected_action_id(action.id) do
46
40
  attachment.file
47
41
  end
48
42
  assign_attachment uploaded_file, action.comment
49
- action.delete
50
43
  end
51
44
  end
52
45
 
46
+
53
47
  def assign_attachment file, original_filename
54
48
  send "#{attachment_name}=", file
55
49
  write_identifier
56
- @current_action.update_attributes! :comment=>original_filename
50
+ @current_action.update_attributes! comment: original_filename
57
51
  end
58
52
 
59
53
  # we need a card id for the path so we have to update db_content when we got an id
60
- event :correct_identifier, :after=>:store, :on=>:create do
61
- update_column(:db_content,attachment.db_content(:mod=>load_from_mod))
54
+ event :correct_identifier, after: :store, on: :create do
55
+ update_column(:db_content,attachment.db_content(mod: load_from_mod))
62
56
  expire
63
57
  end
64
58
 
65
-
66
- event :save_original_filename, :after=>:validate_name, :when => proc {|c| !c.preliminary_upload? && !c.save_preliminary_upload? && c.attachment_changed?} do
59
+ event :save_original_filename, after: :validate_name, when: proc {|c| !c.preliminary_upload? && !c.save_preliminary_upload? && c.attachment_changed?} do
67
60
  if @current_action
68
- @current_action.update_attributes! :comment=>original_filename
61
+ @current_action.update_attributes! comment: original_filename
69
62
  end
70
63
  end
71
64
 
72
- event :write_identifier, :after=>:save_original_filename do
73
- self.content = attachment.db_content(:mod=>load_from_mod)
65
+ event :delete_cached_upload_file_on_create, after: :extend, on: :create, when: proc { |c| c.save_preliminary_upload? } do
66
+ if (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
67
+ upload_cache_card.delete_files_for_action action
68
+ action.delete
69
+ end
70
+ clear_upload_cache_dir_for_new_cards
74
71
  end
75
72
 
76
-
77
- def upload_cache_card
78
- @upload_cache_card ||= Card["new_#{attachment_name}".to_sym ]
73
+ event :delete_cached_upload_file_on_update, after: :extend, on: :update, when: proc { |c| c.save_preliminary_upload? } do
74
+ if (action = Card::Action.fetch(Card::Env.params[:cached_upload]))
75
+ delete_files_for_action action
76
+ action.delete
77
+ end
79
78
  end
80
79
 
81
- def tmp_store_dir action_id=nil
82
- "#{ Card.paths['files'].existent.first }/#{upload_cache_card.id}"
80
+
81
+ event :write_identifier, after: :save_original_filename do
82
+ self.content = attachment.db_content(mod: load_from_mod)
83
83
  end
84
84
 
85
+
85
86
  def item_names(args={}) # needed for flexmail attachments. hacky.
86
87
  [self.cardname]
87
88
  end
@@ -106,12 +107,18 @@ def create_versions?
106
107
  true
107
108
  end
108
109
 
109
- def store_place
110
- @store_place ||= mod_file? || :deck
110
+ # used for uploads for new cards until the new card is created
111
+ def upload_cache_card
112
+ @upload_cache_card ||= Card["new_#{attachment_name}".to_sym ]
111
113
  end
112
114
 
115
+
113
116
  def load_from_mod= value
114
117
  @mod = value
118
+ write_identifier
119
+ if value
120
+ @store_in_mod = true
121
+ end
115
122
  end
116
123
 
117
124
  def load_from_mod
@@ -119,20 +126,52 @@ def load_from_mod
119
126
  end
120
127
 
121
128
  def store_dir
122
- if (store_place == :deck)
123
- if id
124
- "#{ Card.paths['files'].existent.first }/#{id}"
125
- else
126
- tmp_store_dir
127
- end
129
+ if @store_in_mod
130
+ mod_dir
128
131
  else
129
- "#{ Cardio.gem_root}/mod/#{store_place}/file/#{codename}"
132
+ upload_dir
130
133
  end
131
134
  end
132
135
 
136
+ def retrieve_dir
137
+ if mod_file?
138
+ mod_dir
139
+ else
140
+ upload_dir
141
+ end
142
+ end
143
+
144
+ # place for files of regular file cards
145
+ def upload_dir
146
+ if id
147
+ "#{ Card.paths['files'].existent.first }/#{id}"
148
+ else
149
+ tmp_upload_dir
150
+ end
151
+ end
152
+
153
+ # place for files if card doesn't have an id yet
154
+ def tmp_upload_dir action_id=nil
155
+ "#{ Card.paths['files'].existent.first }/#{upload_cache_card.id}"
156
+ end
157
+
158
+ # place for files of mod file cards
159
+ def mod_dir
160
+ mod = @mod || mod_file?
161
+ Card.paths['mod'].to_a.each do |mod_path|
162
+ dir = File.join(mod_path, mod, 'file', codename )
163
+ if Dir.exist? dir
164
+ return dir
165
+ end
166
+ end
167
+ end
168
+
169
+
133
170
  def mod_file?
171
+ if @store_in_mod
172
+ return @mod
134
173
  # when db_content was changed assume that it's no longer a mod file
135
- if @store_place != :deck && !db_content_changed? && content.present?
174
+ elsif !db_content_changed? && content.present?
136
175
  case content
137
176
  when /^:[^\/]+\/([^.]+)/ ; $1 # current mod_file format
138
177
  when /^\~/ ; false # current id file format
@@ -152,18 +191,31 @@ def assign_set_specific_attributes
152
191
  super
153
192
  end
154
193
 
155
- def clear_upload_tmp_dir
156
- Dir.entries(tmp_store_dir).each do |filename|
194
+ def clear_upload_cache_dir_for_new_cards
195
+ Dir.entries(tmp_upload_dir).each do |filename|
157
196
  if filename =~/^\d+/
158
- path = File.join(tmp_store_dir, filename )
159
- older_than_five_days = ( DateTime.now - File.ctime(path) > 432000)
160
- if older_than_five_days
197
+ path = File.join(tmp_upload_dir, filename )
198
+ if older_than_five_days? File.ctime(path)
161
199
  FileUtils.rm path
162
200
  end
163
201
  end
164
202
  end
165
203
  end
166
204
 
205
+ def older_than_five_days? time
206
+ Time.now - time > 432000
207
+ end
208
+
209
+ def delete_files_for_action action
210
+ with_selected_action_id(action.id) do
211
+ FileUtils.rm attachment.file.path
212
+ attachment.versions.each_value do |version|
213
+ FileUtils.rm version.path
214
+ end
215
+ end
216
+ end
217
+
218
+
167
219
  def symlink_to(prior_action_id) # create filesystem links to files from prior action
168
220
  if prior_action_id != last_action_id
169
221
  save_action_id = selected_action_id