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
@@ -14,8 +14,9 @@ format :rss do
14
14
  # FIXME: integrate this with common XML features when it is added
15
15
  view :feed, cache: :never do
16
16
  begin
17
- @xml.instruct! :xml, version: "1.0"
18
- @xml.rss version: "2.0" do
17
+ @xml.instruct! :xml, version: "1.0", standalone: "yes"
18
+ @xml.rss version: "2.0",
19
+ "xmlns:content" => "http://purl.org/rss/1.0/modules/content/" do
19
20
  @xml.channel do
20
21
  @xml.title render_feed_title
21
22
  @xml.description render_feed_description
@@ -39,8 +40,8 @@ format :rss do
39
40
  view :feed_item_list, cache: :never do
40
41
  raw_feed_items.each do |item|
41
42
  @xml.item do
42
- # FIXME: yuck.
43
- subformat(item).render_feed_item view_changes: (card.id == RecentID)
43
+ subformat(item).render(:feed_item,
44
+ description_view: feed_item_description_view)
44
45
  end
45
46
  end
46
47
  end
@@ -52,13 +53,26 @@ format :rss do
52
53
  view :feed_item, cache: :never do |args|
53
54
  @xml.title card.name
54
55
  add_name_context
55
- @xml.description render((args[:view_changes] ? :change : :open_content))
56
- @xml.pubDate card.revised_at.to_s(:rfc822) # updated_at fails on virtual
57
- # cards, because not all to_s's take args (just actual dates)
56
+ @xml.description description(args)
57
+ @xml.pubDate pub_date
58
58
  @xml.link render_url
59
59
  @xml.guid render_url
60
60
  end
61
61
 
62
+ def pub_date
63
+ (card.updated_at || Time.zone.now).to_s(:rfc822)
64
+ # updated_at fails on virtual
65
+ # cards, because not all to_s's take args (just actual dates)
66
+ end
67
+
68
+ def description args
69
+ render(args[:description_view] || :open_content)
70
+ end
71
+
72
+ def feed_item_description_view
73
+ :open_content
74
+ end
75
+
62
76
  view :feed_description do "" end
63
77
  view :comment_box do "" end
64
78
  view :menu do "" end
@@ -25,7 +25,7 @@ format :html do
25
25
  end
26
26
 
27
27
  def wagn_variables
28
- varvals = ["window.wagn={rootPath:'#{Card.config.relative_url_root}'}",]
28
+ varvals = ["window.wagn={rootPath:'#{Card.config.relative_url_root}'}"]
29
29
  card.have_recaptcha_keys? &&
30
30
  varvals << "wagn.recaptchaKey='#{Card.config.recaptcha_public_key}'"
31
31
  (c = Card[:double_click]) && !Card.toggle(c.content) &&
@@ -63,7 +63,7 @@ format :html do
63
63
  end
64
64
 
65
65
  def favicon
66
- [:favicon, :logo].each do |name|
66
+ %i[favicon logo].each do |name|
67
67
  if (c = Card[name]) && c.type_id == ImageID && !c.db_content.blank?
68
68
  href = subformat(c)._render_source size: :small
69
69
  return %(<link rel="shortcut icon" href="#{href}" />)
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+
2
3
  require "rspec-html-matchers"
3
4
 
4
5
  describe Card::Set::All::Base do
@@ -90,4 +91,16 @@ describe Card::Set::All::Base do
90
91
  text: text)
91
92
  end
92
93
  end
94
+
95
+ describe "date views" do
96
+ it "can be formatted with variant option" do
97
+ rendered = render_content "{{A|created_at; variant: %m/%d/%Y}}"
98
+ expect(rendered).to match(%r{\d\d/\d\d/20\d\d})
99
+ end
100
+
101
+ it "can handle colons" do
102
+ rendered = render_content "{{A|created_at; variant: %I:%M%P}}"
103
+ expect(rendered).to match(/\d\d\:\d\d\w\w/)
104
+ end
105
+ end
93
106
  end
@@ -1,5 +1,3 @@
1
- include_set Abstract::AceEditor
2
-
3
1
  def clean_html?
4
2
  false
5
3
  end
@@ -17,3 +15,9 @@ format do
17
15
  :references
18
16
  end
19
17
  end
18
+
19
+ format :html do
20
+ def editor
21
+ :ace_editor
22
+ end
23
+ end
@@ -1,7 +1,6 @@
1
1
  format :html do
