Sziasztok!
Elég jól "elvagyok" már a Drupallal, az sem feltétlenül "lök már hanyatt", ha pár kisebb dolgot fejlesztenem kell hozzá PHP -ben. Viszont a JQuery -vel még nem sikerült megismerkednem, így arra gondoltam, teszek pár bátortalan lépést abba az irányba is. Ehhez összeállítottam egy kis alap-példát, egy kérdést, annyit kérnék, hogy ezt oldjátok meg JQuery segítségével itt (lehetőleg érthetően), hogy utána a megoldást boncolgatva, bővítgetve tudjak próbálkozni önerőből.
A példa, amit összeállítottam nagyon egyszerű:
Definiáltam egy formot két elemmel, egy rádió-box, és egy kiválasztó-elem:
function jquery_teszt_form_alter (&$form, $form_state, $form_id) { $form['jquery_teszt'] = array( '#type' => 'fieldset', '#title' => 'JQuery teszt mező', '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['jquery_teszt']['teszt_radio'] = array ( '#type' => 'radios', '#title' => 'teszt radio doboz', '#default_value' => 0, //az elso elem lesz az alapertelmezett '#options' => array('alma', 'banan', 'citrom'), ); $form['jquery_teszt']['teszt_select'] = array ( '#type' => 'select', '#title' => 'teszt select doboz', '#default_value' => 0, '#options' => array('0', '1', '2'), ); }
Hogyan lehetne megoldani JQuery -vel, hogy ha kiválasztok egy elemet (mondjuk az elsőt) a rádiógomboknál, akkor az ugyanolyan sorszámúra álljon rá a kiválasztó-doboz, illetve ez működjön visszafelé is: a kiválasztó-doboztól a rádiógombok felé?
Elnézést a kissé szokatlan kérdést, de anno a modul-fejlesztéssel is hasonló módon ismerkedtem meg, és bevált. :)
Meg tudnád adni a html kimenetet?
Meg tudnád adni a html kimenetet?
Úgy talán esetleg többet tudnék segíteni, bár ez nem 100%.
Én is nem rég barátkozom a jQuery-vel, views megjelenítés kapcsán.
Páldi Zoltán
íme
A HTML forrás idevágó része:
Bár én úgy gondolom (ebben majd erősítsen meg, vagy cáfoljon valaki), hogy ehhez nem igazán kell a HTML forrás, hiszen a Form API -nak is az az egyik lényege, hogy elfedi azt, milyen módon kellene az adott formot HTML -ben lekódolni.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Van egy működő verzióm
Ebben a formában valóban nincs szükség arra, hogy tudjam, hogy hogy néz ki a HTML kimeneted, de több form elemnél már lehet, hogy nem működik. A "guruk" majd biztos tudnak egy szebbet, jobbat, de eddig ez működni látszik.
A rádió gomboknál a click eseményt, a select-nél pedig a change eseményt használtam. A kulcs momentum a filter metódus volt, mert ezzel sikerült felhasználni azt, hogy tudom, hogy hanyadik elemet választottam ki.
Remélem tudod használni.
Páldi Zoltán
change a formon
a change eventet lehet a form-ra alkalmazni, kb ugy, ahogy a doksiban le van irva: http://docs.jquery.com/Events/change, csak ki kell cserelni a
$("select option:selected").each(function () {
sort radio-ra.csak így?
Ezt csak így dobjam bele valamilyen .js fájlba, és drupal_add_js -sel adjam hozzá a modul forrásában? Egyáltalán a modul forrásában hol adjam hozzá a JS -t?
Azért is érdekelne ez, mert ez egy "oktató" kis tesztprogram, amit majd utána nyúzok-csűrök-csavarok... :)
Köszönöm a segítséget.
Jól látom, hogy nem az adott elem "name" attributuma alapján hivatkozol az elemekre?
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Újabb verzió
Az első verzióban csak "selector" alapján hivatkoztam a form elemeire. Az újabb verzióban -
"kérésedre" - most már csak a "name" attributum meghatározott értéke (teszt_radio és teszt_select) alapjan szűkíti a kört, és csak a feltételnek megfelelő elemek esetében végzi el az attributum beállítását.
Próba képpen tedd bele egy .js fájlba és a drupal_add_js-sel hívd meg. Hogy teljesítmény szempontjából is jó legyen abban, majd a "guruk" mondják meg a tuttit. :)
Páldi Zoltán
nem csinál semmit
Szia!
Az általad adott kódot bemásoltam egy .js fájlba, majd a form létrehozása után a jquery_teszt_form_alter függvényben behívtam a .js fájlt a drupal_add_js fügvénnyel.
Az eredmény az lett, hogy a form létrehozásakor valóban ott van a Javascript kód (leellenőriztem az útvonalat, tényleg ott van, ahol a forrásban szerepel), de az egyes form-elemekre kattintgatva nem történik semmi.
A JQuery kód pedig sajnos nem olyan, amit a Firebug -ban nyomon lehetne követni.
Köszönöm, hogy a "name" attribútumot is használtad, ugyanis az első kódban nem értettem tisztán a kiválasztást, de így már megvan, azt hiszem. :)
Ui.: Kipróbáltam, az első verzió sem megy, szóval szerintem én csinálok rosszul valamit. Meg tudnád esetleg mutatni a modulod erre vonatkozó részét?
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
jquery_update
A jquery_update modult beállítottad?
Az igazsághoz tartozik, hogy én csak egy sima html oldalban dobtam össze a kódot és nem egy futó drupalon. Ha elküldöd a modulodat akkor megnézem drupal alatt is, hogy mi lehet a gond.
A pontosítás végett, ugye a modulod 5-ös verzióra készült?
Ui.: esetleg ha egy theme függvényben hívnád meg?
Páldi Zoltán
őőőőőő...
Drupal 6 alatt próbálkozom (ezt valóban nem mondtam), az eddig próbálkozás pedig itt van.
(a theme függvény jó ötlet, kipróbálom)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Drupal 5 jquery_teszt.modul
A fenti "szösszenetet" a te modulod és pp dinamikus select témában íródott modulja alapján gyúrtam össze. A 6-os verzióban nem tudok segíteni, mert még nem próbáltam.
Update: Ez nekem csak Firefox böngészővel működik, de IE-vel nem.
Páldi Zoltán
Drupal 6 -os verzió
Igen, nekem sem működik IE alatt, valószínűleg a JS -sel lesz a gond.
Mindenesetre ezt a változatot átültettem Drupal 6 alá, csak pár kisebb változtatásra volt szükség a továbbfejlesztett menükezelés miatt.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Hozzáférés, jogosultság probléma
Nem az IE-vel van gond, hanem a hozzáféréssel vagy a jogosultsággal.
Ha uid=1-gyel lépsz be, akkor működik IE alatt is, ha nem vagy belépve, akkor Firefox alatt sem megy, de ez már a modulfejlesztés témakörébe tartozik.
Páldi Zoltán
kipróbáltam, tényleg
Kipróbáltam, és tényleg igaz az, amit írtál. Mondjuk nem értem, hogy mi a gondja a jogosultság-kezeléssel hiszen pl. a teszt-környezetemben az 'access content' jogosultság mindenki számára elérhető. Talán a JS használatánál valami külön mizéria van a jogosultság-kezeléssel?
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
jogosultság
Azóta sem sikerült rájönnöm, hogy ez milyen jogosultsághoz köthető, mármint pl. miért nem működik bejelentkezés nélküli látogatóknak a példa.
Tudna ebben valaki segíteni?
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Drupal Konferencia 2008
A tegnapi konferencián bemutattam ennek a modulnak a megoldott verzióját, íme a kódok.
A jquery_teszt.module:
A jquery_teszt.info
A jquery_teszt.js a jQuery kód
Páldi Zoltán
Bocs hogy beleszólok.
Bocs hogy beleszólok. Felraktam ezt a kis modult és szépen működik is, de mind FF3 mind Opera9.63 alatt a jQuery tesztmező ő betűje helyén egy kérdőjel áll. A sminkem egyébként mindenütt helyesen jeleníti meg az ékezetes betűket, bár az egész kis példamodulban egyedül az ő betű szerepel ékezetes betűként.
ggabor
rossz a kódolás
utf8 kódolással mentsd el BOM nélkül!
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Futtatáskor hibaüzenetet is
Futtatáskor hibaüzenetet is kapok: warning: warning: Cannot modify header information - headers already sent by (output started at /mnt/storage/www/virtual/example.hu/htdocs/sites/all/modules/jquery_teszt/jquery_teszt.module:1) in /mnt/storage/www/virtual/example.hu/htdocs/includes/common.inc on line 141.
megnéztem a common.inc bejegyzését:
ggabor
próbáld ki
üríts cache-t, D6 alatt:
teljesítmény menü-->cache ürítése
utána be kell frissíteni persze az oldalt
vagy lehet van egy felesleges sorod a modulodban!!
ezt a kettőt nézd meg nekem ezzel működött!!
írd már meg ha valamelyik megoldotta?
mini
a felesleges sorban...
... a "print_r" kifejezést keresném és törölném.
A következőt csináltam: -
A következőt csináltam: - végül is amit pp javasolt - Notepad++ letöltöttem, (előtte ConText-tel szerkesztettem), a Formátum beállításnál az Átalakítás Utf8 kódolásra (BOM nélkül)-t választottam elmentettem, feltöltöttem és működik.
Köszönöm a segítséget!
ggabor
fehér halál
Nekem is ilyesmi hibaüzenetet ad vissza. Amikor törlöm a cache-t akkor is és a modulaktiválás után is + a ki és belépéseknél is. Ezen kívül megjelenik és tökéletesen müködik a jquery, de az elöbb említett szituációkba elszáll a drupal.
Mi okozhatja ezt? Sztem a hook_menu részbe nem jó vm, mert ha kikommentezem a javascript hívást akkor is fennáll a probléma.
Köszi a kódot
Köszi a kódot.
A kérdésem az lenne, hogy ezt fel lehetne tölteni a saját tartalom típus lebomló listájával?
Ha jól gondolom
Ha jól gondolom, akkor neked szükséged lenne egy olyan listára, amelyben a tartalom típusok szerepelnek.
Ebben az esetben az options értékét lecseréled a node_get_types függvény visszatérési értékére:
'#options' => node_get_types($op = 'types', $node = NULL, $reset = FALSE);
Ha nem az összes tartalom típusra van szükséged, akkor nézd meg a node_get_types függvényt az API oldalán, vagy ha tudod, hogy mi alapján ismered fel a saját tartalom típusaidat akkor az alapján szűröd a tömbödet.
Páldi Zoltán
kérdés
Sziasztok!
Az lenne a kérdésem, hogy ha van egy tartalmam és lefordítom más nyelvre annak programozásilag, hogy lehet lekérdezni az azonosítóját. Node táblából az idjét kiszedni, hogy felhasználhassam, mielőtt megtörténik az új azonosító beszúrása a fordított tartalomhoz.
Előre is köszönöm a segítséget!
szivesen segitunk
de uj kerdes uj tema
http://drupal.hu/node/add/forum