[Mapbender-commits] r8326 - trunk/mapbender/http/plugins

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Apr 26 09:54:55 EDT 2012


Author: verenadiewald
Date: 2012-04-26 06:54:55 -0700 (Thu, 26 Apr 2012)
New Revision: 8326

Modified:
   trunk/mapbender/http/plugins/mb_wms_scheduler_select.js
   trunk/mapbender/http/plugins/mb_wms_scheduler_server.php
Log:
client and server side scripts for update scheduling

Modified: trunk/mapbender/http/plugins/mb_wms_scheduler_select.js
===================================================================
--- trunk/mapbender/http/plugins/mb_wms_scheduler_select.js	2012-04-26 13:54:06 UTC (rev 8325)
+++ trunk/mapbender/http/plugins/mb_wms_scheduler_select.js	2012-04-26 13:54:55 UTC (rev 8326)
@@ -52,91 +52,36 @@
 					if (!result) {
 						return;
 					}
-					//$("<div></div>").text(result).dialog({
-					//	modal: true
-					//});
+					
 					//build editor
-					editDiv = $(document.createElement('div')).appendTo($('#' + options.id));
-					editDiv.attr({'id':'scheduleEditor'});
-					editDivForm = $(document.createElement('form')).appendTo(editDiv);
-					editDivForm.attr({'id':'edit_scheduler_form'});
+					var editFormHtml = "<div id='scheduleEditor'>";
+					editFormHtml += "<form id='edit_scheduler_form'>";
 					//wms information
-					editDivFormWms = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormWmsLegend = $(document.createElement('legend')).appendTo(editDivFormWms);
-					editDivFormWmsLegend.append('WMS Title:');
-					editDivFormWms.append(obj.wms_id+' : '+obj.wms_title);
-					//update interval
-					editDivFormInterval = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormIntervalLegend = $(document.createElement('legend')).appendTo(editDivFormInterval);
-					editDivFormIntervalLegend.append('Update interval:');
-					editDivFormIntervalSelect = $(document.createElement('select')).appendTo(editDivFormInterval);
+					editFormHtml += "<fieldset><legend>WMS Title:</legend>" + obj.wms_id+" : "+obj.wms_title + "</fieldset>";
+					editFormHtml += "<fieldset><legend>Update interval:</legend>";
+					editFormHtml += "<select id='scheduler_interval'>";
+					editFormHtml += "<option value='1 day'>1 day</option>";
+					editFormHtml += "<option value='7 days'>1 week</option>";
+					editFormHtml += "<option value='1 mon'>1 month</option>";
+					editFormHtml += "<option value='1 year'>1 year</option>";
+					editFormHtml += "</select>";
+					editFormHtml += "</fieldset>";
+					editFormHtml += "<fieldset><legend>Notify per Mail:</legend>";
+					editFormHtml += "<input type='checkbox' id='scheduler_mail'/>";
+					editFormHtml += "</fieldset>";
+					editFormHtml += "<fieldset><legend>Publish via RSS/Twitter:</legend>";
+					editFormHtml += "<input type='checkbox' id='scheduler_publish'/>";
+					editFormHtml += "</fieldset>";
+					editFormHtml += "<fieldset><legend>Make new layer searchable:</legend>";
+					editFormHtml += "<input type='checkbox' id='scheduler_searchable'/>";
+					editFormHtml += "</fieldset>";
+					editFormHtml += "<fieldset><legend>Overwrite edited metadata:</legend>";
+					editFormHtml += "<input type='checkbox' id='scheduler_overwrite'/>";
+					editFormHtml += "</fieldset>";
+					editFormHtml += "</form>";
+					editFormHtml += "</div>";
 
