card-mod-layout 0.16.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03d108a569f14471991d748ba88c83090cc30390336e5a36d859ebaab663775a
4
- data.tar.gz: e8fe906f01bd1f15118f69e59849aebb2903927cdef484f35a13212c1e04287f
3
+ metadata.gz: 312f14d0e2d9cff16ea45cd52f0c5912d4a88150bd2b9c2ed9035772d7c36775
4
+ data.tar.gz: 28e9728f028b3c088ebf45eaf4c94d91a307954a06352e8f6af422c487e547cf
5
5
  SHA512:
6
- metadata.gz: 2ee0a3db0692e0691fe903381c9732755f0a227e31196bae13f16e73f36db32e872f932fae46db1ba529f37cbb5ae87052b3e6b3514d34497682e101e67dad7a
7
- data.tar.gz: 905af8235a9e0ac6fa112e255c9e672778b2af24449424a5b1f14cfa2160b0451147ec083ec959b9d320dafb8ee2141bd30a6f85dc73d2272e46aa6e939c30b1
6
+ metadata.gz: f843062447f1586b31c359b929130f9671ad08c0b1ccafa67e793bf734c184aa0eb297490df915e4da353ed12fc80ffcec6afcd4dfa8d443cfe72469cf1860d5
7
+ data.tar.gz: f7d4d86b5de8757cd09348d163acdfb6c65bc3b6101737b8e1d9d5a8b095b018092babb18f978b2d8068d0b881a15282390a74a00f15a05feffec58d7012ee3b
data/config/admin.yml ADDED
@@ -0,0 +1,10 @@
1
+ settings:
2
+ - layout
3
+ - head
4
+
5
+ cardtypes:
6
+ styling:
7
+ - layout_type
8
+
9
+ views:
10
+ - modal_link
@@ -0,0 +1,85 @@
1
+ # TODO: some of this should be moved to right/options!!
2
+ # or to type/JSON?
3
+
4
+ def options_hash
5
+ json_options? ? options_card.parse_content : option_hash_from_names
6
+ end
7
+
8
+ def json_options?
9
+ options_card&.type_id == JsonID
10
+ end
11
+
12
+ def option_hash_from_names
13
+ option_names.each_with_object({}) do |name, hash|
14
+ hash[name] = name
15
+ end
16
+ end
17
+
18
+ def option_names
19
+ if (selected_options = item_names)
20
+ (standard_option_names + selected_options).uniq
21
+ else
22
+ standard_option_names
23
+ end
24
+ end
25
+
26
+ def option_cards
27
+ option_names.map do |name|
28
+ Card.fetch name, new: {}
29
+ end
30
+ end
31
+
32
+ def standard_option_names
33
+ if json_options?
34
+ options_hash.values.map(&:to_name)
35
+ else
36
+ option_names_from_items
37
+ end
38
+ end
39
+
40
+ def option_names_from_items
41
+ o_card = options_card
42
+ limit = o_card.try(:default_limit).to_i
43
+ context_name = right_type? ? nil : name
44
+ o_card.item_names context: context_name, limit: limit
45
+ end
46
+
47
+ def options_card
48
+ @options_card ||= rule_card(:content_options) || right_type_options || Card[:all]
49
+ end
50
+
51
+ def options_card_name
52
+ options_card&.name&.url_key
53
+ end
54
+
55
+ private
56
+
57
+ def right_type_options
58
+ Card.fetch [right.name, :type, :by_name] if right_type?
59
+ end
60
+
61
+ def right_type?
62
+ right&.type_id == CardtypeID
63
+ end
64
+
65
+ format do
66
+ delegate :options_card, :options_card_name, to: :card
67
+ end
68
+
69
+ format :html do
70
+ def option_label option_name, id
71
+ wrap_with :label, class: "form-check-label", for: id do
72
+ option_label_text option_name
73
+ end
74
+ end
75
+
76
+ def option_view
77
+ @option_view ||= card.rule(:content_option_view) || :smart_label
78
+ end
79
+
80
+ def option_label_text option_name
81
+ return option_name unless (option_card = Card.fetch option_name)
82
+
83
+ nest option_card, view: option_view
84
+ end
85
+ end
@@ -3,3 +3,11 @@ format :html do
3
3
  wrap_with_nav_item nav_dropdown
4
4
  end
5
5
  end
6
+
7
+ format do
8
+ def nest_item_array
9
+ card.item_cards.map do |item|
10
+ nest_item item, view: :core
11
+ end
12
+ end
13
+ end
data/set/all/modal.rb CHANGED
@@ -16,24 +16,9 @@ format :html do
16
16
  ""
17
17
  end
18
18
 
19
- def show_in_modal_link link_text, body
20
- link_to_view :modal, link_text, "data-modal-body": body, "data-slotter-mode": "modal"
21
- end
22
-
23
- def modal_close_button link_text="Close", opts={}
24
- classes = opts.delete(:class)
25
- button_opts = opts.merge(MODAL_CLOSE_OPTS)
26
- add_class button_opts, classes if classes
27
- button_tag link_text, button_opts
28
- end
29
-
30
- def modal_submit_button opts={}
31
- add_class opts, "submit-button _close-modal"
32
- submit_button opts
33
- end
34
-
35
19
  view :modal_menu, unknown: true, wrap: :modal_menu do
