===== Baum mit Kategorien in WikkaWiki =====
== Funktionsweise und Skripte ==
Siehe ##libs/wikka.class.php## gegen Ende:
%%(php;1) 
-------------------------
// tree from polskieustawy
	function getTree () {
		$imgpath = "images/";
		$txt = "
";
		$txt .= "";
		$txt .= " ";
		$txt .= " Proszę wybrać kategorię: | 
";
		$txt .= "| ";
		$txt .= " | 
";
		// call this recursive function for grab the tree
		$txt .= $this->getLevel("CategoryWiki");
		$txt .= "
";
		return $txt;
	}
	function getLevel($catname = "CategoryCategory") {
		function isParent () {
			// check, if one is parent of other
			return true;
		}
		$imgpath = "images/";
		//if ($cattag = $_GET['wakka']) {}
		$txt = ""; //$str ="";
		$page = $catname; //"CategoryWiki";
		if ($page=="/") $page="CategoryCategory";
		if ($this->CheckMySQLVersion(4,0,1)) $results = $this->FullCategoryTextSearch($page);
		else $results = $this->FullTextSearch($page);
		if ($results) {
			//$txt .= "";
			$count = 0;
			$pagecount = 0;
			$list = array();
			$active = array();				// lista elementów aktywnych na wszystkich poziomach
			$last = array();					// lista elementów ostatnich na poziomach = czujnik do wyglądu
			$level = 1;								// dummy => później pobierać jako numer poszczególnych przerabianych poziomów
			$active[$level] = 3;			// dummy => później pobierać jako numer otwartego na poziomie $level
			
			foreach ($results as $i => $cpage) {
				if($cpage['tag'] != $page) {
					array_push($list,$cpage['tag']);
				}
			}
			sort($list);
			while (list($key, $val) = each($list)) {
				$count++;
				// kontrola nad "addin", czyli obrazkiem przeznaczonym do wyświetlenia przed samym elementem
				// drzewka - związane z przesunięciem poziomów drzewka
				//if (!(isset($last[$x]))) {
				if ($count == count($list)) {
					$addin = "
";
				} else {
					$addin = "
";
				}
				
				$wybrany = 5; 				// aktywny element, ten który aktualnie wybrano;
				$cat = $wybrany;			// w drzewie pu.com oparto o id elementu; -> wartość rezerwowa
				$myid = $key + 1;					// element aktualnie opracowywany w pętli
															// w pu.com w oparciu o $rec["id"];
				$title = $val;
				$nazwa = $val;
				$myhref = "";
				//for ($y = 1; $y <= $level; $y = $y+1) {
				//	if ($y == $level) {
				//	$myhref .= "&a".$y."=".$rec["id"];
				//	} else {
				//	$myhref .= "&a".$y."=".$active[$y];
				//	}
				//}
				$myhref .= "&cat=".$myid;
				if (isParent()) { // jeśli element ma dzieci
					if ($count == count($list)) { // jeśli jest to ostatni w liście na danym poziomie
						if ($active[$level] == $key+1) {
							$pic1 = "menu_corner_minus";
							$pic2 = "ksiazka_otw";
						} else {
							$pic1 = "menu_corner_plus";
							$pic2 = "ksiazka_zamk";
						}
						$last[$level] = 1;
					} else {
						if ($active[$level] == $key+1) {
							$pic1 = "menu_tee_minus";
							$pic2 = "ksiazka_otw";
						} else {
							$pic1 = "menu_tee_plus";
							$pic2 = "ksiazka_zamk";
						}
						$last[$level] = 0;
					}
				} else {
					// tutaj elementy nie posiadają już dzieci!!!
					if ($active[$level] == $key) {
						// ostatni pusty
						$pic1 = "menu_corner";
						$pic2 = "stronica";
					} else {
						// nieostatni pusty
						$pic1 = "menu_tee";
						$pic2 = "stronica";
					}
				}
				$myA = "";
				$txt .= "".$addin;
				$txt .= $myA." ";
				$txt .= $myA."  ";
				if ($myid == $cat) {
					$txt .= " ".$myA.$nazwa."";
				} else {
					$txt .= " ".$myA.$nazwa."";
				}
				$txt .= " | 
";
				// jesli konieczne, wlacz kolejny poziom
				//if ($active[$level] == $myid) getLevel($active[$level], $level+1, $conn, &$txt, $active, $cat, $last);
				//$rec = mysql_fetch_array($rs);
				
				$pagecount++;
			}
			//$txt .= '
';
		} else $txt .= 'Sorry, no items found for ' . $page .'.';
		return $txt;
	}
------------------------
%%