Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modulsuche ›

Node-Zugriffsrechte dynamisch vergeben?

Eingetragen von E-Fee (481)
am 17.02.2010 - 21:43 Uhr in
  • Modulsuche
  • Drupal 6.x

Hallo allerseits,

ich habe gerade eine etwas kniffligere Sache zu lösen, allerdings handelt es sich um einen ganz essentiellen Bestandteil der geplanten Seite, daher wäre es schön, wenn ich dafür eine Lösung finden würde. Der Sachverhalt ist insgesamt noch etwas komplizierter, ich vereinfache ihn einfach mal:

Benutzer sollen nur die (erweiterten) Profile der Benutzer sehen können, die älter sind als sie selbst. Ich denke, das mit dem View sollte eher unproblematisch sein, da nur die entsprechenden Profile anzuzeigen.
Aber: Was ist damit, wenn der Benutzer (z.B. Raten oder einen Link) direkt auf eins der Profile kommt, die er nicht sehen darf? Ihm soll in dem Fall ganz klar ein "Zugriff verweigert" angezeigt werden.
Normalerweise löst man sowas ja über Node Access (hab mir auch Content Acces und ACL angeschaut) und Rollen - aber in dem Fall kann man keine Rollen vergeben, schließlich ergibt sich das ja dynamisch von User zu User. Z.B. A ist älter als B ist älter als C. C dürfte dann alle Profile sehen, B nur das von A, A gar keins. Kommmt ein User D dazu, der altersmäßig zwischen B und C liegt, darf D das Profil von C sehen und A und B das von D. Es ist also immer eine noch nicht einmal reziproke 1:1-Beziehung. (Ok, im Anwendungsfall ist es so, dass die Berechtigungen reziprok verlaufen werden.)
Noch mal: Rollen sind für diesen Anwendungsfall nicht machbar.

Eigentlich ist die Sache doch einfach, oder sollte es sein: User X ruft Node auf, der von User Y erstellt wurde. In dem Moment muss eine Abfrage stattfinden, ob X älter als Y ist (Alter im CCK-Feld).
Wahrscheinlich muss ich da irgendwo mit einem klitzekleinen PHP-Schnipsel rein, aber wo? Muss ich da ein eigenes Modul schreiben, wo muss ich dann ansetzen?
(In irgendeiner handgeschriebenen PHP-Seite aus meiner Vor-Drupal-Zeit hätte ich sowas mit 'ner passenden Datenbankabfrage wohl in 5 Minuten eingebaut.)
Wichtig wie gesagt: Es geht um die Nodes selbst. Views denke ich in den Griff kriegen zu können. Oder 'nen View schreiben, der mir genau einen Node (oder je nach Alter der Person relativ zum eigenen gar nix) anzeigt, und die Nodes selbst komplett sperren?

Auch schon überlegt: In den View keinen Profillink, sondern nur eine Anfrage für Friendlist / User Relationships, so dass der andere erst bestätigen muss, dass man Zugriff hat.

Außerdem sollen die User sich PMs schreiben können. Das Modul ruft aber standardmäßig alle Usernamen über Ajax ab - das soll natürlich auch nicht sein! Eine Einschränkung geht auch hier nur über Rollen (und da auch erst nach dem Versandversuch), mir persönlich würde es reichen zu wissen, wie ich das Default-Ajax-Feld des Moduls in eine normales vorausgefülltes (und am besten nicht änderbares) Textfeld umwandle.
Oder kein PM-System, sondern die Nachrichten als Nodes mit zwei Userreferences bauen? Das normale Kontaktformular mit der E-Mail-Addy scheidet hier auch aus.

Vielleicht denke ich an einigen Stellen zu kompliziert oder sehe den Wald vor Bäumen bzw. die ganz naheliegende Lösung nicht. Irgendwie kriege ich das sicher gelöst, aber ob das nun grad von hinten durch die Brust ins Auge sein muss?

LG
Sonja

‹ modul video & audio (ogg & VP8) Theming mit drag&drop ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Sonja, ist auf jeden

Eingetragen von rokr (593)
am 17.02.2010 - 23:58 Uhr

Hallo Sonja,

ist auf jeden Fall ne spannende Fragestellung. ;-)
Ich kenne das Rechtemodell von Drupal nicht gut genug, um dir eine "saubere" Lösung zu nennen. Die Rechtematrix wird ja aber mit zunehmder Benutzerzahl sehr komplex und gleichzeitig muss sie dynamisch bleiben, um die genannte Bedingung zu gewährleisten.
Mein Ansatz wäre Rules: Checke vor dem Betrachten eines Inhaltes, ob folgende Bedingung gültig ist: Nodeprofile A < Nodeprofile B. Wenn nein, Redirect auf eine andere Seite mit Fehlermeldung. Hat eben im Schnelldurchlauf mit 2 Nodes auf Anhieb funktioniert. Lässt sich vielleicht mit deinem PHP Schnipsel von damals gut ausbauen. ;-)

Viel Erfolg, Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zur ersten Frage mit dem

Eingetragen von derjochenmeyer@... (591)
am 26.02.2010 - 14:48 Uhr

Zur ersten Frage mit dem Zugriff auf die Profile, das geht in der template.php in deinem Theme:

<?php
/**
* Override of template_preprocess_page()
*/
function phptemplate_preprocess_page(&$variables) {
 
// Du hast das komplette User Objekt in $variables['user']
 
$uid = $variables['user']->uid;

 
// Hier kannst du jetzt deine Bedingung abfragen.

 
if (bedingung nicht erfüllt) {
   
$variables['content'] = 'Zugriff verweigert';
  }
}
?>

Zur Zweiten Frage, dazu brauchst du ein kleines eigenes Modul mit einem hook_form_alter(). Hier kannst du das Autocomplete Textfeld über die Form API in ein deaktiviertes vorausgefülltes Input Feld umwandeln. Falls du nicht weißt wie, helf ich gern nochmal im Detail weiter.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dankeschön, auf die

Eingetragen von E-Fee (481)
am 18.02.2010 - 00:10 Uhr

Dankeschön, auf die Geschichte mit Rules bin ich eben auch schon gekommen - hatte damit nur noch nie wirklich gearbeitet bzw. für die dort sichtbaren Einstellungen in meinen Projekten (meist doch eher 1-Frau-Projekte bislang) noch keinen Bedarf gesehen und keine Zeit gehabt, mal rumzuprobieren.

Ich hab das eben mal in Abhängigkeit von der User-ID durchexerziert, das hat schon mal geklappt. Jetzt muss ich nur noch rausfinden, wie ich an das Token für die CCK-Felder rankomme, die werden dort nämlich nicht angezeigt ... mmh, mal überlegen, vielleicht per Token? :-)
Und dann das Regelset noch ein wenig komplexer, da kommt nämlich noch eine weitere Bedingung mit rein, aber wenn man das einmal raus hat.
Ach übrigens, das mit dem PHP-Schnipsel von damals hast Du missverstanden. Ich meinte nur, dass ich sowas früher in PHP schnell selbst geschrieben hätte. Und das hier dann evtl auch ein kleiner Schnipsel wenn-dann reicht ... ohne im Kopf zu haben, dass es dank Rules vielleicht sogar ohne geht.

Und dann bleibt da die PM-Frage, daher will ich's mal noch nicht als gelöst markieren hier.

LG
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hatte das mit dem

Eingetragen von rokr (593)
am 18.02.2010 - 00:24 Uhr

Ich hatte das mit dem Schnippsel schon verstanden. Heute musst du ihn eben umschreiben, für Drupal Rules :-)
Je nachdem, was du mit Rules vergleichen willst, bietet dir das Modul schon sehr viel, du kannst Variablen aus Node- und Userobjekten laden. Ggf ist aber auch ein PHP 5 Zeiler schneller gemacht, wenn du Felder vergleichen willst.

Den Ansatz von Jochen finde ich auch charmant. Im Template den Content wegblenden, wenn eine bestimmte Bedingung erfüllt ist...

Viel Spaß beim Tüfteln, Ronald :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

rkr@drupal.org schrieb Ich

Eingetragen von E-Fee (481)
am 18.02.2010 - 00:58 Uhr
rkr@drupal.org schrieb

Ich hatte das mit dem Schnippsel schon verstanden. Heute musst du ihn eben umschreiben, für Drupal Rules :-)

Wie soll ich einen Schnipsel UMschreiben, den es nie gegeben hat? Leider doch nicht verstanden. ;-)

Tja, an die Template-Sache habe ich relativ früh auch schon gedacht ... sind alles die Dinge, die ich irgendwie noch nie machen musste, weil rupal schon so verdammt viel kann, ohne dass man ihm an die Eingeweide geht.
Ich habe noch mal geschaut. Ich nehme ja als Bedingung in dem Fall Rules->Numerischer Vergleich (wenn ich jetzt einfach mal von Timestamp ausgehe). Und dann ein Token-Ersetzungsmuster - so dachte ich. Leider kann ich das CCK-Feld nur bei "Ersetzungsmuster für angezeigter Inhalt" finden, was insofern noch ok wäre, weil das Feld sowieso mit dem zur Debatte stehenden Content Type verknüpft ist und dadurch zufällig der Autor des Nodes abgedeckt wird - unter "Ersetzungsmuster für Autor des Inhalts" ist dieses Feld eben nicht zu finden. Und auch unter "Ersetzungsmuster für handelnder Benutzer" nicht - auf das zu seinem Profil (Content Profil) gehörende Feld müsste ich irgendwie zugreifen können. Und genau die Frage, wie ich da rankomme, würde sich dann übrigens auch für die Lösung mit dem Template stellen - da wäre ich diesbezüglich genauso ratlos. Denn die User-ID hilft mir ja gerade nicht weiter.

Ansonsten aber danke für den Tipp mit dem Formular, das hört sich spontan irgendwie so an, als könnte ich selbst rausfinden, wie das geht, zumal ich mich mit der Grundstruktur von Modulen schon mal ein wenig auseinander gesetzt habe.

LG
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Denn die User-ID hilft mir

Eingetragen von derjochenmeyer@... (591)
am 26.02.2010 - 14:48 Uhr

Denn die User-ID hilft mir ja gerade nicht weiter.

Die User-ID ist ja nur ein Beispiel. In $variables['user'] ist das ganze User-Objekt drin. Ich glaube, bzw. könnte mir vorstellen, dass auch das Modul Content Profile hier den entsprechenden "User-Node" reinlädt.

Wenn nicht gibt es bestimmt irgendeine Funktion im Modul Content Profile die du dafür verwenden kannst. Ich würde tippen auf:

/**
* Returns an array suitable for use with drupal_render,
* that shows all content_profiles as configured by the admin.
*/
function content_profile_show_profiles($uid) {
  [...]
}
  • Anmelden oder Registrieren um Kommentare zu schreiben

Vermutlich ist es dieses

Eingetragen von rokr (593)
am 18.02.2010 - 10:02 Uhr

Vermutlich ist es dieses hier:
http://drupalcontrib.org/api/function/content_profile_load/6

  • Anmelden oder Registrieren um Kommentare zu schreiben

Versuche mal, bei der Zahl

Eingetragen von Exterior (2903)
am 18.02.2010 - 10:17 Uhr

Versuche mal, bei der Zahl folgendes einzutragen:

<?php
$myuser
= user_load([author:uid]); profile_load_profile($myuser); $datum_autor = $myuser_profile_geburtsdatum; echo $datum_autor;
?>


Mit dieser Zeile müsste dann das Zahl-Feld den Wert des Profil-Feldes für's Geburtsdatum des Autors annehmen annehmen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Versuche

Eingetragen von E-Fee (481)
am 18.02.2010 - 11:14 Uhr
Exterior schrieb

Versuche mal, bei der Zahl folgendes einzutragen:

<?php
$myuser
= user_load([author:uid]); profile_load_profile($myuser); $datum_autor = $myuser_profile_geburtsdatum; echo $datum_autor;
?>


Mit dieser Zeile müsste dann das Zahl-Feld den Wert des Profil-Feldes für's Geburtsdatum des Autors annehmen annehmen.

Wo denn jetzt genau, in der template.php? Klingt auf jeden Fall schon mal gut, jetzt muss ich nur noch das Gleiche auch für den Benutzer durchziehen (da muss ich wohl einfach nur mal nachschauen, was statt author:uid rein muss, wahrscheinlich sowas wie user:uid *wildrumrat*). Die Vergleichsoperation sollte dann ja ein Kinderspiel sein.
Und ich muss es auf einen Nodetype (oder wenige) eingrenzen - ok, das packe ich vermutlich einfach als zusätzliche Bedingung mit rein.

Sorry übrigens, aber ich stehe derzeit einfach mal wieder vor einer gewissen Klippe in meiner persönlichen Drupal-Lernkurve. Es ging bislang so viel, auch an komplexen Abfragen, ohne wirklich in den Code reinzumüssen, dass ich einfach den Dreh, wo und wie ich jetzt ganz genau auf die API irgendwelcher Sachen zugreife und was wo zur Verfügung steht und wie angesprochen wird, noch nicht raus habe.

Danke bisher erstmal!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ohne jetzt im Detail

Eingetragen von rokr (593)
am 18.02.2010 - 11:59 Uhr

Ohne jetzt im Detail nachzuschauen: Da beide Module (Rules, Content Profile) von fago sind, kannst du bestimmt mit Rules die Profile Objekte laden und vergleichen, ohne PHP zu schreiben. Es gibt da sehr ausgefeilte Rule Sets und Operatoren. Ob das tolle Performance ist, kann ich nicht beurteilen.

Grüße, Ronald :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den PHP-Code von oben kannst

Eingetragen von Exterior (2903)
am 18.02.2010 - 13:28 Uhr

Den PHP-Code von oben kannst du beim nummerischen Vergleich für Rules verwenden. Damit müsstest du dann die Geburtsdaten vergleichen können und wenn das Datum des Profilbesitzers nicht älter ist, kannst du eine Weiterleitung zu einer Zugriff-Verboten-Seite machen oder sowas.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Den

Eingetragen von E-Fee (481)
am 18.02.2010 - 23:35 Uhr
Exterior schrieb

Den PHP-Code von oben kannst du beim nummerischen Vergleich für Rules verwenden.

Kann sein, dass ich blind bin, aber ich finde da bei Rules nirgendwo ein Feld, um meinen eigenen PHP-Code auszuführen, wie man das ja in Drupal sonst an jeder Ecke irgendwo hat.
Oder kommt die Codezeile so, wie sie ist (mehr oder weniger zumindest), in das Feld rein, wo das Token auch reinkäme?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das soll dort direkt in die

Eingetragen von Exterior (2903)
am 19.02.2010 - 11:34 Uhr

Das soll dort direkt in die Zeile für die Zahl:

http://s8b.directupload.net/file/d/2075/wclbl79w_jpg.htm

Hab's aber nicht probiert, musst du mal testen, ob's klappt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterior schrieb Das soll

Eingetragen von E-Fee (481)
am 19.02.2010 - 13:02 Uhr
Exterior schrieb

Das soll dort direkt in die Zeile für die Zahl:

http://s8b.directupload.net/file/d/2075/wclbl79w_jpg.htm

Hab's aber nicht probiert, musst du mal testen, ob's klappt.

Dankeschön, werde ich nachher probieren, hab nur grad ein paar eilige Kunden hier.
Mir kam aber vorhin auch schon der Gedanke, dass ... tata, ich in dieser einen Testinstallation vergessen haben könnte, das Core-Modul PHP-Filter zu aktivieren. Kein Wunder also, dass ich dort bis auf die Token-Ersetzungsmuster nichts gefunden habe ... und jetzt kriege ich da sogar verfügbare PHP-Variablen angeziegt, schick!

Ich habe die Tage noch zu jemandem gesagt, dass manchmal das Problem vor dem Computer sitzt ... manchmal kann ich das auch für mich selbst reklamieren, nobody is perfect!

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, mal ein kleiner

Eingetragen von E-Fee (481)
am 21.02.2010 - 18:07 Uhr

So, mal ein kleiner Zwischenstand: So langsam habe ich das raus, wie und wo ich auf die ganzen Werte zugreife (inkl. Ausgabe auch von verfügbaren Arrays in meiner Testumgebung), meine ganzen Operationen kann ich mir dann in PHP ja so zurechtlegen, wie ich das möchte.

