[Mapbender-commits] r7791 - in trunk/mapbender: http/plugins resources/db/pgsql/UTF-8/update

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue May 3 15:17:35 EDT 2011


Author: armin11
Date: 2011-05-03 12:17:35 -0700 (Tue, 03 May 2011)
New Revision: 7791

Added:
   trunk/mapbender/http/plugins/mb_metadata_addon.php
   trunk/mapbender/http/plugins/mb_metadata_showMetadataAddon.js
Modified:
   trunk/mapbender/http/plugins/mb_metadata_layer.js
   trunk/mapbender/http/plugins/mb_metadata_layer.php
   trunk/mapbender/http/plugins/mb_metadata_server.php
   trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7rc1_to_2.7rc2_pgsql_UTF-8.sql
Log:
Next part of service-metadata/data-metadata coupling. It is not yet ready, but many things will work: 1) Store metadata from given MetadataURL tags of capabilities into the mapbender registry. 2) The wms metadata editor is now ready to administrate further dataset-metadata - either given thru a link or as a separate very simple metadata record which is stored in mapbenders metadata table. In the following week the modules are adopted to fullfil the INSPIRE Implementing Rules for View Services (Network Services) and Metadata and their complex dependencies on each other. Comments are welcome ;-)

Added: trunk/mapbender/http/plugins/mb_metadata_addon.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_addon.php	                        (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_addon.php	2011-05-03 19:17:35 UTC (rev 7791)
@@ -0,0 +1,155 @@
+<?php
+	require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+?>
+<fieldset class="ui-widget" id="metadataUrlEditor" name="metadataUrlEditor" type="hidden" style="display: none">
+	<fieldset id="addonChooser" name="addonChooser" style="display: none">
+		<legend><?php echo _mb("Choose kind of coupled metadata");?></legend>
+		<p>
+			<input class="typeRadio" type="radio" name="kindOfMetadataAddOn" id="kindOfMetadataAddOn_link" value="link" ><?php echo _mb("Add URL to existing Metadataset");?><br>
+			<input class="typeRadio" type="radio" name="kindOfMetadataAddOn" id="kindOfMetadataAddOn_metadataset" value="metadataset" ><?php echo _mb("Add a simple metadata record which is mostly generated from given layer information");?><br>
+		</p>
+	</fieldset>
+	<!--fieldset for save link form-->
+	<fieldset id="link_editor" name="link_editor" type="hidden" style="display: none">
+		<legend><?php echo _mb("Link Editor");?></legend>
+		<input disabled="disabled" name="link" id="link" />
+		<img class="save_link" src="../img/book.png" alt="" />
+	</fieldset>
+	<!--fieldset for metadata form-->
+	<fieldset id="simple_metadata_editor" name="simple_metadata_editor" type="hidden"  style="display: none">
+		<legend><?php echo _mb("Simple metadata editor");?> <img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" /></legend>
+		<p>
+			<label for=""><?php echo _mb("MD Title");?>:</label>
+			<img class="metadata_img" src="../img/questionmark.png" alt="" />
+			<span class="metadata_span"></span>
+			<input name="title" id="title"/>
+			<img class="metadata_img" src=""></img>
+			<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+		</p>
+		<p>
+		<label for=""><?php echo _mb("MD Abstract");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<input name="abstract" id="abstract"/>
+		<img class="metadata_img" src=""></img>
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Lineage");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<input name="lineage" id="lineage"/>
+		<img class="metadata_img" src=""></img>
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Temporal Reference");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input type="checkbox" name="" value=""> Time
+	</p>
+	<p>
+		<label for=""><?php echo _mb("from");?>:</label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input name="tmp_reference_1" id="tmp_reference_1"/>
+		<img class="metadata_img" src="../img/book.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("to");?>:</label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input name="tmp_reference_2" id="tmp_reference_2"/>
+		<img class="metadata_img" src="../img/book.png" alt="" />
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input type="checkbox" name="" value=""> <?php echo _mb("Cycling Update");?>
+	</p>
+	<p>	
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<select class="metadata_selectbox" size="2" multiple>
+			<option><?php echo _mb("directly");?></option>
+			<option><?php echo _mb("daily");?></option>
+			<option><?php echo _mb("weekly");?></option>
+			<option><?php echo _mb("yearly");?></option>
+		</select>
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Spatial Resolution");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input type="checkbox" name="" value=""><?php echo _mb("Ground Distance [m]");?>
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input name="" id=""/>
+		<img class="metadata_img" src="../img/book.png" alt="" />
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input type="checkbox" name="" value=""><?php echo _mb("Equivalent Scale [1:X]");?>
+	</p>
+	<p>
+		<label></label>
+		<span class="metadata_span"></span>
+		<span class="metadata_span"></span>
+		<input name="" id=""/>
+		<img class="metadata_img" src="../img/book.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Reference System");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<input name="ref_system" id="ref_system"/>
+		<img class="metadata_img" src="../img/book.png" alt="" />
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Format");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<select class="metadata_selectbox" id='format' name='format' size="2" multiple>
+			<option><?php echo _mb("Shape");?></option>
+			<option><?php echo _mb("Database");?></option>
+			<option><?php echo _mb("CSV");?></option>
+			<option><?php echo _mb("GML");?></option>
+		</select>
+	</p>
+	<p>
+		<label for=""><?php echo _mb("MD Charset");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<select class="metadata_selectbox" id='inspire_charset' name='inspire_charset' size="2" multiple>
+			<option><?php echo _mb("UTF8");?></option>
+			<option><?php echo _mb("latin1");?></option>
+		</select>
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	<p>
+		<label for=""><?php echo _mb("Topological Consistance");?>:</label>
+		<img class="metadata_img" src="../img/questionmark.png" alt="" />
+		<span class="metadata_span"></span>
+		<input type="checkbox" name="" value="">
+		<img class="metadata_img" src="../img/misc/inspire_eu_klein.png" alt="" />
+	</p>
+	</fieldset>
+</fieldset>

Modified: trunk/mapbender/http/plugins/mb_metadata_layer.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_layer.js	2011-04-29 11:54:56 UTC (rev 7790)
+++ trunk/mapbender/http/plugins/mb_metadata_layer.js	2011-05-03 19:17:35 UTC (rev 7791)
@@ -97,18 +97,25 @@
 		});
 		req.send();		
 	};
+
 	this.fillMetadataURLs = function (obj) {
+		layerId = obj.layer_id;
 		//for size of md_metadata records:
-		for (var i in obj.md_metadata.metadata_id) {
-			if (obj.md_metadata.origin == "capabilities") {
-				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><a href='"+obj.md_metadata.link[i]+"' target='_blank'>"+obj.md_metadata.uuid[i]+"</a></td><td></td><td></td></tr>").appendTo($("#metadataTable"));
+		for (i=0;i<obj.md_metadata.metadata_id.length;i++) {
+			if (obj.md_metadata.origin[i] == "capabilities") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/osgeo_graphics/geosilk/server_map.png' title='capabilities'/></td><td><a href='"+obj.md_metadata.link[i]+"' target='_blank'>"+obj.md_metadata.uuid[i]+"</a></td><td></td></tr>").appendTo($("#metadataTable"));
 			}
-			if (obj.md_metadata.origin == "mapbender") {
-				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><a href='"+obj.md_metadata.link[i]+"'>"+obj.md_metadata.uuid[i]+"</a></td><td><input disabled='disabled' class='' type='submit' value='edit'/></td><td><input disabled='disabled' class='' type='submit' value='delete'/></td></tr>").appendTo($("#metadataTable"));
+			if (obj.md_metadata.origin[i] == "external") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/osgeo_graphics/geosilk/link.png' title='linkage'/><td><a href='"+obj.md_metadata.link[i]+"'>"+obj.md_metadata.uuid[i]+"</a></td><td><img  class='' title='edit' src='../img/pencil.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",false);return false;'/></td><td><img class='' title='delete' src='../img/cross.png' onclick='deleteAddedMetadata("+obj.md_metadata.metadata_id[i]+","+layerId+");return false;'/></td></tr>").appendTo($("#metadataTable"));
 			}
+			if (obj.md_metadata.origin[i] == "metador") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/gnome/edit-select-all.png' title='metadata'/><td><a href='"+obj.md_metadata.link[i]+"'>"+obj.md_metadata.uuid[i]+"</a></td><td><img  class='' title='edit' src='../img/pencil.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",false);return false;'/></td><td><img class='' title='delete' src='../img/cross.png' onclick='deleteAddedMetadata("+obj.md_metadata.metadata_id[i]+","+layerId+");return false;'/></td></tr>").appendTo($("#metadataTable"));
+			}
 		}
