D5 alatt fejlesztek egy oldalt, íme:
http://php-dev.infocsop.dote.hu/drupaltanulo5/emberek/szervegyseg/310
készítettem hozzá egy ilyen összecsukós-lenyitós részt, de nem igazán értek css készítéséhez.
Hogyan tudom megoldani h alapállapotban zárva legyen, csak ha rákattintok akkor jelenjenek meg a gyerekelemek.
a modulomban így néz ki ami az adatbázisból előállítja a hierarchikus szerkeszetet.
/*szervezeti egységek lekérdezése*/ function emberek_jelen($szulo, $szint){ $html = ""; $qs = sprintf('select * from szerv_egyseg where parent_id=%d order by name_hu',$szulo); $q = db_query($qs); /* ez azért kell mert ehhez fogjuk mindig hozzáfűzni az eredménysorait hogy ki tudjam majd őket íratni*/ //$html .= "<ul>"."<div class='indent40'>"; /* az egészre vonatkozó betűméret stb. stb.*/ if ($szint == 0) $html .= "<ul>"; else $html .= sprintf("<ul id=\"item_%s\">", $szulo); // $html .= "<ul>"; while ($row = mysql_fetch_array($q)) { //megnézem h v szülője e ez valiknek $qsu = sprintf('select count(*) from szerv_egyseg where parent_id=%d',$row["id"]); $gyszam = mysql_result(mysql_query($qsu), 0); $egy="item_".$row['id']; $ketto="span_".$row['id']; $classes = array(); $cim="emberek/szervegyseg/show/".$row['id']; $szia="<a href='' onclick=\"showHide('$egy','$ketto'); return false;\"><span id=$ketto class='linkspan'>" . "+" . "</span></a>".l($row['name_hu'], sprintf("emberek/szervegyseg/show/%d", $row["id"])); //ha van gyereke akkor szülő // $html .="<li>".l($row['name_hu'], sprintf("emberek/szervegyseg/show/%d", $row["id"]))."<br/>"."\n"; if($gyszam > 0) { $classes[] = "szulo"; $html .= "<li".($classes_str ? " class=\"".$classes_str."\"" : "") .">".$szia."<br/>"."\n"."</li>"; } else{ $classes[] = "level"; $classes[] = "szint".$szint; $classes_str = implode(" ", $classes); $html .= "<li". ($classes_str ? " class=\"".$classes_str."\"" : "") .">".str_repeat(' ',$szint).l($row['name_hu'], sprintf("emberek/szervegyseg/show/%d", $row["id"]))."<br/>"."\n"."</li>"; } // újból meghívjuk a függvényt hogy megjelenítsük a gyerek gyerekeit $html .= emberek_jelen($row['id'], $szint+1); // if ($tipus != "" && $row["org_type"] == $tipus) } $html .= "</ul>"; /* visszaadom az eredménysorokat tartalmazó html változót így tudom kiírni az oldalra az erednényeket*/ return $html; } /* ebben hívom meg azt a függvényt ami végrehajtja a selectet*/ /* az utvonal felparameterezheto*/ function emberek_listo() { $vz; drupal_add_css(drupal_get_path("module", "emberek").'/emberek.css'); drupal_add_js(drupal_get_path("module", "emberek").'/emberek.js'); /* levagja az elejet nekunk csak a vege kell*/ $v = ics_pathvars("emberek/szervegyseg/"); $start = $v[0]; $ki=""; $ki.="<div class='be'>"; $vz.= emberek_jelen($start, 0); $ki.=$vz; $ki.="</div>"; //return emberek_jelen($start, 0); return $ki; }
az ehhez tartozó css rész pedig :
.level{ display:block; } .szulo{ display:block; } .linkspan { color:gold; background-color:brown; font-weight:bold; text-decoration:none; padding:0 2px; font-size:1.2em; margin:right:3px; }
és a hozzá tartozó javascript:
var ELpntr=false; function hideall() { locl = document.getElementsByTagName('ul'); for (i=0;i<locl.length;i++) { locl[i].style.display='block'; } } function showHide(EL,PM) { ELpntr=document.getElementById(EL); if (ELpntr.style.display=='none') { document.getElementById(PM).innerHTML=' - '; ELpntr.style.display='block'; } else { document.getElementById(PM).innerHTML=' + '; ELpntr.style.display='none'; } }
előre is köszönöm!
Drupal verzió:
Fórum: