card 1.19.6 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +8 -7
  4. data/config/initializers/01_core_extensions/array.rb +4 -0
  5. data/config/initializers/01_core_extensions/persistent_identifiers.rb +12 -0
  6. data/config/initializers/02_patches/better_errors.rb +56 -0
  7. data/config/initializers/core_extensions.rb +13 -18
  8. data/config/initializers/patches.rb +8 -0
  9. data/config/locales/de.yml +0 -2
  10. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +22 -12
  11. data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +17 -0
  12. data/db/migrate_core_cards/20161103154836_update_keys.rb +46 -0
  13. data/lib/card.rb +1 -8
  14. data/lib/card/act_manager.rb +4 -0
  15. data/lib/card/auth/permissions.rb +5 -3
  16. data/lib/card/cache.rb +1 -20
  17. data/lib/card/cache/persistent.rb +6 -0
  18. data/lib/card/content/chunk.rb +4 -3
  19. data/lib/card/content/diff.rb +2 -2
  20. data/lib/card/content/diff/result.rb +11 -0
  21. data/lib/card/env/success.rb +4 -0
  22. data/lib/card/error.rb +2 -0
  23. data/lib/card/format.rb +14 -17
  24. data/lib/card/format/content.rb +16 -8
  25. data/lib/card/format/error.rb +3 -5
  26. data/lib/card/format/names.rb +22 -16
  27. data/lib/card/format/nest.rb +67 -61
  28. data/lib/card/format/nest/fetch.rb +40 -33
  29. data/lib/card/format/nest/main.rb +39 -19
  30. data/lib/card/format/nest/subformat.rb +3 -16
  31. data/lib/card/format/nest/view.rb +23 -32
  32. data/lib/card/format/permission.rb +49 -34
  33. data/lib/card/format/registration.rb +12 -6
  34. data/lib/card/format/render.rb +62 -73
  35. data/lib/card/migration.rb +14 -10
  36. data/lib/card/migration/import.rb +20 -19
  37. data/lib/card/migration/import/import_data.rb +50 -59
  38. data/lib/card/migration/import/import_data/card_attributes.rb +56 -0
  39. data/lib/card/migration/import/import_data/card_content.rb +33 -0
  40. data/lib/card/migration/import/merger.rb +47 -0
  41. data/lib/card/mod/loader.rb +4 -4
  42. data/lib/card/model/save_helper.rb +49 -10
  43. data/lib/card/name.rb +16 -52
  44. data/lib/card/name/fields_and_traits.rb +67 -0
  45. data/lib/card/name/variants.rb +17 -0
  46. data/lib/card/query.rb +6 -2
  47. data/lib/card/query/attributes.rb +1 -1
  48. data/lib/card/query/interpretation.rb +3 -3
  49. data/lib/card/set/event.rb +2 -1
  50. data/lib/card/set/format.rb +18 -7
  51. data/lib/card/set_pattern.rb +17 -13
  52. data/lib/card/tasks/card.rake +1 -1
  53. data/lib/card/view.rb +55 -0
  54. data/lib/card/view/cache.rb +90 -0
  55. data/lib/card/view/fetch.rb +109 -0
  56. data/lib/card/view/options.rb +164 -0
  57. data/lib/card/view/stub.rb +30 -0
  58. data/lib/card/view/visibility.rb +95 -0
  59. data/lib/cardio.rb +3 -2
  60. data/lib/cardio/schema.rb +21 -8
  61. data/lib/generators/card.rb +16 -2
  62. data/lib/generators/card/format/format_generator.rb +10 -9
  63. data/lib/generators/card/migration/migration_generator.rb +10 -5
  64. data/lib/generators/card/set/USAGE +1 -1
  65. data/lib/generators/card/set/set_generator.rb +11 -9
  66. data/mod/account/set/right/account.rb +38 -40
  67. data/mod/account/set/right/token.rb +2 -1
  68. data/mod/account/set/self/account_links.rb +34 -54
  69. data/mod/account/set/self/signin.rb +107 -93
  70. data/mod/account/set/type/signup.rb +33 -32
  71. data/mod/account/set/type/user.rb +28 -21
  72. data/mod/account/spec/set/all/account_spec.rb +9 -9
  73. data/mod/account/spec/set/right/account_spec.rb +23 -14
  74. data/mod/account/spec/set/right/email_spec.rb +6 -6
  75. data/mod/account/spec/set/right/password_spec.rb +4 -4
  76. data/mod/account/spec/set/right/token_spec.rb +3 -3
  77. data/mod/account/spec/set/self/account_links_spec.rb +3 -3
  78. data/mod/account/spec/set/self/signin_spec.rb +2 -2
  79. data/mod/account/spec/set/type/signup_spec.rb +7 -8
  80. data/mod/ace_editor/set/abstract/ace_editor.rb +1 -4
  81. data/mod/admin/set/self/admin.rb +2 -2
  82. data/mod/admin/set/self/admin_info.rb +1 -1
  83. data/mod/admin/set/self/recaptcha_private_key.rb +3 -0
  84. data/mod/admin/set/self/recaptcha_proxy.rb +3 -0
  85. data/mod/admin/set/self/recaptcha_public_key.rb +3 -0
  86. data/mod/admin/set/self/trash.rb +4 -4
  87. data/mod/admin/spec/set/self/admin_spec.rb +4 -4
  88. data/mod/admin/spec/set/self/version_spec.rb +1 -1
  89. data/mod/basic_formats/set/all/all_css.rb +3 -3
  90. data/mod/basic_formats/set/all/all_csv.rb +6 -6
  91. data/mod/basic_formats/set/all/all_js.rb +4 -0
  92. data/mod/basic_formats/set/all/base.rb +40 -62
  93. data/mod/basic_formats/set/all/json.rb +34 -39
  94. data/mod/basic_formats/set/all/rss.rb +6 -6
  95. data/mod/basic_formats/set/all/text.rb +3 -2
  96. data/mod/basic_formats/set/self/01_head/javascript.rb +2 -2
  97. data/mod/basic_formats/set/self/head.rb +6 -10
  98. data/mod/basic_formats/spec/set/all/all_css_spec.rb +1 -1
  99. data/mod/basic_formats/spec/set/all/all_csv_spec.rb +1 -1
  100. data/mod/basic_formats/spec/set/all/base_spec.rb +8 -5
  101. data/mod/basic_formats/spec/set/all/json_spec.rb +2 -2
  102. data/mod/basic_formats/spec/set/all/rss_spec.rb +4 -4
  103. data/mod/basic_types/set/type/plain_text.rb +3 -5
  104. data/mod/basic_types/spec/set/type/plain_text_spec.rb +2 -2
  105. data/mod/bootstrap/lib/bootstrap.rb +16 -0
  106. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +26 -0
  107. data/mod/bootstrap/lib/bootstrap/component.rb +133 -0
  108. data/mod/bootstrap/lib/bootstrap/component/form.rb +31 -0
  109. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +38 -0
  110. data/mod/bootstrap/lib/bootstrap/component/layout.rb +83 -0
  111. data/mod/bootstrap/lib/bootstrap/component/panel.rb +9 -0
  112. data/mod/bootstrap/lib/bootstrap/component_loader.rb +30 -0
  113. data/mod/bootstrap/lib/bootstrap/delegate.rb +16 -0
  114. data/mod/bootstrap/lib/bootstrapper.rb +16 -0
  115. data/mod/bootstrap/lib/stylesheets/bootstrap/_tables.scss +55 -52
  116. data/mod/bootstrap/lib/stylesheets/bootstrap/mixins/_table-row.scss +12 -12
  117. data/mod/bootstrap/lib/stylesheets/bootstrap_cards.scss +12 -0
  118. data/mod/bootstrap/set/all/bootstrap/accordion.rb +63 -0
  119. data/mod/bootstrap/set/all/bootstrap/helper.rb +7 -140
  120. data/mod/bootstrap/set/all/bootstrap/navbar.rb +74 -0
  121. data/mod/bootstrap/set/all/bootstrap/table.rb +76 -46
  122. data/mod/bootstrap/set/all/bootstrap/tabs.rb +58 -23
  123. data/mod/bootstrap/set/all/bootstrap/wrapper.rb +14 -8
  124. data/mod/bootstrap/set/all/rich_bootstrap.rb +5 -3
  125. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +31 -0
  126. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +20 -0
  127. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +59 -1
  128. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +104 -15
  129. data/mod/carrierwave/set/abstract/attachment.rb +4 -3
  130. data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
  131. data/mod/carrierwave/set/abstract/attachment/storage_type.rb +5 -11
  132. data/mod/carrierwave/set/type/file.rb +39 -32
  133. data/mod/carrierwave/set/type/image.rb +59 -34
  134. data/mod/carrierwave/spec/set/type/image_spec.rb +3 -3
  135. data/mod/core/chunk/link.rb +5 -0
  136. data/mod/core/chunk/{include.rb → nest.rb} +8 -29
  137. data/mod/core/chunk/reference.rb +5 -6
  138. data/mod/core/chunk/view_stub.rb +42 -0
  139. data/mod/core/format/html_format.rb +23 -26
  140. data/mod/core/set/abstract/code_file.rb +1 -1
  141. data/mod/core/set/all/actify.rb +1 -1
  142. data/mod/core/set/all/active_card.rb +0 -1
  143. data/mod/core/set/all/{tracked_attributes.rb → assign_attributes.rb} +55 -24
  144. data/mod/core/set/all/collection.rb +136 -122
  145. data/mod/core/set/all/content.rb +8 -0
  146. data/mod/core/set/all/event.rb +5 -2
  147. data/mod/core/set/all/export.rb +7 -7
  148. data/mod/core/set/all/fetch.rb +90 -26
  149. data/mod/core/set/all/initialize.rb +17 -6
  150. data/mod/core/set/all/name.rb +2 -3
  151. data/mod/core/set/all/permissions.rb +19 -11
  152. data/mod/core/set/all/states.rb +12 -2
  153. data/mod/core/set/all/trash.rb +1 -1
  154. data/mod/core/set/all/type.rb +2 -0
  155. data/mod/core/set/all/utils.rb +4 -3
  156. data/mod/core/spec/chunk/literal_spec.rb +2 -2
  157. data/mod/core/spec/chunk/uri_spec.rb +17 -17
  158. data/mod/core/spec/format/html_format_spec.rb +11 -13
  159. data/mod/core/spec/set/all/attribute_tracking_spec.rb +2 -2
  160. data/mod/core/spec/set/all/collection_spec.rb +21 -24
  161. data/mod/core/spec/set/all/content_spec.rb +1 -1
  162. data/mod/core/spec/set/all/export_spec.rb +3 -3
  163. data/mod/core/spec/set/all/fetch_spec.rb +5 -5
  164. data/mod/core/spec/set/all/initialize_spec.rb +4 -4
  165. data/mod/core/spec/set/all/name_spec.rb +6 -6
  166. data/mod/core/spec/set/all/permissions_spec.rb +10 -10
  167. data/mod/core/spec/set/all/references_spec.rb +1 -1
  168. data/mod/core/spec/set/all/rules2_spec.rb +24 -24
  169. data/mod/core/spec/set/all/rules_spec.rb +1 -1
  170. data/mod/core/spec/set/all/templating_spec.rb +8 -8
  171. data/mod/core/spec/set/all/tracked_attributes_spec.rb +6 -6
  172. data/mod/core/spec/set/all/type_spec.rb +5 -5
  173. data/mod/developer/spec/set/all/event_viz_spec.rb +1 -1
  174. data/mod/developer/spec/set/right/debug_spec.rb +1 -1
  175. data/mod/email/set/all/email_html.rb +2 -2
  176. data/mod/email/set/all/notify.rb +8 -3
  177. data/mod/email/set/right/bcc.rb +3 -3
  178. data/mod/email/set/right/follow.rb +5 -5
  179. data/mod/email/set/right/following.rb +1 -1
  180. data/mod/email/set/self/follow_defaults.rb +27 -16
  181. data/mod/email/set/type/email_template.rb +1 -1
  182. data/mod/email/set/type_plus_right/user/follow.rb +10 -9
  183. data/mod/history/lib/card/act.rb +4 -0
  184. data/mod/history/lib/card/act/act_renderer.rb +194 -0
  185. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +25 -0
  186. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +41 -0
  187. data/mod/history/lib/card/action.rb +1 -0
  188. data/mod/history/lib/card/action/action_renderer.rb +92 -0
  189. data/mod/history/lib/card/action/differ.rb +6 -1
  190. data/mod/history/set/all/act_view.rb +64 -0
  191. data/mod/history/set/all/action_view.rb +65 -0
  192. data/mod/history/set/all/content_history.rb +44 -37
  193. data/mod/history/set/all/history.rb +49 -263
  194. data/mod/machines/lib/stylesheets/style_cards.scss +30 -115
  195. data/mod/machines/set/abstract/script.rb +42 -7
  196. data/mod/machines/set/right/machine_input.rb +4 -0
  197. data/mod/machines/set/type/coffee_script.rb +8 -22
  198. data/mod/machines/set/type/css.rb +2 -2
  199. data/mod/machines/set/type/java_script.rb +4 -24
  200. data/mod/machines/set/type/scss.rb +1 -1
  201. data/mod/machines/spec/set/type/css_spec.rb +1 -1
  202. data/mod/machines/spec/set/type/scss_spec.rb +3 -3
  203. data/mod/machines/spec/set/type/skin_spec.rb +7 -7
  204. data/mod/pointer/set/abstract/01_pointer.rb +44 -46
  205. data/mod/pointer/set/abstract/01_pointer/edit.rb +13 -13
  206. data/mod/pointer/set/right/options.rb +4 -0
  207. data/mod/pointer/spec/set/type/pointer_spec.rb +7 -7
  208. data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +3 -3
  209. data/mod/settings/set/abstract/permission.rb +25 -18
  210. data/mod/settings/set/right/add_help.rb +3 -3
  211. data/mod/settings/set/right/structure.rb +10 -16
  212. data/mod/settings/spec/set/right/comment_spec.rb +3 -3
  213. data/mod/settings/spec/set/right/create_spec.rb +1 -1
  214. data/mod/settings/spec/set/right/style_spec.rb +1 -1
  215. data/mod/settings/spec/set/type/setting_spec.rb +1 -1
  216. data/mod/solid_cache/set/abstract/solid_cache.rb +4 -4
  217. data/mod/solid_cache/set/right/solid_cache.rb +9 -10
  218. data/mod/standard/set/abstract/01_search_params.rb +41 -0
  219. data/mod/standard/set/abstract/search.rb +132 -0
  220. data/mod/standard/set/abstract/search/paging.rb +81 -0
  221. data/mod/standard/set/abstract/search/paging/paging_links.rb +90 -0
  222. data/mod/standard/set/abstract/wql_search.rb +67 -0
  223. data/mod/standard/set/all/error.rb +89 -82
  224. data/mod/standard/set/all/links.rb +1 -1
  225. data/mod/standard/set/all/rich_html/content.rb +125 -141
  226. data/mod/standard/set/all/rich_html/editing.rb +115 -178
  227. data/mod/standard/set/all/rich_html/form.rb +111 -131
  228. data/mod/standard/set/all/rich_html/header.rb +57 -39
  229. data/mod/standard/set/all/rich_html/menu.rb +94 -94
  230. data/mod/standard/set/all/rich_html/modal.rb +5 -10
  231. data/mod/standard/set/all/rich_html/new.rb +103 -0
  232. data/mod/standard/set/all/rich_html/toolbar.rb +54 -74
  233. data/mod/standard/set/all/rich_html/wrapper.rb +111 -138
  234. data/mod/standard/set/rstar/rules.rb +27 -38
  235. data/mod/standard/set/rstar/rules_editor.rb +298 -277
  236. data/mod/standard/set/self/navbox.rb +20 -15
  237. data/mod/standard/set/self/recent.rb +25 -17
  238. data/mod/standard/set/self/search.rb +25 -4
  239. data/mod/standard/set/type/cardtype.rb +11 -9
  240. data/mod/standard/set/type/date.rb +1 -1
  241. data/mod/standard/set/type/number.rb +1 -1
  242. data/mod/standard/set/type/phrase.rb +1 -1
  243. data/mod/standard/set/type/search_type.rb +17 -282
  244. data/mod/standard/set/type/session.rb +1 -1
  245. data/mod/standard/set/type/set.rb +155 -131
  246. data/mod/standard/set/type/toggle.rb +1 -1
  247. data/mod/standard/set/type/uri.rb +4 -4
  248. data/mod/standard/spec/chunk/include_spec.rb +13 -31
  249. data/mod/standard/spec/chunk/link_spec.rb +1 -1
  250. data/mod/standard/spec/set/all/error_spec.rb +1 -1
  251. data/mod/standard/spec/set/all/history_spec.rb +2 -2
  252. data/mod/standard/spec/set/all/rich_html/form_spec.rb +4 -4
  253. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +22 -0
  254. data/mod/standard/spec/set/all/rich_html/wrapper_spec.rb +3 -2
  255. data/mod/standard/spec/set/right/when_created_spec.rb +1 -1
  256. data/mod/standard/spec/set/right/when_last_edited_spec.rb +1 -1
  257. data/mod/standard/spec/set/rstar/rules_spec.rb +2 -3
  258. data/mod/standard/spec/set/self/head_spec.rb +2 -2
  259. data/mod/standard/spec/set/self/navbox_spec.rb +1 -1
  260. data/mod/standard/spec/set/self/now_spec.rb +1 -1
  261. data/mod/standard/spec/set/type/date_spec.rb +1 -1
  262. data/mod/standard/spec/set/type/email_template_spec.rb +1 -1
  263. data/mod/standard/spec/set/type/layout_type_spec.rb +1 -1
  264. data/mod/standard/spec/set/type/number_spec.rb +1 -1
  265. data/mod/standard/spec/set/type/phrase_spec.rb +1 -1
  266. data/mod/standard/spec/set/type/search_type_spec.rb +2 -2
  267. data/mod/standard/spec/set/type/set_spec.rb +2 -2
  268. data/mod/standard/spec/set/type/toggle_spec.rb +2 -2
  269. data/mod/standard/spec/set/type/uri_spec.rb +3 -1
  270. data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
  271. data/spec/config/initializers/core_extensions_spec.rb +40 -10
  272. data/spec/lib/card/auth_spec.rb +8 -8
  273. data/spec/lib/card/cache_spec.rb +3 -3
  274. data/spec/lib/card/chunk_spec.rb +4 -4
  275. data/spec/lib/card/codename_spec.rb +2 -2
  276. data/spec/lib/card/content_spec.rb +23 -23
  277. data/spec/lib/card/diff_spec.rb +1 -1
  278. data/spec/lib/card/format_spec.rb +19 -24
  279. data/spec/lib/card/loader_spec.rb +4 -4
  280. data/spec/lib/card/name_spec.rb +16 -16
  281. data/spec/lib/card/query_spec.rb +80 -80
  282. data/spec/lib/card/reference_spec.rb +5 -5
  283. data/spec/lib/card/set_spec.rb +6 -6
  284. data/spec/lib/card/subcards_spec.rb +14 -0
  285. data/spec/lib/card/view_cache_spec.rb +5 -5
  286. data/spec/models/card/cardtype_spec.rb +15 -15
  287. data/spec/models/card/create_spec.rb +2 -2
  288. data/spec/models/card/trash_spec.rb +24 -24
  289. data/spec/models/card/type_transition_spec.rb +8 -8
  290. data/spec/models/card/validation_spec.rb +5 -5
  291. data/spec/models/card_spec.rb +14 -14
  292. data/spec/spec_helper.rb +6 -2
  293. data/spec/support/card_spec_helper.rb +21 -11
  294. data/spec/support/helper/card_helper.rb +11 -4
  295. metadata +73 -15
  296. data/lib/card/cache/view_cache.rb +0 -103
  297. data/mod/bootstrap/set/all/bootstrap/layout.rb +0 -58
  298. data/mod/core/set/all/view_cache.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c91002b7b0036a9412a5b3f4d24c785d6cc7cd3
