card 1.20.4 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +9 -9
  4. data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +20 -0
  5. data/db/migrate_core_cards/20170608083819_add_full_width_layout_card.rb +23 -0
  6. data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +8 -0
  7. data/db/seed/new/card_actions.yml +783 -791
  8. data/db/seed/new/card_acts.yml +65 -47
  9. data/db/seed/new/card_changes.yml +3198 -3177
  10. data/db/seed/new/card_references.yml +604 -534
  11. data/db/seed/new/cards.yml +2355 -2256
  12. data/db/seed/test/fixtures/card_actions.yml +1795 -1803
  13. data/db/seed/test/fixtures/card_acts.yml +264 -246
  14. data/db/seed/test/fixtures/card_changes.yml +6275 -6184
  15. data/db/seed/test/fixtures/card_references.yml +1305 -1263
  16. data/db/seed/test/fixtures/cards.yml +3393 -3298
  17. data/db/seed/test/seed.rb +2 -2
  18. data/db/version_core_cards.txt +1 -1
  19. data/lib/card.rb +4 -0
  20. data/lib/card/act_manager/subdirector_array.rb +1 -0
  21. data/lib/card/auth/current.rb +7 -3
  22. data/lib/card/env.rb +5 -0
  23. data/lib/card/env/success.rb +1 -1
  24. data/lib/card/format/names.rb +3 -13
  25. data/lib/card/model/save_helper.rb +4 -6
  26. data/lib/card/query.rb +2 -1
  27. data/lib/card/query/attributes.rb +34 -14
  28. data/lib/card/query/value.rb +3 -4
  29. data/lib/card/set/format.rb +29 -4
  30. data/lib/card/set/format/haml_views.rb +25 -13
  31. data/lib/card/set/trait.rb +1 -0
  32. data/lib/card/set_pattern.rb +17 -1
  33. data/lib/card/subcards.rb +3 -2
  34. data/lib/generators/card/format/format_generator.rb +2 -0
  35. data/lib/generators/card/set/set_generator.rb +2 -0
  36. data/lib/generators/card/template/USAGE +10 -0
  37. data/lib/generators/card/template/template_generator.rb +46 -0
  38. data/lib/generators/card/template/templates/haml_template.erb +1 -0
  39. data/mod/Modfile +1 -1
  40. data/mod/account/set/all/account.rb +9 -5
  41. data/mod/account/set/right/account.rb +17 -5
  42. data/mod/account/set/self/account_links.rb +1 -2
  43. data/mod/account/set/type/signup.rb +4 -5
  44. data/mod/account/set/type/user.rb +1 -1
  45. data/mod/account/spec/set/all/account_spec.rb +2 -2
  46. data/mod/account/spec/set/right/account_spec.rb +2 -2
  47. data/mod/account/spec/set/right/email_spec.rb +1 -1
  48. data/mod/account/spec/set/right/password_spec.rb +1 -1
  49. data/mod/account/spec/set/self/signin_spec.rb +2 -2
  50. data/mod/account/spec/set/type/signup_spec.rb +4 -0
  51. data/mod/ace_editor/set/abstract/ace_editor.rb +6 -3
  52. data/mod/ace_editor/set/self/script_ace.rb +1 -0
  53. data/mod/admin/set/self/admin.rb +1 -1
  54. data/mod/admin/set/self/version.rb +1 -0
  55. data/mod/basic_formats/format/css_format.rb +1 -0
  56. data/mod/basic_formats/format/csv_format.rb +1 -0
  57. data/mod/basic_formats/format/file_format.rb +1 -0
  58. data/mod/basic_formats/format/js_format.rb +1 -0
  59. data/mod/basic_formats/format/json_format.rb +1 -0
  60. data/mod/basic_formats/format/rss_format.rb +1 -0
  61. data/mod/basic_formats/format/xml_format.rb +1 -0
  62. data/mod/basic_formats/set/all/all_csv.rb +1 -1
  63. data/mod/basic_formats/set/all/base.rb +11 -3
  64. data/mod/basic_formats/set/all/json.rb +50 -8
  65. data/mod/basic_formats/set/all/rss.rb +21 -7
  66. data/mod/basic_formats/set/self/01_head/javascript.rb +1 -1
  67. data/mod/basic_formats/set/self/head.rb +1 -1
  68. data/mod/basic_formats/spec/set/all/base_spec.rb +13 -0
  69. data/mod/basic_types/set/type/html.rb +6 -2
  70. data/mod/basic_types/set/type/plain_text.rb +2 -3
  71. data/mod/bootstrap/lib/bootstrap.rb +2 -2
  72. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +1 -1
  73. data/mod/bootstrap/lib/bootstrap/component.rb +2 -3
  74. data/mod/bootstrap/lib/bootstrap/component/form.rb +6 -5
  75. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +1 -1
  76. data/mod/bootstrap/lib/bootstrap/component/layout.rb +3 -3
  77. data/mod/bootstrap/lib/bootstrap/component_loader.rb +0 -2
  78. data/mod/bootstrap/lib/bootstrap/delegate.rb +2 -2
  79. data/mod/bootstrap/lib/bootstrapper.rb +1 -1
  80. data/mod/bootstrap/set/all/bootstrap/accordion.rb +1 -1
  81. data/mod/bootstrap/set/all/bootstrap/form.rb +2 -2
  82. data/mod/bootstrap/set/all/bootstrap/helper.rb +1 -0
  83. data/mod/bootstrap/set/all/bootstrap/wrapper.rb +1 -1
  84. data/mod/bootstrap/set/self/bootstrap_js.rb +1 -1
  85. data/mod/bootstrap/set/self/bootswatch_shared.rb +6 -6
  86. data/mod/bootstrap/set/self/script_mods.rb +1 -1
  87. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +7 -6
  88. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +2 -1
  89. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +6 -3
  90. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +3 -2
  91. data/mod/carrierwave/set/abstract/attachment.rb +1 -3
  92. data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
  93. data/mod/carrierwave/set/abstract/attachment/storage_type.rb +11 -1
  94. data/mod/carrierwave/set/type/file.rb +3 -3
  95. data/mod/carrierwave/spec/lib/carrier_wave/file_card_uploader_spec.rb +3 -0
  96. data/mod/carrierwave/spec/set/type/file_spec.rb +24 -6
  97. data/mod/carrierwave/spec/set/type/image_spec.rb +3 -0
  98. data/mod/core/chunk/link.rb +1 -1
  99. data/mod/core/chunk/nest.rb +2 -1
  100. data/mod/core/chunk/query_reference.rb +1 -1
  101. data/mod/core/chunk/reference.rb +1 -0
  102. data/mod/core/chunk/uri.rb +4 -3
  103. data/mod/core/set/abstract/lock.rb +26 -0
  104. data/mod/core/set/all/assign_attributes.rb +8 -4
  105. data/mod/core/set/all/collection.rb +16 -7
  106. data/mod/core/set/all/content.rb +6 -0
  107. data/mod/core/set/all/event.rb +1 -1
  108. data/mod/core/set/all/fetch.rb +2 -2
  109. data/mod/core/set/all/haml.rb +5 -15
  110. data/mod/core/set/all/initialize.rb +2 -2
  111. data/mod/core/set/all/name.rb +1 -1
  112. data/mod/core/set/all/permissions.rb +28 -16
  113. data/mod/core/set/all/rules.rb +1 -2
  114. data/mod/core/set/all/subcards.rb +3 -3
  115. data/mod/core/set/all/templating.rb +5 -1
  116. data/mod/core/set/all/trash.rb +1 -1
  117. data/mod/core/set/all/utils.rb +1 -1
  118. data/mod/core/spec/set/all/actify_spec.rb +1 -1
  119. data/mod/core/spec/set/all/assign_attributes_spec.rb +2 -2
  120. data/mod/core/spec/set/all/collection_spec.rb +6 -3
  121. data/mod/core/spec/set/all/export_spec.rb +40 -112
  122. data/mod/core/spec/set/all/name_spec.rb +1 -1
  123. data/mod/core/spec/set/all/permissions_spec.rb +7 -7
  124. data/mod/core/spec/set/all/rules2_spec.rb +25 -25
  125. data/mod/core/spec/set/all/rules_spec.rb +2 -7
  126. data/mod/developer/set/all/event_viz.rb +1 -1
  127. data/mod/developer/set/right/debug.rb +1 -1
  128. data/mod/history/lib/card/act.rb +1 -0
  129. data/mod/history/lib/card/act/act_renderer.rb +23 -20
  130. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +0 -1
  131. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +1 -0
  132. data/mod/history/lib/card/action.rb +1 -1
  133. data/mod/history/lib/card/action/action_renderer.rb +2 -2
  134. data/mod/history/lib/card/change.rb +2 -1
  135. data/mod/history/set/all/action_view.rb +1 -1
  136. data/mod/history/set/all/content_history.rb +7 -4
  137. data/mod/history/set/all/history.rb +6 -6
  138. data/mod/machines/file/all_script_machine_output/file.js +50 -34
  139. data/mod/machines/file/all_style_machine_output/file.css +1 -1
  140. data/mod/machines/lib/javascript/wagn.js.coffee +29 -18
  141. data/mod/machines/lib/javascript/wagn_layout.js.coffee +7 -3
  142. data/mod/machines/lib/stylesheets/style_cards.scss +10 -10
  143. data/mod/machines/set/abstract/machine.rb +5 -28
  144. data/mod/machines/set/abstract/script.rb +7 -4
  145. data/mod/machines/set/all/reset_machines.rb +1 -1
  146. data/mod/machines/set/self/script_jquery_helper.rb +2 -2
  147. data/mod/machines/set/self/script_slot.rb +1 -1
  148. data/mod/machines/set/type/coffee_script.rb +3 -2
  149. data/mod/machines/set/type/css.rb +7 -3
  150. data/mod/machines/set/type/scss.rb +7 -1
  151. data/mod/machines/spec/set/type/coffeescript_spec.rb +1 -1
  152. data/mod/machines/spec/set/type/javascript_spec.rb +1 -1
  153. data/mod/machines/spec/set/type/scss_spec.rb +3 -2
  154. data/mod/machines/spec/set/type/skin_spec.rb +1 -1
  155. data/mod/machines/spec/shared_examples/machine.rb +5 -3
  156. data/mod/machines/spec/shared_examples/machine_input.rb +1 -0
  157. data/mod/notifications/format/email_html_format.rb +1 -0
  158. data/mod/notifications/set/all/follow.rb +1 -1
  159. data/mod/notifications/set/all/observer.rb +1 -1
  160. data/mod/notifications/set/all/send_notifications.rb +2 -2
  161. data/mod/notifications/set/self/follow_defaults.rb +3 -8
  162. data/mod/notifications/set/type/email_template/email_config.rb +2 -2
  163. data/mod/notifications/set/type_plus_right/user/follow.rb +2 -2
  164. data/mod/notifications/spec/set/all/follow_spec.rb +7 -0
  165. data/mod/notifications/spec/set/all/notify_spec.rb +3 -0
  166. data/mod/notifications/spec/set/all/observer_spec.rb +1 -1
  167. data/mod/notifications/spec/set/right/followers_spec.rb +1 -0
  168. data/mod/pointer/set/abstract/00_paging_params.rb +11 -0
  169. data/mod/pointer/set/abstract/{00_paging.rb → 01_paging.rb} +10 -6
  170. data/mod/pointer/set/abstract/{00_paging → 01_paging}/paging_links.rb +0 -0
  171. data/mod/pointer/set/abstract/{01_pointer.rb → 02_pointer.rb} +26 -5
  172. data/mod/pointer/set/abstract/{01_pointer → 02_pointer}/edit.rb +3 -5
  173. data/mod/pointer/set/self/input_options.rb +12 -0
  174. data/mod/pointer/spec/set/self/input_options_spec.rb +8 -0
  175. data/mod/pointer/spec/set/type/pointer_spec.rb +3 -2
  176. data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +1 -1
  177. data/mod/prosemirror_editor/set/self/script_prosemirror.rb +1 -0
  178. data/mod/settings/lib/card/setting.rb +1 -2
  179. data/mod/settings/set/abstract/permission.rb +1 -1
  180. data/mod/settings/set/self/add_help.rb +1 -1
  181. data/mod/settings/set/self/autoname.rb +1 -1
  182. data/mod/settings/set/self/csv_structure.rb +2 -0
  183. data/mod/settings/set/self/help.rb +1 -1
  184. data/mod/settings/set/self/input.rb +1 -2
  185. data/mod/settings/set/self/options.rb +2 -2
  186. data/mod/settings/set/self/options_label.rb +2 -2
  187. data/mod/settings/set/type/setting.rb +1 -1
  188. data/mod/settings/spec/set/right/script_spec.rb +1 -1
  189. data/mod/settings/spec/set/right/style_spec.rb +1 -1
  190. data/mod/solid_cache/set/abstract/solid_cache.rb +5 -3
  191. data/mod/solid_cache/spec/set/abstract/solid_cache_spec.rb +4 -3
  192. data/mod/standard/set/abstract/01_search_params.rb +4 -3
  193. data/mod/standard/set/abstract/search.rb +2 -1
  194. data/mod/standard/set/abstract/toolbar_split_button.rb +22 -0
  195. data/mod/standard/set/all/links.rb +3 -3
  196. data/mod/standard/set/all/rich_html/classy.rb +37 -0
  197. data/mod/standard/set/all/rich_html/editing.rb +6 -2
  198. data/mod/standard/set/all/rich_html/editor.rb +50 -0
  199. data/mod/standard/set/all/rich_html/form.rb +19 -12
  200. data/mod/standard/set/all/rich_html/form_elements.rb +2 -2
  201. data/mod/standard/set/all/rich_html/formgroup.rb +2 -1
  202. data/mod/standard/set/all/rich_html/header.rb +2 -27
  203. data/mod/standard/set/all/rich_html/menu.rb +1 -1
  204. data/mod/standard/set/all/rich_html/new.rb +5 -1
  205. data/mod/standard/set/all/rich_html/toolbar.rb +15 -60
  206. data/mod/standard/set/all/rich_html/wrapper.rb +6 -3
  207. data/mod/standard/set/right/when_created.rb +2 -2
  208. data/mod/standard/set/rstar/rules_editor.rb +10 -7
  209. data/mod/standard/set/self/activity_toolbar_button.rb +14 -0
  210. data/mod/standard/set/self/recent.rb +7 -2
  211. data/mod/standard/set/self/rules_toolbar_button.rb +42 -0
  212. data/mod/standard/set/self/search.rb +19 -6
  213. data/mod/standard/set/type/basic.rb +6 -6
  214. data/mod/standard/set/type/cardtype.rb +7 -3
  215. data/mod/standard/set/type/date.rb +2 -4
  216. data/mod/standard/set/type/layout_type.rb +1 -0
  217. data/mod/standard/set/type/list.rb +1 -1
  218. data/mod/standard/set/type/listed_by.rb +1 -2
  219. data/mod/standard/set/type/number.rb +4 -2
  220. data/mod/standard/set/type/phrase.rb +4 -2
  221. data/mod/standard/set/type/search_type.rb +11 -3
  222. data/mod/standard/set/type/set.rb +8 -8
  223. data/mod/standard/set/type/toggle.rb +1 -3
  224. data/mod/standard/set/type/uri.rb +6 -2
  225. data/mod/standard/spec/chunk/include_spec.rb +3 -2
  226. data/mod/standard/spec/chunk/query_reference_spec.rb +2 -2
  227. data/mod/standard/spec/set/all/history_spec.rb +1 -0
  228. data/mod/standard/spec/set/all/links_spec.rb +1 -0
  229. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +2 -0
  230. data/mod/standard/spec/set/self/activity_toolbar_button_spec.rb +22 -0
  231. data/mod/standard/spec/set/type/email_template/email_config_spec.rb +10 -8
  232. data/mod/standard/spec/set/type/email_template_spec.rb +1 -0
  233. data/mod/standard/spec/set/type/list_spec.rb +2 -0
  234. data/mod/standard/spec/set/type/listed_by_spec.rb +5 -0
  235. data/mod/standard/spec/set/type/search_type_spec.rb +1 -1
  236. data/mod/standard/spec/set/type/toggle_spec.rb +1 -2
  237. data/mod/standard/spec/set/type/uri_spec.rb +0 -1
  238. data/mod/tinymce_editor/db/migrate_cards/20160804112560_add_tinymce_cards.rb +3 -1
  239. data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
  240. data/mod/tinymce_editor/set/self/script_tinymce.rb +1 -0
  241. data/mod/twitter/db/migrate_cards/20170305112346_add_twitter_cards.rb +1 -1
  242. data/mod/twitter/set/type/twitter_template.rb +1 -1
  243. data/spec/lib/card/format_spec.rb +26 -7
  244. data/spec/lib/card/loader_spec.rb +96 -35
  245. data/spec/lib/card/query_spec.rb +0 -1
  246. data/spec/support/card_spec_loader.rb +1 -0
  247. data/spec/support/helper/card_helper.rb +0 -36
  248. data/spec/support/helper/set_helper.rb +80 -0
  249. data/spec/support/matchers.rb +74 -0
  250. data/tmpsets/set/mod001-core/all/actify.rb +5 -6
  251. data/tmpsets/set/mod001-core/all/fetch.rb +14 -12
  252. data/tmpsets/set/mod001-core/all/name.rb +1 -1
  253. data/tmpsets/set/mod001-core/all/permissions.rb +12 -22
  254. data/tmpsets/set/mod001-core/all/tracked_attributes.rb +76 -0
  255. data/tmpsets/set/mod001-core/all/utils.rb +40 -3
  256. data/tmpsets/set/mod002-history/all/history.rb +1 -2
  257. data/tmpsets/set/mod008-solid_cache/abstract/solid_cache.rb +1 -1
  258. data/tmpsets/set/mod013-carrierwave/abstract/attachment.rb +282 -0
  259. data/tmpsets/set/mod013-carrierwave/type/file.rb +155 -0
  260. data/tmpsets/set/mod013-carrierwave/type/image.rb +96 -0
  261. data/tmpsets/set/mod014-admin/self/admin.rb +113 -0
  262. data/tmpsets/set/mod014-admin/self/admin_info.rb +110 -0
  263. data/tmpsets/set/mod014-admin/self/version.rb +15 -0
  264. data/tmpsets/set/mod015-developer/all/event_viz.rb +59 -0
  265. data/tmpsets/set/mod015-developer/all/view_viz.rb +30 -0
  266. data/tmpsets/set/mod015-developer/right/debug.rb +96 -0
  267. metadata +52 -22
