b4um_generators 0.2.17 → 0.4.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.de.md +418 -4
  4. data/README.md +405 -5
  5. data/lib/b4um_generators/version.rb +1 -1
  6. data/lib/generators/b4um/admin/admin_generator.rb +614 -0
  7. data/lib/generators/b4um/admin/templates/add_admin_fields_migration.rb.tt +10 -0
  8. data/lib/generators/b4um/admin/templates/admin_base_controller.rb.tt +5 -0
  9. data/lib/generators/b4um/admin/templates/admin_dashboard.html.erb.tt +19 -0
  10. data/lib/generators/b4um/admin/templates/admin_dashboard_controller.rb.tt +6 -0
  11. data/lib/generators/b4um/admin/templates/admin_users_controller.rb.tt +70 -0
  12. data/lib/generators/b4um/admin/templates/admin_users_index.html.erb.tt +110 -0
  13. data/lib/generators/b4um/admin/templates/b4um_admin.rake.tt +106 -0
  14. data/lib/generators/b4um/authentication/authentication_generator.rb +90 -1
  15. data/lib/generators/b4um/guest/guest_generator.rb +673 -0
  16. data/lib/generators/b4um/guest/templates/add_guest_fields_migration.rb.tt +12 -0
  17. data/lib/generators/b4um/guest/templates/b4um_guests.rake.tt +12 -0
  18. data/lib/generators/b4um/guest/templates/edit.html.erb.tt +156 -0
  19. data/lib/generators/b4um/guest/templates/guest_expiration_warning.html.erb.tt +12 -0
  20. data/lib/generators/b4um/guest/templates/guests_controller.rb.tt +88 -0
  21. data/lib/generators/b4um/guest/templates/new.html.erb.tt +136 -0
  22. data/lib/generators/b4um/help/help_generator.rb +228 -0
  23. data/lib/generators/b4um/install/templates/b4um/sortable.css +158 -0
  24. data/lib/generators/b4um/install/templates/b4um.css +1 -0
  25. data/lib/generators/b4um/pagination/pagination_generator.rb +32 -5
  26. data/lib/generators/b4um/scaffold/scaffold_generator.rb +50 -0
  27. data/lib/generators/b4um/scaffold/templates/_form.html.erb.tt +18 -14
  28. data/lib/generators/b4um/search/search_generator.rb +22 -8
  29. data/lib/generators/b4um/sortable/sortable_generator.rb +529 -0
  30. data/lib/generators/b4um/sortable/templates/_sortable.html.erb.tt +40 -0
  31. data/lib/generators/b4um/sortable/templates/add_position_migration.rb.tt +26 -0
  32. data/lib/generators/b4um/sortable/templates/sort.html.erb.tt +3 -0
  33. data/lib/generators/b4um/sortable/templates/sortable_controller.js +166 -0
  34. metadata +22 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39e3c318690d26739ba27564ca702e481d33cce273b21a46b8c304a60251d31a
4
- data.tar.gz: 657648494cdca9cd40e9aafc9f333ee49967c6c31786ae67fdbc951575ca158a
3
+ metadata.gz: 15fb9392677d61fa44d0d18bfa6fa71f8cde33202c1d3ab846eeded8cc255240
4
+ data.tar.gz: 07256f3c068de795270adf8e1376f155f657c6a13b4d356ce414a289c6456be2
5
5
  SHA512:
6
- metadata.gz: e375a782413296d33953bbe9192657a7e8772ee9095480b2c30c1a4b3d13da6dd3fefe0b04b170f7bc8747939beb43a3728f9b73e018cbcdf1c7ab032421d167
7
- data.tar.gz: 9fd996e86f29f3c47a791a2cda1f663c4e465b576ef240cab9c88adea8d572bfe48ab91c833830ae8d27bb924bd71bb0d21d2a74fb0cc3b85436a94f81dcd662
6
+ metadata.gz: c2c4efca4c04e8e8ef528e246d16c2e536c1b54e6dd356c284e96659664756edeacdfcb93d135cbebdf39ace19f869c5ca49dafbfe5ad9867c3703c92228bb8b
7
+ data.tar.gz: af333b2df50d0530cfbf701b3fa040a80ba5d716cae4a67909be39d1f59d5c1bad6795b9a39691284e6cce2e867ed512ec7cf047f72bdff579db3741e8349ee6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
+ # Changelog
2
+
3
+ All notable changes to b4um Generators will be documented in this file.
4
+
1
5
  ## [Unreleased]