-		$("<input disabled='disabled' class='metadataEntry' type='submit' value='new'/>").appendTo($("#metadataTable"));
+		$("<img class='metadataEntry' title='new' src='../img/add.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",true);return false;'/>").appendTo($("#metadataTable"));
 	}
+
+
 	this.enableResetButton = function () {
 		$("#resetIsoTopicCats").click(function () {
 			$("#layer_md_topic_category_id option").removeAttr("selected");

Modified: trunk/mapbender/http/plugins/mb_metadata_layer.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_layer.php	2011-04-29 11:54:56 UTC (rev 7790)
+++ trunk/mapbender/http/plugins/mb_metadata_layer.php	2011-05-03 19:17:35 UTC (rev 7791)
@@ -118,3 +118,4 @@
 		</p>
 	</fieldset>
 </div>
+

Modified: trunk/mapbender/http/plugins/mb_metadata_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_server.php	2011-04-29 11:54:56 UTC (rev 7790)
+++ trunk/mapbender/http/plugins/mb_metadata_server.php	2011-05-03 19:17:35 UTC (rev 7791)
@@ -2,6 +2,7 @@
 require_once dirname(__FILE__) . "/../../core/globalSettings.php";
 require_once dirname(__FILE__) . "/../classes/class_user.php";
 require_once dirname(__FILE__) . "/../classes/class_wms.php";
+require_once dirname(__FILE__) . "/../classes/class_Uuid.php";
 
 $ajaxResponse = new AjaxResponse($_POST);
 
@@ -165,7 +166,7 @@
 			//check if primary group is set 
 			$user = new User;
 			$userId = $user->id;
-			$e = new mb_exception("user id:".$userId);
+			//$e = new mb_exception("user id:".$userId);
 			$sql = <<<SQL
 	
 SELECT fkey_mb_group_id, mb_group_name, mb_group_title, mb_group_address, mb_group_email, mb_group_postcode, mb_group_city, mb_group_logo_path, mb_group_voicetelephone FROM (SELECT fkey_mb_group_id FROM mb_user_mb_group WHERE fkey_mb_user_id = $1 AND mb_user_mb_group_type = 2) AS a LEFT JOIN mb_group ON a.fkey_mb_group_id = mb_group.mb_group_id
@@ -281,7 +282,7 @@
 SELECT metadata_id, uuid, link, linktype, md_format, origin FROM mb_metadata 
 INNER JOIN (SELECT * from ows_relation_metadata 
 WHERE fkey_layer_id = $layerId ) as relation ON 
-mb_metadata.metadata_id = relation.fkey_metadata_id AND mb_metadata.origin = 'capabilities'
+mb_metadata.metadata_id = relation.fkey_metadata_id WHERE mb_metadata.origin IN ('capabilities','external','metador')
 SQL;
 		$res = db_query($sql);
 		$resultObj["md_metadata"]->metadata_id = array();
@@ -553,6 +554,177 @@
 		$ajaxResponse->setSuccess(true);
 		break;
 
+	case "getLayerMetadataAddon" :
+		$layerId = $ajaxResponse->getParameter("layerId");
+		$metadataId = $ajaxResponse->getParameter("metadataId");
+		$sql = <<<SQL
+
+SELECT * from mb_metadata where metadata_id = $1
+
+SQL;
+		$v = array($metadataId);
+		$t = array('i');
+		$res = db_prep_query($sql,$v,$t);
+		$row = array();
+		if ($res) {
+			$row = db_fetch_assoc($res);
+			$resultObj["metadata_id"]= $row['metadata_id'];
+			$resultObj["uuid"] = $row["uuid"];
+			$resultObj["origin"] = $row["origin"];
+			$resultObj["link"] = $row["link"];
+			$resultObj["linktype"] = $row["linktype"];
+			$resultObj["title"] = $row["title"];
+			$resultObj["abstract"] = $row["abstract"];
+			$resultObj["format"] = $row["format"];
+			$resultObj["ref_system"] = $row["ref_system"];	
+		}
+		$ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+		break;
+	case "updateLayerMetadataAddon" :
+		$layerId = $ajaxResponse->getParameter("layerId");
+		$metadataId = $ajaxResponse->getParameter("metadataId");
+		$data = $ajaxResponse->getParameter("data");
+		$sql = <<<SQL
+
+UPDATE mb_metadata SET link = $2, title = $3, abstract = $4, format = $5, ref_system = $6 WHERE metadata_id = $1
+
+SQL;
+		$v = array($metadataId, $data->link, $data->title, $data->abstract, $data->format, $data->ref_system);
+		$t = array('i','s','s','s','s','s');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Could not update metadata object in database!"));
+			$ajaxResponse->send();
+			die;	
+		}
+		$ajaxResponse->setMessage("Metadata updated!");
+		$ajaxResponse->setSuccess(true);
+		break;
+	case "insertLayerMetadataAddon" :
+		$layerId = $ajaxResponse->getParameter("layerId");
+		$data = $ajaxResponse->getParameter("data");
+		//normaly the link is only set if a link has been created
+		//if a record has been created, the link element will be empty 
+		//use this to distinguish between the to different inserts!
+		//this insert should also push one entry in the ows_relation_metadata table! - after the insert into md_metadata
+		//origin
+		if ($data->kindOfMetadataAddOn == 'link') {
+			//generate metador entry
+			$origin = 'external';
+		} else {
+			$origin = 'metador';
+		}
+		//generate a uuid for the record:
+		$uuid = new Uuid();
+
+		//initialize database objects
+		$link = '';
+		$title = '';
+		$abstract = '';
+		$format = '';	
+		$ref_system = '';
+
+		//read out json objects 
+		if (isset($data->link)) {
+			$link = $data->link;
+		}
+		if (isset($data->title)) {
+			$title = $data->title;
+		}
+		if (isset($data->abstract)) {
+			$abstract = $data->abstract;
+		}
+		if (isset($data->format)) {
+			$format = $data->format;
+		}
+		if (isset($data->ref_system)) {
+			$ref_system = $data->ref_system;
+		}
+		$sql = <<<SQL
+
+INSERT INTO mb_metadata (link, uuid, origin, title, abstract, format, ref_system) VALUES ($1, $2, $3, $4, $5, $6, $7)
+
+SQL;
+		$v = array($link, $uuid, $origin, $title, $abstract, $format, $ref_system);
+		$t = array('s','s','s','s','s','s','s');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Could not insert metadata object into database!"));
+			$ajaxResponse->send();
+			die;	
+		}
+		//set relation into relation table
+		//get metadata_id of record which have been inserted before	
+		$sql = <<<SQL
+
+SELECT metadata_id FROM mb_metadata WHERE uuid = $1
+
+SQL;
+		$v = array($uuid);
+		$t = array('s');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Cannot get metadata record with following uuid from database: ".$uuid));
+			$ajaxResponse->send();
+			die;	
+		}
+		if ($res) {
+			$row = db_fetch_assoc($res);
+			$metadata_id = $row['metadata_id'];
+		}
+		$error = new mb_exception("metadata_id:".$metadata_id);
+		$sql = <<<SQL
+
+INSERT INTO ows_relation_metadata (fkey_metadata_id, fkey_layer_id) VALUES ($1, $2)
+
+SQL;
+		$v = array($metadata_id, $layerId);
+		$t = array('i','i');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Cannot write relation between ows and metadata to database!"));
+			$ajaxResponse->send();
+			die;	
+		}				
+		$ajaxResponse->setMessage("Metadata object inserted into md_metadata!");
+		$ajaxResponse->setSuccess(true);
+		break;
+	case "deleteLayerMetadataAddon" :
+		$metadataId = $ajaxResponse->getParameter("metadataId");
+		$sql = <<<SQL
+
+DELETE FROM mb_metadata WHERE metadata_id = $1
+
+SQL;
+		$v = array($metadataId);
+		$t = array('i');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Could not delete metadata from database!"));
+			$ajaxResponse->send();
+			die;	
+		}
+		$ajaxResponse->setMessage("Metadata deleted!");
+		$ajaxResponse->setSuccess(true);
+		break;
+
+
 	default: 
 		$ajaxResponse->setSuccess(false);
 		$ajaxResponse->setMessage(_mb("An unknown error occured."));

