[Mapbender-commits] r1311 - trunk/mapbender/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed May 9 09:01:05 EDT 2007


Author: christoph
Date: 2007-05-09 09:01:04 -0400 (Wed, 09 May 2007)
New Revision: 1311

Modified:
   trunk/mapbender/http/javascripts/map.php
Log:
added some comments; refactoring; arranged functions into groups

Modified: trunk/mapbender/http/javascripts/map.php
===================================================================
--- trunk/mapbender/http/javascripts/map.php	2007-05-09 11:58:04 UTC (rev 1310)
+++ trunk/mapbender/http/javascripts/map.php	2007-05-09 13:01:04 UTC (rev 1311)
@@ -70,84 +70,7 @@
 mb_trans.src = "../img/transparent.gif";
 /*END OF GLOBALS*/
 
-var Mb_log = function() {
-	this.levelArray = log_levels.split(",");
-	this.log_level = mb_log_level;
-	this.log_js = mb_log_js;
-	
-	this.indexOfLevel = function(aLevel) {
-		for (var i = 0; i < this.levelArray.length; i++) {
-			if (aLevel == this.levelArray[i])  {
-				return i;
-			}
-		}
-		return false;
-	};
-	this.isValidLevel = function(aLevel) {
-		var isNotOff = typeof(mb_log_js) != 'undefined' && this.log_js != "off";
-		var levelIndex = this.indexOfLevel(aLevel);
-		var isAppropriate = (typeof(levelIndex)=='number' && levelIndex < this.indexOfLevel(this.log_level));
-		return (isNotOff && isAppropriate);
-	};
-	this.throwException = function (message, level) {
-		if (this.isValidLevel(level)) {
-			if (this.log_js == "on") {
-				try {
-					mb_ajaxWrap_post('../php/mb_js_exception.php', {level:level,text:message});
-				}
-				catch(e) {
-					alert(e + ": " + message);
-				}
-			}
-			else if (mb_log_js == "alert") {
-				alert(message);
-			}
-			else if (mb_log_js == "console") {
-				console.log("%s", message);
-			}
-		}
-	};
-}	
-	
-function Mb_exception(message) {
-	this.level = "error";
-	this.throwException(message, this.level);
-}
-Mb_exception.prototype = new Mb_log();
 
-function Mb_warning(message) {
-	this.level = "warning";
-	this.throwException(message, this.level);
-}
-Mb_warning.prototype = new Mb_log();
-
-function mb_ajax_get(url, param, callback) {
-	try {
-		mb_ajaxWrap_get(url, param, callback);
-	}
-	catch(e) {
-		alert('map.php: mb_ajax_get:'+e);
-	}
-}	
-
-function mb_ajax_post(url, param, callback) {
-	try {
-		mb_ajaxWrap_post(url, param, callback);
-	}
-	catch(e) {
-		alert('map.php: mb_ajax_post:'+e);
-	}
-}	
-	
-function mb_ajax_json(url, param, callback) {
-	try {
-		mb_ajaxWrap_json(url, param, callback);
-	}
-	catch(e) {
-		alert('map.php: mb_ajax_json:'+e);
-	}
-}	
-	
 function init(){
 	for(var i=0; i<mb_InitFunctions.length; i++){
 		eval(mb_InitFunctions[i]);
@@ -156,56 +79,6 @@
 		setMapRequest(mb_mapObj[i].frameName);
 	}      	
 }
-/*registerFunctions*/
-function mb_registerInitFunctions(stringFunction){
-	mb_InitFunctions[mb_InitFunctions.length] = stringFunction;
-}
-function mb_registerPanSubElement(elName){
-	var ind = mb_PanSubElements.length;
-	mb_PanSubElements[ind] = elName;
-}
-function mb_registerPreFunctions(stringFunction){
-	mb_MapRequestPreFunctions[mb_MapRequestPreFunctions.length] = stringFunction;
-}
-function mb_registerFeatureInfoPreFunctions(stringFunction){
-	mb_FeatureInfoPreFunctions[mb_FeatureInfoPreFunctions.length] = stringFunction;
-}
-function mb_registerSubFunctions(stringFunction){
-	mb_MapRequestSubFunctions[mb_MapRequestSubFunctions.length] = stringFunction;
-}
-function mb_registerWfsReadSubFunctions(stringFunction){
-	mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length] = stringFunction;
-}
-function mb_registerWfsWriteSubFunctions(stringFunction){
-	mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length] = stringFunction;
-}
-function mb_registerMapObj(frameName, elementName,wms_index,width, height){
-	mb_mapObj[mb_mapObj.length] = new mb_mapObj_const(frameName, elementName, width, height, wms_index);    
-}
-function  mb_registerMapObjectSubFunctions(stringFunction){
-	mb_MapObjectSubFunctions[mb_MapObjectSubFunctions.length] = stringFunction;
-}
-function  mb_registerGetScalePreFunctions(stringFunction){
-   mb_GetScalePreFunctions[mb_GetScalePreFunctions.length] = stringFunction;
-}
-function mb_registerVendorSpecific(stringFunction){
-   mb_vendorSpecific[mb_vendorSpecific.length] = stringFunction;
-}
-function mb_registerloadWmsSubFunctions(stringFunction){
-	mb_loadWmsSubFunctions[mb_loadWmsSubFunctions.length] = stringFunction;
-}
-function mb_removeFunctionFromArray(arrayname,stringFunction){
-	var length = eval(arrayname+".length");
-	for(var i=0; i<length; i++){
-		if(eval(arrayname+"["+i+"]") == stringFunction){
-			var newArray1 = eval(arrayname+".slice(0, "+(i-1)+")");
-			var newArray2 = eval(arrayname+".slice("+(i+1)+", "+length+")");
-			eval(arrayname + " = newArray1.concat(newArray2)");
-			i--;
-			length--;
-		}
-	}
-}
 
 function deleteWmsObject() {
 	wms = new Array();
@@ -216,15 +89,8 @@
 	mb_mapObj = new Array();
 }
 
-function cloneObject(a){
-	var z = new Array();
-	
-	for (attr in a) {
-		var b = a[attr];
-		if (typeof(b) == "object") {z[attr] = cloneObject(b);}
-		else z[attr] = b;
-	}	
-	return z;
+function mb_registerMapObj(frameName, elementName,wms_index,width, height){
+	mb_mapObj[mb_mapObj.length] = new mb_mapObj_const(frameName, elementName, width, height, wms_index);    
 }
 
 function mb_mapObj_const(frameName, elementName, width, height, wms_index){
@@ -302,6 +168,24 @@
    }   
 }
 
+
+function mb_getConjunctionCharacter(onlineresource){
+	if(onlineresource.indexOf("?") > -1){ 
+		if(onlineresource.charAt(onlineresource.length-1) == "?"){ 
+			nextvalue = "";
+		}else if(onlineresource.charAt(onlineresource.length-1) == "&"){
+			nextvalue = "";
+		}else{
+			nextvalue = "&";
+		}
+	}
+	if(onlineresource.indexOf("?") == -1){
+		nextvalue = "?";
+	} 
+	return nextvalue;  
+}
+
+
 function mb_moveWmsById (mapObj_ind, wms_id, toIndex) {
 	return mb_wmsMoveByIndex(mapObj_ind, getWMSIndexById(mapObj_ind, wms_id), toIndex);
 }
@@ -1007,117 +891,7 @@
       document.getElementById(elName).style.left = left;   
    }
 }
-/****************BUTTON HANDLING*************************/
-var mb_button = new Array();
 
