A tartalom típusnak alapból a status értéke 1, vagyis bekapcsolt, igy "közzétett" lesz a beküldött node.
Azt szereteném, ha bizonyos felhasználók ne közzétett node-ot tudjanak beküldeni, vagyis a status értéke 0 legyen.
Ennek megoldása lehetne (4.7.6-ban működött)
1. form_alter-rel, az alábbi értékek nullára állítása:
$form['options']['status']['#default_value'] = null;
$form['#node']->status = null;
Ez nem működik, beküldés után közzétett lesz a node. (?)
2. form_alter-rel, a $form['#submit']-ba egy saját függvényhívás elhelyezése, ahol az alábbi érték nullára állítás van:
$form['status'] = null;
Ez sem működik, itt is közzétett lesz a node.
A furcsa az, hogy ilyet már csináltam 4.7.6 alatt, de 5.1 alatt valamiért nem működik (nekem).
Mit rontottam el ? Esetleg más megoldás ?
Ötlet
Szia.
Csak egy ötlet: ha a "null" helyett 0-t írsz, akkor sem jó?
Üdv: Zoli
ötletnek jó, de nem jó
ötletnek jó, de nem jó (sajnos)
...mit tudok: http://web.termuves.hu
Finomítom a problémát: A
Finomítom a problémát:
A html formba eleve nem teszi be a status értékét, csak ha van a "Közzétételi beállítások" megváltoztatására jogosultsága az illetőnek (ez persze logikus így). Ugyanez vonatkozhat/vonatkozik a form['submit'] kibővítésére, mivel gondolom az értéket az alapbeállításból veszi, nem pedig a $form változóból.
Magyarán ez így zsákutca.
A kérdés, tud-e valaki valamilyen megoldást a problámára.
Adva van mondjuk 5 ember (aki mondjuk "hirező" jogosultsággal rendelkezik), aki kuldhet be "tartalom" típusú node-ot. Alapból "közzétett" node-ok ezek. Viszont van egy ember, akinek csak adminisztrátori jóváhagyás után jelenhet meg beküldött node-ja.
Alapvetően modulfejlesztés vonalon érdekelne ötlet, de ha valaki modult tud mondani azon a vonalon is el tudok indulni.
...mit tudok: http://web.termuves.hu
formba tenni
Be kell tenni a formba a mezőt akkor, ha nincs ott. Nem elég annyi kód, amit írtál, az nem adja meg minden adatát a mezőnek, így nem tudja úgy menteni az értéket sem. Szerintem itt lehet a kutya elásva.
Nem A megfelelő értékek
Nem
A megfelelő értékek szerepeltnek az form_alter $form változóban, de mivel nincs jogosultsága az illetőnek a "közzétételi beállítások" megváltoztatására, ezért a program eleve nem teszi be a formba az értékeket.
Ugyan ez vonatkozik a $form['submit']-ban megadott függvény esetén: itt is szerepel a status változó és értéke csak ezt sem veszi figyelembe a tároláskor.
Tehát az értékek mindenhol szerepelnek, de nem veszi fegyelembe a program őket. Ha viszont adok jogosultságot a "tartalmak adminisztrációja"-ra akkro egy csomó olyan dolgot is tehetne a felhasználó amit nem kellene. (ebben az esetben a form_alter $form-ban a status #type érték checkbox helyére hidden-t kellen írni és a #default_value értéket 0-ra állítani és minden jó lenne)
...mit tudok: http://web.termuves.hu
látom
Látom, a node_save() ugyan már nem ellenőrzi a jogokat, de az adatok előállítására a node_submit() használatos, ami viszont szépen megnézi, hogy van-e jogod a status-t állítani.
Szerintem egyszerűbb a kérdés, ha megfordítjuk a problémát: legyen a tartalom típus alapértelmezett státusza 0. Azoknál a usereknél, akik szerinted jogosultak azonnal beküldeni, ott állítsd 1-re form_alterrel az űrlap megjelenítésekor.
Így sem jó, de nem ezzel
Így sem jó, de nem ezzel van a gond, hanem hogyha nincs "tartalmak adminisztrációja" jogosultsága az illetőnek akkor hiába van a formban a status értéke vagy a $form['submit'] részben hozzáadott függvény $form változójába, egyszerűen nem veszi figyelembe.
...mit tudok: http://web.termuves.hu
egyik csoport sem
Ha egyik csoport sem admin jogosult, akkor persze nem megoldás, amit írtam. Én nem látom, hogy írtad volna, hogy a "hírezőidnek" (ahogy te nevezted őket) nincs tartalom admin joguk.
Drupal 5.2
A Drupal 5.2-ben pont az itt problémás rész is törlésre került a kódból. Hogy miért, azt fel lehetne kutatni a CVS naplókból, ha bővebben érdekel. Ez a kód okozza a problémád, amit az 5.2-ben töröltek:
Én nem látom a diffben, hogy máshol ez a korlát visszajött más formában. Gondolom azért került ki, mert nem lehetnek ilyen űrlap elemek, ha nincs erre jog (ezt a validáció úgyis ellenőrzi, hogy "form injection" ne legyen lehetséges), így az eredeti adatok különben is megmaradnak. Most viszont van lehetőség felülírásra :)
(A Drupal.hu 5.2-re frissítése közben néztem át a diffet).