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
@@ -0,0 +1,4 @@
1
+ def default_limit
2
+ wql_limit = fetch_query.limit if respond_to?(:fetch_query)
3
+ wql_limit || 50
4
+ end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  describe Card::Set::Type::Pointer do
3
3
  describe "item_names" do
4
- it "should return array of names of items referred to by a pointer" do
4
+ it "returns array of names of items referred to by a pointer" do
5
5
  card = Card.new(type: "Pointer", content: "[[Busy]]\n[[Body]]")
6
6
  card.item_names.should == %w(Busy Body)
7
7
  end
@@ -133,7 +133,7 @@ describe Card::Set::Type::Pointer do
133
133
  end
134
134
  end
135
135
 
136
- it "should include nonexisting card in radio options" do
136
+ it "includes nonexisting card in radio options" do
137
137
  common_html =
138
138
  'input[class="pointer-radio-button"]'\
139
139
  '[checked="checked"]'\
@@ -146,7 +146,7 @@ describe Card::Set::Type::Pointer do
146
146
  assert_view_select @inherit_pointer.format.render_radio, option_html
147
147
  end
148
148
 
149
- it "should include nonexisting card in checkbox options" do
149
+ it "includes nonexisting card in checkbox options" do
150
150
  option_html =
151
151
  'input[class="pointer-checkbox-button"]'\
152
152
  '[checked="checked"]'\
@@ -157,14 +157,14 @@ describe Card::Set::Type::Pointer do
157
157
  assert_view_select @inherit_pointer.format.render_checkbox, option_html
158
158
  end
159
159
 
160
- it "should include nonexisting card in select options" do
160
+ it "includes nonexisting card in select options" do
161
161
  option_html = "option[value='#{@card_name}'][selected='selected']"
162
162
  assert_view_select @pointer.format.render_select, option_html, @card_name
163
163
  assert_view_select @inherit_pointer.format.render_select, option_html,
164
164
  @card_name
165
165
  end
166
166
 
167
- it "should include nonexisting card in multiselect options" do
167
+ it "includes nonexisting card in multiselect options" do
168
168
  option_html = "option[value='#{@card_name}'][selected='selected']"
169
169
  assert_view_select @pointer.format.render_multiselect, option_html,
170
170
  @card_name
@@ -178,7 +178,7 @@ describe Card::Set::Type::Pointer do
178
178
  @css = "#box { display: block }"
179
179
  Card.create name: "my css", content: @css
180
180
  end
181
- it "should render CSS of items" do
181
+ it "renders CSS of items" do
182
182
  css_list = render_card(
183
183
  :content,
184
184
  { type: Card::PointerID, name: "my style list", content: "[[my css]]" },
@@ -191,7 +191,7 @@ describe Card::Set::Type::Pointer do
191
191
  end
192
192
 
193
193
  describe "#standardize_item" do
194
- it "should handle unlinked items" do
194
+ it "handles unlinked items" do
195
195
  pointer1 = Card.create!(
196
196
  name: "pointer1", type: "Pointer", content: "bracketme"
197
197
  )
@@ -1,7 +1,7 @@
1
1
  format :html do
2
- view :editor do |_args|
3
- wrap_with(:div, id: unique_id, class: "prosemirror-editor") do
4
- hidden_field(:content, class: "card-content", value: card.raw_content)
2
+ view :editor do
3
+ wrap_with :div, id: unique_id, class: "prosemirror-editor" do
4
+ hidden_field :content, class: "card-content", value: card.raw_content
5
5
  end
6
6
  end
7
7
  end
@@ -5,37 +5,37 @@ def standardize_items
5
5
  end
6
6
 
7
7
  format :html do
8
- view :pointer_core do |args| # view: :core, mod: Type::Pointer::HtmlFormat
9
- %(<div class="pointer-list">#{render_pointer_items args}</div>)
8
+ view :pointer_core do
9
+ wrap_with :div, pointer_items, class: "pointer-list"
10
10
  end
11
11
 
12
- view :core do |args|
12
+ view :core do
13
13
  if card.content == "_left"
14
- core_inherit_content args
14
+ core_inherit_content
15
15
  else
16
- render :pointer_core, args
16
+ render :pointer_core
17
17
  end
18
18
  end
19
19
 
20
- view :closed_content do |args|
21
- args[:item] ||= :link
22
- render_core args
20
+ view :closed_content do
21
+ render_core items: { view: :link }
23
22
  end
24
23
 
25
- view :editor do |args|
24
+ view :editor do
26
25
  item_names = inheriting? ? [] : card.item_names
27
26
  %(
28
27
  #{hidden_field :content, class: 'card-content'}
29
28
  <div class="perm-editor">
30
- #{inheritance_checkbox args}
29
+ #{inheritance_checkbox}
31
30
  <div class="perm-group perm-vals perm-section">
32
- <h5>Groups</h5>
31
+ <h5 class="text-muted">Groups</h5>
33
32
  #{groups item_names}
34
33
  </div>
35
34
 
36
35
  <div class="perm-indiv perm-vals perm-section">
37
- <h5>Individuals</h5>
38
- #{_render_list item_list: item_names, extra_css_class: 'perm-indiv-ul'}
36
+ <h5 class="text-muted">Individuals</h5>
37
+ #{_render_list item_list: item_names,
38
+ extra_css_class: 'perm-indiv-ul'}
39
39
  </div>
40
40
  </div>
41
41
  )
@@ -46,10 +46,17 @@ format :html do
46
46
  def groups item_names
47
47
  group_options.map do |option|
48
48
  checked = !item_names.delete(option.name).nil?
49
- option_link = link_to_card option.name, nil, target: "wagn_role"
49
+ icon = glyphicon "question-sign", "link-muted"
50
+ option_link = link_to_card option.name, icon, target: "wagn_role"
50
51
  box = check_box_tag "#{option.key}-perm-checkbox",
51
52
  option.name, checked, class: "perm-checkbox-button"
52
- %(<div class="group-option">#{box}<label>#{option_link}</label></div>)
53
+ <<-HTML
54
+ <div class="form-check checkbox">
55
+ <label class="form-check-label">
56
+ #{box} #{option.name} #{option_link}
57
+ </label>
58
+ </div>
59
+ HTML
53
60
  end * "\n"
54
61
  end
55
62
 
@@ -73,14 +80,14 @@ format :html do
73
80
  @inheriting ||= inheritable? && card.content == "_left"
74
81
  end
75
82
 
76
- def inheritance_checkbox args
83
+ def inheritance_checkbox
77
84
  return unless inheritable?
78
85
  <<-HTML
79
86
  <div class="perm-inheritance perm-section">
80
87
  #{check_box_tag 'inherit', 'inherit', inheriting?}
81
88
  <label>
82
- #{core_inherit_content args.merge(target: 'wagn_role')}
83
- #{content_tag(:a, title: "use left's #{card.cardname.tag} rule") { '?' }}
89
+ #{core_inherit_content target: 'wagn_role'}
90
+ #{wrap_with(:a, title: "use left's #{card.cardname.tag} rule") { '?' }}
84
91
  </label>
85
92
  </div>
86
93
  HTML
@@ -1,11 +1,11 @@
1
1
  format :html do
2
- view :core do |args|
2
+ view :core do
3
3
  with_nest_mode :template do
4
- super args
4
+ super()
5
5
  end
6
6
  end
7
7
 
8
- view :closed_content do |_args|
8
+ view :closed_content do
9
9
  "#{_render_type} : #{_render_raw}"
10
10
  end
11
11
  end
@@ -1,6 +1,5 @@
1
-
2
1
  format :rss do
3
- def raw_feed_items _args
2
+ def raw_feed_items
4
3
  [card]
5
4
  end
6
5
  end
@@ -11,9 +10,9 @@ end
11
10
 
12
11
  event :update_structurees_references, :integrate,
13
12
  when: proc { |c| c.db_content_changed? || c.action == :delete } do
14
- return unless (statement = structuree_statement)
13
+ return unless (query = structuree_query)
15
14
  Auth.as_bot do
16
- Card::Query.run(statement).each(&:update_references_out)
15
+ query.run.each(&:update_references_out)
17
16
  end
18
17
  end
19
18
 
@@ -29,12 +28,9 @@ event :update_structurees_type, :finalize,
29
28
  end
30
29
 
31
30
  def structuree_names
32
- if (wql = structuree_statement)
33
- Auth.as_bot do
34
- Card::Query.run wql.merge(return: :name)
35
- end
36
- else
37
- []
31
+ return [] unless (query = structuree_query(return: :name))
32
+ Auth.as_bot do
33
+ query.run
38
34
  end
39
35
  end
40
36
 
@@ -43,19 +39,17 @@ def update_structurees args
43
39
  # for example, if someone were to change the type of a
44
40
  # +*right+*structure rule that was overridden
45
41
  # by a +*type plus right+*structure rule, the override would not be respected.
42
+ return unless (query = structuree_query(return: :id))
46
43
 
47
- statement = structuree_statement
48
- return unless statement
49
44
  Auth.as_bot do
50
- statement[:return] = :id
51
- Card::Query.run(statement).each_slice(100) do |id_batch|
45
+ query.run.each_slice(100) do |id_batch|
52
46
  Card.where(id: id_batch).update_all args
53
47
  end
54
48
  end
55
49
  end
56
50
 
57
- def structuree_statement
51
+ def structuree_query args={}
58
52
  set_card = trunk
59
53
  return unless set_card.type_id == SetID
60
- set_card.get_query
54
+ set_card.fetch_query args
61
55
  end
@@ -9,7 +9,7 @@ describe Card::Set::Right::Comment do
9
9
  content: "[[Anyone Signed In]]"
10
10
  end
11
11
 
12
- it "should have appender immediately" do
12
+ it "has appender immediately" do
13
13
  expect(Card["a"].ok?(:comment)).not_to be_truthy
14
14
  Card::Auth.as_bot do
15
15
  @rule.save!
@@ -17,7 +17,7 @@ describe Card::Set::Right::Comment do
17
17
  expect(Card["a"].ok?(:comment)).to be_truthy
18
18
  end
19
19
 
20
- it "should have appender immediately" do
20
+ it "has appender immediately" do
21
21
  Card::Auth.as_bot do
22
22
  expect(Card["a"].ok?(:comment)).not_to be_truthy
23
23
  @rule.save!
@@ -27,7 +27,7 @@ describe Card::Set::Right::Comment do
27
27
  end
28
28
 
29
29
  context "comment addition" do
30
- it "should combine content after save" do
30
+ it "combines content after save" do
31
31
  Card::Auth.as_bot do
32
32
  Card.create name: "basicname+*self+*comment",
33
33
  content: "[[Anyone Signed In]]"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Right::Create do
4
- it "should render the perm editor" do
4
+ it "renders the perm editor" do
5
5
  Card::Auth.as_bot do
6
6
  card = Card.new name: "A+B+*self+*create"
7
7
  assert_view_select card.format._render_editor, "div[class=perm-editor]"
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe Card::Set::Right::Style do
4
4
  # describe "#delet"
5
- # it "should delete tempfile"
5
+ # it "deletes tempfile"
6
6
  let(:css) { "#box { display: block }" }
7
7
  let(:compressed_css) { "#box{display:block}\n" }
8
8
  let(:changed_css) { "#box { display: inline }" }
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe Card::Set::Type::Setting do
4
4
  context "core view" do
5
- it "should have a table" do
5
+ it "has a table" do
6
6
  core = render_card :core, name: :help
7
7
  assert_view_select core, "table"
8
8
  end
@@ -13,9 +13,9 @@ card_accessor :solid_cache, type: :html
13
13
  def self.included host_class
14
14
  host_class.format(host_class.try(:cached_format) || :base) do
15
15
  view :core do |args|
16
- return super(args) unless args[:solid_cache]
16
+ return super() unless args[:solid_cache]
17
17
  card.update_solid_cache if card.solid_cache_card.new?
18
- subformat(card.solid_cache_card)._render_core args
18
+ subformat(card.solid_cache_card)._render_core
19
19
  end
20
20
  end
21
21
  end
@@ -100,8 +100,8 @@ end
100
100
 
101
101
  def generate_content_for_cache changed_card=nil
102
102
  format_type = try(:cached_format) || :base
103
- format(format_type)._render_core(solid_cache: false,
104
- changed_card: changed_card)
103
+ format(format_type)._render_core solid_cache: false,
104
+ changed_card: changed_card
105
105
  end
106
106
 
107
107
  def updated_content_for_cache _changed_card=nil
@@ -11,20 +11,19 @@ def clean_html?
11
11
  end
12
12
 
13
13
  format :html do
14
- view :core do |args|
15
- return super(args) unless card.new_card?
16
- _render_missing args.merge(denied_view: :core)
14
+ view :core do
15
+ return super() unless card.new_card?
16
+ @denied_view = :core
17
+ _render_missing
17
18
  end
18
19
 
19
- view :missing do |args|
20
- if @card.new_card? &&
21
- (l = @card.left) &&
22
- l.solid_cache?
20
+ view :missing do
21
+ if @card.new_card? && (l = @card.left) && l.solid_cache?
23
22
  l.update_solid_cache
24
- @card = Card.fetch(card.name)
25
- render(args[:denied_view], args)
23
+ @card = Card.fetch card.name
24
+ render @denied_view
26
25
  else
27
- super(args)
26
+ super()
28
27
  end
29
28
  end
30
29
 
@@ -0,0 +1,41 @@
1
+ format do
2
+ def search_params
3
+ @search_params ||= begin
4
+ p = default_search_params.clone
5
+ offset_and_limit_search_params p if focal?
6
+ p
7
+ end
8
+ end
9
+
10
+ def default_search_params
11
+ { limit: default_limit }
12
+ end
13
+
14
+ def default_limit
15
+ 100
16
+ end
17
+
18
+ def offset_and_limit_search_params hash
19
+ [:offset, :limit].each do |key|
20
+ hash[key] = params[key].to_i if params[key]
21
+ end
22
+ end
23
+ end
24
+
25
+ format :html do
26
+ def default_limit
27
+ 20
28
+ end
29
+ end
30
+
31
+ format :json do
32
+ def default_limit
33
+ 0
34
+ end
35
+ end
36
+
37
+ format :rss do
38
+ def default_limit
39
+ 25
40
+ end
41
+ end
@@ -0,0 +1,132 @@
1
+ include_set Abstract::SearchParams
2
+
3
+ def search _args={}
4
+ raise Error, "search not overridden"
5
+ end
6
+
7
+ def cached_search args={}
8
+ @search_results ||= {}
9
+ @search_results[args.to_s] ||= search args
10
+ end
11
+
12
+ def returning item, args
13
+ args[:return] = item
14
+ yield
15
+ end
16
+
17
+ def item_cards args={}
18
+ returning(:card, args) { search args }
19
+ end
20
+
21
+ def item_names args={}
22
+ args[:limit] = 0
23
+ returning(:name, args) { search args }
24
+ end
25
+
26
+ def count args={}
27
+ args[:offset] = 0
28
+ args[:limit] = 0
29
+ returning(:count, args) { search args }
30
+ end
31
+
32
+ def item_type
33
+ type = wql_hash[:type]
34
+ return if type.is_a?(Array) || type.is_a?(Hash)
35
+ type
36
+ end
37
+
38
+ def each_item_name_with_options _content=nil
39
+ options = {}
40
+ item = fetch_query.statement[:view]
41
+ options[:view] = item if item
42
+ item_names.each do |name|
43
+ yield name, options
44
+ end
45
+ end
46
+
47
+ format do
48
+ view :search_count, cache: :never do
49
+ search_with_params.to_s
50
+ end
51
+
52
+ view :search_error, cache: :never do
53
+ sr_class = search_with_params.class.to_s
54
+ %(#{sr_class} :: #{search_with_params.message} :: #{card.raw_content})
55
+ end
56
+
57
+ view :card_list, cache: :never do
58
+ if search_with_params.empty?
59
+ "no results"
60
+ else
61
+ search_with_params.map do |item_card|
62
+ nest_item item_card
63
+ end.join "\n"
64
+ end
65
+ end
66
+
67
+ def search_with_params args={}
68
+ query_args = search_params.merge args
69
+ card.cached_search query_args
70
+ rescue Error::BadQuery => e
71
+ e
72
+ end
73
+
74
+ def count_with_params args={}
75
+ search_with_params args.merge return: :count
76
+ end
77
+
78
+ def implicit_item_view
79
+ view = voo_items_view || query_with_params.statement[:item] ||
80
+ default_item_view
81
+ Card::View.canonicalize view
82
+ end
83
+ end
84
+
85
+ format :data do
86
+ view :card_list do |_args|
87
+ search_with_params.map do |item_card|
88
+ nest_item item_card
89
+ end
90
+ end
91
+ end
92
+
93
+ format :csv do
94
+ view :card_list do |args|
95
+ items = super args
96
+ if @depth.zero?
97
+ render_csv_title_row + items
98
+ else
99
+ items
100
+ end
101
+ end
102
+ end
103
+
104
+ format :html do
105
+ view :card_list do
106
+ return render_no_search_results if search_with_params.empty?
107
+ search_result_list do
108
+ search_with_params.map do |item_card|
109
+ nest_item item_card, size: voo.size do |rendered, item_view|
110
+ klass = "search-result-item item-#{item_view}"
111
+ %(<div class="#{klass}">#{rendered}</div>)
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def search_result_list
118
+ with_paging do
119
+ wrap_with :div, class: "search-result-list" do
120
+ yield
121
+ end
122
+ end
123
+ end
124
+
125
+ def closed_limit
126
+ [search_params[:limit].to_i, Card.config.closed_search_limit].min
127
+ end
128
+
129
+ view :no_search_results do
130
+ wrap_with :div, "", class: "search-no-results"
131
+ end
132
+ end