Contextualen Filter ausschalten nur für admins
Eingetragen von torfnase (1525)
am 01.03.2016 - 01:06 Uhr in
am 01.03.2016 - 01:06 Uhr in
Hallo zusammen,
wenn ich bei einer View einen contextualen Filter setze, in dem der eingeloggte User als Argument genommen wird, dann kann ich wie bei allen contextuale Filtern z.B. ein /all an die URL anhängen und der Filter ist dann nicht aktiv.
Soweit so gut...
Nur zur Frage: ich möchte gerne, dass nur admins diesen Filter mit /all deaktivieren können.
Wie kann man das erreichen ?
Gruß
Berthold
- Anmelden oder Registrieren um Kommentare zu schreiben
Denkansatz:
am 01.03.2016 - 05:36 Uhr
wie wäre es mit einem kleinen Modul, das vor dem Query den All-Parameter abfängt, und den current user setzt.
hook_views_pre_view sollte der richtige Einstieg sein.
Grüße
Ronald
Oder einfacher im View eine
am 01.03.2016 - 08:19 Uhr
Oder einfacher im View eine eigene Validierung für das Argument programmieren, in der Form:
Wenn userrole != admin oder uid !=1 => argument = uid
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner,das
am 01.03.2016 - 16:28 Uhr
Hallo Werner,
das funktioniert nicht mit der all-Exception, soweit ich weiß....
Wenn man nach der URL das /all eingibt, dann wird der Filter total ignoriert, es findet auch keine Validierung oder so etwas statt.
Liege ich da falsch ?
Drupal Video-Tutorials
So, ich habe eine vernünftige
am 01.03.2016 - 19:04 Uhr
So, ich habe eine vernünftige Lösung gefunden, es geht z.B. so:
Ich benutze eine PHP Validierung und geben true zurück, wenn der User eine bestimmte Rolle (nicht admin) hat.
Wenn der User z.B. ein admin ist, gebe ich false zurück.
Es gibt dann die Einstellung:
Aktion, falls der Filterwert ungültig ist und das schalte ich auf alle "Ergebnisse für das gewählt Feld anzeigen".
Damit ist klar: Admin sehen alle Einträge, denn die Validierung sagt ja gerade, dass der Filterwert ungültig ist.
Bei anderen Userrollen wird true zurückgegeben, d.h. der Filterwert ist gültig.
So einfach kann das sein, eigentlich trivial.
Jetzt muß ich ja noch das Exception /all in den Griff bekommen, aber das geht ganz einfach, wenn man dort nichts einträgt, gibt es keine Exception für diesen Filter.
Wenn man dennoch eine Exception wünscht, die nur für einige Rollen funktionieren soll, gibt es die Möglichkeit, über das Modul Path Access den Pfad direkt für einige Rollen zu sperren.
Gruß
Berthold Lausch
Drupal Video-Tutorials