[Mapbender-commits] r4971 - in trunk/mapbender: http/classes http/javascripts http/php resources/db/pgsql/UTF-8/update

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Nov 11 07:27:52 EST 2009


Author: kmq
Date: 2009-11-11 07:27:51 -0500 (Wed, 11 Nov 2009)
New Revision: 4971

Modified:
   trunk/mapbender/http/classes/class_wmc.php
   trunk/mapbender/http/javascripts/mod_savewmc.php
   trunk/mapbender/http/php/mod_savewmc_server.php
   trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql
Log:
save keywords with wmc

Modified: trunk/mapbender/http/classes/class_wmc.php
===================================================================
--- trunk/mapbender/http/classes/class_wmc.php	2009-11-10 17:27:44 UTC (rev 4970)
+++ trunk/mapbender/http/classes/class_wmc.php	2009-11-11 12:27:51 UTC (rev 4971)
@@ -378,9 +378,11 @@
 				}
 	
 	            if($row = db_fetch_row($res)) {
-					$sql = "UPDATE mb_user_wmc SET wmc = $1, wmc_timestamp = $2 WHERE fkey_user_id = $3 AND wmc_title=$4 AND wmc_timestamp = $5";
+					$sql = "UPDATE mb_user_wmc SET wmc = $1, wmc_timestamp = $2 WHERE fkey_user_id = $3 AND wmc_title=$4 AND wmc_timestamp = $5;";
 					$v = array($this->xml, time(), $this->userId, administration::convertOutgoingString($this->wmc_title),$row[2]);
 					$t = array("s", "s", "i", "s","s");
+					
+					
 				}
 				else{
 					$sql = "INSERT INTO mb_user_wmc (" . 
@@ -398,6 +400,9 @@
 				
 			}
 			
+		
+			//put keywords intodatabase
+
 			$res = db_prep_query($sql, $v, $t);
 			if (db_error()) {
 				$errMsg = "Error while saving WMC document '" . $this->wmc_title . "': " . db_error();
@@ -406,6 +411,32 @@
 				$e = new mb_exception("mod_insertWMCIntoDB: " . $errMsg);
 			}
 			else {
+				
+				
+				foreach($this->keyword as $keyword){
+				  // if a keyword does not yet exist, create it
+					$keywordExistsSql = "SELECT keyword FROM keyword WHERE keyword = $1";
+					$keywordCreateSql = "INSERT INTO keyword (keyword) VALUES($1);"; 
+					$v = array($keyword);
+					$t = array("s");
+					$res =  db_prep_query($keywordExistsSql,$v,$t);
+					if(!$row = db_fetch_array($res)){
+						$res = db_prep_query($keywordCreateSql,$v,$t);
+					if($a = db_error()){
+						print "AN ERROR: $a";
+					}
+					}	
+				  
+					$keywordsql = "INSERT into wmc_keyword (fkey_keyword_id,fkey_wmc_id) SELECT keyword_id,$1 FROM keyword WHERE keyword = $2;";
+					$v = array($this->wmc_id, $keyword);
+					$t = array("s","s");
+					$res = db_prep_query($keywordsql, $v, $t);
+					if($a = db_error()){
+						print "AN ERROR INST: $a";
+					}
+				
+				}
+	
 				$result["success"] = true;
 				$msg = "WMC document '" . $this->wmc_title . "' has been saved.";
 				$result["message"] = $msg;

Modified: trunk/mapbender/http/javascripts/mod_savewmc.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_savewmc.php	2009-11-10 17:27:44 UTC (rev 4970)
+++ trunk/mapbender/http/javascripts/mod_savewmc.php	2009-11-11 12:27:51 UTC (rev 4971)
@@ -45,7 +45,7 @@
 		// use $i to count to 10, nd then  start a new colummn,
 		// use ul to mae nice list
 		$i++;
- 		echo '<input id="wmcinspire_'. $row[0] .'" type="checkbox" /><label for="wmcinspire_'. $row[0] .'">'. $row[1] .'</label>';
+ 		echo '<label for="wmcinspire_'. $row[0] .'"><input id="wmcinspire_'. $row[0] .'" type="checkbox" />'. $row[1] .'</label>';
 	}
 
 }
