Kérlek segítsetek egy hook_form_alter-el kapcsolatban

osimester képe

Sziasztok!

A felhasználók profil oldalán szeretném a rendszer és a modulok által generált mezőcsoportok alapértelmezett állapotát megváltoztatni.

A 'user_profile_form'-nak estem neki hook_form_alter-el. Két mezőcsoportot viszont nem tudok zárt állapotra állítani és nem találom a pontos megnevezésüket sem:
- időzóna
- adminisztrációs átfedés

A többit (nyelv, kapcsolat beállítások, e-mail beállítások) az alábbi kóddal állítottam zárt állapotra:

  1. if($form_id == 'user_profile_form'){
  2. $form['locale']['#collapsible'] = TRUE;
  3. $form['locale']['#collapsed'] = TRUE;
  4.  
  5. $form['contact']['#collapsible'] = TRUE;
  6. $form['contact']['#collapsed'] = TRUE;
  7.  
  8. $form['mimemail']['#collapsible'] = TRUE;
  9. $form['mimemail']['#collapsed'] = TRUE;
  10. }

... a fenti kettő kivételével. Apróság, de ha a többit is sikerült, szeretném ezeket is megoldani, ha lehet.

Ha valaki tudja a megoldást kérem írja meg.

Köszönettel:

OSImester

Drupal verzió: 
csakiistvan képe

1, http://drupal.stackexchange.com/questions/9861/disable-timezones-in-user...
2, nem tudom mi az az "adminisztrációs átfedés", esetleg valami modul teszi bele?

0
0

Drupal full-stack developer at Wunderman Thompson Budapest

eager képe

adminisztrációs átfedés = "overlay" (mint a "drush dis overlay -y" -ban) :D

hint: core modul.

0
0
Sk8erPeter képe

Debuggolásra használj Xdebug+NetBeans kombót (vagy Eclipse, vagy ami jobban tetszik, mindenesetre valami tisztességes IDE-t, amivel lehet debuggolni rendesen), elsőre lehet, hogy nem könnyű átlátnod, de bőven megéri, kedvcsináló:

NetBeans debugging $form variable

Itt a $form változó értékét láthatod, úgy, hogy beraktam egy breakpointot a megfelelő helyre, lejjebb görgetve:

NetBeans debugging $form variable --> timezone

Tehát mint látható, a $form['timezone']-nal érhetők el az időzónára vonatkozó dolgok.

Itt a $form változó értékével játszogathattam volna még úgy, hogy a Devel modul által kínált dpm() függvényével kiíratom, meg egyéb módon is lehet vele szenvedni, de localhoston debuggolni egy tisztességes IDE és Xdebug segítségével jóval könnyebb. Érdemes kipróbálni, aztán használni, sok időt megspórolhat (miután az ember beállította).

Hogy melyik Xdebugot kell felraknod, ahhoz itt tudsz segítséget kérni, a phpinfo() vagy php -i kimenetének bemásolásával:

http://xdebug.org/wizard.php

Hasznos böngészőbővítmény is van hozzá:
http://xdebug.org/docs/remote

Chrome:
Xdebug helper
https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

Firefox:
The easiest Xdebug
https://addons.mozilla.org/en-US/firefox/addon/the-easiest-xdebug/

5
0
osimester képe

Sikerült ez alapján megcsinálnom.

Itt a végleges kód, hátha valakinek jól jön:

  1. function hook_form_alter(&$form, &$form_state, $form_id) {
  2. if($form_id == 'user_profile_form'){
  3. $form['timezone']['#collapsible'] = TRUE;
  4. $form['timezone']['#collapsed'] = TRUE;
  5.  
  6. $form['signature_settings']['#collapsible'] = TRUE;
  7. $form['signature_settings']['#collapsed'] = TRUE;
  8.  
  9. $form['locale']['#collapsible'] = TRUE;
  10. $form['locale']['#collapsed'] = TRUE;
  11.  
  12. $form['contact']['#collapsible'] = TRUE;
  13. $form['contact']['#collapsed'] = TRUE;
  14.  
  15. $form['mimemail']['#collapsible'] = TRUE;
  16. $form['mimemail']['#collapsed'] = TRUE;
  17. }
  18. }

Köszönöm a segítségeteket.

1
0