[Mapbender-commits] r6238 - trunk/mapbender/http/plugins
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Wed Jun 2 05:50:05 EDT 2010
Author: verenadiewald
Date: 2010-06-02 05:50:04 -0400 (Wed, 02 Jun 2010)
New Revision: 6238
Added:
trunk/mapbender/http/plugins/mb_metadata_featuretype.js
trunk/mapbender/http/plugins/mb_metadata_featuretype.php
trunk/mapbender/http/plugins/mb_metadata_featuretypeTree.js
trunk/mapbender/http/plugins/mb_metadata_wfs_edit.js
trunk/mapbender/http/plugins/mb_metadata_wfs_edit.php
trunk/mapbender/http/plugins/mb_metadata_wfs_select.js
trunk/mapbender/http/plugins/mb_metadata_wfs_server.php
trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.html
trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.js
trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginalLayer.html
trunk/mapbender/http/plugins/mb_metadata_wfs_submit.js
trunk/mapbender/http/plugins/mb_original_metadata_wfs_server.php
Log:
added wfs metadata editor scripts
Added: trunk/mapbender/http/plugins/mb_metadata_featuretype.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_featuretype.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_featuretype.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,164 @@
+/**
+ * Package: mb_metadata_featuretype
+ *
+ * Description:
+ *
+ * Files:
+ *
+ * SQL:
+ *
+ * Help:
+ *
+ * Maintainer:
+ * http://www.mapbender.org/User:Christoph_Baudson
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+var $metadataFeaturetype = $(this);
+var $metadataForm = $("<form>No featuretype selected.</form>").appendTo($metadataFeaturetype);
+
+var MetadataLayerApi = function (o) {
+ var that = this;
+ var validator;
+ var formReady = false;
+ var wfsId;
+ var featuretypeId;
+
+ var disabledFields = [
+ "featuretype_custom_category_id",
+ "featuretype_inspire_category_id",
+ "featuretype_md_topic_category_id",
+ "featuretype_keyword",
+ "featuretype_abstract",
+ "featuretype_title"
+ ];
+
+ this.events = {
+ initialized: new Mapbender.Event(),
+ submit: new Mapbender.Event(),
+ showOriginalFeaturetypeMetadata : new Mapbender.Event()
+ };
+
+ this.valid = function () {
+ if (validator && validator.numberOfInvalids() > 0) {
+ $metadataForm.valid();
+ return false;
+ }
+ return true;
+ };
+
+ this.serialize = function (callback) {
+ $metadataForm.submit();
+ var data = null;
+ if (this.valid()) {
+ data = {
+ featuretype: $metadataForm.easyform("serialize")
+ };
+ }
+ if ($.isFunction(callback)) {
+ callback(data);
+ }
+ return data !== null ? data.featuretype : data;
+ };
+
+ this.fillForm = function (obj) {
+ $(disabledFields).each(function () {
+ $("#" + this).removeAttr("disabled");
+ });
+
+ featuretypeId = obj.featuretype_id;
+
+ $metadataForm.easyform("reset");
+
+ // get metadata from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_metadata_wfs_server.php",
+ method: "getFeaturetypeMetadata",
+ parameters: {
+ "id": featuretypeId
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ return;
+ }
+ $metadataForm.easyform("fill", obj);
+ that.valid();
+ }
+ });
+ req.send();
+ };
+
+ this.fill = function (obj) {
+ $metadataForm.easyform("fill", obj);
+ };
+
+ var showOriginalFeaturetypeMetadata = function () {
+ that.events.showOriginalFeaturetypeMetadata.trigger({
+ data : {
+ wfsId : wfsId,
+ featuretypeData : $metadataForm.easyform("serialize")
+ }
+ });
+ };
+
+
+ this.init = function (obj) {
+ delete featuretypeId;
+ $metadataForm.easyform("reset");
+
+ wfsId = obj;
+
+ var formData = arguments.length >= 2 ? arguments[1] : undefined;
+
+ if (!formReady) {
+ $metadataForm.load("../plugins/mb_metadata_featuretype.php", function () {
+ $metadataForm.find(".help-dialog").helpDialog();
+
+ $metadataForm.find(".original-metadata-featuretype").bind("click", function() {
+ showOriginalFeaturetypeMetadata();
+ });
+
+ validator = $metadataForm.validate({
+ submitHandler: function () {
+ return false;
+ }
+ });
+
+ that.events.initialized.trigger({
+ wfsId: wfsId
+ });
+ formReady = true;
+
+ // select layer in tree if set
+
+ // init map
+
+ // fill layer form if set
+ });
+ return;
+ }
+ $(disabledFields).each(function () {
+ $("#" + this).attr("disabled", "disabled");
+ });
+ that.events.initialized.trigger({
+ wfsId: wfsId
+ });
+ };
+
+ Mapbender.events.localize.register(function () {
+ that.valid();
+ var formData = $metadataForm.easyform("serialize");
+ formReady = false;
+ that.init(wfsId, formData);
+ });
+ Mapbender.events.init.register(function () {
+ that.valid();
+ });
+};
+
+$metadataFeaturetype.mapbender(new MetadataLayerApi(options));
Added: trunk/mapbender/http/plugins/mb_metadata_featuretype.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_featuretype.php (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_featuretype.php 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,119 @@
+<?php
+ require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+
+ function displayCategories ($sql) {
+ if (Mapbender::session()->get("mb_lang") === "de") {
+ $sql = str_replace("category_code_en", "category_code_de", $sql);
+ }
+
+ $str = "";
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $str .= "<option value='" . $row["id"] . "'>" .
+ htmlentities($row["name"], ENT_QUOTES, CHARSET) .
+ "</option>";
+ }
+ return $str;
+ }
+?>
+
+<div id="choose">
+ <fieldset class="">
+ <p>
+ choose featuretype
+ </p>
+ </fieldset>
+</div>
+
+<div id="featuretype">
+ <fieldset class="">
+ <input name="featuretype_name" id="featuretype_name" type="hidden"/>
+
+ <legend>Featuretype Level Metadata: <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("Possibility to adapt and add informations in the separate WFS-Featuretype Metadata. The modified Metadata will be stored in the database of the GeoPortal.rlp, outwardly these metadata overwrite the original Service-Metadata.");?>'}" src="../img/questionmark.png"></img></legend>
+ <p>
+ <label for="wfs_title"><?php echo _mb("Show original Service Metadata from last update");?></label>
+ <img class="original-metadata-featuretype" src="../img/book.png"></img>
+ <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("The original WFS-Metadata from the last update could be recovered or updated, so that the original Service-Metadata will be shown outward again.");?>'}" src="../img/questionmark.png"></img>
+ </p>
+ <p>
+ <label for="featuretype_id"><?php echo _mb("Number of Featuretype (Registry)");?>:</label>
+ <span class="metadata_span"></span>
+ <input readonly="readonly" name="featuretype_id" id="featuretype_id"/>
+ </p>
+ <p>
+ <label for="featuretype_title"><?php echo _mb("Featuretype Title (WFS)");?>:</label>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ <input disabled="disabled" name="featuretype_title" id="featuretype_title" class="required" />
+ </p>
+ <p>
+ <label for="featuretype_abstract"><?php echo _mb("Featuretype Abstract (WFS)");?>:</label>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ <input disabled="disabled" name="featuretype_abstract" id="featuretype_abstract"/>
+ </p>
+ <p>
+ <label for="featuretype_keyword"><?php echo _mb("Featuretype Keywords (WFS)");?>:</label>
+ <span class="metadata_span"></span>
+ <input disabled="disabled" name="featuretype_keyword" id="featuretype_keyword"/>
+ </p>
+ <p>
+ <div id="buttons">
+ <p>
+ <label><?php echo _mb("Add Information about the underlying data");?>:</label>
+ <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("Linking the WFS layer with metadata set (coupled resource), which describes the underlying informations of the representation in more detail (eg Actuality / quality). It occurs via a link to an already existing metadta set in a catalog or a simple metadata set will be generated using a Mapbender Layer Addon-Editor.");?>'}" src="../img/questionmark.png"></img>
+ </p>
+ <p>
+ <input disabled="disabled" class="" type="submit" value="<?php echo _mb("Add new Metadata Record");?>"/>
+ </p>
+ <p>
+ <input disabled="disabled" class="" type="submit" value="<?php echo _mb("Edit Metadata Linkage");?>"/>
+ </p>
+ <p>
+ <input disabled="disabled" class="" type="submit" value="<?php echo _mb("Delete Metadata Linkage");?>"/>
+ </p>
+ </div>
+ <div id="selectbox">
+ <select disabled="disabled" class="metadata_selectbox" size="2" multiple>
+ <option>not</option>
+ <option>yet</option>
+ <option>implemented</option>
+ </select>
+ </div>
+ </p>
+ </fieldset>
+</div>
+
+<div id="classification">
+ <fieldset class="">
+ <legend><?php echo _mb("Classification");?></legend>
+ <p>
+ <label for="featuretype_md_topic_category_id" class="label_classification"><?php echo _mb("ISO Topic Category");?>:</label>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ <select disabled="disabled" class="metadata_selectbox" id="featuretype_md_topic_category_id" name="featuretype_md_topic_category_id" size="2" multiple="multiple">
+<?php
+ $sql = "SELECT md_topic_category_id AS id, md_topic_category_code_en AS name FROM md_topic_category";
+ echo displayCategories($sql);
+?>
+ </select>
+ </p>
+ <p>
+ <label for="featuretype_inspire_category_id" class="label_classification"><?php echo _mb("INSPIRE Category");?>:</label>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ <select disabled="disabled" class="metadata_selectbox" id="featuretype_inspire_category_id" name="featuretype_inspire_category_id" size="2" multiple="multiple">
+<?php
+ $sql = "SELECT inspire_category_id AS id, inspire_category_code_en AS name FROM inspire_category";
+ echo displayCategories($sql);
+?>
+ </select>
+ </p>
+ <p>
+ <label for="featuretype_custom_category_id" class="label_classification"><?php echo _mb("Custom Category");?>:</label>
+ <span class="metadata_span"></span>
+ <select disabled="disabled" class="metadata_selectbox" id="featuretype_custom_category_id" name="featuretype_custom_category_id" size="2" multiple="multiple">
+<?php
+ $sql = "SELECT custom_category_id AS id, custom_category_code_en AS name FROM custom_category";
+ echo displayCategories($sql);
+?>
+ </select>
+ </p>
+ </fieldset>
+</div>
Added: trunk/mapbender/http/plugins/mb_metadata_featuretypeTree.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_featuretypeTree.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_featuretypeTree.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,153 @@
+/**
+ * Package: mb_metadata_featuretypeTree
+ *
+ * Description:
+ *
+ * Files:
+ *
+ * SQL:
+ *
+ * Help:
+ *
+ * Maintainer:
+ * http://www.mapbender.org/User:Christoph_Baudson
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+var $metadataFeaturetypeTree = $(this);
+
+var MetadataFeaturetypeTreeApi = function (o) {
+ var that = this;
+
+ var instanceId = "choose";
+
+ var createFolder = function (set) {
+ return {
+ attributes: {
+ data: $.toJSON(set.attr)
+ },
+ data: set.attr.featuretype_name,
+ state: "closed",
+ children: []
+ };
+ };
+
+ var createLeaf = function (set) {
+ return {
+ attributes: {
+ data: $.toJSON(set.attr)
+ },
+ data: {
+ title: set.attr.featuretype_name
+ }
+ };
+ };
+
+ var toJsTreeJson = function (nestedSets) {
+ if (!nestedSets.length && nestedSets.length !== 0) {
+ new Mapbender.Exception("Nested sets not an array.");
+ return [];
+ }
+ var right = null;
+ if (arguments.length === 2) {
+ right = arguments[1];
+ }
+ var children = [];
+ while (nestedSets.length > 0) {
+ set = nestedSets.shift();
+ if (typeof set.left != "number" || typeof set.right != "number") {
+ new Mapbender.Exception("Left or right not set.");
+ return [];
+ }
+
+ // is a different subtree, go back
+ if (right !== null && right < set.right) {
+ nestedSets.unshift(set);
+ return children;
+ }
+ // is a leaf
+ else if (set.right - set.left === 1) {
+ children.push(createLeaf(set));
+ }
+ // is a folder
+ else {
+ var node = createFolder(set);
+ var nodeChildren = toJsTreeJson(nestedSets, set.right);
+ children.push($.extend(node, {
+ children: nodeChildren
+ }));
+ }
+ }
+ return children;
+ };
+
+ var initTree = function (nestedSets) {
+ var jsTreeData = toJsTreeJson(nestedSets);
+ jsTreeData[0].state = "open";
+
+ var jsTree = $.tree.reference(instanceId);
+ if (jsTree !== null) {
+ jsTree.destroy();
+ }
+
+ $("#" + instanceId).tree({
+ ui: {
+// theme_path: "../extensions/jsTree.v.0.9.9a2/themes/checkbox/style.css",
+// theme_name: "checkbox"
+ theme_path: "../extensions/jsTree.v.0.9.9a2/themes/default/style.css",
+ theme_name: "default"
+ },
+ plugins: {
+// checkbox: {
+// }
+ },
+ data : {
+ type : "json",
+ opts : {
+ static : jsTreeData
+ }
+ },
+ callback: {
+ onselect: function (node, treeObj) {
+ var data = $(node).metadata({
+ type: "attr",
+ name: "data"
+ });
+ that.events.selected.trigger({
+ "featuretype": data
+ });
+ }
+ }
+ });
+ };
+
+
+ this.events = {
+ selected: new Mapbender.Event()
+ };
+
+ this.init = function (obj) {
+ // get featuretypes from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_metadata_wfs_server.php",
+ method: "getFeaturetypeByWfs",
+ parameters: {
+ "id": obj
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ return;
+ }
+ initTree(obj.nestedSets);
+ }
+ });
+ req.send();
+ };
+};
+
+$metadataFeaturetypeTree.mapbender(new MetadataFeaturetypeTreeApi(options));
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_edit.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_edit.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_edit.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,140 @@
+/**
+ * Package: mb_metadata_wfs_edit
+ *
+ * Description:
+ *
+ * Files:
+ *
+ * SQL:
+ *
+ * Help:
+ *
+ * Maintainer:
+ * http://www.mapbender.org/User:Christoph_Baudson
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+var $metadataEdit = $(this);
+var $metadataForm = $("<form>No WFS selected.</form>").appendTo($metadataEdit);
+
+var MetadataEditApi = function (o) {
+ var that = this;
+ var validator;
+ var formReady = false;
+ var wfsId;
+
+ this.events = {
+ showOriginalMetadata : new Mapbender.Event(),
+ submit: new Mapbender.Event()
+ };
+
+ this.valid = function () {
+ if (validator && validator.numberOfInvalids() > 0) {
+ $metadataForm.valid();
+ return false;
+ }
+ return true;
+ };
+
+ this.serialize = function (callback) {
+ $metadataForm.submit();
+ var data = null;
+ if (this.valid()) {
+ data = {
+ wfs: $metadataForm.easyform("serialize")
+ };
+ }
+ if ($.isFunction(callback)) {
+ callback(data);
+ }
+ return data !== null ? data.wfs : data;
+ };
+
+ // second optional parameter formData
+ var fillForm = function (obj) {
+
+ if (arguments.length >= 2) {
+ $metadataForm.easyform("reset");
+ $metadataForm.easyform("fill", arguments[1]);
+ that.valid();
+ return;
+ }
+
+ // get metadata from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_metadata_wfs_server.php",
+ method: "getWfsMetadata",
+ parameters: {
+ "id": obj
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ return;
+ }
+ $metadataForm.easyform("reset");
+ $metadataForm.easyform("fill", obj);
+ that.valid();
+ }
+ });
+ req.send();
+ };
+
+ this.fill = function (obj) {
+ $metadataForm.easyform("fill", obj);
+ };
+
+ var showOriginalMetadata = function () {
+ that.events.showOriginalMetadata.trigger({
+ data : {
+ wfsId : wfsId,
+ wfsData : $metadataForm.easyform("serialize")
+ }
+ });
+ };
+
+ this.init = function (obj) {
+ wfsId = obj;
+
+ var formData = arguments.length >= 2 ? arguments[1] : undefined;
+
+ if (!formReady) {
+ $metadataForm.load("../plugins/mb_metadata_wfs_edit.php", function () {
+ $metadataForm.find(".help-dialog").helpDialog();
+ $metadataForm.find(".original-metadata-wfs").bind("click", function() {
+ showOriginalMetadata();
+ });
+ validator = $metadataForm.validate({
+ submitHandler: function () {
+ return false;
+ }
+ });
+ if (formData !== undefined) {
+ fillForm(obj, formData);
+ }
+ else {
+ fillForm(obj);
+ }
+ formReady = true;
+ });
+ return;
+ }
+ fillForm(obj);
+ };
+
+ Mapbender.events.localize.register(function () {
+ that.valid();
+ var formData = $metadataForm.easyform("serialize");
+ formReady = false;
+ that.init(wfsId, formData);
+ });
+ Mapbender.events.init.register(function () {
+ that.valid();
+ });
+};
+
+$metadataEdit.mapbender(new MetadataEditApi(options));
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_edit.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_edit.php (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_edit.php 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,118 @@
+<?php
+ require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+?>
+
+<fieldset>
+ <input name="wfs_id" id="wfs_id" type="hidden"/>
+
+ <legend><?php echo _mb("Service Level Metadata");?>: <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("Possibility to adapt and add informations in the separate WFS-Featuretype Metadata. The modified Metadata is stored in the database of the GeoPortal.rlp, outwardly these metadata overwrite the original Service-Metadata.");?>'}" src="../img/questionmark.png"></img></legend>
+ <p>
+ <label for="wfs_title"><?php echo _mb("Show original Service Metadata from last update");?></label>
+ <img class="original-metadata-wfs" src="../img/book.png"></img>
+ <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("The original WFS-Metadata from the last update could be recovered or updated, so that the original Service-Metadata will be shown outward again.");?>'}" src="../img/questionmark.png"></img>
+ </p>
+ <p>
+ <label for="title"><?php echo _mb("WFS Title (OWS)");?>:</label>
+ <input name="title" id="title" class="required"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="summary"><?php echo _mb("WFS Abstract (OWS)");?>:</label>
+ <input name="summary" id="summary"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="keywords"><?php echo _mb("WFS Keywords (OWS)");?>:</label>
+ <input readonly="readonly" name="keywords" id="keywords"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="fees"><?php echo _mb("WFS Fees (OWS)");?>:</label>
+ <input name="fees" id="fees"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="accessconstraints"><?php echo _mb("WFS AccessConstraints (OWS)");?>:</label>
+ <input name="accessconstraints" id="accessconstraints"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+<?php
+ $sql = "SELECT termsofuse_id, name FROM termsofuse";
+ $res = db_query($sql);
+ $termsofuse = array();
+ while ($row = db_fetch_assoc($res)) {
+ $termsofuse[$row["termsofuse_id"]] = $row["name"];
+ }
+?>
+ <p>
+ <label for="wfs_termsofuse"><?php echo _mb("WFS Predefined Licence (Registry)");?>:</label>
+ <select name="wfs_termsofuse" id="wfs_termsofuse">
+ <option>...</option>
+<?php
+ foreach ($termsofuse as $key => $value) {
+ echo "<option value='" . $key . "'>" . htmlentities($value, ENT_QUOTES, CHARSET) . "</option>";
+ }
+?>
+ </select>
+ <img class="help-dialog" title="<?php echo _mb("Help");?>" help="{text:'<?php echo _mb("Auswahl von vordefinierten Lizenzen hinsichtlich Gebühren und Zugriffsbeschränkungen.");?>'}" src="../img/questionmark.png"></img>
+ </p>
+</fieldset>
+<fieldset>
+ <legend><?php echo _mb("WFS Provider Section (OWS)");?></legend>
+ <p>
+ <label for="individualName"><?php echo _mb("Contact Individual Name (OWS)");?>:</label>
+ <input name="individualName" id="individualName"/>
+ </p>
+ <p>
+ <label for="positionName"><?php echo _mb("Contact Position Name (OWS)");?>:</label>
+ <input name="positionName" id="positionName"/>
+ </p>
+ <p>
+ <label for="voice"><?php echo _mb("Contact Phone Voice (OWS)");?>:</label>
+ <input name="voice" id="voice"/>
+ </p>
+ <p>
+ <label for="facsimile"><?php echo _mb("Contact Phone Fax (OWS)");?>:</label>
+ <input name="facsimile" id="facsimile"/>
+ </p>
+ <p>
+ <label for="providerName"><?php echo _mb("Contact Organisation (WFS)");?>:</label>
+ <input name="providerName" id="providerName"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="deliveryPoint"><?php echo _mb("Contact Address (WFS)");?>:</label>
+ <input name="deliveryPoint" id="deliveryPoint"/>
+ </p>
+ <p>
+ <label for="city"><?php echo _mb("Contact City (WFS)");?>:</label>
+ <input name="city" id="city"/>
+ </p>
+ <p>
+ <label for="administrativeArea"><?php echo _mb("Contact State or Province (WFS) - ISO 3166-II");?>:</label>
+ <input name="administrativeArea" id="administrativeArea"/>
+ </p>
+ <p>
+ <label for="postalCode"><?php echo _mb("Contact Post Code (WFS)");?>:</label>
+ <input name="postalCode" id="postalCode"/>
+ </p>
+ <p>
+ <label for="country"><?php echo _mb("Contact Post Country (WFS) - ISO 3166");?>:</label>
+ <input name="country" id="country"/>
+ </p>
+ <p>
+ <label for="electronicMailAddress"><?php echo _mb("Contact Electronic Mail Address (WFS)");?>:</label>
+ <input name="electronicMailAddress" id="electronicMailAddress" class="required email"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="wfs_timestamp_create"><?php echo _mb("Date of first registration (Registry)");?>:</label>
+ <input readonly="readonly" name="wfs_timestamp_create" id="wfs_timestamp_create"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+ <p>
+ <label for="wfs_timestamp"><?php echo _mb("Date of last revision (Registry)");?>:</label>
+ <td><input readonly="readonly" name="wfs_timestamp" id="wfs_timestamp"/>
+ <img class="metadata_img" title="<?php echo _mb("Inspire");?>" src="../img/misc/inspire_eu_klein.png"></img>
+ </p>
+</fieldset>
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_select.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_select.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_select.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,104 @@
+/**
+ * Package: mb_metadata_wfs_select
+ *
+ * Description:
+ *
+ * Files:
+ *
+ * SQL:
+ *
+ * Help:
+ *
+ * Maintainer:
+ * http://www.mapbender.org/User:Christoph_Baudson
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+var $metadataSelect = $(this);
+$metadataSelect.prepend("<img src='../img/indicator_wheel.gif'>");
+
+var MetadataSelectApi = function (o) {
+ var table = null;
+ var that = this;
+
+ var fnGetSelected = function (oTableLocal){
+ var aReturn = [];
+ var aTrs = oTableLocal.fnGetNodes();
+
+ for ( var i=0 ; i<aTrs.length ; i++ ){
+ if ( $(aTrs[i]).hasClass('row_selected') ){
+ aReturn.push( aTrs[i] );
+ }
+ }
+ return aReturn;
+ };
+
+ this.getData = function () {
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_metadata_wfs_server.php",
+ method: "getWfs",
+ parameters: {
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ return;
+ }
+ $metadataSelect.find("img").remove();
+
+ var aoColumns = [];
+ for (var i in obj.header) {
+ if (obj.header[i] === "WFS ID") {
+ continue;
+ }
+ aoColumns.push({"sTitle": obj.header[i]});
+ }
+
+ // initialize datatables
+ table = $metadataSelect.find("table").dataTable({
+ "aoColumns": aoColumns,
+ "bJQueryUI": true,
+ "bAutoWidth": false
+ });
+
+ // add rows
+ for (var j in obj.data) {
+ var data = obj.data[j];
+ var wfsId = data[0];
+ data.shift();
+ var index = table.fnAddData(data);
+ var rowNode = table.fnGetNodes(index[0]);
+ $(rowNode).data("wfsId", wfsId);
+ }
+
+ // make rows selectable
+ $metadataSelect.find("tbody").click(function (e) {
+ $(table.fnSettings().aoData).each(function (){
+ $(this.nTr).removeClass('row_selected');
+ });
+ $(e.target.parentNode).addClass('row_selected');
+ var selectedRow = fnGetSelected(table);
+ $metadataSelect.fadeOut(function () {
+ that.events.selected.trigger({
+ wfsId: $(selectedRow).data("wfsId")
+ });
+ $metadataSelect.show();
+ });
+ });
+ }
+ });
+ req.send();
+ };
+
+ this.events = {
+ selected: new Mapbender.Event()
+ };
+};
+
+$metadataSelect.mapbender(new MetadataSelectApi(options));
+
+$metadataSelect.mapbender("getData");
\ No newline at end of file
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_server.php (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_server.php 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,393 @@
+<?php
+require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+require_once dirname(__FILE__) . "/../classes/class_user.php";
+require_once dirname(__FILE__) . "/../classes/class_wfs.php";
+require_once(dirname(__FILE__)."/../classes/class_universal_wfs_factory.php");
+
+$ajaxResponse = new AjaxResponse($_POST);
+
+function abort ($message) {
+ global $ajaxResponse;
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage($message);
+ $ajaxResponse->send();
+ die;
+};
+
+function getWfs ($wfsId = null) {
+ $user = new User(Mapbender::session()->get("mb_user_id"));
+ $wfsIdArray = $user->getOwnedWfs();
+ if (!is_array($wfsIdArray) || count($wfsIdArray) === 0) {
+ abort(_mb("No metadata sets available."));
+ }
+ if (!is_null($wfsId) && !in_array($wfsId, $wfsIdArray)) {
+ abort(_mb("You are not allowed to access this WFS."));
+ }
+ return $wfsIdArray;
+}
+
+function getFeaturetype ($featuretypeId = null) {
+ $user = new User(Mapbender::session()->get("mb_user_id"));
+ $wfsIdArray = $user->getOwnedWfs();
+ if (!is_array($wfsIdArray) || count($wfsIdArray) === 0) {
+ abort(_mb("No metadata sets available."));
+ }
+ $wfsId = wfs::getWfsIdByFeaturetypeId($featuretypeId);
+ if (is_null($wfsId) || !in_array($wfsId, $wfsIdArray)) {
+ abort(_mb("You are not allowed to access this WFS " . $wfsId));
+ }
+ return;
+}
+
+switch ($ajaxResponse->getMethod()) {
+ case "getWfs" :
+ $wfsIdArray = getWfs();
+
+ $wfsList = implode(",", $wfsIdArray);
+
+ $sql = <<<SQL
+
+SELECT wfs.wfs_id, wfs.wfs_title, wfs.wfs_timestamp, wfs_version
+FROM wfs WHERE wfs_id IN ($wfsList);
+
+SQL;
+ $res = db_query($sql);
+ $resultObj = array(
+ "header" => array(
+ "WFS ID",
+ "Titel",
+ "Timestamp",
+ "Version"
+ ),
+ "data" => array()
+ );
+
+ while ($row = db_fetch_row($res)) {
+ // convert NULL to '', NULL values cause datatables to crash
+ $walk = array_walk($row, create_function('&$s', '$s=strval($s);'));
+ $resultObj["data"][]= $row;
+ }
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+ break;
+
+ case "getWfsMetadata" :
+ $wfsId = $ajaxResponse->getParameter("id");
+ getWfs($wfsId);
+
+ $sql = <<<SQL
+
+SELECT wfs_id, wfs_abstract, wfs_title, fees, accessconstraints,
+individualname, positionname, providername, voice,
+facsimile, deliverypoint, city,
+administrativearea, postalcode, country, electronicmailaddress,
+wfs_timestamp, wfs_timestamp_create
+FROM wfs WHERE wfs_id = $wfsId;
+
+SQL;
+
+ $res = db_query($sql);
+ $resultObj = array();
+ $row = db_fetch_assoc($res);
+
+ $resultObj['wfs_id'] = $row['wfs_id'];
+ $resultObj['summary'] = $row['wfs_abstract'];
+ $resultObj['title'] = $row['wfs_title'];
+ $resultObj['fees'] = $row['fees'];
+ $resultObj['accessconstraints'] = $row['accessconstraints'];
+ $resultObj['individualName'] = $row['individualname'];
+ $resultObj['positionName'] = $row['positionname'];
+ $resultObj['providerName'] = $row['providername'];
+ $resultObj['voice'] = $row['voice'];
+ $resultObj['facsimile'] = $row['facsimile'];
+ $resultObj['deliveryPoint'] = $row['deliverypoint'];
+ $resultObj['city'] = $row['city'];
+ $resultObj['administrativeArea'] = $row['administrativearea'];
+ $resultObj['postalCode'] = $row['postalcode'];
+ $resultObj['country'] = $row['country'];
+ $resultObj['electronicMailAddress'] = $row['electronicmailaddress'];
+ $resultObj['wfs_timestamp'] = $row['wfs_timestamp'] != "" ? date('d.m.Y', $row['wfs_timestamp']) : "";
+ $resultObj['wfs_timestamp_create'] = $row['wfs_timestamp_create'] != "" ? date('d.m.Y', $row['wfs_timestamp_create']) : "";
+
+ $keywordSql = <<<SQL
+
+SELECT DISTINCT keyword FROM keyword, wfs_featuretype_keyword
+WHERE keyword_id = fkey_keyword_id AND fkey_featuretype_id IN (
+ SELECT featuretype_id from wfs_featuretype, wfs
+ WHERE fkey_wfs_id = wfs_id AND wfs_id = $wfsId
+) ORDER BY keyword
+
+SQL;
+
+ $keywordRes = db_query($keywordSql);
+ $keywords = array();
+ while ($keywordRow = db_fetch_assoc($keywordRes)) {
+ $keywords[]= $keywordRow["keyword"];
+ }
+
+ $resultObj["wfs_keywords"] = implode(", ", $keywords);
+
+ $termsofuseSql = <<<SQL
+SELECT fkey_termsofuse_id FROM wfs_termsofuse WHERE fkey_wfs_id = $wfsId
+SQL;
+
+ $termsofuseRes = db_query($termsofuseSql);
+ if ($termsofuseRes) {
+ $termsofuseRow = db_fetch_assoc($termsofuseRes);
+ $resultObj["wfs_termsofuse"] = $termsofuseRow["fkey_termsofuse_id"];
+ }
+ else {
+ $resultObj["wfs_termsofuse"] = null;
+ }
+
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+
+ case "getFeaturetypeMetadata" :
+ $featuretypeId = $ajaxResponse->getParameter("id");
+ getFeaturetype($featuretypeId);
+
+ $sql = <<<SQL
+
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract, featuretype_searchable
+FROM wfs_featuretype WHERE featuretype_id = $featuretypeId;
+
+SQL;
+ $res = db_query($sql);
+
+ $resultObj = array();
+ while ($row = db_fetch_assoc($res)) {
+ foreach ($row as $key => $value) {
+ $resultObj[$key] = $value;
+ }
+ }
+
+ $sql = <<<SQL
+SELECT fkey_md_topic_category_id
+FROM wfs_featuretype_md_topic_category
+WHERE fkey_featuretype_id = $featuretypeId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["featuretype_md_topic_category_id"][]= $row["fkey_md_topic_category_id"];
+ }
+
+ $sql = <<<SQL
+SELECT fkey_inspire_category_id
+FROM wfs_featuretype_inspire_category
+WHERE fkey_featuretype_id = $featuretypeId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["featuretype_inspire_category_id"][]= $row["fkey_inspire_category_id"];
+ }
+
+ $sql = <<<SQL
+SELECT fkey_custom_category_id
+FROM wfs_featuretype_custom_category
+WHERE fkey_featuretype_id = $featuretypeId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["featuretype_custom_category_id"][]= $row["fkey_custom_category_id"];
+ }
+
+ $sql = <<<SQL
+SELECT keyword FROM keyword, wfs_featuretype_keyword
+WHERE keyword_id = fkey_keyword_id AND fkey_featuretype_id = $featuretypeId
+SQL;
+ $res = db_query($sql);
+
+ $resultObj["featuretype_keyword"] = array();
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["featuretype_keyword"][]= $row["keyword"];
+ }
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+ break;
+ case "getFeaturetypeByWfs" :
+ $wfsId = $ajaxResponse->getParameter("id");
+// getWms($wmsId);
+
+ $sql = <<<SQL
+
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract
+FROM wfs_featuretype WHERE fkey_wfs_id = $wfsId ORDER BY featuretype_id;
+
+SQL;
+ $res = db_query($sql);
+
+ $rows = array();
+ while ($row = db_fetch_assoc($res)) {
+ $rows[] = $row;
+ }
+ $left = 1;
+
+ function createNode ($left, $right, $row) {
+ return array(
+ "left" => $left,
+ "right" => $right,
+ #"parent" => $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null,
+ #"pos" => intval($row["layer_pos"]),
+ "attr" => array (
+ "featuretype_id" => intval($row["featuretype_id"]),
+ "featuretype_name" => $row["featuretype_name"],
+ "featuretype_title" => $row["featuretype_title"],
+ "featuretype_abstract" => $row["featuretype_abstract"]
+ )
+ );
+ }
+
+ function addSubTree ($rows, $i, $left) {
+ $nodeArray = array();
+ $addNewNode = true;
+ for ($j = $i; $j < count($rows); $j++) {
+ $row = $rows[$j];
+ $pos = $j;
+
+ // first node of subtree
+ if ($addNewNode) {
+ $nodeArray[]= createNode($left, null, $row);
+ $addNewNode = false;
+ }
+ else {
+ $nodeArray[count($nodeArray)-1]["right"] = ++$left;
+ $nodeArray[]= createNode(++$left, null, $row);
+ }
+ }
+ if (is_null($nodeArray[count($nodeArray)-1]["right"])) {
+ $nodeArray[count($nodeArray)-1]["right"] = ++$left;
+ }
+ return $nodeArray;
+ }
+
+
+ $nodeArray = addSubTree($rows, 0, 1);
+ $resultObj = array(
+ "nestedSets" => $nodeArray
+ );
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+ case "save":
+ $data = $ajaxResponse->getParameter("data");
+
+ try {
+ $wfsId = intval($data->wfs->wfs_id);
+ }
+ catch (Exception $e) {
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("Invalid WFS ID."));
+ $ajaxResponse->send();
+ }
+ getWfs($wfsId);
+
+ $wfsFactory = new UniversalWfsFactory();
+ $wfs = $wfsFactory->createFromDb($wfsId);
+ if (is_null($wfs)) {
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("Invalid WFS ID."));
+ $ajaxResponse->send();
+ }
+
+ $columns = array(
+ "summary",
+ "title",
+ "fees",
+ "accessconstraints",
+ "individualName",
+ "positionName",
+ "voice",
+ "facsimile",
+ "providerName",
+ "deliveryPoint",
+ "city",
+ "administrativeArea",
+ "postalCode",
+ "country",
+ "electronicMailAddress",
+ "wfs_termsofuse"
+ );
+ foreach ($columns as $c) {
+ $value = $data->wfs->$c;
+ if (!is_null($value)) {
+ $wfs->$c = $value;
+ }
+ }
+
+ try {
+ $featuretypeId = intval($data->featuretype->featuretype_id);
+ }
+ catch (Exception $e) {
+ }
+
+ if ($featuretypeId) {
+ $featuretype = $wfs->findFeatureTypeById($featuretypeId);
+ if (!is_null($featuretype)) {
+
+ $columns = array(
+ "summary",
+ "title",
+ "featuretype_keyword",
+ "featuretype_md_topic_category_id",
+ "featuretype_inspire_category_id",
+ "featuretype_custom_category_id"
+ );
+
+ foreach ($columns as $c) {
+ if ($c === "summary") {
+ $value = $data->featuretype->featuretype_abstract;
+ }
+ elseif ($c === "title") {
+ $value = $data->featuretype->featuretype_title;
+ }
+ else {
+ $value = $data->featuretype->$c;
+ }
+ if ($c === "featuretype_keyword") {
+ $featuretype->$c = explode(",", $value);
+ foreach ($featuretype->$c as &$val) {
+ $val = trim($val);
+ }
+ }
+ elseif ($c === "featuretype_md_topic_category_id"
+ || $c === "featuretype_inspire_category_id"
+ || $c === "featuretype_custom_category_id"
+ ) {
+ if (!is_array($value)) {
+ $featuretype->$c = array($value);
+ }
+ else {
+ $featuretype->$c = $value;
+ }
+ }
+ else {
+ if (!is_null($value)) {
+ $featuretype->$c = $value;
+ }
+ }
+ }
+ }
+ }
+
+ $wfs->update();
+
+
+ $ajaxResponse->setMessage("Updated WFS metadata for ID " . $wfsId);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+ default:
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("An unknown error occured."));
+ break;
+}
+
+$ajaxResponse->send();
+?>
\ No newline at end of file
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.html
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.html (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.html 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,70 @@
+<fieldset class="ui-widget">
+
+ <legend>Original Service Level Metadata: </legend>
+ <p>
+ <label for="original_title">WFS Title (OWS):</label>
+ <input readonly name="original_title" id="original_title" class="required"/>
+ </p>
+ <p>
+ <label for="original_summary">WFS Abstract (OWS):</label>
+ <input readonly name="original_summary" id="original_summary"/>
+ </p>
+<!-- <p>
+ <label for="">WFS Keywords (OWS):</label>
+ <input readonly name="original_wfs_keywords" id="original_wfs_keywords"/>
+ </p>
+-->
+ <p>
+ <label for="original_fees">WFS Fees (OWS):</label>
+ <input readonly name="original_fees" id="original_fees"/>
+ </p>
+ <p>
+ <label for="original_accessconstraints">WFS AccessConstraints (OWS):</label>
+ <input readonly name="original_accessconstraints" id="original_accessconstraints"/>
+ </p>
+
+ <p>
+ <label for="original_individualName">Contact Individual Name (OWS):</label>
+ <input readonly name="original_individualName" id="original_individualName"/>
+ </p>
+ <p>
+ <label for="original_positionName">Contact Position Name (OWS):</label>
+ <input readonly name="original_positionName" id="original_positionName"/>
+ </p>
+ <p>
+ <label for="original_voice">Contact Phone Voice (OWS):</label>
+ <input readonly name="original_voice" id="original_voice"/>
+ </p>
+ <p>
+ <label for="original_facsimile">Contact Phone Fax (OWS):</label>
+ <input readonly name="original_facsimile" id="original_facsimile"/>
+ </p>
+ <p>
+ <label for="original_providerName">Contact Organisation (WFS):</label>
+ <input readonly name="original_providerName" id="original_providerName"/>
+ </p>
+ <p>
+ <label for="original_deliveryPoint">Contact Address (WFS):</label>
+ <input readonly name="original_deliveryPoint" id="original_deliveryPoint"/>
+ </p>
+ <p>
+ <label for="original_city">Contact City (WFS):</label>
+ <input readonly name="original_city" id="original_city"/>
+ </p>
+ <p>
+ <label for="original_administrativeArea">Contact State or Province (WFS) - ISO 3166-II:</label>
+ <input readonly name="original_administrativeArea" id="original_administrativeArea"/>
+ </p>
+ <p>
+ <label for="original_postalCode">Contact Post Code (WFS):</label>
+ <input readonly name="original_postalCode" id="original_postalCode"/>
+ </p>
+ <p>
+ <label for="original_country">Contact Post Country (WFS) - ISO 3166:</label>
+ <input readonly name="original_country" id="original_country"/>
+ </p>
+ <p>
+ <label for="original_electronicMailAddress">Contact Electronic Mail Address (WFS):</label>
+ <input readonly name="original_electronicMailAddress" id="original_electronicMailAddress"/>
+ </p>
+</fieldset>
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginal.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,164 @@
+var $showOriginalDiv = $(this);
+var $originalMetadataForm = $("<form></form>").appendTo($showOriginalDiv);
+var $originalMetadataPopup = $("<div></div>");
+
+var ShowOriginalApi = function() {
+ var that = this;
+ var featuretypeName;
+
+ this.events = {
+ replaceMetadata : new Mapbender.Event()
+ };
+
+ var replaceMetadata = function (clickedAttr, attrVal) {
+ var returnObj = {};
+ returnObj[clickedAttr] = attrVal;
+ that.events.replaceMetadata.trigger({
+ data : returnObj
+ });
+ //remove background-color of replaced attr
+ $("#" + clickedAttr).removeClass("differentFromOriginal");
+ };
+
+ var replaceAllMetadata = function (obj) {
+ var returnObj = {};
+ for(metadataAttr in obj) {
+ var attr = metadataAttr.split("original_");
+ returnObj[attr[1]] = obj[metadataAttr];
+ }
+ that.events.replaceMetadata.trigger({
+ data : returnObj
+ });
+ //remove background-color of all replaced attr
+ $(".differentFromOriginal").removeClass("differentFromOriginal");
+ };
+
+ var mergeOriginalWithCurrentMetadata = function (originalObj,currentObj) {
+ var differenceFound = false;
+ for(metadataAttr in currentObj) {
+ var origMetadataAttr = "original_" + metadataAttr;
+
+ //some attr are excluded from check
+ if(metadataAttr != "wfs_id" &&
+ metadataAttr != "wfs_timestamp" &&
+ metadataAttr != "wfs_timestamp_create" &&
+ metadataAttr != "wfs_keywords" &&
+ metadataAttr != "wfs_termsofuse" &&
+ metadataAttr != "featuretype_name" &&
+ metadataAttr != "featuretype_id" &&
+ metadataAttr != "changeEPSG" &&
+ metadataAttr != "scaleSelect") {
+
+ if(!originalObj[origMetadataAttr]) {
+ originalObj[origMetadataAttr] = "";
+ }
+
+ if(currentObj[metadataAttr] == originalObj[origMetadataAttr]) {
+ $("#" + origMetadataAttr).parent().hide();
+ }
+ else if(currentObj[metadataAttr] == "" && originalObj[origMetadataAttr] == "") {
+ $("#" + origMetadataAttr).parent().hide();
+ }
+ else {
+ //mark all attr in main form which are different
+ $("#" + metadataAttr).addClass("differentFromOriginal");
+ (function () {
+ var clickedAttr = metadataAttr;
+ var attrValue = $("#" + origMetadataAttr).val();
+ $("#" + origMetadataAttr).parent().append("<input type='button' value='Replace' id='replaceRecord_"+origMetadataAttr+"' />");
+ $("#replaceRecord_" +origMetadataAttr).addClass("ui-state-default ui-corner-all");
+ $("#replaceRecord_" +origMetadataAttr).bind("click", function () {
+ replaceMetadata(clickedAttr, attrValue);
+ });
+ })();
+ var differenceFound = true;
+ }
+ }
+ }
+ if(differenceFound === false) {
+ $originalMetadataPopup.dialog("close");
+ var noDifferenceMsg = "No difference found.";
+ $("<div>" + noDifferenceMsg + "</div>").dialog(
+ {
+ title : "Show original metadata",
+ bgiframe: true,
+ autoOpen: true,
+ modal: false,
+ position : [600, 75],
+ buttons: {
+ "ok": function(){
+ $(this).dialog('close').remove();
+ }
+ }
+ }
+ );
+ }
+ };
+
+ var getOriginalMetadata = function (isWFsOrFeaturetype, currentId, currentData) {
+ if(isWFsOrFeaturetype == "featuretype") {
+ featuretypeName = currentData.featuretype_name;
+ }
+ // get original metadata from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_original_metadata_wfs_server.php",
+ method: "getOriginalMetadata",
+ parameters: {
+ "id": currentId,
+ "featuretypeName": featuretypeName
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ return;
+ }
+ fillForm(obj);
+ mergeOriginalWithCurrentMetadata(obj,currentData);
+ }
+ });
+ req.send();
+ };
+
+ var fillForm = function (obj) {
+ $originalMetadataForm.easyform("reset");
+ $originalMetadataForm.easyform("fill", obj);
+ $originalMetadataPopup.append($originalMetadataForm);
+ $originalMetadataPopup.dialog({
+ title : "Show original metadata",
+ autoOpen : false,
+ draggable : true,
+ modal : true,
+ width : 600,
+ position : [600, 75],
+ buttons: {
+ "close": function() {
+ $(this).dialog('close');
+ },
+ "replace all metadata": function() {
+ replaceAllMetadata(obj);
+ $(this).dialog('close');
+ }
+ },
+ close: function() {
+ $(".differentFromOriginal").removeClass("differentFromOriginal");
+ }
+ });
+ $originalMetadataPopup.dialog("open");
+
+ };
+
+ this.init = function (obj) {
+ $originalMetadataPopup.dialog("close");
+ $originalMetadataForm.load("../plugins/mb_metadata_wfs_showOriginal.html", function () {
+ getOriginalMetadata("wfs", obj.wfsId, obj.wfsData);
+ });
+ }
+
+ this.initLayer = function (obj) {
+ $originalMetadataPopup.dialog("close");
+ $originalMetadataForm.load("../plugins/mb_metadata_wfs_showOriginalLayer.html", function () {
+ getOriginalMetadata("featuretype",obj.wfsId, obj.featuretypeData);
+ });
+ }
+};
+
+$showOriginalDiv.mapbender(new ShowOriginalApi());
\ No newline at end of file
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginalLayer.html
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginalLayer.html (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_showOriginalLayer.html 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,16 @@
+ <fieldset class="">
+ <legend>Original featuretype metadata</legend>
+
+ <p>
+ <label for="original_featuretype_title">Featuretype Title (WFS):</label>
+ <input readonly name="original_featuretype_title" id="original_featuretype_title"/>
+ </p>
+ <p>
+ <label for="original_featuretype_abstract">Featuretype Abstract (WFS):</label>
+ <input readonly name="original_featuretype_abstract" id="original_featuretype_abstract"/>
+ </p>
+ <p>
+ <label for="original_featuretype_keyword">Featuretype Keywords (WFS):</label>
+ <input readonly name="original_featuretype_keyword" id="original_featuretype_keyword"/>
+ </p>
+ </fieldset>
Added: trunk/mapbender/http/plugins/mb_metadata_wfs_submit.js
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wfs_submit.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wfs_submit.js 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,67 @@
+var $submit = $(this);
+
+var MetadataSubmitApi = function () {
+ var that = this;
+ var formData = {};
+
+ var serializeCallback = function (data) {
+ if (data === null) {
+ formData = null;
+ return;
+ }
+ if (formData !== null) {
+ formData = $.extend(formData, data);
+ }
+ };
+
+ this.enable = function () {
+ $submit.find("input[type='submit']").removeAttr("disabled");
+ };
+
+ this.submit = function () {
+ formData = {};
+ this.events.submit.trigger({
+ callback: serializeCallback
+ });
+
+ if (formData === null) {
+ return;
+ }
+
+ // get metadata from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../plugins/mb_metadata_wfs_server.php",
+ method: "save",
+ parameters: {
+ "data": formData
+ },
+ callback: function (obj, result, message) {
+ if (!result) {
+ $("<div></div>").text(!message ? "An error occured." : message).dialog({
+ modal: true
+ });
+ return;
+ }
+ $("<div></div>").text(message).dialog({
+ modal: true
+ });
+
+ }
+ });
+ req.send();
+ };
+
+ this.events = {
+ submit: new Mapbender.Event()
+ };
+
+ var init = function () {
+ $submit.find("input[type='submit']").bind("click", function () {
+ that.submit();
+ });
+ };
+
+ init();
+};
+
+$submit.mapbender(new MetadataSubmitApi());
Added: trunk/mapbender/http/plugins/mb_original_metadata_wfs_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_original_metadata_wfs_server.php (rev 0)
+++ trunk/mapbender/http/plugins/mb_original_metadata_wfs_server.php 2010-06-02 09:50:04 UTC (rev 6238)
@@ -0,0 +1,211 @@
+<?php
+require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+require_once dirname(__FILE__) . "/../classes/class_user.php";
+require_once dirname(__FILE__) . "/../classes/class_wfs.php";
+
+$ajaxResponse = new AjaxResponse($_POST);
+
+function abort ($message) {
+ global $ajaxResponse;
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage($message);
+ $ajaxResponse->send();
+ die;
+};
+
+function getWfsMetadataFromXml($capabilitiesDoc) {
+ $xmlDoc = new DOMDocument();
+ $xmlDoc->encoding = CHARSET;
+ $xmlDoc->preserveWhiteSpace = false;
+ $xmlDoc->loadXML($capabilitiesDoc);
+
+ //define default resultObj
+ $resultObj = array(
+ "original_title" => "",
+ "original_summary" => "",
+ "original_accessconstraints" => "",
+ "original_fees" => "",
+// "original_wfs_keywords" => "",
+ "original_positionName" => "",
+ "original_electronicMailAddress" => "",
+ "original_facsimile" => "",
+ "original_voice" => "",
+ "original_individualName" => "",
+ "original_providerName" => "",
+ "original_deliveryPoint" => "",
+ "original_city" => "",
+ "original_administrativeArea" => "",
+ "original_postalCde" => "",
+ "original_country" => ""
+ );
+
+ $service_node = $xmlDoc->getElementsByTagName('Service');
+ foreach ($service_node as $node) {
+ $children = $node->childNodes;
+ foreach($children as $child) {
+ $e = new mb_exception(strtoupper($child->nodeName)."------".$child->nodeValue);
+ if (strtoupper($child->nodeName) == "TITLE"){
+ $resultObj["original_title"] = $child->nodeValue;
+ }
+ if (strtoupper($child->nodeName) == "ABSTRACT"){
+ $resultObj["original_summary"] = $child->nodeValue;
+ }
+ if (strtoupper($child->nodeName) == "ACCESSCONSTRAINTS"){
+ $resultObj["original_accessconstraints"] = $child->nodeValue;
+ }
+ if (strtoupper($child->nodeName) == "FEES"){
+ $resultObj["original_fees"] = $child->nodeValue;
+ }
+
+/*
+ //"Service"-childnode KeywordList
+ if (strtoupper($child->nodeName) == "KEYWORDLIST"){
+ $keywords_list = $child->childNodes;
+ $keywords = array();
+ foreach ($keywords_list as $keywordlist_child_node) {
+ $keyword = $keywordlist_child_node->nodeValue;
+ array_push($keywords, $keyword);
+ }
+ $resultObj["original_wms_keywords"] = implode(", ", $keywords);
+ }
+*/
+ //"Service"-childnode ContactInformation
+ if (strtoupper($child->nodeName) == "CONTACTINFORMATION"){
+ $contactinfo_list = $child->childNodes;
+ foreach ($contactinfo_list as $contact_child_node) {
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTPOSITION"){
+ $wms_contactposition = $contact_child_node->nodeValue;
+ $resultObj["original_positionName"] = $contact_child_node->nodeValue;
+ }
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTELECTRONICMAILADDRESS"){
+ $resultObj["original_electronicMailAddress"] = $contact_child_node->nodeValue;
+ }
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTFACSIMILETELEPHONE"){
+ $wms_fax = $contact_child_node->nodeValue;
+ $resultObj["original_facsimile"] = $contact_child_node->nodeValue;
+ }
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTVOICETELEPHONE"){
+ $wms_telephone = $contact_child_node->nodeValue;
+ $resultObj["original_voice"] = $contact_child_node->nodeValue;
+ }
+
+ //"ContactInformation"-childnode ContactpersonPrimary
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTPERSONPRIMARY"){
+ $contactpersoninfo_list = $contact_child_node->childNodes;
+ foreach($contactpersoninfo_list as $contactperson_child) {
+ if (strtoupper($contactperson_child->nodeName) == "CONTACTPERSON"){
+ $resultObj["original_individualName"] = $contactperson_child->nodeValue;
+ }
+ if (strtoupper($contactperson_child->nodeName) == "CONTACTORGANIZATION"){
+ $resultObj["original_providerName"] = $contactperson_child->nodeValue;
+ }
+ }
+ }
+
+ //"ContactInformation"-childnode ContactAddress
+ if (strtoupper($contact_child_node->nodeName) == "CONTACTADDRESS"){
+ $contactaddress_list = $contact_child_node->childNodes;
+ foreach($contactaddress_list as $contactaddress_child) {
+ if (strtoupper($contactaddress_child->nodeName) == "ADDRESS"){
+ $resultObj["original_deliveryPoint"] = $contactaddress_child->nodeValue;
+ }
+ if (strtoupper($contactaddress_child->nodeName) == "CITY"){
+ $resultObj["original_city"] = $contactaddress_child->nodeValue;
+ }
+ if (strtoupper($contactaddress_child->nodeName) == "STATEORPROVINCE"){
+ $resultObj["original_administrativeArea"] = $contactaddress_child->nodeValue;
+ }
+ if (strtoupper($contactaddress_child->nodeName) == "POSTCODE"){
+ $resultObj["original_postalCode"] = $contactaddress_child->nodeValue;
+ }
+ if (strtoupper($contactaddress_child->nodeName) == "COUNTRY"){
+ $resultObj["original_country"] = $contactaddress_child->nodeValue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return $resultObj;
+}
+
+function getfeaturetypeMetadataFromXml($capabilitiesDoc,$featuretypeName) {
+ $xmlDoc = new DOMDocument();
+ $xmlDoc->encoding = CHARSET;
+ $xmlDoc->preserveWhiteSpace = false;
+ $xmlDoc->loadXML($capabilitiesDoc);
+
+ //define default resultObj
+ $resultObj = array(
+ "original_featuretype_title" => "",
+ "original_featuretype_abstract" => "",
+ "original_featuretype_keyword" => ""
+ );
+
+ $layer_nodes = $xmlDoc->getElementsByTagName('Featuretype');
+ foreach ($layer_nodes as $node) {
+ $children = $node->childNodes;
+ foreach($children as $child) {
+ if (strtoupper($child->nodeName) == "NAME"){
+ if($child->nodeValue == $layerName) {
+ $layerNode = $node;
+ }
+ }
+ }
+ }
+
+ $layerChildren = $layerNode->childNodes;
+ foreach($layerChildren as $layerChild) {
+ if (strtoupper($layerChild->nodeName) == "TITLE") {
+ $resultObj["original_featuretype_title"] = $layerChild->nodeValue;
+ }
+ if (strtoupper($layerChild->nodeName) == "ABSTRACT") {
+ $resultObj["original_featuretype_abstract"] = $layerChild->nodeValue;
+ }
+ //"Service"-childnode KeywordList
+ if (strtoupper($layerChild->nodeName) == "KEYWORDLIST") {
+ $keywords_list = $layerChild->childNodes;
+ $keywords = array();
+ foreach ($keywords_list as $keywordlist_child_node) {
+ $keyword = $keywordlist_child_node->nodeValue;
+ array_push($keywords, $keyword);
+ }
+ $resultObj["original_featuretype_keyword"] = implode(", ", $keywords);
+ }
+ }
+ return $resultObj;
+}
+
+switch ($ajaxResponse->getMethod()) {
+ case "getOriginalMetadata" :
+ $wfsId = $ajaxResponse->getParameter("id");
+ $featuretypeName = $ajaxResponse->getParameter("featuretypeName");
+ $sql = <<<SQL
+
+SELECT wfs_getcapabilities_doc FROM wfs WHERE wfs_id = $wfsId;
+
+SQL;
+ $res = db_query($sql);
+ $row = db_fetch_array($res);
+ $wfs_getcapabilities_doc = $row["wfs_getcapabilities_doc"];
+
+ if($featuretypeName != "") {
+ $resultObj = getFeaturetypeMetadataFromXml($wfs_getcapabilities_doc,$featuretypeName);
+ }
+ else {
+ $resultObj = getWfsMetadataFromXml($wfs_getcapabilities_doc);
+ }
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+ default:
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("An unknown error occured."));
+ break;
+}
+
+$ajaxResponse->send();
+?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list