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.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +28 -0
  4. data/CHANGELOG.md +5 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.de.md +821 -0
  7. data/README.md +815 -0
  8. data/Rakefile +12 -0
  9. data/b4um_generators.gemspec +30 -0
  10. data/bin/console +11 -0
  11. data/bin/setup +8 -0
  12. data/lib/b4um_generators/version.rb +5 -0
  13. data/lib/b4um_generators.rb +8 -0
  14. data/lib/generators/b4um/bento/bento_generator.rb +81 -0
  15. data/lib/generators/b4um/bento/templates/_alternating.html.erb.tt +15 -0
  16. data/lib/generators/b4um/bento/templates/_bento.html.erb.tt +26 -0
  17. data/lib/generators/b4um/bento/templates/_grid.html.erb.tt +13 -0
  18. data/lib/generators/b4um/bento/templates/_list.html.erb.tt +15 -0
  19. data/lib/generators/b4um/comments/comments_generator.rb +259 -0
  20. data/lib/generators/b4um/comments/templates/_comments.html.erb.tt +63 -0
  21. data/lib/generators/b4um/comments/templates/comment.rb.tt +5 -0
  22. data/lib/generators/b4um/comments/templates/comments_controller.rb.tt +45 -0
  23. data/lib/generators/b4um/comments/templates/create_comments.rb.tt +14 -0
  24. data/lib/generators/b4um/controller/controller_generator.rb +397 -0
  25. data/lib/generators/b4um/help/help_generator.rb +755 -0
  26. data/lib/generators/b4um/infinite_scroll/infinite_scroll_generator.rb +199 -0
  27. data/lib/generators/b4um/infinite_scroll/templates/infinite_scroll_controller.js +61 -0
  28. data/lib/generators/b4um/install/install_generator.rb +492 -0
  29. data/lib/generators/b4um/install/templates/_cookie_consent.html.erb +27 -0
  30. data/lib/generators/b4um/install/templates/_footer.html.erb +17 -0
  31. data/lib/generators/b4um/install/templates/_hero.html.erb +33 -0
  32. data/lib/generators/b4um/install/templates/_navigation.html.erb +31 -0
  33. data/lib/generators/b4um/install/templates/_sitemap.html.erb +48 -0
  34. data/lib/generators/b4um/install/templates/_theme_switcher.html.erb +57 -0
  35. data/lib/generators/b4um/install/templates/b4um/badges.css +43 -0
  36. data/lib/generators/b4um/install/templates/b4um/base.css +42 -0
  37. data/lib/generators/b4um/install/templates/b4um/callouts.css +58 -0
  38. data/lib/generators/b4um/install/templates/b4um/cards.css +401 -0
  39. data/lib/generators/b4um/install/templates/b4um/comments.css +52 -0
  40. data/lib/generators/b4um/install/templates/b4um/cookie-consent.css +83 -0
  41. data/lib/generators/b4um/install/templates/b4um/empty-state.css +26 -0
  42. data/lib/generators/b4um/install/templates/b4um/flash.css +86 -0
  43. data/lib/generators/b4um/install/templates/b4um/footer.css +338 -0
  44. data/lib/generators/b4um/install/templates/b4um/forms.css +924 -0
  45. data/lib/generators/b4um/install/templates/b4um/hero.css +149 -0
  46. data/lib/generators/b4um/install/templates/b4um/layout.css +166 -0
  47. data/lib/generators/b4um/install/templates/b4um/lightbox.css +268 -0
  48. data/lib/generators/b4um/install/templates/b4um/navigation.css +257 -0
  49. data/lib/generators/b4um/install/templates/b4um/pagination.css +85 -0
  50. data/lib/generators/b4um/install/templates/b4um/resources.css +121 -0
  51. data/lib/generators/b4um/install/templates/b4um/search.css +41 -0
  52. data/lib/generators/b4um/install/templates/b4um/tables.css +67 -0
  53. data/lib/generators/b4um/install/templates/b4um/theme-switcher.css +178 -0
  54. data/lib/generators/b4um/install/templates/b4um/theme.css +132 -0
  55. data/lib/generators/b4um/install/templates/b4um.css +20 -0
  56. data/lib/generators/b4um/install/templates/b4um.yml +12 -0
  57. data/lib/generators/b4um/install/templates/b4um_helper.rb +27 -0
  58. data/lib/generators/b4um/install/templates/cookie_consent_controller.js +76 -0
  59. data/lib/generators/b4um/install/templates/dismissible_controller.js +7 -0
  60. data/lib/generators/b4um/install/templates/image_lightbox_controller.js +414 -0
  61. data/lib/generators/b4um/install/templates/image_preview_controller.js +85 -0
  62. data/lib/generators/b4um/install/templates/navigation_controller.js +25 -0
  63. data/lib/generators/b4um/install/templates/navigation_helper.rb +26 -0
  64. data/lib/generators/b4um/install/templates/sitemap_controller.js +35 -0
  65. data/lib/generators/b4um/install/templates/theme_controller.js +122 -0
  66. data/lib/generators/b4um/pagination/pagination_generator.rb +179 -0
  67. data/lib/generators/b4um/pagination/templates/_pagination.html.erb.tt +48 -0
  68. data/lib/generators/b4um/pagination/templates/pagination.rb +36 -0
  69. data/lib/generators/b4um/scaffold/scaffold_generator.rb +333 -0
  70. data/lib/generators/b4um/scaffold/templates/_bento.html.erb.tt +26 -0
  71. data/lib/generators/b4um/scaffold/templates/_form.html.erb.tt +218 -0
  72. data/lib/generators/b4um/scaffold/templates/_resource.html.erb.tt +144 -0
  73. data/lib/generators/b4um/scaffold/templates/_table.html.erb.tt +40 -0
  74. data/lib/generators/b4um/scaffold/templates/edit.html.erb.tt +21 -0
  75. data/lib/generators/b4um/scaffold/templates/index.html.erb.tt +24 -0
  76. data/lib/generators/b4um/scaffold/templates/new.html.erb.tt +17 -0
  77. data/lib/generators/b4um/scaffold/templates/show.html.erb.tt +31 -0
  78. data/lib/generators/b4um/search/search_generator.rb +165 -0
  79. data/lib/generators/b4um/search/templates/search.rb +34 -0
  80. data/lib/generators/b4um/search/templates/search_form.html.erb.tt +15 -0
  81. data/lib/generators/b4um/table/table_generator.rb +63 -0
  82. data/lib/generators/b4um/table/templates/_table.html.erb.tt +40 -0
  83. data/lib/generators/b4um/trix/templates/b4um_rich_text_helper.rb +58 -0
  84. data/lib/generators/b4um/trix/templates/b4um_trix.js +551 -0
  85. data/lib/generators/b4um/trix/trix_generator.rb +383 -0
  86. data/sig/b4um_generators.rbs +4 -0
  87. 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.