Sziasztok,
Drupal 6 alatt, legfrissebb CCK-val a problémám a következő lenne, amivel nem tudok megküzdeni.
Adott egy tartalomtípus (type1), amiben van egy nodereference select lista egy másik tartalomtípusra (type2). Saját modulból szeretnék kivenni pár elemet a listából (type2 elemekből), annak függvényében milyen jogosultságú felhasználó akar ilyen (type1) tartalomtípust beküldeni.
Próbáltam már form_alter-be betenni #after_build-et, #process-t, #theme-t de sehogy nem találtam a megoldást, mert nem kaptam meg az #options értékeket. Keresgéltem drupal.org-on, de nem sok eredménnyel.
Tud valaki segíteni ezügyben? Hogyan próbálkozzak, illetve van-e esetleg teljesen másik ut? (pl magam generáljam le a select #options-ket?
Előre is köszönöm
A nodereference mező
A nodereference mező létrehozásakor legalul van egy opció: Advanced - Nodes that can be referenced (View)
Itt összerakhatsz egy viewst, ami kiszolgálja a select mezőt opciókkal. Erre a célre összerakhatsz akár egy viewst, ami argumentumban kapja a user id-t az aktuális, bejelentkezett user alapján, de összeheggeszthetsz egy PHP scriptet is, ami előállítja a szükséges szűrést.
Az eredmény egy UID (és innentől fogva bármilyen userrel kapcsolatos, mondjuk role) alapján szűrt listája a node-oknak, mondjuk a node címeknek a nodereference mezőben.
Ez nem járható út?
views egyéni szűrő
Egyszerű views-al nem tudom megoldani mert VAGY szűrés kéne (adott role-ban van VAGY egy másik roleban van és az adott lista elem node-hoz tartozo userref mező az aktualis userre hivatkozik)
Tehát igen speckó szűrés kéne, lehet egy modulból írt views szűrő plugin megírása lenne a megoldás? Esetleg tud valaki linket adni, hogy erről hol tudok olvasni? Persze körülnézek drupal.org-on. Köszönöm a segítséget!
Végül...
hook_views_query_alter() lett a megoldás, bár nem valami elegáns, viszont ellenőrzött körülmények között megy, íme egy kódrészlet ha nincs meg az adott felhasznalónak elegendő jogosultsága: