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
@@ -21,12 +21,12 @@ format :html do
21
21
  end
22
22
 
23
23
  FIELD_HELPERS =
24
- %w(
24
+ %w[
25
25
  hidden_field color_field date_field datetime_field datetime_local_field
26
26
  email_field month_field number_field password_field phone_field
27
27
  range_field search_field telephone_field text_area text_field time_field
28
28
  url_field week_field file_field label check_box radio_button
29
- ).freeze
29
+ ].freeze
30
30
 
31
31
  FIELD_HELPERS.each do |method_name|
32
32
  define_method(method_name) do |*args|
@@ -10,7 +10,7 @@ format :html do
10
10
  label = formgroup_label opts[:editor], title
11
11
  editor_body = editor_wrap opts[:editor], &block
12
12
  help_text = formgroup_help_text opts[:help]
13
- "#{label}<div>#{editor_body} #{help_text}</div>"
13
+ "#{label}<div>#{help_text} #{editor_body}</div>"
14
14
  end
15
15
 
16
16
  def formgroup_label editor_type, title
@@ -27,6 +27,7 @@ format :html do
27
27
  end
28
28
 
29
29
  def formgroup_help_text text=nil
30
+ return "" if text == false
30
31
  class_up "help-text", "help-block"
31
32
  voo.help = text if voo && text.to_s != "true"
32
33
  _optional_render_help
@@ -1,29 +1,4 @@
1
1
  format :html do
2
- # TODO: find these a better home.
3
- def class_up klass, classier, force=false
4
- key = klass.to_s
5
- return if !force && class_list[key]
6
- class_list[key] = classier.to_s
7
- end
8
-
9
- # don't use in the given block the additional class that
10
- # was added to `klass`
11
- def without_upped_class klass
12
- tmp_class = class_list.delete klass
13
- result = yield tmp_class
14
- class_list[klass] = tmp_class
15
- result
16
- end
17
-
18
- def class_list
19
- @class_list ||= {}
20
- end
21
-
22
- def classy *classes
23
- classes = Array.wrap(classes).flatten
24
- [classes, class_list[classes.first]].flatten.compact.join " "
25
- end
26
-
27
2
  view :header do
28
3
  voo.hide :toggle, :toolbar
29
4
  main_header + _optional_render_toolbar
@@ -64,9 +39,9 @@ format :html do
64
39
 
65
40
  def toggle_verb_adjective_direction
66
41
  if @toggle_mode == :close
67
- %w(open open expand)
42
+ %w[open open expand]
68
43
  else
69
- %w(close closed collapse-down)
44
+ %w[close closed collapse-down]
70
45
  end
71
46
  end
72
47
 
@@ -61,7 +61,7 @@ format :html do
61
61
  end
62
62
 
63
63
  def menu_item_list link_opts={}
64
- [:edit, :discuss, :follow, :page, :rules, :account, :more].map do |item|
64
+ %i[edit discuss follow page rules account more].map do |item|
65
65
  next unless send "show_menu_item_#{item}?"
66
66
  send "menu_#{item}_link", link_opts
67
67
  end.compact
@@ -2,7 +2,7 @@ format :html do
2
2
  view :new, perms: :create, tags: :unknown_ok, cache: :never do
3
3
  voo.title ||= new_view_title if new_name_prompt?
4
4
  voo.show :help