@@ -1,3 +1,8 @@
1
+ include_set Abstract::WqlSearch
2
+
3
+ def wql_hash
4
+ { type_id: id }
5
+ end
1
6
 
2
7
  format :html do
3
8
  view :type do |args|
@@ -31,7 +36,7 @@ format :html do
31
36
  card_url _render_add_path(args)
32
37
  end
33
38
 
34
- view :add_path do |args|
39
+ view :add_path do |_args|
35
40
  path_args = {}
36
41
  if voo.params
37
42
  context = ((@parent && @parent.card) || card).name
@@ -62,8 +67,7 @@ def default_follow_set_card
62
67
  end
63
68
 
64
69
  def cards_of_type_exist?
65
- # FIXME: faster test than counting all of type?
66
- !new_card? && Auth.as_bot { Card.count_by_wql type_id: id } > 0
70
+ !new_card? && Card.where(trash: false, type_id: id).exists?
67
71
  end
68
72
 
69
73
  def create_ok?
@@ -1,8 +1,6 @@
1
1
 
2
2
  format :html do
3
- # what is this for? Can't you just use TYPE-date and editor
4
- # to match this cas, no special view needed?
5
- view :editor do
6
- text_field :content, class: "date-editor"
3
+ def editor
4
+ :calendar
7
5
  end
8
6
  end
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  include_set Type::Html
3
4
 
4
5
  format :html do
@@ -58,7 +58,7 @@ event :update_related_listed_by_card_on_content_update, :finalize,
58
58
  end
59
59
 
60
60
  event :update_related_listed_by_card_on_name_and_type_changes, :finalize,
61
- on: :update, changed: [:name, :type_id] do
61
+ on: :update, changed: %i[name type_id] do
62
62
  update_all_items
63
63
  end
64
64
 
@@ -60,8 +60,7 @@ end
60
60
  def listed_by
61
61
  Card.search(
62
62
  { type: "list", right: trunk.type_name,
63
- left: { type: cardname.tag }, refer_to: cardname.trunk, return: :name
64
- }, "listed_by" # better wql comment would be...better
63
+ left: { type: cardname.tag }, refer_to: cardname.trunk, return: :name }, "listed_by" # better wql comment would be...better
65
64
  )
66
65
  end
67
66
 
@@ -1,6 +1,8 @@
1
1
 
2
- view :editor do
3
- text_field :content, class: "card-content"
2
+ format :html do
3
+ def editor
4
+ :text_field
5
+ end
4
6
  end
5
7
 
6
8
  event :validate_number, :validate do
@@ -1,3 +1,5 @@
1
- view :editor do
2
- text_field :content, class: "card-content"
1
+ format :html do
2
+ def editor
3
+ :text_field
4
+ end
3
5
  end