Den PHP-Code gebe ich allerdings nicht beim numerischen Vergleich und der Zahl ein, da dort auch die Länge sehr ungünstig begrenzt ist. Habe aber nach meiner nachträglichen Aktivierung (s.o., shame on me) des PHP-Filters dann auch die Möglichkeit gefunden, direkt meinen benutzerdefinierten PHP-Code für eine Bedingung einzugeben - genau das ist es, was ich brauchte, so zu Fuß geht es dann einfach schneller und angepasster.
Nachdem meine Testregel jetzt richtig ausgewertet wird, kann ich dann jetzt in Ruhe meine etwas komplexere Regel bauen.

Auch nehme ich für die Sache mit dem Geburtsdatum und eine weitere Angabe, die da einfließt, jetzt doch das normale Profile-Modul, so wie es aussieht.

Danke bislang allen, die geholfen haben!

Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das hört sich ja gut

Eingetragen von rokr (593)
am 21.02.2010 - 19:03 Uhr

Das hört sich ja gut an.
Das mit dem PHP-Filter ist echt so ein Klassiker. Schon oft gedacht "ja spinn ich, hier konnte ich doch mal eine PHP Funktion aufrufen". :-)

Viel Erfolg, Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Tja, für die Nodes bzw.

Eingetragen von E-Fee (481)
am 22.02.2010 - 10:24 Uhr

Tja, für die Nodes bzw. Profile hab ich's ja raus, jetzt felt mir aber irgendwie der Zugriff unter Views.
Ich komme dort weder an profile_geburtsdatum ran noch an *irgendein* Feld des Content Profile. Dass man an die zusätzlichen Felder unter Profile wohl nicht so recht als Filter zugreifen kann, da kein Node, ist mir jetzt schon irgendwo begegnet. Wobei: ich habe auch profile_geschlecht, und das funktioniert als Filter einwandfrei. Das Geburtsdatum ist aber - wer hätte es gedacht - als Date angelegt, aber da komme ich weder als Filter noch Argument ran. Dito für alle Sachen unter Content Profile, obwohl ich hier eine Beziehung hinzugefügt habe.

Ich wollte das ganze unter Arguments mit einem PHP Argument Handling Code machen, da ich ja ohnehin auch wieder eine Vergleichsoperation in Abhängigkeit des handelndenen Users machen will, komme hier aber nicht weiter. Selbst Ausgaben, die ich zur Probe angelegt habe, greifen weder für das profile_geburtsdatum noch für das Content Profile.

Grundsätzlich hätte ich das Geburtsdatum auch lieber im Profile als im Content Profile, weil ich es dann easy so einstellen kann, dass der User es nach der Registrierung nicht mehr ändern kann. Bei Content Profile habe ich auch in den Permissions noch keinen Weg gefunden, um zu verhindern, dass er es nachträglich immer wieder editiert, dort gibt es nur edit und view, edit muss ich aber freigeben, damit er überhaupt was eingeben kann. Mmmh, gibt da ja sicher auch irgendwo einen Weg, das zu unterbinden.

Im Prinzip geht es ja nur um: zeige mir alle User an, deren Profile ich sehen darf, basierend auf den Regeln, die ich ja beim Profilaufruf selbst jetzt schon erfolgreich anwende.

Viele Grüße
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hint: unter Views sind

Eingetragen von rokr (593)
am 22.02.2010 - 10:27 Uhr

Hint: unter Views sind Date-Felder nicht unter "content" gruppiert, sondern in einer eigenen Gruppe "date". Habe mir auch schon mal den Wolf nach einem CCK Date-Feld gesucht. Könnte das sein?

Grüße, Ronald :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nee, leider nicht! Da hatte

Eingetragen von E-Fee (481)
am 22.02.2010 - 11:33 Uhr

Nee, leider nicht! Da hatte ich auch schon drauf geachtet, das sind aber nur so Sachen wie Änderungsdatum etc. drin. Hatte auch schon mal in anderen Projekten so Sachen mit einfachem Terminkalender, da bin ich an die Daten auch rangekommen. Immerhin hat mich das aber auf die Idee gebracht, mal dort nachzuschauen, und dann ist mir aufgefallen, dass es ja die Auswahl zwischen date(node) und date(users) gibt, ich das aber nicht umgestellt hatte, da ich ja zuerst mit dem User rumhantiert habe. Und das Content Profile mit allen seinen Feldern ja ein Node ist. War nur irritiert, dass ich da auch über den PHP-Code auch nicht rankam.

