card 1.91 → 1.92

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 (779) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +80 -0
  3. data/VERSION +1 -1
  4. data/card.gemspec +29 -22
  5. data/config/i18n-tasks.yml +8 -1
  6. data/config/initializers/01_core_extensions/module.rb +46 -4
  7. data/config/initializers/02_patches/action_dispatch.rb +16 -0
  8. data/config/initializers/02_patches/active_job.rb +35 -0
  9. data/config/initializers/patches.rb +12 -0
  10. data/config/initializers/recaptcha.rb +8 -2
  11. data/config/locales/de.yml +36 -23
  12. data/config/locales/en.yml +508 -15
  13. data/db/migrate/20110511221913_require_earlier_migrations.rb +1 -1
  14. data/db/migrate/20120105203350_require_1_8_migrations.rb +1 -1
  15. data/db/migrate/20121111025347_require_1_10_migrations.rb +1 -1
  16. data/db/migrate/20121118114000_split_link_type.rb +1 -1
  17. data/db/migrate/20121118115000_update_link_type.rb +2 -2
  18. data/db/migrate/20130106052640_table_cleanup.rb +1 -1
  19. data/db/migrate/20130109015336_trunk_left.rb +1 -1
  20. data/db/migrate/20130411210957_update_codenames.rb +1 -1
  21. data/db/migrate/20140822073704_create_new_revision_tables.rb +1 -1
  22. data/db/migrate/20141001105348_move_revisions_to_actions.rb +6 -6
  23. data/db/migrate/20141121172918_rename_card_migration_table.rb +1 -1
  24. data/db/migrate/20141208132159_remove_present_from_reference_table.rb +1 -1
  25. data/db/migrate/20141216053032_better_index_names.rb +1 -1
  26. data/db/migrate/20150724210803_add_comment_to_actions.rb +1 -1
  27. data/db/migrate/20151105225559_more_space_for_db_content.rb +1 -1
  28. data/db/migrate/20160122153608_new_indeces.rb +1 -1
  29. data/db/migrate/20170908114442_create_delayed_jobs.rb +22 -0
  30. data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +1 -1
  31. data/db/migrate_core_cards/20140512155840_add_script_cards.rb +2 -2
  32. data/db/migrate_core_cards/20140629222005_add_email_cards.rb +1 -1
  33. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +1 -1
  34. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +1 -1
  35. data/db/migrate_core_cards/20150429090551_search_card_context.rb +1 -0
  36. data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +1 -1
  37. data/db/migrate_core_cards/20150824135418_update_file_history.rb +1 -0
  38. data/db/migrate_core_cards/20161103154836_update_keys.rb +1 -1
  39. data/db/migrate_core_cards/20170209132834_email_test_context.rb +1 -1
  40. data/db/migrate_core_cards/20170830210517_correct_signup_success_message.rb +10 -0
  41. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/bootstrap_default/_bootswatch.scss +0 -0
  42. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/bootstrap_default/_variables.scss +0 -0
  43. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/_bootswatch.scss +0 -0
  44. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/_variables.scss +0 -0
  45. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cerulean/thumbnail.png +0 -0
  46. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/_bootswatch.scss +0 -0
  47. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/_variables.scss +0 -0
  48. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cosmo/thumbnail.png +0 -0
  49. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/_bootswatch.scss +0 -0
  50. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/_variables.scss +0 -0
  51. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/cyborg/thumbnail.png +0 -0
  52. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/_bootswatch.scss +0 -0
  53. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/_variables.scss +0 -0
  54. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/darkly/thumbnail.png +0 -0
  55. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/_bootswatch.scss +0 -0
  56. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/_variables.scss +0 -0
  57. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/flatly/thumbnail.png +0 -0
  58. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/_bootswatch.scss +0 -0
  59. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/_variables.scss +0 -0
  60. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/journal/thumbnail.png +0 -0
  61. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/_bootswatch.scss +0 -0
  62. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/_variables.scss +0 -0
  63. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/litera/thumbnail.png +0 -0
  64. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/_bootswatch.scss +0 -0
  65. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/_variables.scss +0 -0
  66. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lumen/thumbnail.png +0 -0
  67. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/_bootswatch.scss +0 -0
  68. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/_variables.scss +0 -0
  69. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/lux/thumbnail.png +0 -0
  70. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/_bootswatch.scss +0 -0
  71. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/_variables.scss +0 -0
  72. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/materia/thumbnail.png +0 -0
  73. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/_bootswatch.scss +0 -0
  74. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/_variables.scss +0 -0
  75. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/minty/thumbnail.png +0 -0
  76. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/paper/_bootswatch.scss +0 -0
  77. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/paper/_variables.scss +0 -0
  78. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/_bootswatch.scss +0 -0
  79. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/_variables.scss +0 -0
  80. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/pulse/thumbnail.png +0 -0
  81. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/readable/_bootswatch.scss +0 -0
  82. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/readable/_variables.scss +0 -0
  83. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/_bootswatch.scss +0 -0
  84. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/_variables.scss +0 -0
  85. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/sandstone/thumbnail.png +0 -0
  86. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/_bootswatch.scss +0 -0
  87. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/_variables.scss +0 -0
  88. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/simplex/thumbnail.png +0 -0
  89. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/_bootswatch.scss +0 -0
  90. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/_variables.scss +0 -0
  91. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/slate/thumbnail.png +0 -0
  92. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/_bootswatch.scss +0 -0
  93. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/_variables.scss +0 -0
  94. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/solar/thumbnail.png +0 -0
  95. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/_bootswatch.scss +0 -0
  96. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/_variables.scss +0 -0
  97. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/spacelab/thumbnail.png +0 -0
  98. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/_bootswatch.scss +0 -0
  99. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/_variables.scss +0 -0
  100. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/superhero/thumbnail.png +0 -0
  101. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/_bootswatch.scss +0 -0
  102. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/_variables.scss +0 -0
  103. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/united/thumbnail.png +0 -0
  104. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_bootswatch.scss +0 -0
  105. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_full.scss +0 -0
  106. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/_variables.scss +0 -0
  107. data/db/migrate_core_cards/data/{b4_themes → b4_alpha_themes}/yeti/thumbnail.png +0 -0
  108. data/db/migrate_core_cards/data/b4_beta_themes/bootstrap_default/_bootswatch.scss +0 -0
  109. data/db/migrate_core_cards/data/b4_beta_themes/bootstrap_default/_variables.scss +961 -0
  110. data/db/migrate_core_cards/data/b4_beta_themes/cerulean/_bootswatch.scss +67 -0
  111. data/db/migrate_core_cards/data/b4_beta_themes/cerulean/_variables.scss +961 -0
  112. data/db/migrate_core_cards/data/b4_beta_themes/cerulean/thumbnail.png +0 -0
  113. data/db/migrate_core_cards/data/b4_beta_themes/cosmo/_bootswatch.scss +45 -0
  114. data/db/migrate_core_cards/data/b4_beta_themes/cosmo/_variables.scss +961 -0
  115. data/db/migrate_core_cards/data/b4_beta_themes/cosmo/thumbnail.png +0 -0
  116. data/db/migrate_core_cards/data/b4_beta_themes/cyborg/_bootswatch.scss +141 -0
  117. data/db/migrate_core_cards/data/b4_beta_themes/cyborg/_variables.scss +961 -0
  118. data/db/migrate_core_cards/data/b4_beta_themes/cyborg/thumbnail.png +0 -0
  119. data/db/migrate_core_cards/data/b4_beta_themes/darkly/_bootswatch.scss +142 -0
  120. data/db/migrate_core_cards/data/b4_beta_themes/darkly/_variables.scss +961 -0
  121. data/db/migrate_core_cards/data/b4_beta_themes/darkly/thumbnail.png +0 -0
  122. data/db/migrate_core_cards/data/b4_beta_themes/flatly/_bootswatch.scss +107 -0
  123. data/db/migrate_core_cards/data/b4_beta_themes/flatly/_variables.scss +961 -0
  124. data/db/migrate_core_cards/data/b4_beta_themes/flatly/thumbnail.png +0 -0
  125. data/db/migrate_core_cards/data/b4_beta_themes/journal/_bootswatch.scss +69 -0
  126. data/db/migrate_core_cards/data/b4_beta_themes/journal/_variables.scss +961 -0
  127. data/db/migrate_core_cards/data/b4_beta_themes/journal/thumbnail.png +0 -0
  128. data/db/migrate_core_cards/data/b4_beta_themes/litera/_bootswatch.scss +130 -0
  129. data/db/migrate_core_cards/data/b4_beta_themes/litera/_variables.scss +961 -0
  130. data/db/migrate_core_cards/data/b4_beta_themes/litera/thumbnail.png +0 -0
  131. data/db/migrate_core_cards/data/b4_beta_themes/lumen/_bootswatch.scss +294 -0
  132. data/db/migrate_core_cards/data/b4_beta_themes/lumen/_variables.scss +961 -0
  133. data/db/migrate_core_cards/data/b4_beta_themes/lumen/thumbnail.png +0 -0
  134. data/db/migrate_core_cards/data/b4_beta_themes/lux/_bootswatch.scss +111 -0
  135. data/db/migrate_core_cards/data/b4_beta_themes/lux/_variables.scss +961 -0
  136. data/db/migrate_core_cards/data/b4_beta_themes/lux/thumbnail.png +0 -0
  137. data/db/migrate_core_cards/data/b4_beta_themes/materia/_bootswatch.scss +610 -0
  138. data/db/migrate_core_cards/data/b4_beta_themes/materia/_variables.scss +961 -0
  139. data/db/migrate_core_cards/data/b4_beta_themes/materia/thumbnail.png +0 -0
  140. data/db/migrate_core_cards/data/b4_beta_themes/minty/_bootswatch.scss +85 -0
  141. data/db/migrate_core_cards/data/b4_beta_themes/minty/_variables.scss +961 -0
  142. data/db/migrate_core_cards/data/b4_beta_themes/minty/thumbnail.png +0 -0
  143. data/db/migrate_core_cards/data/b4_beta_themes/paper/_bootswatch.scss +607 -0
  144. data/db/migrate_core_cards/data/b4_beta_themes/paper/_variables.scss +861 -0
  145. data/db/migrate_core_cards/data/b4_beta_themes/pulse/_bootswatch.scss +122 -0
  146. data/db/migrate_core_cards/data/b4_beta_themes/pulse/_variables.scss +961 -0
  147. data/db/migrate_core_cards/data/b4_beta_themes/pulse/thumbnail.png +0 -0
  148. data/db/migrate_core_cards/data/b4_beta_themes/readable/_bootswatch.scss +174 -0
  149. data/db/migrate_core_cards/data/b4_beta_themes/readable/_variables.scss +861 -0
  150. data/db/migrate_core_cards/data/b4_beta_themes/sandstone/_bootswatch.scss +152 -0
  151. data/db/migrate_core_cards/data/b4_beta_themes/sandstone/_variables.scss +961 -0
  152. data/db/migrate_core_cards/data/b4_beta_themes/sandstone/thumbnail.png +0 -0
  153. data/db/migrate_core_cards/data/b4_beta_themes/simplex/_bootswatch.scss +103 -0
  154. data/db/migrate_core_cards/data/b4_beta_themes/simplex/_variables.scss +961 -0
  155. data/db/migrate_core_cards/data/b4_beta_themes/simplex/thumbnail.png +0 -0
  156. data/db/migrate_core_cards/data/b4_beta_themes/slate/_bootswatch.scss +274 -0
  157. data/db/migrate_core_cards/data/b4_beta_themes/slate/_variables.scss +961 -0
  158. data/db/migrate_core_cards/data/b4_beta_themes/slate/thumbnail.png +0 -0
  159. data/db/migrate_core_cards/data/b4_beta_themes/solar/_bootswatch.scss +45 -0
  160. data/db/migrate_core_cards/data/b4_beta_themes/solar/_variables.scss +961 -0
  161. data/db/migrate_core_cards/data/b4_beta_themes/solar/thumbnail.png +0 -0
  162. data/db/migrate_core_cards/data/b4_beta_themes/spacelab/_bootswatch.scss +125 -0
  163. data/db/migrate_core_cards/data/b4_beta_themes/spacelab/_variables.scss +961 -0
  164. data/db/migrate_core_cards/data/b4_beta_themes/spacelab/thumbnail.png +0 -0
  165. data/db/migrate_core_cards/data/b4_beta_themes/superhero/_bootswatch.scss +136 -0
  166. data/db/migrate_core_cards/data/b4_beta_themes/superhero/_variables.scss +961 -0
  167. data/db/migrate_core_cards/data/b4_beta_themes/superhero/thumbnail.png +0 -0
  168. data/db/migrate_core_cards/data/b4_beta_themes/united/_bootswatch.scss +32 -0
  169. data/db/migrate_core_cards/data/b4_beta_themes/united/_variables.scss +961 -0
  170. data/db/migrate_core_cards/data/b4_beta_themes/united/thumbnail.png +0 -0
  171. data/db/migrate_core_cards/data/b4_beta_themes/variables/_variables.scss +0 -0
  172. data/db/migrate_core_cards/data/b4_beta_themes/yeti/_bootswatch.scss +304 -0
  173. data/db/migrate_core_cards/data/b4_beta_themes/yeti/_full.scss +9921 -0
  174. data/db/migrate_core_cards/data/b4_beta_themes/yeti/_variables.scss +961 -0
  175. data/db/migrate_core_cards/data/b4_beta_themes/yeti/thumbnail.png +0 -0
  176. data/db/migrate_core_cards/data/cards.yml +2 -2
  177. data/db/migrate_core_cards/data/cards/*header +2 -2
  178. data/db/schema.rb +89 -106
  179. data/db/seed/new/card_actions.yml +2146 -1922
  180. data/db/seed/new/card_acts.yml +2 -248
  181. data/db/seed/new/card_changes.yml +1 -32341
  182. data/db/seed/new/card_references.yml +1162 -980
  183. data/db/seed/new/cards.yml +23244 -14385
  184. data/db/seed/test/fixtures/card_actions.yml +3459 -3011
  185. data/db/seed/test/fixtures/card_acts.yml +470 -608
  186. data/db/seed/test/fixtures/card_changes.yml +109 -37619
  187. data/db/seed/test/fixtures/card_references.yml +2264 -1865
  188. data/db/seed/test/fixtures/cards.yml +26422 -16915
  189. data/db/seed/test/seed.rb +247 -179
  190. data/db/seed_consts.rb +10 -0
  191. data/db/seeds.rb +1 -6
  192. data/db/version.txt +1 -1
  193. data/db/version_core_cards.txt +1 -1
  194. data/lib/active_record/connection_adapters_ext.rb +1 -1
  195. data/lib/application_job.rb +2 -0
  196. data/lib/application_record.rb +3 -0
  197. data/lib/card.rb +77 -13
  198. data/lib/card/act_manager.rb +3 -0
  199. data/lib/card/act_manager/stage_director.rb +3 -38
  200. data/lib/card/act_manager/stage_director/phases.rb +39 -0
  201. data/lib/card/codename.rb +15 -9
  202. data/lib/card/content.rb +4 -0
  203. data/lib/card/content/chunk.rb +4 -0
  204. data/lib/card/env.rb +6 -2
  205. data/lib/card/env/location_history.rb +1 -1
  206. data/lib/card/env/success.rb +5 -2
  207. data/lib/card/error.rb +3 -2
  208. data/lib/card/format.rb +13 -21
  209. data/lib/card/format/context_names.rb +40 -0
  210. data/lib/card/format/error.rb +8 -4
  211. data/lib/card/format/nest.rb +7 -7
  212. data/lib/card/format/nest/fetch.rb +1 -1
  213. data/lib/card/format/nest/mode.rb +75 -0
  214. data/lib/card/format/nest/subformat.rb +18 -5
  215. data/lib/card/format/permission.rb +1 -1
  216. data/lib/card/format/registration.rb +18 -12
  217. data/lib/card/format/render.rb +22 -11
  218. data/lib/card/migration.rb +1 -1
  219. data/lib/card/mod.rb +63 -0
  220. data/lib/card/mod/dirs.rb +73 -4
  221. data/lib/card/mod/load_strategy.rb +64 -0
  222. data/lib/card/mod/load_strategy/eval.rb +16 -0
  223. data/lib/card/mod/load_strategy/pattern_tmp_files.rb +29 -0
  224. data/lib/card/mod/load_strategy/set_binding_magic.rb +48 -0
  225. data/lib/card/mod/load_strategy/set_tmp_files.rb +33 -0
  226. data/lib/card/mod/load_strategy/tmp_files.rb +38 -0
  227. data/lib/card/mod/loader.rb +44 -129
  228. data/lib/card/mod/loader/set_loader.rb +85 -0
  229. data/lib/card/mod/loader/set_pattern_loader.rb +58 -0
  230. data/lib/card/mod/module_template.rb +67 -0
  231. data/lib/card/model/save_helper.rb +27 -4
  232. data/lib/card/name.rb +8 -10
  233. data/lib/card/name/fields_and_traits.rb +7 -5
  234. data/lib/card/name/view_name.rb +4 -4
  235. data/lib/card/query.rb +11 -5
  236. data/lib/card/query/attributes.rb +1 -1
  237. data/lib/card/query/interpretation.rb +3 -3
  238. data/lib/card/reference.rb +2 -2
  239. data/lib/card/set.rb +6 -28
  240. data/lib/card/set/advanced_api.rb +2 -2
  241. data/lib/card/set/event.rb +39 -14
  242. data/lib/card/set/helpers.rb +8 -7
  243. data/lib/card/set/i18n_scanner.rb +22 -0
  244. data/lib/card/set/i18n_scope.rb +41 -7
  245. data/lib/card/set/loader.rb +3 -52
  246. data/lib/card/set_pattern.rb +22 -38
  247. data/lib/card/subcards.rb +1 -1
  248. data/lib/card/tasks/card.rake +43 -3
  249. data/lib/card/tasks/card/migrate.rake +77 -0
  250. data/lib/card/view.rb +34 -5
  251. data/lib/card/view/cache.rb +69 -32
  252. data/lib/card/view/cache_action.rb +158 -0
  253. data/lib/card/view/options.rb +107 -57
  254. data/lib/card/view/stub.rb +46 -12
  255. data/lib/card/view/visibility.rb +3 -3
  256. data/lib/cardio.rb +9 -5
  257. data/mod/account/set/right/account.rb +2 -3
  258. data/mod/account/set/right/email.rb +4 -5
  259. data/mod/account/set/right/password.rb +2 -2
  260. data/mod/account/set/right/salt.rb +1 -1
  261. data/mod/account/set/right/status.rb +1 -1
  262. data/mod/account/set/right/token.rb +5 -5
  263. data/mod/account/set/self/account_links.rb +1 -1
  264. data/mod/account/set/self/signin.rb +7 -7
  265. data/mod/account/set/type/signup.rb +6 -4
  266. data/mod/account/set/type/user.rb +16 -15
  267. data/mod/account/spec/set/all/account_spec.rb +96 -103
  268. data/mod/account/spec/set/right/account_spec.rb +1 -1
  269. data/mod/account/spec/set/self/account_links_spec.rb +2 -2
  270. data/mod/account/spec/set/self/signin_spec.rb +1 -1
  271. data/mod/account/template/type/signup/core.haml +22 -0
  272. data/mod/admin/set/self/admin.rb +26 -4
  273. data/mod/admin/set/self/admin_info.rb +7 -2
  274. data/mod/admin/spec/set/self/admin_spec.rb +47 -30
  275. data/mod/admin/spec/set/self/version_spec.rb +2 -2
  276. data/mod/basic_formats/format/css_format.rb +9 -0
  277. data/mod/basic_formats/format/csv_format.rb +10 -0
  278. data/mod/basic_formats/format/js_format.rb +4 -0
  279. data/mod/basic_formats/format/json_format.rb +15 -0
  280. data/mod/basic_formats/format/xml_format.rb +4 -0
  281. data/mod/basic_formats/set/all/all_csv.rb +1 -1
  282. data/mod/basic_formats/set/all/base.rb +17 -9
  283. data/mod/basic_formats/set/all/json.rb +1 -1
  284. data/mod/basic_formats/set/self/01_head/javascript.rb +11 -7
  285. data/mod/basic_formats/set/self/head.rb +3 -2
  286. data/{db/migrate_core_cards/20170719163708_update_bootswatch_themes.rb → mod/bootstrap/db/migrate_cards/20170719163701_update_bootswatch_themes.rb} +1 -1
  287. data/{db/migrate_core_cards → mod/bootstrap/db/migrate_cards}/20170726111053_add_bootstrap_mixins.rb +0 -0
  288. data/{db/migrate_core_cards → mod/bootstrap/db/migrate_cards}/20170726145012_select2.rb +0 -0
  289. data/mod/bootstrap/file/cerulean_skin_image/image-icon.png +0 -0
  290. data/mod/bootstrap/file/cerulean_skin_image/image-large.png +0 -0
  291. data/mod/bootstrap/file/cerulean_skin_image/image-medium.png +0 -0
  292. data/mod/bootstrap/file/cerulean_skin_image/image-small.png +0 -0
  293. data/mod/bootstrap/file/cosmo_skin_image/image-icon.png +0 -0
  294. data/mod/bootstrap/file/cosmo_skin_image/image-large.png +0 -0
  295. data/mod/bootstrap/file/cosmo_skin_image/image-medium.png +0 -0
  296. data/mod/bootstrap/file/cosmo_skin_image/image-small.png +0 -0
  297. data/mod/bootstrap/file/cyborg_skin_image/image-icon.png +0 -0
  298. data/mod/bootstrap/file/cyborg_skin_image/image-large.png +0 -0
  299. data/mod/bootstrap/file/cyborg_skin_image/image-medium.png +0 -0
  300. data/mod/bootstrap/file/cyborg_skin_image/image-small.png +0 -0
  301. data/mod/bootstrap/file/darkly_skin_image/image-icon.png +0 -0
  302. data/mod/bootstrap/file/darkly_skin_image/image-large.png +0 -0
  303. data/mod/bootstrap/file/darkly_skin_image/image-medium.png +0 -0
  304. data/mod/bootstrap/file/darkly_skin_image/image-small.png +0 -0
  305. data/mod/bootstrap/file/flatly_skin_image/image-icon.png +0 -0
  306. data/mod/bootstrap/file/flatly_skin_image/image-large.png +0 -0
  307. data/mod/bootstrap/file/flatly_skin_image/image-medium.png +0 -0
  308. data/mod/bootstrap/file/flatly_skin_image/image-small.png +0 -0
  309. data/mod/bootstrap/file/journal_skin_image/image-icon.png +0 -0
  310. data/mod/bootstrap/file/journal_skin_image/image-large.png +0 -0
  311. data/mod/bootstrap/file/journal_skin_image/image-medium.png +0 -0
  312. data/mod/bootstrap/file/journal_skin_image/image-small.png +0 -0
  313. data/mod/bootstrap/file/litera_skin_image/image-icon.png +0 -0
  314. data/mod/bootstrap/file/litera_skin_image/image-large.png +0 -0
  315. data/mod/bootstrap/file/litera_skin_image/image-medium.png +0 -0
  316. data/mod/bootstrap/file/litera_skin_image/image-original.png +0 -0
  317. data/mod/bootstrap/file/litera_skin_image/image-small.png +0 -0
  318. data/mod/bootstrap/file/lumen_skin_image/image-icon.png +0 -0
  319. data/mod/bootstrap/file/lumen_skin_image/image-large.png +0 -0
  320. data/mod/bootstrap/file/lumen_skin_image/image-medium.png +0 -0
  321. data/mod/bootstrap/file/lumen_skin_image/image-small.png +0 -0
  322. data/mod/bootstrap/file/lux_skin_image/image-icon.png +0 -0
  323. data/mod/bootstrap/file/lux_skin_image/image-large.png +0 -0
  324. data/mod/bootstrap/file/lux_skin_image/image-medium.png +0 -0
  325. data/mod/bootstrap/file/lux_skin_image/image-original.png +0 -0
  326. data/mod/bootstrap/file/lux_skin_image/image-small.png +0 -0
  327. data/mod/bootstrap/file/materia_skin_image/image-icon.png +0 -0
  328. data/mod/bootstrap/file/materia_skin_image/image-large.png +0 -0
  329. data/mod/bootstrap/file/materia_skin_image/image-medium.png +0 -0
  330. data/mod/bootstrap/file/materia_skin_image/image-original.png +0 -0
  331. data/mod/bootstrap/file/materia_skin_image/image-small.png +0 -0
  332. data/mod/bootstrap/file/minty_skin_image/image-icon.png +0 -0
  333. data/mod/bootstrap/file/minty_skin_image/image-large.png +0 -0
  334. data/mod/bootstrap/file/minty_skin_image/image-medium.png +0 -0
  335. data/mod/bootstrap/file/minty_skin_image/image-original.png +0 -0
  336. data/mod/bootstrap/file/minty_skin_image/image-small.png +0 -0
  337. data/mod/bootstrap/file/pulse_skin_image/image-icon.png +0 -0
  338. data/mod/bootstrap/file/pulse_skin_image/image-large.png +0 -0
  339. data/mod/bootstrap/file/pulse_skin_image/image-medium.png +0 -0
  340. data/mod/bootstrap/file/pulse_skin_image/image-original.png +0 -0
  341. data/mod/bootstrap/file/pulse_skin_image/image-small.png +0 -0
  342. data/mod/bootstrap/file/sandstone_skin_image/image-icon.png +0 -0
  343. data/mod/bootstrap/file/sandstone_skin_image/image-large.png +0 -0
  344. data/mod/bootstrap/file/sandstone_skin_image/image-medium.png +0 -0
  345. data/mod/bootstrap/file/sandstone_skin_image/image-small.png +0 -0
  346. data/mod/bootstrap/file/simplex_skin_image/image-icon.png +0 -0
  347. data/mod/bootstrap/file/simplex_skin_image/image-large.png +0 -0
  348. data/mod/bootstrap/file/simplex_skin_image/image-medium.png +0 -0
  349. data/mod/bootstrap/file/simplex_skin_image/image-small.png +0 -0
  350. data/mod/bootstrap/file/slate_skin_image/image-icon.png +0 -0
  351. data/mod/bootstrap/file/slate_skin_image/image-large.png +0 -0
  352. data/mod/bootstrap/file/slate_skin_image/image-medium.png +0 -0
  353. data/mod/bootstrap/file/slate_skin_image/image-small.png +0 -0
  354. data/mod/bootstrap/file/solar_skin_image/image-icon.png +0 -0
  355. data/mod/bootstrap/file/solar_skin_image/image-large.png +0 -0
  356. data/mod/bootstrap/file/solar_skin_image/image-medium.png +0 -0
  357. data/mod/bootstrap/file/solar_skin_image/image-original.png +0 -0
  358. data/mod/bootstrap/file/solar_skin_image/image-small.png +0 -0
  359. data/mod/bootstrap/file/spacelab_skin_image/image-icon.png +0 -0
  360. data/mod/bootstrap/file/spacelab_skin_image/image-large.png +0 -0
  361. data/mod/bootstrap/file/spacelab_skin_image/image-medium.png +0 -0
  362. data/mod/bootstrap/file/spacelab_skin_image/image-small.png +0 -0
  363. data/mod/bootstrap/file/superhero_skin_image/image-icon.png +0 -0
  364. data/mod/bootstrap/file/superhero_skin_image/image-large.png +0 -0
  365. data/mod/bootstrap/file/superhero_skin_image/image-medium.png +0 -0
  366. data/mod/bootstrap/file/superhero_skin_image/image-small.png +0 -0
  367. data/mod/bootstrap/file/united_skin_image/image-icon.png +0 -0
  368. data/mod/bootstrap/file/united_skin_image/image-large.png +0 -0
  369. data/mod/bootstrap/file/united_skin_image/image-medium.png +0 -0
  370. data/mod/bootstrap/file/united_skin_image/image-small.png +0 -0
  371. data/mod/bootstrap/file/yeti_skin_image/image-icon.png +0 -0
  372. data/mod/bootstrap/file/yeti_skin_image/image-large.png +0 -0
  373. data/mod/bootstrap/file/yeti_skin_image/image-medium.png +0 -0
  374. data/mod/bootstrap/file/yeti_skin_image/image-small.png +0 -0
  375. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +3 -3
  376. data/mod/bootstrap/lib/bootstrap/component.rb +124 -37
  377. data/mod/bootstrap/lib/bootstrap/component/carousel.rb +68 -0
  378. data/mod/bootstrap/lib/bootstrap/component/form.rb +49 -16
  379. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +35 -10
  380. data/mod/bootstrap/lib/bootstrap/component/layout.rb +10 -2
  381. data/mod/bootstrap/lib/bootstrap/component/panel.rb +4 -4
  382. data/mod/bootstrap/lib/bootstrap/old_component.rb +182 -0
  383. data/mod/bootstrap/lib/javascript/bootstrap_modal_wagn.js +1 -1
  384. data/mod/bootstrap/set/all/bootstrap/accordion.rb +10 -10
  385. data/mod/bootstrap/set/all/bootstrap/helper.rb +2 -0
  386. data/mod/bootstrap/set/all/bootstrap/tabs.rb +1 -1
  387. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +24 -14
  388. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +2 -2
  389. data/mod/bootstrap/spec/set/all/bootstrap/carousel_spec.rb +65 -0
  390. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +4 -44
  391. data/mod/bootstrap/spec/set/all/bootstrap/horizontal_form_spec.rb +46 -0
  392. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +85 -91
  393. data/mod/carrierwave/lib/carrier_wave/file_card_uploader.rb +7 -1
  394. data/mod/carrierwave/set/abstract/attachment/paths.rb +2 -2
  395. data/mod/carrierwave/set/abstract/attachment/upload_cache.rb +10 -3
  396. data/mod/carrierwave/set/type/file.rb +5 -5
  397. data/mod/carrierwave/set/type/image.rb +4 -4
  398. data/mod/carrierwave/spec/lib/carrier_wave/file_card_uploader_spec.rb +1 -0
  399. data/mod/carrierwave/spec/set/type/file/bucket_config_spec.rb +90 -0
  400. data/mod/carrierwave/spec/set/type/file_spec.rb +41 -99
  401. data/mod/core/chunk/link.rb +1 -2
  402. data/mod/core/chunk/nest.rb +1 -1
  403. data/mod/core/chunk/reference.rb +1 -1
  404. data/mod/core/chunk/view_stub.rb +8 -0
  405. data/mod/core/format/html_format.rb +9 -3
  406. data/mod/core/set/abstract/code_file.rb +1 -1
  407. data/mod/core/set/all/actify.rb +34 -0
  408. data/mod/core/set/all/assign_attributes.rb +13 -0
  409. data/mod/core/set/all/cache.rb +96 -0
  410. data/mod/core/set/all/collection.rb +16 -8
  411. data/mod/core/set/all/{event.rb → event_conditions.rb} +1 -1
  412. data/mod/core/set/all/fetch.rb +43 -315
  413. data/mod/core/set/all/fetch_helper.rb +130 -0
  414. data/mod/core/set/all/haml.rb +13 -0
  415. data/mod/core/set/all/i18n.rb +5 -4
  416. data/mod/core/set/all/mark.rb +66 -0
  417. data/mod/core/set/all/name.rb +35 -57
  418. data/mod/core/set/all/permissions.rb +6 -3
  419. data/mod/core/set/all/references.rb +5 -5
  420. data/mod/core/set/all/rename.rb +34 -0
  421. data/mod/core/set/all/rules.rb +1 -1
  422. data/mod/core/set/all/states.rb +12 -0
  423. data/mod/core/set/all/trash.rb +4 -3
  424. data/mod/core/set/all/type.rb +4 -0
  425. data/mod/core/set/all/update_read_rules.rb +1 -1
  426. data/mod/core/spec/set/all/actify_spec.rb +9 -8
  427. data/mod/core/spec/set/all/assign_attributes_spec.rb +33 -299
  428. data/mod/core/spec/set/all/collection_spec.rb +2 -2
  429. data/mod/core/spec/set/all/event_conditions_spec.rb +54 -0
  430. data/mod/core/spec/set/all/fetch_spec.rb +21 -29
  431. data/mod/core/spec/set/all/i18n_spec.rb +17 -0
  432. data/mod/core/spec/set/all/name_spec.rb +39 -3
  433. data/mod/core/spec/set/all/name_validations_spec.rb +21 -0
  434. data/mod/core/spec/set/all/permissions/reader_rules_spec.rb +166 -0
  435. data/mod/core/spec/set/all/permissions_spec.rb +25 -171
  436. data/mod/core/spec/set/all/rename_spec.rb +171 -0
  437. data/mod/core/spec/set/all/rules2_spec.rb +45 -49
  438. data/mod/core/spec/set/all/trash_spec.rb +84 -61
  439. data/mod/history/lib/card/act.rb +5 -4
  440. data/mod/history/lib/card/act/act_renderer.rb +55 -28
  441. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +10 -2
  442. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +8 -1
  443. data/mod/history/lib/card/action.rb +35 -3
  444. data/mod/history/lib/card/action/action_renderer.rb +3 -3
  445. data/mod/history/lib/card/action/admin.rb +17 -0
  446. data/mod/history/lib/card/change.rb +1 -1
  447. data/mod/history/set/all/act_view.rb +16 -9
  448. data/mod/history/set/all/actions.rb +35 -9
  449. data/mod/history/set/all/content_history.rb +22 -14
  450. data/mod/history/set/all/history.rb +52 -19
  451. data/mod/machines/file/all_script_machine_output/file.js +34 -16
  452. data/mod/machines/file/script_html5shiv_printshiv_machine_output/file.js +2 -0
  453. data/mod/machines/lib/card/machine.rb +49 -0
  454. data/mod/machines/lib/javascript/decko.js.coffee +9 -0
  455. data/mod/machines/lib/javascript/decko_mod.js.coffee +3 -0
  456. data/mod/machines/lib/stylesheets/style_cards.scss +10 -14
  457. data/mod/machines/set/abstract/machine.rb +1 -1
  458. data/mod/machines/spec/set/abstract/machine_spec.rb +1 -1
  459. data/mod/machines/spec/set/type/scss_spec.rb +5 -7
  460. data/mod/machines/spec/shared_examples/machine.rb +3 -3
  461. data/mod/notifications/set/all/follow.rb +2 -2
  462. data/mod/notifications/set/all/send_notifications.rb +21 -15
  463. data/mod/notifications/set/right/bcc.rb +1 -1
  464. data/mod/notifications/set/right/follow.rb +1 -1
  465. data/mod/notifications/set/right/html_message.rb +6 -0
  466. data/mod/notifications/set/right/text_message.rb +6 -0
  467. data/mod/notifications/spec/set/all/notify_spec.rb +87 -166
  468. data/mod/notifications/spec/set/type/notification_template_spec.rb +3 -2
  469. data/mod/pointer/set/abstract/02_pointer.rb +4 -4
  470. data/mod/pointer/set/abstract/02_pointer/edit.rb +41 -14
  471. data/mod/pointer/spec/set/type/pointer_spec.rb +10 -9
  472. data/mod/prosemirror_editor/lib/javascript/script_prosemirror.js +305 -143
  473. data/mod/settings/set/abstract/permission.rb +1 -1
  474. data/mod/settings/set/right/structure.rb +0 -1
  475. data/mod/settings/set/self/recent_settings.rb +4 -0
  476. data/mod/standard/file/credit_image/image-icon.png +0 -0
  477. data/mod/standard/file/credit_image/image-large.png +0 -0
  478. data/mod/standard/file/credit_image/image-medium.png +0 -0
  479. data/mod/standard/file/credit_image/image-small.png +0 -0
  480. data/mod/standard/file/favicon/image-icon.png +0 -0
  481. data/mod/standard/file/favicon/image-large.png +0 -0
  482. data/mod/standard/file/favicon/image-medium.png +0 -0
  483. data/mod/standard/file/favicon/image-small.png +0 -0
  484. data/mod/standard/file/logo/image-icon.png +0 -0
  485. data/mod/standard/file/logo/image-large.png +0 -0
  486. data/mod/standard/file/logo/image-medium.png +0 -0
  487. data/mod/standard/file/logo/image-small.png +0 -0
  488. data/mod/standard/set/abstract/search.rb +1 -1
  489. data/mod/standard/set/all/error.rb +5 -5
  490. data/mod/standard/set/all/links.rb +1 -2
  491. data/mod/standard/set/all/list_changes.rb +1 -1
  492. data/mod/standard/set/all/rich_html/content.rb +20 -14
  493. data/mod/standard/set/all/rich_html/editing.rb +9 -7
  494. data/mod/standard/set/all/rich_html/form.rb +24 -27
  495. data/mod/standard/set/all/rich_html/header.rb +1 -1
  496. data/mod/standard/set/all/rich_html/new.rb +12 -10
  497. data/mod/standard/set/all/rich_html/toolbar.rb +2 -2
  498. data/mod/standard/set/all/rich_html/wrapper.rb +4 -4
  499. data/mod/standard/set/self/activity_toolbar_button.rb +1 -1
  500. data/mod/standard/set/self/recent.rb +4 -2
  501. data/mod/standard/set/type/basic.rb +2 -2
  502. data/mod/standard/set/type/cardtype.rb +11 -8
  503. data/mod/standard/set/type/list.rb +4 -4
  504. data/mod/standard/set/type/search_type.rb +4 -4
  505. data/mod/standard/set/type/session.rb +4 -0
  506. data/mod/standard/set/type/set.rb +1 -1
  507. data/mod/standard/set/type/toggle.rb +2 -2
  508. data/mod/standard/spec/chunk/link_spec.rb +1 -1
  509. data/mod/standard/spec/set/all/history_spec.rb +31 -12
  510. data/mod/standard/spec/set/all/rich_html/form_spec.rb +2 -2
  511. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +1 -0
  512. data/mod/standard/spec/set/type/cardtype_spec.rb +44 -1
  513. data/mod/standard/spec/set/type/email_template/email_config_spec.rb +2 -1
  514. data/mod/standard/spec/set/type/list_spec.rb +8 -3
  515. data/mod/standard/spec/set/type/listed_by_spec.rb +0 -6
  516. data/spec/config/initializers/patches/active_job_spec.rb +7 -0
  517. data/spec/lib/card/action_spec.rb +3 -2
  518. data/spec/lib/card/codename_spec.rb +7 -2
  519. data/spec/lib/card/content_spec.rb +19 -1
  520. data/spec/lib/card/format/render_spec.rb +5 -5
  521. data/spec/lib/card/i18n_spec.rb +5 -20
  522. data/spec/lib/card/{loader → mod/loader}/mod_dirs.rb +0 -0
  523. data/spec/lib/card/mod/loader/set_loader_spec.rb +19 -0
  524. data/spec/lib/card/mod/loader/set_pattern_loader_spec.rb +19 -0
  525. data/spec/lib/card/name/fields_and_traits_spec.rb +18 -0
  526. data/spec/lib/card/name_spec.rb +3 -3
  527. data/spec/lib/card/query/sorting_spec.rb +1 -1
  528. data/spec/lib/card/query_spec.rb +16 -9
  529. data/spec/lib/card/reference_spec.rb +5 -6
  530. data/spec/lib/card/set_pattern_spec.rb +4 -0
  531. data/spec/lib/card/view_cache_spec.rb +17 -0
  532. data/spec/models/card/create_spec.rb +40 -22
  533. data/spec/models/card/trash_spec.rb +8 -70
  534. data/spec/models/card_spec.rb +16 -46
  535. data/spec/spec_helper.rb +1 -3
  536. data/spec/support/card_spec_helper.rb +5 -2
  537. data/spec/support/card_spec_loader.rb +34 -6
  538. data/spec/support/helper/event_helper.rb +1 -1
  539. data/spec/support/helper/save_helper.rb +4 -0
  540. data/spec/support/helper/set_helper.rb +1 -1
  541. data/spec/support/matchers/card_matchers.rb +136 -0
  542. data/spec/support/matchers/expectations.rb +5 -0
  543. data/spec/support/matchers/file_matchers.rb +71 -0
  544. data/spec/support/matchers/negated_matchers.rb +2 -0
  545. data/spec/support/test_mods/mod1/set/all/test_set.rb +3 -0
  546. data/spec/support/test_mods/mod2/set_pattern/test_pattern.rb +0 -0
  547. data/tmpsets/set/mod001-admin/self/admin.rb +130 -0
  548. data/tmpsets/set/mod001-admin/self/admin_info.rb +110 -0
  549. data/tmpsets/set/mod001-admin/self/version.rb +15 -0
  550. data/tmpsets/set/mod002-core/abstract/code_file.rb +79 -0
  551. data/tmpsets/set/mod002-core/all/actify.rb +101 -0
  552. data/tmpsets/set/mod002-core/all/active_card.rb +42 -0
  553. data/tmpsets/set/mod002-core/all/collection.rb +313 -0
  554. data/tmpsets/set/mod002-core/all/content.rb +69 -0
  555. data/tmpsets/set/mod002-core/all/debug.rb +30 -0
  556. data/tmpsets/set/mod002-core/all/erb.rb +18 -0
  557. data/tmpsets/set/mod002-core/all/event.rb +62 -0
  558. data/tmpsets/set/mod002-core/all/export.rb +49 -0
  559. data/tmpsets/set/mod002-core/all/fetch.rb +335 -0
  560. data/tmpsets/set/mod002-core/all/haml.rb +14 -0
  561. data/tmpsets/set/mod002-core/all/initialize.rb +42 -0
  562. data/tmpsets/set/mod002-core/all/location_history.rb +15 -0
  563. data/tmpsets/set/mod002-core/all/name.rb +282 -0
  564. data/tmpsets/set/mod002-core/all/name_validations.rb +65 -0
  565. data/tmpsets/set/mod002-core/all/pattern.rb +67 -0
  566. data/tmpsets/set/mod002-core/all/permissions.rb +319 -0
  567. data/tmpsets/set/mod002-core/all/phases.rb +23 -0
  568. data/tmpsets/set/mod002-core/all/references.rb +187 -0
  569. data/tmpsets/set/mod002-core/all/rules.rb +311 -0
  570. data/tmpsets/set/mod002-core/all/stages.rb +31 -0
  571. data/tmpsets/set/mod002-core/all/states.rb +31 -0
  572. data/tmpsets/set/mod002-core/all/subcards.rb +85 -0
  573. data/tmpsets/set/mod002-core/all/templating.rb +78 -0
  574. data/tmpsets/set/mod002-core/all/tracked_attributes.rb +78 -0
  575. data/tmpsets/set/mod002-core/all/trash.rb +113 -0
  576. data/tmpsets/set/mod002-core/all/type.rb +60 -0
  577. data/tmpsets/set/mod002-core/all/update_read_rules.rb +91 -0
  578. data/tmpsets/set/mod002-core/all/utils.rb +62 -0
  579. data/tmpsets/set/mod002-core/all/view_cache.rb +16 -0
  580. data/tmpsets/set/mod003-history/all/actions.rb +60 -0
  581. data/tmpsets/set/mod003-history/all/content_history.rb +168 -0
  582. data/tmpsets/set/mod003-history/all/history.rb +408 -0
  583. data/tmpsets/set/mod004-basic_formats/all/all_css.rb +45 -0
  584. data/tmpsets/set/mod004-basic_formats/all/all_csv.rb +56 -0
  585. data/tmpsets/set/mod004-basic_formats/all/all_js.rb +13 -0
  586. data/tmpsets/set/mod004-basic_formats/all/base.rb +155 -0
  587. data/tmpsets/set/mod004-basic_formats/all/file.rb +16 -0
  588. data/tmpsets/set/mod004-basic_formats/all/json.rb +76 -0
  589. data/tmpsets/set/mod004-basic_formats/all/rss.rb +77 -0
  590. data/tmpsets/set/mod004-basic_formats/all/text.rb +13 -0
  591. data/tmpsets/set/mod004-basic_formats/self/01_head/javascript.rb +79 -0
  592. data/tmpsets/set/mod004-basic_formats/self/head.rb +101 -0
  593. data/tmpsets/set/mod005-pointer/abstract/01_pointer.rb +193 -0
  594. data/tmpsets/set/mod005-pointer/abstract/01_pointer/edit.rb +224 -0
  595. data/tmpsets/set/mod005-pointer/abstract/code_pointer.rb +16 -0
  596. data/tmpsets/set/mod005-pointer/self/script_editors.rb +8 -0
  597. data/tmpsets/set/mod005-pointer/self/script_mods.rb +8 -0
  598. data/tmpsets/set/mod005-pointer/self/script_pointer_config.rb +10 -0
  599. data/tmpsets/set/mod005-pointer/type/pointer.rb +8 -0
  600. data/tmpsets/set/mod006-ace_editor/abstract/ace_editor.rb +18 -0
  601. data/tmpsets/set/mod006-ace_editor/self/script_ace.rb +10 -0
  602. data/tmpsets/set/mod006-ace_editor/self/script_ace_config.rb +12 -0
  603. data/tmpsets/set/mod007-prosemirror_editor/abstract/prosemirror_editor.rb +14 -0
  604. data/tmpsets/set/mod007-prosemirror_editor/self/script_prosemirror.rb +10 -0
  605. data/tmpsets/set/mod007-prosemirror_editor/self/script_prosemirror_config.rb +13 -0
  606. data/tmpsets/set/mod009-solid_cache/abstract/solid_cache.rb +106 -0
  607. data/tmpsets/set/mod009-solid_cache/all/solid_cache.rb +21 -0
  608. data/tmpsets/set/mod009-solid_cache/right/solid_cache.rb +39 -0
  609. data/tmpsets/set/mod010-basic_types/type/html.rb +26 -0
  610. data/tmpsets/set/mod010-basic_types/type/plain_text.rb +19 -0
  611. data/tmpsets/set/mod011-machines/abstract/machine.rb +277 -0
  612. data/tmpsets/set/mod011-machines/abstract/machine_input.rb +83 -0
  613. data/tmpsets/set/mod011-machines/abstract/script.rb +49 -0
  614. data/tmpsets/set/mod011-machines/all/reset_machines.rb +19 -0
  615. data/tmpsets/set/mod011-machines/right/machine_cache.rb +18 -0
  616. data/tmpsets/set/mod011-machines/right/machine_input.rb +10 -0
  617. data/tmpsets/set/mod011-machines/right/machine_output.rb +47 -0
  618. data/tmpsets/set/mod011-machines/self/script_card_menu.rb +8 -0
  619. data/tmpsets/set/mod011-machines/self/script_html5shiv_printshiv.rb +8 -0
  620. data/tmpsets/set/mod011-machines/self/script_jquery.rb +8 -0
  621. data/tmpsets/set/mod011-machines/self/script_jquery_helper.rb +16 -0
  622. data/tmpsets/set/mod011-machines/self/script_slot.rb +14 -0
  623. data/tmpsets/set/mod011-machines/self/style_bootstrap_compatible.rb +8 -0
  624. data/tmpsets/set/mod011-machines/self/style_cards.rb +8 -0
  625. data/tmpsets/set/mod011-machines/self/style_jquery_ui_smoothness.rb +8 -0
  626. data/tmpsets/set/mod011-machines/type/coffee_script.rb +43 -0
  627. data/tmpsets/set/mod011-machines/type/css.rb +67 -0
  628. data/tmpsets/set/mod011-machines/type/java_script.rb +36 -0
  629. data/tmpsets/set/mod011-machines/type/scss.rb +21 -0
  630. data/tmpsets/set/mod011-machines/type/skin.rb +13 -0
  631. data/tmpsets/set/mod012-settings/abstract/permission.rb +119 -0
  632. data/tmpsets/set/mod012-settings/right/add_help.rb +18 -0
  633. data/tmpsets/set/mod012-settings/right/comment.rb +8 -0
  634. data/tmpsets/set/mod012-settings/right/create.rb +8 -0
  635. data/tmpsets/set/mod012-settings/right/default.rb +14 -0
  636. data/tmpsets/set/mod012-settings/right/delete.rb +8 -0
  637. data/tmpsets/set/mod012-settings/right/help.rb +10 -0
  638. data/tmpsets/set/mod012-settings/right/read.rb +10 -0
  639. data/tmpsets/set/mod012-settings/right/script.rb +16 -0
  640. data/tmpsets/set/mod012-settings/right/structure.rb +68 -0
  641. data/tmpsets/set/mod012-settings/right/style.rb +17 -0
  642. data/tmpsets/set/mod012-settings/right/update.rb +8 -0
  643. data/tmpsets/set/mod012-settings/self/accountable.rb +10 -0
  644. data/tmpsets/set/mod012-settings/self/add_help.rb +9 -0
  645. data/tmpsets/set/mod012-settings/self/autoname.rb +9 -0
  646. data/tmpsets/set/mod012-settings/self/captcha.rb +9 -0
  647. data/tmpsets/set/mod012-settings/self/create.rb +9 -0
  648. data/tmpsets/set/mod012-settings/self/default.rb +9 -0
  649. data/tmpsets/set/mod012-settings/self/default_html_view.rb +9 -0
  650. data/tmpsets/set/mod012-settings/self/delete.rb +9 -0
  651. data/tmpsets/set/mod012-settings/self/follow_fields.rb +9 -0
  652. data/tmpsets/set/mod012-settings/self/help.rb +9 -0
  653. data/tmpsets/set/mod012-settings/self/input.rb +11 -0
  654. data/tmpsets/set/mod012-settings/self/layout.rb +9 -0
  655. data/tmpsets/set/mod012-settings/self/on_create.rb +9 -0
  656. data/tmpsets/set/mod012-settings/self/on_delete.rb +9 -0
  657. data/tmpsets/set/mod012-settings/self/on_update.rb +9 -0
  658. data/tmpsets/set/mod012-settings/self/options.rb +11 -0
  659. data/tmpsets/set/mod012-settings/self/options_label.rb +11 -0
  660. data/tmpsets/set/mod012-settings/self/read.rb +9 -0
  661. data/tmpsets/set/mod012-settings/self/recent_settings.rb +10 -0
  662. data/tmpsets/set/mod012-settings/self/script.rb +9 -0
  663. data/tmpsets/set/mod012-settings/self/structure.rb +9 -0
  664. data/tmpsets/set/mod012-settings/self/style.rb +9 -0
  665. data/tmpsets/set/mod012-settings/self/table_of_contents.rb +9 -0
  666. data/tmpsets/set/mod012-settings/self/thanks.rb +9 -0
  667. data/tmpsets/set/mod012-settings/self/update.rb +9 -0
  668. data/tmpsets/set/mod012-settings/type/setting.rb +111 -0
  669. data/tmpsets/set/mod013-email/all/email_html.rb +11 -0
  670. data/tmpsets/set/mod013-email/all/email_text.rb +12 -0
  671. data/tmpsets/set/mod013-email/all/follow.rb +253 -0
  672. data/tmpsets/set/mod013-email/all/notify.rb +271 -0
  673. data/tmpsets/set/mod013-email/all/observer.rb +33 -0
  674. data/tmpsets/set/mod013-email/right/bcc.rb +47 -0
  675. data/tmpsets/set/mod013-email/right/cc.rb +10 -0
  676. data/tmpsets/set/mod013-email/right/follow.rb +106 -0
  677. data/tmpsets/set/mod013-email/right/follow_fields.rb +10 -0
  678. data/tmpsets/set/mod013-email/right/followers.rb +41 -0
  679. data/tmpsets/set/mod013-email/right/following.rb +65 -0
  680. data/tmpsets/set/mod013-email/right/from.rb +10 -0
  681. data/tmpsets/set/mod013-email/right/html_message.rb +10 -0
  682. data/tmpsets/set/mod013-email/right/to.rb +10 -0
  683. data/tmpsets/set/mod013-email/self/always.rb +20 -0
  684. data/tmpsets/set/mod013-email/self/created.rb +26 -0
  685. data/tmpsets/set/mod013-email/self/edited.rb +27 -0
  686. data/tmpsets/set/mod013-email/self/follow.rb +9 -0
  687. data/tmpsets/set/mod013-email/self/follow_defaults.rb +75 -0
  688. data/tmpsets/set/mod013-email/self/never.rb +20 -0
  689. data/tmpsets/set/mod013-email/type/email_template.rb +133 -0
  690. data/tmpsets/set/mod013-email/type_plus_right/user/follow.rb +180 -0
  691. data/tmpsets/set/mod014-developer/all/event_viz.rb +59 -0
  692. data/tmpsets/set/mod014-developer/all/view_viz.rb +30 -0
  693. data/tmpsets/set/mod014-developer/right/debug.rb +96 -0
  694. data/tmpsets/set/mod015-carrierwave/abstract/attachment.rb +118 -0
  695. data/tmpsets/set/mod015-carrierwave/abstract/attachment/paths.rb +57 -0
  696. data/tmpsets/set/mod015-carrierwave/abstract/attachment/storage_type.rb +326 -0
  697. data/tmpsets/set/mod015-carrierwave/abstract/attachment/upload_cache.rb +84 -0
  698. data/tmpsets/set/mod015-carrierwave/all/file_utils.rb +35 -0
  699. data/tmpsets/set/mod015-carrierwave/self/admin.rb +30 -0
  700. data/tmpsets/set/mod015-carrierwave/type/file.rb +158 -0
  701. data/tmpsets/set/mod015-carrierwave/type/image.rb +97 -0
  702. data/tmpsets/set/mod016-standard/all/comment.rb +67 -0
  703. data/tmpsets/set/mod016-standard/all/error.rb +229 -0
  704. data/tmpsets/set/mod016-standard/all/links.rb +165 -0
  705. data/tmpsets/set/mod016-standard/all/list_changes.rb +53 -0
  706. data/tmpsets/set/mod016-standard/all/rich_html/content.rb +261 -0
  707. data/tmpsets/set/mod016-standard/all/rich_html/editing.rb +247 -0
  708. data/tmpsets/set/mod016-standard/all/rich_html/form.rb +298 -0
  709. data/tmpsets/set/mod016-standard/all/rich_html/header.rb +78 -0
  710. data/tmpsets/set/mod016-standard/all/rich_html/menu.rb +154 -0
  711. data/tmpsets/set/mod016-standard/all/rich_html/modal.rb +58 -0
  712. data/tmpsets/set/mod016-standard/all/rich_html/toolbar.rb +312 -0
  713. data/tmpsets/set/mod016-standard/all/rich_html/wrapper.rb +191 -0
  714. data/tmpsets/set/mod016-standard/right/discussion.rb +10 -0
  715. data/tmpsets/set/mod016-standard/right/when_created.rb +14 -0
  716. data/tmpsets/set/mod016-standard/right/when_last_edited.rb +14 -0
  717. data/tmpsets/set/mod016-standard/rstar/rules.rb +107 -0
  718. data/tmpsets/set/mod016-standard/rstar/rules_editor.rb +371 -0
  719. data/tmpsets/set/mod016-standard/self/alerts.rb +12 -0
  720. data/tmpsets/set/mod016-standard/self/codenames.rb +7 -0
  721. data/tmpsets/set/mod016-standard/self/foot.rb +15 -0
  722. data/tmpsets/set/mod016-standard/self/navbox.rb +36 -0
  723. data/tmpsets/set/mod016-standard/self/now.rb +14 -0
  724. data/tmpsets/set/mod016-standard/self/recent.rb +34 -0
  725. data/tmpsets/set/mod016-standard/self/search.rb +71 -0
  726. data/tmpsets/set/mod016-standard/type/basic.rb +59 -0
  727. data/tmpsets/set/mod016-standard/type/cardtype.rb +81 -0
  728. data/tmpsets/set/mod016-standard/type/date.rb +15 -0
  729. data/tmpsets/set/mod016-standard/type/layout_type.rb +17 -0
  730. data/tmpsets/set/mod016-standard/type/list.rb +120 -0
  731. data/tmpsets/set/mod016-standard/type/listed_by.rb +85 -0
  732. data/tmpsets/set/mod016-standard/type/number.rb +25 -0
  733. data/tmpsets/set/mod016-standard/type/phrase.rb +10 -0
  734. data/tmpsets/set/mod016-standard/type/search_type.rb +339 -0
  735. data/tmpsets/set/mod016-standard/type/session.rb +42 -0
  736. data/tmpsets/set/mod016-standard/type/set.rb +371 -0
  737. data/tmpsets/set/mod016-standard/type/toggle.rb +19 -0
  738. data/tmpsets/set/mod016-standard/type/uri.rb +18 -0
  739. data/tmpsets/set/mod017-account/all/account.rb +72 -0
  740. data/tmpsets/set/mod017-account/right/account.rb +196 -0
  741. data/tmpsets/set/mod017-account/right/email.rb +61 -0
  742. data/tmpsets/set/mod017-account/right/password.rb +54 -0
  743. data/tmpsets/set/mod017-account/right/salt.rb +12 -0
  744. data/tmpsets/set/mod017-account/right/status.rb +16 -0
  745. data/tmpsets/set/mod017-account/right/token.rb +57 -0
  746. data/tmpsets/set/mod017-account/self/account_links.rb +72 -0
  747. data/tmpsets/set/mod017-account/self/signin.rb +165 -0
  748. data/tmpsets/set/mod017-account/type/signup.rb +175 -0
  749. data/tmpsets/set/mod017-account/type/user.rb +88 -0
  750. data/tmpsets/set/mod018-bootstrap/all/bootstrap/form.rb +42 -0
  751. data/tmpsets/set/mod018-bootstrap/all/bootstrap/helper.rb +236 -0
  752. data/tmpsets/set/mod018-bootstrap/all/bootstrap/table.rb +68 -0
  753. data/tmpsets/set/mod018-bootstrap/all/bootstrap/tabs.rb +88 -0
  754. data/tmpsets/set/mod018-bootstrap/all/bootstrap/wrapper.rb +18 -0
  755. data/tmpsets/set/mod018-bootstrap/all/rich_bootstrap.rb +13 -0
  756. data/tmpsets/set/mod018-bootstrap/self/bootstrap_cards.rb +8 -0
  757. data/tmpsets/set/mod018-bootstrap/self/bootstrap_js.rb +12 -0
  758. data/tmpsets/set/mod018-bootstrap/self/bootswatch_shared.rb +47 -0
  759. data/tmpsets/set/mod018-bootstrap/self/script_mods.rb +7 -0
  760. data/tmpsets/set/mod018-bootstrap/self/smartmenu_css.rb +12 -0
  761. data/tmpsets/set/mod018-bootstrap/self/smartmenu_js.rb +12 -0
  762. data/tmpsets/set_pattern/100-all.rb +24 -0
  763. data/tmpsets/set_pattern/101-all_plus.rb +26 -0
  764. data/tmpsets/set_pattern/102-type.rb +36 -0
  765. data/tmpsets/set_pattern/103-star.rb +28 -0
  766. data/tmpsets/set_pattern/104-rstar.rb +30 -0
  767. data/tmpsets/set_pattern/105-right.rb +33 -0
  768. data/tmpsets/set_pattern/106-type_plus_right.rb +39 -0
  769. data/tmpsets/set_pattern/107-self.rb +32 -0
  770. metadata +494 -167
  771. data/README_Developers.rdoc +0 -100
  772. data/lib/card/format/names.rb +0 -43
  773. data/lib/card/format/nest/view.rb +0 -65
  774. data/lib/card/view/fetch.rb +0 -121
  775. data/mod/core/spec/set/all/attribute_tracking_spec.rb +0 -21
  776. data/spec/models/card/cardtype_spec.rb +0 -189
  777. data/spec/models/card/type_transition_spec.rb +0 -132
  778. data/spec/models/card/validation_spec.rb +0 -34
  779. data/spec/support/matchers.rb +0 -74
@@ -0,0 +1,40 @@
1
+ class Card
2
+ class Format
3
+ module ContextNames
4
+
5
+ def context_names
6
+ @context_names ||= initial_context_names
7
+ end
8
+
9
+ def initial_context_names
10
+ @initial_context_names ||=
11
+ parent ? context_names_from_parent : context_names_from_params
12
+ end
13
+
14
+ def context_names_from_parent
15
+ part_keys = @card.cardname.part_names.map(&:key)
16
+ parent.context_names.reject { |n| !part_keys.include? n.key }
17
+ end
18
+
19
+ def context_names_from_params
20
+ return [] unless (name_list = Card::Env.slot_opts[:name_context])
21
+ name_list.to_s.split(",").map(&:to_name)
22
+ end
23
+
24
+ def context_names_to_params
25
+ return if context_names.empty?
26
+ context_names.join(",")
27
+ end
28
+
29
+ def add_name_context name=nil
30
+ name ||= card.name
31
+ @context_names = (context_names + name.to_name.part_names).uniq
32
+ end
33
+
34
+ def title_in_context title=nil
35
+ title = title ? title.to_name.absolute_name(card.cardname) : card.cardname
36
+ title.from *context_names
37
+ end
38
+ end
39
+ end
40
+ end
@@ -9,16 +9,20 @@ class Card
9
9
  end
10
10
 
11
11
  def debug_error e
12
- debug = Card[:debugger]
13
- raise e if debug && debug.content == "on"
12
+ raise e if Card[:debugger]&.content == "on"
14
13
  end
15
14
 
16
15
  def error_cardname
17
- card && card.name.present? ? card.name : "unknown card"
16
+ if card&.name.present?
17
+ card.name
18
+ else
19
+ I18n.t :no_cardname, scope: [:lib, :card, :format, :error]
20
+ end
18
21
  end
19
22
 
20
23
  def rendering_error _exception, view
21
- "Error rendering: #{error_cardname} (#{view} view)"
24
+ I18n.t :error_rendering, scope: [:lib, :card, :format, :error],
25
+ cardname: error_cardname, view: view
22
26
  end
23
27
  end
24
28
  end
@@ -4,7 +4,7 @@ class Card
4
4
  include Fetch
5
5
  include Main
6
6
  include Subformat
7
- include View
7
+ include Mode
8
8
 
9
9
  # nested by another card's content
10
10
  # (as opposed to a direct API nest)
@@ -15,11 +15,11 @@ class Card
15
15
  nest nest_name, opts
16
16
  end
17
17
 
18
- def nest cardish, options={}, &block
18
+ def nest cardish, options={}, override=true, &block
19
19
  return "" if nest_invisible?
20
20
  nested_card = fetch_nested_card cardish, options
21
21
  view, options = interpret_nest_options nested_card, options
22
- nest_render nested_card, view, options, &block
22
+ nest_render nested_card, view, options, override, &block
23
23
  end
24
24
 
25
25
  def interpret_nest_options nested_card, options
@@ -42,9 +42,9 @@ class Card
42
42
  :name
43
43
  end
44
44
 
45
- def nest_render nested_card, view, options
45
+ def nest_render nested_card, view, options, override
46
46
  subformat = nest_subformat nested_card, options, view
47
- view = subformat.modal_nest_view view
47
+ view = subformat.modal_nest_view view if override
48
48
  rendered = count_chars { subformat.optional_render view, options }
49
49
  block_given? ? yield(rendered, view) : rendered
50
50
  end
@@ -90,12 +90,12 @@ class Card
90
90
  private
91
91
 
92
92
  def nest_invisible?
93
- @mode == :closed && @char_count && @char_count > max_char_count
93
+ nest_mode == :closed && @char_count && (@char_count > max_char_count)
94
94
  end
95
95
 
96
96
  def count_chars
97
97
  result = yield
98
- return result unless @mode == :closed && result
98
+ return result unless nest_mode == :closed && result
99
99
  @char_count ||= 0
100
100
  @char_count += result.length
101
101
  result
@@ -21,7 +21,7 @@ class Card
21
21
  new_args = { name: nest_name, type: nest_opts[:type] }
22
22
 
23
23
  new_args[:supercard] = card.context_card unless nest_name.strip.blank?
24
- # special case. gets absolutized incorrectly. fix in smartname?
24
+ # special case. gets absolutized incorrectly. fix in cardname?
25
25
 
26
26
  nest_new_main_args new_args if nest_name =~ /^_main\+/
27
27
  nest_new_content_args new_args, nest_name
@@ -0,0 +1,75 @@
1
+ class Card
2
+ class Format
3
+ module Nest
4
+ module Mode
5
+ # A nest can be rendered in one of four modes: normal, closed, edit, or template.
6
+
7
+ # In _normal_ mode nests are rendered in the requested view without alteration.
8
+ # In _closed_ mode nest rendering is altered to fit within a single line
9
+ # In _edit_ mode, a nest's view is replaced (where applicable) with a form element to edit content
10
+ # In _template_ mode, the view is replaced with a link to a nest editor to edit rules and options for that nest
11
+
12
+ # current nest mode
13
+ # @return [Symbol] :normal, :closed, :edit, or :template
14
+ def nest_mode
15
+ @nest_mode ||= parent ? parent.nest_mode : :normal
16
+ end
17
+
18
+ # run block with new_mode as nest_mode, then return to prior mode
19
+ # @param new_mode [Symbol] :normal, :closed, :edit, or :template
20
+ # @return block result
21
+ def with_nest_mode new_mode
22
+ old_mode = nest_mode
23
+ @nest_mode = new_mode
24
+ result = yield
25
+ @nest_mode = old_mode
26
+ result
27
+ end
28
+
29
+ # view to be rendered in current mode
30
+ # @param view [Symbol]
31
+ # @return [Symbol] viewname
32
+ def modal_nest_view view
33
+ # Note: the subformat always has the same nest_mode as its parent format
34
+ case nest_mode
35
+ when :edit then view_in_edit_mode(view)
36
+ when :template then :template_rule
37
+ when :closed then view_in_closed_mode(view)
38
+ else view
39
+ end
40
+ end
41
+
42
+ # Returns the view that the card should use when nested in edit mode
43
+ # @param view [Symbol]
44
+ # @return [Symbol] viewname
45
+ def view_in_edit_mode view
46
+ hide_view_in_edit_mode?(view) ? :blank : :edit_in_form
47
+ end
48
+
49
+ # @param view [Symbol]
50
+ # @return [True/False]
51
+ def hide_view_in_edit_mode? view
52
+ Card::Format.perms[view] == :none || # view never edited
53
+ card.structure || # not yet nesting structures
54
+ card.key.blank? # eg {{_self|type}} on new cards
55
+ end
56
+
57
+ # the view that should be used when nested in closed mode
58
+ # @param view [Symbol]
59
+ # @return [Symbol] viewname
60
+ def view_in_closed_mode view
61
+ configured_view_in_closed_mode(view) || (card.known? ? :closed_content : :closed_missing)
62
+ end
63
+
64
+ # the view configured in view definition for use when nested in closed mode
65
+ # @param view [Symbol]
66
+ # @return [Symbol] viewname
67
+ def configured_view_in_closed_mode view
68
+ closed_config = Card::Format.closed[view]
69
+ return view if closed_config == true || Card::Format.error_code[view]
70
+ closed_config
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -3,11 +3,24 @@ class Card
3
3
  module Nest
4
4
  module Subformat
5
5
  def subformat subcard
6
- subcard = Card.fetch(subcard, new: {}) if subcard.is_a?(String)
7
- self.class.new subcard, root: @root, parent: self, depth: @depth + 1,
8
- form: @form,
9
- mode: @mode,
10
- context_names: @context_names
6
+ subcard = Card.fetch(subcard, new: {}) unless subcard.is_a?(Card)
7
+ self.class.new subcard, parent: self, format_class: self.class, form: @form
8
+ end
9
+
10
+ def root
11
+ @root ||= parent ? parent.root : self
12
+ end
13
+
14
+ def depth
15
+ @depth ||= parent ? (parent.depth + 1) : 0
16
+ end
17
+
18
+ def main?
19
+ depth.zero?
20
+ end
21
+
22
+ def focal? # meaning the current card is the requested card
23
+ depth.zero?
11
24
  end
12
25
 
13
26
  def field_subformat field
@@ -38,7 +38,7 @@ class Card
38
38
 
39
39
  def subformats_nested_too_deeply?
40
40
  # prevent recursion
41
- @depth >= Card.config.max_depth
41
+ depth >= Card.config.max_depth
42
42
  end
43
43
 
44
44
  def view_always_permitted? view
@@ -1,10 +1,26 @@
1
1
  class Card
2
2
  class Format
3
3
  module Registration
4
+
4
5
  def register format
5
6
  registered << format.to_s
6
7
  end
7
8
 
9
+ def new card, opts={}
10
+ if self != Format
11
+ super
12
+ else
13
+ klass = format_class opts
14
+ self == klass ? super : klass.new(card, opts)
15
+ end
16
+ end
17
+
18
+ def format_class opts
19
+ return opts[:format_class] if opts[:format_class]
20
+ format = opts[:format] || :html
21
+ class_from_name format_class_name(format)
22
+ end
23
+
8
24
  def format_class_name format
9
25
  format = format.to_s
10
26
  format = "" if format == "base"
@@ -15,7 +31,7 @@ class Card
15
31
  def format_sym format
16
32
  return format if format.is_a? Symbol
17
33
  match = format.to_s.match(/::(?<format>[^:]+)Format/)
18
- match ? match[:format] : :base
34
+ match ? match[:format].underscore.to_sym : :base
19
35
  end
20
36
 
21
37
  def interpret_view_opts view, opts
@@ -24,7 +40,7 @@ class Card
24
40
  end
25
41
 
26
42
  def extract_class_vars view, opts
27
- [:perms, :error_code, :denial, :closed].each do |varname|
43
+ Card::Format::VIEW_VARS.each do |varname|
28
44
  next unless (value = opts.delete varname)
29
45
  send(varname)[view] = value
30
46
  end
@@ -42,16 +58,6 @@ class Card
42
58
  "view_#{view}_cache_setting"
43
59
  end
44
60
 
45
- def new card, opts={}
46
- if self != Format
47
- super
48
- else
49
- format = opts[:format] || :html
50
- klass = class_from_name format_class_name(format)
51
- self == klass ? super : klass.new(card, opts)
52
- end
53
- end
54
-
55
61
  def class_from_name formatname
56
62
  if formatname == "Format"
57
63
  Card::Format
@@ -40,11 +40,9 @@ class Card
40
40
 
41
41
  def final_render view, args
42
42
  current_view(view) do
43
- with_nest_mode view do
44
- method = view_method view
45
- rendered = method.arity.zero? ? method.call : method.call(args)
46
- add_debug_info view, method, rendered
47
- end
43
+ method = view_method view
44
+ rendered = method.arity.zero? ? method.call : method.call(args)
45
+ add_debug_info view, method, rendered
48
46
  end
49
47
  end
50
48
 
@@ -65,6 +63,10 @@ class Card
65
63
  source_location.second.to_s
66
64
  end
67
65
 
66
+ def view_caching?
67
+ true
68
+ end
69
+
68
70
  # setting (:alway, :never, :nested) designated in view definition
69
71
  def view_cache_setting view
70
72
  method = self.class.view_cache_setting_method view
@@ -75,10 +77,9 @@ class Card
75
77
  end
76
78
 
77
79
  def stub_render cached_content
78
- return cached_content unless cached_content.is_a? String
79
80
  expand_stubs cached_content do |stub_hash|
80
- prepare_stub_nest(stub_hash) do |stub_card, mode, options|
81
- with_nest_mode(mode) { nest stub_card, options }
81
+ prepare_stub_nest(stub_hash) do |stub_card, mode, options, override|
82
+ with_nest_mode(mode) { nest stub_card, options, override }
82
83
  end
83
84
  end
84
85
  end
@@ -89,15 +90,24 @@ class Card
89
90
  if stub_card.key.present? && stub_card.key == card.key
90
91
  stub_options[:nest_name] ||= "_self"
91
92
  end
92
- yield stub_card, stub_hash[:mode], stub_options
93
+ yield stub_card, stub_hash[:mode], stub_options, stub_hash[:override]
93
94
  end
94
95
 
95
96
  def expand_stubs cached_content
97
+ return cached_content unless cached_content.is_a? String
98
+
96
99
  conto = Card::Content.new cached_content, self, chunk_list: :stub
97
100
  conto.process_each_chunk do |stub_hash|
98
- yield(stub_hash).to_s
101
+ yield(stub_hash)
102
+ end
103
+
104
+ if conto.pieces.size == 1
105
+ # for stubs in json format this converts a single stub back
106
+ # to it's original type (e.g. a hash)
107
+ conto.pieces.first.to_s
108
+ else
109
+ conto.to_s
99
110
  end
100
- conto.to_s
101
111
  end
102
112
 
103
113
  def api_render match, opts
@@ -135,6 +145,7 @@ class Card
135
145
  ensure
136
146
  @current_view = old_view
137
147
  end
148
+
138
149
  end
139
150
  end
140
151
  end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- class Card::Migration < ActiveRecord::Migration
3
+ class Card::Migration < ActiveRecord::Migration[4.2]
4
4
  include Card::Model::SaveHelper
5
5
  @type = :deck_cards
6
6
 
@@ -0,0 +1,63 @@
1
+ require_dependency "card/mod/loader"
2
+ require_dependency "card/mod/dirs"
3
+
4
+ class Card
5
+ # A Card Mod (short for "module" or "modification") is a discrete piece of Decko functionality. Mods are how the Decko community develops and shares code. If you want to customize a deck in a way that can't be done on the site itself, try a mod.
6
+ #
7
+ # The simplest way to add a mod is in the `mod` directory of your deck, eg:
8
+ #
9
+ # DECKNAME/mod/MODNAME
10
+ #
11
+ # In most mods, the focal point is the set modules.
12
+ #
13
+ # ## Set Modules
14
+ #
15
+ # Set modules define methods for a given set of cards and their format objects. They are defined in a mod's _set_ directory. For example, suppose you've created a mod that called *biz*, your deck has Company cards, and you want to extend the behavior of those cards.
16
+ #
17
+ # You can add a set module like so:
18
+ #
19
+ # card generate set biz type company
20
+ #
21
+ # This will create the following two files:
22
+ #
23
+ # mod/biz/set/type/company.rb
24
+ # mod/biz/spec/set/type/company.rb
25
+ #
26
+ # If you would like to break this code into smaller files, you can extend this pattern into another directory, eg:
27
+ #
28
+ # mod/biz/set/type/company/foo.rb
29
+ # mod/biz/set/type/company/bar.rb
30
+ #
31
+ # The general pattern can be expressed as follows:
32
+ #
33
+ # DECKNAME/mod/MODNAME/set/SET_PATTERN/ANCHOR[/FREENAME].rb
34
+ #
35
+ # Learn more:
36
+ # - {Card} introduces card objects
37
+ # - {Card::Set} provides an overview of the set module API
38
+ # - {Card::View} explains the basics of the view API
39
+ #
40
+ # ## Other Directories
41
+ #
42
+ # Other ways your mod can extend Decko functionality include:
43
+ # - **set_pattern** for additional {Card::Set::Pattern set patterns}, or types of sets.
44
+ # - **format** for creating new formats
45
+ # - **chunk** provides tools for finding new patterns in card content
46
+ # - **layouts** can contain hardcoded layouts (layouts are more typically stored in content)
47
+ # - **lib** for ruby libraries
48
+ # - **file** for any other supporting files
49
+ #
50
+
51
+ module Mod
52
+ class << self
53
+ def load
54
+ Loader.load_mods
55
+ end
56
+
57
+ # @return an array of Rails::Path objects
58
+ def dirs
59
+ @dirs ||= Dirs.new(Card.paths["mod"].existent)
60
+ end
61
+ end
62
+ end
63
+ end