-					editDivFormIntervalSelect.attr({'id':'scheduler_interval'});
-
-					editDivFormIntervalOption1 = $(document.createElement('option')).appendTo(editDivFormIntervalSelect);
-					editDivFormIntervalOption1.attr({'value':'1 day'});
-					editDivFormIntervalOption1.append('1 day');
-					editDivFormIntervalOption2 = $(document.createElement('option')).appendTo(editDivFormIntervalSelect);
-					editDivFormIntervalOption2.attr({'value':'1 week'});
-					editDivFormIntervalOption2.append('1 week');
-					editDivFormIntervalOption3 = $(document.createElement('option')).appendTo(editDivFormIntervalSelect);
-					editDivFormIntervalOption3.attr({'value':'1 mon'});
-					editDivFormIntervalOption3.append('1 month');
-					editDivFormIntervalOption4 = $(document.createElement('option')).appendTo(editDivFormIntervalSelect);
-					editDivFormIntervalOption4.attr({'value':'1 year'});
-					editDivFormIntervalOption4.append('1 year');
-					$('option[value="'+obj.scheduler_interval+'"]').attr({'selected':'selected'});
-
-					//mail notification
-					editDivFormMail = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormMailLegend = $(document.createElement('legend')).appendTo(editDivFormMail);
-					editDivFormMailLegend.append('Notify per Mail:');
-					editDivFormMailCheckbox = $(document.createElement('input')).appendTo(editDivFormMail);
-					editDivFormMailCheckbox.attr({'type':'checkbox'});
-
-					editDivFormMailCheckbox.attr({'id':'scheduler_mail'});
-
-					if (obj.scheduler_mail == 1) {
-						editDivFormMailCheckbox.attr({'checked':'checked'});
-					}
-					//publish
-					editDivFormPublish = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormPublishLegend = $(document.createElement('legend')).appendTo(editDivFormPublish);
-					editDivFormPublishLegend.append('Publish via RSS/Twitter:');
-					editDivFormPublishCheckbox = $(document.createElement('input')).appendTo(editDivFormPublish);
-					editDivFormPublishCheckbox.attr({'type':'checkbox'});
-
-					editDivFormPublishCheckbox.attr({'id':'scheduler_publish'});
-
-					if (obj.scheduler_publish == 1) {
-						editDivFormPublishCheckbox.attr({'checked':'checked'});
-					}
-					//searchable
-					editDivFormSearchable = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormSearchableLegend = $(document.createElement('legend')).appendTo(editDivFormSearchable);
-					editDivFormSearchableLegend.append('Make new layer searchable:');
-					editDivFormSearchableCheckbox = $(document.createElement('input')).appendTo(editDivFormSearchable);
-					editDivFormSearchableCheckbox.attr({'type':'checkbox'});
-
-					editDivFormSearchableCheckbox.attr({'id':'scheduler_searchable'});
-
-
-					if (obj.scheduler_searchable == 1) {
-						editDivFormSearchableCheckbox.attr({'checked':'checked'});
-					}
-					//overwrite metadata
-					editDivFormOverwrite = $(document.createElement('fieldset')).appendTo(editDivForm);
-					editDivFormOverwriteLegend = $(document.createElement('legend')).appendTo(editDivFormOverwrite);
-					editDivFormOverwriteLegend.append('Overwrite edited metadata:');
-					editDivFormOverwriteCheckbox = $(document.createElement('input')).appendTo(editDivFormOverwrite);
-					editDivFormOverwriteCheckbox.attr({'type':'checkbox'});
-
-					editDivFormOverwriteCheckbox.attr({'id':'scheduler_overwrite'});
-
-					if (obj.scheduler_overwrite == 1) {
-						editDivFormOverwriteCheckbox.attr({'checked':'checked'});
-					}
-					editDiv.dialog({
+					$editEntryDialog = $(editFormHtml).dialog({
 						title : "Scheduler editor", 
 						autoOpen : false,  
 						draggable : false,
@@ -181,7 +126,7 @@
 								//push infos to server
 								that.updateWmsSchedule(schedulerId, data);
 								//kill form
-								editDiv.dialog("close");
+								$editEntryDialog.dialog("close");
 								$('#scheduleEditor').remove();
 								
 							}
@@ -190,7 +135,24 @@
 							$('#scheduleEditor').remove();
 						}
 					});
-					editDiv.dialog("open");
+					$editEntryDialog.dialog("open");
+					
+					$('#scheduler_interval option[value="'+obj.scheduler_interval+'"]').attr({'selected':'selected'});
+					if (obj.scheduler_mail == 1) {
+						$("#scheduler_mail").attr({'checked':'checked'});
+					}
+					
+					if (obj.scheduler_publish == 1) {
+						$("#scheduler_publish").attr({'checked':'checked'});
+					}
+	
+					if (obj.scheduler_searchable == 1) {
+						$("#scheduler_searchable").attr({'checked':'checked'});
+					}
+
+					if (obj.scheduler_overwrite == 1) {
+						$("#scheduler_overwrite").attr({'checked':'checked'});
+					}
 				}
 			});
 			req.send();			
@@ -198,17 +160,144 @@
 
 	//function init form to add new scheduling for update own wms
 	this.initAddForm = function() {
+		var addFormHtml = "<div id='scheduleEditor'>";
+		addFormHtml += "<form id='edit_scheduler_form'>";
+		addFormHtml += "<fieldset><legend>WMS</legend><select id='scheduler_wms'></select></fieldset>";
+		addFormHtml += "<fieldset><legend>Update interval:</legend>";
+		addFormHtml += "<select id='scheduler_interval'>";
+		addFormHtml += "<option value='1 day'>1 day</option>";
+		addFormHtml += "<option value='7 days'>1 week</option>";
+		addFormHtml += "<option value='1 mon'>1 month</option>";
+		addFormHtml += "<option value='1 year'>1 year</option>";
+		addFormHtml += "</select>";
+		addFormHtml += "</fieldset>";
+		addFormHtml += "<fieldset><legend>Notify per Mail:</legend>";
+		addFormHtml += "<input type='checkbox' id='scheduler_mail'/>";
+		addFormHtml += "</fieldset>";
+		addFormHtml += "<fieldset><legend>Publish via RSS/Twitter:</legend>";
+		addFormHtml += "<input type='checkbox' id='scheduler_publish'/>";
+		addFormHtml += "</fieldset>";
+		addFormHtml += "<fieldset><legend>Make new layer searchable:</legend>";
+		addFormHtml += "<input type='checkbox' id='scheduler_searchable'/>";
+		addFormHtml += "</fieldset>";
+		addFormHtml += "<fieldset><legend>Overwrite edited metadata:</legend>";
+		addFormHtml += "<input type='checkbox' id='scheduler_overwrite'/>";
+		addFormHtml += "</fieldset>";
+		addFormHtml += "</form>";
+		addFormHtml += "</div>";
+
+		$addNewEntryDialog = $(addFormHtml).dialog({
+			title : "Scheduler editor", 
+			autoOpen : false,  
+			draggable : false,
+			modal : true,
+			width : 600,
+			//position : [600, 75],
+			buttons: {
+				"close": function() {
+					$('#scheduleEditor').remove();
+				},
+				"save": function() {
+					//read infos from form
+					//var editFormData = $('#edit_scheduler_form').serialize();
+					if ($('#scheduler_publish').attr("checked") == true) {
+						scheduler_publish = 1;
+					} else {
+						scheduler_publish = 0;
+					}
+					if ($('#scheduler_searchable').attr("checked") == true) {
+						scheduler_searchable = 1;
+					} else {
+						scheduler_searchable = 0;
+					}
+					if ($('#scheduler_mail').attr("checked") == true) {
+						scheduler_mail = 1;
+					} else {
+						scheduler_mail = 0;
+					}
+					if ($('#scheduler_overwrite').attr("checked") == true) {
+						scheduler_overwrite = 1;
+					} else {
+						scheduler_overwrite = 0;
+					}
+					data = {
+						scheduler_interval: $('#scheduler_interval').val(),
+						scheduler_publish: scheduler_publish,
+						wms_id: $("#scheduler_wms").val(),
+						scheduler_searchable: scheduler_searchable,
+						scheduler_mail:  scheduler_mail,
+						scheduler_overwrite: scheduler_overwrite
+					};
+					//push infos to server
+					that.insertWmsSchedule(data);
+					//kill form
+					$addNewEntryDialog.dialog("close");
+					$('#scheduleEditor').remove();
+					
+				}
+			},
+			close: function() {
+				$('#scheduleEditor').remove();
+			},
+			open: function() {
+				var userWms = that.getUserWms();
+			}
+		});
+		$addNewEntryDialog.dialog("open");
+	};
 	