@@ -1,4 +1,3 @@
1
- include_set Abstract::AceEditor
2
1
  include_set Abstract::WqlSearch
3
2
 
4
3
  format do
@@ -53,6 +52,11 @@ format :rss do
53
52
  end
54
53
 
55
54
  format :html do
55
+ view :closed do
56
+ voo.hide :closed_content
57
+ super()
58
+ end
59
+
56
60
  view :closed_content, cache: :never do
57
61
  if @depth > max_depth
58
62
  "..."
@@ -64,7 +68,11 @@ format :html do
64
68
  end
65
69
  end
66
70
 
67
- def default_editor_args args
68
- args[:ace_mode] = "json"
71
+ def editor
72
+ :ace_editor
73
+ end
74
+
75
+ def ace_mode
76
+ :json
69
77
  end
70
78
  end
@@ -3,9 +3,9 @@ include_set Type::SearchType
3
3
 
4
4
  format :html do
5
5
  COMMON_RULE_SETTINGS =
6
- [:create, :read, :update, :delete, :structure, :default, :style].freeze
6
+ %i[create read update delete structure default style].freeze
7
7
 
8
- view :core, cache: :never do |args|
8
+ view :core, cache: :never do
9
9
  voo.show :set_label, :rule_navbar
10
10
  voo.hide :set_navbar