2
- view :editor do
3
- text_area :content, rows: 5, class: "card-content",
4
- "data-card-type-code" => card.type_code
2
+ def editor
3
+ :text_area
5
4
  end
6
5
 
7
6
  view :core do
@@ -1,5 +1,5 @@
1
- require 'bootstrap/component_loader'
2
- require 'bootstrap/component'
1
+ require "bootstrap/component_loader"
2
+ require "bootstrap/component"
3
3
 
4
4
  class Bootstrap
5
5
  include Delegate
@@ -1,4 +1,4 @@
1
- #require 'component'
1
+ # require 'component'
2
2
 
3
3
  class Bootstrap
4
4
  module BasicTags
@@ -69,7 +69,7 @@ class Bootstrap
69
69
  private
70
70
 
71
71
  def render_content
72
- #if @build_block.arity > 0
72
+ # if @build_block.arity > 0
73
73
  instance_exec *@args, &@build_block
74
74
  end
75
75
 
@@ -87,7 +87,6 @@ class Bootstrap
87
87
  res
88
88
  end
89
89
 
90
-
91
90
  def add_content content
92
91
  @content[-1] << "\n#{content}".html_safe if content.present?
93
92
  end
@@ -109,7 +108,7 @@ class Bootstrap
109
108
  def standardize_args args, &block
110
109
  opts = args.last.is_a?(Hash) ? args.pop : {}
111
110
  items = ((args.one? && args.last.is_a?(String)) || args.last.is_a?(Array)) &&
112
- args.pop
111
+ args.pop
113
112
  if block.present?
114
113
  opts, args = instance_exec opts, args, &block
115
114
  unless opts.is_a?(Hash)
@@ -2,12 +2,13 @@ class Bootstrap
2
2
  class Component
3
3
  class Form < Component
4
4
  def render_content *args
5
- form *args, &@build_block
5
+ form *args, &@build_block
6
6
  end
7
7
 
8
8
  add_tag_method :form, nil, optional_classes: {
9
9
  horizontal: "form-horizontal",
10
- inline: "form-inline" }
10
+ inline: "form-inline"
11
+ }
11
12
  add_div_method :group, "form-group"
12
13
  add_tag_method :label, nil
13
14
  add_tag_method :input, "form-control" do |opts, extra_args|
@@ -17,10 +18,10 @@ class Bootstrap
17
18
  opts
18
19
  end
19
20
 
20
- [:text, :password, :datetime, :"datetime-local", :date, :month, :time,
21
- :week, :number, :email, :url, :search, :tel, :color].each do |tag|
21
+ %i[text password datetime datetime-local date month time
22
+ week number email url search tel color].each do |tag|
22
23
  add_tag_method tag, "form-control", attributes: { type: tag },
23
- tag: :input do |opts, extra_args|
24
+ tag: :input do |opts, extra_args|
24
25
  label, = extra_args
25
26
  prepend { label label, for: opts[:id] } if label
26
27
  opts
@@ -11,7 +11,7 @@ class Bootstrap
11
11
 
12
12
  add_tag_method :form, "form-horizontal"
13
13
 
14
- add_tag_method :label, "control-label" do |opts, extra_args|
14
+ add_tag_method :label, "control-label" do |opts, _extra_args|
15
15
  prepend_class opts, "col-sm-#{left_col_width}"
16
16
  opts
17
17
  end
@@ -62,17 +62,17 @@ class Bootstrap
62
62
  def standardize_row_args args
63
63
  opts = args.last.is_a?(Hash) ? args.pop : {}
64
64
  cols = (args.last.is_a?(Array) || args.last.is_a?(String)) &&
65
- Array.wrap(args.pop)
65
+ Array.wrap(args.pop)
66
66
  [cols, opts, col_widths(args, opts)]
67
67
  end
68
68
 
69
69
  def col_widths args, opts
70
70
  opts = args.pop if args.one? && args.last.is_a?(Hash)
71
71
  if args.present?
72
- raise Error, "bad argument" unless args.all? { |a| a.is_a? Fixnum }
72
+ raise Error, "bad argument" unless args.all? { |a| a.is_a? Integer }
73
73
  { md: Array.wrap(args) }
74
74
  else
75
- [:lg, :xs, :sm, :md].each_with_object({}) do |k, cols_w|
75
+ %i[lg xs sm md].each_with_object({}) do |k, cols_w|
76
76
  next unless (widths = opts.delete(k))
77
77
  cols_w[k] = Array.wrap widths
78
78
  end
@@ -26,5 +26,3 @@ class Bootstrap
26
26
  end