-	}
+	this.getUserWms = function () {
+		var req = new Mapbender.Ajax.Request({
+			url: "../plugins/mb_wms_scheduler_server.php",
+			method: "getUserWms",
+			parameters: {},
+			callback: function (obj, result, message) {
+				if (!result) {
+					return;
+				}
+				$("#scheduler_wms").empty();
+				var emptyOption = '<option value="">---</option>';
+				$("#scheduler_wms").append(emptyOption);
+				for ( var i=0 ; i<obj.length ; i++ ) {
+					var optionVal = obj[i].wmsId;
+	                var optionName = obj[i].wmsId + " : " + obj[i].wmsTitle;
+	                var optionHtml = "<option value='" + optionVal + "'>" + optionName + "</option>";
+	                $("#scheduler_wms").append(optionHtml);
+				}
+			}
+		});
+		req.send();
+	};
 
 	//function to delete scheduling of wms update
-	this.deleteWmsSchedule = function() {
-	
-	}
+	this.deleteWmsSchedule = function(id) {
+		var checkDelete = confirm("Do you really want to delete this entry?");
+		if(checkDelete) {
+			var req = new Mapbender.Ajax.Request({
+				url: "../plugins/mb_wms_scheduler_server.php",
+				method: "deleteWmsSchedule",
+				parameters: {
+					"id": id
+				},
+				callback: function (obj, result, message) {
+					/*if (!result) {
+						return;
+					}*/
+					
+					$("<div></div>").text(message).dialog({
+						modal: true
+					});
+					
+					that.reloadTable();
+				}
+			});
+			req.send();
+		}
+	};
 	//function to add scheduling of wms update
 	this.addWmsSchedule = function() {
-	
-	}
+		that.initAddForm();
+	};
 
 	//function to update scheduling parameters of wms update
 	this.updateWmsSchedule = function(schedulerId, data) {
@@ -232,9 +321,31 @@
 				}
 		});
 		req.send();
-	}
-
+	};
 	
+	//function to insert scheduling parameters of wms update
+	this.insertWmsSchedule = function(data) {
+		var req = new Mapbender.Ajax.Request({
+				url: "../plugins/mb_wms_scheduler_server.php",
+				method: "insertWmsSchedule",
+				parameters: {
+					"data": data
+				},
+				callback: function (obj, result, message) {
+					/*if (!result) {
+						return;
+					}*/
+					
+					$("<div></div>").text(message).dialog({
+						modal: true
+					});
+					
+					that.reloadTable();
+				}
+		});
+		req.send();
+	};
+	
 	this.reloadTable = function () {
 		var req = new Mapbender.Ajax.Request({
 			url: "../plugins/mb_wms_scheduler_server.php",
@@ -265,10 +376,19 @@
 					var rowNode = table.fnGetNodes(index[0]);
 					$(rowNode).data("schedulerId", schedulerId);
 				}
+				
+				
+				
+				// add functionality to delete button
+				$(".deleteImg").click(function (e) {
+					var id = $(this).parents("tr").data("schedulerId");
+					that.deleteWmsSchedule(id);
+					return false;
+				});
 			}
 		});
 		req.send();
-	}
+	};
 
 
 	this.getData = function () {
@@ -297,6 +417,10 @@
 					"bJQueryUI": true
 				});
 				
+				//add button to add new entries to dataTables
+				$("#mb_wms_scheduler_select").append("<input type='button' id='newScheduleEntry' value='New entry'>");
+				$("#newScheduleEntry").click(that.addWmsSchedule);
+				
 				// add rows
 				for (var j in obj.data) {
 					var data = obj.data[j];
@@ -321,6 +445,13 @@
 					//start editor
 					that.initEditForm(id);	
 				});
+				
+				// add functionality to delete button
+				$(".deleteImg").click(function (e) {
+					var id = $(this).parents("tr").data("schedulerId");
+					that.deleteWmsSchedule(id);
+					return false;
+				});
 			}
 		});
 		req.send();

Modified: trunk/mapbender/http/plugins/mb_wms_scheduler_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_wms_scheduler_server.php	2012-04-26 13:54:06 UTC (rev 8325)
+++ trunk/mapbender/http/plugins/mb_wms_scheduler_server.php	2012-04-26 13:54:55 UTC (rev 8326)
@@ -53,16 +53,21 @@
 				_mb("publish"),
 				_mb("searchable"),
 				_mb("overwrite"),