11
11
  rule_view = params[:rule_view] || :common_rules
@@ -59,10 +59,10 @@ format :html do
59
59
 
60
60
  view :field_related_rules do
61
61
  with_label_and_navbars :field_related_rules do
62
- field_settings = [:default, :help, :structure]
62
+ field_settings = %i[default help structure]
63
63
  if card.type_id == PointerID
64
64
  # FIXME: should be done with override in pointer set module
65
- field_settings += [:input, :options, :options_label]
65
+ field_settings += %i[input options options_label]
66
66
  end
67
67
  settings = card.visible_setting_codenames & field_settings
68
68
  rules_table settings
@@ -127,7 +127,7 @@ format :html do
127
127
 
128
128
  def rules_table_headings
129
129
  wrap_with :tr, class: "rule-group" do
130
- wrap_each_with :th, %w(Trait Content Set), class: "rule-heading"
130
+ wrap_each_with :th, %w[Trait Content Set], class: "rule-heading"
131
131
  end
132
132
  end
133
133
 
@@ -180,7 +180,7 @@ format :html do
180
180
  ""
181
181
  end
182
182
 
183
- view :set_navbar do |args|
183
+ view :set_navbar do |_args|
184
184
  id = "rule-navbar-#{card.cardname.safe_key}-#{voo.home_view}"
