[Mapbender-commits] r5860 - in trunk/mapbender: conf http/plugins

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Mar 31 03:57:52 EDT 2010


Author: verenadiewald
Date: 2010-03-31 03:57:48 -0400 (Wed, 31 Mar 2010)
New Revision: 5860

Added:
   trunk/mapbender/http/plugins/mb_handleStartUpWmsParams.php
Modified:
   trunk/mapbender/conf/session.conf
Log:
http://trac.osgeo.org/mapbender/ticket/631

Modified: trunk/mapbender/conf/session.conf
===================================================================
--- trunk/mapbender/conf/session.conf	2010-03-29 14:19:28 UTC (rev 5859)
+++ trunk/mapbender/conf/session.conf	2010-03-31 07:57:48 UTC (rev 5860)
@@ -43,4 +43,10 @@
 	Mapbender::session()->set("mb_myWmc_action","append");
 }
 
+Mapbender::session()->set("visiblelayers",$_REQUEST["visiblelayers"]);
+Mapbender::session()->set("querylayers",$_REQUEST["querylayers"]);
+Mapbender::session()->set("backgroundwms",$_REQUEST["backgroundwms"]);
+
+Mapbender::session()->set("visiblelayers_regexpr",$_REQUEST["visiblelayers_regexpr"]);
+Mapbender::session()->set("querylayers_regexpr",$_REQUEST["querylayers_regexpr"]);
 ?>

Added: trunk/mapbender/http/plugins/mb_handleStartUpWmsParams.php
===================================================================
--- trunk/mapbender/http/plugins/mb_handleStartUpWmsParams.php	                        (rev 0)
+++ trunk/mapbender/http/plugins/mb_handleStartUpWmsParams.php	2010-03-31 07:57:48 UTC (rev 5860)
@@ -0,0 +1,190 @@
+<?php 
+/**
+ * Package: handleStartUpWmsParams
+ *
+ * Description:
+ * Mapbender is initialized with params for visibility and queryability of layers 
+ * given as parameters visiblelayers and querylayers (comma-separated lists of layer names) or
+ * visiblelayers_regexpr and querylayers_regexpr (regular expressions that match layer names)
+ * 
+ * Files:
+ *  - http/plugins/mb_handleStartUpWmsParams.php
+ *
+ * SQL:
+ * > INSERT INTO gui_element(fkey_gui_id, e_id, e_pos, e_public, e_comment, 
+ * > e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, 
+ * > e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, 
+ * > e_mb_mod, e_target, e_requires, e_url) VALUES('<appId>','handleStartUpWmsParams',
+ * > 2,1,'handle wms params given in startup URL','handleStartUpWmsParams','div','','',1,1,2,2,5,'','',
+ * > 'div','../plugins/mb_handleStartUpWmsParams.php','',
+ * > 'mapframe1','','http://www.mapbender.org/index.php/HandleStartUpWmsParams');
+ * >
+ * 
+ * Help:
+ * http://www.mapbender.org/HandleStartUpWmsParams
+ *
+ * Maintainer:
+ * http://www.mapbender.org/User:Verena_Diewald
+ * 
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License 
+ * and Simplified BSD license.  
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+$apiVisibleLayers = Mapbender::session()->get("visiblelayers");
+$apiQueryLayers = Mapbender::session()->get("querylayers");
+$apiBackgroundWms = Mapbender::session()->get("backgroundwms");
+
+$apiVisibleLayersRegExpr = Mapbender::session()->get("visiblelayers_regexpr");
+$apiQueryLayersRegExpr = Mapbender::session()->get("querylayers_regexpr");
+
+echo "var apiVisibleLayers = '" . $apiVisibleLayers . "';";
+echo "var apiVisibleLayerArray = apiVisibleLayers.split(',');";
+echo "var apiQueryLayers = '" . $apiQueryLayers . "';";
+echo "var apiQueryLayerArray = apiQueryLayers.split(',');";
+echo "var apiBackgroundWms = '" . $apiBackgroundWms . "';";
+
+echo "var checkForVisibleLayerArray = new Array();";
+echo "var checkForQueryLayerArray = new Array();";
+
+echo "var apiVisibleLayersRegExpr = '" . $apiVisibleLayersRegExpr . "';";
+echo "var apiQueryLayersRegExpr = '" . $apiQueryLayersRegExpr . "';";
+?>
+// set background WMS
+Mapbender.events.init.register(function () {
+	if (apiBackgroundWms !== '') {
+		var newBackgroundWms = parseInt(apiBackgroundWms);
+		if (mod_setBackground_active !== false && wms[mod_setBackground_active]) {
+			wms[mod_setBackground_active].gui_wms_visible = 0;
+		}
+		wms[newBackgroundWms].gui_wms_visible = 2;
+		mod_setBackground_active = newBackgroundWms;
+		$("#setBackground > *").get(0).value = newBackgroundWms;
+		zoom(mod_setBackground_target, true, 1.0); 
+	}
+});
+
+// set queryability and visibility
+Mapbender.events.init.register(function () {
+	var currentVisibleLayerMatchTrue = false;
+	var currentQueryLayerMatchTrue = false;
+	var mapObject = Mapbender.modules[options.target[0]];
+	var wmsArray = mapObject.wms;
+	for (var i in wmsArray) {
+		var currentWms = wmsArray[i];
+	
+		for (var j in currentWms.objLayer) {
+			var currentLayer = currentWms.objLayer[j];
+			
+			// parameter apiVisibleLayers
+			for (var k in apiVisibleLayerArray) {
+				var visibleLayer = apiVisibleLayerArray[k];
+				
+				if (visibleLayer == currentLayer.layer_name) {
+					currentLayer.gui_layer_visible = 1;
+					checkForVisibleLayerArray.push(currentLayer.layer_name);
+				}
+			}
+			
+			// parameter apiQueryLayers
+			for (var k in apiQueryLayerArray) {
+				var queryLayer = apiQueryLayerArray[k];
+				
+				if (queryLayer == currentLayer.layer_name) {
+					currentLayer.gui_layer_querylayer = 1;
+					checkForQueryLayerArray.push(currentLayer.layer_name);
+				}
+			}
+			
+			// parameter apiVisibleLayersRegExpr
+			if(apiVisibleLayersRegExpr !== "") { 
+				var pattern = new RegExp(apiVisibleLayersRegExpr);
+				var currentVisibleLayerMatch = currentLayer.layer_name.match(pattern);
+				
+				if (currentVisibleLayerMatch) {
+					currentLayer.gui_layer_visible = 1;
+					currentVisibleLayerMatchTrue = true;
+				}
+			}
+			
+			// parameter apiQueryLayersRegExpr
+			if (apiQueryLayersRegExpr !== "") {
+				var pattern = new RegExp(apiQueryLayersRegExpr);
+				var currentQueryLayerMatch = currentLayer.layer_name.match(pattern);
+				
+				if (currentQueryLayerMatch) {
+					currentLayer.gui_layer_querylayer = 1;
+					currentQueryLayerMatchTrue = true;
+				}
+			}	
+			
+		}
+		mb_restateLayers(options.target[0], currentWms.wms_id);
+	}
+	
+	if(apiVisibleLayers !== "") { 
+		var visibleLayerNotFound = array_diff(apiVisibleLayerArray, checkForVisibleLayerArray);
+		if(visibleLayerNotFound.length > 0) {
+			var visibleLayerString = visibleLayerNotFound.join(",");
+			var visibleLayerNotFoundMsg = "Visible layer " + visibleLayerString + " not found."; 
+			new Mapbender.Notice(visibleLayerNotFoundMsg);
+			alert(visibleLayerNotFoundMsg);
+		}
+	}
+	
+	if(apiQueryLayers !== "") { 
+		var queryLayerNotFound = array_diff(apiQueryLayerArray, checkForQueryLayerArray);
+		if(queryLayerNotFound.length > 0) {
+			var queryLayerString = queryLayerNotFound.join(",");
+			var queryLayerNotFoundMsg = "Query layer " + queryLayerString + " not found."; 
+			new Mapbender.Notice(queryLayerNotFoundMsg);
+			alert(queryLayerNotFoundMsg);
+		}
+	}
+	
+	if (apiVisibleLayersRegExpr !== "") {
+		if(currentVisibleLayerMatchTrue === false) { 
+			var visibleLayerNotFoundMsg = "No visible layer matches the given regular expression."; 
+			new Mapbender.Notice(visibleLayerNotFoundMsg);
+			alert(visibleLayerNotFoundMsg);
+		}
+	}
+	
+	if (apiQueryLayersRegExpr !== "") {
+		if(currentQueryLayerMatchTrue === false) {
+			var queryLayerNotFoundMsg = "No queryable layer matches the given regular expression."; 
+			new Mapbender.Notice(queryLayerNotFoundMsg);
+			alert(queryLayerNotFoundMsg);
+		}
+	}
+	
+    eventAfterMapRequest.trigger({
+    	map: mapObject
+    });
+
+});
+
+function array_diff(a1, a2) {
+	var a=[], diff=[];
+  	for(var i=0;i<a1.length;i++) {
+  		a[a1[i]]=true;
+  	}	
+  	
+  	for(var i=0;i<a2.length;i++) {
+  		if(a[a2[i]]) {
+  			delete a[a2[i]];
+  		}
+  		else {
+  			a[a2[i]]=true;
+  		}
+  	}
+  	
+  	for(var k in a) {
+  		diff.push(k);	
+  	}	
+  	return diff;
+}
\ No newline at end of file


Property changes on: trunk/mapbender/http/plugins/mb_handleStartUpWmsParams.php
___________________________________________________________________
Added: svn:executable
   + *



More information about the Mapbender_commits mailing list