5
- frame_and_form :create, "main-success" => "REDIRECT" do
5
+ frame_and_form :create, new_form_opts do
6
6
  [
7
7
  new_view_hidden,
8
8
  new_view_name,
@@ -13,6 +13,10 @@ format :html do
13
13
  end
14
14
  end
15
15
 
16
+ def new_form_opts
17
+ { "main-success" => "REDIRECT" }
18
+ end
19
+
16
20
  def new_view_title
17
21
  output(
18
22
  "New",
@@ -1,8 +1,8 @@
1
- format :html do
1
+ include_set Abstract::ToolbarSplitButton
2
2
 
3
+ format :html do
3
4
  TOOLBAR_TITLE = {
4
5
  edit: "content", edit_name: "name", edit_type: "type",
5
-
6
6
  edit_structure: "structure", edit_nests: "nests", history: "history",
7
7
  common_rules: "common", recent_rules: "recent", grouped_rules: "all",
8
8
  edit_nest_rules: "nests"
@@ -59,9 +59,9 @@ format :html do
59
59
  def toolbar_split_buttons
60
60
  wrap_with :form, class: "pull-left navbar-text" do
61
61
  [
62
- (account_split_button if card.accountable?),
63
- activity_split_button,
64
- rules_split_button,
62
+ account_split_button,
63
+ toolbar_button_card(:activity),
64
+ toolbar_button_card(:rules),
65
65
  edit_split_button
66
66
  ]
67
67
  end
@@ -116,50 +116,6 @@ format :html do
116
116
  end
117
117
  end
118
118
 
119
- def activity_split_button
120
- toolbar_split_button "activity", view: :history, icon: :time do
121
- {
122
- history: (_render_history_link if card.history?),
123
- discussion: link_to_related(:discussion, "discuss"),
124
- follow: _render_follow_link,
125
- editors: link_to_related(:editors, "editors")
126
- }
127
- end
128
- end
129
-
130
- def rules_split_button
131
- button_hash = {
132
- common_rules: edit_rules_link("common", :common_rules),
133
- grouped_rules: edit_rules_link("by group", :grouped_rules),
134
- all_rules: edit_rules_link("by name", :all_rules)
135
- }
136
- recently_edited_rules_link button_hash
137
- nest_rules_link button_hash
138
- toolbar_split_button("rules", view: :edit_rules, icon: :list) { button_hash }
139
- end
140
-
141
- def nest_rules_link button_hash
142
- return # FIXME: remove when reinstating edit_nest_rules
143
- return unless nested_fields.present?
144
- button_hash[:separator] = separator
145
- button_hash[:edit_nest_rules] = edit_nest_rules_link "nests"
146
- end
147
-
148
- def recently_edited_rules_link button_hash
149
- return unless recently_edited_settings?
150
- button_hash[:recent_rules] = edit_rules_link "recent", :recent_rules
151
- end
152
-
153
- def edit_nest_rules_link text
154
- link_to_view :edit_nest_rules, text,
155
- path: { rule_view: :field_related_rules }
156
- end
157
-
158
- def edit_rules_link text, rule_view
159
- link_to_view :edit_rules, text,
160
- path: { rule_view: rule_view }
161
- end
162
-
163
119
  def edit_split_button
164
120
  toolbar_split_button "edit", view: :edit, icon: :edit do
165
121
  {
@@ -177,6 +133,7 @@ format :html do
177
133
  end
178
134
 
179
135
  def account_split_button
136
+ return "" unless card.accountable?
180
137
  toolbar_split_button "account", related: :account, icon: :user do
181
138
  {
182
139
  account: link_to_related(:account, "details", path: { view: :edit }),
@@ -188,21 +145,18 @@ format :html do
188
145
  end
189
146
  end
190
147
 
191
- def toolbar_split_button name, button_link_opts
192
- status = active_toolbar_button == name ? "active" : ""
193
- html_class = "visible-md visible-lg pull-right"
194
- icon = button_link_opts.delete(:icon)
195
- name_content = "&nbsp;#{name}"
196
- name = icon ? glyphicon(icon) : ""
197
- name += content_tag(:span, name_content.html_safe, class: html_class)
198
- button_link = button_link name, button_link_opts.merge(class: status)
199
- split_button(button_link, active_toolbar_item) { yield }
148
+ def toolbar_button_card name
149
+ button_codename = "#{name}_toolbar_button".to_sym
150
+ return "" unless button_card = Card[button_codename]
151
+ with_nest_mode :normal do
152
+ nest button_card, view: :core
153
+ end
200
154
  end
201
155
 
202
156
  def related_codename related_card
203
157
  return nil unless related_card
204
158
  tag_card = Card.quick_fetch related_card.cardname.right
205
- tag_card && tag_card.codename.to_sym
159
+ tag_card && tag_card.codename && tag_card.codename.to_sym
206
160
  end
207
161
 
208
162
  def close_link extra_class, opts={}
@@ -248,7 +202,8 @@ format :html do
248
202
  ["references in", "log-in", "*referred_to_by"]
249
203
  ].map do |title, icon, tag|
250
204
  menu_item " #{title}", icon, related: tag,
251
- path: { slot: { show: :toolbar } }
205
+ path: { slot: { show: :toolbar,
206
+ hide: :menu } }
252
207
  end
253
208
  end
254
209
  end
@@ -100,9 +100,9 @@ format :html do
100
100
  parent && parent.voo.ok_view == :related
101
101
  end
102
102
 
103
- def standard_frame
103
+ def standard_frame slot=true
104
104
  voo.hide :horizontal_menu, :help
105
- wrap do
105
+ wrap slot do
106
106
  [
107
107
  _optional_render_menu,
108
108
  panel do
@@ -119,10 +119,13 @@ format :html do
119
119
 
120
120
  def frame_help
121
121
  # TODO: address these args
122
- _optional_render :help, help_class: "alert alert-info"
122
+ with_class_up "help-text", "alert alert-info" do
123
+ _optional_render :help
124
+ end
123
125
  end
124
126
 
125
127
  def frame_and_form action, form_opts={}
128
+ form_opts ||= {}
126
129
  frame do
127
130
  card_form action, form_opts do
128
131
  output yield
@@ -1,7 +1,7 @@
1
1
  view :raw do |_args|
2
2
  # .strftime('%A, %B %d, %Y %I:%M %p %Z')
3
- card.left.new_card? ? "" : I18n.localize(card.left.created_at,
4
- format: :card_dayofwk_min_tz)
3
+ return "" if !(left = card.left) || left.new_card?
4
+ I18n.localize(left.created_at, format: :card_dayofwk_min_tz)
5
5
  end
6
6
 
7
7
  view :core, :raw
@@ -14,7 +14,7 @@ format :html do
14
14
  end
15
15
 
16
16
  def open_rule_wrap rule_view
17
- rule_view_class = rule_view.to_s.tr '_', '-'
17
+ rule_view_class = rule_view.to_s.tr "_", "-"
18
18
  wrap_with :tr, class: "card-slot open-rule #{rule_view_class}" do
19
19
  wrap_with(:td, class: "rule-cell", colspan: 3) { yield }
20
20
  end
@@ -47,7 +47,10 @@ format :html do
47
47
  return "No Current Rule" if card.new_card?
48
48
 
49
49
  voo.items[:view] ||= :link
50
- show_rule_set(card.rule_set) + _render_core
50
+ output [
51
+ show_rule_set(card.rule_set),
52
+ _render_core
53
+ ]
51
54
  end
52
55
 
53
56
  def show_rule_set set
@@ -60,7 +63,7 @@ format :html do
60
63
  return "not a rule" unless card.is_rule?
61
64
  rule_card = find_existing_rule_card
62
65
  wrap_closed_rule rule_card do
63
- [:setting, :content, :set].map do |cell|
66
+ %i[setting content set].map do |cell|
64
67
  send "closed_rule_#{cell}_cell", rule_card
65
68
  end
66
69
  end
@@ -151,7 +154,7 @@ format :html do
151
154
 
152
155
  card_form action_args, class: "card-rule-form" do |_form|
153
156
  [hidden_tags(success: @edit_rule_success),
154
- editor,
157
+ rule_editor,
155
158
  edit_rule_buttons].join
156
159
  end
157
160
  end
@@ -202,7 +205,7 @@ format :html do
202
205
  href: path(view: cancel_view, success: false)
203
206
  end
204
207
 
205
- def editor
208
+ def rule_editor
206
209
  wrap_with(:div, class: "card-editor") do
207
210
  [rules_type_formgroup,
208
211
  rule_content_formgroup,
@@ -270,7 +273,7 @@ format :html do
270
273
  end
271
274
 
272
275
  def narrower_rule_warning narrower_rules, state, set_name
273
- return unless state.in? [:current, :overwritten]
276
+ return unless state.in? %i[current overwritten]
274
277
  narrower_rules << Card.fetch(set_name).uncapitalized_label
275
278
  return unless state == :overwritten
276
279
  narrower_rule_warning_message narrower_rules
@@ -349,7 +352,7 @@ format :html do
349
352
  end
350
353
 
351
354
  view :edit_single_rule, tags: :unknown_ok, cache: :never do
352
- frame() { render_edit_rule }
355
+ frame { render_edit_rule }
353
356
  end
354
357
 
355
358
  private
@@ -0,0 +1,14 @@
1
+ include_set Abstract::ToolbarSplitButton
2
+
3
+ format :html do
4
+ view :core do
5
+ subject.toolbar_split_button "activity", view: :history, icon: :time do
6
+ {
7
+ history: (subject._render_history_link if card.history?),
8
+ discussion: subject.link_to_related(:discussion, "discuss"),
9
+ follow: subject._render_follow_link,
10
+ editors: subject.link_to_related(:editors, "editors")
11
+ }
12
+ end
13
+ end
14
+ end
@@ -19,7 +19,6 @@ format :html do
19
19
  end
20
20
  end
21
21
 
22
-
23
22
  view :recent_acts, cache: :never do
24
23
  acts = Act.all_viewable.order(id: :desc)
25
24
  .page(page_from_params).per(ACTS_PER_PAGE)
@@ -29,7 +28,13 @@ format :html do
29
28
  def act_paging
30
29
  acts = Act.all_viewable.order(id: :desc).page(page_from_params).per(ACTS_PER_PAGE)
31
30
  wrap_with :span, class: "slotter" do
32
- paginate acts, remote: true, theme: 'twitter-bootstrap-3'
31
+ paginate acts, remote: true, theme: "twitter-bootstrap-3"
33
32
  end
34
33
  end
35
34
  end
35
+
36
+ format :rss do
37
+ def feed_item_description_view
38
+ :blank
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ include_set Abstract::ToolbarSplitButton
2
+
3
+ format :html do
4
+ view :core do
5
+ subject.toolbar_split_button("rules", view: :edit_rules, icon: :list) do
6
+ dropdown_items
7
+ end
8
+ end
9
+
10
+ def dropdown_items
11
+ button_hash = {
12
+ common_rules: edit_rules_link("common", :common_rules),
13
+ grouped_rules: edit_rules_link("by group", :grouped_rules),
14
+ all_rules: edit_rules_link("by name", :all_rules)
15
+ }
16
+ recently_edited_rules_link button_hash
17
+ nest_rules_link button_hash
18
+ button_hash
19
+ end
20
+
21
+ def nest_rules_link button_hash
22
+ return # FIXME: remove when reinstating edit_nest_rules
23
+ return unless nested_fields.present?
24
+ button_hash[:separator] = separator
25
+ button_hash[:edit_nest_rules] = edit_nest_rules_link "nests"
26
+ end
27
+
28
+ def recently_edited_rules_link button_hash
29
+ return unless recently_edited_settings?
30
+ button_hash[:recent_rules] = edit_rules_link "recent", :recent_rules
31
+ end
32
+
33
+ def edit_rules_link text, rule_view
34
+ subject.link_to_view :edit_rules, text,
35
+ path: { rule_view: rule_view }
36
+ end
37
+
38
+ def edit_nest_rules_link text
39
+ subject.link_to_view :edit_nest_rules, text,
40
+ path: { rule_view: :field_related_rules }
41
+ end
42
+ end
@@ -42,12 +42,25 @@ format :html do
42
42
  end
43
43
 
44
44
  view :title, cache: :never do
45
- vars = root.search_params[:vars]
46
- if vars && vars[:keyword]
47
- voo.title = %(Search results for: <span class="search-keyword">)\
48
- "#{vars[:keyword]}</span>"
49
- end
50
- super()
45
+ return super() unless (keyword = search_keyword) &&
46
+ (title = keyword_search_title(keyword))
47
+ voo.title = title
48
+ end
49
+
50
+ def keyword_search_title keyword
51
+ %(Search results for: <span class="search-keyword">#{keyword}</span>)
52
+ end
53
+
54
+ def search_keyword
55
+ (vars = search_vars) && vars[:keyword]
56
+ end
57
+
58
+ def search_vars
59
+ root.respond_to?(:search_params) ? root.search_params[:vars] : search_params[:vars]
60
+ end
61
+
62
+ def wql_search?
63
+ card.keyword_contains_wql? vars: search_vars
51
64
  end
52
65
  end
53
66
 
@@ -41,12 +41,12 @@ format :html do
41
41
 
42
42
  def make_table_of_contents_list items
43
43
  list = items.map do |i|
44
- if i.is_a?(Array)
45
- make_table_of_contents_list(i)
46
- else
47
- %(<li><a href="##{i[:uri]}"> #{i[:value]}</a></li>)
48
- end
49
- end.join("\n")
44
+ if i.is_a?(Array)
45
+ make_table_of_contents_list(i)
46
+ else
47
+ %(<li><a href="##{i[:uri]}"> #{i[:value]}</a></li>)
48
+ end
49
+ end.join("\n")
50
50
  "<ol>" + list + "</ol>"
51
51
  end
52
52
  end