b4um_generators 0.1.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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +28 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.de.md +821 -0
- data/README.md +815 -0
- data/Rakefile +12 -0
- data/b4um_generators.gemspec +30 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/lib/b4um_generators/version.rb +5 -0
- data/lib/b4um_generators.rb +8 -0
- data/lib/generators/b4um/bento/bento_generator.rb +81 -0
- data/lib/generators/b4um/bento/templates/_alternating.html.erb.tt +15 -0
- data/lib/generators/b4um/bento/templates/_bento.html.erb.tt +26 -0
- data/lib/generators/b4um/bento/templates/_grid.html.erb.tt +13 -0
- data/lib/generators/b4um/bento/templates/_list.html.erb.tt +15 -0
- data/lib/generators/b4um/comments/comments_generator.rb +259 -0
- data/lib/generators/b4um/comments/templates/_comments.html.erb.tt +63 -0
- data/lib/generators/b4um/comments/templates/comment.rb.tt +5 -0
- data/lib/generators/b4um/comments/templates/comments_controller.rb.tt +45 -0
- data/lib/generators/b4um/comments/templates/create_comments.rb.tt +14 -0
- data/lib/generators/b4um/controller/controller_generator.rb +397 -0
- data/lib/generators/b4um/help/help_generator.rb +755 -0
- data/lib/generators/b4um/infinite_scroll/infinite_scroll_generator.rb +199 -0
- data/lib/generators/b4um/infinite_scroll/templates/infinite_scroll_controller.js +61 -0
- data/lib/generators/b4um/install/install_generator.rb +492 -0
- data/lib/generators/b4um/install/templates/_cookie_consent.html.erb +27 -0
- data/lib/generators/b4um/install/templates/_footer.html.erb +17 -0
- data/lib/generators/b4um/install/templates/_hero.html.erb +33 -0
- data/lib/generators/b4um/install/templates/_navigation.html.erb +31 -0
- data/lib/generators/b4um/install/templates/_sitemap.html.erb +48 -0
- data/lib/generators/b4um/install/templates/_theme_switcher.html.erb +57 -0
- data/lib/generators/b4um/install/templates/b4um/badges.css +43 -0
- data/lib/generators/b4um/install/templates/b4um/base.css +42 -0
- data/lib/generators/b4um/install/templates/b4um/callouts.css +58 -0
- data/lib/generators/b4um/install/templates/b4um/cards.css +401 -0
- data/lib/generators/b4um/install/templates/b4um/comments.css +52 -0
- data/lib/generators/b4um/install/templates/b4um/cookie-consent.css +83 -0
- data/lib/generators/b4um/install/templates/b4um/empty-state.css +26 -0
- data/lib/generators/b4um/install/templates/b4um/flash.css +86 -0
- data/lib/generators/b4um/install/templates/b4um/footer.css +338 -0
- data/lib/generators/b4um/install/templates/b4um/forms.css +924 -0
- data/lib/generators/b4um/install/templates/b4um/hero.css +149 -0
- data/lib/generators/b4um/install/templates/b4um/layout.css +166 -0
- data/lib/generators/b4um/install/templates/b4um/lightbox.css +268 -0
- data/lib/generators/b4um/install/templates/b4um/navigation.css +257 -0
- data/lib/generators/b4um/install/templates/b4um/pagination.css +85 -0
- data/lib/generators/b4um/install/templates/b4um/resources.css +121 -0
- data/lib/generators/b4um/install/templates/b4um/search.css +41 -0
- data/lib/generators/b4um/install/templates/b4um/tables.css +67 -0
- data/lib/generators/b4um/install/templates/b4um/theme-switcher.css +178 -0
- data/lib/generators/b4um/install/templates/b4um/theme.css +132 -0
- data/lib/generators/b4um/install/templates/b4um.css +20 -0
- data/lib/generators/b4um/install/templates/b4um.yml +12 -0
- data/lib/generators/b4um/install/templates/b4um_helper.rb +27 -0
- data/lib/generators/b4um/install/templates/cookie_consent_controller.js +76 -0
- data/lib/generators/b4um/install/templates/dismissible_controller.js +7 -0
- data/lib/generators/b4um/install/templates/image_lightbox_controller.js +414 -0
- data/lib/generators/b4um/install/templates/image_preview_controller.js +85 -0
- data/lib/generators/b4um/install/templates/navigation_controller.js +25 -0
- data/lib/generators/b4um/install/templates/navigation_helper.rb +26 -0
- data/lib/generators/b4um/install/templates/sitemap_controller.js +35 -0
- data/lib/generators/b4um/install/templates/theme_controller.js +122 -0
- data/lib/generators/b4um/pagination/pagination_generator.rb +179 -0
- data/lib/generators/b4um/pagination/templates/_pagination.html.erb.tt +48 -0
- data/lib/generators/b4um/pagination/templates/pagination.rb +36 -0
- data/lib/generators/b4um/scaffold/scaffold_generator.rb +333 -0
- data/lib/generators/b4um/scaffold/templates/_bento.html.erb.tt +26 -0
- data/lib/generators/b4um/scaffold/templates/_form.html.erb.tt +218 -0
- data/lib/generators/b4um/scaffold/templates/_resource.html.erb.tt +144 -0
- data/lib/generators/b4um/scaffold/templates/_table.html.erb.tt +40 -0
- data/lib/generators/b4um/scaffold/templates/edit.html.erb.tt +21 -0
- data/lib/generators/b4um/scaffold/templates/index.html.erb.tt +24 -0
- data/lib/generators/b4um/scaffold/templates/new.html.erb.tt +17 -0
- data/lib/generators/b4um/scaffold/templates/show.html.erb.tt +31 -0
- data/lib/generators/b4um/search/search_generator.rb +165 -0
- data/lib/generators/b4um/search/templates/search.rb +34 -0
- data/lib/generators/b4um/search/templates/search_form.html.erb.tt +15 -0
- data/lib/generators/b4um/table/table_generator.rb +63 -0
- data/lib/generators/b4um/table/templates/_table.html.erb.tt +40 -0
- data/lib/generators/b4um/trix/templates/b4um_rich_text_helper.rb +58 -0
- data/lib/generators/b4um/trix/templates/b4um_trix.js +551 -0
- data/lib/generators/b4um/trix/trix_generator.rb +383 -0
- data/sig/b4um_generators.rbs +4 -0
- metadata +148 -0
data/README.de.md
ADDED
|
@@ -0,0 +1,821 @@
|
|
|
1
|
+
[English](README.md) | Deutsch
|
|
2
|
+
|
|
3
|
+
# b4um Generators
|
|
4
|
+
|
|
5
|
+
b4um Generators ist eine Sammlung wiederverwendbarer Rails-Generatoren, Templates, Komponenten und Anwendungsvorgaben
|
|
6
|
+
für b4um-Rails-Projekte.
|
|
7
|
+
|
|
8
|
+
Das Gem bietet eine einheitliche Grundlage für Rails-Anwendungen und enthält Generatoren für Scaffolds, Controller,
|
|
9
|
+
Bento-Layouts, Tabellen, Pagination, Infinite Scroll, Suche, Kommentare und Rich-Text-Bearbeitung.
|
|
10
|
+
|
|
11
|
+
Die generierten Komponenten verwenden ein gemeinsames b4um-Styling und sind darauf ausgelegt, miteinander zu
|
|
12
|
+
funktionieren.
|
|
13
|
+
|
|
14
|
+
## Voraussetzungen
|
|
15
|
+
|
|
16
|
+
- Ruby >= 3.1
|
|
17
|
+
- Rails >= 8.0 und < 9.0
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
b4um Generators wird während der Entwicklung derzeit als lokales Gem verwendet.
|
|
22
|
+
|
|
23
|
+
Füge das Gem zur `Gemfile` der Rails-Anwendung hinzu:
|
|
24
|
+
|
|
25
|
+
```ruby
|
|
26
|
+
gem "b4um_generators", "~> 0.1.0", path: "/pfad/zu/b4um_generators"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Führe anschließend aus:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bundle install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Erste Schritte
|
|
36
|
+
|
|
37
|
+
Installiere die b4um-Anwendungsvorgaben:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
bin/rails generate b4um:install
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Der Installer fügt der Rails-Anwendung die gemeinsame b4um-Anwendungsstruktur, Stylesheets, JavaScript-Controller,
|
|
44
|
+
Helper und Konfiguration hinzu.
|
|
45
|
+
|
|
46
|
+
Während der Installation können optionale Funktionen interaktiv ausgewählt werden:
|
|
47
|
+
|
|
48
|
+
- bcrypt für Passwort-Unterstützung
|
|
49
|
+
- Active Storage für Bildanhänge
|
|
50
|
+
- Hero-Bereich
|
|
51
|
+
- Footer
|
|
52
|
+
- Footer-Sitemap
|
|
53
|
+
- Cookie-Einwilligung
|
|
54
|
+
|
|
55
|
+
Die Sitemap steht zur Verfügung, wenn der Footer installiert wird.
|
|
56
|
+
|
|
57
|
+
Wenn ein optionales Gem ausgewählt wird und noch nicht vorhanden ist, fügt b4um es zur `Gemfile` hinzu und führt
|
|
58
|
+
`bundle install` aus.
|
|
59
|
+
|
|
60
|
+
Wenn Active Storage ausgewählt wird und noch nicht installiert ist, installiert b4um Active Storage und führt die
|
|
61
|
+
erforderliche Datenbankmigration aus.
|
|
62
|
+
|
|
63
|
+
Die zentrale b4um-Konfiguration befindet sich unter:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
config/b4um.yml
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Generatoren
|
|
70
|
+
|
|
71
|
+
Das Gem stellt derzeit folgende Generatoren bereit:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
b4um:install
|
|
75
|
+
b4um:scaffold
|
|
76
|
+
b4um:bento
|
|
77
|
+
b4um:table
|
|
78
|
+
b4um:controller
|
|
79
|
+
b4um:pagination
|
|
80
|
+
b4um:infinite_scroll
|
|
81
|
+
b4um:search
|
|
82
|
+
b4um:comments
|
|
83
|
+
b4um:trix
|
|
84
|
+
b4um:help
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Für eine ausführliche Befehlsübersicht und zusätzliche Beispiele:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
bin/rails generate b4um:help
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Scaffold-Generator
|
|
94
|
+
|
|
95
|
+
Erzeuge eine Rails-Ressource mit den b4um-Views und -Komponenten:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
bin/rails generate b4um:scaffold MODEL ATTRIBUTES
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Beispiel:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
bin/rails generate b4um:scaffold Product name:string description:text price:decimal status:string
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Der Scaffold-Generator bietet:
|
|
108
|
+
|
|
109
|
+
- b4um-Formulare
|
|
110
|
+
- Index-, Show-, New- und Edit-Views
|
|
111
|
+
- Standardmäßig ein Bento-Index-Layout
|
|
112
|
+
- Optionales Tabellen-Index-Layout
|
|
113
|
+
- Automatischen Navigationseintrag
|
|
114
|
+
- Aktiven Navigationszustand
|
|
115
|
+
- Anzeige von Formular-Validierungsfehlern
|
|
116
|
+
- Flash-Meldungen
|
|
117
|
+
- Unterstützung für Passwortfelder
|
|
118
|
+
- Optionale lesbare URL-Parameter
|
|
119
|
+
|
|
120
|
+
### Bento-Index
|
|
121
|
+
|
|
122
|
+
Der standardmäßige Scaffold-Index verwendet das responsive b4um-Bento-Kartenlayout.
|
|
123
|
+
|
|
124
|
+
### Tabellen-Index
|
|
125
|
+
|
|
126
|
+
Um stattdessen einen tabellenbasierten Index zu erzeugen, verwende:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
bin/rails generate b4um:scaffold Product name:string description:text price:decimal status:string --layout=table
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Tabellen-Layouts bieten automatisch:
|
|
133
|
+
|
|
134
|
+
- Responsives b4um-Tabellen-Styling
|
|
135
|
+
- Kürzung von Textfeldern auf 100 Zeichen
|
|
136
|
+
- Darstellung von Statusfeldern als b4um-Badges
|
|
137
|
+
- Aktionsspalte
|
|
138
|
+
- Empty-State-Darstellung
|
|
139
|
+
|
|
140
|
+
### Lesbare URL-Parameter
|
|
141
|
+
|
|
142
|
+
Ein Scaffold kann lesbare URLs erzeugen und dabei die Datenbank-ID in der URL beibehalten.
|
|
143
|
+
|
|
144
|
+
Verwende:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
--param=ATTRIBUTE
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Beispiel:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
bin/rails generate b4um:scaffold Article title:string body:text --param=title
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Dadurch entstehen URLs wie:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
/articles/17-my-first-article
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Die ID bleibt Bestandteil der URL, sodass die normale Rails-Ressourcensuche weiterhin verwendet werden kann.
|
|
163
|
+
|
|
164
|
+
Der lesbare Teil wird aus dem ausgewählten Attribut erzeugt und ändert sich automatisch, wenn sich dieses Attribut
|
|
165
|
+
ändert.
|
|
166
|
+
|
|
167
|
+
## Bento und Karten
|
|
168
|
+
|
|
169
|
+
b4um enthält ein responsives Kartensystem, das auch unabhängig von den Generatoren verwendet werden kann.
|
|
170
|
+
|
|
171
|
+
Grundlegendes Beispiel:
|
|
172
|
+
|
|
173
|
+
```html
|
|
174
|
+
<div class="b4um-grid">
|
|
175
|
+
<article class="b4um-card">...</article>
|
|
176
|
+
</div>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Verfügbare Kartenvarianten:
|
|
180
|
+
|
|
181
|
+
```text
|
|
182
|
+
b4um-card
|
|
183
|
+
b4um-card--wide
|
|
184
|
+
b4um-card--large
|
|
185
|
+
b4um-card--full
|
|
186
|
+
b4um-card--soft
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Häufig verwendete Klassen für Karteninhalte:
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
b4um-card__eyebrow
|
|
193
|
+
b4um-card__title
|
|
194
|
+
b4um-card__text
|
|
195
|
+
b4um-card__actions
|
|
196
|
+
b4um-card__media
|
|
197
|
+
b4um-card__image
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Das Kartenraster passt sich automatisch an Tablet- und Mobil-Layouts an.
|
|
201
|
+
|
|
202
|
+
### Bento-Generator
|
|
203
|
+
|
|
204
|
+
Erzeuge ein wiederverwendbares Layout für ein bestehendes Modell:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
bin/rails generate b4um:bento Product
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Das Standardlayout ist `grid`.
|
|
211
|
+
|
|
212
|
+
Verfügbare Layouts:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
bin/rails generate b4um:bento Product --layout=grid
|
|
216
|
+
bin/rails generate b4um:bento Product --layout=list
|
|
217
|
+
bin/rails generate b4um:bento Product --layout=alternating
|
|
218
|
+
bin/rails generate b4um:bento Product --layout=bento
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Die Layouts:
|
|
222
|
+
|
|
223
|
+
- `grid` — responsives Kartenraster mit drei Spalten
|
|
224
|
+
- `list` — kompaktes horizontales Listenlayout
|
|
225
|
+
- `alternating` — großzügiges, abwechselndes Inhaltslayout
|
|
226
|
+
- `bento` — klassisches Bento-Layout mit unterschiedlichen Kartengrößen
|
|
227
|
+
|
|
228
|
+
Das Modell und das zugehörige Ressourcen-Partial müssen bereits vorhanden sein.
|
|
229
|
+
|
|
230
|
+
Für ein `Product`-Modell wird das generierte Partial hier gespeichert:
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
app/views/products/_bento.html.erb
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Einbindung:
|
|
237
|
+
|
|
238
|
+
```erb
|
|
239
|
+
<%= render "bento", products: @products %>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Das Partial verwendet eine lokale Collection und kann daher auch mit einer anderen Collection wiederverwendet werden:
|
|
243
|
+
|
|
244
|
+
```erb
|
|
245
|
+
<%= render "products/bento", products: @featured_products %>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Tabellen-Generator
|
|
249
|
+
|
|
250
|
+
Erzeuge eine wiederverwendbare b4um-Tabelle für ein bestehendes Modell:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
bin/rails generate b4um:table MODEL FIELDS
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Beispiel:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
bin/rails generate b4um:table Product name:string description:text price:decimal status:string
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Das Modell muss bereits vorhanden sein.
|
|
263
|
+
|
|
264
|
+
Für ein `Product`-Modell wird das generierte Partial hier gespeichert:
|
|
265
|
+
|
|
266
|
+
```text
|
|
267
|
+
app/views/products/_table.html.erb
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Die generierte Tabelle bietet:
|
|
271
|
+
|
|
272
|
+
- Responsives Tabellenlayout
|
|
273
|
+
- Typisierte Felddefinitionen
|
|
274
|
+
- Kürzung von Textfeldern auf 100 Zeichen
|
|
275
|
+
- Darstellung von Statusfeldern als b4um-Badges
|
|
276
|
+
- Aktionsspalte mit Show-Button
|
|
277
|
+
- Empty-State-Darstellung
|
|
278
|
+
|
|
279
|
+
Einbindung:
|
|
280
|
+
|
|
281
|
+
```erb
|
|
282
|
+
<%= render "table", products: @products %>
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Das Partial kann auch mit einer anderen Collection verwendet werden:
|
|
286
|
+
|
|
287
|
+
```erb
|
|
288
|
+
<%= render "products/table", products: @featured_products %>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Controller-Generator
|
|
292
|
+
|
|
293
|
+
Erzeuge einen Controller und seine Actions mit:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
bin/rails generate b4um:controller NAME ACTIONS
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Beispiel:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
bin/rails generate b4um:controller Pages home about impressum agb
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Der Controller-Generator:
|
|
306
|
+
|
|
307
|
+
- Verwendet den Standard-Rails-Controller-Generator
|
|
308
|
+
- Erstellt die gewünschten Actions und Views
|
|
309
|
+
- Fügt reguläre Action-Links automatisch zur b4um-Navigation hinzu
|
|
310
|
+
- Fügt unterstützte rechtliche Seiten automatisch zum b4um-Footer hinzu
|
|
311
|
+
- Hält rechtliche Seiten aus der Hauptnavigation heraus
|
|
312
|
+
|
|
313
|
+
Erkannte deutsche rechtliche Seiten:
|
|
314
|
+
|
|
315
|
+
```text
|
|
316
|
+
impressum
|
|
317
|
+
datenschutz
|
|
318
|
+
agb
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Erkannte englische rechtliche Seiten:
|
|
322
|
+
|
|
323
|
+
```text
|
|
324
|
+
imprint
|
|
325
|
+
privacy
|
|
326
|
+
privacy_policy
|
|
327
|
+
terms
|
|
328
|
+
terms_and_conditions
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Footer-Links setzen voraus, dass der b4um-Footer installiert ist.
|
|
332
|
+
|
|
333
|
+
Controller-Actions können außerdem direkt einer Sitemap-Spalte zugewiesen werden:
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
bin/rails generate b4um:controller Pages faq support --sitemap=column_3
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## Passwort-Unterstützung
|
|
340
|
+
|
|
341
|
+
Definiere für die Passwort-Authentifizierung ein `password_digest`-Attribut:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
bin/rails generate b4um:scaffold User name:string email:string password_digest:string
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Der Scaffold-Generator erzeugt automatisch Passwortfelder, anstatt `password_digest` direkt anzuzeigen.
|
|
348
|
+
|
|
349
|
+
Die Passwort-Unterstützung benötigt bcrypt.
|
|
350
|
+
|
|
351
|
+
bcrypt kann während der Installation ausgewählt werden:
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
bin/rails generate b4um:install
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Falls erforderlich, fügt b4um bcrypt zur `Gemfile` der Anwendung hinzu und installiert es.
|
|
358
|
+
|
|
359
|
+
## Active Storage und Bilder
|
|
360
|
+
|
|
361
|
+
Bildanhänge verwenden Rails Active Storage.
|
|
362
|
+
|
|
363
|
+
Active Storage kann während der Installation ausgewählt werden:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
bin/rails generate b4um:install
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Wenn Active Storage noch nicht installiert ist, installiert b4um es und führt die erforderliche Migration aus.
|
|
370
|
+
|
|
371
|
+
### Einzelnes Bild
|
|
372
|
+
|
|
373
|
+
Verwende:
|
|
374
|
+
|
|
375
|
+
```text
|
|
376
|
+
image:attachment
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Beispiel:
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
bin/rails generate b4um:scaffold Article title:string image:attachment
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Mehrere Bilder
|
|
386
|
+
|
|
387
|
+
Verwende:
|
|
388
|
+
|
|
389
|
+
```text
|
|
390
|
+
images:attachments
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
Beispiel:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
bin/rails generate b4um:scaffold Gallery title:string images:attachments
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Die Bildunterstützung umfasst:
|
|
400
|
+
|
|
401
|
+
- Active-Storage-Integration
|
|
402
|
+
- Bildvorschau vor dem Speichern
|
|
403
|
+
- Vorschau bestehender Bilder beim Bearbeiten
|
|
404
|
+
- Hinzufügen neuer Bilder, ohne bestehende Bilder zu entfernen
|
|
405
|
+
- Entfernen einzelner bestehender Bilder
|
|
406
|
+
- Bild-Lightbox
|
|
407
|
+
- Vorher-/Weiter-Navigation
|
|
408
|
+
- Maus- und Touch-Swipe
|
|
409
|
+
- Tastaturnavigation
|
|
410
|
+
|
|
411
|
+
## Pagination
|
|
412
|
+
|
|
413
|
+
Füge einer bestehenden Ressource serverseitige Pagination hinzu:
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
bin/rails generate b4um:pagination Product
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
Standardmäßig werden 20 Datensätze pro Seite angezeigt.
|
|
420
|
+
|
|
421
|
+
Eine eigene Seitengröße kann angegeben werden:
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
bin/rails generate b4um:pagination Product --per-page=50
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Modell, Controller und Index-View müssen bereits vorhanden sein.
|
|
428
|
+
|
|
429
|
+
Pagination bietet:
|
|
430
|
+
|
|
431
|
+
- Serverseitige Pagination mit Active Record `limit` und `offset`
|
|
432
|
+
- Kein zusätzliches Pagination-Gem erforderlich
|
|
433
|
+
- Vorher-/Weiter-Navigation
|
|
434
|
+
- Nummerierte Seitennavigation
|
|
435
|
+
- Beibehaltung bestehender Query-Parameter
|
|
436
|
+
- Integration mit Bento- und Tabellen-Layouts
|
|
437
|
+
- Sichere Behandlung ungültiger oder zu großer Seitennummern
|
|
438
|
+
|
|
439
|
+
## Infinite Scroll
|
|
440
|
+
|
|
441
|
+
Füge einer bestehenden Ressource automatisches Infinite Scrolling hinzu:
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
bin/rails generate b4um:infinite_scroll Product
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Standardmäßig werden 20 Datensätze pro Seite geladen.
|
|
448
|
+
|
|
449
|
+
Eine eigene Seitengröße kann angegeben werden:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
bin/rails generate b4um:infinite_scroll Product --per-page=50
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Modell, Controller und Index-View müssen bereits vorhanden sein.
|
|
456
|
+
|
|
457
|
+
Infinite Scroll bietet:
|
|
458
|
+
|
|
459
|
+
- Automatisches Nachladen beim Scrollen
|
|
460
|
+
- Serverseitige Pagination mit Active Record `limit` und `offset`
|
|
461
|
+
- Kein zusätzliches Pagination-Gem erforderlich
|
|
462
|
+
- Integration mit Bento- und Tabellen-Layouts
|
|
463
|
+
- Beibehaltung bestehender Query-Parameter
|
|
464
|
+
- Automatisches Beenden nach der letzten Seite
|
|
465
|
+
- Ersetzen einer bestehenden b4um-Pagination-Navigation
|
|
466
|
+
- Sichere wiederholte Ausführung des Generators
|
|
467
|
+
|
|
468
|
+
## Suche
|
|
469
|
+
|
|
470
|
+
Füge einer bestehenden Ressource eine datenbankgestützte Suche hinzu:
|
|
471
|
+
|
|
472
|
+
```bash
|
|
473
|
+
bin/rails generate b4um:search Product
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
Modell, Controller und Index-View müssen bereits vorhanden sein.
|
|
477
|
+
|
|
478
|
+
Die Suche bietet:
|
|
479
|
+
|
|
480
|
+
- Suche über String- und Text-Spalten
|
|
481
|
+
- Groß-/Kleinschreibung ignorierende Teiltreffer
|
|
482
|
+
- Sicheres Escaping von Suchbegriffen
|
|
483
|
+
- Vollständige Collection bei leerer Suche
|
|
484
|
+
- Integration mit Bento- und Tabellen-Layouts
|
|
485
|
+
- Integration mit Pagination und Infinite Scroll
|
|
486
|
+
- Beibehaltung des Suchbegriffs beim Navigieren zwischen Seiten
|
|
487
|
+
- Kein zusätzliches Such-Gem erforderlich
|
|
488
|
+
- Sichere wiederholte Ausführung des Generators
|
|
489
|
+
|
|
490
|
+
## Kommentare
|
|
491
|
+
|
|
492
|
+
Füge einem bestehenden Modell polymorphe Kommentare hinzu:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
bin/rails generate b4um:comments Article
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
Der Kommentar-Generator bietet:
|
|
499
|
+
|
|
500
|
+
- Polymorphes `Comment`-Modell
|
|
501
|
+
- Kommentar-Verknüpfung am ausgewählten Modell
|
|
502
|
+
- Verschachtelte Create- und Destroy-Routen
|
|
503
|
+
- Comments-Controller
|
|
504
|
+
- Kommentarliste und Formular
|
|
505
|
+
- Löschbestätigung
|
|
506
|
+
- b4um-Formular- und Karten-Styling
|
|
507
|
+
- Unterstützung mehrerer kommentierbarer Modelle
|
|
508
|
+
- Sichere wiederholte Ausführung des Generators
|
|
509
|
+
|
|
510
|
+
Weitere Modelle können dasselbe Kommentarsystem verwenden:
|
|
511
|
+
|
|
512
|
+
```bash
|
|
513
|
+
bin/rails generate b4um:comments Product
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
Bestehende b4um-Comments-Controller werden automatisch erweitert.
|
|
517
|
+
|
|
518
|
+
Unbekannte benutzerdefinierte Comments-Controller bleiben unverändert und führen dazu, dass der Generator abbricht,
|
|
519
|
+
anstatt eigenen Code zu überschreiben.
|
|
520
|
+
|
|
521
|
+
## Trix und Rich Text
|
|
522
|
+
|
|
523
|
+
Füge einer bestehenden b4um-Ressource Rails Action Text mit Trix hinzu:
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
bin/rails generate b4um:trix MODEL ATTRIBUTE
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
Beispiel:
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
bin/rails generate b4um:trix Article content
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Modell und Formular müssen bereits vorhanden sein.
|
|
536
|
+
|
|
537
|
+
Der Generator fügt hinzu:
|
|
538
|
+
|
|
539
|
+
```ruby
|
|
540
|
+
has_rich_text :content
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
und ersetzt das ausgewählte Formularfeld durch einen Rich-Text-Editor:
|
|
544
|
+
|
|
545
|
+
```ruby
|
|
546
|
+
form.rich_text_area :content
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
Die b4um-Trix-Integration bietet:
|
|
550
|
+
|
|
551
|
+
- Automatische Installation von Action Text, falls erforderlich
|
|
552
|
+
- Rich-Text-Verknüpfung im Modell
|
|
553
|
+
- Austausch ausschließlich des ausgewählten Formularfeldes
|
|
554
|
+
- Kompakte Plain-Text-Vorschauen in Bento-Karten
|
|
555
|
+
- Bild-Lightbox
|
|
556
|
+
- Vorher-/Weiter-Navigation für Bilder
|
|
557
|
+
- Maus- und Touch-Swipe
|
|
558
|
+
- Tastaturnavigation
|
|
559
|
+
- Responsive Bildergalerien
|
|
560
|
+
- Sticky Trix Toolbar
|
|
561
|
+
- Überschriften H1 bis H6
|
|
562
|
+
- Linke, zentrierte und rechte Textausrichtung
|
|
563
|
+
- Text- und Hintergrundfarben
|
|
564
|
+
- Horizontale Trennlinien
|
|
565
|
+
- Editierbare `DIV`-, `SECTION`- und `ARTICLE`-Container mit IDs
|
|
566
|
+
- Editierbare Container-Formatierung
|
|
567
|
+
- Entfernen aktiver Container-Wrapper
|
|
568
|
+
- Sichere wiederholte Ausführung des Generators
|
|
569
|
+
|
|
570
|
+
## Hero-Bereich
|
|
571
|
+
|
|
572
|
+
Der Installer kann optional einen Hero-Bereich erstellen.
|
|
573
|
+
|
|
574
|
+
Wähle ihn bei der Ausführung von:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
bin/rails generate b4um:install
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
Das generierte Partial befindet sich unter:
|
|
581
|
+
|
|
582
|
+
```text
|
|
583
|
+
app/views/shared/_hero.html.erb
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
Der Hero funktioniert standardmäßig auch ohne Bild und enthält Beispiele für:
|
|
587
|
+
|
|
588
|
+
- Hero-Titel und Text
|
|
589
|
+
- Optionalen Aktionslink
|
|
590
|
+
- Optionales Hero-Bild
|
|
591
|
+
|
|
592
|
+
Die Hero-CSS-Klassen verwenden das Präfix `b4um-hero`.
|
|
593
|
+
|
|
594
|
+
## Footer und Sitemap
|
|
595
|
+
|
|
596
|
+
Der b4um-Footer ist optional und kann während der interaktiven Installation ausgewählt werden:
|
|
597
|
+
|
|
598
|
+
```text
|
|
599
|
+
Add a footer? (y/n)
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
Der generierte Footer befindet sich unter:
|
|
603
|
+
|
|
604
|
+
```text
|
|
605
|
+
app/views/shared/_footer.html.erb
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Er bietet:
|
|
609
|
+
|
|
610
|
+
- Automatisches aktuelles Jahr
|
|
611
|
+
- Platzhalter für den Anwendungsnamen
|
|
612
|
+
- Automatische Links zu rechtlichen Seiten, die mit `b4um:controller` erzeugt wurden
|
|
613
|
+
- Optionale Sitemap
|
|
614
|
+
- Optionale Cookie-Einstellungen
|
|
615
|
+
|
|
616
|
+
Wenn der Footer installiert wird, kann b4um optional eine Sitemap hinzufügen:
|
|
617
|
+
|
|
618
|
+
```text
|
|
619
|
+
Add a sitemap to the footer? (y/n)
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
Die Sitemap wird als separates Partial installiert und nur dann im Footer gerendert, wenn sie ausgewählt wurde.
|
|
623
|
+
|
|
624
|
+
Das generierte Sitemap-Partial befindet sich unter:
|
|
625
|
+
|
|
626
|
+
```text
|
|
627
|
+
app/views/shared/_sitemap.html.erb
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
Der zugehörige Stimulus-Controller befindet sich unter:
|
|
631
|
+
|
|
632
|
+
```text
|
|
633
|
+
app/javascript/controllers/sitemap_controller.js
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### Sitemap-Spalten
|
|
637
|
+
|
|
638
|
+
Wenn die Sitemap aktiviert wird, kann während der Installation die Anzahl der Sitemap-Spalten ausgewählt werden:
|
|
639
|
+
|
|
640
|
+
```text
|
|
641
|
+
Number of sitemap columns [4]:
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
Die Sitemap unterstützt zwischen 2 und 5 Spalten.
|
|
645
|
+
|
|
646
|
+
Drücke Enter, um den Standardwert von 4 Spalten zu verwenden.
|
|
647
|
+
|
|
648
|
+
Nach Auswahl der Spaltenanzahl fragt b4um nach dem Titel jeder ausgewählten Spalte.
|
|
649
|
+
|
|
650
|
+
Beispiel mit vier Spalten:
|
|
651
|
+
|
|
652
|
+
```text
|
|
653
|
+
Sitemap column 1 title [Kontakt]:
|
|
654
|
+
Sitemap column 2 title [Inhalte]:
|
|
655
|
+
Sitemap column 3 title [Service]:
|
|
656
|
+
Sitemap column 4 title [Mehr]:
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Bei fünf Spalten steht eine zusätzliche Spalte zur Verfügung:
|
|
660
|
+
|
|
661
|
+
```text
|
|
662
|
+
Sitemap column 5 title [Weitere]:
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
Drücke Enter, um den jeweils in Klammern angezeigten Standardtitel beizubehalten.
|
|
666
|
+
|
|
667
|
+
Nur die ausgewählte Anzahl von Spalten wird in `config/b4um.yml` geschrieben.
|
|
668
|
+
|
|
669
|
+
Die Standardkonfiguration mit vier Spalten sieht beispielsweise so aus:
|
|
670
|
+
|
|
671
|
+
```yaml
|
|
672
|
+
sitemap:
|
|
673
|
+
- key: column_1
|
|
674
|
+
title: Kontakt
|
|
675
|
+
- key: column_2
|
|
676
|
+
title: Inhalte
|
|
677
|
+
- key: column_3
|
|
678
|
+
title: Service
|
|
679
|
+
- key: column_4
|
|
680
|
+
title: Mehr
|
|
681
|
+
|
|
682
|
+
legal_links:
|
|
683
|
+
placement: footer
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
Eine Sitemap mit zwei Spalten enthält nur `column_1` und `column_2`. Eine Sitemap mit fünf Spalten enthält zusätzlich
|
|
687
|
+
`column_5`.
|
|
688
|
+
|
|
689
|
+
Die Titel können später durch Bearbeiten von `config/b4um.yml` geändert werden.
|
|
690
|
+
|
|
691
|
+
Die Schlüssel `column_1` bis `column_5` identifizieren die Sitemap-Spalten unabhängig von ihren sichtbaren Titeln.
|
|
692
|
+
|
|
693
|
+
Es sollten nur Schlüssel für Spalten verwendet werden, die in der aktuellen Konfiguration tatsächlich vorhanden sind.
|
|
694
|
+
|
|
695
|
+
Auf größeren Bildschirmen werden die konfigurierten Sitemap-Spalten automatisch über den Footer verteilt. Auf kleineren
|
|
696
|
+
Bildschirmen verwendet die Sitemap ihr responsives, einklappbares Layout.
|
|
697
|
+
|
|
698
|
+
### Seiten zur Sitemap hinzufügen
|
|
699
|
+
|
|
700
|
+
Controller-Actions können direkt einer Sitemap-Spalte zugewiesen werden:
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
bin/rails generate b4um:controller Pages faq support --sitemap=column_3
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
Wenn `--sitemap` verwendet wird, werden die generierten Actions der ausgewählten Sitemap-Spalte hinzugefügt und nicht
|
|
707
|
+
der Hauptnavigation.
|
|
708
|
+
|
|
709
|
+
Die Einträge werden in `config/b4um.yml` gespeichert.
|
|
710
|
+
|
|
711
|
+
Sitemap-Links verwenden Rails-Route-Helper:
|
|
712
|
+
|
|
713
|
+
```yaml
|
|
714
|
+
links:
|
|
715
|
+
- title: FAQ
|
|
716
|
+
route: faq_path
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
Nur gültige Rails-Path-Helper, die auf `_path` enden, werden vom b4um-Sitemap-Helper aufgelöst.
|
|
720
|
+
|
|
721
|
+
### Rechtliche Links
|
|
722
|
+
|
|
723
|
+
Rechtliche Seiten verwenden standardmäßig den separaten rechtlichen Bereich des Footers:
|
|
724
|
+
|
|
725
|
+
```yaml
|
|
726
|
+
legal_links:
|
|
727
|
+
placement: footer
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
Alternativ können sie einer bestehenden Sitemap-Spalte zugewiesen werden:
|
|
731
|
+
|
|
732
|
+
```yaml
|
|
733
|
+
legal_links:
|
|
734
|
+
placement: column_4
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
Wenn rechtliche Seiten einer Sitemap-Spalte zugewiesen sind, fügt b4um sie automatisch dieser Spalte hinzu und
|
|
738
|
+
dupliziert sie nicht zusätzlich im separaten rechtlichen Footer-Bereich.
|
|
739
|
+
|
|
740
|
+
Für die Platzierung wird der Sitemap-Spaltenschlüssel und nicht der sichtbare Titel verwendet. Dadurch können die
|
|
741
|
+
Spaltentitel frei geändert werden.
|
|
742
|
+
|
|
743
|
+
## Cookie-Einwilligung
|
|
744
|
+
|
|
745
|
+
Die Cookie-Einwilligung kann während der b4um-Installation optional aktiviert werden:
|
|
746
|
+
|
|
747
|
+
```text
|
|
748
|
+
Add cookie consent? (y/n)
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Die Cookie-Einwilligung kann unabhängig vom Footer installiert werden.
|
|
752
|
+
|
|
753
|
+
Wenn sie aktiviert wird, erstellt b4um:
|
|
754
|
+
|
|
755
|
+
```text
|
|
756
|
+
app/views/shared/_cookie_consent.html.erb
|
|
757
|
+
app/javascript/controllers/cookie_consent_controller.js
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
Die Einwilligungsentscheidung des Besuchers wird im Local Storage des Browsers gespeichert.
|
|
761
|
+
|
|
762
|
+
Wenn sowohl Footer als auch Cookie-Einwilligung installiert sind, fügt b4um dem Footer automatisch eine
|
|
763
|
+
`Cookie-Einstellungen`-Schaltfläche hinzu.
|
|
764
|
+
|
|
765
|
+
Damit können Besucher das Cookie-Banner erneut öffnen und ihre Auswahl später ändern.
|
|
766
|
+
|
|
767
|
+
Wenn die Cookie-Einwilligung ohne Footer installiert wird, funktioniert das Banner weiterhin. Es wird lediglich keine
|
|
768
|
+
Schaltfläche für die Cookie-Einstellungen im Footer hinzugefügt.
|
|
769
|
+
|
|
770
|
+
## Hilfe
|
|
771
|
+
|
|
772
|
+
Für die vollständige integrierte Übersicht der Generatoren, Optionen und Funktionen:
|
|
773
|
+
|
|
774
|
+
```bash
|
|
775
|
+
bin/rails generate b4um:help
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
## Entwicklung
|
|
779
|
+
|
|
780
|
+
Installiere nach dem Auschecken des Repositorys zunächst die Abhängigkeiten:
|
|
781
|
+
|
|
782
|
+
```bash
|
|
783
|
+
bin/setup
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
Führe die vollständige Testsuite aus mit:
|
|
787
|
+
|
|
788
|
+
```bash
|
|
789
|
+
bundle exec rspec
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
Führe RuboCop aus mit:
|
|
793
|
+
|
|
794
|
+
```bash
|
|
795
|
+
bundle exec rubocop
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
Prüfe Änderungen auf Whitespace-Fehler mit:
|
|
799
|
+
|
|
800
|
+
```bash
|
|
801
|
+
git diff --check
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
Das Gem kann lokal getestet werden, indem das Repository über `path:` in der `Gemfile` einer Rails-Anwendung eingebunden
|
|
805
|
+
wird.
|
|
806
|
+
|
|
807
|
+
## Version
|
|
808
|
+
|
|
809
|
+
Aktuelle Version: `0.1.0`
|
|
810
|
+
|
|
811
|
+
## Autor
|
|
812
|
+
|
|
813
|
+
Alexander Baum
|
|
814
|
+
|
|
815
|
+
b4um
|
|
816
|
+
|
|
817
|
+
https://www.b4um.com
|
|
818
|
+
|
|
819
|
+
## Lizenz
|
|
820
|
+
|
|
821
|
+
b4um Generators ist unter den Bedingungen der MIT-Lizenz verfügbar.
|