-				_mb("update status")
+				_mb("update status"),
+				_mb("action")
 			), 
 			"data" => array()
 		);
 
 		while ($row = db_fetch_row($res)) {
-			// convert NULL to '', NULL values cause datatables to crash
+		    // convert NULL to '', NULL values cause datatables to crash
 			$walk = array_walk($row, create_function('&$s', '$s=strval($s);'));
+			$row[] = "<img style='cursor:pointer;' class='deleteImg' title='löschen' src='../img/cross.png' />";
+			//if fkey_upload_id is set, format it to date for dataTables
+			$row[5] = $row[5]?date("Y-m-d",$row[5]) : $row[5];
 			$resultObj["data"][]= $row;
 		}
+		
 		$ajaxResponse->setResult($resultObj);
 		$ajaxResponse->setSuccess(true);
 		break;
@@ -97,7 +102,32 @@
 		$ajaxResponse->setResult($resultObj);
 		$ajaxResponse->setSuccess(true);
 		break;
+		
+	case "insertWmsSchedule" :
+		$data = $ajaxResponse->getParameter("data");
+		
+		$sql = <<<SQL
 
+INSERT INTO scheduler (scheduler_type,fkey_wms_id,scheduler_interval,scheduler_publish,
+scheduler_searchable,scheduler_overwrite,scheduler_mail,scheduler_change) VALUES 
+('wms', $1, $2, $3, $4, $5, $6, now());
+
+SQL;
+		$v = array($data->wms_id, $data->scheduler_interval, $data->scheduler_publish, $data->scheduler_searchable, $data->scheduler_overwrite, $data->scheduler_mail);
+		$t = array('i','s','i','i','i','i');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Could not insert wms scheduling in database!"));
+			$ajaxResponse->send();
+			die;	
+		}
+		$ajaxResponse->setMessage("Scheduling inserted!");
+		$ajaxResponse->setSuccess(true);
+		break;
+
 	case "updateWmsSchedule" :
 		$schedulerId =  $ajaxResponse->getParameter("schedulerId");
 		$wmsSchedulerIdArray = $user->getOwnedWmsScheduler();	
@@ -156,7 +186,54 @@
 		$ajaxResponse->setResult($resultObj);
 		$ajaxResponse->setSuccess(true);
 		break;
+		
+	case "deleteWmsSchedule" :
+		$id = $ajaxResponse->getParameter("id");
+		
+		$sql = <<<SQL
 
+DELETE FROM scheduler WHERE scheduler_id = $1;
+
+SQL;
+		$v = array($id);
+		$t = array('i');
+		try {
+			$res = db_prep_query($sql,$v,$t);
+		}
+		catch (Exception $e){
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Could not delete wms scheduling in database!"));
+			$ajaxResponse->send();
+			die;	
+		}
+		$ajaxResponse->setMessage("Scheduling deleted!");
+		$ajaxResponse->setSuccess(true);
+		break;
+			
+	case "getUserWms" :
+		$user = new User(Mapbender::session()->get("mb_user_id"));
+	    $wmsIdArray = $user->getOwnedWms();
+	    $wmsList = implode(",", $wmsIdArray);
+		
+$sql = <<<SQL
+	
+SELECT wms.wms_id, wms.wms_title FROM wms LEFT JOIN mb_wms_availability AS m
+ON wms.wms_id = m.fkey_wms_id 
+WHERE wms_id IN ($wmsList) ORDER BY wms.wms_id;
+
+SQL;
+		$res = db_query($sql);
+		$resultObj = array();
+		while ($row = db_fetch_array($res)) {
+			$resultObj[] = array(
+    			"wmsId" 	=> $row['wms_id'],
+    			"wmsTitle"  =>  $row['wms_title']
+    	    );
+		}
+        $ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+		break;
+
 	default: 
 		$ajaxResponse->setSuccess(false);
 		$ajaxResponse->setMessage(_mb("An unknown error occured."));



More information about the Mapbender_commits mailing list