27
27
  end
28
28
  end
29
-
30
-
@@ -1,7 +1,7 @@
1
1
  class Bootstrap
2
2
  module Delegate
3
- def method_missing(method_name, *args, &block)
4
- #return super unless @context.respond_to? method_name
3
+ def method_missing method_name, *args, &block
4
+ # return super unless @context.respond_to? method_name
5
5
  if block_given?
6
6
  @context.send(method_name, *args, &block)
7
7
  else
@@ -1,4 +1,4 @@
1
- require 'bootstrap'
1
+ require "bootstrap"
2
2
  module Bootstrapper
3
3
  extend Bootstrap::ComponentLoader
4
4
 
@@ -33,7 +33,7 @@ format :html do
33
33
  HTML
34
34
  end
35
35
 
36
- def accordion_panel title, body, collapse_id, panel_heading_link=false
36
+ def accordion_panel title, body, collapse_id, _panel_heading_link=false
37
37
  if body
38
38
  <<-HTML
39
39
  <div class="panel-heading" role="tab" id="heading-#{collapse_id}">
@@ -21,11 +21,11 @@ format :html do
21
21
  options
22
22
  end
23
23
 
24
- FIELD_HELPERS = %w(hidden_field color_field date_field datetime_field
24
+ FIELD_HELPERS = %w[hidden_field color_field date_field datetime_field
25
25
  datetime_local_field email_field month_field number_field
26
26
  password_field phone_field range_field search_field
27
27
  telephone_field text_area text_field time_field
28
- url_field week_field file_field).freeze
28
+ url_field week_field file_field].freeze
29
29
 
30
30
  FIELD_HELPERS.each do |method_name|
31
31
  define_method(method_name) do |name, options={}|
@@ -1,5 +1,6 @@
1
1
  format :html do
2
2
  def glyphicon icon_type, extra_class=""
3
+ return "" unless icon_type
3
4
  wrap_with :span, "",
4
5
  "aria-hidden" => true,
5
6
  class: "glyphicon glyphicon-#{icon_type} #{extra_class}"
@@ -6,7 +6,7 @@ format :html do
6
6
  super
7
7
  end
8
8
 
9
- def standard_frame
9
+ def standard_frame slot=true
10
10
  class_up "card-frame", "panel panel-#{panel_state}"
11
11
  super
12
12
  end
@@ -1,5 +1,5 @@
1
1
  include_set Abstract::CodeFile
2
2
 
3
3
  def source_files
4
- %w(bootstrap.js bootstrap_modal_wagn.js)
4
+ %w[bootstrap.js bootstrap_modal_wagn.js]
5
5
  end
@@ -17,17 +17,17 @@ view :raw do |_args|
17
17
  end.join("\n")
18
18
  content += [
19
19
  # Reset and dependencies
20
- %w(normalize print glyphicons),
20
+ %w[normalize print glyphicons],
21
21
  # Core CSS
22
- %w(scaffolding type code grid tables forms buttons),
22
+ %w[scaffolding type code grid tables forms buttons],
23
23
  # Components
24
- %w(component-animations dropdowns button-groups input-groups navs navbar
24
+ %w[component-animations dropdowns button-groups input-groups navs navbar
25
25
  breadcrumbs pagination pager labels badges jumbotron thumbnails alerts
26
- progress-bars media list-group panels responsive-embed wells close),
26
+ progress-bars media list-group panels responsive-embed wells close],
27
27
  # Components w/ JavaScript
28
- %w(modals tooltip popovers carousel),
28
+ %w[modals tooltip popovers carousel],
29
29
  # Utility classes
30
- %w(utilities responsive-utilities)
30
+ %w[utilities responsive-utilities]
31
31
  ].map do |names|
32
32
  names.map do |name|
33
33
  path = File.join(bootstrap_path, "_#{name}.scss")
@@ -1 +1 @@
1
- add_to_basket :item_codenames, :bootstrap_js
1
+ add_to_basket :item_codenames, :bootstrap_js
@@ -1,10 +1,10 @@
1
- describe 'bootstrap builder' do
1
+ describe "bootstrap builder" do
2
2
  class BuilderTest < Card::Format::HtmlFormat::Bootstrap::Component
3
- add_tag_method :test_tag, "test-class" do |opts, extra_args|
3
+ add_tag_method :test_tag, "test-class" do |opts, _extra_args|
4
4
  prepend { tag :prepend, "prepend-class" }
5
5
  append { tag :append, "append-class" }