36
- [close_modal_window, pop_out_modal_window]
20
+ [render_close_modal_link,
21
+ render_pop_out_modal_link(optional: :show)]
37
22
  end
38
23
 
39
24
  wrapper :modal_menu, :div, class: "modal-menu _modal-menu ms-auto"
@@ -52,6 +37,32 @@ format :html do
52
37
  modal_link _render_title, size: voo.size
53
38
  end
54
39
 
40
+ view :close_modal_link, unknown: true do
41
+ link_to icon_tag(:close), path: "",
42
+ class: "_close-modal btn-close",
43
+ "data-bs-dismiss": "modal"
44
+ end
45
+
46
+ view :pop_out_modal_link, unknown: :blank do
47
+ link_to icon_tag(:modal), path: {}, class: "pop-out-modal btn-close"
48
+ end
49
+
50
+ def show_in_modal_link link_text, body
51
+ link_to_view :modal, link_text, "data-modal-body": body, "data-slotter-mode": "modal"
52
+ end
53
+
54
+ def modal_close_button link_text="Close", opts={}
55
+ classes = opts.delete(:class)
56
+ button_opts = opts.merge(MODAL_CLOSE_OPTS)
57
+ add_class button_opts, classes if classes
58
+ button_tag link_text, button_opts
59
+ end
60
+
61
+ def modal_submit_button opts={}
62
+ add_class opts, "submit-button _close-modal"
63
+ submit_button opts
64
+ end
65
+
55
66
  def modal_link text=nil, opts={}
56
67
  opts = modal_link_opts(opts)
57
68
  opts[:path][:layout] ||= :modal
@@ -87,18 +98,6 @@ format :html do
87
98
  size.in?(MODAL_SIZE.keys) ? size : cast_modal_option(size)
88
99
  end
89
100
 
90
- def close_modal_window
91
- link_to icon_tag(:close), path: "",
92
- class: "_close-modal btn-close",
93
- "data-bs-dismiss": "modal"
94
- end
95
-
96
- def pop_out_modal_window
97
- return unless card.known?
98
-
99
- link_to icon_tag(:modal), path: {}, class: "pop-out-modal btn-close"
100
- end
101
-
102
101
  private
103
102
 
104
103
  def normalize_modal_option key, opts
@@ -1,8 +1,19 @@
1
+ basket[:cache_seed_names] << %i[all layout]
2
+
1
3
  format :html do
2
- # TODO: use CodeFile cards for these
3
- # builtin layouts allow for rescue / testing
4
- # HTML_LAYOUTS = Mod::Loader.load_layouts(:html).merge "none" => "{{_main}}"
5
- # HAML_LAYOUTS = Mod::Loader.load_layouts(:haml)
4
+ # for override
5
+ def layout_for_view _view
6
+ nil
7
+ end
8
+
9
+ # public for testing
10
+ def explicit_modal_wrapper? view
11
+ return unless (wrap_view = view_setting :wrap, view)
12
+
13
+ (wrapper_names(wrap_view) & %i[modal board]).any?
14
+ end
15
+
16
+ private
6
17
 
7
18
  def show_with_page_layout view, args
8
19
  main!
@@ -19,35 +30,10 @@ format :html do
19
30
  params[:layout] || layout_for_view(view) || layout_name_from_rule || :default
20
31
  end
21
32
 
22
- # for override
23
- def layout_for_view _view
24
- nil
25
- end
26
-
27
- def render_with_layout view, layout, args={}
28
- view_opts = Layout.main_nest_opts(layout, self)
29
- view ||= view_opts.delete(:view) || default_page_view
30
- view_opts[:home_view] = view
31
- view_opts[:layout] = layout
32
- render! view, view_opts.reverse_merge(args)
33
- end
34
-
35
- def default_page_view
36
- default_nest_view
37
- end
38
-
39
- def show_layout?
40
- !Env.ajax? || params[:layout]
41
- end
42
-
43
- def explicit_modal_wrapper? view
44
- return unless (wrap_view = view_setting :wrap, view)
45
-
46
- (wrapper_names(wrap_view) & %i[modal board]).any?
33
+ def layout_name_from_rule
34
+ card.rule_card(:layout)&.try :first_name
47
35
  end
48
36
 
49
- private
50
-
51
37
  def main_render_args view, args
52
38
  args[:view] = view if view
53
39
  args[:main] = true
@@ -55,15 +41,19 @@ format :html do
55
41
  args
56
42
  end
57
43
 
58
- def layout_name_from_rule
59
- card.rule_card(:layout)&.try :first_name
60
- end
61
-
62
44
  def render_outside_of_layout view, args
63
45
  body = render_with_layout nil, page_layout(view), {}
64
46
  body_with_modal body, render!(view, args)
65
47
  end
66
48
 