Added: trunk/mapbender/http/plugins/mb_metadata_showMetadataAddon.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_showMetadataAddon.js	                        (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_showMetadataAddon.js	2011-05-03 19:17:35 UTC (rev 7791)
@@ -0,0 +1,241 @@
+var $showMetadataAddonDiv = $(this);
+var $metadataAddonForm = $("<form></form>").appendTo($showMetadataAddonDiv);
+var $metadataAddonPopup = $("<div></div>");
+
+var ShowMetadataAddonApi = function() {
+	var that = this;
+	var layerId;
+	var metadataId;
+	//Function, which pulls the metadata out off the mapbender registry and give a possibility to edit the record or link
+	this.getAddedMetadata = function(metadataId, layerId){
+		// get metadata from server
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_metadata_server.php",
+			method: "getLayerMetadataAddon",
+			parameters: {
+				"layerId": layerId,
+				"metadataId": metadataId
+			},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				$metadataAddonForm.easyform("reset");
+				$metadataAddonForm.easyform("fill", obj);
+				//enable link element to edit link!
+				$("#link").removeAttr("disabled");
+
+				switch (obj.origin) {
+					case "external":
+						$("#metadataUrlEditor").css("display","block");
+						$("#link_editor").css("display","block");
+    						break;
+  					case "metador":
+						$("#metadataUrlEditor").css("display","block");
+						$("#simple_metadata_editor").css("display","block");
+    						break;
+  					case "capabilities":
+						$("#metadataUrlEditor").css("display","block");
+    						$("#simple_metadata_editor").css("display","block");
+    						break;
+					default:
+    						break;
+				}	
+			}
+		});
+		req.send();	
+	}		
+	this.insertAddedMetadata = function(layerId, data){
+		// push metadata from server
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_metadata_server.php",
+			method: "insertLayerMetadataAddon",
+			parameters: {
+				"layerId": layerId,
+				"data": data
+			},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				$("<div></div>").text(message).dialog({
+					modal: true
+				});
+				//update layer form to show edited data
+				that.fillLayerForm(layerId);
+			}
+		});
+		req.send();	
+	}
+	this.updateAddedMetadata = function(metadataId, layerId, data){
+		// push metadata from server
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_metadata_server.php",
+			method: "updateLayerMetadataAddon",
+			parameters: {
+				"layerId": layerId,
+				"metadataId": metadataId,
+				"data": data
+			},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				$("<div></div>").text(message).dialog({
+					modal: true
+				});
+				//update layer form to show edited data
+				that.fillLayerForm(layerId);
+			}
+		});
+		req.send();	
+	}	
+	//function to fill layer form with changed metadata entries TODO: this function is defined in mb_metadata_layer.js before but it cannot be called - maybe s.th. have to be changed
+	this.fillLayerForm = function (layerId) {
+		// get metadata from server
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_metadata_server.php",
+			method: "getLayerMetadata",
+			parameters: {
+				"id": layerId
+			},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				//delete metadataURL entries
+				$('.metadataEntry').remove();
+				//fill MetadataURLs into metadata_selectbox_id
+				that.fillMetadataURLs(obj);
+			}
+		});
+		req.send();		
+	};
+
+	//function generate updated metadataUrl entries TODO: this function is defined in mb_metadata_layer.js before but it cannot be called - maybe s.th. have to be changed
+	this.fillMetadataURLs = function (obj) {
+		layerId = obj.layer_id;
+		//for size of md_metadata records:
+		for (i=0;i<obj.md_metadata.metadata_id.length;i++) {
+			if (obj.md_metadata.origin[i] == "capabilities") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/osgeo_graphics/geosilk/server_map.png' title='capabilities'/></td><td><a href='"+obj.md_metadata.link[i]+"' target='_blank'>"+obj.md_metadata.uuid[i]+"</a></td><td></td></tr>").appendTo($("#metadataTable"));
+			}
+			if (obj.md_metadata.origin[i] == "external") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/osgeo_graphics/geosilk/link.png' title='linkage'/><td><a href='"+obj.md_metadata.link[i]+"'>"+obj.md_metadata.uuid[i]+"</a></td><td><img  class='' title='edit' src='../img/pencil.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",false);return false;'/></td><td><img class='' title='delete' src='../img/cross.png' onclick='deleteAddedMetadata("+obj.md_metadata.metadata_id[i]+","+layerId+");return false;'/></td></tr>").appendTo($("#metadataTable"));
+			}
+			if (obj.md_metadata.origin[i] == "metador") {
+				$("<tr class='metadataEntry'><td>"+obj.md_metadata.metadata_id[i]+"</td><td><img src='../img/gnome/edit-select-all.png' title='metadata'/><td><a href='"+obj.md_metadata.link[i]+"'>"+obj.md_metadata.uuid[i]+"</a></td><td><img  class='' title='edit' src='../img/pencil.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",false);return false;'/></td><td><img class='' title='delete' src='../img/cross.png' onclick='deleteAddedMetadata("+obj.md_metadata.metadata_id[i]+","+layerId+");return false;'/></td></tr>").appendTo($("#metadataTable"));
+			}
+		}
+		$("<img class='metadataEntry' title='new' src='../img/add.png' onclick='initMetadataAddon("+obj.md_metadata.metadata_id[i]+","+layerId+",true);return false;'/>").appendTo($("#metadataTable"));
+	}
+
+		
+	deleteAddedMetadata = function(metadataId, layerId){
+		// push metadata from server
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_metadata_server.php",
+			method: "deleteLayerMetadataAddon",
+			parameters: {
+				"metadataId": metadataId
+			},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				//delete metadataURL entries
+				$('.metadataEntry').remove();
+				//fill MetadataURLs into metadata_selectbox_id
+				//update layer form to show edited data
+				that.fillLayerForm(layerId);
+				$("<div></div>").text(message).dialog({
+					modal: true
+				});
+			}
+		});
+		req.send();	
+	}		
+
+	
+	this.showForm = function (metadataId, layerId, isNew) {
+		$metadataAddonPopup.append($metadataAddonForm);
+		$metadataAddonPopup.dialog({
+			title : "Metadata Addon Editor", 
+			autoOpen : false, 
+			draggable : true,
+			modal : true,
+			width : 600,
+			position : [600, 75],
+			buttons: {
+				"close": function() {
+					$(this).dialog('close');
+				},
+				"save": function() {
+					//get data from form
+					$metadataAddonForm.valid();
+					var formData = $metadataAddonForm.easyform("serialize");
+					if (!isNew) {
+						that.updateAddedMetadata(metadataId, layerId, formData);
+					} else {
+						that.insertAddedMetadata(layerId, formData);
+					}
+					$(this).dialog('close');
+				}
+			},
+			close: function() {
+				//$(".differentFromOriginal").removeClass("differentFromOriginal");
+			}
+		});
+		$metadataAddonPopup.dialog("open");
+		
+	};
+	
+	this.init = function (metadataId, layerId, isNew) {
+		$metadataAddonPopup.dialog("close");
+		$metadataAddonForm.load("../plugins/mb_metadata_addon.php", function () {
+			//first get json
+			if (!isNew) {
+				that.getAddedMetadata(metadataId, layerId);
+			} else {
+				//show empty form
+				
+				//show chooser
+				$("#link").removeAttr("disabled");
+				$("#metadataUrlEditor").css("display","block"); 
+				$("#addonChooser").css("display","block");
+				
+				$(":input[@name='kindOfMetadataAddOn']").click(function(){
+    					if ($(":input[@name='kindOfMetadataAddOn']:checked").val() == 'link') {
+        					$("#addonChooser").css("display","none");
+						$("#link_editor").css("display","block");
+					}
+    					else if ($(":input[@name='kindOfMetadataAddOn']:checked").val() == 'metadataset') {
+        					$("#addonChooser").css("display","none");
+						$("#simple_metadata_editor").css("display","block");	
+					}
+					else {}
+						//do nothing
+				});
+
+
+				//bind function onchange on select radio button
+				//$("#metadataUrlEditor").css("display","block");
+				//$("#link_editor").css("display","block");
+			}
+			that.showForm(metadataId, layerId, isNew);
+			//$("#metadataUrlEditor").css("display","block"); 
+			//$("#link_editor").css("display","block");
+			//get layerId, metadataId - from call!
+			//getAddedMetadata(layerId, metadataId);
+		});
+	}
+	initMetadataAddon = function(metadataId, layerId, isNew) {
+		//close old window and load form
+		that.init(metadataId, layerId, isNew);	
+		//fill form
+		
+		
+	}
+};
+
+$showMetadataAddonDiv.mapbender(new ShowMetadataAddonApi());