2
6
 
7
+ ## [0.4.0] - 2026-10-12
8
+
9
+ ### Added
10
+
11
+ - Added administrator management with `b4um:admin`
12
+ - Added command-line creation of the first administrator
13
+ - Added blocking, unblocking, deletion and administrator permission management
14
+ - Added `--required` support to the scaffold generator
15
+ - Added automatic required-field handling in generated forms
16
+ - Added temporary guest access with `b4um:guest`
17
+ - Added configurable guest account expiration with `--expires-in`
18
+ - Added guest-to-regular-account conversion while preserving the existing account record
19
+ - Added cleanup task for expired guest accounts
20
+ - Added guest expiration warnings
21
+ - Added dynamic field detection for administrator and guest account creation
22
+
23
+ ### Changed
24
+
25
+ - Improved authentication integration with required model fields
26
+ - Improved administrator creation prompts and validation handling
27
+ - Improved administrator creation after guest access has been installed
28
+ - Improved generated Admin dashboard and user management layouts
29
+ - Improved migration generation to avoid duplicate migration version numbers
30
+ - Improved English and German documentation
31
+ - Extended `b4um:help` with Admin and Guest documentation
32
+
3
33
  ## [0.1.0] - 2026-09-17
4
34
 
5
35
  - Initial release
data/README.de.md CHANGED
@@ -6,8 +6,8 @@ b4um Generators ist eine Sammlung wiederverwendbarer Rails-Generatoren, Template
6
6
  für b4um-Rails-Projekte.
7
7
 
8
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, Authentifizierung, Attachments und
10
- Rich-Text-Bearbeitung.
9
+ Bento-Layouts, Tabellen, Pagination, Infinite Scroll, Suche, Kommentare, Authentifizierung, Administration, Gastzugänge,
10
+ Attachments und Rich-Text-Bearbeitung.
11
11
 
12
12
  Die generierten Komponenten verwenden ein gemeinsames b4um-Styling und sind darauf ausgelegt, miteinander zu
13
13
  funktionieren.
@@ -24,7 +24,7 @@ b4um Generators wird während der Entwicklung derzeit als lokales Gem verwendet.
24
24
  Füge das Gem zur `Gemfile` der Rails-Anwendung hinzu:
25
25
 
26
26
  ```ruby
27
- gem "b4um_generators", "~> 0.2.0", path: "/pfad/zu/b4um_generators"
27
+ gem "b4um_generators", "~> 0.4.0", path: "/pfad/zu/b4um_generators"
28
28
  ```
29
29
 
30
30
  Führe anschließend aus:
@@ -81,9 +81,12 @@ b4um:controller
81
81
  b4um:pagination
82
82
  b4um:infinite_scroll
83
83
  b4um:search
84
+ b4um:sortable
84
85
  b4um:comments
85
86
  b4um:in_place
86
87
  b4um:authentication
88
+ b4um:admin
89
+ b4um:guest
87
90
  b4um:trix
88
91
  b4um:readable
89
92
  b4um:help
@@ -115,6 +118,7 @@ Der Scaffold-Generator bietet:
115
118
  - Index-, Show-, New- und Edit-Views
116
119
  - Standardmäßig ein Bento-Index-Layout
117
120
  - Optionales Tabellen-Index-Layout
121
+ - Pflichtfelder mit `presence`-Validierung
118
122
  - Select-Felder mit eigenen Anzeigebezeichnungen
119
123
  - Radio-Felder mit eigenen Anzeigebezeichnungen
120
124
  - Automatischen Navigationseintrag