4
- data.tar.gz: 91b617c019d6a60441ac0b9e08d9557099094f1c
3
+ metadata.gz: f6f7c57e5d0fbbb3e0d01a20620dda63db140430
4
+ data.tar.gz: 7cc371c0a6316b66dade977c1757d9bd172c6ca4
5
5
  SHA512:
6
- metadata.gz: 93ab7930c6911b7bb811c106ad2167178d9bbd79a3b7b9e0027d5204c381ceeed0d9e6ff122748b4f966c3c37ebf8eb155483526b435660bd69cd72b18f11dd5
7
- data.tar.gz: 9d2e34c1d4778d25fe534384bac6fd26a5bb54bcf8bccfbde7a721b5477be596cc212f005d61691aac4e014365ab3e66b1e40a01aac6b36a13966856957de552
6
+ metadata.gz: 4c412b712c3d638ba1d1701473ce9294541834ecf566d937db1b92f1e520709c2a7dc9d9f991fcfcbc99ba198c8403d0e52ddfee20a318b53823aa3eb6f10ea4
7
+ data.tar.gz: 97ea814246b69a991fd77a29f7c3019fe827d46ed7efcac6773c6c1862ce4bd4daafe141abdfd7778f9c66f2078afbe7303aeb599699b79e5b477e0d26df8969
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.19.6
1
+ 1.20.0
@@ -7,11 +7,11 @@ Gem::Specification.new do |s|
7
7
  ["Ethan McCutchen", "Lewis Hoffman", "Gerry Gleason", "Philipp Kühl"]
