[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