Sziasztok!
Már nézegetem egy ideje a neten, de nincs több időm próbálgatni, hátha tudja valaki kapásból.
Ezen cikk alapján indultam el:
http://www.silviogutierrez.com/blog/making-cck-fields-read-only-drupal-6/
function setReadonly(&$form, &$form_state, $fieldname) { $form[$fieldname][0]['value']['#attributes']['readonly'] = 'readonly'; $form_state['values'][$fieldname][0]['value'] = $form[$fieldname]['#default_value']['value']; }
Ezzel a módszerrel a 'field_*' -al kezdődő cck mezőket (textfield, texarea sikerült csak olvashatóvá tenni.
Itt kérdés?
"$form_state['values'][$fieldname][0]['value'] = $form[$fieldname]['#default_value']['value'];"
Ez a sor ^^^ minek?
--------------
Itt jön a fő kérdés.
Van egy státusz mezőm (field_status):
created|Created
approved|Approved
finished|Finished
Ezek checkbox-ok.
Egy olyan függvényt szeretnék, aminek megadom paraméterként a readonly-vá állítandó checkbox-ok kulcsát, így ezek csak olvashatóvá válnak, de a többi checkbox-ot még lehet ki/be pipálni a user-nek.
pl. így hívnám (egy 'after_build' függvényben):
setStatusReadonly("approved,finished")
ezután csak a 'created' lenne pipálható, a többi meg csak olvasható.
Elvesztem a $form tömbben. Nem világos.
Köszönöm előre is az ötleteket.
Ezzel próbálkozom
Ez működött végül is.
Kicsit el lehet
kavarni ebben a
$form tömbben.
Azt néztem, hogy mihez kell
Azt néztem, hogy mihez kell neked itt az explode(), és most látom, hogy ezt írod:
ujjujj, ez nagyon ronda. Miért akarod így hívni?
Miért nem egy tisztességesen bejárható tömböt adsz át?
Pl. (igazodva az elnevezésedhez, ami mondjuk Drupal-konvenciókkal teljesen szembemegy):
setStatusReadonly(array('approved','finished'));
Szebb és kezelhetőbb lenne..
A checkboxot disabled-re kell rakni ahhoz, hogy readonly legyen
A checkboxnál a
readonly="readonly"
nem működik, ott adisabled="disabled"
működik.Így:
http://jsbin.com/uponey/2/edit
A
$form
és$form_state
tömbök átlátható kiíratására (a fejlesztés idejéig) pedig használd a Devel modul dsm() függvényét.