8
8
  s.email = ["info@wagn.org"]
9
9
 
10
- # s.date = '2013-12-20'
11
- s.summary = "an atomic, set-driven content engine"
10
+ s.summary = "a surprisingly simple content nesting engine"
12
11
  s.description =
13
- "Cards are data atoms grouped into Sets to which Rules can apply. "\
14
- "Cards can formatted with Views and transformed with Events."
12
+ "Cards are wiki-inspired data atoms." \
13
+ '"Cardists" use links, nests, types, patterned names, queries, views, ' \
14
+ "events, and rules to create rich structures."
15
15
  s.homepage = "http://wagn.org"
16
16
  s.licenses = ["GPL-2.0", "GPL-3.0"]
17
17
 
@@ -33,12 +33,12 @@ Gem::Specification.new do |s|
33
33
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
34
34
  s.require_paths = ["lib"]
35
35
 
36
- s.required_ruby_version = ">= 1.9.3"
36
+ s.required_ruby_version = ">= 2.0"
37
37
 
38
38
  [
39
- ["smartname", "0.3.1"],
39
+ ["smartname", "0.4"],
40
40
  ["uuid", "~> 2.3"],
41
- ["carrierwave", "1.0.0.beta"],
41
+ ["carrierwave", "1.0.0.rc"],
42
42
  ["htmlentities", "~> 4.3"],
43
43
  ["mini_magick", "~> 4.2"],
44
44
  # recaptcha 0.4.0 is last version that doesn't require ruby 2.0
@@ -47,6 +47,7 @@ Gem::Specification.new do |s|
47
47
  ["sass", "~> 3.2"],
48
48
  ["coffee-script", "~> 2.2"],
49
49
  ["uglifier", "~> 3.0"],
50
+ ["nokogiri", "~> 1.6.8"],
50
51
  ["haml", "~> 4.0"],
51
52
  ["kaminari", "~> 0.16"],
52
53
  ["bootstrap-kaminari-views", "~> 0"],
@@ -5,5 +5,9 @@ module CoreExtensions
5
5
  "[[#{item}]]"
6
6
  end.join "\n"
7
7
  end
8
+
9
+ def to_name
10
+ Card.compose_mark self
11
+ end
8
12
  end
9
13
  end
@@ -0,0 +1,12 @@
1
+ module CoreExtensions
2
+ # methods for codenames and numerical ids
3
+ module PersistentIdentifier
4
+ def card
5
+ Card[self]
6
+ end
7
+
8
+ def cardname
9
+ Card.quick_fetch(self).cardname
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,56 @@
1
+ module Patches
2
+ module BetterErrors
3
+ class StackFrame
4
+ # correct links to tmp files so that they point
5
+ # to the original file and line
6
+ module TmpPath
7
+ @map = {} # cache tmp path mapping
8
+
9
+ class << self
10
+ def included klass
11
+ klass.class_eval do
12
+ remove_method :initialize
13
+ end
14
+ end
15
+
16
+ def corrections filename
17
+ @map[filename] ||= real_filename_and_line_offset filename
18
+ yield(*@map[filename])
19
+ end
20
+
21
+ def real_filename_and_line_offset filename
22
+ File.open(filename) do |file|
23
+ file.each_line.with_index do |line, i|
24
+ if line =~ /pulled from ([\S]+) ~~/
25
+ return Regexp.last_match(1), i + 1
26
+ end
27
+ end
28
+ end
29
+ [filename, 0]
30
+ end
31
+ end
32
+
33
+ def initialize filename, line, name, frame_binding=nil
34
+ @filename = filename
35
+ @line = line
36
+ @name = name
37
+ @frame_binding = frame_binding
38
+
39
+ correct_tmp_file if tmp_file?
40
+ set_pretty_method_name if frame_binding
41
+ end
42
+
43
+ def tmp_file?
44
+ @filename.include? "/tmp/"
45
+ end
46
+
47
+ def correct_tmp_file
48
+ TmpPath.corrections(@filename) do |real_path, line_offset|
49
+ @filename = real_path
50
+ @line -= line_offset
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,24 +1,19 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- # include is private in ruby 1.9.3
4
- # Object.include CoreExtensions::Object
5
- # Module.include CoreExtensions::Module
6
- # Hash.include CoreExtensions::Hash::Merging
7
- # Array.include CoreExtensions::Array
8
- class Object
9
- include CoreExtensions::Object
10
- end
11
-
12
- class Module
13
- include CoreExtensions::Module
14
- end
3
+ # extend core Ruby object classes
15
4
 
16
- class Hash
17
- include CoreExtensions::Hash::Merging
5
+ class Class
6
+ def include_extension extension
7
+ include extension
8
+ end
18
9
  end
19
10
 
20
- class Array
21
- include CoreExtensions::Array
11
+ module CoreExtensions
12
+ ::Object.include_extension Object
13
+ ::Module.include_extension Module
14
+ ::Array.include_extension Array
15
+ ::Hash.include_extension Hash::Merging
16
+ ::Symbol.include_extension PersistentIdentifier
17
+ ::Integer.include_extension PersistentIdentifier
18
+ ::Hash.extend Hash::ClassMethods::Nesting
22
19
  end
23
-
24
- Hash.extend CoreExtensions::Hash::ClassMethods::Nesting
@@ -5,3 +5,11 @@ module Kaminari
5
5
  end
6
6
  end
7
7
  end
8
+
9
+ if defined? BetterErrors
10
+ module BetterErrors
11
+ class StackFrame
12
+ include Patches::BetterErrors::StackFrame::TmpPath
13
+ end
14
+ end
15
+ end
@@ -406,8 +406,6 @@ de:
406
406
  delete_old: delete old
407
407
  references: Verweise
408
408
  repair_all: alle reparieren
409
- view_cache: view cache
410
- clear_view_cache: clear view cache
411
409
  memory_now: memory now
412
410
  clear_cache: clear cache
413
411
  # memory previous
@@ -10,8 +10,7 @@ class ImportBootstrapLayout < Card::Migration::Core
10
10
  end
11
11
 
12
12
  import_json "bootstrap_layout.json" # , pristine: true, output_file: nil
13
- if layout && layout.pristine? &&
14
- all = Card[:all]
13
+ if layout && layout.pristine? && (all = Card[:all])
15
14
  layout_rule_card = all.fetch trait: :layout
16
15
  style_rule_card = all.fetch trait: :style
17
16
  if layout_rule_card.pristine? && style_rule_card.pristine?
@@ -19,9 +18,13 @@ class ImportBootstrapLayout < Card::Migration::Core
19
18
  if style_rule_card.item_names.first == "customized classic skin"
20
19
  Card.create! name: "customized bootstrap skin", type: "Skin",
21
20
  content: "[[classic bootstrap skin]]\n[[*css]]"
22
- style_rule_card.update_attributes! content: "[[customized bootstrap skin]]"
21
+ style_rule_card.update_attributes!(
22
+ content: "[[customized bootstrap skin]]"
23
+ )
23
24
  else
24
- style_rule_card.update_attributes! content: "[[classic bootstrap skin]]"
25
+ style_rule_card.update_attributes!(
26
+ content: "[[classic bootstrap skin]]"
27
+ )
25
28
  end
26
29
  end
27
30
  end
@@ -40,15 +43,21 @@ class ImportBootstrapLayout < Card::Migration::Core
40
43
  old_stand.delete!
41
44
 
42
45
  # these are hard-coded
43
- Card.create! name: "theme: bootstrap_default", type_code: :css, codename: "theme_bootstrap_default"
44
- Card.create! name: "style: bootstrap", type_code: :css, codename: "bootstrap_css"
45
- Card.create! name: "style: bootstrap cards", type_code: :css, codename: "bootstrap_cards"
46
+ Card.create! name: "theme: bootstrap_default", type_code: :css,
47
+ codename: "theme_bootstrap_default"
48
+ Card.create! name: "style: bootstrap", type_code: :css,
49
+ codename: "bootstrap_css"
50
+ Card.create! name: "style: bootstrap cards", type_code: :css,
51
+ codename: "bootstrap_cards"
46
52
 
47
- Card.create! name: "style: bootstrap compatible", type_code: :scss, codename: "style_bootstrap_compatible"
48
- Card.create! name: "script: bootstrap", type_code: :js, codename: "bootstrap_js"
53
+ Card.create! name: "style: bootstrap compatible", type_code: :scss,
54
+ codename: "style_bootstrap_compatible"
55
+ Card.create! name: "script: bootstrap", type_code: :js,
56
+ codename: "bootstrap_js"
49
57
 
50
58
  # add new setting: *default html view
51
- Card.create! name: "*default html view", type_code: :setting, codename: "default_html_view"
59
+ Card.create! name: "*default html view", type_code: :setting,
60
+ codename: "default_html_view"
52
61
  Card.create! name: "*default html view+*right+*default", type_code: :phrase
53
62
 
54
63
  # retain old behavior (default view was content, now titled)
@@ -57,8 +66,9 @@ class ImportBootstrapLayout < Card::Migration::Core
57
66
  # update layouts to have explicit views in nests
58
67
  Card.search(type_id: Card::LayoutTypeID) do |lcard|
59
68
  lcontent = Card::Content.new lcard.content, lcard
60
- lcontent.find_chunks(Card::Content::Chunk::Include).each do |nest|
61
- nest.explicit_view = (nest.options[:inc_name] == "_main" ? "open" : "core")
69
+ lcontent.find_chunks(Card::Content::Chunk::Nest).each do |nest|
70
+ nest.explicit_view =
71
+ nest.options[:nest_name] == "_main" ? "open" : "core"
62
72
  end
63
73
  lcard.update_attributes! content: lcontent.to_s
64
74
  end
@@ -0,0 +1,17 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ class TweakRecaptchaSettingCards < Card::Migration::Core
4
+ def up
5
+ ensure_card name: "*recaptcha settings", type_id: Card::BasicID
6
+ ensure_card name: "*recaptcha settings+*self+*structure",
7
+ content: <<-STRING
8
+ {{+public key}}
9
+ {{+private key}}
10
+ {{+proxy}}
11
+ STRING
12
+ %w(public_key private_key proxy).each do |name|
13
+ ensure_card name: "#{Card[:recaptcha_settings].name}+#{name.tr('_', ' ')}",
14
+ type_id: Card::PhraseID
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ class UpdateKeys < Card::Migration::Core
4
+ def up
5
+ Card.pluck(:id, :name, :key).each do |id, name, key|
6
+ new_key = name.to_name.key
7
+ next if new_key == key
8
+ update_key id, key, new_key
9
+ end
10
+ end
11
+
12
+ def update_key id, key, new_key
13
+ Card.where(id: id).update_all(key: new_key)
14
+ Card::Reference.where(referee_id: id).update_all(referee_key: new_key)
15
+ puts "updated key '#{key}' to '#{new_key}'"
16
+ rescue ActiveRecord::RecordNotUnique => e
17
+ resolve_conflict id, key, new_key
18
+ end
19
+
20
+ def resolve_conflict id, key, new_key
21
+ if walking_dead? key
22
+ Card.where(id: id).delete_all
23
+ # card wasn't reachable anyway
24
+ # (due to rails inflection update or smartname update)
25
+ else
26
+ # example:
27
+ # "Matthias Taxes" can be in the database with two keys:
28
+ # "matthia_taxis" and "matthia_tax".
29
+ # Their keys will both be updated to "matthias_tax".
30
+ # "matthia_taxis" is a walking dead since the last rails inflection
31
+ # update (it's in the db but you can only get to via its id; all requests via
32
+ # name find the other one). If we update the walking dead
33
+ # "matthia_taxis" first to "matthias_tax" we want to replace it with
34
+ # the living "matthia_tax".
35
+ # The living card is the one that has been updated more recently.
36
+ longer_untouched = [Card.find(id), Card.find_by_key(new_key)]
37
+ .min { |a, b| a.updated_at <=> b.updated_at}
38
+ Card.where(id: longer_untouched).delete_all
39
+ update_key id, key, new_key if longer_untouched != id
40
+ end
41
+ end
42
+
43
+ def walking_dead? key
44
+ key.include?("taxis") || key[0] == " " || key[-1] == " "
45
+ end
46
+ end
@@ -1,13 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require "carrierwave"
3
3
 
4
- # if Cardio.file_buckets.present?
5
- # require "carrierwave/storage/fog"
6
- # Cardio.file_buckets.each do |bucket, config|
7
- # require config["provider"]
8
- # end
9
- # end
10
-
11
4
  Object.const_remove_if_defined :Card
12
5
 
13
6
  # Cards are wiki-inspired building blocks.
@@ -39,7 +32,7 @@ class Card < ActiveRecord::Base
39
32
  require_dependency "card/change"
40
33
  require_dependency "card/reference"
41
34
  require_dependency "card/subcards"
42
- require_dependency "card/cache/view_cache"
35
+ require_dependency "card/view"
43
36
  require_dependency "card/act_manager"
44
37
  require_dependency "card/act_manager/stage_director"
45
38
 
@@ -99,6 +99,10 @@ class Card
99
99
  directors[card] = new_director card, opts
100
100
  end
101
101
 
102
+ def include? name
103
+ directors.keys.any? { |card| card.key == name.to_name.key }
104
+ end
105
+
102
106
  def new_director card, opts={}
103
107
  if opts[:parent]
104
108
  StageSubdirector.new card, opts
@@ -51,9 +51,11 @@ class Card
51
51
  # @param user_id [Integer]
52
52
  # @return [true/false]
53
53
  def admin? user_id
54
- !Card[user_id].all_roles.find do |r|
55
- r == Card::AdministratorID
56
- end.nil?
54
+ has_role? user_id, Card::AdministratorID
55
+ end
56
+
57
+ def has_role? user_id, role_id
58
+ Card[user_id].all_roles.include? role_id
57
59
  end
58
60
  end
59
61
  end
@@ -22,18 +22,9 @@ class Card
22
22
  end
23
23
 
24
24
  def expire name
25
- # note: calling instance method breaks on dirty names
26
25
  key = name.to_name.key
27
26
  return unless (card = Card.cache.read key)
28
- Card.cache.delete key
29
- Card.cache.delete "~#{card.id}" if card.id
30
- end
31
-
32
- def expire_hard name
33
- return unless Card.cache.hard
34
- key = name.to_name.key
35
- Card.cache.hard.delete key
36
- Card.cache.hard.delete "~#{card.id}" if card.id
27
+ card.expire
37
28
  end
38
29
  end
39
30
 
@@ -190,13 +181,3 @@ class Card
190
181
  end
191
182
  end
192
183
 
193
- # ActiveSupport::Cache::FileStore.class_eval do
194
- # # escape special symbols \*"<>| additionaly to :?.
195
- # # All of them not allowed to use in ms windows file system
196
- # def real_file_path name
197
- # name = name.gsub("%", "%25").gsub("?", "%3F").gsub(":", "%3A")
198
- # name = name.gsub('\\', "%5C").gsub("*", "%2A").gsub('"', "%22")
199
- # name = name.gsub("<", "%3C").gsub(">", "%3E").gsub("|", "%7C")
200
- # "%s/%s.cache" % [@cache_path, name]
201
- # end
202
- # end
@@ -101,6 +101,12 @@ class Card
101
101
  write key, object
102
102
  end
103
103
  value
104
+ rescue
105
+ # FIXME: somehow read is finding Card objects with set_modules_loaded
106
+ # That shouldn't be possible (#fetch is designed to prevent it), and
107
+ # it immediately breaks write. Best guess is that #read is somehow
108
+ # shortcutting and returning current object. need to research!
109
+ Rails.logger.info "failed to write attribute: #{attribute}"
104
110
  end
105
111
 
106
112
  def write key, value
@@ -68,11 +68,12 @@ class Card
68
68
  # Could really happen almost anywhere
69
69
  # (even before chunk classes are loaded).
70
70
  register_list :default, [
71
- :URI, :HostURI, :EmailURI, :EscapedLiteral, :Include, :Link
71
+ :URI, :HostURI, :EmailURI, :EscapedLiteral, :Nest, :Link
72
72
  ]
73
- register_list :references, [:EscapedLiteral, :Include, :Link]
74
- register_list :nest_only, [:Include]
73
+ register_list :references, [:EscapedLiteral, :Nest, :Link]
74
+ register_list :nest_only, [:Nest]
75
75
  register_list :query, [:QueryReference]
76
+ register_list :stub, [:ViewStub]
76
77
 
77
78
  class Abstract
78
79
  class_attribute :config
@@ -22,7 +22,7 @@ class Card
22
22
  end
23
23
 
24
24
  attr_reader :result
25
- delegate :summary, :complete, to: :result
25
+ delegate :summary, :complete, :summary_omits_content?, to: :result
26
26
 
27
27
  # diff options
28
28
  # :format => :html|:text|:pointer|:raw
@@ -59,7 +59,7 @@ class Card
59
59
  opts[:reject] = /^</
60
60
  opts[:postprocess] = proc { |word| word.gsub("\n", "<br>") }
61
61
  when :pointer
62
- opts[:preprocess] = proc { |word| word.gsub("[[", "").gsub("]]", "") }
62
+ opts[:preprocess] = proc { |word| word.gsub("[[", "").gsub("]]", "<br>") }
63
63
  else # :raw
64
64
  opts[:preprocess] = proc { |word| CGI.escapeHTML(word) }
65
65
  end