plutonium 0.19.8 → 0.19.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/plutonium/core/controller.rb +7 -2
- data/lib/plutonium/definition/base.rb +9 -0
- data/lib/plutonium/definition/inheritable_config_attr.rb +33 -0
- data/lib/plutonium/ui/form/interaction.rb +1 -1
- data/lib/plutonium/ui/page/base.rb +10 -0
- data/lib/plutonium/ui/page/edit.rb +2 -0
- data/lib/plutonium/ui/page/index.rb +2 -0
- data/lib/plutonium/ui/page/interactive_action.rb +2 -0
- data/lib/plutonium/ui/page/new.rb +2 -0
- data/lib/plutonium/ui/page/show.rb +2 -0
- data/lib/plutonium/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8abd5778444672b73c3d753ff3cabb345b3ce4df072be785fa4b26e7bf467f95
|
4
|
+
data.tar.gz: 2d98edacc5cacf6b30c8b5feaf77c3c5c6a4397e39650003ea0216bf15cc6757
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93f0c4e6f53206fc2ff1390b24812637b00e6dd930574304729847222d39d323228991084105f64635da44961132c4c3b241c2d81fb8ffe47c777c02957897f8
|
7
|
+
data.tar.gz: 1a0c4f493282a182fe264001b69c4dfd09788e81a2d38ee665edcf10365f369bc638f67d2a7386edcb8e4dff828d26f4b9e5bc686ac4e1174ce0a4bdfced0cb8
|
@@ -16,7 +16,8 @@ module Plutonium
|
|
16
16
|
end
|
17
17
|
|
18
18
|
helper Plutonium::Helpers
|
19
|
-
helper_method :make_page_title, :resource_url_for,
|
19
|
+
helper_method :make_page_title, :resource_url_for,
|
20
|
+
:resource_url_args_for, :root_path, :app_name
|
20
21
|
|
21
22
|
append_view_path File.expand_path("app/views", Plutonium.root)
|
22
23
|
layout -> { turbo_frame_request? ? false : "resource" }
|
@@ -30,7 +31,11 @@ module Plutonium
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def make_page_title(title)
|
33
|
-
[title.presence,
|
34
|
+
[title.presence, app_name].compact.join(" | ")
|
35
|
+
end
|
36
|
+
|
37
|
+
def app_name
|
38
|
+
helpers.application_name
|
34
39
|
end
|
35
40
|
|
36
41
|
#
|
@@ -26,6 +26,7 @@ module Plutonium
|
|
26
26
|
class Base
|
27
27
|
include DefineableProps
|
28
28
|
include ConfigAttr
|
29
|
+
include InheritableConfigAttr
|
29
30
|
include Actions
|
30
31
|
include Sorting
|
31
32
|
include Search
|
@@ -64,6 +65,14 @@ module Plutonium
|
|
64
65
|
:new_page_title, :new_page_description,
|
65
66
|
:edit_page_title, :edit_page_description
|
66
67
|
|
68
|
+
# breadcrumbs
|
69
|
+
inheritable_config_attr :breadcrumbs,
|
70
|
+
:index_page_breadcrumbs, :new_page_breadcrumbs,
|
71
|
+
:edit_page_breadcrumbs, :show_page_breadcrumbs,
|
72
|
+
:interactive_action_page_breadcrumbs
|
73
|
+
# global default
|
74
|
+
breadcrumbs true
|
75
|
+
|
67
76
|
def initialize
|
68
77
|
super
|
69
78
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Plutonium
|
2
|
+
module Definition
|
3
|
+
module InheritableConfigAttr
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
class_methods do
|
7
|
+
def inheritable_config_attr(*names)
|
8
|
+
names.each do |name|
|
9
|
+
# Create the underlying class_attribute
|
10
|
+
attr_name = :"#{name}_config"
|
11
|
+
class_attribute attr_name, instance_reader: true, instance_accessor: false, default: nil
|
12
|
+
|
13
|
+
# Define class-level method that acts as both getter/setter
|
14
|
+
define_singleton_method(name) do |value = :__not_set__|
|
15
|
+
if value == :__not_set__
|
16
|
+
# Getter behavior
|
17
|
+
public_send(:"#{attr_name}")
|
18
|
+
else
|
19
|
+
# Setter behavior
|
20
|
+
public_send(:"#{attr_name}=", value)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Instance-level method
|
25
|
+
define_method(name) do
|
26
|
+
self.class.send(name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -43,9 +43,17 @@ module Plutonium
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def render_breadcrumbs
|
46
|
+
return unless render_breadcrumbs?
|
47
|
+
|
46
48
|
Breadcrumbs()
|
47
49
|
end
|
48
50
|
|
51
|
+
def render_breadcrumbs?
|
52
|
+
# Check specific page setting first, fall back to global setting
|
53
|
+
page_specific_setting = current_definition.send(:"#{page_type}_breadcrumbs")
|
54
|
+
page_specific_setting.nil? ? current_definition.breadcrumbs : page_specific_setting
|
55
|
+
end
|
56
|
+
|
49
57
|
def render_page_header
|
50
58
|
return unless page_title
|
51
59
|
|
@@ -106,6 +114,8 @@ module Plutonium
|
|
106
114
|
|
107
115
|
def render_after_footer
|
108
116
|
end
|
117
|
+
|
118
|
+
def page_type = raise NotImplementedError, "#{self.class}#page_type"
|
109
119
|
end
|
110
120
|
end
|
111
121
|
end
|
data/lib/plutonium/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plutonium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.19.
|
4
|
+
version: 0.19.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Froelich
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zeitwerk
|
@@ -726,6 +726,7 @@ files:
|
|
726
726
|
- lib/plutonium/definition/base.rb
|
727
727
|
- lib/plutonium/definition/config_attr.rb
|
728
728
|
- lib/plutonium/definition/defineable_props.rb
|
729
|
+
- lib/plutonium/definition/inheritable_config_attr.rb
|
729
730
|
- lib/plutonium/definition/nested_inputs.rb
|
730
731
|
- lib/plutonium/definition/presentable.rb
|
731
732
|
- lib/plutonium/definition/search.rb
|