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
@@ -6,14 +6,13 @@ describe Card::Set::Type::Signup do
6
6
  end
7
7
 
8
8
  context "signup form form" do
9
- before do
10
- card = Card.new type_id: Card::SignupID
11
- @form = card.format.render_new
9
+ subject do
10
+ Card.new(type_id: Card::SignupID).format.render :new
12
11
  end
13
12
 
14
13
  it "prompts to signup" do
15
14
  Card::Auth.as :anonymous do
16
- expect(@form.match(/Sign up/)).to be_truthy
15
+ expect(subject.match(/Sign up/)).to be_truthy
17
16
  end
18
17
  end
19
18
  end
@@ -106,7 +105,7 @@ describe Card::Set::Type::Signup do
106
105
  @account = @signup.account
107
106
  end
108
107
 
109
- it "should create all the necessary cards, but no token" do
108
+ it "creates all the necessary cards, but no token" do
110
109
  expect(@signup.type_id).to eq(Card::SignupID)
111
110
  expect(@account.email).to eq("wolf@wagn.org")
112
111
  expect(@account.status).to eq("pending")
@@ -114,7 +113,7 @@ describe Card::Set::Type::Signup do
114
113
  expect(@account.password.length).to be > 10 # encrypted
115
114
  end
116
115
 
117
- it "should not create a token" do
116
+ it "does not create a token" do
118
117
  expect(@account.token).not_to be_present
119
118
  end
120
119
 
@@ -133,7 +132,7 @@ describe Card::Set::Type::Signup do
133
132
  end
134
133
 
135
134
  context "approval with token" do
136
- it "should create token" do
135
+ it "creates token" do
137
136
  Card::Env.params[:approve_with_token] = true
138
137
  Card::Auth.as "joe_admin"
139
138
 
@@ -144,7 +143,7 @@ describe Card::Set::Type::Signup do
144
143
  end
145
144
 
146
145
  context "approval without token" do
147
- it "should create token" do
146
+ it "creates token" do
148
147
  Card::Env.params[:approve_without_token] = true
149
148
  Card::Auth.as "joe_admin"
150
149
 
@@ -1,9 +1,6 @@
1
1
  format :html do
2
- def default_editor_args args
3
- args[:ace_mode] ||= "html"
4
- end
5
-
6
2
  view :editor do |args|
3
+ args[:ace_mode] ||= "html"
7
4
  text_area :content, rows: 5,
8
5
  class: "card-content ace-editor-textarea",
9
6
  "data-ace-mode" => args[:ace_mode]
@@ -8,7 +8,7 @@ event :admin_tasks, :initialize, on: :update do
8
8
  case task.to_sym
9
9
  when :clear_cache then Card::Cache.reset_all
10
10
  when :repair_references then Card::Reference.repair_all
11
- when :clear_view_cache then Card::Cache::ViewCache.reset
11
+ # when :clear_view_cache then Card::View.reset
12
12
  when :delete_old_revisions then Card::Action.delete_old
13
13
  when :repair_permissions then Card.repair_all_permissions
14
14
  when :clear_solid_cache then Card.clear_solid_cache
@@ -60,7 +60,7 @@ format :html do
60
60
  ]
61
61
  return stats unless Card.config.view_cache
62
62
  stats << { title: "view cache",
63
- count: Card::Cache::ViewCache,
63
+ count: Card::View,
64
64
  link_text: "clear view cache",
65
65
  task: "clear_view_cache" }
66
66
  end
@@ -14,7 +14,7 @@ format :html do
14
14
  warnings << recaptcha_warning
15
15
  end
16
16
  return "" if warnings.empty?
17
- alert :warning, dismissible: true do
17
+ alert :warning, true do
18
18
  render_warning_list warnings
19
19
  end
20
20
  end
@@ -0,0 +1,3 @@
1
+ event :set_recaptcha_private_key, :finalize do
2
+ Card.config.recaptcha_public_key = content
3
+ end
@@ -0,0 +1,3 @@
1
+ event :set_recaptcha_proxy, :finalize do
2
+ Card.config.recaptcha_proxy = content
3
+ end
@@ -0,0 +1,3 @@
1
+ event :set_recaptcha_public_key, :finalize do
2
+ Card.config.recaptcha_public_key = content
3
+ end
@@ -24,17 +24,17 @@ format :html do
24
24
  def restored
25
25
  return unless (res_id = Env.params[:restore]) &&
26
26
  (res_card = Card[res_id.to_i])