Modified: trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7rc1_to_2.7rc2_pgsql_UTF-8.sql
===================================================================
--- trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7rc1_to_2.7rc2_pgsql_UTF-8.sql	2011-04-29 11:54:56 UTC (rev 7790)
+++ trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7rc1_to_2.7rc2_pgsql_UTF-8.sql	2011-05-03 19:17:35 UTC (rev 7791)
@@ -1880,7 +1880,34 @@
     ON mb_metadata FOR EACH ROW EXECUTE PROCEDURE 
     update_lastchanged_column();
 
+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('admin_wms_metadata','mb_md_showMetadataAddon',2,1,'Show addon editor for metadata','Metadata Addon Editor','div','','',NULL ,NULL ,NULL ,NULL ,NULL ,'display:none;','','div','../plugins/mb_metadata_showMetadataAddon.js','','','jq_ui_dialog','');
+INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES('admin_wms_metadata', 'mb_md_showMetadataAddon', 'differentFromOriginalCss', '.differentFromOriginal{
+background-color:#FFFACD;
+}', 'css for class differentFromOriginal' ,'text/css');
+INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES('admin_wms_metadata', 'mb_md_showMetadataAddon', 'inputs', '[
+    {
+        "method": "init",
+        "title": "initialize",
+        "linkedTo": [
+            {
+                "id": "mb_md_edit",
+                "event": "showOriginalMetadata",
+                "attr": "data" 
+            } 
+        ] 
+    },
+    {
+        "method": "initLayer",
+        "title": "initialize",
+        "linkedTo": [
+            {
+                "id": "mb_md_layer",
+                "event": "showOriginalLayerMetadata",
+                "attr": "data" 
+            } 
+        ] 
+    }
+]', '' ,'var');
 
 
 
-



More information about the Mapbender_commits mailing list