[Mapbender-commits] r2955 - in branches/nimix_dev/http: html javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Sep 17 08:36:20 EDT 2008


Author: nimix
Date: 2008-09-17 08:36:20 -0400 (Wed, 17 Sep 2008)
New Revision: 2955

Modified:
   branches/nimix_dev/http/html/mod_treefolder2.php
   branches/nimix_dev/http/javascripts/jsTree.js
Log:
cathegorie folders for wms

Modified: branches/nimix_dev/http/html/mod_treefolder2.php
===================================================================
--- branches/nimix_dev/http/html/mod_treefolder2.php	2008-09-17 12:34:59 UTC (rev 2954)
+++ branches/nimix_dev/http/html/mod_treefolder2.php	2008-09-17 12:36:20 UTC (rev 2955)
@@ -75,12 +75,76 @@
 var errors = 0;
 var state=Array();
 var treeState = "";
-var arrNodes = 
-[
-	['root_id', ['Layer','javascript:_foo()']
+<?php
+//load structure
+$sql = "SELECT * FROM gui_treegde WHERE fkey_gui_id = $1 ORDER BY lft;";
+$v = array($_SESSION["mb_user_gui"]);
+$t = array("s");
+$nr = array();
+$str = array();
+$categories = array();
+$path = array();
+$rights = array();
+$cnt = 0;
+$res = db_prep_query($sql, $v, $t);
+//build javascript data array for jsTree
+while($row = db_fetch_array($res)){
+	//push javascript array elements to a single array with lefts and rights
+	$left = "['folder_".$row['id']."', ['".$row['my_layer_title']."', 'javascript:_foo()'],[";
+	$right = "]],";
+	array_push($nr, $row['lft']);
+	array_push($str, $left);
+	array_push($nr, $row['rgt']);
+	array_push($str, $right);
+	
+	//finish all nodes that have no further childs
+	while(count($rights) > 0 && $rights[count($rights)-1]<$row['lft']){
+		array_pop($rights);
+		array_pop($path);
+	}
 
-	]
-];
+	//set path for each wms that is referenced in this leaf
+	array_push($rights, $row['rgt']);
+	array_push($path, "folder_".$row['id']);
+	if($row['wms_id']!=""){
+		foreach(explode(",",$row['wms_id']) as $wms){
+			array_push($categories, "'wms_".$wms."':\"root_id|".implode("|", $path)."\"");
+		}
+	}
+	$cnt++;
+}
+//if we have a configured structure output it
+if($cnt>0){
+	array_multisort($nr, $str);
+	echo "var arrNodesStr = \"[['root_id', ['Layer','javascript:_foo()'],[".implode("",$str)."]]];\";\n";
+	echo "var categories = {".implode(",", $categories)."};\n";
+}
+else{
+//if there is no structure take default
+?>
+var arrNodesStr = "[['root_id', ['Layer','javascript:_foo()']]];";
+var categories = {};
+<?php
+}
+?>
+/*var arrNodesStr = "[['root_id', ['Layer','javascript:_foo()'], [['test1',['Einfach so','javascript:_foo()']],['test2',['Schönes Wetter','javascript:_foo()']],['test3',['Sonstiges','javascript:_foo()']]]]];"
+
+var categories = {"wms_407":arrNodes[0][0]+"|test1","wms_911":arrNodes[0][0]+"|test2", "wms_914":arrNodes[0][0]+"|test2"};
+var arrNodes = [
+  String: node id,
+  [
+    String: title,
+    String: href,
+    String: target,
+    String: image,
+    String: tooltip,
+    Folder definition: node context menu,
+    String: controls
+  ],
+  Folder definition: sub folder
+]
+*/
+var arrNodes = eval(arrNodesStr);
 function _foo(){}
 
 // some defaults
@@ -130,6 +194,15 @@
 
 //parent.eventMapRequestFailed.register(function(t){imgerror(t)});
 
+var treeStructure = [{"left":4,"right":5,"name":"Heute",layerId:123,wmsId:123},{"left":7,"right":8,"name":"2005"},{"left":9,"right":10,"name":"2006"},{"left":11,"right":12,"name":"2007"},{"left":6,"right":13,"name":"Archiv"},{"left":3,"right":14,"name":"News"},{"left":15,"right":16,"name":"Impressum"},{"left":2,"right":17,"name":"Startseite"},{"left":1,"right":18,"name":"(root)"}]
+function treeSort(a,b)
+{
+	return a.left-b.left;
+}
+console.log(treeStructure);
+treeStructure.sort(treeSort);
+console.log(treeStructure);
+
 parent.eventAfterLoadWMS.register(reloadTree);
 parent.eventInit.register(loadTree);
 if(showstatus=='true'||alerterror=='true'){
@@ -155,21 +228,21 @@
 	var scale = parseInt(parent.mb_getScale(mod_treeGDE_map));	
 	if(scale < parseInt(parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_minscale) && parseInt(parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_minscale) != 0){
 		if(selectedLayer==0)
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
 		else
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
 	}
 	else if(scale > parseInt(parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_maxscale) && parseInt(parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_maxscale) != 0){
 		if(selectedLayer==0)
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
 		else
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
 	}
 	else{
 		if(selectedLayer==0)
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '');
 		else
-		   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '');
+		   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '');
 	}
 
 	selectedMap=i;
@@ -186,21 +259,21 @@
 				for(var iii=1; iii<parent.mb_mapObj[i].wms[ii].objLayer.length; iii++){
 					if(scale < parseInt(parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_minscale) && parseInt(parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_minscale) != 0){                    
 						if(iii==0)
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id, '#999999');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id, '#999999');
 						else
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '#999999');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '#999999');
 					}
 					else if(scale > parseInt(parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_maxscale) && parseInt(parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_maxscale) != 0){
 						if(iii==0)
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id, '#999999');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id, '#999999');
 						else
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '#999999');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '#999999');
 					}
 					else{
 						if(iii==0)
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id, '');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id, '');
 						else
-						   	setNodeColor(arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '');
+						   	setNodeColor(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id, '');
 					}
 				}
 			}
@@ -217,7 +290,7 @@
 			for(var ii=0; ii<parent.mb_mapObj[i].wms.length; ii++){
 				for(var iii=1; iii<parent.mb_mapObj[i].wms[ii].objLayer.length; iii++){
 					if(!parent.mb_mapObj[i].wms[ii].objLayer[iii].has_childs){
-						path = arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id;
+						path = arrNodes[0][0]+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id+"|"+parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_id;
 						checkNode(path, 0, parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_visible=='1', false);
 						if(ficheckbox == 'true')
 							checkNode(path, 1, parent.mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_querylayer=='1', false);	
@@ -252,7 +325,7 @@
 	selectedWMS=-1;
 	selectedLayer=-1;
 	init=false;
-	arrNodes = [['root_id', ['Layer','javascript:_foo()']]];
+	arrNodes = eval(arrNodesStr)
 	initArray();
 	if(showstatus=='true'||alerterror=='true')
 		init_mapcheck();
@@ -279,7 +352,7 @@
 	state[wms]=-1;
 	errors++;
 	if(showstatus=='true')
-		setNodeImage(arrNodes[0][0]+"|"+parent.mb_mapObj[map].wms[wms].wms_id, "error_folder.png");
+		setNodeImage(arrNodes[0][0]+"|wms_"+parent.mb_mapObj[map].wms[wms].wms_id, "error_folder.png");
 }
 
 function checkComplete(wms, map, img, first){
@@ -324,7 +397,7 @@
 	for(var wms=0;wms<parent.mb_mapObj[ind].wms.length;wms++){
 		var wmsimgid="map_"+wms;
 		if(parent.frames[mod_treeGDE_map].document.getElementById(wmsimgid)){
-			checkComplete(wms, wmsimgid, arrNodes[0][0]+'|'+parent.mb_mapObj[ind].wms[wms].wms_id, true);
+			checkComplete(wms, wmsimgid, arrNodes[0][0]+'|wms_'+parent.mb_mapObj[ind].wms[wms].wms_id, true);
 		}
 	}
 }
@@ -404,7 +477,7 @@
 				if(l!=0)
 					selectNode(String(lid));
 				else
-					selectNode(String(parent.mb_mapObj[j].wms[k].wms_id));
+					selectNode("wms_"+String(parent.mb_mapObj[j].wms[k].wms_id));
 			}
 		}
 	}
@@ -436,7 +509,7 @@
 				if(l!=0)
 					selectNode(String(lid));
 				else
-					selectNode(String(parent.mb_mapObj[j].wms[k].wms_id));
+					selectNode("wms_"+String(parent.mb_mapObj[j].wms[k].wms_id));
 			}
 		}
 	}
