card 1.20.4 → 1.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +9 -9
- data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +20 -0
- data/db/migrate_core_cards/20170608083819_add_full_width_layout_card.rb +23 -0
- data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +8 -0
- data/db/seed/new/card_actions.yml +783 -791
- data/db/seed/new/card_acts.yml +65 -47
- data/db/seed/new/card_changes.yml +3198 -3177
- data/db/seed/new/card_references.yml +604 -534
- data/db/seed/new/cards.yml +2355 -2256
- data/db/seed/test/fixtures/card_actions.yml +1795 -1803
- data/db/seed/test/fixtures/card_acts.yml +264 -246
- data/db/seed/test/fixtures/card_changes.yml +6275 -6184
- data/db/seed/test/fixtures/card_references.yml +1305 -1263
- data/db/seed/test/fixtures/cards.yml +3393 -3298
- data/db/seed/test/seed.rb +2 -2
- data/db/version_core_cards.txt +1 -1
- data/lib/card.rb +4 -0
- data/lib/card/act_manager/subdirector_array.rb +1 -0
- data/lib/card/auth/current.rb +7 -3
- data/lib/card/env.rb +5 -0
- data/lib/card/env/success.rb +1 -1
- data/lib/card/format/names.rb +3 -13
- data/lib/card/model/save_helper.rb +4 -6
- data/lib/card/query.rb +2 -1
- data/lib/card/query/attributes.rb +34 -14
- data/lib/card/query/value.rb +3 -4
- data/lib/card/set/format.rb +29 -4
- data/lib/card/set/format/haml_views.rb +25 -13
- data/lib/card/set/trait.rb +1 -0
- data/lib/card/set_pattern.rb +17 -1
- data/lib/card/subcards.rb +3 -2
- data/lib/generators/card/format/format_generator.rb +2 -0
- data/lib/generators/card/set/set_generator.rb +2 -0
- data/lib/generators/card/template/USAGE +10 -0
- data/lib/generators/card/template/template_generator.rb +46 -0
- data/lib/generators/card/template/templates/haml_template.erb +1 -0
- data/mod/Modfile +1 -1
- data/mod/account/set/all/account.rb +9 -5
- data/mod/account/set/right/account.rb +17 -5
- data/mod/account/set/self/account_links.rb +1 -2
- data/mod/account/set/type/signup.rb +4 -5
- data/mod/account/set/type/user.rb +1 -1
- data/mod/account/spec/set/all/account_spec.rb +2 -2
- data/mod/account/spec/set/right/account_spec.rb +2 -2
- data/mod/account/spec/set/right/email_spec.rb +1 -1
- data/mod/account/spec/set/right/password_spec.rb +1 -1
- data/mod/account/spec/set/self/signin_spec.rb +2 -2
- data/mod/account/spec/set/type/signup_spec.rb +4 -0
- data/mod/ace_editor/set/abstract/ace_editor.rb +6 -3
- data/mod/ace_editor/set/self/script_ace.rb +1 -0
- data/mod/admin/set/self/admin.rb +1 -1
- data/mod/admin/set/self/version.rb +1 -0
- data/mod/basic_formats/format/css_format.rb +1 -0
- data/mod/basic_formats/format/csv_format.rb +1 -0
- data/mod/basic_formats/format/file_format.rb +1 -0
- data/mod/basic_formats/format/js_format.rb +1 -0
- data/mod/basic_formats/format/json_format.rb +1 -0
- data/mod/basic_formats/format/rss_format.rb +1 -0
- data/mod/basic_formats/format/xml_format.rb +1 -0
- data/mod/basic_formats/set/all/all_csv.rb +1 -1
- data/mod/basic_formats/set/all/base.rb +11 -3
- data/mod/basic_formats/set/all/json.rb +50 -8
- data/mod/basic_formats/set/all/rss.rb +21 -7
- data/mod/basic_formats/set/self/01_head/javascript.rb +1 -1
- data/mod/basic_formats/set/self/head.rb +1 -1
- data/mod/basic_formats/spec/set/all/base_spec.rb +13 -0
- data/mod/basic_types/set/type/html.rb +6 -2
- data/mod/basic_types/set/type/plain_text.rb +2 -3
- data/mod/bootstrap/lib/bootstrap.rb +2 -2
- data/mod/bootstrap/lib/bootstrap/basic_tags.rb +1 -1
- data/mod/bootstrap/lib/bootstrap/component.rb +2 -3
- data/mod/bootstrap/lib/bootstrap/component/form.rb +6 -5
- data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +1 -1
- data/mod/bootstrap/lib/bootstrap/component/layout.rb +3 -3
- data/mod/bootstrap/lib/bootstrap/component_loader.rb +0 -2
- data/mod/bootstrap/lib/bootstrap/delegate.rb +2 -2
- data/mod/bootstrap/lib/bootstrapper.rb +1 -1
- data/mod/bootstrap/set/all/bootstrap/accordion.rb +1 -1
- data/mod/bootstrap/set/all/bootstrap/form.rb +2 -2
- data/mod/bootstrap/set/all/bootstrap/helper.rb +1 -0
- data/mod/bootstrap/set/all/bootstrap/wrapper.rb +1 -1
- data/mod/bootstrap/set/self/bootstrap_js.rb +1 -1
- data/mod/bootstrap/set/self/bootswatch_shared.rb +6 -6
- data/mod/bootstrap/set/self/script_mods.rb +1 -1
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +7 -6
- data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +2 -1
- data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +6 -3
- data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +3 -2
- data/mod/carrierwave/set/abstract/attachment.rb +1 -3
- data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
- data/mod/carrierwave/set/abstract/attachment/storage_type.rb +11 -1
- data/mod/carrierwave/set/type/file.rb +3 -3
- data/mod/carrierwave/spec/lib/carrier_wave/file_card_uploader_spec.rb +3 -0
- data/mod/carrierwave/spec/set/type/file_spec.rb +24 -6
- data/mod/carrierwave/spec/set/type/image_spec.rb +3 -0
- data/mod/core/chunk/link.rb +1 -1
- data/mod/core/chunk/nest.rb +2 -1
- data/mod/core/chunk/query_reference.rb +1 -1
- data/mod/core/chunk/reference.rb +1 -0
- data/mod/core/chunk/uri.rb +4 -3
- data/mod/core/set/abstract/lock.rb +26 -0
- data/mod/core/set/all/assign_attributes.rb +8 -4
- data/mod/core/set/all/collection.rb +16 -7
- data/mod/core/set/all/content.rb +6 -0
- data/mod/core/set/all/event.rb +1 -1
- data/mod/core/set/all/fetch.rb +2 -2
- data/mod/core/set/all/haml.rb +5 -15
- data/mod/core/set/all/initialize.rb +2 -2
- data/mod/core/set/all/name.rb +1 -1
- data/mod/core/set/all/permissions.rb +28 -16
- data/mod/core/set/all/rules.rb +1 -2
- data/mod/core/set/all/subcards.rb +3 -3
- data/mod/core/set/all/templating.rb +5 -1
- data/mod/core/set/all/trash.rb +1 -1
- data/mod/core/set/all/utils.rb +1 -1
- data/mod/core/spec/set/all/actify_spec.rb +1 -1
- data/mod/core/spec/set/all/assign_attributes_spec.rb +2 -2
- data/mod/core/spec/set/all/collection_spec.rb +6 -3
- data/mod/core/spec/set/all/export_spec.rb +40 -112
- data/mod/core/spec/set/all/name_spec.rb +1 -1
- data/mod/core/spec/set/all/permissions_spec.rb +7 -7
- data/mod/core/spec/set/all/rules2_spec.rb +25 -25
- data/mod/core/spec/set/all/rules_spec.rb +2 -7
- data/mod/developer/set/all/event_viz.rb +1 -1
- data/mod/developer/set/right/debug.rb +1 -1
- data/mod/history/lib/card/act.rb +1 -0
- data/mod/history/lib/card/act/act_renderer.rb +23 -20
- data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +0 -1
- data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +1 -0
- data/mod/history/lib/card/action.rb +1 -1
- data/mod/history/lib/card/action/action_renderer.rb +2 -2
- data/mod/history/lib/card/change.rb +2 -1
- data/mod/history/set/all/action_view.rb +1 -1
- data/mod/history/set/all/content_history.rb +7 -4
- data/mod/history/set/all/history.rb +6 -6
- data/mod/machines/file/all_script_machine_output/file.js +50 -34
- data/mod/machines/file/all_style_machine_output/file.css +1 -1
- data/mod/machines/lib/javascript/wagn.js.coffee +29 -18
- data/mod/machines/lib/javascript/wagn_layout.js.coffee +7 -3
- data/mod/machines/lib/stylesheets/style_cards.scss +10 -10
- data/mod/machines/set/abstract/machine.rb +5 -28
- data/mod/machines/set/abstract/script.rb +7 -4
- data/mod/machines/set/all/reset_machines.rb +1 -1
- data/mod/machines/set/self/script_jquery_helper.rb +2 -2
- data/mod/machines/set/self/script_slot.rb +1 -1
- data/mod/machines/set/type/coffee_script.rb +3 -2
- data/mod/machines/set/type/css.rb +7 -3
- data/mod/machines/set/type/scss.rb +7 -1
- data/mod/machines/spec/set/type/coffeescript_spec.rb +1 -1
- data/mod/machines/spec/set/type/javascript_spec.rb +1 -1
- data/mod/machines/spec/set/type/scss_spec.rb +3 -2
- data/mod/machines/spec/set/type/skin_spec.rb +1 -1
- data/mod/machines/spec/shared_examples/machine.rb +5 -3
- data/mod/machines/spec/shared_examples/machine_input.rb +1 -0
- data/mod/notifications/format/email_html_format.rb +1 -0
- data/mod/notifications/set/all/follow.rb +1 -1
- data/mod/notifications/set/all/observer.rb +1 -1
- data/mod/notifications/set/all/send_notifications.rb +2 -2
- data/mod/notifications/set/self/follow_defaults.rb +3 -8
- data/mod/notifications/set/type/email_template/email_config.rb +2 -2
- data/mod/notifications/set/type_plus_right/user/follow.rb +2 -2
- data/mod/notifications/spec/set/all/follow_spec.rb +7 -0
- data/mod/notifications/spec/set/all/notify_spec.rb +3 -0
- data/mod/notifications/spec/set/all/observer_spec.rb +1 -1
- data/mod/notifications/spec/set/right/followers_spec.rb +1 -0
- data/mod/pointer/set/abstract/00_paging_params.rb +11 -0
- data/mod/pointer/set/abstract/{00_paging.rb → 01_paging.rb} +10 -6
- data/mod/pointer/set/abstract/{00_paging → 01_paging}/paging_links.rb +0 -0
- data/mod/pointer/set/abstract/{01_pointer.rb → 02_pointer.rb} +26 -5
- data/mod/pointer/set/abstract/{01_pointer → 02_pointer}/edit.rb +3 -5
- data/mod/pointer/set/self/input_options.rb +12 -0
- data/mod/pointer/spec/set/self/input_options_spec.rb +8 -0
- data/mod/pointer/spec/set/type/pointer_spec.rb +3 -2
- data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +1 -1
- data/mod/prosemirror_editor/set/self/script_prosemirror.rb +1 -0
- data/mod/settings/lib/card/setting.rb +1 -2
- data/mod/settings/set/abstract/permission.rb +1 -1
- data/mod/settings/set/self/add_help.rb +1 -1
- data/mod/settings/set/self/autoname.rb +1 -1
- data/mod/settings/set/self/csv_structure.rb +2 -0
- data/mod/settings/set/self/help.rb +1 -1
- data/mod/settings/set/self/input.rb +1 -2
- data/mod/settings/set/self/options.rb +2 -2
- data/mod/settings/set/self/options_label.rb +2 -2
- data/mod/settings/set/type/setting.rb +1 -1
- data/mod/settings/spec/set/right/script_spec.rb +1 -1
- data/mod/settings/spec/set/right/style_spec.rb +1 -1
- data/mod/solid_cache/set/abstract/solid_cache.rb +5 -3
- data/mod/solid_cache/spec/set/abstract/solid_cache_spec.rb +4 -3
- data/mod/standard/set/abstract/01_search_params.rb +4 -3
- data/mod/standard/set/abstract/search.rb +2 -1
- data/mod/standard/set/abstract/toolbar_split_button.rb +22 -0
- data/mod/standard/set/all/links.rb +3 -3
- data/mod/standard/set/all/rich_html/classy.rb +37 -0
- data/mod/standard/set/all/rich_html/editing.rb +6 -2
- data/mod/standard/set/all/rich_html/editor.rb +50 -0
- data/mod/standard/set/all/rich_html/form.rb +19 -12
- data/mod/standard/set/all/rich_html/form_elements.rb +2 -2
- data/mod/standard/set/all/rich_html/formgroup.rb +2 -1
- data/mod/standard/set/all/rich_html/header.rb +2 -27
- data/mod/standard/set/all/rich_html/menu.rb +1 -1
- data/mod/standard/set/all/rich_html/new.rb +5 -1
- data/mod/standard/set/all/rich_html/toolbar.rb +15 -60
- data/mod/standard/set/all/rich_html/wrapper.rb +6 -3
- data/mod/standard/set/right/when_created.rb +2 -2
- data/mod/standard/set/rstar/rules_editor.rb +10 -7
- data/mod/standard/set/self/activity_toolbar_button.rb +14 -0
- data/mod/standard/set/self/recent.rb +7 -2
- data/mod/standard/set/self/rules_toolbar_button.rb +42 -0
- data/mod/standard/set/self/search.rb +19 -6
- data/mod/standard/set/type/basic.rb +6 -6
- data/mod/standard/set/type/cardtype.rb +7 -3
- data/mod/standard/set/type/date.rb +2 -4
- data/mod/standard/set/type/layout_type.rb +1 -0
- data/mod/standard/set/type/list.rb +1 -1
- data/mod/standard/set/type/listed_by.rb +1 -2
- data/mod/standard/set/type/number.rb +4 -2
- data/mod/standard/set/type/phrase.rb +4 -2
- data/mod/standard/set/type/search_type.rb +11 -3
- data/mod/standard/set/type/set.rb +8 -8
- data/mod/standard/set/type/toggle.rb +1 -3
- data/mod/standard/set/type/uri.rb +6 -2
- data/mod/standard/spec/chunk/include_spec.rb +3 -2
- data/mod/standard/spec/chunk/query_reference_spec.rb +2 -2
- data/mod/standard/spec/set/all/history_spec.rb +1 -0
- data/mod/standard/spec/set/all/links_spec.rb +1 -0
- data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +2 -0
- data/mod/standard/spec/set/self/activity_toolbar_button_spec.rb +22 -0
- data/mod/standard/spec/set/type/email_template/email_config_spec.rb +10 -8
- data/mod/standard/spec/set/type/email_template_spec.rb +1 -0
- data/mod/standard/spec/set/type/list_spec.rb +2 -0
- data/mod/standard/spec/set/type/listed_by_spec.rb +5 -0
- data/mod/standard/spec/set/type/search_type_spec.rb +1 -1
- data/mod/standard/spec/set/type/toggle_spec.rb +1 -2
- data/mod/standard/spec/set/type/uri_spec.rb +0 -1
- data/mod/tinymce_editor/db/migrate_cards/20160804112560_add_tinymce_cards.rb +3 -1
- data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
- data/mod/tinymce_editor/set/self/script_tinymce.rb +1 -0
- data/mod/twitter/db/migrate_cards/20170305112346_add_twitter_cards.rb +1 -1
- data/mod/twitter/set/type/twitter_template.rb +1 -1
- data/spec/lib/card/format_spec.rb +26 -7
- data/spec/lib/card/loader_spec.rb +96 -35
- data/spec/lib/card/query_spec.rb +0 -1
- data/spec/support/card_spec_loader.rb +1 -0
- data/spec/support/helper/card_helper.rb +0 -36
- data/spec/support/helper/set_helper.rb +80 -0
- data/spec/support/matchers.rb +74 -0
- data/tmpsets/set/mod001-core/all/actify.rb +5 -6
- data/tmpsets/set/mod001-core/all/fetch.rb +14 -12
- data/tmpsets/set/mod001-core/all/name.rb +1 -1
- data/tmpsets/set/mod001-core/all/permissions.rb +12 -22
- data/tmpsets/set/mod001-core/all/tracked_attributes.rb +76 -0
- data/tmpsets/set/mod001-core/all/utils.rb +40 -3
- data/tmpsets/set/mod002-history/all/history.rb +1 -2
- data/tmpsets/set/mod008-solid_cache/abstract/solid_cache.rb +1 -1
- data/tmpsets/set/mod013-carrierwave/abstract/attachment.rb +282 -0
- data/tmpsets/set/mod013-carrierwave/type/file.rb +155 -0
- data/tmpsets/set/mod013-carrierwave/type/image.rb +96 -0
- data/tmpsets/set/mod014-admin/self/admin.rb +113 -0
- data/tmpsets/set/mod014-admin/self/admin_info.rb +110 -0
- data/tmpsets/set/mod014-admin/self/version.rb +15 -0
- data/tmpsets/set/mod015-developer/all/event_viz.rb +59 -0
- data/tmpsets/set/mod015-developer/all/view_viz.rb +30 -0
- data/tmpsets/set/mod015-developer/right/debug.rb +96 -0
- 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"
|
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
|
-
|
43
|
-
|
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
|
56
|
-
@xml.pubDate
|
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
|
-
[
|
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
|
@@ -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
|
-
|
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
|
-
|
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
|
-
[
|
21
|
-
|
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
|
-
|
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
|
@@ -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
|
-
|
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?
|
72
|
+
raise Error, "bad argument" unless args.all? { |a| a.is_a? Integer }
|
73
73
|
{ md: Array.wrap(args) }
|
74
74
|
else
|
75
|
-
[
|
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
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class Bootstrap
|
2
2
|
module Delegate
|
3
|
-
def method_missing
|
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
|
@@ -33,7 +33,7 @@ format :html do
|
|
33
33
|
HTML
|
34
34
|
end
|
35
35
|
|
36
|
-
def accordion_panel title, body, collapse_id,
|
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
|
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
|
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={}|
|
@@ -17,17 +17,17 @@ view :raw do |_args|
|
|
17
17
|
end.join("\n")
|
18
18
|
content += [
|
19
19
|
# Reset and dependencies
|
20
|
-
%w
|
20
|
+
%w[normalize print glyphicons],
|
21
21
|
# Core CSS
|
22
|
-
%w
|
22
|
+
%w[scaffolding type code grid tables forms buttons],
|
23
23
|
# Components
|
24
|
-
%w
|
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
|
28
|
+
%w[modals tooltip popovers carousel],
|
29
29
|
# Utility classes
|
30
|
-
%w
|
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
|
1
|
+
describe "bootstrap builder" do
|
2
2
|
class BuilderTest < Card::Format::HtmlFormat::Bootstrap::Component
|
3
|
-
add_tag_method :test_tag, "test-class" do |opts,
|
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
|
-
|
19
|
-
|
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
|
30
|
+
with_tag "div.form-group" do
|
30
31
|
with_tag :label, with: { for: "theemail" },
|
31
|
-
|
32
|
-
with_tag
|
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
|
-
[
|
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
|
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
|
-
|
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
|
|