Eseménykezelés Drupal modulban

kkwx képe

Hellósztok

A modulomba kellene néhány eseménykezelő metódus (bár lehet nem ez a legjobb szó rá). Pl lekérni az adatbázisból bizonyos adatokat és azokat betenni egy listába ('#type' => 'select',) az oldal megnyitásakor, majd egy gombnyomással üríteni a listát és újabb lekérdezés eredményeit listázni, vagy törölni a listából elemeket.

Már próbálkoztam több mindennel is (JavaScript...), de sajnos nem sikerült megoldást találnom a problémára :(.

Nincs véletlenül valakinek valami hasonló modulja, vagy kódrészlete ami alapján meg tudnám csinálni?

Előre is kösz a segítséget.

Nagy Gusztáv képe

konkrét példával jobban megértenénk, mit szeretnél.

0
0

Nagy Gusztáv

kkwx képe

van egy űrlapom, amiben van egy lista elem és egy gomb (meg más is, de azok nem fontosak):

$form['tartam']['feed_item_length'] = array(
  '#type' => 'select',
  '#title' => t('Foglalások'),
  '#required' => TRUE,
  '#size' => 5,
  '#default_value' => variable_get('feed_item_length','choose'),
  '#options' => array(
	'choose' => t('Válasszon...'),
  ),
  '#description' => t('...!'),
);
 
$form['list'] = array(
    '#type' => 'button',
    '#value' => t('Listázás'),
  );

ezt a lista elemet szeretném üríteni a gomb megnyomásakor és feltölteni elemekkel

majd a feltöltött lista egyik elemére klikkelve a kijelölt elem tulajdonságait (SQL-el lekérdezve) kilistázni egy textarea-ba vagy másik listába

végül pedig egy gombnyomással átalakítani egy megadott elem bizonyos tulajdonságát (bár ezt az első 2-ből szerintem meg tudom valósítani :) )

Vagyis összefoglalva: hogy rendelek gombhoz dolgokat, amik lefutnak ha megnyomom a gombot és hogyan töltök bele egy létező lista elembe adatokat. Az egyik ismerősöm szerint ilyesmit csak JavaScript-el lehet, így elvileg az kéne (csak ős sajnos nem ért a Drupalhoz), hogyan hívok meg bármivel JS fájlt (és adok át neki értékeket) és abból, hogyan hivatkozok vissza az oldalon lévő elemekre?

Röviden ennyi lenne a gondom :)

0
0
york képe

Igazabol nem ertem a problemadat...
Miert nem irod be az elejen a listat amibol valasztani lehet, akkor nem kellene meg egyszer ujra tolteni az oldalt.
Csak halkan jegyzem meg, hogy ha valamit JS-sel oldasz meg az oldalon, akkor ugyanazt a funkciot meg kell oldani ugy is, hogy JS nelkul is menjen.
Ha nagyon ujra akarod toltogetni a formot, akkor elsokorben keress peldat multi step formra.
Ha ez ilyen keresest megvalosito oldal, akkor celszeru az url-ben atadni a kereses eredmenyet es a formmal egyutt kiiratni azt amit akarsz.

0
0
kkwx képe

beírnám az elején, csak miután odalép a felhasználó, akkor ő szűrheti az adatokat, pl. hogy ne minden értéket listázzon ki, hanem csak az újabbakat, vagy a bizonyos értékűeket. Én nekem mindegy, hogy JS vagy nem, a lényeg, hogy működjön (bár van csak egy kényelmi funkció ami nem olyan fontos ha mondjuk nem működik és nem akarom miatta újranyitni az oldalt, pl, hogy kiszámolja az árat és kiírja), csak sajnos olyan alapvető dolgokat nem értek (és az ilyen alapdolgokhoz nem találok leírást), hogy hogyan működik a gomb egy űrlapban, vagy hogyan hivatkozok egy elemre az űrlapból (pl. fel akarom tölteni az űrlapot, de csak bizonyos esetekben, így az nem jó megoldás, hogy alapértéket adok meg neki, hanem utána kéne beírnom).
Ez az URL-es oldalújrahívás paraméterátadással módszer se tűnik rossznak, azt hogyan csinálom, nincs valami leírás róla? (és hogy hivatkozok az oldalra magára, mert amit a modulban megírok, akkor az minden weboldalon más oldalnéven fog szerepelni elvileg)
Gyakorlatilag csak ilyen alapdolgok kellenének, de sajnos nem találok semmi hasznosat, mert vagy másról szól vagy sokkal összetettebb dolgok vannak a leírásokban amikbe beleakadok :(.
A legfontosabb dolog ami érdekelne, természetesen a gombok használata, hogy hogyan hívok meg egy gombbal egy függvényt vagy ilyesmi.

0
0
Lavjaman képe

de megéri végigrágnod magad rajta:
AHAH forms
http://drupal.org/node/331941

0
0

*----*----*

$node ? 'alma' : 'bor'

*----*----*

kkwx képe

átnézem, kösz :), ahogy olvasom ez újrahívja a függvényt az új adatokkal, ami nekem tökéletesen megfelel, ha majd sikerül elsajátítanom a használatát :)

De vannak értékek, amiket jobb lenne JS-ben kezelni, ahhoz tudna nekem adni valaki valami segítséget?
Olvastam ezt az oldalt: http://drupal.org/node/304255 , és ha jól értelmeztem több módszer is van, csak nem egyértelmű, hogy ezek mind működnek, vagy csak együtt. Pl. ha beírom az INFO fájlba, hogy "scripts[] = my_java.js", akkor már nem is kellenek a másféle beimportálások, cska könnyedén hivatkozhatok a modul mappájába tett "my_java.js" fájlra? Vagy akkor is kellenek a használat előtt az ilyen meghívások ("drupal_add_js(drupal_get_path('module', 'mymodule') .'/my_js_file.js');") a modulban?

0
0
Pasqualle képe

..._form {
  $form['gomb'] = array(
    '#type' => 'button',
    '#title' => t('Működj!'),
    '#submit' => array('az_en_fuggvenyem'),
    '#valami' => 42,
  );
}
 
function az_en_fuggvenyem($form, &$form_state) {
  $button = $form_state['clicked_button'];
  $valami = $button['#valami'];
  drupal_set_message(t('the answer to life, the universe and everything = @answer', array('@answer' => $valami)));
}

Drupalban keves helyen hasznalnak 'button' tipust, mert van a 'submit' tipus amihez megadott ellenorzo (validate) es futtatando (submit) fuggveny tartozik
http://drupal.org/node/751826

0
0
kkwx képe

kösz, így már tudom kezelni a gombot :), és a sima gomb is ugyanúgy elérhet minden értéket a függvényből, mint a submit ezek szerint?

0
0
Pasqualle képe

kkwx képe

kösz, átnézem :)

0
0
kkwx képe

kösz, a sok hozzászólást, most egy darabig elleszek a lehetőségek próbálgatásával :)
Csak még megkérdezném, hogyan lehet azt csinálni, hogy egyszerűen újrahívni az oldalt és átadni egy értéket akár session-ben vagy akár közvetlenül az új oldalnak, mindenféle extra nélkül (AHAH, JS...)... Mert eddig ez tűnik a legegyszerűbb, legrövidebb, leggyorsabb megoldásnak és bizonyos esetekre ez lenne a legjobb.
Kösz, és ezután remélhetőleg egy darabig nem idegesítek senkit a hülye kérdéseimmel :)

0
0