Entity Reference Feld (User) auf aktuellen User beschränken (aber nur für bestimmte Rollen) [gelöst]
am 13.02.2017 - 12:09 Uhr in
Hallo zusammen,
ich bräuchte mal einen Schubs in die richtige Richtung.
Ausgangssituation: views7.-3.1.4, entity reference 7.-1.2.
Es geht um die Umsetzung eines Schulungsplans für Mitarbeiter. In dem Inhaltstyp dafür gibt es ein Entity Reference field mit dem einer von alle, aktiven Benutzern augewählt werden kann.
Alle aktiven Benutzer haben auch Berechtigung neuen Inhalt für den Inhaltstyp Schulungsplan zu erstellen.
Allerdings möchte ich gerne, dass die User der Rolle MA in diesem Feld nur ihren eigenen Namen sehen und nicht ausversehen ihre Schulung für jemand anderes eintragen. Das an sich wäre ja kein Problem: mit dem Entity Reference-Modus "Views: filter by an reference entity view" nutze ich eine View, die als Filterkriterium "Benutzer:Aktuell" hat. Funktioniert auch so wie es soll. Der Benutzer, der den Eintrag erstellt, sieht nur seinen Namen.
Das Problem ist aber, dass dies nicht für die Benutzer aus der Rolle QM gelten soll. Diese sollen nämlich auch in der Lage sein, Einträge für andere Nutzer zu erstellen.
Gibt es irgendeine Möglichkeit, dass diese Entity selection nur für Nutzer der Rolle MA gelten?
Als ganz anderen Ansatz hatte ich schon mal an Prepopulate gedacht, aber das scheint mir in diesem Fall auch ziemlich frickelig.
Vielen Dank schon mal für eure Aufmerksamkeit.
- Anmelden oder Registrieren um Kommentare zu schreiben
2 Lösungen
am 14.02.2017 - 20:58 Uhr
Der Einsatz von entityreference_prepopulate (video tutorial von code karate) erscheint mir für dein Problem naheliegend. Konkret bietest du Benutzern mit Rolle MA einen mit Ihrem eigenen User vorausgefüllten Link (ungefähr so: /node/add/schulung?field_deineuserreference=[site:current-user:uid].
Die QM-Leute kriegen den normalen Link (/node/add/schulung). Die Sichtbarkeit der Links je nach Rolle kannst du mit verschiedenen Blocks oder mit in panels (Zugriffsbedingungen für custom panel panes, 1 pro link) gut umsetzen.
Das in Views umzusetzen wäre schwierig, hier wären die Auswahlfilter nach Rolle nicht so einfach umzusetzen.
Ausserdem liesse das Benutzererlebnis für einen User, der ohnehin nur eine Schulung für sich selbst buchen kann, sehr zu wünschen übrig, wenn er bei der Schulung sich selbst reinschreiben muss.
Eine wirkliche Alternative zu entityreference_prepopulate wäre folgendes:
* mit field_permissions das user-reference feld nur bearbeitbar für QM machen, dann kein Pflichtfeld
* via rules nach Erstellen des nodes das Feld füllen, wenn leer (QM-User können es ausfüllen und die rule tut dann nichts)
.
Was da "besser" ist, hmmm … ich glaube, ich würde das mit entityreference_prepopulate machen, das 2. ist aber bestimmt auch ok. Hier kommt es auch ein bisschen auf deine Sitebuildung-Vorlieben an und welche Module du ohnehin einsetzt. Ich setze panels und entityreference_prepopulate ohnehin gerne für Intranetsachen etc. ein.
– Grüße aus Franken –
"Eine Entscheidung ist dann eine gute Entscheidung, wenn Sie zu mehr Möglichkeiten führt.”
Heinz von Foerster (Kybernetiker)
www.bienlein-kommunikation.de
Hallo marco.b Vielen Dank für
am 17.02.2017 - 07:39 Uhr
Hallo marco.b
Vielen Dank für deine ausführliche Antwort.
Auf entityreference_prepopulate bin ich bei meiner Grübelei dann auch noch gestoßen, aber ich war bis zu deinem Beitrag der Meinung, dass ich auch zwingend noch das Zusatzmodul Entity Reference Prepopulate Token brauche, aber es geht ja auch wirklich ohne und es tut was es soll
Vielen Dank nochmal :)