-function mb_regButton_frame(wii, frameName, param){
-	var ind = mb_button.length;
-	mb_button[ind] = new mb_conButton(wii, ind);
-	if (frameName == null) {
-		if (param == null) {
-			eval(wii+"("+ind+")");
-		}
-		else {
-			eval(wii+"("+ind+", "+param+")");
-		}
-	}
-	else if (param == null) {
-		eval("window.frames['" + frameName + "']."+wii+"("+ind+")");
-	}
-	else {
-		eval("window.frames['" + frameName + "']."+wii+"("+ind+", "+param+")");
-	}
-	mb_button[ind].prev = mb_button[ind].src;
-	mb_button[ind].src = mb_button[ind].img_off;
-	mb_button[ind].onmouseover = new Function("mb_button_over("+ind+")");
-	mb_button[ind].onmouseout = new Function("mb_button_out("+ind+")");
-	mb_button[ind].onclick = new Function("mb_button_click("+ind+")");
-	if (frameName==null) {
-		mb_button[ind].frameName = "";
-	}
-	else {
-		mb_button[ind].frameName = frameName;
-	}
-}
-
-function mb_regButton(wii){
-	mb_regButton_frame(wii, null, null);
-}
-
-function mb_conButton(wii, ind){
-   this.wii = wii;
-   return true;
-}
-function mb_button_over(ind){
-   if(mb_button[ind].status == 0){
-      mb_button[ind].prev = mb_button[ind].src;
-      mb_button[ind].src = mb_button[ind].img_over;
-   }
-}
-function mb_button_out(ind){
-   mb_button[ind].src = mb_button[ind].prev;
-}
-function mb_button_click(ind){
-   var mbStatus = mb_button[ind].status;
-   if(mbStatus == 0){
-      mb_disableButton(mb_button[ind].elName);
-      mb_button[ind].prev = mb_button[ind].img_on;
-      mb_button[ind].src = mb_button[ind].img_on;
-      mb_button[ind].status = 1;
-      if (mb_button[ind].frameName != "") {
-          window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).go();
-      }
-      else {
-	      document.getElementById(mb_button[ind].elName).go();
-      }
-   }
-   else{
-      mb_button[ind].prev = mb_button[ind].img_off;
-      mb_button[ind].src = mb_button[ind].img_off;
-      mb_button[ind].status = 0;      
-      if (mb_button[ind].frameName != "") {
-          window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).stop();
-      }
-      else {
-	      document.getElementById(mb_button[ind].elName).stop();
-      }
-   }
-}
-function mb_disableButton(elName){
-   for(var i=0; i<mb_button.length; i++){
-      if(mb_button[i].elName != elName && mb_button[i].status == 1){
-            mb_button[i].status = 0;
-		      if (mb_button[i].frameName != "") {
-    	        window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
-	            window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();
-		      }
-		      else {
-    	        document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
-	            document.getElementById(mb_button[i].elName).stop();
-		      }
-            return true;
-       
-      }
-   }
-}
-function mb_disableThisButton(elName){
-   for(var i=0; i<mb_button.length; i++){
-      if(mb_button[i].elName == elName && mb_button[i].status == 1){
-      		//alert(mb_button[i].elName);
-            mb_button[i].status = 0;
-		      if (mb_button[i].frameName != "") {
-    	        window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
-	            window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();
-		      }
-		      else {
-        	    document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
-		        document.getElementById(mb_button[i].elName).stop();
-		      }
-            return true;
-       
-      }
-   }
-}
 /***********************Drag & Drop***********************/
 function mb_getMousePos(e,fName){
 if(fName){
@@ -1290,9 +1064,7 @@
 function mb_disableResult(frameName){
    writeTag(frameName,"markResult","");
 }
-function Numsort(a,b){
-	return a-b;
-}
+
 function mb_registerGML(frameName,obj){
 	var ind = getMapObjIndexByName(frameName);
 	mb_mapObj[ind].geom = obj;
@@ -1346,11 +1118,12 @@
 	}
 }
 
+/*
+ ***************************************************************************************
+ *   div tag
+ ***************************************************************************************
+ */
 
-// ----------------------------------------------------------------------------------------------------
-// DivTag
-// ----------------------------------------------------------------------------------------------------
-
 function DivTag (aTagName, aFrameName, aStyle) {
 	this.exists = function () { 
 		return (rootNode.getElementById(tagName)) ? true : false;
@@ -1433,9 +1206,331 @@
 	this.write("");
 };
 
+/*
+ ***************************************************************************************
+ *   register functions
+ ***************************************************************************************
+ */
 
+function mb_registerInitFunctions(stringFunction){
+	mb_InitFunctions[mb_InitFunctions.length] = stringFunction;
+}
+function mb_registerPanSubElement(elName){
+	var ind = mb_PanSubElements.length;
+	mb_PanSubElements[ind] = elName;
+}
+function mb_registerPreFunctions(stringFunction){
+	mb_MapRequestPreFunctions[mb_MapRequestPreFunctions.length] = stringFunction;
+}
+function mb_registerFeatureInfoPreFunctions(stringFunction){
+	mb_FeatureInfoPreFunctions[mb_FeatureInfoPreFunctions.length] = stringFunction;
+}
+function mb_registerSubFunctions(stringFunction){
+	mb_MapRequestSubFunctions[mb_MapRequestSubFunctions.length] = stringFunction;
+}
+function mb_registerWfsReadSubFunctions(stringFunction){
+	mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length] = stringFunction;
+}
+function mb_registerWfsWriteSubFunctions(stringFunction){
+	mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length] = stringFunction;
+}
+function  mb_registerMapObjectSubFunctions(stringFunction){
+	mb_MapObjectSubFunctions[mb_MapObjectSubFunctions.length] = stringFunction;
+}
+function  mb_registerGetScalePreFunctions(stringFunction){
+   mb_GetScalePreFunctions[mb_GetScalePreFunctions.length] = stringFunction;
+}
+function mb_registerVendorSpecific(stringFunction){
+   mb_vendorSpecific[mb_vendorSpecific.length] = stringFunction;
+}
+function mb_registerloadWmsSubFunctions(stringFunction){
+	mb_loadWmsSubFunctions[mb_loadWmsSubFunctions.length] = stringFunction;
+}
+function mb_removeFunctionFromArray(arrayname,stringFunction){
+	var length = eval(arrayname+".length");
+	for(var i=0; i<length; i++){
+		if(eval(arrayname+"["+i+"]") == stringFunction){
+			var newArray1 = eval(arrayname+".slice(0, "+(i-1)+")");
+			var newArray2 = eval(arrayname+".slice("+(i+1)+", "+length+")");
+			eval(arrayname + " = newArray1.concat(newArray2)");
+			i--;
+			length--;
+		}
+	}
+}
+ 
+function mb_execloadWmsSubFunctions(){
+	for(var i=0; i<mb_loadWmsSubFunctions.length; i++){
+		eval(mb_loadWmsSubFunctions[i]);
+	}	
+}
 