@@ -487,13 +560,15 @@
 
 function handleSelectedWMS(path){
 	if(lock_update)return;
+	console.log(path);
 	var t = path.split("|");
+	var wms_id = t[t.length-1].substr(4);
 	var reset_lock=!lock_check; 
 	var ind = parent.getMapObjIndexByName(mod_treeGDE_map);
-	var layername = parent.mb_mapObj[ind].wms[parent.getWMSIndexById(mod_treeGDE_map,t[t.length-1])].objLayer[0].layer_name;
+	var layername = parent.mb_mapObj[ind].wms[parent.getWMSIndexById(mod_treeGDE_map,wms_id)].objLayer[0].layer_name;
 	var bChk = IsChecked(path, 0);	
-	handleSelectedLayer(mod_treeGDE_map,t[t.length-1],layername,"visible",bChk?"1":"0");
-	handleSelectedLayer(mod_treeGDE_map,t[t.length-1],layername,"querylayer",bChk?"1":"0");
+	handleSelectedLayer(mod_treeGDE_map,wms_id,layername,"visible",bChk?"1":"0");
+	handleSelectedLayer(mod_treeGDE_map,wms_id,layername,"querylayer",bChk?"1":"0");
 	lock_check=true;
 	checkChildren(path, 0, bChk);
 	if(ficheckbox)checkChildren(path, 1, bChk);
@@ -501,24 +576,29 @@
 		setTimeout('setNodeImage("'+path+'", "error_folder.png");', 100);
 	if(reset_lock)
 	{
-		parent.mb_restateLayers(mod_treeGDE_map,t[t.length-1]);
-		parent.setSingleMapRequest(mod_treeGDE_map,t[t.length-1]);
+		parent.mb_restateLayers(mod_treeGDE_map,wms_id);
+		parent.setSingleMapRequest(mod_treeGDE_map,wms_id);
 		lock_check=false;
 	}
 }
 
 function handleSelection(path, box){
 	if(lock_update)return;
+	console.log(path);
 	var reset_lock=!lock_check; 
 	lock_check=true;
 	var bChk = IsChecked(path, box);	
 //	enableCheckbox(path, 0, true);
 	checkChildren(path, box, bChk);
 	if(reset_lock){
+		//find wms id from path
 		var t = path.split("|");
-		parent.mb_restateLayers(mod_treeGDE_map,t[1]);
+		for(var i=1;t[i].indexOf("wms_")!=0;i++){}
+		var wms_id = t[i].substr(4);
+		//set maprequest
+		parent.mb_restateLayers(mod_treeGDE_map,wms_id);
 		if(box==0)
-			parent.setSingleMapRequest(mod_treeGDE_map,t[1]);
+			parent.setSingleMapRequest(mod_treeGDE_map,wms_id);
 		lock_check=false;
 	}
 }
@@ -554,8 +634,13 @@
 								controls=null;
 								if(switchwms=='true')controls='<INPUT type="checkbox" title="' + msgObj.tooltipHandleWms + '" checked onclick="handleSelectedWMS(\''+arrNodes[0][0]+'|'+parent.mb_mapObj[i].wms[ii].wms_id+'\');" />';
 								if(wmsbuttons == 'true'&&metadatalink == 'true')controls+='<a href="'+'javascript:openwindow(\''+ defaultMetadataUrl + '&id='+temp.layer_uid+'\');'+'"><img src="'+imagedir+'/info.png" /></a>';