49
+ def render_with_layout view, layout, args={}
50
+ view_opts = Layout.main_nest_opts(layout, self)
51
+ view ||= view_opts.delete(:view) || default_page_view
52
+ view_opts[:home_view] = view
53
+ view_opts[:layout] = layout
54
+ render! view, view_opts.reverse_merge(args)
55
+ end
56
+
67
57
  def body_with_modal body, modal
68
58
  if body.include? "</body>"
69
59
  # a bit hacky
@@ -2,15 +2,15 @@ include_set Abstract::AccountDropdown
2
2
 
3
3
  assign_type :session
4
4
 
5
- def ok_to_read
5
+ def ok_to_read?
6
6
  true
7
7
  end
8
8
 
9
- def ok_to_update
9
+ def ok_to_update?
10
10
  left_id == Auth.current_id
11
11
  end
12
12
 
13
- def ok_to_create
13
+ def ok_to_create?
14
14
  left_id == Auth.current_id
15
15
  end
16
16
 
@@ -26,7 +26,7 @@ event :validate_role_enabling, :validate, on: :save do
26
26
  end
27
27
 
28
28
  event :clear_roles_cache, :prepare_to_store, before: :store_in_session do
29
- clear_roles
29
+ Auth.current.clear_roles
30
30
  Auth.update_always_cache nil
31
31
  end
32
32
 
data/set/right/head.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require "coderay"
2
2
 
3
- def ok_to_read
3
+ def ok_to_read?
4
4
  true
5
5
  end
6
6
 
7
7
  format :html do
8
- view :head_content do
8
+ view :head_content, cache: :yes do
9
9
  process_content render_raw
10
10
  end
11
11
 
data/set/right/layout.rb CHANGED
@@ -1 +1,5 @@
1
1
  assign_type :pointer
2
+
3
+ # def item_references?
4
+ # false
5
+ # end
@@ -1,6 +1,6 @@
1
1
  include_set Abstract::AccountDropdown
2
2
 
3
- def ok_to_read
3
+ def ok_to_read?
4
4
  true
5
5
  end
6
6
 
@@ -72,7 +72,7 @@ format :html do
72
72
 
73
73
  def can_disable_roles?
74
74
  Auth.current_roles.size > 1 &&
75
- Card::Codename.exists?(:enabled_roles) # workaround for broken migrations
75
+ Card::Codename.exist?(:enabled_roles) # workaround for broken migrations
76
76
  end
77
77
 
78
78
  def account_link_text purpose
data/set/self/head.rb CHANGED
@@ -20,6 +20,9 @@ format :html do
20
20
  "Content can't be edited."
21
21
  end
22
22
 
23
+ view :bar_bottom do
24
+ end
25
+
23
26
  def escape_in_main
24
27
  main? ? (h yield) : yield
25
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-layout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-11-18 00:00:00.000000000 Z
13
+ date: 2024-10-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,56 +18,56 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.106.0
21
+ version: 1.108.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.106.0
28
+ version: 1.108.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-account
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.16.0
35
+ version: 0.18.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.16.0
42
+ version: 0.18.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: card-mod-session
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - '='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.16.0
49
+ version: 0.18.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 0.16.0
56
+ version: 0.18.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: card-mod-tabs
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.16.0
63
+ version: 0.18.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.16.0
70
+ version: 0.18.0
71
71
  description: ''
72
72
  email:
73
73
  - info@decko.org
@@ -83,6 +83,7 @@ files:
83
83
  - assets/style/layout.scss
84
84
  - assets/style/modal.scss
85
85
  - assets/style/overlay.scss
86
+ - config/admin.yml
86
87
  - config/locales/de.yml
87
88
  - config/locales/en.yml
88
89
  - data/files/mod_layout_script_asset_output/file.js
@@ -96,6 +97,7 @@ files:
96
97
  - lib/card/layout/unknown_layout.rb
97
98
  - set/abstract/account_dropdown.rb
98
99
  - set/abstract/items.rb
100
+ - set/abstract/items/options_api.rb
99
101
  - set/abstract/list.rb
100
102
  - set/all/alert.rb
101
103
  - set/all/layouts.rb
@@ -121,7 +123,7 @@ files:
121
123
  - set/type/layout_type.rb
122
124
  homepage: https://decko.org
123
125
  licenses:
124
- - GPL-3.0
126
+ - GPL-3.0-or-later
125
127
  metadata:
126
128
  source_code_uri: https://github.com/decko-commons/decko
127
129
  homepage_uri: https://decko.org
@@ -138,14 +140,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
140
  requirements:
139
141
  - - ">="
140
142
  - !ruby/object:Gem::Version
141
- version: '2.5'
143
+ version: '3.0'
142
144
  required_rubygems_version: !ruby/object:Gem::Requirement
143
145
  requirements:
144
146
  - - ">="
145
147
  - !ruby/object:Gem::Version
146
148
  version: '0'
147
149
  requirements: []
148
- rubygems_version: 3.4.10
150
+ rubygems_version: 3.5.7
149
151
  signing_key:
150
152
  specification_version: 4
151
153
  summary: decko layouts