6
6
  insert { tag :insert, "insert-class" }
7
- #wrap { |content| tag :wrap, "wrap-class" { content } }
7
+ # wrap { |content| tag :wrap, "wrap-class" { content } }
8
8
  opts
9
9
  end
10
10
  end
@@ -15,10 +15,11 @@ describe 'bootstrap builder' do
15
15
  tag = BuilderTest.render(fo) { test_tag }
16
16
  "<buildertest>#{tag}<buildertest>"
17
17
  end
18
- it 'appends work' do
19
- #assert_select 'prepend[class="prepend-class"]'
18
+
19
+ it "appends work" do
20
+ # assert_select 'prepend[class="prepend-class"]'
20
21
  assert_view_select subject, "buildertest" do
21
- #assert_select 'prepend[class="prepend-class]"'
22
+ # assert_select 'prepend[class="prepend-class]"'
22
23
  assert_select 'prepend[class="prepend-class]"'
23
24
  assert_select 'test_tag[class="test-class"]' do
24
25
  assert_select 'insert[class="insert-class]"'
@@ -1,5 +1,6 @@
1
1
  describe Card::Bootstrap do
2
2
  subject { described_class.new(format) }
3
+
3
4
  let(:format) { Card["A"].format(:html) }
4
5
 
5
6
  def render
@@ -14,7 +15,7 @@ describe Card::Bootstrap do
14
15
  end
15
16
  describe "html" do
16
17
  it "renderes plain text" do
17
- #expect(render { html "test" }).to eq "test"
18
+ # expect(render { html "test" }).to eq "test"
18
19
  end
19
20
  end
20
21
  end
@@ -17,6 +17,7 @@ describe Bootstrap::Component::Form do
17
17
 
18
18
  describe "form" do
19
19
  subject { Card["A"].format(:html) }
20
+
20
21
  it "creates form" do
21
22
  form =
22
23
  subject.bs_form do
@@ -26,10 +27,10 @@ describe Bootstrap::Component::Form do
26
27
  end
27
28
  end
28
29
  expect(form).to have_tag :form do
29
- with_tag 'div.form-group' do
30
+ with_tag "div.form-group" do
30
31
  with_tag :label, with: { for: "theemail" },
31
- text: "\nEmail Address"
32
- with_tag 'input.form-control', with: { type: "email", id: "theemail" }
32
+ text: "\nEmail Address"
33
+ with_tag "input.form-control", with: { type: "email", id: "theemail" }
33
34
  end
34
35
  end
35
36
  end
@@ -37,6 +38,7 @@ describe Bootstrap::Component::Form do
37
38
 
38
39
  describe "horizontal form" do
39
40
  subject { Card["A"].format(:html) }
41
+
40
42
  let(:form) do
41
43
  subject.bs_horizontal_form 2, 10 do
42
44
  group do
@@ -61,6 +63,7 @@ describe Bootstrap::Component::Form do
61
63
  end
62
64
  end
63
65
  end
66
+
64
67
  it "creates form" do
65
68
  assert_view_select bsform, 'form[class="form-horizontal"]' do
66
69
  assert_select 'div[class="form-group"]' do
@@ -1,10 +1,11 @@
1
1
  describe Bootstrap::Component::Layout do
2
2
  describe "layout dsl" do
3
3
  subject { Card["A"].format(:html) }
4
+
4
5
  it "creates correct layout with column array" do
5
6
  layout = subject.bs_layout container: true, fluid: true do
6
7
  row 6, 4, 2, class: "six-times-six" do
7
- ["c1", "c2", "c3"]
8
+ %w[c1 c2 c3]
8
9
  end
9
10
  end
10
11
  assert_view_select layout, 'div[class="container-fluid"]' do
@@ -111,7 +112,7 @@ describe Bootstrap::Component::Layout do
111
112
  end
112
113
  assert_select 'div[class="row"]' do
113
114
  assert_select 'div[class="col-md-6"]', text: "c3"
114
- assert_select 'span', text: "s1"
115
+ assert_select "span", text: "s1"
115
116
  end
116
117
  assert_select 'div[class="row"]', text: "some content"
117
118
  end
@@ -73,9 +73,7 @@ end
73
73
 
74
74
  def assign_set_specific_attributes
75
75
  # reset content if we really have something to upload
76
- if @set_specific.present? && @set_specific[attachment_name.to_s].present?
77
- self.content = nil
78
- end
76
+ self.content = nil if set_specific[attachment_name.to_s].present?
79
77
  super
80
78
  end
81
79