[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