185
185
  related_sets = card.related_sets(true)
186
186
  return "" if related_sets.size <= 1
@@ -329,8 +329,8 @@ end
329
329
 
330
330
  def visible_setting_codenames
331
331
  @visible_settings ||=
332
- Card::Setting.groups.values.flatten.compact.reject do |setting|
333
- !setting.applies_to_cardtype(prototype.type_id)
332
+ Card::Setting.groups.values.flatten.compact.select do |setting|
333
+ setting.applies_to_cardtype(prototype.type_id)
334
334
  end.map(&:codename)
335
335
  end
336
336
 
@@ -2,7 +2,7 @@ def checked?
2
2
  content == "1"
3
3
  end
4
4
 
5
- view :core do |_args|
5
+ view :core do
6
6
  case card.raw_content.to_i
7
7
  when 1 then "yes"
8
8
  when 0 then "no"
@@ -28,5 +28,3 @@ format :html do
28
28
  label :content, card.cardname.tag
29
29
  end
30
30
  end
31
-
32
-
@@ -1,6 +1,4 @@
1
1
  format do
2
- include Phrase::Format
3
-
4
2
  view :core do
5
3
  link_to_resource _render_raw, render_title
6
4
  end
@@ -9,3 +7,9 @@ format do
9
7
  link_to_resource _render_raw
10
8
  end
11
9
  end
10
+
11
+ format :html do
12
+ def editor
13
+ :text_field
14
+ end
15
+ end
@@ -11,6 +11,7 @@ describe Card::Content::Chunk::Nest, "Inclusion" do
11
11
  end
12
12
  let(:options) { instance.options }
13
13
  let(:name) { instance.name }
14
+
14
15
  it "ignores invisible comments" do
15
16
  expect(render_content("{{## now you see nothing}}")).to eq("")
16
17
  end
@@ -94,9 +95,9 @@ describe Card::Content::Chunk::Nest, "Inclusion" do
94
95
  expect { |b| instance.send(:each_option, "", &b) }.not_to yield_control
95
96
  expect { |b| instance.send(:each_option, nil, &b) }.not_to yield_control
96
97
  expect { |b| instance.send(:each_option, "a:b;c:4", &b) }
97
- .to yield_successive_args(%w(a b), %w(c 4))
98
+ .to yield_successive_args(%w[a b], %w[c 4])
98
99
  expect { |b| instance.send(:each_option, "d:b;e:4; ", &b) }
99
- .to yield_successive_args(%w(d b), %w(e 4))
100
+ .to yield_successive_args(%w[d b], %w[e 4])
100
101
  end
101
102
  end
102
103
 
@@ -6,13 +6,13 @@ describe Card::Content::Chunk::QueryReference, "QueryReference" do
6
6
  @class = Card::Content::Chunk::QueryReference
7
7
  end
8
8
 
9
+ subject { query_refs.first.name }
10
+
9
11
  let :query_refs do
10
12
  content = Card::Content.new @content, Card.new(type: "Search")
11
13
  content.find_chunks(Card::Content::Chunk::QueryReference)
12
14
  end
13
15
 
14
- subject { query_refs.first.name }
15
-
16
16
  it "handles simple search" do
17
17
  @content = '{"name":"Waldo"}'
18
18
  is_expected.to eq "Waldo"
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  describe Card::Set::All::History do
3
4
  context "history view" do
4
5
  # before do
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  describe Card::Set::All::Links do
3
4
  require "card"
4
5
  describe "#link_to_resource" do
@@ -3,6 +3,7 @@ describe Card::Set::All::RichHtml::Toolbar do
3
3
  subject do
4
4
  render_content "{{A|edit}}"
5
5
  end
6
+
6
7
  it "renders toolbar" do
7
8
  is_expected.to have_tag "div", with: { class: "SELF-a edit-view" } do
8
9
  with_tag "nav", with: { class: "toolbar" }
@@ -13,6 +14,7 @@ describe Card::Set::All::RichHtml::Toolbar do
13
14
  subject do
14
15
  render_content "{{A|edit; hide: toolbar}}"
15
16
  end
17
+
16
18
  it "hides toolbar" do
17
19
  is_expected.to have_tag "div", with: { class: "SELF-a edit-view" } do
18
20
  without_tag "nav", with: { class: "toolbar" }
@@ -0,0 +1,22 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ describe Card::Set::Self::ActivityToolbarButton do
4
+ subject do
5
+ render_view :edit, name: "A"
6
+ end
7
+
8
+ it "is rendered in toolbar" do
9
+ is_expected.to include "activity"
10
+ end
11
+
12
+ it "can be hidden with read rule" do
13
+ Card::Auth.as_bot do
14
+ ensure_card %i[activity_toolbar_button self read],
15
+ content: "Administrator"
16
+ end
17
+
18
+ with_user "Joe User" do
19
+ is_expected.not_to include "activity"
20
+ end
21
+ end
22
+ end
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  require "card/mailer"
3
4
 
4
5
  describe Card::Set::Type::EmailTemplate::EmailConfig do
@@ -143,6 +144,7 @@ describe Card::Set::Type::EmailTemplate::EmailConfig do
143
144
 
144
145
  context "with context card" do
145
146
  subject(:config) { mailconfig(context: context_card) }
147
+
146
148
  let(:context_card) do
147
149
  file = File.new(File.join(FIXTURES_PATH, "mao2.jpg"))