@@ -124,6 +128,34 @@ Der Scaffold-Generator bietet:
124
128
  - Unterstützung für Passwortfelder
125
129
  - Optionale lesbare URL-Parameter
126
130
 
131
+ ### Pflichtfelder
132
+
133
+ Mit `--required` können Felder ausgewählt werden, für die der Scaffold-Generator eine `presence`-Validierung im Modell
134
+ erzeugt.
135
+
136
+ Verwende:
137
+
138
+ ```text
139
+ --required=FIELD,FIELD
140
+ ```
141
+
142
+ Beispiel:
143
+
144
+ ```bash
145
+ bin/rails generate b4um:scaffold Customer first_name:string last_name:string company:string email:string --required=first_name,last_name,email
146
+ ```
147
+
148
+ Dadurch wird dem generierten Modell folgende Validierung hinzugefügt:
149
+
150
+ ```ruby
151
+ validates :first_name, :last_name, :email, presence: true
152
+ ```
153
+
154
+ Felder, die nicht mit `--required` angegeben werden, bleiben optional.
155
+
156
+ `--required` kann mit den anderen Scaffold-Optionen wie `--select`, `--radio`, `--layout` und `--param` kombiniert
157
+ werden.
158
+
127
159
  ### Select- und Radio-Felder
128
160
 
129
161
  Der Scaffold-Generator kann String-Attribute als Select- oder Radio-Felder mit eigenen Anzeigebezeichnungen erzeugen.
@@ -545,6 +577,308 @@ passenden Vorschlag für einen b4um-Scaffold-Befehl ab.
545
577
  Bei wiederholter Ausführung werden Authentifizierungs-Helper, Routen, Navigationselemente und Controller-Schutz nicht
546
578
  dupliziert.
547
579
 
