card 1.93.13 → 1.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/config/initializers/01_core_extensions/persistent_identifiers.rb +8 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/lib/card.rb +2 -1
- data/lib/card/cache.rb +1 -1
- data/lib/card/content/clean.rb +6 -4
- data/lib/card/format/error.rb +1 -1
- data/lib/card/format/render.rb +1 -1
- data/lib/card/mod.rb +6 -1
- data/lib/card/mod/loader.rb +2 -0
- data/lib/card/name.rb +25 -5
- data/lib/card/query/attributes.rb +13 -8
- data/lib/card/set/event.rb +1 -1
- data/lib/card/tasks/card.rake +12 -0
- data/lib/card/tasks/card/migrate.rake +2 -0
- data/lib/card/view/options.rb +2 -1
- data/lib/cardio.rb +6 -6
- data/lib/cardio/utils.rb +30 -0
- data/mod/account/set/self/signin.rb +3 -13
- data/mod/account/set/type/signup.rb +1 -1
- data/mod/account/spec/set/self/signin_spec.rb +1 -1
- data/mod/basic_formats/set/all/base.rb +11 -3
- data/mod/basic_formats/set/all/json.rb +1 -0
- data/mod/basic_formats/set/self/head.rb +2 -3
- data/mod/bootstrap/db/migrate_core_cards/20170719163733_update_bootswatch_themes_to_4_beta.rb +2 -95
- data/mod/bootstrap/db/migrate_core_cards/lib/skin.rb +94 -0
- data/mod/bootstrap/script/update_skin_thumbnails.rb +9 -0
- data/mod/carrierwave/set/type/image.rb +1 -1
- data/mod/core/chunk/query_reference.rb +9 -2
- data/mod/core/set/all/event_conditions.rb +18 -8
- data/mod/core/set/all/fetch_helper.rb +11 -11
- data/mod/core/set/all/utils.rb +0 -12
- data/mod/core/spec/format/html_format_spec.rb +3 -3
- data/mod/core/spec/set/all/event_conditions_spec.rb +15 -0
- data/mod/core/spec/set/all/name_spec.rb +7 -0
- data/mod/core/spec/set/all/name_validations_spec.rb +0 -10
- data/mod/core/spec/set/all/rename_spec.rb +2 -2
- data/mod/pointer/set/abstract/02_pointer.rb +4 -0
- data/mod/search/set/abstract/00_filter_helper.rb +1 -1
- data/mod/search/set/abstract/02_search_params.rb +18 -0
- data/mod/search/set/abstract/search.rb +1 -1
- data/mod/search/set/self/navbox.rb +2 -2
- data/mod/search/set/self/search.rb +1 -19
- data/mod/search/spec/set/self/search_spec.rb +1 -1
- data/mod/standard/set/all/error.rb +6 -6
- data/mod/standard/set/all/rich_html/content.rb +2 -27
- data/mod/standard/set/all/rich_html/editing.rb +1 -1
- data/mod/standard/set/all/rich_html/title.rb +39 -0
- data/mod/standard/set/all/rich_html/toolbar.rb +1 -1
- data/mod/standard/set/type/cardtype.rb +8 -2
- data/mod/standard/spec/{chunk → content/chunk}/include_spec.rb +5 -5
- data/mod/standard/spec/{chunk → content/chunk}/link_spec.rb +1 -1
- data/mod/standard/spec/{chunk → content/chunk}/query_reference_spec.rb +0 -0
- metadata +11 -7
@@ -1,14 +1,4 @@
|
|
1
1
|
describe Card::Set::All::NameValidations, "validate name" do
|
2
|
-
it "errors on name with /" do
|
3
|
-
expect { create "testname/" }
|
4
|
-
.to raise_error /Name may not contain/
|
5
|
-
end
|
6
|
-
|
7
|
-
it "errors on junction name with /" do
|
8
|
-
expect { create "jasmin+ri/ce" }
|
9
|
-
.to raise_error /Name may not contain/
|
10
|
-
end
|
11
|
-
|
12
2
|
it "does not allow empty name" do
|
13
3
|
expect { create "" }
|
14
4
|
.to raise_error /Name can't be blank/
|
@@ -81,8 +81,8 @@ RSpec.describe Card::Set::All::Rename do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "fails if name is invalid" do
|
84
|
-
expect { update "T", name: "
|
85
|
-
.to raise_error(/
|
84
|
+
expect { update "T", name: "" }
|
85
|
+
.to raise_error(/Name can't be blank/)
|
86
86
|
end
|
87
87
|
|
88
88
|
example "simple to simple" do
|
@@ -11,9 +11,22 @@ format do
|
|
11
11
|
|
12
12
|
# used for override
|
13
13
|
def default_search_params
|
14
|
+
if (qparams = query_params)
|
15
|
+
paging_params.merge vars: qparams
|
16
|
+
else
|
17
|
+
paging_params
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def paging_params
|
14
22
|
{ limit: limit_param, offset: offset_param }
|
15
23
|
end
|
16
24
|
|
25
|
+
def query_params
|
26
|
+
return nil unless (vars = params[:query])
|
27
|
+
Card.safe_param vars
|
28
|
+
end
|
29
|
+
|
17
30
|
def default_limit
|
18
31
|
100
|
19
32
|
end
|
@@ -23,6 +36,11 @@ format :html do
|
|
23
36
|
def default_limit
|
24
37
|
Cardio.config.paging_limit || 20
|
25
38
|
end
|
39
|
+
|
40
|
+
def extra_paging_path_args
|
41
|
+
return {} unless (vars = query_params)
|
42
|
+
{ query: vars }
|
43
|
+
end
|
26
44
|
end
|
27
45
|
|
28
46
|
format :json do
|
@@ -2,8 +2,8 @@
|
|
2
2
|
format :html do
|
3
3
|
view :raw do
|
4
4
|
wrap_with :div, class: "form-group w-100" do
|
5
|
-
text_field_tag
|
6
|
-
|
5
|
+
text_field_tag "query[keyword]", "", class: "_navbox navbox form-control w-100",
|
6
|
+
placeholder: navbar_placeholder
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
@@ -14,16 +14,6 @@ def keyword_contains_wql? hash
|
|
14
14
|
end
|
15
15
|
|
16
16
|
format do
|
17
|
-
def default_search_params
|
18
|
-
hash = super
|
19
|
-
hash[:vars] = params[:vars] || {}
|
20
|
-
params.each do |key, val|
|
21
|
-
next unless key.to_s =~ /^\_(\w+)$/
|
22
|
-
hash[:vars][Regexp.last_match(1).to_sym] = val
|
23
|
-
end
|
24
|
-
hash
|
25
|
-
end
|
26
|
-
|
27
17
|
view :search_error, cache: :never do
|
28
18
|
sr_class = search_with_params.class.to_s
|
29
19
|
|
@@ -33,14 +23,6 @@ format do
|
|
33
23
|
end
|
34
24
|
|
35
25
|
format :html do
|
36
|
-
def extra_paging_path_args
|
37
|
-
vars = query_with_params.vars
|
38
|
-
return {} unless vars.is_a? Hash
|
39
|
-
vars.each_with_object({}) do |(key, value), hash|
|
40
|
-
hash["_#{key}"] = value
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
26
|
view :title, cache: :never do
|
45
27
|
return super() unless (keyword = search_keyword) &&
|
46
28
|
(title = keyword_search_title(keyword))
|
@@ -104,7 +86,7 @@ format :json do
|
|
104
86
|
end
|
105
87
|
|
106
88
|
def complete_term
|
107
|
-
term =
|
89
|
+
term = query_params[:keyword]
|
108
90
|
if (term =~ /^\+/) && (main = params["main"])
|
109
91
|
term = main + term
|
110
92
|
end
|
@@ -18,7 +18,7 @@ format do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
view :not_found, perms: :none, error_code: 404 do |_args|
|
21
|
-
error_name = card.name.present? ?
|
21
|
+
error_name = card.name.present? ? safe_name : "the card requested"
|
22
22
|
%( Could not find #{error_name}. )
|
23
23
|
end
|
24
24
|
|
@@ -75,7 +75,7 @@ format :html do
|
|
75
75
|
warning = alert("warning", true) do
|
76
76
|
%{
|
77
77
|
<h3>Error message (visible to admin only)</h3>
|
78
|
-
<p><strong>#{exception.message}</strong></p>
|
78
|
+
<p><strong>#{CGI.escapeHTML exception.message}</strong></p>
|
79
79
|
<div>#{exception.backtrace * "<br>\n"}</div>
|
80
80
|
}
|
81
81
|
end
|
@@ -105,7 +105,7 @@ format :html do
|
|
105
105
|
end
|
106
106
|
|
107
107
|
view :closed_missing, perms: :none do
|
108
|
-
wrap_with :span, title_in_context, class: "faint"
|
108
|
+
wrap_with :span, h(title_in_context), class: "faint"
|
109
109
|
end
|
110
110
|
|
111
111
|
view :conflict, error_code: 409, cache: :never do
|
@@ -136,20 +136,20 @@ format :html do
|
|
136
136
|
frame do
|
137
137
|
card.errors.map do |attrib, msg|
|
138
138
|
alert "warning", true do
|
139
|
-
attrib == :abort ? msg : standard_error_message(attrib, msg)
|
139
|
+
attrib == :abort ? h(msg) : standard_error_message(attrib, msg)
|
140
140
|
end
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
145
|
def standard_error_message attribute, message
|
146
|
-
"<strong>#{attribute.to_s.upcase}:</strong> #{message}"
|
146
|
+
"<strong>#{h attribute.to_s.upcase}:</strong> #{h message}"
|
147
147
|
end
|
148
148
|
|
149
149
|
view :not_found do # ug. bad name.
|
150
150
|
voo.hide! :menu
|
151
151
|
voo.title = "Not Found"
|
152
|
-
card_label = card.name.present? ? "<em>#{
|
152
|
+
card_label = card.name.present? ? "<em>#{safe_name}</em>" : "that"
|
153
153
|
frame do
|
154
154
|
[wrap_with(:h2) { "Could not find #{card_label}." },
|
155
155
|
sign_in_or_up_links]
|
@@ -21,7 +21,7 @@ format :html do
|
|
21
21
|
args[:view] = view if view
|
22
22
|
@main = false
|
23
23
|
@main_opts = args
|
24
|
-
render! :layout,
|
24
|
+
render! :layout, layout: params[:layout]
|
25
25
|
# FIXME: using title because it's a standard view option. hack!
|
26
26
|
end
|
27
27
|
|
@@ -32,7 +32,7 @@ format :html do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
view :layout, perms: :none, cache: :never do
|
35
|
-
layout = process_content get_layout_content(voo.
|
35
|
+
layout = process_content get_layout_content(voo.layout),
|
36
36
|
content_opts: { chunk_list: :references }
|
37
37
|
output [layout, _render_modal_slot]
|
38
38
|
end
|
@@ -89,20 +89,6 @@ format :html do
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
-
view :title do
|
93
|
-
title = fancy_title super()
|
94
|
-
if show_view? :title_link, :hide
|
95
|
-
title = _render_title_link title_ready: title
|
96
|
-
end
|
97
|
-
add_name_context
|
98
|
-
title
|
99
|
-
end
|
100
|
-
|
101
|
-
view :title_link do |args|
|
102
|
-
title_text = args[:title_ready] || pov_name(voo.title)
|
103
|
-
link_to_card card.name, title_text
|
104
|
-
end
|
105
|
-
|
106
92
|
view :type_info do
|
107
93
|
return unless show_view?(:toolbar, :hide) && card.type_code != :basic
|
108
94
|
wrap_with :span, class: "type-info float-right" do
|
@@ -236,15 +222,4 @@ format :html do
|
|
236
222
|
</span>
|
237
223
|
)
|
238
224
|
end
|
239
|
-
|
240
|
-
def fancy_title title=nil
|
241
|
-
wrap_with :span, class: classy("card-title") do
|
242
|
-
title.to_name.parts.join fancy_joint
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
def fancy_joint
|
247
|
-
wrap_with :span, "+", classy("joint")
|
248
|
-
end
|
249
225
|
end
|
250
|
-
|
@@ -69,7 +69,7 @@ format :html do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def rename_confirmation_alert
|
72
|
-
msg = "<h5>Are you sure you want to rename <em>#{
|
72
|
+
msg = "<h5>Are you sure you want to rename <em>#{safe_name}</em>?</h5>"
|
73
73
|
msg << rename_effects_and_options
|
74
74
|
alert("warning") { msg }
|
75
75
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
format :html do
|
2
|
+
view :title do
|
3
|
+
title = wrapped_title(super())
|
4
|
+
title = link_to_card card.name, title if show_view? :title_link, :hide
|
5
|
+
add_name_context
|
6
|
+
title
|
7
|
+
end
|
8
|
+
|
9
|
+
view :title_link do
|
10
|
+
render_title show: :title_link
|
11
|
+
end
|
12
|
+
|
13
|
+
def title_with_link link_text
|
14
|
+
link_to_card card.name, link_text
|
15
|
+
end
|
16
|
+
|
17
|
+
view :name do
|
18
|
+
h(super())
|
19
|
+
end
|
20
|
+
|
21
|
+
def safe_name
|
22
|
+
h super
|
23
|
+
end
|
24
|
+
|
25
|
+
def title_in_context title=nil
|
26
|
+
h super
|
27
|
+
end
|
28
|
+
|
29
|
+
def wrapped_title title
|
30
|
+
wrap_with :span, class: classy("card-title") do
|
31
|
+
escaped_parts = title.to_name.parts.map { |part| h part }
|
32
|
+
escaped_parts.join wrapped_joint
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def wrapped_joint
|
37
|
+
wrap_with :span, "+", classy("joint")
|
38
|
+
end
|
39
|
+
end
|
@@ -218,7 +218,7 @@ format :html do
|
|
218
218
|
end
|
219
219
|
|
220
220
|
view :delete_button do |_args|
|
221
|
-
confirm = "Are you sure you want to delete #{
|
221
|
+
confirm = "Are you sure you want to delete #{safe_name}?"
|
222
222
|
success = main? ? "REDIRECT: *previous" : "TEXT: #{card.name} deleted"
|
223
223
|
toolbar_button "delete", :trash,
|
224
224
|
path: { action: :delete, success: success },
|
@@ -12,14 +12,14 @@ format :html do
|
|
12
12
|
|
13
13
|
view :type_formgroup do
|
14
14
|
if card.cards_of_type_exist?
|
15
|
-
wrap_with :div, tr(:cards_exist, cardname:
|
15
|
+
wrap_with :div, tr(:cards_exist, cardname: safe_name)
|
16
16
|
else
|
17
17
|
super()
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
view :add_link do |args|
|
22
|
-
voo.title ||= tr(:add_card, cardname:
|
22
|
+
voo.title ||= tr(:add_card, cardname: safe_name)
|
23
23
|
title = _render_title args
|
24
24
|
link_to title, path: _render_add_path(args), class: args[:css_class]
|
25
25
|
end
|
@@ -82,3 +82,9 @@ event :check_for_cards_of_type_when_type_changed, :validate, changed: :type do
|
|
82
82
|
errors.add :cardtype, tr(:error_cant_alter, name: name)
|
83
83
|
end
|
84
84
|
end
|
85
|
+
|
86
|
+
event :validate_cardtype_name, :validate, on: :save, changed: :name do
|
87
|
+
if name =~ %r{[<>/]}
|
88
|
+
errors.add :name, tr(:error_invalid_character_in_cardtype, banned: "<, >, /")
|
89
|
+
end
|
90
|
+
end
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
describe Card::Content::Chunk::Nest, "Inclusion" do
|
4
4
|
context "syntax parsing" do
|
5
|
-
before do
|
6
|
-
@class = Card::Content::Chunk::Nest
|
7
|
-
end
|
8
|
-
|
9
5
|
let :instance do
|
10
|
-
|
6
|
+
described_class.new(described_class.full_match(@chunk), nil)
|
11
7
|
end
|
12
8
|
let(:options) { instance.options }
|
13
9
|
let(:name) { instance.name }
|
14
10
|
|
11
|
+
def chunk_nest chunk
|
12
|
+
described_class.new(described_class.full_match(chunk), nil)
|
13
|
+
end
|
14
|
+
|
15
15
|
it "ignores invisible comments" do
|
16
16
|
expect(render_content("{{## now you see nothing}}")).to eq("")
|
17
17
|
end
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.94.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2018-03-
|
14
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: cardname
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.4.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.4.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: haml
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -572,6 +572,7 @@ files:
|
|
572
572
|
- lib/card/view/visibility.rb
|
573
573
|
- lib/cardio.rb
|
574
574
|
- lib/cardio/schema.rb
|
575
|
+
- lib/cardio/utils.rb
|
575
576
|
- lib/generators/card.rb
|
576
577
|
- lib/generators/card/format/USAGE
|
577
578
|
- lib/generators/card/format/format_generator.rb
|
@@ -664,6 +665,7 @@ files:
|
|
664
665
|
- mod/bootstrap/db/migrate_core_cards/data/custom_theme/fonts.scss
|
665
666
|
- mod/bootstrap/db/migrate_core_cards/data/custom_theme/more.scss
|
666
667
|
- mod/bootstrap/db/migrate_core_cards/data/custom_theme/spacing.scss
|
668
|
+
- mod/bootstrap/db/migrate_core_cards/lib/skin.rb
|
667
669
|
- mod/bootstrap/file/cerulean_skin_image/image-icon.png
|
668
670
|
- mod/bootstrap/file/cerulean_skin_image/image-large.png
|
669
671
|
- mod/bootstrap/file/cerulean_skin_image/image-medium.png
|
@@ -799,6 +801,7 @@ files:
|
|
799
801
|
- mod/bootstrap/lib/stylesheets/smartmenu.css
|
800
802
|
- mod/bootstrap/lib/stylesheets/style_bootstrap_cards.scss
|
801
803
|
- mod/bootstrap/lib/stylesheets/style_select2_bootstrap.scss
|
804
|
+
- mod/bootstrap/script/update_skin_thumbnails.rb
|
802
805
|
- mod/bootstrap/set/abstract/bootstrap_code_file.rb
|
803
806
|
- mod/bootstrap/set/all/bootstrap/accordion.rb
|
804
807
|
- mod/bootstrap/set/all/bootstrap/form.rb
|
@@ -3654,6 +3657,7 @@ files:
|
|
3654
3657
|
- mod/standard/set/all/rich_html/new.rb
|
3655
3658
|
- mod/standard/set/all/rich_html/overlay.rb
|
3656
3659
|
- mod/standard/set/all/rich_html/overlay/overlay_header.haml
|
3660
|
+
- mod/standard/set/all/rich_html/title.rb
|
3657
3661
|
- mod/standard/set/all/rich_html/toolbar.rb
|
3658
3662
|
- mod/standard/set/all/rich_html/wrapper.rb
|
3659
3663
|
- mod/standard/set/right/discussion.rb
|
@@ -3679,9 +3683,9 @@ files:
|
|
3679
3683
|
- mod/standard/set/type/set.rb
|
3680
3684
|
- mod/standard/set/type/toggle.rb
|
3681
3685
|
- mod/standard/set/type/uri.rb
|
3682
|
-
- mod/standard/spec/chunk/include_spec.rb
|
3683
|
-
- mod/standard/spec/chunk/link_spec.rb
|
3684
|
-
- mod/standard/spec/chunk/query_reference_spec.rb
|
3686
|
+
- mod/standard/spec/content/chunk/include_spec.rb
|
3687
|
+
- mod/standard/spec/content/chunk/link_spec.rb
|
3688
|
+
- mod/standard/spec/content/chunk/query_reference_spec.rb
|
3685
3689
|
- mod/standard/spec/format/css_format_spec.rb
|
3686
3690
|
- mod/standard/spec/format/csv_format_spec.rb
|
3687
3691
|
- mod/standard/spec/format/email_html_format_spec.rb
|