27
- alert :success, dismissible: true do
28
- content_tag(:h5, "restored") + subformat(res_card).render_closed
27
+ alert :success, true do
28
+ wrap_with(:h5, "restored") + subformat(res_card).render_closed
29
29
  end
30
30
  end
31
31
 
32
32
  def empty_trash_link
33
- content_tag(
33
+ wrap_with(
34
34
  :p,
35
35
  button_link("empty trash",
36
36
  btn_type: :default,
37
- path: { card: :admin, action: :update, task: :empty_trash,
37
+ path: { mark: :admin, action: :update, task: :empty_trash,
38
38
  success: { id: "~#{card.id}" } },
39
39
  "data-confirm" => "Are you sure you want to delete "\
40
40
  "all cards in the trash?")
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Self::Admin do
4
- it "should render a table" do
4
+ it "renders a table" do
5
5
  Card::Auth.as_bot do
6
6
  @core = render_card :core, name: :admin
7
7
  end
@@ -13,7 +13,7 @@ describe Card::Set::Self::Admin do
13
13
  @admin = Card[:admin]
14
14
  end
15
15
 
16
- it "should trigger empty trash (with right params)" do
16
+ it "triggers empty trash (with right params)" do
17
17
  Card::Auth.as_bot do
18
18
  Card["A"].delete!
19
19
  expect(Card.where(trash: true)).not_to be_empty
@@ -23,7 +23,7 @@ describe Card::Set::Self::Admin do
23
23
  end
24
24
  end
25
25
 
26
- it "should trigger deleting old revisions (with right params)" do
26
+ it "triggers deleting old revisions (with right params)" do
27
27
  Card::Auth.as_bot do
28
28
  a = Card["A"]
29
29
  a.update_attributes! content: "a new day"
@@ -35,7 +35,7 @@ describe Card::Set::Self::Admin do
35
35
  end
36
36
  end
37
37
 
38
- # it 'should be trigger reference repair' do
38
+ # it 'is trigger reference repair' do
39
39
  # Card::Auth.as_bot do
40
40
  # a = Card['A']
41
41
  # puts a.references_out.count
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Self::Version do
4
- it "should have an X.X.X version" do
4
+ it "has an X.X.X version" do
5
5
  expect(render_card(:raw, name: "*version") =~ /\d\.\d+\.\w+/).to be_truthy
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  format :css do
3
- def get_nest_defaults _nested_card
4
- { view: :raw }
3
+ def default_nest_view
4
+ :raw
5
5
  end
6
6
 
7
7
  def show view, args
@@ -22,7 +22,7 @@ format :css do
22
22
  end
23
23
 
24
24
  view :import do |_args|
25
- %{\n@import url("#{_render_url item: :import}");\n}
25
+ %{\n@import url("#{_render_url items: { view: :import }}");\n}
26
26
  end
27
27
 
28
28
  view :url, perms: :none do |args|
@@ -1,12 +1,12 @@
1
1
  require "csv"
2
2
 
3
3
  format :csv do
4
- def get_nest_defaults _nested_card
5
- { view: :core }
4
+ def default_nest_view
5
+ :core
6
6
  end
7
7
 
8
8
  def default_item_view
9
- @depth == 0 ? :csv_row : :name
9
+ @depth.zero? ? :csv_row : :name
10
10
  end
11
11
 
12
12
  view :csv_row do |_args|
@@ -25,19 +25,19 @@ format :csv do
25
25
  view :csv_title_row do |_args|
26
26
  # NOTE: assumes all cards have the same structure!
27
27
  begin
28
- card1 = search_results.first
28
+ card1 = search_with_params.first
29
29
 
30
30
  parsed_content = Card::Content.new card1.raw_content, self
31
31
  if parsed_content.__getobj__.is_a? String
32
32
  ""
33
33
  else
34
34
  titles = parsed_content.map do |chunk|
35
- next if chunk.class != Card::Content::Chunk::Include
35
+ next if chunk.class != Card::Content::Chunk::Nest
36
36
  opts = chunk.options
37
37
  if %w(name link).member? opts[:view]
38
38
  opts[:view]
39
39
  else
40
- opts[:inc_name].to_name.tag
40
+ opts[:nest_name].to_name.tag
41
41
  end
42
42
  end.compact
43
43
  CSV.generate_line titles.map { |title| title.to_s.upcase }
@@ -1,5 +1,9 @@
1
1
 
2
2
  format :js do
3
+ def default_item_view
4
+ :core
5
+ end
6
+
3
7
  view :include_tag do |_args|
4
8
  %(\n#{javascript_include_tag page_path(card.cardname)}\n )
5
9
  end
@@ -5,48 +5,27 @@ format do
5
5
  end
6
6
 
7
7
  # NAME VIEWS
8
- view :name, closed: true, perms: :none do |args|
9
- return card.name unless args[:variant]
10
- args[:variant].split(/[\s,]+/).inject(card.name) do |name, variant|
11
- case variant.to_sym
12
- when :capitalized
13
- name.capitalize
14
- when :singular
15
- name.singularize
16
- when :plural
17
- name.pluralize
18
- when :title
19
- name.titleize
20
- else
21
- if ::Set.new([
22
- :downcase, :upcase, :swapcase, :reverse, :succ
23
- ]).include?(variant.to_sym)
24
- name.send variant
25
- else
26
- name
27
- end
28
- end
29
- end
8
+ view :name, closed: true, perms: :none do
9
+ voo.variant ? card.cardname.vary(voo.variant) : card.name
30
10
  end
31
11
 
32
12
  view(:key, closed: true, perms: :none) { card.key }
33
13
  view(:linkname, closed: true, perms: :none) { card.cardname.url_key }
34
14
  view(:url, closed: true, perms: :none) { card_url _render_linkname }
35
15
 
36
- view :title, closed: true, perms: :none do |args|
37
- args[:title] || card.name
16
+ view :title, closed: true, perms: :none do
17
+ raw_title = voo.title || card.name
18
+ voo.variant ? raw_title.to_name.vary(voo.variant) : raw_title
38
19
  end
39
20
 
40
21
  view :url_link, closed: true, perms: :none do
41
22
  link_to_resource card_url(_render_linkname)
42
23
  end
43
24
 
44
- view :link, closed: true, perms: :none do |args|
45
- title = showname args[:title]
25
+ view :link, closed: true, perms: :none do
26
+ title = showname voo.title
46
27
  opts = { known: card.known? }
47
- if args[:type] && !opts[:known]
48
- opts[:path] = { card: { type: args[:type] } }
49
- end
28
+ opts[:path] = { card: { type: voo.type } } if voo.type && !opts[:known]
50
29
  link_to_card card.name, title, opts
51
30
  end
52
31
 
@@ -62,25 +41,25 @@ format do
62
41
 
63
42
  # CONTENT VIEWS
64
43
 
65
- view :raw do |args|
66
- scard = args[:structure] ? Card[args[:structure]] : card
44
+ view :raw do
45
+ scard = voo.structure ? Card[voo.structure] : card
67
46
  scard ? scard.raw_content : _render_blank
68
47
  end
69
48
 
70
- view :core do |args|
71
- process_content _render_raw(args)
49
+ view :core, closed: true do
50
+ process_content _render_raw
72
51
  end
73
52
 
74
- view :content do |args|
75
- _render_core args
53
+ view :content do
54
+ _render_core
76
55
  end
77
56
 
78
- view :open_content do |args|
79
- _render_core args
57
+ view :open_content do
58
+ _render_core
80
59
  end
81
60
 
82
- view :closed_content, closed: true do |args|
83
- Card::Content.smart_truncate _render_core(args)
61
+ view :closed_content, closed: true do
62
+ Card::Content.smart_truncate _render_core
84
63
  end
85
64
 
86
65
  view :blank, closed: true, perms: :none do
@@ -94,45 +73,44 @@ format do
94
73
 
95
74
  # NAME + CONTENT VIEWS
96
75
 
97
- view :titled do |args|
98
- "#{card.name}\n\n#{_render_core args}"
76
+ view :titled do
77
+ "#{card.name}\n\n#{_render_core}"
99
78
  end
100
79
  view :open, :titled
101
80
 
102
- view :labeled do |args|
103
- "#{card.name}: #{_render_closed_content args}"
81
+ view :labeled do
82
+ "#{card.name}: #{_render_closed_content}"
104
83
  end
105
84
  view :closed, :labeled
106
85
 
107
86
  # SPECIAL VIEWS
108
87
 
109
- view :array do |args|
88
+ view :array, cache: :never do
110
89
  card.item_cards(limit: 0).map do |item_card|
111
- subformat(item_card)._render_core(args)
90
+ subformat(item_card)._render_core
112
91
  end.inspect
113
92
  end
114
93
 
115
94
  # none of the below belongs here!!
116
95
 
117
- view :template_rule, tags: :unknown_ok do |args|
118
- # FIXME: - relativity should be handled in smartname
119
- return "" unless args[:inc_name]
120
- name = args[:inc_name].to_name
121
- stripped = name.stripped
96
+ view :template_rule, cache: :never, tags: :unknown_ok do
97
+ return "" unless voo.nest_name
98
+ if voo.nest_name.to_name.simple_relative?
99
+ set_card = Card.fetch template_link_set_name
100
+ subformat(set_card).render_template_link
101
+ else
102
+ "{{#{voo.nest_syntax}}}"
103
+ end
104
+ end
122
105
 
123
- if name.relative? && !stripped.to_name.starts_with_joint?
124
- # not a simple relative name; just return the original syntax
125
- "{{#{args[:inc_syntax]}}}"
106
+ def template_link_set_name
107
+ name = voo.nest_name.to_name
108
+ if name.absolute?
109
+ name.trait_name :self
110
+ elsif (type = on_type_set)
111
+ [type, name].to_name.trait_name :type_plus_right
126
112
  else
127
- set_name =
128
- if name.absolute?
129
- "#{name}+#{Card[:self].name}" # *self set
130
- elsif (type = on_type_set)
131
- "#{type}#{name}+#{Card[:type_plus_right].name}" # *type plus right
132
- else
133
- "#{stripped.gsub(/^\+/, '')}+#{Card[:right].name}" # *right
134
- end
135
- subformat(Card.fetch(set_name)).render_template_link args
113
+ name.stripped.gsub(/^\+/, "").to_name.trait_name :right
136
114
  end
137
115
  end
138
116
 
@@ -1,7 +1,6 @@
1
-
2
1
  format :json do
3
- def get_nest_defaults _nested_card
4
- { view: :atom }
2
+ def default_nest_view
3
+ :atom
5
4
  end
6
5
 
7
6
  def default_item_view
@@ -15,55 +14,51 @@ format :json do
15
14
  def show view, args
16
15
  view ||= :content
17
16
  raw = render view, args
18
- if raw.is_a?(String)
19
- raw
20
- elsif params[:compress]
21
- JSON(raw)
22
- else
23
- JSON.pretty_generate raw
24
- end
17
+ return raw if raw.is_a? String
18
+ method = params[:compress] ? :generate : :pretty_generate
19
+ JSON.send method, raw
25
20
  end
26
21
 
27
- view :name_complete do |_args|
28
- card.item_cards complete: params["term"], limit: 8, sort: "name",
29
- return: "name", context: ""
22
+ view :name_complete, cache: :never do
23
+ # context is "" so that term will not be interpreted in the context
24
+ # of search card name. However, this can break searches where the
25
+ # search card name is required (eg found_by)
26
+ card.search complete: params["term"], limit: 8, sort: "name",
27
+ return: "name", context: ""
30
28
  end
31
29
 
32
- view :status, tags: :unknown_ok, perms: :none do |_args|
33
- status =
34
- case
35
- when !card.known? then :unknown
36
- # do we want the following to prevent fishing? of course, they can always
37
- # post...
38
- when !card.ok?(:read) then :unknown
39
- when card.real? then :real
40
- when card.virtual? then :virtual
41
- else :wtf
42
- end
43
-
44
- hash = { key: card.key, url_key: card.cardname.url_key, status: status }
30
+ view :status, tags: :unknown_ok, perms: :none, cache: :never do
31
+ status = card.state
32
+ hash = { key: card.key,
33
+ url_key: card.cardname.url_key,
34
+ status: status }
45
35
  hash[:id] = card.id if status == :real
46
-
47
36
  hash
48
37
  end
49
38
 
50
- view :content do |_args|
39
+ view :content, cache: :never do
51
40
  req = controller.request
52
- {
53
- url: (req && req.original_url),
41
+ { url: (req && req.original_url),
54
42
  timestamp: Time.now.to_s,
55
- card: _render_atom
56
- }
43
+ card: _render_atom }
57
44
  end
58
45
 
59
- view :atom do |args|
60
- h = {
61
- name: card.name,
62
- type: card.type_name
63
- }
46
+ view :atom, cache: :never do
47
+ h = { name: card.name, type: card.type_name }
64
48
  h[:content] = card.content unless card.structure
65
- h[:codename] = card.codename if card.codename
66
- h[:value] = _render_core args if @depth < max_depth
49
+ h[:codename] = card.codename if card.codename
50
+ h[:value] = _render_core if @depth < max_depth
67
51
  h
68
52
  end
53
+
54
+ # minimum needed to re-fetch card
55
+ view :cast, cache: :never do
56
+ card.cast
57
+ end
58
+ end
59
+
60
+ # TODO: perhaps this should be in a general "data" module.
61
+ def cast
62
+ real? ? { id: id } : { name: name, type_id: type_id, content: db_content }
69
63
  end
64
+