Nun denn, meine Überlegung ist jetzt diese: Als Standardargument hatte ich an "Benutzer-ID des angemeldeten Benutzers" gedacht, aber vielleicht ist es geschickter, per PHP-Code direkt das Geburtsdatum (z.B. als Timestamp, würde mir auch rechnerisch viel erleichtern) zu holen. Da sollte ich noch mal schauen, ob ich den oben geposteten Schnipsel etwas anpassen kann.
Und dann im Validator ebenfalls mit PHP ran, und da müsste ich dann irgendwie jeden der anderen User holen und dessen Geburtsdatum vergleichen ... ich nehme mal an, dass die Validierung und Rückgabe von TRUE oder FALSE auf jeden einzelnen Datensatz bezogen ist?
Sonst würde mir nämlich jetzt echt keine andere Möglichkeit mehr einfallen.

LG
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also mit Views kannst du

Eingetragen von rokr (593)
am 22.02.2010 - 12:10 Uhr

Also mit Views kannst du doch zwischen dem User (Argument) und dem Content Profile einfach eine Beziehung herstellen. Danach kannst du über die Beziehung auf alle Felder zugreifen.

Grüße, Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Tja, wenn man in Drupal

Eingetragen von E-Fee (481)
am 22.02.2010 - 12:38 Uhr

Tja, wenn man in Drupal irgendwas EINmal angewendet hat, dann behält man meist, wie das geht, und kann das gleich auf zig andere Sachverhalte übertragen. Aber manche Sachen sind zunächst erstmal eine Blackbox und zu wenig dokumentiert, oder zu wenig für Fällen, die meinem ähneln. Und dann steht man erstmal da, sieht die ganzen Sachen, aber nicht unbedingt, was sie bewirken

Beim Rumspielen in Views mit den Argumenten habe ich dann auch gemerkt: Ah ja, ich kann jetzt aufgrund der Beziehung da unten ein Häkchen für das entsprechende Feld machen. Das Ganze auf den handelnden Benutzer übertragen, und im Moment nur hoffen, dass er mir wirklich das passende Argument ausspuckt. Das Argument kommt dann irgendwie in die Validierung (wobei da nach Anschauen der anderen Optionen wohl echt nur PHP in Frage kommt, aber daran soll es nicht liegen).
Aber nun brauch ich ja noch den Vergleich mit allen anderen Nutzern bzw. dem einen Feld in deren Content Profile, und wie macht man das jetzt? Da steh ich nun echt ratlos da. Ein zweites Argument, das sich dann genau wie unterscheidet? Irgendwie mit Wildcard? Oder im ersten Argument irgendwie in PHP mit einer Schleife oder einem Array arbeiten? Wie sag ich dem Kinde, dass es alle Benutzer holen und für jeden ein TRUE oder FALSE zurückgeben soll, um ihn anzuzeigen oder nicht anzuzeigen? Wobei gerade die Kombination Schleife und einzelen Wahrheitswerte nicht gerade vielversprechend klingt.
Ach ja, Typ des Views ist "Benutzer".

*Knoten im Hirn*

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast du schon die

Eingetragen von rokr (593)
am 22.02.2010 - 13:42 Uhr

Hast du schon die Relationship "Node: Content Profile" hinzugefügt?

Grüße, Ronald

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, hab ich, darauf hatte

Eingetragen von E-Fee (481)
am 22.02.2010 - 13:57 Uhr

Ja, hab ich, darauf hatte ich

Zitat:

Ah ja, ich kann jetzt aufgrund der Beziehung da unten ein Häkchen für das entsprechende Feld machen.

bezogen.

Meine Frage ist eher so: für den handelnden User hab ich den Wert, aber wie hole ich den jetzt nochmal für alle anderen User und vergleiche den jeweils und gebe in Abhängigkeit davon die erlaubten User aus? Bzw. WO?
Wahrscheinlich ist das ganz einfach, man muss nur erstmal wissen, wie!

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, ich habe mich jetzt noch

Eingetragen von E-Fee (481)
am 23.02.2010 - 00:45 Uhr

So, ich habe mich jetzt noch einmal ein paar Stunden durch diverse Tutorials und auch Screencasts zu Views und seinen Arguments gewühlt, habe aber immer mehr das Gefühl, dass das auch nicht das ist, was mir bei meinem speziellen Filter hilft - aber irgendwo muss das doch gehen! Bin so langsam kurz davor, die komplette Anwendung selbst zu coden!

Grundsätzlich ist es doch so, dass die Argumente aus den URLs kommen bzw. allgemein eine ganze Menge damit zu tun haben. Ich kann aber auch ein Standardargument zur Verfügung stellen, z.B. "Benutzer-ID des angemeldeten Benutzers" (klingt in meinem Fall ja recht plausibel, zumindest als Ausgangsbasis). Oder einen PHP-Code, mit dem ich z.B. gleich das Geburtsdatum des handelnden Users als Argument übergeben könnte, wenn ich das richtig sehe. Ich könnte sicher auch die "Benutzer-ID des angemeldeten Benutzers" stattdessen als Argument in der URL haben.

Nun hab ich auch ein wenig was von der Validierung gesehen, und soweit ich das den Beispielen entnehmen konnte, geht es dort nur darum, ob im Ganzen TRUE oder FALSE zurückgegeben wird und so z.B. in Abhängigkeit der User-ID (wenn ich z.B. versuche, eine andere als meine eigene aufzurufen) eine Seite erst gar nicht angezeigt wird.
Was ich aber brauche - in meinem Beispiel gehe ich davon aus, kein Argument explizit in den URLs zu haben, und dass die Seite auf jeden Fall angezeigt wird - ist eben nur eine Filterung nach den Nodes oder Userprofilen, die der Benutzer in Abhängigkeit seines eigenen Geburtsdatums sehen darf. Die sollen dann angezeigt werden.

In den Beispielen, die ich jetzt hatte, ging es leider nur um so vergleichsweise triviale Sachen wie eigene Posts anzeigen. Das geht dann schon automatisch, sobald das Argument da ist (das ja mit den entsprechenden Nodes direkt verknüpft ist).
D.h. für mich würde es dann eventuell noch hinhauen, auf Profile oder Nodes mit dem gleichen Geburtsdatum zu filtern, wenn ich das mal übertrage. Aber ich muss ja auch noch mein "größer als" bzw. "kleiner als" irgendwo unterbringen. Muss das jetzt in den Argument-Code, muss das in die Validation, KANN das dort überhaupt funktionieren?

Bin immer noch der Meinung, auch wenn ich eine ganze Weile nix mehr selbst im Zusammenspiel PHP/MySQL gecodet habe, dass das doch mit ein jaar Joins und den richtigen Verschachtelungen ein Kinderspiel sein sollte.

Ach ja, ich habe auch noch das http://drupal.org/project/viewsphpfilter Modul angetestet - leider hat der Autor des Moduls es reingestellt, ohne auch nur den Hauch einer Anleitung oder mal ein Anwendungsbeispiel zu geben. Er schließt alle Issues mit der Begründung, keine Zeit für Support zu haben, und verweist aufs Forum. Wenn im Forum mal jemand nachgefragt hat, gab es nie (brauchbare) Antworten. Also Doku gleich Null, man hat keinen Anhaltspunkt, wie es reinpasst. Ich konnte lediglich sehen, dass mein eigener Code dann nicht "standalone" war, sondern irgendwo in andere Abfragen mit reingefummelt wurde, wo dann aber Variablen, die ich in meiner Abfrage nie benutzt hatte, nicht gefunden wurden.

Oder macht es Sinn, Views für den Zweck in die Ecke zu schmeißen und vielleicht ein eigenes Template zu basteln, dass mir den "View" anhand meiner eigenen Abfrage ausgibt?

LG
Sonja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
Weiter

Neue Kommentare

  • Rollen
    vor 18 Stunden 18 Minuten
  • Inzwischen sind wir bei
    vor 1 Woche 4 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 5 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 2 Tagen
  • Hey danke
    vor 9 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 10 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 10 Wochen 5 Tagen
  • In der entsprechenden View
    vor 10 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250237
Registrierte User: 20464

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 42 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association