plutonium 0.11.2 → 0.12.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/app/views/application/_resource_header.html copy.erb +287 -0
- data/app/views/application/_resource_header.html.erb +0 -249
- data/app/views/components/table/table_component.rb +2 -2
- data/lib/generators/pu/core/install/install_generator.rb +7 -7
- data/lib/generators/pu/eject/layout/layout_generator.rb +44 -0
- data/lib/generators/pu/eject/shell/shell_generator.rb +44 -0
- data/lib/generators/pu/lib/plutonium_generators/generator.rb +1 -1
- data/lib/generators/pu/lib/plutonium_generators/{model_generator.rb → model_generator_base.rb} +8 -8
- data/lib/generators/pu/pkg/app/app_generator.rb +4 -0
- data/lib/generators/pu/res/conn/conn_generator.rb +1 -1
- data/lib/generators/pu/res/model/model_generator.rb +1 -1
- data/lib/generators/pu/res/scaffold/scaffold_generator.rb +7 -1
- data/lib/generators/pu/rodauth/account_generator.rb +4 -0
- data/lib/generators/pu/rodauth/install_generator.rb +5 -0
- data/lib/generators/pu/rodauth/templates/app/models/account.rb.tt +1 -1
- data/lib/plutonium/resource/query_object.rb +5 -5
- data/lib/plutonium/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b2d283bb447f847e5572c33aa15dafa3dd859314e49beeebcd6d4ed43eb0fe15
|
|
4
|
+
data.tar.gz: c93d18374cb47f049bd8218d43c46fe66df9a83d7e10595f30f58715fee28274
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 178c4d95219eade116c333efbe8bbde980176ce4e4d93d1641ccae7e9a19ad1e7d1aa4394513f3466c7f7f9491a48bc4009c8ce3032a04d7a9bda27dde56c07a
|
|
7
|
+
data.tar.gz: db5b8b26c501faa4c25e7508775673f5553f567a67c78a7930a3d68b8354d7a4734fff6b9996dd2ed53a31e4f955c73b921f91ec5c360ede2b4469372d6cbe94
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
<%# locals: (sidebar_toggle:) %>
|
|
2
|
+
|
|
3
|
+
<%= render_component :resource_header, sidebar_toggle: do |header| %>
|
|
4
|
+
<% header.with_action do %>
|
|
5
|
+
<%=
|
|
6
|
+
render_component :nav_grid_menu, label: "Apps" do |menu|
|
|
7
|
+
menu.with_item url: "#", name: "Sales", icon: "outline/sale-percent"
|
|
8
|
+
menu.with_item url: "#", name: "Users", icon: "outline/users"
|
|
9
|
+
end
|
|
10
|
+
%>
|
|
11
|
+
<% end %>
|
|
12
|
+
|
|
13
|
+
<% header.with_action do %>
|
|
14
|
+
<%= render_component :nav_user, email: current_user.email, logout_url: try(:logout_url) do |nav_user| %>
|
|
15
|
+
<% nav_user.with_section do |section| %>
|
|
16
|
+
<% section.with_link url: "#", label: "My profile" %>
|
|
17
|
+
<% section.with_link url: "#", label: "Account settings" %>
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
20
|
+
<% nav_user.with_section do |section| %>
|
|
21
|
+
<% section.with_link url: "#", label: "My likes" do |link| %>
|
|
22
|
+
<% link.with_leading do %>
|
|
23
|
+
<%= render_icon "outline/heart", classname: "mr-2 text-gray-400" %>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
26
|
+
|
|
27
|
+
<% section.with_link url: "#", label: "Pro version" do |link| %>
|
|
28
|
+
<% link.with_leading do %>
|
|
29
|
+
<%= render_icon "outline/fire", classname: "mr-2 text-primary-600 dark:text-primary-500" %>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% link.with_trailing do %>
|
|
32
|
+
<%= render_icon "outline/angle-right", size: :sm %>
|
|
33
|
+
<% end %>
|
|
34
|
+
<% end %>
|
|
35
|
+
<% end %>
|
|
36
|
+
<% end %>
|
|
37
|
+
<% end %>
|
|
38
|
+
|
|
39
|
+
<%#
|
|
40
|
+
|
|
41
|
+
<!-- Notifications -->
|
|
42
|
+
<div data-controller="resource-drop-down">
|
|
43
|
+
<button
|
|
44
|
+
type="button"
|
|
45
|
+
data-resource-drop-down-target="trigger"
|
|
46
|
+
class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
|
|
47
|
+
<span class="sr-only">View notifications</span>
|
|
48
|
+
<!-- Bell icon -->
|
|
49
|
+
<svg
|
|
50
|
+
aria-hidden="true"
|
|
51
|
+
class="w-6 h-6"
|
|
52
|
+
fill="currentColor"
|
|
53
|
+
viewBox="0 0 20 20"
|
|
54
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
55
|
+
<path
|
|
56
|
+
d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
|
|
57
|
+
</svg>
|
|
58
|
+
</button>
|
|
59
|
+
<!-- Dropdown menu -->
|
|
60
|
+
<div
|
|
61
|
+
data-resource-drop-down-target="menu"
|
|
62
|
+
class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
|
|
63
|
+
<div
|
|
64
|
+
class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
|
|
65
|
+
Notifications
|
|
66
|
+
</div>
|
|
67
|
+
<div>
|
|
68
|
+
<a
|
|
69
|
+
href="#"
|
|
70
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
71
|
+
<div class="shrink-0">
|
|
72
|
+
<img
|
|
73
|
+
class="w-11 h-11 rounded-full"
|
|
74
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
|
|
75
|
+
alt="Bonnie Green avatar"
|
|
76
|
+
/>
|
|
77
|
+
<div
|
|
78
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
|
|
79
|
+
<svg
|
|
80
|
+
aria-hidden="true"
|
|
81
|
+
class="w-3 h-3 text-white"
|
|
82
|
+
fill="currentColor"
|
|
83
|
+
viewBox="0 0 20 20"
|
|
84
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
85
|
+
<path
|
|
86
|
+
d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
|
|
87
|
+
<path
|
|
88
|
+
d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
|
|
89
|
+
</svg>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="pl-3 w-full">
|
|
93
|
+
<div
|
|
94
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
95
|
+
New message from
|
|
96
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
|
97
|
+
>Bonnie Green</span
|
|
98
|
+
>: "Hey, what's up? All set for the presentation?"
|
|
99
|
+
</div>
|
|
100
|
+
<div
|
|
101
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
102
|
+
a few moments ago
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</a>
|
|
106
|
+
<a
|
|
107
|
+
href="#"
|
|
108
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
109
|
+
<div class="shrink-0">
|
|
110
|
+
<img
|
|
111
|
+
class="w-11 h-11 rounded-full"
|
|
112
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
|
|
113
|
+
alt="Jese Leos avatar"
|
|
114
|
+
/>
|
|
115
|
+
<div
|
|
116
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
|
|
117
|
+
<svg
|
|
118
|
+
aria-hidden="true"
|
|
119
|
+
class="w-3 h-3 text-white"
|
|
120
|
+
fill="currentColor"
|
|
121
|
+
viewBox="0 0 20 20"
|
|
122
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
123
|
+
<path
|
|
124
|
+
d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
|
|
125
|
+
</svg>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
<div class="pl-3 w-full">
|
|
129
|
+
<div
|
|
130
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
131
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
|
132
|
+
>Jese leos</span>
|
|
133
|
+
and
|
|
134
|
+
<span class="font-medium text-gray-900 dark:text-white"
|
|
135
|
+
>5 others</span>
|
|
136
|
+
started following you.
|
|
137
|
+
</div>
|
|
138
|
+
<div
|
|
139
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
140
|
+
10 minutes ago
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</a>
|
|
144
|
+
<a
|
|
145
|
+
href="#"
|
|
146
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
147
|
+
<div class="shrink-0">
|
|
148
|
+
<img
|
|
149
|
+
class="w-11 h-11 rounded-full"
|
|
150
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
|
|
151
|
+
alt="Joseph McFall avatar"
|
|
152
|
+
/>
|
|
153
|
+
<div
|
|
154
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
|
|
155
|
+
<svg
|
|
156
|
+
aria-hidden="true"
|
|
157
|
+
class="w-3 h-3 text-white"
|
|
158
|
+
fill="currentColor"
|
|
159
|
+
viewBox="0 0 20 20"
|
|
160
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
161
|
+
<path
|
|
162
|
+
fill-rule="evenodd"
|
|
163
|
+
d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
|
|
164
|
+
clip-rule="evenodd"
|
|
165
|
+
></path>
|
|
166
|
+
</svg>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
<div class="pl-3 w-full">
|
|
170
|
+
<div
|
|
171
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
172
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
|
173
|
+
>Joseph Mcfall</span>
|
|
174
|
+
and
|
|
175
|
+
<span class="font-medium text-gray-900 dark:text-white"
|
|
176
|
+
>141 others</span>
|
|
177
|
+
love your story. See it and view more stories.
|
|
178
|
+
</div>
|
|
179
|
+
<div
|
|
180
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
181
|
+
44 minutes ago
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
</a>
|
|
185
|
+
<a
|
|
186
|
+
href="#"
|
|
187
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
188
|
+
<div class="shrink-0">
|
|
189
|
+
<img
|
|
190
|
+
class="w-11 h-11 rounded-full"
|
|
191
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
|
|
192
|
+
alt="Roberta Casas image"
|
|
193
|
+
/>
|
|
194
|
+
<div
|
|
195
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
|
|
196
|
+
<svg
|
|
197
|
+
aria-hidden="true"
|
|
198
|
+
class="w-3 h-3 text-white"
|
|
199
|
+
fill="currentColor"
|
|
200
|
+
viewBox="0 0 20 20"
|
|
201
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
202
|
+
<path
|
|
203
|
+
fill-rule="evenodd"
|
|
204
|
+
d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
|
|
205
|
+
clip-rule="evenodd"></path>
|
|
206
|
+
</svg>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
<div class="pl-3 w-full">
|
|
210
|
+
<div
|
|
211
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
212
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
|
213
|
+
>Leslie Livingston</span>
|
|
214
|
+
mentioned you in a comment:
|
|
215
|
+
<span
|
|
216
|
+
class="font-medium text-primary-600 dark:text-primary-500"
|
|
217
|
+
>@bonnie.green</span>
|
|
218
|
+
what do you say?
|
|
219
|
+
</div>
|
|
220
|
+
<div
|
|
221
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
222
|
+
1 hour ago
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</a>
|
|
226
|
+
<a
|
|
227
|
+
href="#"
|
|
228
|
+
class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
|
|
229
|
+
<div class="shrink-0">
|
|
230
|
+
<img
|
|
231
|
+
class="w-11 h-11 rounded-full"
|
|
232
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
|
|
233
|
+
alt="Robert image"
|
|
234
|
+
/>
|
|
235
|
+
<div
|
|
236
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
|
|
237
|
+
<svg
|
|
238
|
+
aria-hidden="true"
|
|
239
|
+
class="w-3 h-3 text-white"
|
|
240
|
+
fill="currentColor"
|
|
241
|
+
viewBox="0 0 20 20"
|
|
242
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
243
|
+
<path
|
|
244
|
+
d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
|
|
245
|
+
></path>
|
|
246
|
+
</svg>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
<div class="pl-3 w-full">
|
|
250
|
+
<div
|
|
251
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
252
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
|
253
|
+
>Robert Brown</span>
|
|
254
|
+
posted a new video: Glassmorphism - learn how to implement
|
|
255
|
+
the new design trend.
|
|
256
|
+
</div>
|
|
257
|
+
<div
|
|
258
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
259
|
+
3 hours ago
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
</a>
|
|
263
|
+
</div>
|
|
264
|
+
<a
|
|
265
|
+
href="#"
|
|
266
|
+
class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
|
|
267
|
+
<div class="inline-flex items-center">
|
|
268
|
+
<svg
|
|
269
|
+
aria-hidden="true"
|
|
270
|
+
class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
|
|
271
|
+
fill="currentColor"
|
|
272
|
+
viewBox="0 0 20 20"
|
|
273
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
274
|
+
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
|
|
275
|
+
<path
|
|
276
|
+
fill-rule="evenodd"
|
|
277
|
+
d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
|
|
278
|
+
clip-rule="evenodd"></path>
|
|
279
|
+
</svg>
|
|
280
|
+
View all
|
|
281
|
+
</div>
|
|
282
|
+
</a>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
|
|
286
|
+
%>
|
|
287
|
+
<% end %>
|
|
@@ -35,253 +35,4 @@
|
|
|
35
35
|
<% end %>
|
|
36
36
|
<% end %>
|
|
37
37
|
<% end %>
|
|
38
|
-
|
|
39
|
-
<%#
|
|
40
|
-
|
|
41
|
-
<!-- Notifications -->
|
|
42
|
-
<div data-controller="resource-drop-down">
|
|
43
|
-
<button
|
|
44
|
-
type="button"
|
|
45
|
-
data-resource-drop-down-target="trigger"
|
|
46
|
-
class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
|
|
47
|
-
<span class="sr-only">View notifications</span>
|
|
48
|
-
<!-- Bell icon -->
|
|
49
|
-
<svg
|
|
50
|
-
aria-hidden="true"
|
|
51
|
-
class="w-6 h-6"
|
|
52
|
-
fill="currentColor"
|
|
53
|
-
viewBox="0 0 20 20"
|
|
54
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
55
|
-
<path
|
|
56
|
-
d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
|
|
57
|
-
</svg>
|
|
58
|
-
</button>
|
|
59
|
-
<!-- Dropdown menu -->
|
|
60
|
-
<div
|
|
61
|
-
data-resource-drop-down-target="menu"
|
|
62
|
-
class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
|
|
63
|
-
<div
|
|
64
|
-
class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
|
|
65
|
-
Notifications
|
|
66
|
-
</div>
|
|
67
|
-
<div>
|
|
68
|
-
<a
|
|
69
|
-
href="#"
|
|
70
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
71
|
-
<div class="shrink-0">
|
|
72
|
-
<img
|
|
73
|
-
class="w-11 h-11 rounded-full"
|
|
74
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
|
|
75
|
-
alt="Bonnie Green avatar"
|
|
76
|
-
/>
|
|
77
|
-
<div
|
|
78
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
|
|
79
|
-
<svg
|
|
80
|
-
aria-hidden="true"
|
|
81
|
-
class="w-3 h-3 text-white"
|
|
82
|
-
fill="currentColor"
|
|
83
|
-
viewBox="0 0 20 20"
|
|
84
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
85
|
-
<path
|
|
86
|
-
d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
|
|
87
|
-
<path
|
|
88
|
-
d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
|
|
89
|
-
</svg>
|
|
90
|
-
</div>
|
|
91
|
-
</div>
|
|
92
|
-
<div class="pl-3 w-full">
|
|
93
|
-
<div
|
|
94
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
95
|
-
New message from
|
|
96
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
|
97
|
-
>Bonnie Green</span
|
|
98
|
-
>: "Hey, what's up? All set for the presentation?"
|
|
99
|
-
</div>
|
|
100
|
-
<div
|
|
101
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
102
|
-
a few moments ago
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
</a>
|
|
106
|
-
<a
|
|
107
|
-
href="#"
|
|
108
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
109
|
-
<div class="shrink-0">
|
|
110
|
-
<img
|
|
111
|
-
class="w-11 h-11 rounded-full"
|
|
112
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
|
|
113
|
-
alt="Jese Leos avatar"
|
|
114
|
-
/>
|
|
115
|
-
<div
|
|
116
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
|
|
117
|
-
<svg
|
|
118
|
-
aria-hidden="true"
|
|
119
|
-
class="w-3 h-3 text-white"
|
|
120
|
-
fill="currentColor"
|
|
121
|
-
viewBox="0 0 20 20"
|
|
122
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
123
|
-
<path
|
|
124
|
-
d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
|
|
125
|
-
</svg>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
<div class="pl-3 w-full">
|
|
129
|
-
<div
|
|
130
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
131
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
|
132
|
-
>Jese leos</span>
|
|
133
|
-
and
|
|
134
|
-
<span class="font-medium text-gray-900 dark:text-white"
|
|
135
|
-
>5 others</span>
|
|
136
|
-
started following you.
|
|
137
|
-
</div>
|
|
138
|
-
<div
|
|
139
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
140
|
-
10 minutes ago
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
</a>
|
|
144
|
-
<a
|
|
145
|
-
href="#"
|
|
146
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
147
|
-
<div class="shrink-0">
|
|
148
|
-
<img
|
|
149
|
-
class="w-11 h-11 rounded-full"
|
|
150
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
|
|
151
|
-
alt="Joseph McFall avatar"
|
|
152
|
-
/>
|
|
153
|
-
<div
|
|
154
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
|
|
155
|
-
<svg
|
|
156
|
-
aria-hidden="true"
|
|
157
|
-
class="w-3 h-3 text-white"
|
|
158
|
-
fill="currentColor"
|
|
159
|
-
viewBox="0 0 20 20"
|
|
160
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
161
|
-
<path
|
|
162
|
-
fill-rule="evenodd"
|
|
163
|
-
d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
|
|
164
|
-
clip-rule="evenodd"
|
|
165
|
-
></path>
|
|
166
|
-
</svg>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
<div class="pl-3 w-full">
|
|
170
|
-
<div
|
|
171
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
172
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
|
173
|
-
>Joseph Mcfall</span>
|
|
174
|
-
and
|
|
175
|
-
<span class="font-medium text-gray-900 dark:text-white"
|
|
176
|
-
>141 others</span>
|
|
177
|
-
love your story. See it and view more stories.
|
|
178
|
-
</div>
|
|
179
|
-
<div
|
|
180
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
181
|
-
44 minutes ago
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
</a>
|
|
185
|
-
<a
|
|
186
|
-
href="#"
|
|
187
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
|
188
|
-
<div class="shrink-0">
|
|
189
|
-
<img
|
|
190
|
-
class="w-11 h-11 rounded-full"
|
|
191
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
|
|
192
|
-
alt="Roberta Casas image"
|
|
193
|
-
/>
|
|
194
|
-
<div
|
|
195
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
|
|
196
|
-
<svg
|
|
197
|
-
aria-hidden="true"
|
|
198
|
-
class="w-3 h-3 text-white"
|
|
199
|
-
fill="currentColor"
|
|
200
|
-
viewBox="0 0 20 20"
|
|
201
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
202
|
-
<path
|
|
203
|
-
fill-rule="evenodd"
|
|
204
|
-
d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
|
|
205
|
-
clip-rule="evenodd"></path>
|
|
206
|
-
</svg>
|
|
207
|
-
</div>
|
|
208
|
-
</div>
|
|
209
|
-
<div class="pl-3 w-full">
|
|
210
|
-
<div
|
|
211
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
212
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
|
213
|
-
>Leslie Livingston</span>
|
|
214
|
-
mentioned you in a comment:
|
|
215
|
-
<span
|
|
216
|
-
class="font-medium text-primary-600 dark:text-primary-500"
|
|
217
|
-
>@bonnie.green</span>
|
|
218
|
-
what do you say?
|
|
219
|
-
</div>
|
|
220
|
-
<div
|
|
221
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
222
|
-
1 hour ago
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
</a>
|
|
226
|
-
<a
|
|
227
|
-
href="#"
|
|
228
|
-
class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
|
|
229
|
-
<div class="shrink-0">
|
|
230
|
-
<img
|
|
231
|
-
class="w-11 h-11 rounded-full"
|
|
232
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
|
|
233
|
-
alt="Robert image"
|
|
234
|
-
/>
|
|
235
|
-
<div
|
|
236
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
|
|
237
|
-
<svg
|
|
238
|
-
aria-hidden="true"
|
|
239
|
-
class="w-3 h-3 text-white"
|
|
240
|
-
fill="currentColor"
|
|
241
|
-
viewBox="0 0 20 20"
|
|
242
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
243
|
-
<path
|
|
244
|
-
d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
|
|
245
|
-
></path>
|
|
246
|
-
</svg>
|
|
247
|
-
</div>
|
|
248
|
-
</div>
|
|
249
|
-
<div class="pl-3 w-full">
|
|
250
|
-
<div
|
|
251
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
|
252
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
|
253
|
-
>Robert Brown</span>
|
|
254
|
-
posted a new video: Glassmorphism - learn how to implement
|
|
255
|
-
the new design trend.
|
|
256
|
-
</div>
|
|
257
|
-
<div
|
|
258
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
|
259
|
-
3 hours ago
|
|
260
|
-
</div>
|
|
261
|
-
</div>
|
|
262
|
-
</a>
|
|
263
|
-
</div>
|
|
264
|
-
<a
|
|
265
|
-
href="#"
|
|
266
|
-
class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
|
|
267
|
-
<div class="inline-flex items-center">
|
|
268
|
-
<svg
|
|
269
|
-
aria-hidden="true"
|
|
270
|
-
class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
|
|
271
|
-
fill="currentColor"
|
|
272
|
-
viewBox="0 0 20 20"
|
|
273
|
-
xmlns="http://www.w3.org/2000/svg">
|
|
274
|
-
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
|
|
275
|
-
<path
|
|
276
|
-
fill-rule="evenodd"
|
|
277
|
-
d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
|
|
278
|
-
clip-rule="evenodd"></path>
|
|
279
|
-
</svg>
|
|
280
|
-
View all
|
|
281
|
-
</div>
|
|
282
|
-
</a>
|
|
283
|
-
</div>
|
|
284
|
-
</div>
|
|
285
|
-
|
|
286
|
-
%>
|
|
287
38
|
<% end %>
|
|
@@ -19,9 +19,9 @@ module PlutoniumUi
|
|
|
19
19
|
# @param label [String] The label of the column.
|
|
20
20
|
# @param search_object [Object] The search object associated with the column.
|
|
21
21
|
# @param block [Proc] An optional block for additional column customization.
|
|
22
|
-
def column(name:, label:, search_object:, &
|
|
22
|
+
def column(name:, label:, search_object:, &)
|
|
23
23
|
@columns ||= []
|
|
24
|
-
@columns << Column.new(name:, label:, search_object:, &
|
|
24
|
+
@columns << Column.new(name:, label:, search_object:, &)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# Returns the base attributes for the table.
|
|
@@ -12,16 +12,16 @@ module Pu
|
|
|
12
12
|
desc "Set up the base requirements for Plutonium"
|
|
13
13
|
|
|
14
14
|
def start
|
|
15
|
-
|
|
16
|
-
install_required_gems
|
|
15
|
+
setup_packages
|
|
17
16
|
setup_app
|
|
17
|
+
eject_views
|
|
18
18
|
rescue => e
|
|
19
19
|
exception "#{self.class} failed:", e
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
|
-
def
|
|
24
|
+
def setup_packages
|
|
25
25
|
copy_file "config/packages.rb"
|
|
26
26
|
create_file "packages/.keep"
|
|
27
27
|
insert_into_file "config/application.rb", "\nrequire_relative \"packages\"\n", after: /Bundler\.require.*\n/
|
|
@@ -36,10 +36,10 @@ module Pu
|
|
|
36
36
|
environment "# config.plutonium.assets.logo = \"logo.png\""
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
def eject_views
|
|
40
|
+
invoke "pu:eject:layout", [], dest: "main_app",
|
|
41
|
+
force: options[:force],
|
|
42
|
+
skip: options[:skip]
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../../lib/plutonium_generators"
|
|
4
|
+
|
|
5
|
+
module Pu
|
|
6
|
+
module Eject
|
|
7
|
+
class LayoutGenerator < Rails::Generators::Base
|
|
8
|
+
include PlutoniumGenerators::Generator
|
|
9
|
+
|
|
10
|
+
source_root File.expand_path("templates", __dir__)
|
|
11
|
+
|
|
12
|
+
desc "Eject layout views into your own project"
|
|
13
|
+
|
|
14
|
+
class_option :dest, type: :string
|
|
15
|
+
class_option :rodauth, type: :boolean
|
|
16
|
+
|
|
17
|
+
def start
|
|
18
|
+
destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
|
|
19
|
+
[
|
|
20
|
+
"layouts/resource.html.erb"
|
|
21
|
+
].each do |file|
|
|
22
|
+
copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
|
|
23
|
+
end
|
|
24
|
+
rescue => e
|
|
25
|
+
exception "#{self.class} failed:", e
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def destination_app
|
|
31
|
+
@destination_app || select_app(options[:dest], msg: "Select destination app")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def copy_file(source_path, destination_path)
|
|
35
|
+
if File.exist?(source_path)
|
|
36
|
+
FileUtils.cp(source_path, destination_path)
|
|
37
|
+
say_status("info", "Copied #{source_path} to #{destination_path}", :green)
|
|
38
|
+
else
|
|
39
|
+
say_status("error", "Source file #{source_path} does not exist", :red)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../../lib/plutonium_generators"
|
|
4
|
+
|
|
5
|
+
module Pu
|
|
6
|
+
module Eject
|
|
7
|
+
class ShellGenerator < Rails::Generators::Base
|
|
8
|
+
include PlutoniumGenerators::Generator
|
|
9
|
+
|
|
10
|
+
source_root File.expand_path("templates", __dir__)
|
|
11
|
+
|
|
12
|
+
desc "Eject layout shell (i.e header, sidebar) into your own project"
|
|
13
|
+
|
|
14
|
+
class_option :dest, type: :string
|
|
15
|
+
|
|
16
|
+
def start
|
|
17
|
+
destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
|
|
18
|
+
[
|
|
19
|
+
"application/_resource_header.html.erb",
|
|
20
|
+
"application/_resource_sidebar.html.erb"
|
|
21
|
+
].each do |file|
|
|
22
|
+
copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
|
|
23
|
+
end
|
|
24
|
+
rescue => e
|
|
25
|
+
exception "#{self.class} failed:", e
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def destination_app
|
|
31
|
+
@destination_app || select_app(options[:dest], msg: "Select destination app")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def copy_file(source_path, destination_path)
|
|
35
|
+
if File.exist?(source_path)
|
|
36
|
+
FileUtils.cp(source_path, destination_path)
|
|
37
|
+
say_status("info", "Copied #{source_path} to #{destination_path}", :green)
|
|
38
|
+
else
|
|
39
|
+
say_status("error", "Source file #{source_path} does not exist", :red)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -34,7 +34,7 @@ module PlutoniumGenerators
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def available_apps
|
|
37
|
-
@available_apps ||= available_packages.select { |pkg| pkg.ends_with? "_app" }
|
|
37
|
+
@available_apps ||= ["main_app"] + available_packages.select { |pkg| pkg.ends_with? "_app" }
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def available_features
|
data/lib/generators/pu/lib/plutonium_generators/{model_generator.rb → model_generator_base.rb}
RENAMED
|
@@ -4,7 +4,7 @@ require "rails/generators"
|
|
|
4
4
|
require "rails/generators/active_record/model/model_generator"
|
|
5
5
|
|
|
6
6
|
module PlutoniumGenerators
|
|
7
|
-
class
|
|
7
|
+
class ModelGeneratorBase < ActiveRecord::Generators::ModelGenerator
|
|
8
8
|
include PlutoniumGenerators::Generator
|
|
9
9
|
|
|
10
10
|
remove_hook_for :test_framework
|
|
@@ -41,27 +41,27 @@ module PlutoniumGenerators
|
|
|
41
41
|
def name
|
|
42
42
|
@pu_name ||= begin
|
|
43
43
|
@original_name = @name
|
|
44
|
-
@
|
|
45
|
-
@name = [main_app? ? nil :
|
|
44
|
+
@selected_destination_feature = select_feature selected_destination_feature, msg: "Select destination feature"
|
|
45
|
+
@name = [main_app? ? nil : selected_destination_feature.underscore, super.singularize.underscore].compact.join "/"
|
|
46
46
|
set_destination_root!
|
|
47
47
|
@name
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def feature_package_name
|
|
52
|
-
main_app? ? nil :
|
|
52
|
+
main_app? ? nil : selected_destination_feature.camelize
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def main_app?
|
|
56
|
-
|
|
56
|
+
selected_destination_feature == "main_app"
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
def
|
|
60
|
-
@
|
|
59
|
+
def selected_destination_feature
|
|
60
|
+
@selected_destination_feature || options[:dest]
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def set_destination_root!
|
|
64
|
-
@destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{
|
|
64
|
+
@destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{selected_destination_feature.underscore}")]
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
# https://github.com/rails/rails/blob/main/railties/lib/rails/generators/generated_attribute.rb#L7
|
|
@@ -42,6 +42,10 @@ module Pu
|
|
|
42
42
|
directory "app/#{dir}", "packages/#{package_namespace}/app/#{dir}/#{package_namespace}"
|
|
43
43
|
end
|
|
44
44
|
create_file "packages/#{package_namespace}/app/views/#{package_namespace}/.keep"
|
|
45
|
+
|
|
46
|
+
invoke "pu:eject:shell", [], dest: package_namespace,
|
|
47
|
+
force: options[:force],
|
|
48
|
+
skip: options[:skip]
|
|
45
49
|
rescue => e
|
|
46
50
|
exception "#{self.class} failed:", e
|
|
47
51
|
end
|
|
@@ -14,7 +14,7 @@ module Pu
|
|
|
14
14
|
# argument :name
|
|
15
15
|
|
|
16
16
|
def start
|
|
17
|
-
source_feature = select_feature
|
|
17
|
+
source_feature = select_feature msg: "Select source feature"
|
|
18
18
|
source_module = (source_feature == "main_app") ? "ResourceRecord" : "#{source_feature.classify}::ResourceRecord"
|
|
19
19
|
|
|
20
20
|
Plutonium.eager_load_rails!
|
|
@@ -4,7 +4,7 @@ require_relative "../../lib/plutonium_generators"
|
|
|
4
4
|
|
|
5
5
|
module Pu
|
|
6
6
|
module Res
|
|
7
|
-
class ModelGenerator < PlutoniumGenerators::
|
|
7
|
+
class ModelGenerator < PlutoniumGenerators::ModelGeneratorBase
|
|
8
8
|
source_root File.expand_path("templates", __dir__)
|
|
9
9
|
|
|
10
10
|
def run_create_module
|
|
@@ -4,14 +4,18 @@ require_relative "../../lib/plutonium_generators"
|
|
|
4
4
|
|
|
5
5
|
module Pu
|
|
6
6
|
module Res
|
|
7
|
-
class ScaffoldGenerator < PlutoniumGenerators::
|
|
7
|
+
class ScaffoldGenerator < PlutoniumGenerators::ModelGeneratorBase
|
|
8
8
|
include PlutoniumGenerators::Generator
|
|
9
9
|
|
|
10
10
|
source_root File.expand_path("templates", __dir__)
|
|
11
11
|
|
|
12
12
|
desc "Scaffold a resource"
|
|
13
13
|
|
|
14
|
+
class_option :model, type: :boolean, default: true
|
|
15
|
+
|
|
14
16
|
def setup
|
|
17
|
+
return unless options[:model]
|
|
18
|
+
|
|
15
19
|
model_class = class_name.safe_constantize
|
|
16
20
|
if model_class.present? && attributes.empty? && prompt.yes?("Existing model class found. Do you want to import its attributes?")
|
|
17
21
|
attributes_str = model_class.content_columns.map { |col| "#{col.name}:#{col.type}" }
|
|
@@ -20,6 +24,8 @@ module Pu
|
|
|
20
24
|
end
|
|
21
25
|
|
|
22
26
|
def create_model
|
|
27
|
+
return unless options[:model]
|
|
28
|
+
|
|
23
29
|
invoke "pu:res:model", [@original_name, *@original_attributes], dest: selected_feature, **options
|
|
24
30
|
end
|
|
25
31
|
|
|
@@ -89,6 +89,10 @@ module Pu
|
|
|
89
89
|
return unless base?
|
|
90
90
|
|
|
91
91
|
template "app/models/account.rb", "app/models/#{account_path}.rb"
|
|
92
|
+
invoke "pu:res:scaffold", [table, "email:string", "status:integer"], dest: "main_app",
|
|
93
|
+
model: false,
|
|
94
|
+
force: true,
|
|
95
|
+
skip: options[:skip]
|
|
92
96
|
end
|
|
93
97
|
|
|
94
98
|
def create_mailer
|
|
@@ -48,6 +48,11 @@ module Pu
|
|
|
48
48
|
migration_template "db/migrate/install_rodauth.rb", "db/migrate/install_rodauth.rb" # , File.join(db_migrate_path, "#{migration_name}.rb")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
def eject_layout
|
|
52
|
+
file = "app/views/layouts/rodauth.html.erb"
|
|
53
|
+
FileUtils.cp Plutonium.root.join(file), Rails.root.join(file)
|
|
54
|
+
end
|
|
55
|
+
|
|
51
56
|
def show_instructions
|
|
52
57
|
readme "INSTRUCTIONS" if behavior == :invoke
|
|
53
58
|
end
|
|
@@ -190,9 +190,9 @@ module Plutonium
|
|
|
190
190
|
#
|
|
191
191
|
# @param name [Symbol] The name of the filter.
|
|
192
192
|
# @param body [Proc, nil] The body of the filter.
|
|
193
|
-
def define_filter(name, body = nil, &
|
|
193
|
+
def define_filter(name, body = nil, &)
|
|
194
194
|
body ||= name
|
|
195
|
-
filter_definitions[name] = build_query(body, &
|
|
195
|
+
filter_definitions[name] = build_query(body, &)
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
# Defines a scope with the given name and body.
|
|
@@ -251,14 +251,14 @@ module Plutonium
|
|
|
251
251
|
# @param body [Proc, Symbol] The body of the query.
|
|
252
252
|
# @yieldparam query [Query] The query object.
|
|
253
253
|
# @return [Query] The constructed query object.
|
|
254
|
-
def build_query(body, &
|
|
254
|
+
def build_query(body, &)
|
|
255
255
|
case body
|
|
256
256
|
when Symbol
|
|
257
257
|
raise "Cannot find scope :#{body} on #{resource_class}" unless resource_class.respond_to?(body)
|
|
258
258
|
|
|
259
|
-
ScopeQuery.new(body, &
|
|
259
|
+
ScopeQuery.new(body, &)
|
|
260
260
|
else
|
|
261
|
-
BlockQuery.new(body, &
|
|
261
|
+
BlockQuery.new(body, &)
|
|
262
262
|
end
|
|
263
263
|
end
|
|
264
264
|
|
data/lib/plutonium/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: plutonium
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stefan Froelich
|
|
@@ -720,6 +720,7 @@ files:
|
|
|
720
720
|
- app/views/application/_flash.html.erb
|
|
721
721
|
- app/views/application/_flash_alerts.html.erb
|
|
722
722
|
- app/views/application/_flash_toasts.html.erb
|
|
723
|
+
- app/views/application/_resource_header.html copy.erb
|
|
723
724
|
- app/views/application/_resource_header.html.erb
|
|
724
725
|
- app/views/application/_resource_sidebar.html.erb
|
|
725
726
|
- app/views/components/action_button/action_button_component.html.erb
|
|
@@ -874,6 +875,8 @@ files:
|
|
|
874
875
|
- lib/generators/pu/docker/install/templates/bin/restart
|
|
875
876
|
- lib/generators/pu/docker/install/templates/bin/shell
|
|
876
877
|
- lib/generators/pu/docker/install/templates/docker-compose.yml
|
|
878
|
+
- lib/generators/pu/eject/layout/layout_generator.rb
|
|
879
|
+
- lib/generators/pu/eject/shell/shell_generator.rb
|
|
877
880
|
- lib/generators/pu/gem/dotenv/dotenv_generator.rb
|
|
878
881
|
- lib/generators/pu/gem/dotenv/templates/.env
|
|
879
882
|
- lib/generators/pu/gem/dotenv/templates/.env.local
|
|
@@ -897,7 +900,7 @@ files:
|
|
|
897
900
|
- lib/generators/pu/lib/plutonium_generators/concerns/serializer.rb
|
|
898
901
|
- lib/generators/pu/lib/plutonium_generators/generator.rb
|
|
899
902
|
- lib/generators/pu/lib/plutonium_generators/installer.rb
|
|
900
|
-
- lib/generators/pu/lib/plutonium_generators/
|
|
903
|
+
- lib/generators/pu/lib/plutonium_generators/model_generator_base.rb
|
|
901
904
|
- lib/generators/pu/pkg/app/app_generator.rb
|
|
902
905
|
- lib/generators/pu/pkg/app/templates/app/controllers/concerns/controller.rb.tt
|
|
903
906
|
- lib/generators/pu/pkg/app/templates/app/controllers/controller.rb.tt
|