+function mb_execWfsReadSubFunctions(geom) { 	 
+	for(var i=0; i<mb_WfsReadSubFunctions.length; i++){ 	 
+		mb_WfsReadSubFunctions[i](geom); 	 
+	} 	 
+}
 
+function mb_execWfsWriteSubFunctions() { 	 
+	for(var i=0; i<mb_WfsWriteSubFunctions.length; i++){
+		mb_WfsWriteSubFunctions[i](); 	 
+	} 	 
+}
+
+/*
+ ***************************************************************************************
+ *   Javascript exception handling
+ ***************************************************************************************
+ */
+
+/**
+ * abstract class, logs JavaScript events like errors, warnings etc.
+ */
+var Mb_log = function() {
+	this.levelArray = log_levels.split(",");
+	this.log_level = mb_log_level;
+	this.log_js = mb_log_js;
+	
+	this.indexOfLevel = function(aLevel) {
+		for (var i = 0; i < this.levelArray.length; i++) {
+			if (aLevel == this.levelArray[i])  {
+				return i;
+			}
+		}
+		return false;
+	};
+	this.isValidLevel = function(aLevel) {
+		var isNotOff = typeof(mb_log_js) != 'undefined' && this.log_js != "off";
+		var levelIndex = this.indexOfLevel(aLevel);
+		var isAppropriate = (typeof(levelIndex)=='number' && levelIndex < this.indexOfLevel(this.log_level));
+		return (isNotOff && isAppropriate);
+	};
+	this.throwException = function (message, level) {
+		if (this.isValidLevel(level)) {
+			if (this.log_js == "on") {
+				try {
+					mb_ajaxWrap_post('../php/mb_js_exception.php', {level:level,text:message});
+				}
+				catch(e) {
+					alert(e + ": " + message);
+				}
+			}
+			else if (mb_log_js == "alert") {
+				alert(message);
+			}
+			else if (mb_log_js == "console") {
+				console.log("%s", message);
+			}
+		}
+	};
+}	
+
+/**
+ *  class for exception logging
+ *
+ * @extends {@link Mb_log}
+ * @param message the message that is being logged
+ */	
+function Mb_exception(message) {
+	this.level = "error";
+	this.throwException(message, this.level);
+}
+Mb_exception.prototype = new Mb_log();
+
+/**
+ *  class for warning logging
+ *
+ * @extends {@link Mb_log}
+ * @param message the message that is being logged
+ */	
+function Mb_warning(message) {
+	this.level = "warning";
+	this.throwException(message, this.level);
+}
+Mb_warning.prototype = new Mb_log();
+
+/*
+ ***************************************************************************************
+ *   AJAX wrapper functions
+ ***************************************************************************************
+ */
+
+function mb_ajax_get(url, param, callback) {
+	try {
+		mb_ajaxWrap_get(url, param, callback);
+	}
+	catch(e) {
+		alert('map.php: mb_ajax_get:'+e);
+	}
+}	
+
+function mb_ajax_post(url, param, callback) {
+	try {
+		mb_ajaxWrap_post(url, param, callback);
+	}
+	catch(e) {
+		alert('map.php: mb_ajax_post:'+e);
+	}
+}	
+	
+function mb_ajax_json(url, param, callback) {
+	try {
+		mb_ajaxWrap_json(url, param, callback);
+	}
+	catch(e) {
+		alert('map.php: mb_ajax_json:'+e);
+	}
+}	
+	
+/*
+ ***************************************************************************************
+ *   button handling
+ ***************************************************************************************
+ */
+ 
+var mb_button = new Array();
+
+function mb_regButton_frame(wii, frameName, param){
+	var ind = mb_button.length;
+	mb_button[ind] = new mb_conButton(wii, ind);
+	if (frameName == null) {
+		if (param == null) {
+			eval(wii+"("+ind+")");
+		}
+		else {
+			eval(wii+"("+ind+", "+param+")");
+		}
+	}
+	else if (param == null) {
+		eval("window.frames['" + frameName + "']."+wii+"("+ind+")");
+	}
+	else {
+		eval("window.frames['" + frameName + "']."+wii+"("+ind+", "+param+")");
+	}
+	mb_button[ind].prev = mb_button[ind].src;
+	mb_button[ind].src = mb_button[ind].img_off;
+	mb_button[ind].onmouseover = new Function("mb_button_over("+ind+")");
+	mb_button[ind].onmouseout = new Function("mb_button_out("+ind+")");
+	mb_button[ind].onclick = new Function("mb_button_click("+ind+")");
+	if (frameName==null) {
+		mb_button[ind].frameName = "";
+	}
+	else {
+		mb_button[ind].frameName = frameName;
+	}
+}
+
+function mb_regButton(wii){
+	mb_regButton_frame(wii, null, null);
+}
+
+function mb_conButton(wii, ind){
+   this.wii = wii;
+   return true;
+}
+function mb_button_over(ind){
+   if(mb_button[ind].status == 0){
+      mb_button[ind].prev = mb_button[ind].src;
+      mb_button[ind].src = mb_button[ind].img_over;
+   }
+}
+function mb_button_out(ind){
+   mb_button[ind].src = mb_button[ind].prev;
+}
+function mb_button_click(ind){
+   var mbStatus = mb_button[ind].status;
+   if(mbStatus == 0){
+      mb_disableButton(mb_button[ind].elName);
+      mb_button[ind].prev = mb_button[ind].img_on;
+      mb_button[ind].src = mb_button[ind].img_on;
+      mb_button[ind].status = 1;
+      if (mb_button[ind].frameName != "") {
+          window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).go();
+      }
+      else {
+	      document.getElementById(mb_button[ind].elName).go();
+      }
+   }
+   else{
+      mb_button[ind].prev = mb_button[ind].img_off;
+      mb_button[ind].src = mb_button[ind].img_off;
+      mb_button[ind].status = 0;      
+      if (mb_button[ind].frameName != "") {
+          window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).stop();
+      }
+      else {
+	      document.getElementById(mb_button[ind].elName).stop();
+      }
+   }
+}
+function mb_disableButton(elName){
+   for(var i=0; i<mb_button.length; i++){
+      if(mb_button[i].elName != elName && mb_button[i].status == 1){
+            mb_button[i].status = 0;
+		      if (mb_button[i].frameName != "") {
+    	        window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
+	            window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();
+		      }
+		      else {
+    	        document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
+	            document.getElementById(mb_button[i].elName).stop();
+		      }
+            return true;
+       
+      }
+   }
+}
+function mb_disableThisButton(elName){
+   for(var i=0; i<mb_button.length; i++){
+      if(mb_button[i].elName == elName && mb_button[i].status == 1){
+      		//alert(mb_button[i].elName);
+            mb_button[i].status = 0;
+		      if (mb_button[i].frameName != "") {
+    	        window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
+	            window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();
+		      }
+		      else {
+        	    document.getElementById(mb_button[i].elName).src = mb_button[i].img_off;
+		        document.getElementById(mb_button[i].elName).stop();
+		      }
+            return true;
+       
+      }
+   }
+}
+
+/*
+ ***************************************************************************************
+ *   miscellaneous functions
+ ***************************************************************************************
+ */
+
+function cloneObject(someObject){
+	var clone = [];
+	
+	for (attribute in someObject) {
+
+		var currentElement = someObject[attribute];
+
+		if (typeof(currentElement) == "object") {
+			clone[attribute] = cloneObject(currentElement);
+		}
+		else {
+			clone[attribute] = currentElement;
+		}
+	}	
+	return clone;
+}
+
+
+/*
+ ***************************************************************************************
+ *   deprecated functions
+ ***************************************************************************************
+ */
+
+// only used in mod_perimeter.php
+// previously used in mod_initWmc.php, mod_digitize_tab.php, mod_geometryArray.js
 function mb_checkTag(frameName, tagName, elementId, appendAtTagName, attributes){
 	var oldElement;
 	var newElement;
@@ -1470,39 +1565,9 @@
 	}
 	return newElement;
 }
-function mb_execloadWmsSubFunctions(){
-	for(var i=0; i<mb_loadWmsSubFunctions.length; i++){
-		eval(mb_loadWmsSubFunctions[i]);
-	}	
-}
 
-function mb_execWfsReadSubFunctions(geom) { 	 
-	for(var i=0; i<mb_WfsReadSubFunctions.length; i++){ 	 
-		mb_WfsReadSubFunctions[i](geom); 	 
-	} 	 
-}
 
-function mb_execWfsWriteSubFunctions() { 	 
-	for(var i=0; i<mb_WfsWriteSubFunctions.length; i++){
-		mb_WfsWriteSubFunctions[i](); 	 
-	} 	 
-}
 
-function mb_getConjunctionCharacter(onlineresource){
-	if(onlineresource.indexOf("?") > -1){ 
-		if(onlineresource.charAt(onlineresource.length-1) == "?"){ 
-			nextvalue = "";
-		}else if(onlineresource.charAt(onlineresource.length-1) == "&"){
-			nextvalue = "";
-		}else{
-			nextvalue = "&";
-		}
-	}
-	if(onlineresource.indexOf("?") == -1){
-		nextvalue = "?";
-	} 
-	return nextvalue;  
-}
 <?php
 $con = db_connect($DBSERVER,$OWNER,$PW);
 db_select_db(DB,$con);



More information about the Mapbender_commits mailing list