-								addNode(arrNodes[0][0],[parent.mb_mapObj[i].wms[ii].wms_id,[temp.layer_title,((metadatalink=='true'&&wmsbuttons != 'true')?('javascript:openwindow(\"'+ defaultMetadataUrl + '&id='+temp.layer_uid+'\");'):"javascript:select("+i+","+ii+","+iii+");"),,,temp.layer_title,eval(c_menu),controls,[i,ii,iii]]],false,false,reverse=="true");
-								parentObj = arrNodes[0][0]+"|"+parent.mb_mapObj[i].wms[ii].wms_id;              
+								parentNode = arrNodes[0][0];
+								if(eval("categories.wms_"+parent.mb_mapObj[i].wms[ii].wms_id) !== undefined)
+									parentNode = eval("categories.wms_"+parent.mb_mapObj[i].wms[ii].wms_id);
+								else
+									eval("categories['wms_"+parent.mb_mapObj[i].wms[ii].wms_id+"'] = parentNode");
+								addNode(parentNode,["wms_"+parent.mb_mapObj[i].wms[ii].wms_id,[temp.layer_title,((metadatalink=='true'&&wmsbuttons != 'true')?('javascript:openwindow(\"'+ defaultMetadataUrl + '&id='+temp.layer_uid+'\");'):"javascript:select("+i+","+ii+","+iii+");"),,,temp.layer_title,eval(c_menu),controls,[i,ii,iii]]],false,false,reverse=="true");
+								parentObj = parentNode+"|wms_"+parent.mb_mapObj[i].wms[ii].wms_id;              
 							}
 							if(parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_parent && (handlesublayer=="true"||parent.mb_mapObj[i].wms[ii].objLayer[iii].layer_parent=="0")){
 								var parentLayer = "";

Modified: branches/nimix_dev/http/javascripts/jsTree.js
===================================================================
--- branches/nimix_dev/http/javascripts/jsTree.js	2008-09-17 12:34:59 UTC (rev 2954)
+++ branches/nimix_dev/http/javascripts/jsTree.js	2008-09-17 12:36:20 UTC (rev 2955)
@@ -306,45 +306,23 @@
 	var parts = path.split(jst_delimiter[0])
 	var arrData = null;
 
-	for(var p = 0; p < parts.length; p++){
-		arrData = eval(ps);
-		for(var d = 0; d < arrData.length; d++){
-			if(parts[p] == arrData[d][0]){
-				if(p == parts.length - 1){
-					eval(ps)[d][1][3]=Img;
-					var nd = getDomNode(path);
-					if(nd){
-						var cb = nd.childNodes[1].childNodes[0];
-						if(cb && cb.nodeName=="IMG"){
-							if(Img)
-								cb.src=jst_image_folder+"/"+Img;
-							else if(eval(ps)[d][2]){
-								if(childExists(nd)){
-									var s = nd.nextSibling.style
-									if(s.display == ""){
-										cb.src = jst_image_folder + "/expanded_folder.png";
-									}else{
-										cb.src = jst_image_folder + "/closed_folder.png";
-									}
-								}else{
-									cb.src = jst_image_folder + "/expanded_folder.png";
-								}
-							}
-							else
-								rebuildNode(path, true);
-						}
-						else 
-							rebuildNode(path, true);
-					}
-					return true
+	var nd = getDomNode(path);
+	if(nd){
+		var cb = nd.childNodes[1].childNodes[0];
+		if(cb && cb.nodeName=="IMG"){
+			if(Img)
+				cb.src=jst_image_folder+"/"+Img;
+			else if(childExists(nd)){
+				var s = nd.nextSibling.style
+				if(s.display == ""){
+					cb.src = jst_image_folder + "/expanded_folder.png";
 				}else{
-					ps = ps + "[" + d + "][2]"
+					cb.src = jst_image_folder + "/closed_folder.png";
 				}
-				break;
 			}
 		}
 	}
-	return false
+	return true
 }
 
 function selectNode(path){
@@ -433,7 +411,6 @@
 		if(cb && cb.nodeName=="INPUT"){
 			cb.checked = bChk;
 			if(cb.onclick&&triggerOnclick)cb.onclick();
-//TODO DataNode anpassen
 			return true;
 		}
 	}
@@ -448,7 +425,6 @@
 		var cb = nd.childNodes[1].childNodes[ctrlNr];
 		if(cb && cb.nodeName=="INPUT"){
 			cb.disabled = !pEnabled;
-//TODO DataNode anpassen
 			return true;
 		}
 	}
@@ -526,7 +502,7 @@
 	n=n.childNodes[1].firstChild;
 	if(!n)return false;
 	return n.nodeName == "TABLE";
-	}
+}
 
 function getPath(strData){
 	if(strData.indexOf("[") > 0){
@@ -586,16 +562,12 @@
 			if(s.display == ""){
 				s.display = "none"
 				ctlImg.src = img1 + "closed.png"
-				if(eval(strData.substr(0, strData.length-3)+"[1][3]"))
-					fldImg.src = jst_image_folder + "/" + eval(strData.substr(0, strData.length-3)+"[1][3]");
-				else
+				if(String(fldImg.src).indexOf("expanded")!=-1)
 					fldImg.src = jst_image_folder + "/closed_folder.png";
 			}else{
 				s.display = ""
 				ctlImg.src = img1 + "expanded.png"
-				if(eval(strData.substr(0, strData.length-3)+"[1][3]"))
-					fldImg.src = jst_image_folder + "/" + eval(strData.substr(0, strData.length-3)+"[1][3]");
-				else
+				if(String(fldImg.src).indexOf("closed")!=-1)
 					fldImg.src = jst_image_folder + "/expanded_folder.png";
 			}
 			return



More information about the Mapbender_commits mailing list