card 1.19.6 → 1.20.0

Sign up to get free protection for your applications and to get access to all the features.
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