Beszélt nyelvek lista.

kr.roland képe

Sziasztok!

Drupal 5.17-ben vagyok.
Hogyan tudom megcsinálni azt, hogy a felhasználó egy listából tudjon kiválasztani több nyelvet?
http://www.xunil.hu/kepek/szabad.PNG
(drupal.org)

Ötletem az volt, hogy megkeresem az User modulban azt a rész, ahol megcsinálja az user/*/edit formot, és ott csinálok valamit, de 1 óra alatt nem jöttem rá, hogy hol van...(Esetleg ezt tudja valaki?)

Köszönöm!

Roland

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Nagy Gusztáv képe

Tilos belenyúlni bármelyik modulba!

El se tudom képzeni, miért kellene egy felhasználónak egyszerre több nyelv?

0
0

Nagy Gusztáv

kr.roland képe

Nem több nyelvre gondolok, hanem több beszélt nyelvre (Pl valaki tud németül, magyarul) :)

(Most látom elírtam a téma címét is, legyen inkább: Beszélt nyelvek lista. Nagyon siettem...)

0
0
pp képe

pp

0
0
kr.roland képe

Köszi!

0
0
eMeLA képe

Kapcsold be a profile modult. És hozz létre egy választólistát....

0
0

...mit tudok: http://web.termuves.hu

Balogh Zoltán képe

Erre én is gondoltam, de ott alapból csak 1 lehetőséget lehet kiválasztani, és a kérdezőnek pont arra van szüksége, hogy többet is lehessen.

0
0
kr.roland képe

A profil modult már bekapcsoltam, és ott próbálgattam létrehozni de nem sikerült, úgy ahogyan szeretném.

<select name=""  multiple="multiple" class="..." id="..." >
<option value="0">--</option>
<option value="Nyelv">Nyelv</option>
</select>

multiple="multiple"--> ez lenne a kulcsa az egésznek. Ha ez valahogy bekerülne oda, akkor jó lenne. :D

0
0
Nagy Gusztáv képe

minden lehetséges nyelvnek egy profile mezőt? Akkor még fokozatokat is tudsz definiálni.

Egy nyelv ismerete egyébként se az igen/nem kategória a gyakorlatban!

0
0

Nagy Gusztáv

kr.roland képe

Durván 170 ismert nyelv van a világon, azokat egyenként beírogatni, sok lenne. Próbálok nézelődni a modulok között én is.

0
0
Nagy Gusztáv képe

Pedig a képből sejthető volt. Bocsánat :-(

0
0

Nagy Gusztáv

Jenő képe

Nem ismerem ezt a modult, de lehet, hogy jó erre a célra.
http://drupal.org/project/betterselect

0
0
Jenő képe

Jobban utánanéztem, ez a modul erre nem jó.

0
0
szantog képe

Én a Multiselect http://drupal.org/project/multiselect és a Content Profile http://drupal.org/project/content_profile modulokat néztem ki ennek a megvalósítására. Ha netán így sikerülne, megírhatnád a a tapasztalataidat, lehet, pár órát megspórolnál vele.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

Jenő képe

Nincs tapasztalatom róla. Csak a drupla.org-on a modulokat nézegettem és első olvasásra azt gondoltam, hogy általa a multiselect megvalósítható. "Alaposabb" fordítás után nyilvánvalóvá vált, hogy a már egyébként is multiselect listákat lehet felülbírálni úgy, hogy jelölőnégyzeteket tesz az elemek mellé (lásd: http://drupal.org/files/images/betterselect.png).

0
0
Hojtsy Gábor képe

A drupal.org-on ezt egy spéci form_alter-rel oldottuk meg. Drupal 5 kód, mivel neked az kell:

/**
 * Implementation of hook_form_alter().
 */
function drupalorg_form_alter($form_id, &$form) {
  // ...
  if ($form_id == 'user_edit') {
    // ...
    if (isset($form['Personal information']['profile_languages'])) {
      $form['Personal information']['profile_languages']['#multiple'] = TRUE;
      $form['Personal information']['profile_languages']['#default_value'] = explode('; ', $form['Personal information']['profile_languages']['#default_value']);
      $form['#validate']['drupalorg_profile_fix_languages'] = array();
    }
  }
  // ...
}
 
/**
 * Validation handler for the user profile form, to serialize languages to a string.
 */
function drupalorg_profile_fix_languages($form_id, $form_values, $form) {
  if (is_array($form_values['profile_languages'])) {
    form_set_value($form['Personal information']['profile_languages'], join('; ', array_keys($form_values['profile_languages'])));
  }
}

A lényeg, hogy a profile modul csak egy kiválasztós mezőt tud támogatni. Ezért úgy kell tenni, mintha egy kiválasztós mezőnk lenne. Programból írjuk ezt át több kiválasztósra, de ugyanúgy egy karaktersorozatban tároljuk a kiválasztott értékeket, csak pontosvesszővel választjuk el. Mivel ezt a Drupal nem értené, ezért fel kell darabolni annak alapján, a mentés előtt pedig össze kell illeszteni. Így a Drupal úgy gondolja, hogy egy választós mezőt használsz, pedig nem :)

Teljes modul kód Drupal 5-re (rengeteg mással) itt: http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/drupalorg/d...

Drupal 6-ra itt: http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/drupalorg/d...

Drupal 6 kód kimásolva:

/**
 * Implementation of hook_form_alter().
 */
function drupalorg_form_alter(&$form, $form_state, $form_id) {
  // ...
  if ($form_id == 'user_profile_form') {
    // ...
    // Hack to make the language list a multiselect field (there is no UI
    // for this in profile module). We need to hack around that profile only
    // ever stores select field values as strings, so we need to explode what
    // was in there for our multiselect form.
    if (isset($form['Personal information']['profile_languages'])) {
      $form['Personal information']['profile_languages']['#multiple'] = TRUE;
      $form['Personal information']['profile_languages']['#default_value'] = explode('; ', $form['Personal information']['profile_languages']['#default_value']);
      $form['#submit'] = array_merge(array('drupalorg_profile_fix_languages'), $form['#submit']);
    }
  }
}
 
/**
 * Submit handler for the user profile form, to serialize languages to a string.
 */
function drupalorg_profile_fix_languages(&$form, &$form_state) {
  if (is_array($form_state['values']['profile_languages'])) {
    $form_state['values']['profile_languages'] = join('; ', array_keys($form_state['values']['profile_languages']));
  }
}
0
0
kr.roland képe

Köszi.

0
0