148
150
  Card.create(
@@ -202,14 +204,14 @@ describe Card::Set::Type::EmailTemplate::EmailConfig do
202
204
  end
203
205
 
204
206
  it "handles inline image nests in html message" do
205
- update_field "*html message", content: "Triggered by {{:logo|inline}}"
206
- mail = email.format.render_mail context: context_card
207
- expect(mail.parts[0].mime_type).to eq "image/png"
208
- url = mail.parts[0].url
209
- expect(mail.parts[2].mime_type).to eq "text/html"
210
- expect(mail.parts[2].body.raw_source).to include('<img src="cid:')
211
- expect(mail.parts[2].body.raw_source).to include("<img src=\"#{url}\"")
212
- end
207
+ update_field "*html message", content: "Triggered by {{:logo|inline}}"
208
+ mail = email.format.render_mail context: context_card
209
+ expect(mail.parts[0].mime_type).to eq "image/png"
210
+ url = mail.parts[0].url
211
+ expect(mail.parts[2].mime_type).to eq "text/html"
212
+ expect(mail.parts[2].body.raw_source).to include('<img src="cid:')
213
+ expect(mail.parts[2].body.raw_source).to include("<img src=\"#{url}\"")
214
+ end
213
215
 
214
216
  it "handles image nests in html message in default view" do
215
217
  update_field "*html message", content: "Triggered by {{:logo|core}}"
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  require "card/mailer"
3
4
 
4
5
  describe Card::Set::Type::EmailTemplate do
@@ -2,6 +2,7 @@
2
2
 
3
3
  describe Card::Set::Type::List do
4
4
  subject { Card.fetch("Parry Hotter+authors").item_names.sort }
5
+
5
6
  before do
6
7
  Card::Auth.as_bot do
7
8
  Card.create! name: "Stam Broker+books", type: "listed by"
@@ -60,6 +61,7 @@ describe Card::Set::Type::List do
60
61
  subject do
61
62
  Card.fetch("Parry Moppins+authors").item_names.sort
62
63
  end
64
+
63
65
  it { is_expected.to eq ["Darles Chickens", "Stam Broker"] }
64
66
  end
65
67
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  describe Card::Set::Type::ListedBy do
4
4
  let(:listed_by) { Card.fetch("Darles Chickens+books").item_names.sort }
5
+
5
6
  before do
6
7
  Card::Auth.as_bot do
7
8
  Card.create!(
@@ -28,6 +29,7 @@ describe Card::Set::Type::ListedBy do
28
29
  "Parry Hotter" and "50 grades of shy"' do
29
30
  describe "Darles Chickens+books" do
30
31
  subject { listed_by }
32
+
31
33
  it { is_expected.to eq ["50 grades of shy", "Parry Hotter"] }
32
34
 
33
35
  it "is recorded in the reference table" do
@@ -122,6 +124,7 @@ describe Card::Set::Type::ListedBy do
122
124
  )
123
125
  end
124
126
  subject { Card.fetch("Darles Eggs+books").item_names.sort }
127
+
125
128
  it { is_expected.to eq ["50 grades of shy", "Parry Hotter"] }
126
129
  end
127
130
  context "when the cartype of Darles Chickens changed" do
@@ -133,6 +136,7 @@ describe Card::Set::Type::ListedBy do
133
136
  end
134
137
  context "when the name of Darles Chickens+books changed" do
135
138
  subject { Card.fetch("Darles Chickens+authors").item_names.sort }
139
+
136
140
  before do
137
141
  Card["Darles Chickens+books"].update_attributes!(
138
142
  name: "Darles Chickens+authors"
@@ -145,6 +149,7 @@ describe Card::Set::Type::ListedBy do
145
149
  Card["book"].update_attributes! name: "literature"
146
150
  end
147
151
  subject { Card.fetch("Darles Chickens+literature").item_names.sort }
152
+
148
153
  it { is_expected.to eq ["50 grades of shy", "Parry Hotter"] }
149
154
  end
150
155
  context "when the name of the cardtype authors changed" do
@@ -89,7 +89,7 @@ describe Card::Set::Type::SearchType do
89
89
  subject do
90
90
  Card::Env.params[:item] = :name_with_fields
91
91
  render_card_with_args :core, { name: "Book+*type+by name" },
92
- { format: :csv }, items: { view: :name_with_fields }
92
+ { format: :csv }, items: { view: :name_with_fields }
93
93
  end
94
94
 
95
95
  it "has title row item name and field names" do
@@ -13,6 +13,7 @@ describe Card::Set::Type::Toggle do
13
13
 
14
14
  describe "view :labeled_editor" do
15
15
  subject { render_view :labeled_editor, type: :toggle, name: "A+toggle" }
16
+
16
17
  it "has checkbox label" do
17
18
  is_expected.to have_tag("label", with: { for: "card_content" }) do
18
19
  with_text "toggle"
@@ -20,5 +21,3 @@ describe Card::Set::Type::Toggle do
20
21
  end
21
22
  end
22
23
  end
23
-
24
-
@@ -21,7 +21,6 @@ describe Card::Set::Type::Uri do
21
21
  card = Card.create(type: "URI", name: "A URI card",
22
22
  content: "http://wagn.org/Home")
23
23
 
24
-
25
24
  assert_view_select(
26
25
  card.format.render("core", title: "My Title"),
27
26
  'a[class="external-link"][href="http://wagn.org/Home"]'
@@ -25,13 +25,15 @@ class AddTinymceCards < Card::Migration
25
25
  ensure_card name: "*TinyMCE", type_id: Card::PlainTextID,
26
26
  codename: "tiny_mce",
27
27
  content: TINYMCE_CONFIG
28
+ Card::Cache.reset_all
28
29
  create_or_update(
29
30
  name: "*TinyMCE+*self+*help",
30
31
  content: "Configure [[http://tinymce.com|TinyMCE]], Wagn's default "\
31
32
  "[[http://en.wikipedia.org/wiki/Wysiwyg|wysiwyg]] editor. "\
32
33
  "[[http://wagn.org/TinyMCE|more]]"
33
34
  )
34
- ensure_card name: "script: tinymce", type_id: Card::JavaScriptID,
35
+ ensure_card name: "script: tinymce",
36
+ type_id: Card::JavaScriptID,
35
37
  codename: "script_tinymce"
36
38
  ensure_card name: "script: tinymce config",
37
39
  type_id: Card::CoffeeScriptID,
@@ -1,5 +1,5 @@
1
1
  format :html do
2
- view :editor do
2
+ def tinymce_editor_input
3
3
  text_area :content, rows: 3, class: "tinymce-textarea card-content",
4
4
  id: unique_id
5
5
  end