580
+ ## Administration
581
+
582
+ Füge einem bestehenden b4um-Authentifizierungsmodell eine Benutzer- und Administratorverwaltung hinzu:
583
+
584
+ ```bash
585
+ bin/rails generate b4um:admin MODEL
586
+ ```
587
+
588
+ Beispiel:
589
+
590
+ ```bash
591
+ bin/rails generate b4um:admin User
592
+ bin/rails db:migrate
593
+ ```
594
+
595
+ Der Admin-Generator baut auf der bestehenden b4um-Authentifizierung auf. Für das ausgewählte Modell muss daher zuerst
596
+ die b4um-Authentifizierung eingerichtet werden.
597
+
598
+ Ein vollständiger Ablauf sieht so aus:
599
+
600
+ ```bash
601
+ bin/rails generate b4um:scaffold User name:string email:string password_digest:string
602
+ bin/rails db:migrate
603
+
604
+ bin/rails generate b4um:authentication User
605
+
606
+ bin/rails generate b4um:admin User
607
+ bin/rails db:migrate
608
+ ```
609
+
610
+ Der Admin-Generator fügt dem Authentifizierungsmodell zwei boolesche Felder hinzu:
611
+
612
+ ```text
613
+ admin
614
+ blocked
615
+ ```
616
+
617
+ Beide Felder haben standardmäßig den Wert `false`.
618
+
619
+ Der Generator fügt außerdem Folgendes hinzu:
620
+
621
+ - Admin-Dashboard
622
+ - Schutz des Admin-Bereichs
623
+ - Benutzerverwaltung
624
+ - Admin-Routen
625
+ - Benutzer sperren und entsperren
626
+ - Administratorrechte vergeben und entziehen
627
+ - Benutzer löschen
628
+ - Schutz vor dem Sperren des eigenen Kontos
629
+ - Schutz vor dem Löschen des eigenen Kontos
630
+ - Schutz vor dem Entziehen der Rechte des letzten Administrators
631
+ - Verhinderung der Anmeldung gesperrter Benutzer
632
+ - Automatische Ungültigmachung bestehender Sitzungen gesperrter Benutzer
633
+
634
+ ### Ersten Administrator anlegen
635
+
636
+ Administratorrechte können nicht über die öffentliche Registrierung vergeben werden.
637
+
638
+ Nach dem Ausführen des Admin-Generators und der Datenbankmigration wird der erste Administrator über die Kommandozeile
639
+ angelegt:
640
+
641
+ ```bash
642
+ bin/rails b4um:admin:create
643
+ ```
644
+
645
+ Führe vor dem Anlegen des ersten Administrators die Datenbankmigration aus:
646
+
647
+ ```bash
648
+ bin/rails db:migrate
649
+ ```
650
+
651
+ Die Aufgabe erkennt zusätzliche Felder des Authentifizierungsmodells automatisch.
652
+
653
+ Felder mit einer unbedingten `presence`-Validierung werden mit `*` gekennzeichnet und müssen ausgefüllt werden. Andere
654
+ erkannte Felder sind optional und können leer bleiben.
655
+
656
+ E-Mail-Adresse, Passwort und Passwortbestätigung sind immer erforderlich.
657
+
658
+ Ein Authentifizierungsmodell mit den Pflichtfeldern `first_name` und `last_name` sowie dem optionalen Feld `company`
659
+ kann zum Beispiel zu folgender Abfrage führen:
660
+
661
+ ```text
662
+ First name *: Alex
663
+ Last name *: Beispiel
664
+ Company:
665
+ Email *: admin@example.com
666
+ Password *:
667
+ Confirm password *:
668
+ Administrator admin@example.com was created successfully.
669
+ ```
670
+
671
+ Das Passwort wird während der Eingabe im Terminal nicht angezeigt.
672
+
673
+ Wurde die Admin-Migration noch nicht ausgeführt, bricht die Aufgabe ab und weist darauf hin, `bin/rails db:migrate`
674
+ auszuführen.
675
+
676
+ Das Konto wird mit folgenden Werten angelegt:
677
+
678
+ ```text
679
+ admin: true
680
+ blocked: false
681
+ ```
682
+
683
+ Existiert bereits ein Konto mit der eingegebenen E-Mail-Adresse, bricht die Aufgabe ab. Ein vorhandenes Konto erhält
684
+ dadurch nicht automatisch Administratorrechte.
685
+
686
+ Bestehende Benutzer können nach dem Anlegen des ersten Administrators über die Admin-Benutzerverwaltung zu
687
+ Administratoren gemacht werden.
688
+
689
+ ### Admin-Bereich
690
+
691
+ Der generierte Admin-Bereich ist erreichbar unter:
692
+
693
+ ```text
694
+ /admin
695
+ ```
696
+
697
+ Nur ein angemeldetes Konto mit Administratorrechten kann auf diesen Bereich zugreifen.
698
+
699
+ Das Admin-Dashboard führt zur generierten Benutzerverwaltung.
700
+
701
+ Dort können Administratoren:
702
+
703
+ - Benutzer sperren
704
+ - Benutzer entsperren
705
+ - Administratorrechte vergeben
706
+ - Administratorrechte entziehen
707
+ - Benutzer löschen
708
+
709
+ Der aktuell angemeldete Administrator kann sein eigenes Konto über die generierte Benutzerverwaltung weder sperren noch
710
+ löschen.
711
+
712
+ Dem letzten verbliebenen Administrator können die Administratorrechte nicht entzogen werden. Dadurch wird verhindert,
713
+ dass eine Anwendung versehentlich ohne Administrator zurückbleibt.
714
+
715
+ ### Benutzer sperren
716
+
717
+ Beim Sperren eines Benutzers wird das Feld `blocked` des Authentifizierungsmodells auf `true` gesetzt.
718
+
719
+ Ein gesperrter Benutzer kann sich auch mit dem richtigen Passwort nicht anmelden.
720
+
721
+ Wird ein bereits angemeldeter Benutzer gesperrt, wird seine bestehende Sitzung ungültig, sobald die Authentifizierung
722
+ erneut geprüft wird.
723
+
724
+ Nach dem Entsperren kann sich der Benutzer wieder anmelden.
725
+
726
+ ### Administratorrechte
727
+
728
+ Der Zugriff auf den Admin-Bereich wird über das Feld `admin` des Authentifizierungsmodells gesteuert.
729
+
730
+ Ein normal registrierter Benutzer startet mit:
731
+
732
+ ```text
733
+ admin: false
734
+ blocked: false
735
+ ```
736
+
737
+ Ein Administrator kann einem bestehenden Benutzer über die Admin-Benutzerverwaltung Administratorrechte geben.
738
+
739
+ Administratorrechte können dort auch wieder entzogen werden, solange dadurch nicht dem letzten Administrator seine
740
+ Rechte entzogen würden.
741
+
742
+ Der Admin-Generator verwendet dasselbe Authentifizierungsmodell und dasselbe Anmeldesystem wie `b4um:authentication`. Es
743
+ wird weder ein separates Administratorkonto-System noch ein zweiter Login erzeugt.
744
+
745
+ ## Gastzugang
746
+
747
+ Füge einem bestehenden b4um-Authentifizierungsmodell einen zeitlich begrenzten Gastzugang hinzu:
748
+
749
+ ```bash
750
+ bin/rails generate b4um:guest MODEL --required=FIELDS
751
+ ```
752
+
753
+ Beispiel:
754
+
755
+ ```bash
756
+ bin/rails generate b4um:guest User --required=first_name,email
757
+ bin/rails db:migrate
758
+ ```
759
+
760
+ Der Guest-Generator baut auf der bestehenden b4um-Authentifizierung auf. Für das ausgewählte Modell muss daher zuerst
761
+ die b4um-Authentifizierung eingerichtet werden.
762
+
763
+ Mit `--required` muss mindestens ein Feld angegeben werden.
764
+
765
+ Eine vollständige Einrichtung kann zum Beispiel so aussehen:
766
+
767
+ ```bash
768
+ bin/rails generate b4um:scaffold User first_name:string last_name:string company:string email:string password_digest:string --required=first_name,last_name,email
769
+ bin/rails db:migrate
770
+
771
+ bin/rails generate b4um:authentication User
772
+
773
+ bin/rails generate b4um:guest User --required=first_name,email
774
+ bin/rails db:migrate
775
+ ```
776
+
777
+ Der Guest-Generator fügt dem Authentifizierungsmodell zwei Felder hinzu:
778
+
779
+ ```text
780
+ guest
781
+ guest_expires_at
782
+ ```
783
+
784
+ Gastkonten verwenden dasselbe Authentifizierungsmodell wie regulär registrierte Konten. Der Generator erzeugt kein
785
+ separates Gastmodell.
786
+
787
+ ### Felder für Gastkonten
788
+
789
+ Die mit `--required` angegebenen Felder sind beim Erstellen eines Gastkontos Pflichtfelder.
790
+
791
+ Beispiel:
792
+
793
+ ```bash
794
+ bin/rails generate b4um:guest User --required=first_name,email
795
+ ```
796
+
797
+ In diesem Beispiel sind `first_name` und `email` für Gastkonten erforderlich.
798
+
799
+ Weitere geeignete Felder des Authentifizierungsmodells werden automatisch erkannt und können beim Erstellen des
800
+ Gastkontos ausgefüllt werden. Felder, die nicht mit `--required` angegeben wurden, bleiben optional.
801
+
802
+ Technische und sensible Felder werden nicht als normale Profilfelder für Gastkonten angeboten.
803
+
804
+ Der Guest-Generator passt die normalen Presence-Validierungen des Kontos so an, dass ein Gast mit der kleineren, über
805
+ `--required` festgelegten Feldmenge erstellt werden kann. Bei der Umwandlung in ein reguläres Konto gelten weiterhin die
806
+ normalen Pflichtfelder des Kontos.
807
+
808
+ ### Passwörter für Gastkonten
809
+
810
+ Gastkonten verwenden das bestehende `has_secure_password`-Authentifizierungssystem.
811
+
812
+ Für ein Gastkonto wird automatisch ein sicheres internes Passwort erzeugt. Der Gast muss beim Erstellen des Gastzugangs
813
+ kein Passwort auswählen oder eingeben.
814
+
815
+ Wird das Gastkonto später in ein reguläres Konto umgewandelt, muss ein normales Passwort festgelegt werden.
816
+
817
+ ### Ablaufzeit
818
+
819
+ Ein Gastzugang läuft automatisch ab.
820
+
821
+ Die Standardlaufzeit beträgt 7 Tage.
822
+
823
+ Mit `--expires-in` kann eine andere Laufzeit festgelegt werden:
824
+
825
+ ```bash
826
+ bin/rails generate b4um:guest User --required=first_name,email --expires-in=14
827
+ ```
828
+
829
+ In diesem Beispiel erhalten neu erstellte Gastkonten 14 Tage Gastzugang.
830
+
831
+ Der Ablaufzeitpunkt wird gespeichert in:
832
+
833
+ ```text
834
+ guest_expires_at
835
+ ```
836
+
837
+ Gastbenutzer erhalten vor dem Ablauf ihres Kontos einen Hinweis.
838
+
839
+ ### Gastkonto umwandeln
840
+
841
+ Ein Gastkonto kann in ein regulär registriertes Konto umgewandelt werden.
842
+
843
+ Bei der Umwandlung wird der bestehende Datensatz des Authentifizierungsmodells weiterverwendet und kein zweiter Benutzer
844
+ angelegt. Daten, die bereits mit dem Gastkonto verknüpft sind, bleiben dadurch dem umgewandelten Konto zugeordnet.
845
+
846
+ Bei der Umwandlung fragt das generierte Formular die für ein reguläres Konto erforderlichen Felder sowie ein Passwort
847
+ und die Passwortbestätigung ab.
848
+
849
+ Nach erfolgreicher Umwandlung gilt:
850
+
851
+ ```text
852
+ guest: false
853
+ guest_expires_at: nil
854
+ ```
855
+
856
+ Das Konto verhält sich anschließend wie ein regulär authentifiziertes Konto.
857
+
858
+ ### Gastkonto löschen
859
+
860
+ Ein Gast kann das temporäre Konto löschen, anstatt es in ein reguläres Konto umzuwandeln.
861
+
862
+ Abgelaufene Gastkonten können außerdem mit der generierten Cleanup-Task entfernt werden:
863
+
864
+ ```bash
865
+ bin/rails b4um:guests:cleanup
866
+ ```
867
+
868
+ Diese Task sollte in einer Produktionsumgebung regelmäßig ausgeführt werden, damit abgelaufene Gastkonten nicht
869
+ dauerhaft gespeichert bleiben.
870
+
871
+ Wie die Task zeitgesteuert ausgeführt wird, bleibt bewusst der Anwendung und ihrer jeweiligen Deployment-Umgebung
872
+ überlassen.
873
+
874
+ ### Gastzugang und Administration
875
+
876
+ Gastzugang und Admin-Verwaltung verwenden dasselbe Authentifizierungsmodell.
877
+
878
+ Der Guest-Generator kann deshalb zusammen mit `b4um:admin` verwendet werden. Die Gast-spezifische Behandlung der
879
+ Validierungen erhält die Anforderungen für reguläre Konten, sodass bei der Administrator-Erstellung und bei der normalen
880
+ Registrierung weiterhin die entsprechenden Pflichtfelder verlangt werden.
881
+
548
882
  ## Active Storage und Bilder