@@ -86,29 +86,50 @@
 
 $('<div id="saveWMCForm">\n\
 <p>Save your WMC</p>\n\
+<style> fieldset label { display: block; }</style>\n\
 <form>\n\
  <fieldset>\n\
  <label for="wmcname">Name</label><input id="wmcname" type="text" class="text ui-widget-content ui-corner-all" />\n\
- <label for="wmcabstract">Abstract</label><textarea id="wmcname" class="text ui-widget-content ui-corner-all"></textarea>\n\
+ <label for="wmcabstract">Abstract</label><textarea id="wmcabstract" class="text ui-widget-content ui-corner-all"></textarea>\n\
  <label for="wmckeywords">Keywords</label><input id="wmckeywords" type="text" class="text ui-widget-content ui-corner-all"  />\n\
- <h2>Inspire Category</h2>\n\
+ </fieldset>\n\
+ <fieldset id="inspire_cat">\n\
+ <legend>Inspire Category</legend>\n\
 <?php InspireCategories();  ?>
  </fieldset>\n\
 </form>\n\
 </div>').dialog({
 		bgiframe: true,
 		autoOpen: false,
-		height: 300,
+		height: 400,
+		width: 500,
 		modal: true,
 		buttons: {
 			"Save": function() {
-				var generalTitle = $(wmcname).val();
-				if (generalTitle != "" && generalTitle != null) {
-					sendMapDataToServer(generalTitle, 0, function(result, status) {alert(status + ": " + result);});
+				var inspire_cat = {};
+				$("#saveWMCForm form #inspire_cat :checkbox").each(function(){
+					if(!!$(this).attr('checked'))
+					{
+						inspire_cat[$(this).id] = true;
+					}
+
+				});
+				var attributes = {};
+				attributes.title 	= $("#wmcname").val();
+				attributes.abstract = $("#wmcabstract").val();
+				attributes.keywords = $("#wmckeywords").val();
+				if (!!attributes.title) {
+					sendMapDataToServer(attributes, 0, (function(result, status) {
+						//alert(status + ": " + result);
+						$('#saveWMCForm form')[0].reset() 
+					}));
+				}else{
+					//perfom validation	
 				}
 				$(this).dialog('close');
 			},
 			"Cancel": function() {
+				$('#saveWMCForm form')[0].reset() 
 				$(this).dialog('close');
 			}
 		}
@@ -123,12 +144,11 @@
 function mod_savewmc(title){
 //	var generalTitle = title ? title : prompt("Save WMC as...");
 
-
 	$('#saveWMCForm').dialog('open');
 
 }
 
-function sendMapDataToServer(generalTitle, storeInSession, callbackFunction) {
+function sendMapDataToServer(attributes, storeInSession, callbackFunction) {
 	var user = "<?php echo Mapbender::session()->get("mb_user_id"); ?>";
 	var ind = getMapObjIndexByName(mod_savewmc_target);
 	
@@ -140,11 +160,28 @@
 	if (storeInSession) {
 		$.ajaxSetup({async:false}); 
 	}
-	$.post("../php/mod_savewmc_server.php", {
-		"saveInSession":storeInSession, 
-		"generalTitle":generalTitle, 
-        "overwrite": overwrite,
-		"extensionData":extensionDataString, 
-		"mapObject":$.toJSON(mb_mapObj)
-	}, callbackFunction);
+    var req = new Mapbender.Ajax.Request({
+        url: "../php/mod_savewmc_server.php",
+        method: "saveWMC",
+		parameters : {
+		  saveInSession:storeInSession, 
+		  attributes:attributes,
+		  overwrite: overwrite,
+		  extensionData:extensionDataString, 
+		  mapObject:$.toJSON(mb_mapObj)
+		},
+        callback: callbackFunction
+    }); 
+    req.send();
+
+
+
+
+
+
+
+
+
+
+
 }

Modified: trunk/mapbender/http/php/mod_savewmc_server.php
===================================================================
--- trunk/mapbender/http/php/mod_savewmc_server.php	2009-11-10 17:27:44 UTC (rev 4970)
+++ trunk/mapbender/http/php/mod_savewmc_server.php	2009-11-11 12:27:51 UTC (rev 4971)
@@ -22,25 +22,31 @@
 require_once(dirname(__FILE__)."/../classes/class_wmc.php");
 require_once(dirname(__FILE__)."/../classes/class_json.php");
 
-$json = new Mapbender_JSON();
+$ajaxResponse = new AjaxResponse($_POST);
+if($ajaxResponse->getMethod() != "saveWMC")
+{
+	$ajaxResponse->setSuccess(false);
+	$ajaxResponse->setMessage("method invalid");
+	$ajaxResponse->send();
+	exit;
+}
 
 // get data from POST and SESSION
-$mapObject = $json->decode($_POST["mapObject"]);
 $userId = Mapbender::session()->get("mb_user_id");
-$saveInSession = intval($_POST["saveInSession"]);
-$generalTitle = $_POST["generalTitle"];
-$extensionData = $json->decode($_POST["extensionData"]);
-
-$overwrite = isset($_POST["overwrite"]) ? $_POST['overwrite'] : "false";
+$mapObject = $ajaxResponse->getParameter('mapObject'); 
+$saveInSession = $ajaxResponse->getParameter('saveInSession'); 
+$extensionData = $ajaxResponse->getParameter('extensionData');
+$attributes =  $ajaxResponse->getParameter('attributes');
+$overwrite = $ajaxResponse->getParameter('overwrite');
 $overwrite = $overwrite == "1" ? True : False;
 
 
+
+
 // create WMC object
 $wmc = new wmc();
-$wmc->createFromJs($mapObject, $generalTitle, $extensionData);
+$wmc->createFromJs($mapObject, $attributes->title, $extensionData);
 
-header("Content-Type: text/x-json");
-
 if ($saveInSession === 1) {
 	// store XML in session
 	Mapbender::session()->set("mb_wmc",$wmc->xml);
@@ -48,11 +54,34 @@
 	Mapbender::session()->set("previous_gui", Mapbender::session()->get("mb_user_gui"));
 	
 	$e = new mb_notice("mod_insertWMCIntoDB: save WMC in session succeeded.");
+	$ajaxResponse->setSuccess(true);
+	$ajaxResponse->setResult(_mb("saved wmc document to session"));
 }
 else {
 	// insert WMC into database
+	if(isset($attributes->title)) {
+		$attributes->title = trim($attributes->title);
+		if($attributes->title == "") {
+		  $ajaxResponse->setSuccess(false);
+		  $ajaxResponse->setMessage(_mb("WMC document must have a title."));
+		  $ajaxResponse->send();
+		  exit;
+		}
+	}else{
+
+		$ajaxResponse->setSuccess(false);
+		$ajaxResponse->setMessage(_mb("WMC document must have a title."));
+		$ajaxResponse->send();
+		exit;
+	}
+
+	// make a keyword array here
+	
+	$wmc->keyword = explode(" ",$attributes->keywords);
 	$result = $wmc->insert($overwrite);
-	header("Content-Type: text/x-json");
-	echo $result["message"];
+	$ajaxResponse->setSuccess(true);
+	$ajaxResponse->setResult($result);
 }
+
+$ajaxResponse->send();
 ?>

Modified: trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql
===================================================================
--- trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql	2009-11-10 17:27:44 UTC (rev 4970)
+++ trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql	2009-11-11 12:27:51 UTC (rev 4971)
@@ -529,4 +529,19 @@
 
 
 -- add history to map object
-UPDATE gui_element SET e_mb_mod = '../../lib/history.js,map_obj.js,map.js,wms.js,wfs_obj.js,initWms.php' WHERE e_id = 'mapframe1' OR e_id = 'overview';
\ No newline at end of file
+UPDATE gui_element SET e_mb_mod = '../../lib/history.js,map_obj.js,map.js,wms.js,wfs_obj.js,initWms.php' WHERE e_id = 'mapframe1' OR e_id = 'overview';
+
+ALTER TABLE mb_user_wmc 
+		ADD COLUMN abstract TEXT,
+		ADD COLUMN srs CHARACTER VARYING,
+		ADD COLUMN minx DOUBLE PRECISION DEFAULT 0,
+		ADD COLUMN miny DOUBLE PRECISION DEFAULT 0,
+		ADD COLUMN maxx DOUBLE PRECISION DEFAULT 0,
+		ADD COLUMN maxy DOUBLE PRECISION DEFAULT 0;
+
+CREATE TABLE wmc_keyword (
+	fkey_keyword_id	INTEGER REFERENCES keyword(keyword_id) ON DELETE CASCADE ON UPDATE CASCADE,
+	fkey_wmc_id CHARACTER VARYING(20) REFERENCES mb_user_wmc(wmc_id) ON DELETE CASCADE ON UPDATE CASCADE
+);
+ALTER TABLE ONLY wmc_keyword
+     ADD CONSTRAINT pk_cat_keyword PRIMARY KEY (fkey_wmc_id, fkey_keyword_id);



More information about the Mapbender_commits mailing list