549
883
 
550
884
  Bildanhänge verwenden Rails Active Storage.
@@ -732,6 +1066,86 @@ Die Suche bietet:
732
1066
  - Kein zusätzliches Such-Gem erforderlich
733
1067
  - Sichere wiederholte Ausführung des Generators
734
1068
 
1069
+ ## Sortable
1070
+
1071
+ Füge einer bestehenden Ressource eine dauerhaft gespeicherte Sortierreihenfolge hinzu:
1072
+
1073
+ ```bash
1074
+ bin/rails generate b4um:sortable Product
1075
+ bin/rails db:migrate
1076
+ ```
1077
+
1078
+ Der Generator fügt eine `position`-Spalte hinzu und weist bestehenden Datensätzen beim Ausführen der generierten
1079
+ Migration automatisch Positionen zu.
1080
+
1081
+ Neue Datensätze werden automatisch am Ende der Liste eingefügt.
1082
+
1083
+ Standardmäßig wird die bestehende Index-Seite zur sortierbaren Seite:
1084
+
1085
+ ```text
1086
+ /products
1087
+ ```
1088
+
1089
+ Das bestehende Index-Layout wird auf das b4um-Sortable-Layout umgestellt. Die gespeicherte Position wird außerdem als
1090
+ Standardsortierung der Ressource verwendet.
1091
+
1092
+ Sortable bietet:
1093
+
1094
+ - Dauerhaft in der Datenbank gespeicherte ganzzahlige Positionen
1095
+ - Automatische Positionierung bestehender Datensätze während der Migration
1096
+ - Automatische Positionierung neuer Datensätze am Ende
1097
+ - Drag-and-Drop-Sortierung mit Stimulus
1098
+ - Direkte Änderung der Position über ein Zahlenfeld
1099
+ - Automatisches Verschieben der betroffenen Datensätze
1100
+ - Lückenlose Positionen nach dem Verschieben oder Löschen von Datensätzen
1101
+ - Serverseitige Sortierung innerhalb einer Datenbanktransaktion
1102
+ - CSRF-geschützte Update-Anfragen
1103
+ - Integration mit b4um Search und Pagination
1104
+ - Kein zusätzliches Sortier-Gem erforderlich
1105
+ - Sichere wiederholte Ausführung des Generators
1106
+
1107
+ ### Separate Sortierseite
1108
+
1109
+ Mit `--path` kann eine separate Sortierseite erstellt werden:
1110
+
1111
+ ```bash
1112
+ bin/rails generate b4um:sortable Product --path=sortierung
1113
+ bin/rails db:migrate
1114
+ ```
1115
+
1116
+ Dadurch wird die sortierbare Seite genau unter folgender URL erstellt:
1117
+
1118
+ ```text
1119
+ /sortierung
1120
+ ```
1121
+
1122
+ während der normale Ressourcen-Index weiterhin unter
1123
+
1124
+ ```text
1125
+ /products
1126
+ ```
1127
+
1128
+ verfügbar bleibt.
1129
+
1130
+ Das bestehende Index-Layout, beispielsweise Bento oder Table, bleibt unverändert. Es verwendet weiterhin die
1131
+ gespeicherte `position`-Sortierung.
1132
+
1133
+ Die separate Sortierseite verwendet den bestehenden Controller der Ressource. Es wird kein zusätzlicher Controller und
1134
+ kein Namespace erzeugt.
1135
+
1136
+ Der mit `--path` angegebene Wert bestimmt direkt die URL der separaten Sortierseite. Zum Beispiel:
1137
+
1138
+ ```bash
1139
+ bin/rails generate b4um:sortable Product --path=produktuebersicht
1140
+ bin/rails generate b4um:sortable Product --path=verwaltung
1141
+ bin/rails generate b4um:sortable Product --path=admin
1142
+ ```
1143
+
1144
+ Dadurch entstehen entsprechend `/produktuebersicht`, `/verwaltung` und `/admin`.
1145
+
1146
+ Eine separate Sortierseite ermöglicht außerdem, nur die `sort`-Action durch die Authentifizierung zu schützen, während
1147
+ der normale Ressourcen-Index öffentlich bleiben kann.
1148
+
735
1149
  ## Kommentare
736
1150
 
737
1151
  Füge einem bestehenden Modell polymorphe Kommentare hinzu:
@@ -1135,7 +1549,7 @@ wird.
1135
1549
 
1136
1550
  ## Version
1137
1551
 
1138
- Aktuelle Version: `0.2.17`
1552
+ Aktuelle Version: `0.4.0`
1139
1553
 
1140
1554
  ## Autor
1141
1555