-
-The value of the string will be taken from the strings.xml file that
-corresponds to the language used.
-
-### Add a footer link
-
-Look for the div element with id = "footer" and just add it:
-
-
';
-
-/** api: constructor
- * .. class:: GeoNetwork.HTML5UI.Templates.SIMPLE()
- *
- * An instance of a pre-configured GeoNetwork.HTML5UI.Templates with title and
- * keywords with abstract in tooltip.
- */
-GeoNetwork.HTML5UI.Templates.SIMPLE = new Ext.XTemplate(
- '
',
-// Add to map and download link are handled by the JS
-// based on the store content to create list menu instead
-// of a long list of buttons.
-// GeoNetwork.HTML5UI.Templates.SHOW_ON_MAP,
-// '
-
-
diff --git a/web-client/src/main/resources/apps/js/GeoExt-ux/LayerOpacitySliderPlugin/LayerOpacitySliderPlugin.js b/web-client/src/main/resources/apps/js/GeoExt-ux/LayerOpacitySliderPlugin/LayerOpacitySliderPlugin.js
deleted file mode 100644
index 0c18c75d7c7..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt-ux/LayerOpacitySliderPlugin/LayerOpacitySliderPlugin.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = LayerOpacitySliderPlugin
- *
- * Adapted from http://rcoos.org/carolinasrcoosrev2/secoora_interactive_tst.html
- */
-
-GeoExt.tree.LayerOpacitySliderPlugin = Ext.extend(Ext.util.Observable, {
-
- // slider: null,
-
- constructor : function(config) {
- Ext.apply(this.initialConfig, Ext.apply({}, config));
- Ext.apply(this, config);
- this.addEvents("opacityslide");
- GeoExt.tree.LayerOpacitySliderPlugin.superclass.constructor.apply(this,
- arguments);
- },
-
- init : function(tree) {
- tree.on({
- "rendernode" : this.onRenderNode,
- //"rawslidenode" : this.onRawSlideNode,
- scope : this
- });
- },
-
- onRenderNode : function(node) {
- var a = node.attributes;
- var layer = node.layer;
- // The loader param slider has to exist as well as another configuration
- // option, opacitySlider, that will look
- // to see if the individual layer wants to use a slider. It is possible
- // that some
- // layers grouped together in a node may or may not use a slider. If
- // opacitySlider is not defined, the slider will get created.
-
- if (a.slider) {
- this.indentMarkup = node.parentNode ? node.parentNode.ui
- .getChildIndent() : '';
- var elID = node.id + '-tree-slider-';
- elID = Ext.id(null, elID);
- // Use the table to force the slider onto the same line as the
- // indents. Otherwise since the slider object
- // creates
tags the browser will put it on a seperate line.
- buf = [ ' ', '
', '
',
- '', this.indentMarkup,
- "", '
',
- '', this.indentMarkup,
- "", '
', '', '
',
- '
' ];
-
- Ext.DomHelper.insertAfter(node.ui.anchor, buf.join(""));
-
- var initValue = 100;
- var slider = new Ext.Slider({
- minValue : 0,
- maxValue : 100,
- value : initValue,
- width : 100,
- aggressive : true,
- layer: layer,
- plugins : new GeoExt.LayerOpacitySliderTip()
- });
- // This is needed to get the thumb on the slider to the correct
- // initial point. The base code
- // for the Ext.slider calls innerEl.getWidth() which does not work
- // since at this point the slider
- // isn't rendered.
- Ext.override(Ext.Slider, {
- getRatio : function() {
- var w = this.innerEl.getComputedWidth();
- var v = this.maxValue - this.minValue;
- return v == 0 ? w : (w / v);
- }
- });
- slider.on("change", function(slider, value, oldValue) {
- this.layer.setOpacity(value / 100.0);
- });
- slider.render(elID);
- }
- }
-});
-
-Ext.preg
- && Ext.preg("gx_layeropacitysliderplugin",
- GeoExt.tree.LayerOpacitySliderPlugin);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt-ux/TabCloseMenu/TabCloseMenu.js b/web-client/src/main/resources/apps/js/GeoExt-ux/TabCloseMenu/TabCloseMenu.js
deleted file mode 100644
index d9056de947b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt-ux/TabCloseMenu/TabCloseMenu.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/*!
- * Ext JS Library 3.4.0
- * Copyright(c) 2006-2011 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
-/**
- * @class Ext.ux.TabCloseMenu
- * @extends Object
- * Plugin (ptype = 'tabclosemenu') for adding a close context menu to tabs. Note that the menu respects
- * the closable configuration on the tab. As such, commands like remove others and remove all will not
- * remove items that are not closable.
- *
- * @constructor
- * @param {Object} config The configuration options
- * @ptype tabclosemenu
- */
-Ext.ux.TabCloseMenu = Ext.extend(Object, {
- /**
- * @cfg {String} closeTabText
- * The text for closing the current tab. Defaults to 'Close Tab'.
- */
- closeTabText: 'Close Tab',
-
- /**
- * @cfg {String} closeOtherTabsText
- * The text for closing all tabs except the current one. Defaults to 'Close Other Tabs'.
- */
- closeOtherTabsText: 'Close Other Tabs',
-
- /**
- * @cfg {Boolean} showCloseAll
- * Indicates whether to show the 'Close All' option. Defaults to true.
- */
- showCloseAll: true,
-
- /**
- * @cfg {String} closeAllTabsText
- *
The text for closing all tabs. Defaults to 'Close All Tabs'.
- */
- closeAllTabsText: 'Close All Tabs',
-
- constructor : function(config){
- Ext.apply(this, config || {});
- },
-
- //public
- init : function(tabs){
- this.tabs = tabs;
- tabs.on({
- scope: this,
- contextmenu: this.onContextMenu,
- destroy: this.destroy
- });
- },
-
- destroy : function(){
- Ext.destroy(this.menu);
- delete this.menu;
- delete this.tabs;
- delete this.active;
- },
-
- // private
- onContextMenu : function(tabs, item, e){
- this.active = item;
- var m = this.createMenu(),
- disableAll = true,
- disableOthers = true,
- closeAll = m.getComponent('closeall');
-
- m.getComponent('close').setDisabled(!item.closable);
- tabs.items.each(function(){
- if(this.closable){
- disableAll = false;
- if(this != item){
- disableOthers = false;
- return false;
- }
- }
- });
- m.getComponent('closeothers').setDisabled(disableOthers);
- if(closeAll){
- closeAll.setDisabled(disableAll);
- }
-
- e.stopEvent();
- m.showAt(e.getPoint());
- },
-
- createMenu : function(){
- if(!this.menu){
- var items = [{
- itemId: 'close',
- text: this.closeTabText,
- scope: this,
- handler: this.onClose
- }];
- if(this.showCloseAll){
- items.push('-');
- }
- items.push({
- itemId: 'closeothers',
- text: this.closeOtherTabsText,
- scope: this,
- handler: this.onCloseOthers
- });
- if(this.showCloseAll){
- items.push({
- itemId: 'closeall',
- text: this.closeAllTabsText,
- scope: this,
- handler: this.onCloseAll
- });
- }
- this.menu = new Ext.menu.Menu({
- items: items
- });
- }
- return this.menu;
- },
-
- onClose : function(){
- this.tabs.remove(this.active);
- },
-
- onCloseOthers : function(){
- this.doClose(true);
- },
-
- onCloseAll : function(){
- this.doClose(false);
- },
-
- doClose : function(excludeActive){
- var items = [];
- this.tabs.items.each(function(item){
- if(item.closable){
- if(!excludeActive || item != this.active){
- items.push(item);
- }
- }
- }, this);
- Ext.each(items, function(item){
- this.tabs.remove(item);
- }, this);
- }
-});
-
-Ext.preg('tabclosemenu', Ext.ux.TabCloseMenu);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt.js
deleted file mode 100644
index ae2589416a3..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt.js
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/*
- * The code in this file is based on code taken from OpenLayers.
- *
- * Copyright (c) 2006-2007 MetaCarta, Inc., published under the Clear BSD
- * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
- * full text of the license.
- */
-
-(function() {
-
- /**
- * Check to see if GeoExt.singleFile is true. It is true if the
- * GeoExt/SingleFile.js is included before this one, as it is
- * the case in single file builds.
- */
- var singleFile = (typeof GeoExt == "object" && GeoExt.singleFile);
-
- /**
- * The relative path of this script.
- */
- var scriptName = singleFile ? "GeoExt.js" : "lib/GeoExt.js";
-
- /**
- * Function returning the path of this script.
- */
- var getScriptLocation = function() {
- var scriptLocation = "";
- // If we load other scripts right before GeoExt using the same
- // mechanism to add script resources dynamically (e.g. OpenLayers),
- // document.getElementsByTagName will not find the GeoExt script tag
- // in FF2. Using document.documentElement.getElementsByTagName instead
- // works around this issue.
- var scripts = document.documentElement.getElementsByTagName('script');
- for(var i=0, len=scripts.length; i -1) && (index + scriptName.length == pathLength)) {
- scriptLocation = src.slice(0, pathLength - scriptName.length);
- break;
- }
- }
- }
- return scriptLocation;
- };
-
- /**
- * If GeoExt.singleFile is false then the JavaScript files in the jsfiles
- * array are autoloaded.
- */
- if(!singleFile) {
- var jsfiles = new Array(
- "GeoExt/data/AttributeReader.js",
- "GeoExt/data/AttributeStore.js",
- "GeoExt/data/FeatureRecord.js",
- "GeoExt/data/FeatureReader.js",
- "GeoExt/data/FeatureStore.js",
- "GeoExt/data/LayerRecord.js",
- "GeoExt/data/LayerReader.js",
- "GeoExt/data/LayerStore.js",
- "GeoExt/data/ScaleStore.js",
- "GeoExt/data/WMSCapabilitiesReader.js",
- "GeoExt/data/WMSCapabilitiesStore.js",
- "GeoExt/data/WFSCapabilitiesReader.js",
- "GeoExt/data/WFSCapabilitiesStore.js",
- "GeoExt/data/WMSDescribeLayerReader.js",
- "GeoExt/data/WMSDescribeLayerStore.js",
- "GeoExt/data/WMCReader.js",
- "GeoExt/widgets/Action.js",
- "GeoExt/data/ProtocolProxy.js",
- "GeoExt/widgets/FeatureRenderer.js",
- "GeoExt/widgets/MapPanel.js",
- "GeoExt/widgets/Popup.js",
- "GeoExt/widgets/form.js",
- "GeoExt/widgets/form/SearchAction.js",
- "GeoExt/widgets/form/BasicForm.js",
- "GeoExt/widgets/form/FormPanel.js",
- "GeoExt/widgets/tips/SliderTip.js",
- "GeoExt/widgets/tips/LayerOpacitySliderTip.js",
- "GeoExt/widgets/tips/ZoomSliderTip.js",
- "GeoExt/widgets/tree/LayerNode.js",
- "GeoExt/widgets/tree/TreeNodeUIEventMixin.js",
- "GeoExt/plugins/TreeNodeComponent.js",
- "GeoExt/plugins/TreeNodeRadioButton.js",
- "GeoExt/widgets/tree/LayerLoader.js",
- "GeoExt/widgets/tree/LayerContainer.js",
- "GeoExt/widgets/tree/BaseLayerContainer.js",
- "GeoExt/widgets/tree/OverlayLayerContainer.js",
- "GeoExt/widgets/tree/LayerParamNode.js",
- "GeoExt/widgets/tree/LayerParamLoader.js",
- "GeoExt/widgets/tree/WMSCapabilitiesLoader.js",
- "GeoExt/widgets/LayerOpacitySlider.js",
- "GeoExt/widgets/LayerLegend.js",
- "GeoExt/widgets/LegendImage.js",
- "GeoExt/widgets/UrlLegend.js",
- "GeoExt/widgets/WMSLegend.js",
- "GeoExt/widgets/VectorLegend.js",
- "GeoExt/widgets/LegendPanel.js",
- "GeoExt/widgets/ZoomSlider.js",
- "GeoExt/widgets/grid/FeatureSelectionModel.js",
- "GeoExt/data/PrintPage.js",
- "GeoExt/data/PrintProvider.js",
- "GeoExt/plugins/PrintPageField.js",
- "GeoExt/plugins/PrintProviderField.js",
- "GeoExt/plugins/PrintExtent.js",
- "GeoExt/plugins/AttributeForm.js",
- "GeoExt/widgets/PrintMapPanel.js",
- "GeoExt/state/PermalinkProvider.js"
- );
-
- var allScriptTags = new Array(jsfiles.length);
-
- var host = getScriptLocation() + "lib/";
- for (var i=0, len=jsfiles.length; i";
- }
- document.write(allScriptTags.join(""));
- }
-})();
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/SingleFile.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/SingleFile.js
deleted file mode 100644
index 492e4dacf9d..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/SingleFile.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt");
-
-GeoExt.singleFile = true;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeReader.js
deleted file mode 100644
index a9f7de539e8..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeReader.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = AttributeReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: AttributeReader(meta, recordType)
- *
- * :arg meta: ``Object`` Reader configuration.
- * :arg recordType: ``Array or Ext.data.Record`` An array of field
- * configuration objects or a record object.
- *
- * Create a new attributes reader object.
- *
- * Valid meta properties:
- *
- * * format - ``OpenLayers.Format`` A parser for transforming the XHR response
- * into an array of objects representing attributes. Defaults to
- * an ``OpenLayers.Format.WFSDescribeFeatureType`` parser.
- * * ignore - ``Object`` Properties of the ignore object should be field names.
- * Values are either arrays or regular expressions.
- * * feature - ``OpenLayers.Feature.Vector`` A vector feature. If provided
- * records created by the reader will include a field named "value"
- * referencing the attribute value as set in the feature.
- */
-GeoExt.data.AttributeReader = function(meta, recordType) {
- meta = meta || {};
- if(!meta.format) {
- meta.format = new OpenLayers.Format.WFSDescribeFeatureType();
- }
- GeoExt.data.AttributeReader.superclass.constructor.call(
- this, meta, recordType || meta.fields
- );
- if(meta.feature) {
- this.recordType.prototype.fields.add(new Ext.data.Field("value"));
- }
-};
-
-Ext.extend(GeoExt.data.AttributeReader, Ext.data.DataReader, {
-
- /** private: method[read]
- * :arg request: ``Object`` The XHR object that contains the parsed doc.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Records``.
- *
- * This method is only used by a DataProxy which has retrieved data from a
- * remote server.
- */
- read: function(request) {
- var data = request.responseXML;
- if(!data || !data.documentElement) {
- data = request.responseText;
- }
- return this.readRecords(data);
- },
-
- /** private: method[readRecords]
- * :arg data: ``DOMElement or String or Array`` A document element or XHR
- * response string. As an alternative to fetching attributes data from
- * a remote source, an array of attribute objects can be provided given
- * that the properties of each attribute object map to a provided field
- * name.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Records``.
- *
- * Create a data block containing Ext.data.Records from an XML document.
- */
- readRecords: function(data) {
- var attributes;
- if(data instanceof Array) {
- attributes = data;
- } else {
- // only works with one featureType in the doc
- attributes = this.meta.format.read(data).featureTypes[0].properties;
- }
- var feature = this.meta.feature;
- var recordType = this.recordType;
- var fields = recordType.prototype.fields;
- var numFields = fields.length;
- var attr, values, name, record, ignore, value, records = [];
- for(var i=0, len=attributes.length; i -1);
- } else if(matches instanceof RegExp) {
- ignore = (matches.test(value));
- }
- }
- return ignore;
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeStore.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeStore.js
deleted file mode 100644
index 4ee81bde4fa..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/AttributeStore.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/AttributeReader.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = AttributeStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoExt.data");
-
-/**
- * Function: GeoExt.data.AttributeStoreMixin
- *
- * This function generates a mixin object to be used when extending an Ext.data.Store
- * to create an attribute store.
- *
- * (start code)
- * var AttrStore = Ext.extend(Ext.data.Store, GeoExt.data.AttributeStoreMixin);
- * var store = new AttrStore();
- * (end)
- *
- * For convenience, a GeoExt.data.AttributeStore class is available as a
- * shortcut to the Ext.extend sequence in the above code snippet. The above
- * is equivalent to:
- * (start code)
- * var store = new GeoExt.data.AttributeStore();
- * (end)
- */
-GeoExt.data.AttributeStoreMixin = function() {
- return {
- /** private */
- constructor: function(c) {
- c = c || {};
- arguments.callee.superclass.constructor.call(
- this,
- Ext.apply(c, {
- proxy: c.proxy || (!c.data ?
- new Ext.data.HttpProxy({url: c.url, disableCaching: false, method: "GET"}) :
- undefined
- ),
- reader: new GeoExt.data.AttributeReader(
- c, c.fields || ["name", "type", "restriction"]
- )
- })
- );
- if(this.feature) {
- this.bind();
- }
- },
-
- /** private: method[bind]
- */
- bind: function() {
- this.on({
- "update": this.onUpdate,
- "load": this.onLoad,
- "add": this.onAdd,
- scope: this
- });
- var records = [];
- this.each(function(record) {
- records.push(record);
- });
- this.updateFeature(records);
- },
-
- /** private: method[onUpdate]
- * :param store: ``Ext.data.Store``
- * :param record: ``Ext.data.Record``
- * :param operation: ``String``
- *
- * Handler for store update event.
- */
- onUpdate: function(store, record, operation) {
- this.updateFeature([record]);
- },
-
- /** private: method[onLoad]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param options: ``Object``
- *
- * Handler for store load event
- */
- onLoad: function(store, records, options) {
- // if options.add is true an "add" event was already
- // triggered, and onAdd already did the work of
- // adding the features to the layer.
- if(!options || options.add !== true) {
- this.updateFeature(records);
- }
- },
-
- /** private: method[onAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * Handler for store add event
- */
- onAdd: function(store, records, index) {
- this.updateFeature(records);
- },
-
- /** private: method[updateFeature]
- * :param records: ``Array(Ext.data.Record)``
- *
- * Update feature from records.
- */
- updateFeature: function(records) {
- var feature = this.feature, layer = feature.layer;
- var i, len, record, name, value, oldValue, dirty;
- for(i=0,len=records.length; i`_
- */
-Ext.namespace('GeoExt', 'GeoExt.data');
-
-/** api: example
- * Typical usage in a store:
- *
- * .. code-block:: javascript
- *
- * var store = new Ext.data.Store({
- * reader: new GeoExt.data.FeatureReader({}, [
- * {name: 'name', type: 'string'},
- * {name: 'elevation', type: 'float'}
- * ])
- * });
- *
- */
-
-/** api: constructor
- * .. class:: FeatureReader(meta, recordType)
- *
- * Data reader class to create an array of
- * :class:`GeoExt.data.FeatureRecord` objects from an
- * ``OpenLayers.Protocol.Response`` object for use in a
- * :class:`GeoExt.data.FeatureStore` object.
- */
-GeoExt.data.FeatureReader = function(meta, recordType) {
- meta = meta || {};
- if(!(recordType instanceof Function)) {
- recordType = GeoExt.data.FeatureRecord.create(
- recordType || meta.fields || {});
- }
- GeoExt.data.FeatureReader.superclass.constructor.call(
- this, meta, recordType);
-};
-
-Ext.extend(GeoExt.data.FeatureReader, Ext.data.DataReader, {
-
- /**
- * APIProperty: totalRecords
- * {Integer}
- */
- totalRecords: null,
-
- /** private: method[read]
- * :param response: ``OpenLayers.Protocol.Response``
- * :return: ``Object`` An object with two properties. The value of the
- * ``records`` property is the array of records corresponding to
- * the features. The value of the ``totalRecords" property is the
- * number of records in the array.
- *
- * This method is only used by a DataProxy which has retrieved data.
- */
- read: function(response) {
- return this.readRecords(response.features);
- },
-
- /** api: method[readRecords]
- * :param features: ``Array(OpenLayers.Feature.Vector)`` List of
- * features for creating records
- * :return: ``Object`` An object with ``records`` and ``totalRecords``
- * properties.
- *
- * Create a data block containing :class:`GeoExt.data.FeatureRecord`
- * objects from an array of features.
- */
- readRecords : function(features) {
- var records = [];
-
- if (features) {
- var recordType = this.recordType, fields = recordType.prototype.fields;
- var i, lenI, j, lenJ, feature, values, field, v;
- for (i = 0, lenI = features.length; i < lenI; i++) {
- feature = features[i];
- values = {};
- if (feature.attributes) {
- for (j = 0, lenJ = fields.length; j < lenJ; j++){
- field = fields.items[j];
- if (/[\[\.]/.test(field.mapping)) {
- try {
- v = new Function("obj", "return obj." + field.mapping)(feature.attributes);
- } catch(e){
- v = field.defaultValue;
- }
- }
- else {
- v = feature.attributes[field.mapping || field.name] || field.defaultValue;
- }
- if (field.convert) {
- v = field.convert(v);
- }
- values[field.name] = v;
- }
- }
- values.feature = feature;
- values.state = feature.state;
- values.fid = feature.fid;
-
- // newly inserted features need to be made into phantom records
- var id = (feature.state === OpenLayers.State.INSERT) ? undefined : feature.id;
- records[records.length] = new recordType(values, id);
- }
- }
-
- return {
- records: records,
- totalRecords: this.totalRecords != null ? this.totalRecords : records.length
- };
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureRecord.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureRecord.js
deleted file mode 100644
index 5c108c69987..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureRecord.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = FeatureRecord
- * base_link = `Ext.data.Record `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: FeatureRecord
- *
- * A record that represents an ``OpenLayers.Feature.Vector``. This record
- * will always have at least the following fields:
- *
- * * state ``String``
- * * fid ``String``
- *
- */
-GeoExt.data.FeatureRecord = Ext.data.Record.create([
- {name: "feature"}, {name: "state"}, {name: "fid"}
-]);
-
-/** api: method[getFeature]
- * :return: ``OpenLayers.Feature.Vector``
- *
- * Gets the feature for this record.
- */
-GeoExt.data.FeatureRecord.prototype.getFeature = function() {
- return this.get("feature");
-};
-
-/** api: method[setLayer]
- * :param layer: ``OpenLayers.Feature.Vector``
- *
- * Sets the feature for this record.
- */
-GeoExt.data.FeatureRecord.prototype.setFeature = function(feature) {
- if (feature !== this.data.feature) {
- this.dirty = true;
- if (!this.modified) {
- this.modified = {};
- }
- if (this.modified.feature === undefined) {
- this.modified.feature = this.data.feature;
- }
- this.data.feature = feature;
- if (!this.editing){
- this.afterEdit();
- }
- }
-};
-
-/** api: classmethod[create]
- * :param o: ``Array`` Field definition as in ``Ext.data.Record.create``. Can
- * be omitted if no additional fields are required.
- * :return: ``Function`` A specialized :class:`GeoExt.data.FeatureRecord`
- * constructor.
- *
- * Creates a constructor for a :class:`GeoExt.data.FeatureRecord`, optionally
- * with additional fields.
- */
-GeoExt.data.FeatureRecord.create = function(o) {
- var f = Ext.extend(GeoExt.data.FeatureRecord, {});
- var p = f.prototype;
-
- p.fields = new Ext.util.MixedCollection(false, function(field) {
- return field.name;
- });
-
- GeoExt.data.FeatureRecord.prototype.fields.each(function(f) {
- p.fields.add(f);
- });
-
- if(o) {
- for(var i = 0, len = o.length; i < len; i++){
- p.fields.add(new Ext.data.Field(o[i]));
- }
- }
-
- f.getField = function(name) {
- return p.fields.get(name);
- };
-
- return f;
-};
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureStore.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureStore.js
deleted file mode 100644
index 07dbc35e78c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/FeatureStore.js
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/FeatureReader.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = FeatureStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: FeatureStore
- *
- * A store containing :class:`GeoExt.data.FeatureRecord` entries that
- * optionally synchronizes with an ``OpenLayers.Layer.Vector``.
- */
-
-/** api: example
- * Sample code to create a store with features from a vector layer:
- *
- * .. code-block:: javascript
- *
- * var store = new GeoExt.data.FeatureStore({
- * layer: myLayer,
- * features: myFeatures
- * });
- */
-
-/**
- * Class: GeoExt.data.FeatureStoreMixin
- * A store that synchronizes a features array of an {OpenLayers.Layer.Vector} with a
- * feature store holding {} entries.
- *
- * This class can not be instantiated directly. Instead, it is meant to extend
- * {Ext.data.Store} or a subclass of it:
- * (start code)
- * var store = new (Ext.extend(Ext.data.Store, new GeoExt.data.FeatureStoreMixin))({
- * layer: myLayer,
- * features: myFeatures
- * });
- * (end)
- *
- * For convenience, a {} class is available as a
- * shortcut to the Ext.extend sequence in the above code snippet. The above
- * is equivalent to:
- * (start code)
- * var store = new GeoExt.data.FeatureStore({
- * layer: myLayer,
- * features: myFeatures
- * });
- * (end)
- */
-GeoExt.data.FeatureStoreMixin = function() {
- return {
- /** api: config[layer]
- * ``OpenLayers.Layer.Vector`` Layer to synchronize the store with.
- */
- layer: null,
-
- /** api: config[features]
- * ``Array(OpenLayers.Feature.Vector)`` Features that will be added to the
- * store (and the layer if provided).
- */
-
- /** api: config[reader]
- * ``Ext.data.DataReader`` The reader used to produce records from objects
- * features. Default is :class:`GeoExt.data.FeatureReader`.
- */
- reader: null,
-
- /** api: config[featureFilter]
- * ``OpenLayers.Filter`` This filter is evaluated before a feature
- * record is added to the store.
- */
- featureFilter: null,
-
- /** api: config[initDir]
- * ``Number`` Bitfields specifying the direction to use for the
- * initial sync between the layer and the store, if set to 0 then no
- * initial sync is done. Default is
- * ``GeoExt.data.FeatureStore.LAYER_TO_STORE|GeoExt.data.FeatureStore.STORE_TO_LAYER``.
- */
-
- /** private */
- constructor: function(config) {
- config = config || {};
- config.reader = config.reader ||
- new GeoExt.data.FeatureReader({}, config.fields);
- var layer = config.layer;
- delete config.layer;
- // 'features' option - is an alias 'data' option
- if (config.features) {
- config.data = config.features;
- }
- delete config.features;
- // "initDir" option
- var options = {initDir: config.initDir};
- delete config.initDir;
- arguments.callee.superclass.constructor.call(this, config);
- if(layer) {
- this.bind(layer, options);
- }
- },
-
- /** api: method[bind]
- * :param layer: ``OpenLayers.Layer`` Layer that the store should be
- * synchronized with.
- *
- * Bind this store to a layer instance, once bound the store
- * is synchronized with the layer and vice-versa.
- */
- bind: function(layer, options) {
- if(this.layer) {
- // already bound
- return;
- }
- this.layer = layer;
- options = options || {};
-
- var initDir = options.initDir;
- if(options.initDir == undefined) {
- initDir = GeoExt.data.FeatureStore.LAYER_TO_STORE |
- GeoExt.data.FeatureStore.STORE_TO_LAYER;
- }
-
- // create a snapshot of the layer's features
- var features = layer.features.slice(0);
-
- if(initDir & GeoExt.data.FeatureStore.STORE_TO_LAYER) {
- var records = this.getRange();
- for(var i=records.length - 1; i>=0; i--) {
- this.layer.addFeatures([records[i].getFeature()]);
- }
- }
-
- if(initDir & GeoExt.data.FeatureStore.LAYER_TO_STORE) {
- this.loadData(features, true /* append */);
- }
-
- layer.events.on({
- "featuresadded": this.onFeaturesAdded,
- "featuresremoved": this.onFeaturesRemoved,
- "featuremodified": this.onFeatureModified,
- scope: this
- });
- this.on({
- "load": this.onLoad,
- "clear": this.onClear,
- "add": this.onAdd,
- "remove": this.onRemove,
- "update": this.onUpdate,
- scope: this
- });
- },
-
- /** api: method[unbind]
- * Unbind this store from the layer it is currently bound.
- */
- unbind: function() {
- if(this.layer) {
- this.layer.events.un({
- "featuresadded": this.onFeaturesAdded,
- "featuresremoved": this.onFeaturesRemoved,
- "featuremodified": this.onFeatureModified,
- scope: this
- });
- this.un("load", this.onLoad, this);
- this.un("clear", this.onClear, this);
- this.un("add", this.onAdd, this);
- this.un("remove", this.onRemove, this);
- this.un("update", this.onUpdate, this);
-
- this.layer = null;
- }
- },
-
- /** api: method[getRecordFromFeature]
- * :arg feature: ``OpenLayers.Vector.Feature``
- * :returns: :class:`GeoExt.data.FeatureRecord` The record corresponding
- * to the given feature. Returns null if no record matches.
- *
- * Get the record corresponding to a feature.
- */
- getRecordFromFeature: function(feature) {
- var record = null;
- if(feature.state !== OpenLayers.State.INSERT) {
- record = this.getById(feature.id);
- } else {
- var index = this.findBy(function(r) {
- return r.getFeature() === feature;
- });
- if(index > -1) {
- record = this.getAt(index);
- }
- }
- return record;
- },
-
- /** private: method[onFeaturesAdded]
- * Handler for layer featuresadded event
- */
- onFeaturesAdded: function(evt) {
- if(!this._adding) {
- var features = evt.features, toAdd = features;
- if(this.featureFilter) {
- toAdd = [];
- var i, len, feature;
- for(var i=0, len=features.length; i=0; i--) {
- feature = features[i];
- record = this.getRecordFromFeature(feature);
- if(record !== undefined) {
- this._removing = true;
- this.remove(record);
- delete this._removing;
- }
- }
- }
- },
-
- /** private: method[onFeatureModified]
- * Handler for layer featuremodified event
- */
- onFeatureModified: function(evt) {
- if(!this._updating) {
- var feature = evt.feature;
- var record = this.getRecordFromFeature(feature);
- if(record !== undefined) {
- record.beginEdit();
- var attributes = feature.attributes;
- if(attributes) {
- var fields = this.recordType.prototype.fields;
- for(var i=0, len=fields.length; i 0) {
- this._adding = true;
- this.layer.addFeatures(features);
- delete this._adding;
- }
- },
-
- /** private: method[onLoad]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param options: ``Object``
- *
- * Handler for store load event
- */
- onLoad: function(store, records, options) {
- // if options.add is true an "add" event was already
- // triggered, and onAdd already did the work of
- // adding the features to the layer.
- if(!options || options.add !== true) {
- this._removing = true;
- this.layer.removeFeatures(this.layer.features);
- delete this._removing;
-
- this.addFeaturesToLayer(records);
- }
- },
-
- /** private: method[onClear]
- * :param store: ``Ext.data.Store``
- *
- * Handler for store clear event
- */
- onClear: function(store) {
- this._removing = true;
- this.layer.removeFeatures(this.layer.features);
- delete this._removing;
- },
-
- /** private: method[onAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * Handler for store add event
- */
- onAdd: function(store, records, index) {
- if(!this._adding) {
- // addFeaturesToLayer takes care of setting
- // this._adding to true and deleting it
- this.addFeaturesToLayer(records);
- }
- },
-
- /** private: method[onRemove]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * Handler for store remove event
- */
- onRemove: function(store, record, index){
- if(!this._removing) {
- var feature = record.getFeature();
- if (this.layer.getFeatureById(feature.id) != null) {
- this._removing = true;
- this.layer.removeFeatures([record.getFeature()]);
- delete this._removing;
- }
- }
- },
-
- /** private: method[onUpdate]
- * :param store: ``Ext.data.Store``
- * :param record: ``Ext.data.Record``
- * :param operation: ``String``
- *
- * Handler for update.
- */
- onUpdate: function(store, record, operation) {
- if(!this._updating) {
- /**
- * TODO: remove this if the FeatureReader adds attributes
- * for all fields that map to feature.attributes.
- * In that case, it would be sufficient to check (key in feature.attributes).
- */
- var defaultFields = new GeoExt.data.FeatureRecord().fields;
- var feature = record.getFeature();
- if(record.fields) {
- var cont = this.layer.events.triggerEvent(
- "beforefeaturemodified", {feature: feature}
- );
- if(cont !== false) {
- var attributes = feature.attributes;
- record.fields.each(
- function(field) {
- var key = field.mapping || field.name;
- if (!defaultFields.containsKey(key)) {
- attributes[key] = record.get(field.name);
- }
- }
- );
- this._updating = true;
- this.layer.events.triggerEvent(
- "featuremodified", {feature: feature}
- );
- delete this._updating;
- if (this.layer.getFeatureById(feature.id) != null) {
- this.layer.drawFeature(feature);
- }
- }
- }
- }
- }
- };
-};
-
-GeoExt.data.FeatureStore = Ext.extend(
- Ext.data.Store,
- new GeoExt.data.FeatureStoreMixin
-);
-
-/**
- * Constant: GeoExt.data.FeatureStore.LAYER_TO_STORE
- * {Integer} Constant used to make the store be automatically updated
- * when changes occur in the layer.
- */
-GeoExt.data.FeatureStore.LAYER_TO_STORE = 1;
-
-/**
- * Constant: GeoExt.data.FeatureStore.STORE_TO_LAYER
- * {Integer} Constant used to make the layer be automatically updated
- * when changes occur in the store.
- */
-GeoExt.data.FeatureStore.STORE_TO_LAYER = 2;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerReader.js
deleted file mode 100644
index b5a62c873e9..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerReader.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerRecord.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = LayerReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt", "GeoExt.data");
-
-/** api: example
- * Sample using a reader to create records from an array of layers:
- *
- * .. code-block:: javascript
- *
- * var reader = new GeoExt.data.LayerReader();
- * var layerData = reader.readRecords(map.layers);
- * var numRecords = layerData.totalRecords;
- * var layerRecords = layerData.records;
- */
-
-/** api: constructor
- * .. class:: LayerReader(meta, recordType)
- *
- * Data reader class to create an array of
- * :class:`GeoExt.data.LayerRecord` objects from an array of
- * ``OpenLayers.Layer`` objects for use in a
- * :class:`GeoExt.data.LayerStore` object.
- */
-GeoExt.data.LayerReader = function(meta, recordType) {
- meta = meta || {};
- if(!(recordType instanceof Function)) {
- recordType = GeoExt.data.LayerRecord.create(
- recordType || meta.fields || {});
- }
- GeoExt.data.LayerReader.superclass.constructor.call(
- this, meta, recordType);
-};
-
-Ext.extend(GeoExt.data.LayerReader, Ext.data.DataReader, {
-
- /** private: property[totalRecords]
- * ``Integer``
- */
- totalRecords: null,
-
- /** api: method[readRecords]
- * :param layers: ``Array(OpenLayers.Layer)`` List of layers for creating
- * records.
- * :return: ``Object`` An object with ``records`` and ``totalRecords``
- * properties.
- *
- * From an array of ``OpenLayers.Layer`` objects create a data block
- * containing :class:`GeoExt.data.LayerRecord` objects.
- */
- readRecords : function(layers) {
- var records = [];
- if(layers) {
- var recordType = this.recordType, fields = recordType.prototype.fields;
- var i, lenI, j, lenJ, layer, values, field, v;
- for(i = 0, lenI = layers.length; i < lenI; i++) {
- layer = layers[i];
- values = {};
- for(j = 0, lenJ = fields.length; j < lenJ; j++){
- field = fields.items[j];
- v = layer[field.mapping || field.name] ||
- field.defaultValue;
- v = field.convert(v);
- values[field.name] = v;
- }
- values.layer = layer;
- records[records.length] = new recordType(values, layer.id);
- }
- }
- return {
- records: records,
- totalRecords: this.totalRecords != null ? this.totalRecords : records.length
- };
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerRecord.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerRecord.js
deleted file mode 100644
index 05811208f49..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerRecord.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = LayerRecord
- * base_link = `Ext.data.Record `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: LayerRecord
- *
- * A record that represents an ``OpenLayers.Layer``. This record
- * will always have at least the following fields:
- *
- * * title ``String``
- */
-GeoExt.data.LayerRecord = Ext.data.Record.create([
- {name: "layer"},
- {name: "title", type: "string", mapping: "name"}
-]);
-
-/** api: method[getLayer]
- * :return: ``OpenLayers.Layer``
- *
- * Gets the layer for this record.
- */
-GeoExt.data.LayerRecord.prototype.getLayer = function() {
- return this.get("layer");
-};
-
-/** api: method[setLayer]
- * :param layer: ``OpenLayers.Layer``
- *
- * Sets the layer for this record.
- */
-GeoExt.data.LayerRecord.prototype.setLayer = function(layer) {
- if (layer !== this.data.layer) {
- this.dirty = true;
- if(!this.modified) {
- this.modified = {};
- }
- if(this.modified.layer === undefined) {
- this.modified.layer = this.data.layer;
- }
- this.data.layer = layer;
- if(!this.editing) {
- this.afterEdit();
- }
- }
-};
-
-/** api: method[clone]
- * :param id: ``String`` (optional) A new Record id.
- * :return: class:`GeoExt.data.LayerRecord` A new layer record.
- *
- * Creates a clone of this LayerRecord.
- */
-GeoExt.data.LayerRecord.prototype.clone = function(id) {
- var layer = this.getLayer() && this.getLayer().clone();
- return new this.constructor(
- Ext.applyIf({layer: layer}, this.data),
- id || layer.id
- );
-};
-
-/** api: classmethod[create]
- * :param o: ``Array`` Field definition as in ``Ext.data.Record.create``. Can
- * be omitted if no additional fields are required.
- * :return: ``Function`` A specialized :class:`GeoExt.data.LayerRecord`
- * constructor.
- *
- * Creates a constructor for a :class:`GeoExt.data.LayerRecord`, optionally
- * with additional fields.
- */
-GeoExt.data.LayerRecord.create = function(o) {
- var f = Ext.extend(GeoExt.data.LayerRecord, {});
- var p = f.prototype;
-
- p.fields = new Ext.util.MixedCollection(false, function(field) {
- return field.name;
- });
-
- GeoExt.data.LayerRecord.prototype.fields.each(function(f) {
- p.fields.add(f);
- });
-
- if(o) {
- for(var i = 0, len = o.length; i < len; i++){
- p.fields.add(new Ext.data.Field(o[i]));
- }
- }
-
- f.getField = function(name) {
- return p.fields.get(name);
- };
-
- return f;
-};
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerStore.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerStore.js
deleted file mode 100644
index c8e2a15c07b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/LayerStore.js
+++ /dev/null
@@ -1,442 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerReader.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = LayerStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoExt.data");
-
-/** private: constructor
- * .. class:: LayerStoreMixin
- * A store that synchronizes a layers array of an {OpenLayers.Map} with a
- * layer store holding {} entries.
- *
- * This class can not be instantiated directly. Instead, it is meant to
- * extend ``Ext.data.Store`` or a subclass of it.
- */
-
-/** private: example
- * Sample code to extend a store with the LayerStoreMixin.
- *
- * .. code-block:: javascript
- *
- * var store = new (Ext.extend(Ext.data.Store, new GeoExt.data.LayerStoreMixin))({
- * map: myMap,
- * layers: myLayers
- * });
- *
- * For convenience, a :class:`GeoExt.data.LayerStore` class is available as a
- * shortcut to the ``Ext.extend`` sequence in the above code snippet.
- */
-
-GeoExt.data.LayerStoreMixin = function() {
- return {
- /** api: config[map]
- * ``OpenLayers.Map``
- * Map that this store will be in sync with. If not provided, the
- * store will not be bound to a map.
- */
-
- /** api: property[map]
- * ``OpenLayers.Map``
- * Map that the store is synchronized with, if any.
- */
- map: null,
-
- /** api: config[layers]
- * ``Array(OpenLayers.Layer)``
- * Layers that will be added to the store (and the map, depending on the
- * value of the ``initDir`` option.
- */
-
- /** api: config[initDir]
- * ``Number``
- * Bitfields specifying the direction to use for the initial sync between
- * the map and the store, if set to 0 then no initial sync is done.
- * Defaults to ``GeoExt.data.LayerStore.MAP_TO_STORE|GeoExt.data.LayerStore.STORE_TO_MAP``
- */
-
- /** api: config[fields]
- * ``Array``
- * If provided a custom layer record type with additional fields will be
- * used. Default fields for every layer record are `layer`
- * (``OpenLayers.Layer``) `title` (``String``). The value of this option is
- * either a field definition objects as passed to the
- * :meth:`GeoExt.data.LayerRecord.create` function or a
- * :class:`GeoExt.data.LayerRecord` constructor created using
- * :meth:`GeoExt.data.LayerRecord.create`.
- */
-
- /** api: config[reader]
- * ``Ext.data.DataReader`` The reader used to produce
- * :class:`GeoExt.data.LayerRecord` objects from ``OpenLayers.Layer``
- * objects. If not provided, a :class:`GeoExt.data.LayerReader` will be
- * used.
- */
- reader: null,
-
- /** private: method[constructor]
- */
- constructor: function(config) {
- config = config || {};
- config.reader = config.reader ||
- new GeoExt.data.LayerReader({}, config.fields);
- delete config.fields;
- // "map" option
- var map = config.map instanceof GeoExt.MapPanel ?
- config.map.map : config.map;
- delete config.map;
- // "layers" option - is an alias to "data" option
- if(config.layers) {
- config.data = config.layers;
- }
- delete config.layers;
- // "initDir" option
- var options = {initDir: config.initDir};
- delete config.initDir;
- arguments.callee.superclass.constructor.call(this, config);
- if(map) {
- this.bind(map, options);
- }
- },
-
- /** private: method[bind]
- * :param map: ``OpenLayers.Map`` The map instance.
- * :param options: ``Object``
- *
- * Bind this store to a map instance, once bound the store
- * is synchronized with the map and vice-versa.
- */
- bind: function(map, options) {
- if(this.map) {
- // already bound
- return;
- }
- this.map = map;
- options = options || {};
-
- var initDir = options.initDir;
- if(options.initDir == undefined) {
- initDir = GeoExt.data.LayerStore.MAP_TO_STORE |
- GeoExt.data.LayerStore.STORE_TO_MAP;
- }
-
- // create a snapshot of the map's layers
- var layers = map.layers.slice(0);
-
- if(initDir & GeoExt.data.LayerStore.STORE_TO_MAP) {
- this.each(function(record) {
- this.map.addLayer(record.getLayer());
- }, this);
- }
- if(initDir & GeoExt.data.LayerStore.MAP_TO_STORE) {
- this.loadData(layers, true);
- }
-
- map.events.on({
- "changelayer": this.onChangeLayer,
- "addlayer": this.onAddLayer,
- "removelayer": this.onRemoveLayer,
- scope: this
- });
- this.on({
- "load": this.onLoad,
- "clear": this.onClear,
- "add": this.onAdd,
- "remove": this.onRemove,
- "update": this.onUpdate,
- scope: this
- });
- this.data.on({
- "replace" : this.onReplace,
- scope: this
- });
- },
-
- /** private: method[unbind]
- * Unbind this store from the map it is currently bound.
- */
- unbind: function() {
- if(this.map) {
- this.map.events.un({
- "changelayer": this.onChangeLayer,
- "addlayer": this.onAddLayer,
- "removelayer": this.onRemoveLayer,
- scope: this
- });
- this.un("load", this.onLoad, this);
- this.un("clear", this.onClear, this);
- this.un("add", this.onAdd, this);
- this.un("remove", this.onRemove, this);
-
- this.data.un("replace", this.onReplace, this);
-
- this.map = null;
- }
- },
-
- /** private: method[onChangeLayer]
- * :param evt: ``Object``
- *
- * Handler for layer changes. When layer order changes, this moves the
- * appropriate record within the store.
- */
- onChangeLayer: function(evt) {
- var layer = evt.layer;
- var recordIndex = this.findBy(function(rec, id) {
- return rec.getLayer() === layer;
- });
- if(recordIndex > -1) {
- var record = this.getAt(recordIndex);
- if(evt.property === "order") {
- if(!this._adding && !this._removing) {
- var layerIndex = this.map.getLayerIndex(layer);
- if(layerIndex !== recordIndex) {
- this._removing = true;
- this.remove(record);
- delete this._removing;
- this._adding = true;
- this.insert(layerIndex, [record]);
- delete this._adding;
- }
- }
- } else if(evt.property === "name") {
- record.set("title", layer.name);
- } else {
- this.fireEvent("update", this, record, Ext.data.Record.EDIT);
- }
- }
- },
-
- /** private: method[onAddLayer]
- * :param evt: ``Object``
- *
- * Handler for a map's addlayer event
- */
- onAddLayer: function(evt) {
- if(!this._adding) {
- var layer = evt.layer;
- this._adding = true;
- this.loadData([layer], true);
- delete this._adding;
- }
- },
-
- /** private: method[onRemoveLayer]
- * :param evt: ``Object``
- *
- * Handler for a map's removelayer event
- */
- onRemoveLayer: function(evt){
- //TODO replace the check for undloadDestroy with a listener for the
- // map's beforedestroy event, doing unbind(). This can be done as soon
- // as http://trac.openlayers.org/ticket/2136 is fixed.
- if(this.map.unloadDestroy) {
- if(!this._removing) {
- var layer = evt.layer;
- this._removing = true;
- this.remove(this.getById(layer.id));
- delete this._removing;
- }
- } else {
- this.unbind();
- }
- },
-
- /** private: method[onLoad]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param options: ``Object``
- *
- * Handler for a store's load event
- */
- onLoad: function(store, records, options) {
- if (!Ext.isArray(records)) {
- records = [records];
- }
- if (options && !options.add) {
- this._removing = true;
- for (var i = this.map.layers.length - 1; i >= 0; i--) {
- this.map.removeLayer(this.map.layers[i]);
- }
- delete this._removing;
-
- // layers has already been added to map on "add" event
- var len = records.length;
- if (len > 0) {
- var layers = new Array(len);
- for (var j = 0; j < len; j++) {
- layers[j] = records[j].getLayer();
- }
- this._adding = true;
- this.map.addLayers(layers);
- delete this._adding;
- }
- }
- },
-
- /** private: method[onClear]
- * :param store: ``Ext.data.Store``
- *
- * Handler for a store's clear event
- */
- onClear: function(store) {
- this._removing = true;
- for (var i = this.map.layers.length - 1; i >= 0; i--) {
- this.map.removeLayer(this.map.layers[i]);
- }
- delete this._removing;
- },
-
- /** private: method[onAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * Handler for a store's add event
- */
- onAdd: function(store, records, index) {
- if(!this._adding) {
- this._adding = true;
- var layer;
- for(var i=records.length-1; i>=0; --i) {
- layer = records[i].getLayer();
- this.map.addLayer(layer);
- if(index !== this.map.layers.length-1) {
- this.map.setLayerIndex(layer, index);
- }
- }
- delete this._adding;
- }
- },
-
- /** private: method[onRemove]
- * :param store: ``Ext.data.Store``
- * :param record: ``Ext.data.Record``
- * :param index: ``Number``
- *
- * Handler for a store's remove event
- */
- onRemove: function(store, record, index){
- if(!this._removing) {
- var layer = record.getLayer();
- if (this.map.getLayer(layer.id) != null) {
- this._removing = true;
- this.removeMapLayer(record);
- delete this._removing;
- }
- }
- },
-
- /** private: method[onUpdate]
- * :param store: ``Ext.data.Store``
- * :param record: ``Ext.data.Record``
- * :param operation: ``Number``
- *
- * Handler for a store's update event
- */
- onUpdate: function(store, record, operation) {
- if(operation === Ext.data.Record.EDIT) {
- if (record.modified && record.modified.title) {
- var layer = record.getLayer();
- var title = record.get("title");
- if(title !== layer.name) {
- layer.setName(title);
- }
- }
- }
- },
-
- /** private: method[removeMapLayer]
- * :param record: ``Ext.data.Record``
- *
- * Removes a record's layer from the bound map.
- */
- removeMapLayer: function(record){
- this.map.removeLayer(record.getLayer());
- },
-
- /** private: method[onReplace]
- * :param key: ``String``
- * :param oldRecord: ``Object`` In this case, a record that has been
- * replaced.
- * :param newRecord: ``Object`` In this case, a record that is replacing
- * oldRecord.
-
- * Handler for a store's data collections' replace event
- */
- onReplace: function(key, oldRecord, newRecord){
- this.removeMapLayer(oldRecord);
- },
-
- /** public: method[getByLayer]
- * :param layer: ``OpenLayers.Layer``
- * :return: :class:`GeoExt.data.LayerRecord` or undefined if not found
- *
- * Get the record for the specified layer
- */
- getByLayer: function(layer) {
- var index = this.findBy(function(r) {
- return r.getLayer() === layer;
- });
- if(index > -1) {
- return this.getAt(index);
- }
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- this.unbind();
- GeoExt.data.LayerStore.superclass.destroy.call(this);
- }
- };
-};
-
-/** api: example
- * Sample to create a new store containing a cache of
- * :class:`GeoExt.data.LayerRecord` instances derived from map layers.
- *
- * .. code-block:: javascript
- *
- * var store = new GeoExt.data.LayerStore({
- * map: myMap,
- * layers: myLayers
- * });
- */
-
-/** api: constructor
- * .. class:: LayerStore
- *
- * A store that contains a cache of :class:`GeoExt.data.LayerRecord`
- * objects.
- */
-GeoExt.data.LayerStore = Ext.extend(
- Ext.data.Store,
- new GeoExt.data.LayerStoreMixin
-);
-
-/**
- * Constant: GeoExt.data.LayerStore.MAP_TO_STORE
- * {Integer} Constant used to make the store be automatically updated
- * when changes occur in the map.
- */
-GeoExt.data.LayerStore.MAP_TO_STORE = 1;
-
-/**
- * Constant: GeoExt.data.LayerStore.STORE_TO_MAP
- * {Integer} Constant used to make the map be automatically updated
- * when changes occur in the store.
- */
-GeoExt.data.LayerStore.STORE_TO_MAP = 2;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintPage.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintPage.js
deleted file mode 100644
index a0903d15e66..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintPage.js
+++ /dev/null
@@ -1,328 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-Ext.namespace("GeoExt.data");
-
-/** api: (define)
- * module = GeoExt.data
- * class = PrintPage
- * base_link = `Ext.util.Observable `_
- */
-
-/** api: constructor
- * .. class:: PrintPage
- *
- * Provides a representation of a print page for
- * :class:`GeoExt.data.PrintProvider`. The extent of the page is stored as
- * ``OpenLayers.Feature.Vector``. Widgets can use this to display the print
- * extent on the map.
- */
-GeoExt.data.PrintPage = Ext.extend(Ext.util.Observable, {
-
- /** api:config[printProvider]
- * :class:`GeoExt.data.PrintProvider` The print provider to use with
- * this page.
- */
-
- /** private: property[printProvider]
- * :class:`GeoExt.data.PrintProvider`
- */
- printProvider: null,
-
- /** api: property[feature]
- * ``OpenLayers.Feature.Vector`` Feature representing the page extent. To
- * get the extent of the print page for a specific map, use
- * ``getPrintExtent``.
- * Read-only.
- */
- feature: null,
-
- /** api: property[center]
- * ``OpenLayers.LonLat`` The current center of the page. Read-only.
- */
- center: null,
-
- /** api: property[scale]
- * ``Ext.data.Record`` The current scale record of the page. Read-only.
- */
- scale: null,
-
- /** api: property[rotation]
- * ``Float`` The current rotation of the page. Read-only.
- */
- rotation: 0,
-
- /** api:config[customParams]
- * ``Object`` Key-value pairs of additional parameters that the
- * printProvider will send to the print service for this page.
- */
-
- /** api: property[customParams]
- * ``Object`` Key-value pairs of additional parameters that the
- * printProvider will send to the print service for this page.
- */
- customParams: null,
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- this.initialConfig = config;
- Ext.apply(this, config);
-
- if(!this.customParams) {
- this.customParams = {};
- }
-
- this.addEvents(
- /** api: event[change]
- * Triggered when any of the page properties have changed
- *
- * Listener arguments:
- *
- * * printPage - :class:`GeoExt.data.PrintPage` this printPage
- * * modifications - ``Object`` Object with one or more of
- * ``scale``, ``center`` and ``rotation``, notifying
- * listeners of the changed properties.
- */
- "change"
- );
-
- GeoExt.data.PrintPage.superclass.constructor.apply(this, arguments);
-
- this.feature = new OpenLayers.Feature.Vector(
- OpenLayers.Geometry.fromWKT("POLYGON((-1 -1,1 -1,1 1,-1 1,-1 -1))"));
-
- if(this.printProvider.capabilities) {
- this.setScale(this.printProvider.scales.getAt(0));
- } else {
- this.printProvider.on({
- "loadcapabilities": function() {
- this.setScale(this.printProvider.scales.getAt(0));
- },
- scope: this,
- single: true
- });
- }
-
- this.printProvider.on({
- "layoutchange": this.onLayoutChange,
- scope: this
- });
- },
-
- /** api: method[getPrintExtent]
- * :param map: ``OpenLayers.Map`` or :class:`GeoExt.MapPanel` the map to
- * get the print extent for.
- * :returns: ``OpenLayers.Bounds``
- *
- * Gets this page's print extent for the provided map.
- */
- getPrintExtent: function(map) {
- map = map instanceof GeoExt.MapPanel ? map.map : map;
- return this.calculatePageBounds(this.scale, map.getUnits());
- },
-
- /** api: method[setScale]
- * :param scale: ``Ext.data.Record`` The new scale record.
- * :param units: ``String`` map units to use for the scale calculation.
- * Optional if the ``feature`` is on a layer which is added to a map.
- * If not found, "dd" will be assumed.
- *
- * Updates the page geometry to match a given scale. Since this takes the
- * current layout of the printProvider into account, this can be used to
- * update the page geometry feature when the layout has changed.
- */
- setScale: function(scale, units) {
- var bounds = this.calculatePageBounds(scale, units);
- var geom = bounds.toGeometry();
- var rotation = this.rotation;
- if(rotation != 0) {
- geom.rotate(-rotation, geom.getCentroid());
- }
- this.updateFeature(geom, {scale: scale});
- },
-
- /** api: method[setCenter]
- * :param center: ``OpenLayers.LonLat`` The new center.
- *
- * Moves the page extent to a new center.
- */
- setCenter: function(center) {
- var geom = this.feature.geometry;
- var oldCenter = geom.getBounds().getCenterLonLat();
- var dx = center.lon - oldCenter.lon;
- var dy = center.lat - oldCenter.lat;
- geom.move(dx, dy);
- this.updateFeature(geom, {center: center});
- },
-
- /** api: method[setRotation]
- * :param rotation: ``Float`` The new rotation.
- * :param force: ``Boolean`` If set to true, the rotation will also be
- * set when the layout does not support it. Default is false.
- *
- * Sets a new rotation for the page geometry.
- */
- setRotation: function(rotation, force) {
- if(force || this.printProvider.layout.get("rotation") === true) {
- var geom = this.feature.geometry;
- geom.rotate(this.rotation - rotation, geom.getCentroid());
- this.updateFeature(geom, {rotation: rotation});
- }
- },
-
- /** api: method[fit]
- * :param fitTo: :class:`GeoExt.MapPanel` or ``OpenLayers.Map`` or ``OpenLayers.Feature.Vector``
- * The map or feature to fit the page to.
- * :param options: ``Object`` Additional options to determine how to fit
- *
- * Fits the page layout to a map or feature extent. If the map extent has
- * not been centered yet, this will do nothing.
- *
- * Available options:
- *
- * * mode - ``String`` How to calculate the print extent? If "closest",
- * the closest matching print extent will be chosen. If "printer", the
- * chosen print extent will be the closest one that can show the entire
- * ``fitTo`` extent on the printer. If "screen", it will be the closest
- * one that is entirely visible inside the ``fitTo`` extent. Default is
- * "printer".
- *
- */
- fit: function(fitTo, options) {
- options = options || {};
- var map = fitTo, extent;
- if(fitTo instanceof GeoExt.MapPanel) {
- map = fitTo.map;
- } else if(fitTo instanceof OpenLayers.Feature.Vector) {
- map = fitTo.layer.map;
- extent = fitTo.geometry.getBounds();
- }
- if(!extent) {
- extent = map.getExtent();
- if(!extent) {
- return;
- }
- }
- this._updating = true;
- var center = extent.getCenterLonLat();
- this.setCenter(center);
- var units = map.getUnits();
- var scale = this.printProvider.scales.getAt(0);
- var closest = Number.POSITIVE_INFINITY;
- var mapWidth = extent.getWidth();
- var mapHeight = extent.getHeight();
- this.printProvider.scales.each(function(rec) {
- var bounds = this.calculatePageBounds(rec, units);
- if (options.mode == "closest") {
- var diff =
- Math.abs(bounds.getWidth() - mapWidth) +
- Math.abs(bounds.getHeight() - mapHeight);
- if (diff < closest) {
- closest = diff;
- scale = rec;
- }
- } else {
- var contains = options.mode == "screen" ?
- !extent.containsBounds(bounds) :
- bounds.containsBounds(extent);
- if (contains || (options.mode == "screen" && !contains)) {
- scale = rec;
- }
- return contains;
- }
- }, this);
- this.setScale(scale, units);
- delete this._updating;
- this.updateFeature(this.feature.geometry, {
- center: center,
- scale: scale
- });
- },
-
- /** private: method[updateFeature]
- * :param geometry: ``OpenLayers.Geometry`` New geometry for the feature.
- * If not provided, the existing geometry will be left unchanged.
- * :param mods: ``Object`` An object with one or more of ``scale``,
- * ``center`` and ``rotation``, reflecting the page properties to
- * update.
- *
- * Updates the page feature with a new geometry and notifies listeners
- * of changed page properties.
- */
- updateFeature: function(geometry, mods) {
- var f = this.feature;
- var modified = f.geometry !== geometry;
- geometry.id = f.geometry.id;
- f.geometry = geometry;
-
- if(!this._updating) {
- for(var property in mods) {
- if(mods[property] === this[property]) {
- delete mods[property];
- } else {
- this[property] = mods[property];
- modified = true;
- }
- }
- Ext.apply(this, mods);
-
- f.layer && f.layer.drawFeature(f);
- modified && this.fireEvent("change", this, mods);
- }
- },
-
- /** private: method[calculatePageBounds]
- * :param scale: ``Ext.data.Record`` Scale record to calculate the page
- * bounds for.
- * :param units: ``String`` Map units to use for the scale calculation.
- * Optional if ``feature`` is added to a layer which is added to a
- * map. If not provided, "dd" will be assumed.
- * :return: ``OpenLayers.Bounds``
- *
- * Calculates the page bounds for a given scale.
- */
- calculatePageBounds: function(scale, units) {
- var s = scale.get("value");
- var f = this.feature;
- var geom = this.feature.geometry;
- var center = geom.getBounds().getCenterLonLat();
-
- var size = this.printProvider.layout.get("size");
- var units = units ||
- (f.layer && f.layer.map && f.layer.map.getUnits()) ||
- "dd";
- var unitsRatio = OpenLayers.INCHES_PER_UNIT[units];
- var w = size.width / 72 / unitsRatio * s / 2;
- var h = size.height / 72 / unitsRatio * s / 2;
-
- return new OpenLayers.Bounds(center.lon - w, center.lat - h,
- center.lon + w, center.lat + h);
- },
-
- /** private: method[onLayoutChange]
- * Handler for the printProvider's layoutchange event.
- */
- onLayoutChange: function() {
- if(this.printProvider.layout.get("rotation") === false) {
- this.setRotation(0, true);
- }
- // at init time the print provider triggers layoutchange
- // before loadcapabilities, i.e. before we set this.scale
- // to the first scale in the scales store, we need to
- // guard against that
- this.scale && this.setScale(this.scale);
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- this.printProvider.un("layoutchange", this.onLayoutChange, this);
- }
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintProvider.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintProvider.js
deleted file mode 100644
index 03b714aead9..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/PrintProvider.js
+++ /dev/null
@@ -1,736 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-Ext.namespace("GeoExt.data");
-
-/** api: (define)
- * module = GeoExt.data
- * class = PrintProvider
- * base_link = `Ext.util.Observable `_
- */
-
-/** api: example
- * Minimal code to print as much of the current map extent as possible as
- * soon as the print service capabilities are loaded, using the first layout
- * reported by the print service:
- *
- * .. code-block:: javascript
- *
- * var mapPanel = new GeoExt.MapPanel({
- * renderTo: "mappanel",
- * layers: [new OpenLayers.Layer.WMS("wms", "/geoserver/wms",
- * {layers: "topp:tasmania_state_boundaries"})],
- * center: [146.56, -41.56],
- * zoom: 7
- * });
- * var printProvider = new GeoExt.data.PrintProvider({
- * url: "/geoserver/pdf",
- * listeners: {
- * "loadcapabilities": function() {
- * var printPage = new GeoExt.data.PrintPage({
- * printProvider: printProvider
- * });
- * printPage.fit(mapPanel, true);
- * printProvider.print(mapPanel, printPage);
- * }
- * }
- * });
- */
-
-/** api: constructor
- * .. class:: PrintProvider
- *
- * Provides an interface to a Mapfish or GeoServer print module. For printing,
- * one or more instances of :class:`GeoExt.data.PrintPage` are also required
- * to tell the PrintProvider about the scale and extent (and optionally
- * rotation) of the page(s) we want to print.
- */
-GeoExt.data.PrintProvider = Ext.extend(Ext.util.Observable, {
-
- /** api: config[url]
- * ``String`` Base url of the print service. Only required if
- * ``capabilities`` is not provided. This
- * is usually something like http://path/to/mapfish/print for Mapfish,
- * and http://path/to/geoserver/pdf for GeoServer with the printing
- * extension installed. This property requires that the print service is
- * at the same origin as the application (or accessible via proxy).
- */
-
- /** private: property[url]
- * ``String`` Base url of the print service. Will always have a trailing
- * "/".
- */
- url: null,
-
- /** api: config[autoLoad]
- * ``Boolean`` If set to true, the capabilities will be loaded upon
- * instance creation, and ``loadCapabilities`` does not need to be called
- * manually. Setting this when ``capabilities`` and no ``url`` is provided
- * has no effect. Default is false.
- */
-
- /** api: config[capabilities]
- * ``Object`` Capabilities of the print service. Only required if ``url``
- * is not provided. This is the object returned by the ``info.json``
- * endpoint of the print service, and is usually obtained by including a
- * script tag pointing to
- * http://path/to/printservice/info.json?var=myvar in the head of the
- * html document, making the capabilities accessible as ``window.myvar``.
- * This property should be used when no local print service or proxy is
- * available, or when you do not listen for the ``loadcapabilities``
- * events before creating components that require the PrintProvider's
- * capabilities to be available.
- */
-
- /** private: property[capabilities]
- * ``Object`` Capabilities as returned from the print service.
- */
- capabilities: null,
-
- /** api: config[method]
- * ``String`` Either ``POST`` or ``GET`` (case-sensitive). Method to use
- * when sending print requests to the servlet. If the print service is at
- * the same origin as the application (or accessible via proxy), then
- * ``POST`` is recommended. Use ``GET`` when accessing a remote print
- * service with no proxy available, but expect issues with character
- * encoding and URLs exceeding the maximum length. Default is ``POST``.
- */
-
- /** private: property[method]
- * ``String`` Either ``POST`` or ``GET`` (case-sensitive). Method to use
- * when sending print requests to the servlet.
- */
- method: "POST",
-
- /** api: config[customParams]
- * ``Object`` Key-value pairs of custom data to be sent to the print
- * service. Optional. This is e.g. useful for complex layout definitions
- * on the server side that require additional parameters.
- */
-
- /** api: property[customParams]
- * ``Object`` Key-value pairs of custom data to be sent to the print
- * service. Optional. This is e.g. useful for complex layout definitions
- * on the server side that require additional parameters.
- */
- customParams: null,
-
- /** api: config[baseParams]
- * ``Object`` Key-value pairs of base params to be add to every
- * request to the service. Optional.
- */
-
- /** api: property[scales]
- * ``Ext.data.JsonStore`` read-only. A store representing the scales
- * available.
- *
- * Fields of records in this store:
- *
- * * name - ``String`` the name of the scale
- * * value - ``Float`` the scale denominator
- */
- scales: null,
-
- /** api: property[dpis]
- * ``Ext.data.JsonStore`` read-only. A store representing the dpis
- * available.
- *
- * Fields of records in this store:
- *
- * * name - ``String`` the name of the dpi
- * * value - ``Float`` the dots per inch
- */
- dpis: null,
-
- /** api: property[layouts]
- * ``Ext.data.JsonStore`` read-only. A store representing the layouts
- * available.
- *
- * Fields of records in this store:
- *
- * * name - ``String`` the name of the layout
- * * size - ``Object`` width and height of the map in points
- * * rotation - ``Boolean`` indicates if rotation is supported
- */
- layouts: null,
-
- /** api: property[dpi]
- * ``Ext.data.Record`` the record for the currently used resolution.
- * Read-only, use ``setDpi`` to set the value.
- */
- dpi: null,
-
- /** api: property[layout]
- * ``Ext.data.Record`` the record of the currently used layout. Read-only,
- * use ``setLayout`` to set the value.
- */
- layout: null,
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- this.initialConfig = config;
- Ext.apply(this, config);
-
- if(!this.customParams) {
- this.customParams = {};
- }
-
- this.addEvents(
- /** api: event[loadcapabilities]
- * Triggered when the capabilities have finished loading. This
- * event will only fire when ``capabilities`` is not configured.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * capabilities - ``Object`` the capabilities
- */
- "loadcapabilities",
-
- /** api: event[layoutchange]
- * Triggered when the layout is changed.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * layout - ``Ext.data.Record`` the new layout
- */
- "layoutchange",
-
- /** api: event[dpichange]
- * Triggered when the dpi value is changed.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * dpi - ``Ext.data.Record`` the new dpi record
- */
- "dpichange",
-
- /** api: event[beforeprint]
- * Triggered when the print method is called.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * map - ``OpenLayers.Map`` the map being printed
- * * pages - Array of :class:`GeoExt.data.PrintPage` the print
- * pages being printed
- * * options - ``Object`` the options to the print command
- */
- "beforeprint",
-
- /** api: event[print]
- * Triggered when the print document is opened.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * url - ``String`` the url of the print document
- */
- "print",
-
- /** api: event[printexception]
- * Triggered when using the ``POST`` method, when the print
- * backend returns an exception.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * response - ``Object`` the response object of the XHR
- */
- "printexception",
-
- /** api: event[beforeencodelayer]
- * Triggered before a layer is encoded. This can be used to
- * exclude layers from the printing, by having the listener
- * return false.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * layer - ``OpenLayers.Layer`` the layer which is about to be
- * encoded.
- */
- "beforeencodelayer",
-
- /** api: event[encodelayer]
- * Triggered when a layer is encoded. This can be used to modify
- * the encoded low-level layer object that will be sent to the
- * print service.
- *
- * Listener arguments:
- *
- * * printProvider - :class:`GeoExt.data.PrintProvider` this
- * PrintProvider
- * * layer - ``OpenLayers.Layer`` the layer which is about to be
- * encoded.
- * * encodedLayer - ``Object`` the encoded layer that will be
- * sent to the print service.
- */
- "encodelayer"
-
- );
-
- GeoExt.data.PrintProvider.superclass.constructor.apply(this, arguments);
-
- this.scales = new Ext.data.JsonStore({
- root: "scales",
- sortInfo: {field: "value", direction: "DESC"},
- fields: ["name", {name: "value", type: "float"}]
- });
-
- this.dpis = new Ext.data.JsonStore({
- root: "dpis",
- fields: ["name", {name: "value", type: "float"}]
- });
-
- this.layouts = new Ext.data.JsonStore({
- root: "layouts",
- fields: [
- "name",
- {name: "size", mapping: "map"},
- {name: "rotation", type: "boolean"}
- ]
- });
-
- if(config.capabilities) {
- this.loadStores();
- } else {
- if(this.url.split("/").pop()) {
- this.url += "/";
- }
- this.initialConfig.autoLoad && this.loadCapabilities();
- }
- },
-
- /** api: method[setLayout]
- * :param layout: ``Ext.data.Record`` the record of the layout.
- *
- * Sets the layout for this printProvider.
- */
- setLayout: function(layout) {
- this.layout = layout;
- this.fireEvent("layoutchange", this, layout);
- },
-
- /** api: method[setDpi]
- * :param dpi: ``Ext.data.Record`` the dpi record.
- *
- * Sets the dpi for this printProvider.
- */
- setDpi: function(dpi) {
- this.dpi = dpi;
- this.fireEvent("dpichange", this, dpi);
- },
-
- /** api: method[print]
- * :param map: ``GeoExt.MapPanel`` or ``OpenLayers.Map`` The map to print.
- * :param pages: ``Array`` of :class:`GeoExt.data.PrintPage` or
- * :class:`GeoExt.data.PrintPage` page(s) to print.
- * :param options: ``Object`` of additional options, see below.
- *
- * Sends the print command to the print service and opens a new window
- * with the resulting PDF.
- *
- * Valid properties for the ``options`` argument:
- *
- * * ``legend`` - :class:`GeoExt.LegendPanel` If provided, the legend
- * will be added to the print document. For the printed result to
- * look like the LegendPanel, the following ``!legends`` block
- * should be included in the ``items`` of your page layout in the
- * print module's configuration file:
- *
- * .. code-block:: none
- *
- * - !legends
- * maxIconWidth: 0
- * maxIconHeight: 0
- * classIndentation: 0
- * layerSpace: 5
- * layerFontSize: 10
- *
- * * ``overview`` - :class:`OpenLayers.Control.OverviewMap` If provided,
- * the layers for the overview map in the printout will be taken from
- * the OverviewMap control. If not provided, the print service will
- * use the main map's layers for the overview map. Applies only for
- * layouts configured to print an overview map.
- */
- print: function(map, pages, options) {
- if(map instanceof GeoExt.MapPanel) {
- map = map.map;
- }
- pages = pages instanceof Array ? pages : [pages];
- options = options || {};
- if(this.fireEvent("beforeprint", this, map, pages, options) === false) {
- return;
- }
-
- var jsonData = Ext.apply({
- units: map.getUnits(),
- srs: map.baseLayer.projection.getCode(),
- layout: this.layout.get("name"),
- dpi: this.dpi.get("value")
- }, this.customParams);
-
- var pagesLayer = pages[0].feature.layer;
- var encodedLayers = [];
- Ext.each(map.layers, function(layer){
- if(layer !== pagesLayer && layer.getVisibility() === true) {
- var enc = this.encodeLayer(layer);
- enc && encodedLayers.push(enc);
- }
- }, this);
- jsonData.layers = encodedLayers;
-
- var encodedPages = [];
- Ext.each(pages, function(page) {
- encodedPages.push(Ext.apply({
- center: [page.center.lon, page.center.lat],
- scale: page.scale.get("value"),
- rotation: page.rotation
- }, page.customParams));
- }, this);
- jsonData.pages = encodedPages;
-
- if (options.overview) {
- var encodedOverviewLayers = [];
- Ext.each(options.overview.layers, function(layer) {
- var enc = this.encodeLayer(layer);
- enc && encodedOverviewLayers.push(enc);
- }, this);
- jsonData.overviewLayers = encodedOverviewLayers;
- }
-
- if(options.legend) {
- var legend = options.legend;
- var rendered = legend.rendered;
- if (!rendered) {
- legend = legend.cloneConfig({
- renderTo: document.body,
- hidden: true
- });
- }
- var encodedLegends = [];
- legend.items.each(function(cmp) {
- if(!cmp.hidden) {
- var encFn = this.encoders.legends[cmp.getXType()];
- encodedLegends = encodedLegends.concat(
- encFn.call(this, cmp));
- }
- }, this);
- if (!rendered) {
- legend.destroy();
- }
- jsonData.legends = encodedLegends;
- }
-
- if(this.method === "GET") {
- var url = Ext.urlAppend(this.capabilities.printURL,
- "spec=" + encodeURIComponent(Ext.encode(jsonData)));
- window.open(url);
- this.fireEvent("print", this, url);
- } else {
- Ext.Ajax.request({
- url: this.capabilities.createURL,
- jsonData: jsonData,
- success: function(response) {
- // In IE, using a Content-disposition: attachment header
- // may make it hard or impossible to download the pdf due
- // to security settings. So we'll display the pdf inline.
- var url = Ext.decode(response.responseText).getURL +
- (Ext.isIE ? "?inline=true" : "");
- if(Ext.isOpera || Ext.isIE) {
- // Make sure that Opera and IE don't replace the
- // content tab with the pdf
- window.open(url);
- } else {
- // This avoids popup blockers for all other browsers
- window.location.href = url;
- }
- this.fireEvent("print", this, url);
- },
- failure: function(response) {
- this.fireEvent("printexception", this, response);
- },
- params: this.initialConfig.baseParams,
- scope: this
- });
- }
- },
-
- /** api: method[loadCapabilities]
- *
- * Loads the capabilities from the print service. If this instance is
- * configured with either ``capabilities`` or a ``url`` and ``autoLoad``
- * set to true, then this method does not need to be called from the
- * application.
- */
- loadCapabilities: function() {
- if (!this.url) {
- return;
- }
- var url = this.url + "info.json";
- Ext.Ajax.request({
- url: url,
- method: "GET",
- disableCaching: false,
- success: function(response) {
- this.capabilities = Ext.decode(response.responseText);
- this.loadStores();
- },
- params: this.initialConfig.baseParams,
- scope: this
- });
- },
-
- /** private: method[loadStores]
- */
- loadStores: function() {
- this.scales.loadData(this.capabilities);
- this.dpis.loadData(this.capabilities);
- this.layouts.loadData(this.capabilities);
-
- this.setLayout(this.layouts.getAt(0));
- this.setDpi(this.dpis.getAt(0));
- this.fireEvent("loadcapabilities", this, this.capabilities);
- },
-
- /** private: method[encodeLayer]
- * :param layer: ``OpenLayers.Layer``
- * :return: ``Object``
- *
- * Encodes a layer for the print service.
- */
- encodeLayer: function(layer) {
- var encLayer;
- for(var c in this.encoders.layers) {
- if(OpenLayers.Layer[c] && layer instanceof OpenLayers.Layer[c]) {
- if(this.fireEvent("beforeencodelayer", this, layer) === false) {
- return;
- }
- encLayer = this.encoders.layers[c].call(this, layer);
- this.fireEvent("encodelayer", this, layer, encLayer);
- break;
- }
- }
- // only return the encLayer object when we have a type. Prevents a
- // fallback on base encoders like HTTPRequest.
- return (encLayer && encLayer.type) ? encLayer : null;
- },
-
- /** private: method[getAbsoluteUrl]
- * :param url: ``String``
- * :return: ``String``
- *
- * Converts the provided url to an absolute url.
- */
- getAbsoluteUrl: function(url) {
- var a;
- if(Ext.isIE) {
- a = document.createElement("");
- a.style.display = "none";
- document.body.appendChild(a);
- a.href = a.href;
- document.body.removeChild(a);
- } else {
- a = document.createElement("a");
- a.href = url;
- }
- return a.href;
- },
-
- /** private: property[encoders]
- * ``Object`` Encoders for all print content
- */
- encoders: {
- "layers": {
- "WMS": function(layer) {
- var enc = this.encoders.layers.HTTPRequest.call(this, layer);
- Ext.apply(enc, {
- type: 'WMS',
- layers: [layer.params.LAYERS].join(",").split(","),
- format: layer.params.FORMAT,
- styles: [layer.params.STYLES].join(",").split(",")
- });
- var param;
- for(var p in layer.params) {
- param = p.toLowerCase();
- if(!layer.DEFAULT_PARAMS[param] &&
- "layers,styles,width,height,srs".indexOf(param) == -1) {
- if(!enc.customParams) {
- enc.customParams = {};
- }
- enc.customParams[p] = layer.params[p];
- }
- }
- return enc;
- },
- "OSM": function(layer) {
- var enc = this.encoders.layers.TileCache.call(this, layer);
- return Ext.apply(enc, {
- type: 'OSM',
- baseURL: enc.baseURL.substr(0, enc.baseURL.indexOf("$")),
- extension: "png"
- });
- },
- "TMS": function(layer) {
- var enc = this.encoders.layers.TileCache.call(this, layer);
- return Ext.apply(enc, {
- type: 'TMS',
- format: layer.type
- });
- },
- "TileCache": function(layer) {
- var enc = this.encoders.layers.HTTPRequest.call(this, layer);
- return Ext.apply(enc, {
- type: 'TileCache',
- layer: layer.layername,
- maxExtent: layer.maxExtent.toArray(),
- tileSize: [layer.tileSize.w, layer.tileSize.h],
- extension: layer.extension,
- resolutions: layer.serverResolutions || layer.resolutions
- });
- },
- "KaMapCache": function(layer) {
- var enc = this.encoders.layers.KaMap.call(this, layer);
- return Ext.apply(enc, {
- type: 'KaMapCache',
- // group param is mandatory when using KaMapCache
- group: layer.params['g'],
- metaTileWidth: layer.params['metaTileSize']['w'],
- metaTileHeight: layer.params['metaTileSize']['h']
- });
- },
- "KaMap": function(layer) {
- var enc = this.encoders.layers.HTTPRequest.call(this, layer);
- return Ext.apply(enc, {
- type: 'KaMap',
- map: layer.params['map'],
- extension: layer.params['i'],
- // group param is optional when using KaMap
- group: layer.params['g'] || "",
- maxExtent: layer.maxExtent.toArray(),
- tileSize: [layer.tileSize.w, layer.tileSize.h],
- resolutions: layer.serverResolutions || layer.resolutions
- });
- },
- "HTTPRequest": function(layer) {
- return {
- baseURL: this.getAbsoluteUrl(layer.url instanceof Array ?
- layer.url[0] : layer.url),
- opacity: (layer.opacity != null) ? layer.opacity : 1.0,
- singleTile: layer.singleTile
- };
- },
- "Image": function(layer) {
- return {
- type: 'Image',
- baseURL: this.getAbsoluteUrl(layer.getURL(layer.extent)),
- opacity: (layer.opacity != null) ? layer.opacity : 1.0,
- extent: layer.extent.toArray(),
- pixelSize: [layer.size.w, layer.size.h],
- name: layer.name
- };
- },
- "Vector": function(layer) {
- if(!layer.features.length) {
- return;
- }
-
- var encFeatures = [];
- var encStyles = {};
- var features = layer.features;
- var featureFormat = new OpenLayers.Format.GeoJSON();
- var styleFormat = new OpenLayers.Format.JSON();
- var nextId = 1;
- var styleDict = {};
- var feature, style, dictKey, dictItem, styleName;
- for(var i=0, len=features.length; i`_
- */
-Ext.namespace('GeoExt', 'GeoExt.data');
-
-GeoExt.data.ProtocolProxy = function(config) {
- Ext.apply(this, config);
- GeoExt.data.ProtocolProxy.superclass.constructor.apply(this, arguments);
-};
-
-/** api: constructor
- * .. class:: ProtocolProxy
- *
- * A data proxy for use with ``OpenLayers.Protocol`` objects.
- */
-Ext.extend(GeoExt.data.ProtocolProxy, Ext.data.DataProxy, {
-
- /** api: config[protocol]
- * ``OpenLayers.Protocol``
- * The protocol used to fetch features.
- */
- protocol: null,
-
- /** api: config[abortPrevious]
- * ``Boolean``
- * Abort any previous request before issuing another. Default is ``true``.
- */
- abortPrevious: true,
-
- /** api: config[setParamsAsOptions]
- * ``Boolean``
- * Should options.params be set directly on options before passing it into
- * the protocol's read method? Default is ``false``.
- */
- setParamsAsOptions: false,
-
- /** private: property[response]
- * ``OpenLayers.Protocol.Response``
- * The response returned by the read call on the protocol.
- */
- response: null,
-
- /** private: method[load]
- * :param params: ``Object`` An object containing properties which are to
- * be used as HTTP parameters for the request to the remote server.
- * :param reader: ``Ext.data.DataReader`` The Reader object which converts
- * the data object into a block of ``Ext.data.Records``.
- * :param callback: ``Function`` The function into which to pass the block
- * of ``Ext.data.Records``. The function is passed the Record block
- * object, the ``args`` argument passed to the load function, and a
- * boolean success indicator.
- * :param scope: ``Object`` The scope in which to call the callback.
- * :param arg: ``Object`` An optional argument which is passed to the
- * callback as its second parameter.
- *
- * Calls ``read`` on the protocol.
- */
- load: function(params, reader, callback, scope, arg) {
- if (this.fireEvent("beforeload", this, params) !== false) {
- var o = {
- params: params || {},
- request: {
- callback: callback,
- scope: scope,
- arg: arg
- },
- reader: reader
- };
- var cb = OpenLayers.Function.bind(this.loadResponse, this, o);
- if (this.abortPrevious) {
- this.abortRequest();
- }
- var options = {
- params: params,
- callback: cb,
- scope: this
- };
- Ext.applyIf(options, arg);
- if (this.setParamsAsOptions === true) {
- Ext.applyIf(options, options.params);
- delete options.params;
- }
- this.response = this.protocol.read(options);
- } else {
- callback.call(scope || this, null, arg, false);
- }
- },
-
- /** private: method[abortRequest]
- * Called to abort any ongoing request.
- */
- abortRequest: function() {
- if (this.response) {
- this.protocol.abort(this.response);
- this.response = null;
- }
- },
-
- /** private: method[loadResponse]
- * :param o: ``Object``
- * :param response: ``OpenLayers.Protocol.Response``
- *
- * Handle response from the protocol
- */
- loadResponse: function(o, response) {
- if (response.success()) {
- var result = o.reader.read(response);
- this.fireEvent("load", this, o, o.request.arg);
- o.request.callback.call(
- o.request.scope, result, o.request.arg, true);
- } else {
- this.fireEvent("loadexception", this, o, response);
- o.request.callback.call(
- o.request.scope, null, o.request.arg, false);
- }
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/ScaleStore.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/ScaleStore.js
deleted file mode 100644
index e1ffc74ac89..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/ScaleStore.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = ScaleStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: ScaleStore
- *
- * A store that contains a cache of available zoom levels. The store can
- * optionally be kept synchronized with an ``OpenLayers.Map`` or
- * :class:`GeoExt.MapPanel` object.
- *
- * Records have the following fields:
- *
- * * level - ``Number`` The zoom level.
- * * scale - ``Number`` The scale denominator.
- * * resolution - ``Number`` The map units per pixel.
- */
-GeoExt.data.ScaleStore = Ext.extend(Ext.data.Store, {
-
- /** api: config[map]
- * ``OpenLayers.Map`` or :class:`GeoExt.MapPanel`
- * Optional map or map panel from which to derive scale values.
- */
- map: null,
-
- /** private: method[constructor]
- * Construct a ScaleStore from a configuration. The ScaleStore accepts
- * some custom parameters addition to the fields accepted by Ext.Store.
- */
- constructor: function(config) {
- var map = (config.map instanceof GeoExt.MapPanel ? config.map.map : config.map);
- delete config.map;
- config = Ext.applyIf(config, {reader: new Ext.data.JsonReader({}, [
- "level",
- "resolution",
- "scale"
- ])});
-
- GeoExt.data.ScaleStore.superclass.constructor.call(this, config);
-
- if (map) {
- this.bind(map);
- }
- },
-
- /** api: method[bind]
- * :param map: :class:`GeoExt.MapPanel` or ``OpenLayers.Map`` Panel or map
- * to which we should bind.
- *
- * Bind this store to a map; that is, maintain the zoom list in sync with
- * the map's current configuration. If the map does not currently have a
- * set scale list, then the store will remain empty until the map is
- * configured with one.
- */
- bind: function(map, options) {
- this.map = (map instanceof GeoExt.MapPanel ? map.map : map);
- this.map.events.register('changebaselayer', this, this.populateFromMap);
- if (this.map.baseLayer) {
- this.populateFromMap();
- } else {
- this.map.events.register('addlayer', this, this.populateOnAdd);
- }
- },
-
- /** api: method[unbind]
- * Un-bind this store from the map to which it is currently bound. The
- * currently stored zoom levels will remain, but no further changes from
- * the map will affect it.
- */
- unbind: function() {
- if (this.map) {
- this.map.events.unregister('addlayer', this, this.populateOnAdd);
- this.map.events.unregister('changebaselayer', this, this.populateFromMap);
- delete this.map;
- }
- },
-
- /** private: method[populateOnAdd]
- * :param evt: ``Object``
- *
- * This method handles the case where we have bind() called on a
- * not-fully-configured map so that the zoom levels can be detected when a
- * baselayer is finally added.
- */
- populateOnAdd: function(evt) {
- if (evt.layer.isBaseLayer) {
- this.populateFromMap();
- this.map.events.unregister('addlayer', this, this.populateOnAdd);
- }
- },
-
- /** private: method[populateFromMap]
- * This method actually loads the zoom level information from the
- * OpenLayers.Map and converts it to Ext Records.
- */
- populateFromMap: function() {
- var zooms = [];
- var resolutions = this.map.baseLayer.resolutions;
- var units = this.map.baseLayer.units;
-
- for (var i=resolutions.length-1; i >= 0; i--) {
- var res = resolutions[i];
- zooms.push({
- level: i,
- resolution: res,
- scale: OpenLayers.Util.getScaleFromResolution(res, units)
- });
- }
-
- this.loadData(zooms);
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- this.unbind();
- GeoExt.data.ScaleStore.superclass.destroy.apply(this, arguments);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WFSCapabilitiesReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WFSCapabilitiesReader.js
deleted file mode 100644
index 37b6c83d5ae..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WFSCapabilitiesReader.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerRecord.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = WFSCapabilitiesReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WFSCapabilitiesReader(meta, recordType)
- *
- * :param meta: ``Object`` Reader configuration.
- * :param recordType: ``Array | Ext.data.Record`` An array of field
- * configuration objects or a record object. Default is
- * :class:`GeoExt.data.LayerRecord`.
- *
- * Data reader class to create an array of
- * :class:`GeoExt.data.LayerRecord` objects from a WFS GetCapabilities
- * response.
- */
-GeoExt.data.WFSCapabilitiesReader = function(meta, recordType) {
- meta = meta || {};
- if(!meta.format) {
- meta.format = new OpenLayers.Format.WFSCapabilities();
- }
- if(!(typeof recordType === "function")) {
- recordType = GeoExt.data.LayerRecord.create(
- recordType || meta.fields || [
- {name: "name", type: "string"},
- {name: "title", type: "string"},
- {name: "namespace", type: "string", mapping: "featureNS"},
- {name: "abstract", type: "string"}
- ]
- );
- }
- GeoExt.data.WFSCapabilitiesReader.superclass.constructor.call(
- this, meta, recordType
- );
-};
-
-Ext.extend(GeoExt.data.WFSCapabilitiesReader, Ext.data.DataReader, {
-
- /** private: method[read]
- * :param request: ``Object`` The XHR object which contains the parsed XML
- * document.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- */
- read: function(request) {
- var data = request.responseXML;
- if(!data || !data.documentElement) {
- data = request.responseText;
- }
- return this.readRecords(data);
- },
-
- /** private: method[readRecords]
- * :param data: ``DOMElement | String | Object`` A document element or XHR
- * response string. As an alternative to fetching capabilities data
- * from a remote source, an object representing the capabilities can
- * be provided given that the structure mirrors that returned from the
- * capabilities parser.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- *
- * Create a data block containing Ext.data.Records from an XML document.
- */
- readRecords: function(data) {
- if(typeof data === "string" || data.nodeType) {
- data = this.meta.format.read(data);
- }
-
- var featureTypes = data.featureTypeList.featureTypes;
- var fields = this.recordType.prototype.fields;
-
- var featureType, values, field, v, parts, layer, values;
- var layerOptions, protocolOptions;
-
- var protocolDefaults = {
- url: data.capability.request.getfeature.href.post
- };
-
- var records = [];
-
- for(var i=0, lenI=featureTypes.length; i`_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WFSCapabilitiesStore
- *
- * Small helper class to make creating stores for remote WFS layer data
- * easier. The store is pre-configured with a built-in
- * ``Ext.data.HttpProxy`` and :class:`GeoExt.data.WFSCapabilitiesReader`.
- * The proxy is configured to allow caching and issues requests via GET.
- * If you require some other proxy/reader combination then you'll have to
- * configure this with your own proxy or create a basic
- * :class:`GeoExt.data.LayerStore` and configure as needed.
- */
-
-/** api: config[format]
- * ``OpenLayers.Format``
- * A parser for transforming the XHR response into an array of objects
- * representing attributes. Defaults to an ``OpenLayers.Format.WFSCapabilities``
- * parser.
- */
-
-/** api: config[fields]
- * ``Array | Function``
- * Either an Array of field definition objects as passed to
- * ``Ext.data.Record.create``, or a record constructor created using
- * ``Ext.data.Record.create``. Defaults to ``["name", "type"]``.
- */
-
-GeoExt.data.WFSCapabilitiesStore = function(c) {
- c = c || {};
- GeoExt.data.WFSCapabilitiesStore.superclass.constructor.call(
- this,
- Ext.apply(c, {
- proxy: c.proxy || (!c.data ?
- new Ext.data.HttpProxy({url: c.url, disableCaching: false, method: "GET"}) :
- undefined
- ),
- reader: new GeoExt.data.WFSCapabilitiesReader(
- c, c.fields
- )
- })
- );
-};
-Ext.extend(GeoExt.data.WFSCapabilitiesStore, Ext.data.Store);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMCReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMCReader.js
deleted file mode 100644
index 14add131977..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMCReader.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerRecord.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = WMCReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WMCReader(meta, recordType)
- *
- * :param meta: ``Object`` Reader configuration.
- * :param recordType: ``Array | Ext.data.Record`` An array of field
- * configuration objects or a record object. Default is
- * :class:`GeoExt.data.LayerRecord`.
- *
- * Data reader class to create an array of
- * :class:`GeoExt.data.LayerRecord` objects from a WMS GetCapabilities
- * response.
- */
-GeoExt.data.WMCReader = function(meta, recordType) {
- meta = meta || {};
- if(!meta.format) {
- meta.format = new OpenLayers.Format.WMC();
- }
- if(!(typeof recordType === "function")) {
- recordType = GeoExt.data.LayerRecord.create(
- recordType || meta.fields || [
- // give only non-OpenLayers fields as default recordType
- {name: "abstract", type: "string"},
- {name: "metadataURL", type: "string"},
- {name: "queryable", type: "boolean"},
- {name: "formats"}, // array
- {name: "styles"} // array
- ]
- );
- }
- GeoExt.data.WMCReader.superclass.constructor.call(
- this, meta, recordType
- );
-};
-
-Ext.extend(GeoExt.data.WMCReader, Ext.data.DataReader, {
-
- /** private: method[read]
- * :param request: ``Object`` The XHR object which contains the parsed XML
- * document.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- */
- read: function(request) {
- var data = request.responseXML;
- if(!data || !data.documentElement) {
- data = request.responseText;
- }
- return this.readRecords(data);
- },
-
- /** private: method[readRecords]
- * :param data: ``DOMElement | String | Object`` A document element or XHR
- * response string. As an alternative to fetching capabilities data
- * from a remote source, an object representing the capabilities can
- * be provided given that the structure mirrors that returned from the
- * capabilities parser.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- *
- * Create a data block containing Ext.data.Records from an XML document.
- */
- readRecords: function(data) {
- var format = this.meta.format;
- if(typeof data === "string" || data.nodeType) {
- data = format.read(data);
- }
- var layersContext = data ? data.layersContext : undefined;
- var records = [];
-
- if(layersContext) {
- var recordType = this.recordType, fields = recordType.prototype.fields;
- var i, lenI, j, lenJ, layerContext, values, field, v;
- for (i = 0, lenI = layersContext.length; i < lenI; i++) {
- layerContext = layersContext[i];
- values = {};
- for(j = 0, lenJ = fields.length; j < lenJ; j++){
- field = fields.items[j];
- v = layerContext[field.mapping || field.name] ||
- field.defaultValue;
- v = field.convert(v);
- values[field.name] = v;
- }
- values.layer = format.getLayerFromContext(layerContext);
- records.push(new this.recordType(values, values.layer.id));
- }
- }
-
- return {
- totalRecords: records.length,
- success: true,
- records: records
- };
-
- }
-
-});
-
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesReader.js
deleted file mode 100644
index 26b4e75ab50..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesReader.js
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerRecord.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = WMSCapabilitiesReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WMSCapabilitiesReader(meta, recordType)
- *
- * :param meta: ``Object`` Reader configuration from which:
- * ``layerOptions`` is an optional object passed as default options
- * to the ``OpenLayers.Layer.WMS`` constructor.
- * ``layerParams`` is an optional set of parameters to pass into the
- * ``OpenLayers.Layer.WMS`` constructor.
- * :param recordType: ``Array | Ext.data.Record`` An array of field
- * configuration objects or a record object. Default is
- * :class:`GeoExt.data.LayerRecord` with the following fields:
- * name, title, abstract, queryable, opaque, noSubsets, cascaded,
- * fixedWidth, fixedHeight, minScale, maxScale, prefix, formats,
- * styles, srs, dimensions, bbox, llbbox, attribution, keywords,
- * identifiers, authorityURLs, metadataURLs.
- * The type of these fields is the same as for the matching fields in
- * the object returned from
- * ``OpenLayers.Format.WMSCapabilities::read()``.
- *
- * Data reader class to create an array of
- * :class:`GeoExt.data.LayerRecord` objects from a WMS GetCapabilities
- * response.
- */
-GeoExt.data.WMSCapabilitiesReader = function(meta, recordType) {
- meta = meta || {};
- if(!meta.format) {
- meta.format = new OpenLayers.Format.WMSCapabilities();
- }
- if(typeof recordType !== "function") {
- recordType = GeoExt.data.LayerRecord.create(
- recordType || meta.fields || [
- {name: "name", type: "string"},
- {name: "title", type: "string"},
- {name: "abstract", type: "string"},
- {name: "queryable", type: "boolean"},
- {name: "opaque", type: "boolean"},
- {name: "noSubsets", type: "boolean"},
- {name: "cascaded", type: "int"},
- {name: "fixedWidth", type: "int"},
- {name: "fixedHeight", type: "int"},
- {name: "minScale", type: "float"},
- {name: "maxScale", type: "float"},
- {name: "prefix", type: "string"},
- {name: "formats"}, // array
- {name: "styles"}, // array
- {name: "srs"}, // object
- {name: "dimensions"}, // object
- {name: "bbox"}, // object
- {name: "llbbox"}, // array
- {name: "attribution"}, // object
- {name: "keywords"}, // array
- {name: "identifiers"}, // object
- {name: "authorityURLs"}, // object
- {name: "metadataURLs"} // array
- ]
- );
- }
- GeoExt.data.WMSCapabilitiesReader.superclass.constructor.call(
- this, meta, recordType
- );
-};
-
-Ext.extend(GeoExt.data.WMSCapabilitiesReader, Ext.data.DataReader, {
-
-
- /** api: config[attributionCls]
- * ``String`` CSS class name for the attribution DOM elements.
- * Element class names append "-link", "-image", and "-title" as
- * appropriate. Default is "gx-attribution".
- */
- attributionCls: "gx-attribution",
-
- /** private: method[read]
- * :param request: ``Object`` The XHR object which contains the parsed XML
- * document.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- */
- read: function(request) {
- var data = request.responseXML;
- if(!data || !data.documentElement) {
- data = request.responseText;
- }
- return this.readRecords(data);
- },
-
- /** private: method[serviceExceptionFormat]
- * :param formats: ``Array`` An array of service exception format strings.
- * :return: ``String`` The (supposedly) best service exception format.
- */
- serviceExceptionFormat: function(formats) {
- if (OpenLayers.Util.indexOf(formats,
- "application/vnd.ogc.se_inimage")>-1) {
- return "application/vnd.ogc.se_inimage";
- }
- if (OpenLayers.Util.indexOf(formats,
- "application/vnd.ogc.se_xml")>-1) {
- return "application/vnd.ogc.se_xml";
- }
- return formats[0];
- },
-
- /** private: method[imageFormat]
- * :param layer: ``Object`` The layer's capabilities object.
- * :return: ``String`` The (supposedly) best mime type for requesting
- * tiles.
- */
- imageFormat: function(layer) {
- var formats = layer.formats;
- if (layer.opaque &&
- OpenLayers.Util.indexOf(formats, "image/jpeg")>-1) {
- return "image/jpeg";
- }
- if (OpenLayers.Util.indexOf(formats, "image/png")>-1) {
- return "image/png";
- }
- if (OpenLayers.Util.indexOf(formats, "image/png; mode=24bit")>-1) {
- return "image/png; mode=24bit";
- }
- if (OpenLayers.Util.indexOf(formats, "image/gif")>-1) {
- return "image/gif";
- }
- return formats[0];
- },
-
- /** private: method[imageTransparent]
- * :param layer: ``Object`` The layer's capabilities object.
- * :return: ``Boolean`` The TRANSPARENT param.
- */
- imageTransparent: function(layer) {
- return layer.opaque == undefined || !layer.opaque;
- },
-
- /** private: method[readRecords]
- * :param data: ``DOMElement | String | Object`` A document element or XHR
- * response string. As an alternative to fetching capabilities data
- * from a remote source, an object representing the capabilities can
- * be provided given that the structure mirrors that returned from the
- * capabilities parser.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- *
- * Create a data block containing Ext.data.Records from an XML document.
- */
- readRecords: function(data) {
- if(typeof data === "string" || data.nodeType) {
- data = this.meta.format.read(data);
- }
- var version = data.version;
- var capability = data.capability || {};
- var url = capability.request && capability.request.getmap &&
- capability.request.getmap.href;
- var layers = capability.layers;
- var formats = capability.exception ? capability.exception.formats : [];
- var exceptions = this.serviceExceptionFormat(formats);
- var records = [];
-
- if(url && layers) {
- var fields = this.recordType.prototype.fields;
- var layer, values, options, params, field, v;
-
- for(var i=0, lenI=layers.length; i");
- }
-
- if (attribution.title) {
- markup.push(""
- + attribution.title
- + "");
- }
-
- if(attribution.href){
- for(var i = 0; i < markup.length; i++){
- markup[i] = ""
- + markup[i]
- + "";
- }
- }
-
- return markup.join(" ");
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesStore.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesStore.js
deleted file mode 100644
index 361dc5cd53c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSCapabilitiesStore.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/WMSCapabilitiesReader.js
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = WMSCapabilitiesStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WMSCapabilitiesStore
- *
- * Small helper class to make creating stores for remote WMS layer data
- * easier. The store is pre-configured with a built-in
- * ``Ext.data.HttpProxy`` and :class:`GeoExt.data.WMSCapabilitiesReader`.
- * The proxy is configured to allow caching and issues requests via GET.
- * If you require some other proxy/reader combination then you'll have to
- * configure this with your own proxy or create a basic
- * :class:`GeoExt.data.LayerStore` and configure as needed.
- */
-
-/** api: config[format]
- * ``OpenLayers.Format``
- * A parser for transforming the XHR response into an array of objects
- * representing attributes. Defaults to an ``OpenLayers.Format.WMSCapabilities``
- * parser.
- */
-
-/** api: config[fields]
- * ``Array | Function``
- * Either an Array of field definition objects as passed to
- * ``Ext.data.Record.create``, or a record constructor created using
- * ``Ext.data.Record.create``. Defaults to ``["name", "type"]``.
- */
-
-GeoExt.data.WMSCapabilitiesStore = function(c) {
- c = c || {};
- GeoExt.data.WMSCapabilitiesStore.superclass.constructor.call(
- this,
- Ext.apply(c, {
- proxy: c.proxy || (!c.data ?
- new Ext.data.HttpProxy({url: c.url, disableCaching: false, method: "GET"}) :
- undefined
- ),
- reader: new GeoExt.data.WMSCapabilitiesReader(
- c, c.fields
- )
- })
- );
-};
-Ext.extend(GeoExt.data.WMSCapabilitiesStore, Ext.data.Store);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSDescribeLayerReader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSDescribeLayerReader.js
deleted file mode 100644
index b4f78e136c5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/data/WMSDescribeLayerReader.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.data
- * class = WMSDescribeLayerReader
- * base_link = `Ext.data.DataReader `_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WMSDescribeLayerReader(meta, recordType)
- *
- * :param meta: ``Object`` Reader configuration.
- * :param recordType: ``Array | Ext.data.Record`` An array of field
- * configuration objects or a record object. Default has
- * fields for owsType, owsURL, and typeName.
- *
- * Data reader class to create an array of
- * layer description objects from a WMS DescribeLayer
- * response.
- */
-GeoExt.data.WMSDescribeLayerReader = function(meta, recordType) {
- meta = meta || {};
- if(!meta.format) {
- meta.format = new OpenLayers.Format.WMSDescribeLayer();
- }
- if(!(typeof recordType === "function")) {
- recordType = Ext.data.Record.create(
- recordType || meta.fields || [
- {name: "owsType", type: "string"},
- {name: "owsURL", type: "string"},
- {name: "typeName", type: "string"}
- ]
- );
- }
- GeoExt.data.WMSDescribeLayerReader.superclass.constructor.call(
- this, meta, recordType
- );
-};
-
-Ext.extend(GeoExt.data.WMSDescribeLayerReader, Ext.data.DataReader, {
-
- /** private: method[read]
- * :param request: ``Object`` The XHR object which contains the parsed XML
- * document.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- */
- read: function(request) {
- var data = request.responseXML;
- if(!data || !data.documentElement) {
- data = request.responseText;
- }
- return this.readRecords(data);
- },
-
- /** private: method[readRecords]
- * :param data: ``DOMElement | Strint | Object`` A document element or XHR
- * response string. As an alternative to fetching layer description data
- * from a remote source, an object representing the layer descriptions can
- * be provided given that the structure mirrors that returned from the
- * layer description parser.
- * :return: ``Object`` A data block which is used by an ``Ext.data.Store``
- * as a cache of ``Ext.data.Record`` objects.
- *
- * Create a data block containing Ext.data.Records from an XML document.
- */
- readRecords: function(data) {
-
- if(typeof data === "string" || data.nodeType) {
- data = this.meta.format.read(data);
- }
- var records = [], description;
- for(var i=0, len=data.length; i`_
- */
-Ext.namespace("GeoExt.data");
-
-/** api: constructor
- * .. class:: WMSDescribeLayerStore
- *
- * Small helper class to make creating stores for remote WMS layer description
- * easier. The store is pre-configured with a built-in
- * ``Ext.data.HttpProxy`` and :class:`GeoExt.data.WMSDescribeLayerReader`.
- * The proxy is configured to allow caching and issues requests via GET.
- * If you require some other proxy/reader combination then you'll have to
- * configure this with your own proxy or create a basic
- * store and configure as needed.
- */
-
-/** api: config[format]
- * ``OpenLayers.Format``
- * A parser for transforming the XHR response into an array of objects
- * representing attributes. Defaults to an ``OpenLayers.Format.WMSDescribeLayer``
- * parser.
- */
-
-/** api: config[fields]
- * ``Array | Function``
- * Either an Array of field definition objects as passed to
- * ``Ext.data.Record.create``, or a record constructor created using
- * ``Ext.data.Record.create``. Defaults to ``["name", "type"]``.
- */
-
-GeoExt.data.WMSDescribeLayerStore = function(c) {
- c = c || {};
- GeoExt.data.WMSDescribeLayerStore.superclass.constructor.call(
- this,
- Ext.apply(c, {
- proxy: c.proxy || (!c.data ?
- new Ext.data.HttpProxy({url: c.url, disableCaching: false, method: "GET"}) :
- undefined
- ),
- reader: new GeoExt.data.WMSDescribeLayerReader(
- c, c.fields
- )
- })
- );
-};
-Ext.extend(GeoExt.data.WMSDescribeLayerStore, Ext.data.Store);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/AttributeForm.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/AttributeForm.js
deleted file mode 100644
index f0a0ac158a3..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/AttributeForm.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/*
- * @include GeoExt/widgets/form.js
- */
-
-Ext.namespace("GeoExt.plugins");
-
-/** api: (define)
- * module = GeoExt.plugins
- * class = AttributeForm
- */
-
-/** api: example
- * Sample code showing how to use an Ext form panel as a feature
- * attribute form (for editing features for example).
- *
- * .. code-block:: javascript
- *
- * var formPanel = new Ext.form.FormPanel({
- * autoScroll: true,
- * height: 300,
- * width: 350,
- * defaults: {
- * maxLengthText: "too long",
- * minLengthText: "too short"
- * }
- * plugins: [
- * new GeoExt.plugins.AttributeForm({
- * attributeStore: new GeoExt.data.AttributeStore({
- * url: "http://some.wfs",
- * baseParams: {
- * "SERVICE": "WFS",
- * "VERSION": "1.1.0",
- * "REQUEST": "DescribeFeatureType",
- * "TYPENAME": "the_typename"
- * }
- * })
- * })
- * ]
- * });
- */
-
-/** api: constructor
- * .. class:: AttributeForm
- *
- * This plugin allows creating form items from attribute records
- * and fill a form panel with these items.
- */
-
-GeoExt.plugins.AttributeForm = function(config) {
- Ext.apply(this, config);
-};
-
-GeoExt.plugins.AttributeForm.prototype = {
-
- /** api: config[attributeStore]
- * ``Ext.data.Store`` The attribute store to bind to this plugin.
- * It can be any Ext store configured with a
- * :class:`GeoExt.data.AttributeReader`. If set form items
- * will be created from the attribute records in the form. In
- * most cases this store will be a :class:`GeoExt.data.AttributeStore`.
- */
- /** private: property[attributeStore]
- * ``Ext.data.Store`` The attribute store.
- */
- attributeStore: null,
-
- /** private: property[formPanel]
- * ``Ext.form.FormPanel`` This form panel.
- */
- formPanel: null,
-
- /** private: method[init]
- * :param formPanel: class:`Ext.form.FormPanel`
- *
- * Initializes the plugin.
- */
- init: function(formPanel) {
- this.formPanel = formPanel;
- if(this.attributeStore instanceof Ext.data.Store) {
- this.fillForm();
- this.bind(this.attributeStore);
- }
- formPanel.on("destroy", this.onFormDestroy, this);
- },
-
- /** private: method[bind]
- * :param store: ``Ext.data.Store`` The attribute store this form panel
- * is to be bound to.
- *
- * Bind the panel to the attribute store passed as a parameter.
- */
- bind: function(store) {
- this.unbind();
- store.on({
- "load": this.onLoad,
- scope: this
- });
- this.attributeStore = store;
- },
-
- /** private: method[unbind]
- *
- * Unbind the panel from the attribute store it is currently bound
- * to, if any.
- */
- unbind: function() {
- if(this.attributeStore) {
- this.attributeStore.un("load", this.onLoad, this);
- }
- },
-
- /** private: method[onLoad]
- *
- * Callback called when the store is loaded.
- */
- onLoad: function() {
- if(this.formPanel.items) {
- this.formPanel.removeAll();
- }
- this.fillForm();
- },
-
- /** private: method[fillForm]
- *
- * For each attribute record in the attribute store create
- * a form field and add it to the form.
- */
- fillForm: function() {
- this.attributeStore.each(function(record) {
- var field = GeoExt.form.recordToField(record);
- if(field) {
- this.formPanel.add(field);
- }
- }, this);
- this.formPanel.doLayout();
- },
-
- /** private: method[onFormDestroy]
- */
- onFormDestroy: function() {
- this.unbind();
- }
-};
-
-/** api: ptype = gx_attributeform */
-Ext.preg("gx_attributeform", GeoExt.plugins.AttributeForm);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintExtent.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintExtent.js
deleted file mode 100644
index 8e1ac5cb8ef..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintExtent.js
+++ /dev/null
@@ -1,400 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-Ext.namespace("GeoExt.plugins");
-
-/** api: (define)
- * module = GeoExt.plugins
- * class = PrintExtent
- */
-
-/** api: example
- * Sample code to create a MapPanel with a PrintExtent, and print it
- * immediately:
- *
- * .. code-block:: javascript
- *
- * var printExtent = new GeoExt.plugins.PrintExtent({
- * printProvider: new GeoExt.data.PrintProvider({
- * capabilities: printCapabilities
- * })
- * });
- *
- * var mapPanel = new GeoExt.MapPanel({
- * border: false,
- * renderTo: "div-id",
- * layers: [new OpenLayers.Layer.WMS("Tasmania", "http://demo.opengeo.org/geoserver/wms",
- * {layers: "topp:tasmania_state_boundaries"}, {singleTile: true})],
- * center: [146.56, -41.56],
- * zoom: 6,
- * plugins: printExtent
- * });
- *
- * printExtent.addPage();
- *
- * // print the map
- * printExtent.print();
- */
-
-/** api: constructor
- * .. class:: PrintExtent
- *
- * Provides a way to show and modify the extents of print pages on the map. It
- * uses a layer to render the page extent and handle features of print pages,
- * and provides a control to modify them. Must be set as a plugin to a
- * :class:`GeoExt.MapPanel`.
- */
-GeoExt.plugins.PrintExtent = Ext.extend(Ext.util.Observable, {
-
- /** private: initialConfig
- * ``Object`` Holds the initial config object passed to the
- * constructor.
- */
- initialConfig: null,
-
- /** api: config[printProvider]
- * :class:`GeoExt.data.PrintProvider` The print provider this form
- * is connected to. Optional if pages are provided.
- */
- /** api: property[printProvider]
- * :class:`GeoExt.data.PrintProvider` The print provider this form
- * is connected to. Read-only.
- */
- printProvider: null,
-
- /** private: property[map]
- * ``OpenLayers.Map`` The map the layer and control are added to.
- */
- map: null,
-
- /** api: config[layer]
- * ``OpenLayers.Layer.Vector`` The layer used to render extent and handle
- * features to. Optional, will be created if not provided.
- */
- /** private: property[layer]
- * ``OpenLayers.Layer.Vector`` The layer used to render extent and handle
- * features to.
- */
- layer: null,
-
- /** private: property[control]
- * ``OpenLayers.Control.TransformFeature`` The control used to change
- * extent, center, rotation and scale.
- */
- control: null,
-
- /** api: config[pages]
- * Array of :class:`GeoExt.data.PrintPage` The pages that this plugin
- * controls. Optional. If not provided, it will be created with one page
- * that is completely contained within the visible map extent.
- *
- * .. note:: All pages must use the same PrintProvider.
- */
- /** api: property[pages]
- * Array of :class:`GeoExt.data.PrintPage` The pages that this component
- * controls. Read-only.
- */
- pages: null,
-
- /** api: property[page]
- * :class:`GeoExt.data.PrintPage` The page currently set for
- * transformation.
- */
- page: null,
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- config = config || {};
-
- Ext.apply(this, config);
- this.initialConfig = config;
-
- if(!this.printProvider) {
- this.printProvider = this.pages[0].printProvider;
- }
-
- if(!this.pages) {
- this.pages = [];
- }
-
- this.addEvents(
- /** api: event[selectpage]
- * Triggered when a page has been selected using the control
- *
- * Listener arguments:
- * * printPage - :class:`GeoExt.data.PrintPage` this printPage
- */
- "selectpage"
- );
-
- GeoExt.plugins.PrintExtent.superclass.constructor.apply(this, arguments);
- },
-
- /** api: method[print]
- * :param options: ``Object`` Options to send to the PrintProvider's
- * print method. See :class:`GeoExt.data.PrintProvider` :: ``print``.
- *
- * Prints all pages as shown on the map.
- */
- print: function(options) {
- this.printProvider.print(this.map, this.pages, options);
- },
-
- /** private: method[init]
- * :param mapPanel: class:`GeoExt.MapPanel`
- *
- * Initializes the plugin.
- */
- init: function(mapPanel) {
- this.map = mapPanel.map;
- mapPanel.on("destroy", this.onMapPanelDestroy, this);
-
- if (!this.layer) {
- this.layer = new OpenLayers.Layer.Vector(null, {
- displayInLayerSwitcher: false
- });
- }
- this.createControl();
-
- for(var i=0, len=this.pages.length; i=0; i--) {
- this.removePage(this.pages[i]);
- }
-
- this.hide();
-
- var control = this.control;
- if(map && map.events &&
- control && control.events) {
- control.destroy();
- }
-
- var layer = this.layer;
- if(!this.initialConfig.layer &&
- map && map.events &&
- layer && layer.events) {
- layer.destroy();
- }
-
- delete this.layer;
- delete this.control;
- delete this.page;
- this.map = null;
- },
-
- /** private: method[createControl]
- */
- createControl: function() {
- this.control = new OpenLayers.Control.TransformFeature(this.layer, {
- preserveAspectRatio: true,
- eventListeners: {
- "beforesetfeature": function(e) {
- for(var i=0, len=this.pages.length; i`_
- */
-
-/** api: example
- * A form with a combo box for the scale and text fields for rotation and a
- * page title. The page title is a custom parameter of the print module's
- * page configuration:
- *
- * .. code-block:: javascript
- *
- * var printPage = new GeoExt.data.PrintPage({
- * printProvider: new GeoExt.data.PrintProvider({
- * capabilities: printCapabilities
- * })
- * });
- * new Ext.form.FormPanel({
- * renderTo: "form",
- * width: 200,
- * height: 300,
- * items: [{
- * xtype: "combo",
- * displayField: "name",
- * store: printPage.scales, // printPage.scale
- * name: "scale",
- * fieldLabel: "Scale",
- * typeAhead: true,
- * mode: "local",
- * forceSelection: true,
- * triggerAction: "all",
- * selectOnFocus: true,
- * plugins: new GeoExt.plugins.PrintPageField({
- * printPage: printPage
- * })
- * }, {
- * xtype: "textfield",
- * name: "rotation", // printPage.rotation
- * fieldLabel: "Rotation",
- * plugins: new GeoExt.plugins.PrintPageField({
- * printPage: printPage
- * })
- * }, {
- * xtype: "textfield",
- * name: "mapTitle", // printPage.customParams["mapTitle"]
- * fieldLabel: "Map Title",
- * plugins: new GeoExt.plugins.PrintPageField({
- * printPage: printPage
- * })
- * }]
- * });
- */
-
-/** api: constructor
- * .. class:: PrintPageField
- *
- * A plugin for ``Ext.form.Field`` components which provides synchronization
- * with a :class:`GeoExt.data.PrintPage`. The field name has to match the
- * respective property of the printPage (e.g. ``scale``, ``rotation``).
- */
-GeoExt.plugins.PrintPageField = Ext.extend(Ext.util.Observable, {
-
- /** api: config[printPage]
- * ``GeoExt.data.PrintPage`` The print page to synchronize with.
- */
-
- /** private: property[printPage]
- * ``GeoExt.data.PrintPage`` The print page to synchronize with.
- * Read-only.
- */
- printPage: null,
-
- /** private: property[target]
- * ``Ext.form.Field`` This plugin's target field.
- */
- target: null,
-
- /** private: method[constructor]
- */
- constructor: function(config) {
- this.initialConfig = config;
- Ext.apply(this, config);
-
- GeoExt.plugins.PrintPageField.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[init]
- * :param target: ``Ext.form.Field`` The component that this plugin
- * extends.
- * @param {Object} target
- */
- init: function(target) {
- this.target = target;
- var onCfg = {
- "beforedestroy": this.onBeforeDestroy,
- scope: this
- };
- var eventName = target instanceof Ext.form.ComboBox ?
- "select" : target instanceof Ext.form.Checkbox ?
- "check" : "valid";
- onCfg[eventName] = this.onFieldChange;
- target.on(onCfg);
- this.printPage.on({
- "change": this.onPageChange,
- scope: this
- });
- this.printPage.printProvider.on({
- "layoutchange": this.onLayoutChange,
- scope: this
- });
- this.setValue(this.printPage);
- },
-
- /** private: method[onFieldChange]
- * :param field: ``Ext.form.Field``
- * :param record: ``Ext.data.Record`` Optional.
- *
- * Handler for the target field's "valid" or "select" event.
- */
- onFieldChange: function(field, record) {
- var printProvider = this.printPage.printProvider;
- var value = field.getValue();
- this._updating = true;
- if(field.store === printProvider.scales || field.name === "scale") {
- this.printPage.setScale(record);
- } else if(field.name == "rotation") {
- !isNaN(value) && this.printPage.setRotation(value);
- } else {
- this.printPage.customParams[field.name] = value;
- }
- delete this._updating;
- },
-
- /** private: method[onPageChange]
- * :param printPage: :class:`GeoExt.data.PrintPage`
- *
- * Handler for the "change" event for the page this plugin is configured
- * with.
- */
- onPageChange: function(printPage) {
- if(!this._updating) {
- this.setValue(printPage);
- }
- },
-
- /** private: method[onPageChange]
- * :param printProvider: :class:`GeoExt.data.PrintProvider`
- * :param layout: ``Ext.Record``
- *
- * Handler for the "layoutchange" event of the printProvider.
- */
- onLayoutChange: function(printProvider, layout) {
- var t = this.target;
- t.name == "rotation" && t.setDisabled(!layout.get("rotation"));
- },
-
- /** private: method[setValue]
- * :param printPage: :class:`GeoExt.data.PrintPage`
- *
- * Sets the value in the target field.
- */
- setValue: function(printPage) {
- var t = this.target;
- t.suspendEvents();
- if(t.store === printPage.printProvider.scales || t.name === "scale") {
- if(printPage.scale) {
- t.setValue(printPage.scale.get(t.displayField));
- }
- } else if(t.name == "rotation") {
- t.setValue(printPage.rotation);
- }
- t.resumeEvents();
- },
-
- /** private: method[onBeforeDestroy]
- */
- onBeforeDestroy: function() {
- this.target.un("beforedestroy", this.onBeforeDestroy, this);
- this.target.un("select", this.onFieldChange, this);
- this.target.un("valid", this.onFieldChange, this);
- this.printPage.un("change", this.onPageChange, this);
- this.printPage.printProvider.un("layoutchange", this.onLayoutChange,
- this);
- }
-
-});
-
-/** api: ptype = gx_printpagefield */
-Ext.preg("gx_printpagefield", GeoExt.plugins.PrintPageField);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintProviderField.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintProviderField.js
deleted file mode 100644
index 8d3053b107b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/PrintProviderField.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-Ext.namespace("GeoExt.plugins");
-
-/** api: (define)
- * module = GeoExt.plugins
- * class = PrintProviderField
- * base_link = `Ext.util.Observable `_
- */
-
-/** api: example
- * A form with combo boxes for layout and resolution, and a text field for a
- * map title. The latter is a custom parameter to the print module, which is
- * a default for all print pages. For setting custom parameters on the page
- * level, use :class:`GeoExt.plugins.PrintPageField`):
- *
- * .. code-block:: javascript
- *
- * var printProvider = new GeoExt.data.PrintProvider({
- * capabilities: printCapabilities
- * });
- * new Ext.form.FormPanel({
- * renderTo: "form",
- * width: 200,
- * height: 300,
- * items: [{
- * xtype: "combo",
- * displayField: "name",
- * store: printProvider.layouts, // printProvider.layout
- * fieldLabel: "Layout",
- * typeAhead: true,
- * mode: "local",
- * forceSelection: true,
- * triggerAction: "all",
- * selectOnFocus: true,
- * plugins: new GeoExt.plugins.PrintProviderField({
- * printProvider: printProvider
- * })
- * }, {
- * xtype: "combo",
- * displayField: "name",
- * store: printProvider.dpis, // printProvider.dpi
- * fieldLabel: "Resolution",
- * typeAhead: true,
- * mode: "local",
- * forceSelection: true,
- * triggerAction: "all",
- * selectOnFocus: true,
- * plugins: new GeoExt.plugins.PrintProviderField({
- * printProvider: printProvider
- * })
- * }, {
- * xtype: "textfield",
- * name: "mapTitle", // printProvider.customParams.mapTitle
- * fieldLabel: "Map Title",
- * plugins: new GeoExt.plugins.PrintProviderField({
- * printProvider: printProvider
- * })
- * }]
- * }):
- */
-
-/** api: constructor
- * .. class:: PrintProviderField
- *
- * A plugin for ``Ext.form.Field`` components which provides synchronization
- * with a :class:`GeoExt.data.PrintProvider`.
- */
-GeoExt.plugins.PrintProviderField = Ext.extend(Ext.util.Observable, {
-
- /** api: config[printProvider]
- * ``GeoExt.data.PrintProvider`` The print provider to use with this
- * plugin's field. Not required if set on the owner container of the
- * field.
- */
-
- /** private: property[target]
- * ``Ext.form.Field`` This plugin's target field.
- */
- target: null,
-
- /** private: method[constructor]
- */
- constructor: function(config) {
- this.initialConfig = config;
- Ext.apply(this, config);
-
- GeoExt.plugins.PrintProviderField.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[init]
- * :param target: ``Ext.form.Field`` The component that this plugin
- * extends.
- */
- init: function(target) {
- this.target = target;
- var onCfg = {
- scope: this,
- "render": this.onRender,
- "beforedestroy": this.onBeforeDestroy
- };
- onCfg[target instanceof Ext.form.ComboBox ? "select" : "valid"] =
- this.onFieldChange;
- target.on(onCfg);
- },
-
- /** private: method[onRender]
- * :param field: ``Ext.Form.Field``
- *
- * Handler for the target field's "render" event.
- */
- onRender: function(field) {
- var printProvider = this.printProvider || field.ownerCt.printProvider;
- if(field.store === printProvider.layouts) {
- field.setValue(printProvider.layout.get(field.displayField));
- printProvider.on({
- "layoutchange": this.onProviderChange,
- scope: this
- });
- } else if(field.store === printProvider.dpis) {
- field.setValue(printProvider.dpi.get(field.displayField));
- printProvider.on({
- "dpichange": this.onProviderChange,
- scope: this
- });
- } else if(field.initialConfig.value === undefined) {
- field.setValue(printProvider.customParams[field.name]);
- }
- },
-
- /** private: method[onFieldChange]
- * :param field: ``Ext.form.Field``
- * :param record: ``Ext.data.Record`` Optional.
- *
- * Handler for the target field's "valid" or "select" event.
- */
- onFieldChange: function(field, record) {
- var printProvider = this.printProvider || field.ownerCt.printProvider;
- var value = field.getValue();
- this._updating = true;
- if(record) {
- switch(field.store) {
- case printProvider.layouts:
- printProvider.setLayout(record);
- break;
- case printProvider.dpis:
- printProvider.setDpi(record);
- }
- } else {
- printProvider.customParams[field.name] = value;
- }
- delete this._updating;
- },
-
- /** private: method[onProviderChange]
- * :param printProvider: :class:`GeoExt.data.PrintProvider`
- * :param rec: ``Ext.data.Record``
- *
- * Handler for the printProvider's dpichange and layoutchange event
- */
- onProviderChange: function(printProvider, rec) {
- if(!this._updating) {
- this.target.setValue(rec.get(this.target.displayField));
- }
- },
-
- /** private: method[onBeforeDestroy]
- */
- onBeforeDestroy: function() {
- this.target.un("beforedestroy", this.onBeforeDestroy, this);
- this.target.un("render", this.onRender, this);
- this.target.un("select", this.onFieldChange, this);
- this.target.un("valid", this.onFieldChange, this);
- this.printProvider.un("layoutchange", this.onProviderChange, this);
- this.printProvider.un("dpichange", this.onProviderChange,
- this);
- }
-
-});
-
-/** api: ptype = gx_printproviderfield */
-Ext.preg("gx_printproviderfield", GeoExt.plugins.PrintProviderField);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeComponent.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeComponent.js
deleted file mode 100644
index 1b7df89d263..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeComponent.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.plugins");
-
-/** api: (define)
- * module = GeoExt.plugins
- * class = TreeNodeComponent
- */
-
-/** api: constructor
- * A plugin to create tree node UIs that can have an Ext.Component below the
- * node's title. Can be plugged into any ``Ext.tree.TreePanel`` and will be
- * applied to nodes that are extended with the
- * :class:`GeoExt.Tree.TreeNodeUIEventMixin`.
- *
- * If a node is configured with a ``component`` attribute, it will be rendered
- * with the component in addition to icon and title.
- */
-
-/** api: example
- * Sample code to create a tree with a node that has a component:
- *
- * .. code-block:: javascript
- *
- * var uiClass = Ext.extend(
- * Ext.tree.TreeNodeUI,
- * GeoExt.tree.TreeNodeUIEventMixin
- * );
- * var tree = new Ext.tree.TreePanel({
- * plugins: [
- * new GeoExt.plugins.TreeNodeRadioButton({
- * listeners: {
- * "radiochange": function(node) {
- * alert(node.text + "'s radio button was clicked.");
- * }
- * }
- * })
- * ],
- * root: {
- * nodeType: "node",
- * uiProvider: uiClass,
- * text: "My Node",
- * component: {
- * xtype: "box",
- * autoEl: {
- * tag: "img",
- * src: "/images/my-image.jpg"
- * }
- * }
- * }
- * }
- *
- * Sample code to create a layer node UI with a radio button:
- *
- * .. code-block:: javascript
- *
- * var uiClass = Ext.extend(
- * GeoExt.tree.LayerNodeUI,
- * new GeoExt.tree.TreeNodeUIEventMixin
- * );
- */
-
-GeoExt.plugins.TreeNodeComponent = Ext.extend(Ext.util.Observable, {
-
- /** private: method[constructor]
- * :param config: ``Object``
- */
- constructor: function(config) {
- Ext.apply(this.initialConfig, Ext.apply({}, config));
- Ext.apply(this, config);
-
- GeoExt.plugins.TreeNodeComponent.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[init]
- * :param tree: ``Ext.tree.TreePanel`` The tree.
- */
- init: function(tree) {
- tree.on({
- "rendernode": this.onRenderNode,
- scope: this
- });
- },
-
- /** private: method[onRenderNode]
- * :param node: ``Ext.tree.TreeNode``
- */
- onRenderNode: function(node) {
- var rendered = node.rendered;
- var attr = node.attributes;
- var component = attr.component || this.component;
- if(!rendered && component) {
- var elt = Ext.DomHelper.append(node.ui.elNode, [
- {"tag": "div"}
- ]);
- if(typeof component == "function") {
- component = component(node, elt);
- } else if (typeof component == "object" &&
- typeof component.fn == "function") {
- component = component.fn.apply(
- component.scope, [node, elt]
- );
- }
- if(typeof component == "object" &&
- typeof component.xtype == "string") {
- component = Ext.ComponentMgr.create(component);
- }
- if(component instanceof Ext.Component) {
- component.render(elt);
- node.component = component;
- }
- }
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- tree.un("rendernode", this.onRenderNode, this);
- }
-
-});
-
-/** api: ptype = gx_TreeNodeComponent */
-Ext.preg && Ext.preg("gx_treenodecomponent", GeoExt.plugins.TreeNodeComponent);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeRadioButton.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeRadioButton.js
deleted file mode 100644
index c5fe33c5931..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/plugins/TreeNodeRadioButton.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
- /**
- * @include GeoExt/widgets/tree/TreeNodeUIEventMixin.js
- */
-Ext.namespace("GeoExt.plugins");
-
-/** api: (define)
- * module = GeoExt.plugins
- * class = TreeNodeRadioButton
- */
-
-/** api: constructor
- * A plugin to create tree node UIs with radio buttons. Can be plugged into
- * any ``Ext.tree.TreePanel`` and will be applied to nodes that are extended
- * with the :class:`GeoExt.Tree.TreeNodeUIEventMixin`, in particular
- * :class:`GeoExt.tree.LayerNodeUI` nodes.
- *
- * A tree with a ``GeoExt.plugins.TreeNodeRadioButton`` fires the additional
- * ``radiochange`` event when a node's radio button is clicked.
- *
- * Only if a node is configured ``radioGroup`` attribute, it will be rendered
- * with a radio button next to its icon. The ``radioGroup`` works like a
- * HTML checkbox with its ``name`` attribute, and ``radioGroup`` is a string
- * that identifies the options group.
- *
- */
-
-/** api: example
- * Sample code to create a tree with a node that has a radio button:
- *
- * .. code-block:: javascript
- *
- * var UIClass = Ext.extend(
- * Ext.tree.TreeNodeUI,
- * GeoExt.tree.TreeNodeUIEventMixin
- * );
- * var tree = new Ext.tree.TreePanel({
- * plugins: [
- * new GeoExt.plugins.TreeNodeRadioButton({
- * listeners: {
- * "radiochange": function(node) {
- * alert(node.text + "'s radio button was clicked.");
- * }
- * }
- * })
- * ],
- * root: {
- * nodeType: "node",
- * uiProvider: UIClass,
- * text: "My Node",
- * radioGroup: "myGroupId"
- * }
- * }
- */
-
-GeoExt.plugins.TreeNodeRadioButton = Ext.extend(Ext.util.Observable, {
-
- /** private: method[constructor]
- * :param config: ``Object``
- */
- constructor: function(config) {
- Ext.apply(this.initialConfig, Ext.apply({}, config));
- Ext.apply(this, config);
-
- this.addEvents(
-
- /** api: event[radiochange]
- * Fires when a radio button is clicked.
- *
- * Listener arguments:
- *
- * * node - ``Ext.TreeNode`` The node of the clicked radio button.
- */
- "radiochange"
- );
-
- GeoExt.plugins.TreeNodeRadioButton.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[init]
- * :param tree: ``Ext.tree.TreePanel`` The tree.
- */
- init: function(tree) {
- tree.on({
- "rendernode": this.onRenderNode,
- "rawclicknode": this.onRawClickNode,
- "beforedestroy": this.onBeforeDestroy,
- scope: this
- });
- },
-
- /** private: method[onRenderNode]
- * :param node: ``Ext.tree.TreeNode``
- */
- onRenderNode: function(node) {
- var a = node.attributes;
- if(a.radioGroup && !a.radio) {
- a.radio = Ext.DomHelper.insertBefore(node.ui.anchor,
- [''].join(""));
- }
- },
-
- /** private: method[onRawClickNode]
- * :param node: ``Ext.tree.TreeNode``
- * :param e: ``Ext.EventObject``
- */
- onRawClickNode: function(node, e) {
- var el = e.getTarget('.gx-tree-radio', 1);
- if(el) {
- el.defaultChecked = el.checked;
- this.fireEvent("radiochange", node);
- return false;
- }
- },
-
- /** private: method[onBeforeDestroy]
- */
- onBeforeDestroy: function(tree) {
- tree.un("rendernode", this.onRenderNode, this);
- tree.un("rawclicknode", this.onRenderNode, this);
- tree.un("beforedestroy", this.onBeforeDestroy, this);
- }
-
-});
-
-/** api: ptype = gx_treenoderadiobutton */
-Ext.preg("gx_treenoderadiobutton", GeoExt.plugins.TreeNodeRadioButton);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/state/PermalinkProvider.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/state/PermalinkProvider.js
deleted file mode 100644
index cb728c904fe..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/state/PermalinkProvider.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.state
- * class = PermalinkProvider
- * base_link = `Ext.state.Provider `_
- */
-Ext.namespace("GeoExt.state");
-
-/** api: example
- * Sample code displaying a new permalink each time the map is moved.
- *
- * .. code-block:: javascript
- *
- * // create permalink provider
- * var permalinkProvider = new GeoExt.state.PermalinkProvider();
- *
- * // set it in the state manager
- * Ext.state.Manager.setProvider(permalinkProvider);
- *
- * // create a map panel, and make it stateful
- * var mapPanel = new GeoExt.MapPanel({
- * renderTo: "map",
- * layers: [
- * new OpenLayers.Layer.WMS(
- * "Global Imagery",
- * "http://maps.opengeo.org/geowebcache/service/wms",
- * {layers: "bluemarble"}
- * )
- * ],
- * stateId: "map",
- * prettyStateKeys: true // for pretty permalinks
- * });
- *
- * // display permalink each time state is changed
- * permalinkProvider.on({
- * statechanged: function(provider, name, value) {
- * alert(provider.getLink());
- * }
- * });
- */
-
-/** api: constructor
- * .. class:: PermalinkProvider(config)
- *
- * Create a permalink provider.
- *
- */
-GeoExt.state.PermalinkProvider = function(config) {
- GeoExt.state.PermalinkProvider.superclass.constructor.apply(this, arguments);
-
- config = config || {};
-
- var url = config.url;
- delete config.url;
-
- Ext.apply(this, config);
-
- this.state = this.readURL(url);
-};
-
-Ext.extend(GeoExt.state.PermalinkProvider, Ext.state.Provider, {
-
- /** api: config[encodeType]
- * ``Boolean`` Specifies whether type of state values should be encoded
- * and decoded. Set it to false if you work with components that don't
- * require encoding types, and want pretty permalinks. Defaults to true.
- */
- /** private: property[encodeType]
- * ``Boolean``
- */
- encodeType: true,
-
- /** private: method[readURL]
- * :param url: ``String`` The URL to get the state from.
- * :return: ``Object`` The state object.
- *
- * Create a state object from a URL.
- */
- readURL: function(url) {
- var state = {};
- var params = OpenLayers.Util.getParameters(url);
- var k, split, stateId;
- for(k in params) {
- if(params.hasOwnProperty(k)) {
- split = k.split("_");
- if(split.length > 1) {
- stateId = split[0];
- state[stateId] = state[stateId] || {};
- state[stateId][split.slice(1).join("_")] = this.encodeType ?
- this.decodeValue(params[k]) : params[k];
- }
- }
- }
- return state;
- },
-
- /** api: method[getLink]
- * :param base: ``String`` The base URL, optional.
- * :return: ``String`` The permalink.
- *
- * Return the permalink corresponding to the current state.
- */
- getLink: function(base) {
- base = base || document.location.href;
-
- var params = {};
-
- var id, k, state = this.state;
- for(id in state) {
- if(state.hasOwnProperty(id)) {
- for(k in state[id]) {
- params[id + "_" + k] = this.encodeType ?
- unescape(this.encodeValue(state[id][k])) : state[id][k];
- }
- }
- }
-
- // merge params in the URL into the state params
- OpenLayers.Util.applyDefaults(
- params, OpenLayers.Util.getParameters(base));
-
- var paramsStr = OpenLayers.Util.getParameterString(params);
-
- var qMark = base.indexOf("?");
- if(qMark > 0) {
- base = base.substring(0, qMark);
- }
-
- return Ext.urlAppend(base, paramsStr);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Action.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Action.js
deleted file mode 100644
index 6dc36c7d449..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Action.js
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt
- * class = Action
- * base_link = `Ext.Action `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a toolbar with an OpenLayers control into it.
- *
- * .. code-block:: javascript
- *
- * var action = new GeoExt.Action({
- * text: "max extent",
- * control: new OpenLayers.Control.ZoomToMaxExtent(),
- * map: map
- * });
- * var toolbar = new Ext.Toolbar([action]);
- */
-
-/** api: constructor
- * .. class:: Action(config)
- *
- * Create a GeoExt.Action instance. A GeoExt.Action is created
- * to insert an OpenLayers control in a toolbar as a button or
- * in a menu as a menu item. A GeoExt.Action instance can be
- * used like a regular Ext.Action, look at the Ext.Action API
- * doc for more detail.
- */
-GeoExt.Action = Ext.extend(Ext.Action, {
-
- /** api: config[control]
- * ``OpenLayers.Control`` The OpenLayers control wrapped in this action.
- */
- control: null,
-
- /** api: config[map]
- * ``OpenLayers.Map`` The OpenLayers map that the control should be added
- * to. For controls that don't need to be added to a map or have already
- * been added to one, this config property may be omitted.
- */
- map: null,
-
- /** private: property[uScope]
- * ``Object`` The user-provided scope, used when calling uHandler,
- * uToggleHandler, and uCheckHandler.
- */
- uScope: null,
-
- /** private: property[uHandler]
- * ``Function`` References the function the user passes through
- * the "handler" property.
- */
- uHandler: null,
-
- /** private: property[uToggleHandler]
- * ``Function`` References the function the user passes through
- * the "toggleHandler" property.
- */
- uToggleHandler: null,
-
- /** private: property[uCheckHandler]
- * ``Function`` References the function the user passes through
- * the "checkHandler" property.
- */
- uCheckHandler: null,
-
- /** private */
- constructor: function(config) {
-
- // store the user scope and handlers
- this.uScope = config.scope;
- this.uHandler = config.handler;
- this.uToggleHandler = config.toggleHandler;
- this.uCheckHandler = config.checkHandler;
-
- config.scope = this;
- config.handler = this.pHandler;
- config.toggleHandler = this.pToggleHandler;
- config.checkHandler = this.pCheckHandler;
-
- // set control in the instance, the Ext.Action
- // constructor won't do it for us
- var ctrl = this.control = config.control;
- delete config.control;
-
- // register "activate" and "deactivate" listeners
- // on the control
- if(ctrl) {
- // If map is provided in config, add control to map.
- if(config.map) {
- config.map.addControl(ctrl);
- delete config.map;
- }
- if((config.pressed || config.checked) && ctrl.map) {
- ctrl.activate();
- }
- ctrl.events.on({
- activate: this.onCtrlActivate,
- deactivate: this.onCtrlDeactivate,
- scope: this
- });
- }
-
- arguments.callee.superclass.constructor.call(this, config);
- },
-
- /** private: method[pHandler]
- * :param cmp: ``Ext.Component`` The component that triggers the handler.
- *
- * The private handler.
- */
- pHandler: function(cmp) {
- var ctrl = this.control;
- if(ctrl &&
- ctrl.type == OpenLayers.Control.TYPE_BUTTON) {
- ctrl.trigger();
- }
- if(this.uHandler) {
- this.uHandler.apply(this.uScope, arguments);
- }
- },
-
- /** private: method[pTogleHandler]
- * :param cmp: ``Ext.Component`` The component that triggers the toggle handler.
- * :param state: ``Boolean`` The state of the toggle.
- *
- * The private toggle handler.
- */
- pToggleHandler: function(cmp, state) {
- this.changeControlState(state);
- if(this.uToggleHandler) {
- this.uToggleHandler.apply(this.uScope, arguments);
- }
- },
-
- /** private: method[pCheckHandler]
- * :param cmp: ``Ext.Component`` The component that triggers the check handler.
- * :param state: ``Boolean`` The state of the toggle.
- *
- * The private check handler.
- */
- pCheckHandler: function(cmp, state) {
- this.changeControlState(state);
- if(this.uCheckHandler) {
- this.uCheckHandler.apply(this.uScope, arguments);
- }
- },
-
- /** private: method[changeControlState]
- * :param state: ``Boolean`` The state of the toggle.
- *
- * Change the control state depending on the state boolean.
- */
- changeControlState: function(state) {
- if(state) {
- if(!this._activating) {
- this._activating = true;
- this.control.activate();
- this._activating = false;
- }
- } else {
- if(!this._deactivating) {
- this._deactivating = true;
- this.control.deactivate();
- this._deactivating = false;
- }
- }
- },
-
- /** private: method[onCtrlActivate]
- *
- * Called when this action's control is activated.
- */
- onCtrlActivate: function() {
- var ctrl = this.control;
- if(ctrl.type == OpenLayers.Control.TYPE_BUTTON) {
- this.enable();
- } else {
- // deal with buttons
- this.safeCallEach("toggle", [true]);
- // deal with check items
- this.safeCallEach("setChecked", [true]);
- }
- },
-
- /** private: method[onCtrlDeactivate]
- *
- * Called when this action's control is deactivated.
- */
- onCtrlDeactivate: function() {
- var ctrl = this.control;
- if(ctrl.type == OpenLayers.Control.TYPE_BUTTON) {
- this.disable();
- } else {
- // deal with buttons
- this.safeCallEach("toggle", [false]);
- // deal with check items
- this.safeCallEach("setChecked", [false]);
- }
- },
-
- /** private: method[safeCallEach]
- *
- */
- safeCallEach: function(fnName, args) {
- var cs = this.items;
- for(var i = 0, len = cs.length; i < len; i++){
- if(cs[i][fnName]) {
- cs[i].rendered ?
- cs[i][fnName].apply(cs[i], args) :
- cs[i].on({
- "render": cs[i][fnName].createDelegate(cs[i], args),
- single: true
- });
- }
- }
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/FeatureRenderer.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/FeatureRenderer.js
deleted file mode 100644
index 760b19e5060..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/FeatureRenderer.js
+++ /dev/null
@@ -1,377 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt
- * class = FeatureRenderer
- * base_link = `Ext.BoxComponent `_
- */
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: FeatureRenderer(config)
- *
- * Create a box component for rendering a vector feature.
- */
-GeoExt.FeatureRenderer = Ext.extend(Ext.BoxComponent, {
-
- /** api: config[feature]
- * ``OpenLayers.Feature.Vector``
- * Optional vector to be drawn. If not provided, and if ``symbolizers``
- * is configured with an array of plain symbolizer objects, ``symbolType``
- * should be configured.
- */
- feature: undefined,
-
- /** api: config[symbolizers]
- * ``Array(Object)``
- * An array of ``OpenLayers.Symbolizer`` instances or plain symbolizer
- * objects (in painters order) for rendering a feature. If no
- * symbolizers are provided, the OpenLayers default will be used. If a
- * symbolizer is an instance of ``OpenLayers.Symbolizer``, its type will
- * override the symbolType for rendering.
- */
- symbolizers: [OpenLayers.Feature.Vector.style["default"]],
-
- /** api: config[symbolType]
- * ``String``
- * One of ``"Point"``, ``"Line"``, or ``"Polygon"``. Only pertinent if
- * OpenLayers.Symbolizer objects are not used. If ``feature``
- * is provided, it will be preferred. The default is "Polygon".
- */
- symbolType: "Polygon",
-
- /** private: property[resolution]
- * ``Number``
- * The resolution for the renderer.
- */
- resolution: 1,
-
- /** private: property[minWidth]
- * ``Number``
- */
- minWidth: 20,
-
- /** private: property[minHeight]
- * ``Number``
- */
- minHeight: 20,
-
- /** private: property[renderers]
- * ``Array(String)``
- * List of supported Renderer classes. Add to this list to add support for
- * additional renderers. The first renderer in the list that returns
- * ``true`` for the ``supported`` method will be used, if not defined in
- * the ``renderer`` config property.
- */
- renderers: ["SVG", "VML", "Canvas"],
-
- /** private: property[rendererOptions]
- * ``Object``
- * Options for the renderer. See ``OpenLayers.Renderer`` for supported
- * options.
- */
- rendererOptions: null,
-
- /** private: property[pointFeature]
- * ``OpenLayers.Feature.Vector``
- * Feature with point geometry.
- */
- pointFeature: undefined,
-
- /** private: property[lineFeature]
- * ``OpenLayers.Feature.Vector``
- * Feature with LineString geometry. Default zig-zag is provided.
- */
- lineFeature: undefined,
-
- /** private: property[polygonFeature]
- * ``OpenLayers.Feature.Vector``
- * Feature with Polygon geometry. Default is a soft cornered rectangle.
- */
- polygonFeature: undefined,
-
- /** private: property[renderer]
- * ``OpenLayers.Renderer``
- */
- renderer: null,
-
- /** private: method[initComponent]
- */
- initComponent: function() {
- GeoExt.FeatureRenderer.superclass.initComponent.apply(this, arguments);
- Ext.applyIf(this, {
- pointFeature: new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.Point(0, 0)
- ),
- lineFeature: new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.LineString([
- new OpenLayers.Geometry.Point(-8, -3),
- new OpenLayers.Geometry.Point(-3, 3),
- new OpenLayers.Geometry.Point(3, -3),
- new OpenLayers.Geometry.Point(8, 3)
- ])
- ),
- polygonFeature: new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.Polygon([
- new OpenLayers.Geometry.LinearRing([
- new OpenLayers.Geometry.Point(-8, -4),
- new OpenLayers.Geometry.Point(-6, -6),
- new OpenLayers.Geometry.Point(6, -6),
- new OpenLayers.Geometry.Point(8, -4),
- new OpenLayers.Geometry.Point(8, 4),
- new OpenLayers.Geometry.Point(6, 6),
- new OpenLayers.Geometry.Point(-6, 6),
- new OpenLayers.Geometry.Point(-8, 4)
- ])
- ])
- )
- });
- if(!this.feature) {
- this.setFeature(null, {draw: false});
- }
- this.addEvents(
- /** api: event[click]
- * Fires when the feature is clicked on.
- *
- * Listener arguments:
- *
- * * renderer - :class:`GeoExt.FeatureRenderer` This feature renderer.
- */
- "click"
- );
- },
-
- /** private: method[initCustomEvents]
- */
- initCustomEvents: function() {
- this.clearCustomEvents();
- this.el.on("click", this.onClick, this);
- },
-
- /** private: method[clearCustomEvents]
- */
- clearCustomEvents: function() {
- if (this.el && this.el.removeAllListeners) {
- this.el.removeAllListeners();
- }
- },
-
- /** private: method[onClick]
- */
- onClick: function() {
- this.fireEvent("click", this);
- },
-
- /** private: method[onRender]
- */
- onRender: function(ct, position) {
- if(!this.el) {
- this.el = document.createElement("div");
- this.el.id = this.getId();
- }
- if(!this.renderer || !this.renderer.supported()) {
- this.assignRenderer();
- }
- // monkey-patch renderer so we always get a resolution
- this.renderer.map = {
- getResolution: (function() {
- return this.resolution;
- }).createDelegate(this)
- };
-
- GeoExt.FeatureRenderer.superclass.onRender.apply(this, arguments);
-
- this.drawFeature();
- },
-
- /** private: method[afterRender]
- */
- afterRender: function() {
- GeoExt.FeatureRenderer.superclass.afterRender.apply(this, arguments);
- this.initCustomEvents();
- },
-
- /** private: method[onResize]
- */
- onResize: function(w, h) {
- this.setRendererDimensions();
- GeoExt.FeatureRenderer.superclass.onResize.apply(this, arguments);
- },
-
- /** private: method[setRendererDimensions]
- */
- setRendererDimensions: function() {
- var gb = this.feature.geometry.getBounds();
- var gw = gb.getWidth();
- var gh = gb.getHeight();
- /**
- * Determine resolution based on the following rules:
- * 1) always use value specified in config
- * 2) if not specified, use max res based on width or height of element
- * 3) if no width or height, assume a resolution of 1
- */
- var resolution = this.initialConfig.resolution;
- if(!resolution) {
- resolution = Math.max(gw / this.width || 0, gh / this.height || 0) || 1;
- }
- this.resolution = resolution;
- // determine height and width of element
- var width = Math.max(this.width || this.minWidth, gw / resolution);
- var height = Math.max(this.height || this.minHeight, gh / resolution);
- // determine bounds of renderer
- var center = gb.getCenterPixel();
- var bhalfw = width * resolution / 2;
- var bhalfh = height * resolution / 2;
- var bounds = new OpenLayers.Bounds(
- center.x - bhalfw, center.y - bhalfh,
- center.x + bhalfw, center.y + bhalfh
- );
- this.renderer.setSize(new OpenLayers.Size(Math.round(width), Math.round(height)));
- this.renderer.setExtent(bounds, true);
- },
-
- /** private: method[assignRenderer]
- * Iterate through the available renderer implementations and selects
- * and assign the first one whose ``supported`` method returns ``true``.
- */
- assignRenderer: function() {
- for(var i=0, len=this.renderers.length; i`_
- */
-
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: LayerLegend(config)
- *
- * Base class for components of :class:`GeoExt.LegendPanel`.
- */
-GeoExt.LayerLegend = Ext.extend(Ext.Container, {
-
- /** api: config[layerRecord]
- * :class:`GeoExt.data.LayerRecord` The layer record for the legend
- */
- layerRecord: null,
-
- /** api: config[showTitle]
- * ``Boolean``
- * Whether or not to show the title of a layer. This can be overridden
- * on the LayerStore record using the hideTitle property.
- */
- showTitle: true,
-
- /** api: config[legendTitle]
- * ``String``
- * Optional title to be displayed instead of the layer title. If this is
- * set, the value of ``showTitle`` will be ignored (assumed to be true).
- */
- legendTitle: null,
-
- /** api: config[labelCls]
- * ``String``
- * Optional css class to use for the layer title labels.
- */
- labelCls: null,
-
- /** private: property[layerStore]
- * :class:`GeoExt.data.LayerStore`
- */
- layerStore: null,
-
- /** private: method[initComponent]
- */
- initComponent: function() {
- GeoExt.LayerLegend.superclass.initComponent.call(this);
- this.autoEl = {};
- this.add({
- xtype: "label",
- text: this.getLayerTitle(this.layerRecord),
- cls: 'x-form-item x-form-item-label' +
- (this.labelCls ? ' ' + this.labelCls : '')
- });
- if (this.layerRecord && this.layerRecord.store) {
- this.layerStore = this.layerRecord.store;
- this.layerStore.on("update", this.onStoreUpdate, this);
- }
- },
-
- /** private: method[onStoreUpdate]
- * Update a the legend. Gets called when the store fires the update event.
- * This usually means the visibility of the layer, its style or title
- * has changed.
- *
- * :param store: ``Ext.data.Store`` The store in which the record was
- * changed.
- * :param record: ``Ext.data.Record`` The record object corresponding
- * to the updated layer.
- * :param operation: ``String`` The type of operation.
- */
- onStoreUpdate: function(store, record, operation) {
- // if we don't have items, we are already awaiting garbage
- // collection after being removed by LegendPanel::removeLegend, and
- // updating will cause errors
- if (record === this.layerRecord && this.items.getCount() > 0) {
- var layer = record.getLayer();
- this.setVisible(layer.getVisibility() &&
- layer.calculateInRange() && layer.displayInLayerSwitcher &&
- !record.get('hideInLegend'));
- this.update();
- }
- },
-
- /** private: method[update]
- * Updates the legend.
- */
- update: function() {
- var title = this.getLayerTitle(this.layerRecord);
- if (this.items.get(0).text !== title) {
- // we need to update the title
- this.items.get(0).setText(title);
- }
- },
-
- /** private: method[getLayerTitle]
- * :arg record: :class:GeoExt.data.LayerRecord
- * :returns: ``String``
- *
- * Get a title for the layer. If the record doesn't have a title, use the
- * name.
- */
- getLayerTitle: function(record) {
- var title = this.legendTitle || "";
- if (this.showTitle && !title) {
- if (record && !record.get("hideTitle")) {
- title = record.get("title") ||
- record.get("name") ||
- record.getLayer().name || "";
- }
- }
- return title;
- },
-
- /** private: method[beforeDestroy]
- */
- beforeDestroy: function() {
- this.layerStore &&
- this.layerStore.un("update", this.onStoreUpdate, this);
- GeoExt.LayerLegend.superclass.beforeDestroy.apply(this, arguments);
- }
-
-});
-
-/** class: method[getTypes]
- * :param layerRecord: class:`GeoExt.data.LayerRecord` A layer record to get
- * legend types for. If not provided, all registered types will be
- * returned.
- * :param preferredTypes: ``Array(String)`` Types that should be considered.
- * first. If not provided, all legend types will be returned in the order
- * they were registered.
- * :return: ``Array(String)`` xtypes of legend types that can be used with
- * the provided ``layerRecord``.
- *
- * Gets an array of legend xtypes that support the provided layer record,
- * with optionally provided preferred types listed first.
- */
-GeoExt.LayerLegend.getTypes = function(layerRecord, preferredTypes) {
- var types = (preferredTypes || []).concat();
- var goodTypes = [];
- for(var type in GeoExt.LayerLegend.types) {
- if(GeoExt.LayerLegend.types[type].supports(layerRecord)) {
- // add to goodTypes if not preferred
- types.indexOf(type) == -1 && goodTypes.push(type);
- } else {
- // preferred, but not supported
- types.remove(type);
- }
- }
- // take the remaining preferred types, and add other good types
- return types.concat(goodTypes);
-};
-
-/** private: method[supports]
- * :param layerRecord: :class:`GeoExt.data.LayerRecord` The layer record
- * to check support for.
- * :return: ``Boolean`` true if this legend type supports the layer
- * record.
- *
- * Checks whether this legend type supports the provided layerRecord.
- */
-GeoExt.LayerLegend.supports = function(layerRecord) {
- // to be implemented by subclasses
-};
-
-/** class: constant[GeoExt.LayerLegend.types]
- * An object containing a name-class mapping of LayerLegend subclasses.
- * To register as LayerLegend, a subclass should add itself to this object:
- *
- * .. code-block:: javascript
- *
- * GeoExt.GetLegendGraphicLegend = Ext.extend(GeoExt.LayerLegend, {
- * });
- *
- * GeoExt.LayerLegend.types["getlegendgraphic"] =
- * GeoExt.GetLegendGraphicLegend;
- */
-GeoExt.LayerLegend.types = {};
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LayerOpacitySlider.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LayerOpacitySlider.js
deleted file mode 100644
index 1dcddb97678..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LayerOpacitySlider.js
+++ /dev/null
@@ -1,381 +0,0 @@
-/* Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- * Published under the BSD license.
- * See http://geoext.org/svn/geoext/core/trunk/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/tips/LayerOpacitySliderTip.js
- * @include GeoExt/data/LayerRecord.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = LayerOpacitySlider
- * base_link = `Ext.Slider `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to render a slider outside the map viewport:
- *
- * .. code-block:: javascript
- *
- * var slider = new GeoExt.LayerOpacitySlider({
- * renderTo: document.body,
- * width: 200,
- * layer: layer
- * });
- *
- * Sample code to add a slider to a map panel:
- *
- * .. code-block:: javascript
- *
- * var layer = new OpenLayers.Layer.WMS(
- * "Global Imagery",
- * "http://maps.opengeo.org/geowebcache/service/wms",
- * {layers: "bluemarble"}
- * );
- * var panel = new GeoExt.MapPanel({
- * renderTo: document.body,
- * height: 300,
- * width: 400,
- * map: {
- * controls: [new OpenLayers.Control.Navigation()]
- * },
- * layers: [layer],
- * extent: [-5, 35, 15, 55],
- * items: [{
- * xtype: "gx_opacityslider",
- * layer: layer,
- * aggressive: true,
- * vertical: true,
- * height: 100,
- * x: 10,
- * y: 20
- * }]
- * });
- */
-
-/** api: constructor
- * .. class:: LayerOpacitySlider(config)
- *
- * Create a slider for controlling a layer's opacity.
- */
-GeoExt.LayerOpacitySlider = Ext.extend(Ext.Slider, {
-
- /** api: config[layer]
- * ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
- * The layer this slider changes the opacity of. (required)
- */
- /** private: property[layer]
- * ``OpenLayers.Layer``
- */
- layer: null,
-
- /** api: config[complementaryLayer]
- * ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
- * If provided, a layer that will be made invisible (its visibility is
- * set to false) when the slider value is set to its max value. If this
- * slider is used to fade visibility between to layers, setting
- * ``complementaryLayer`` and ``changeVisibility`` will make sure that
- * only visible tiles are loaded when the slider is set to its min or max
- * value. (optional)
- */
- complementaryLayer: null,
-
- /** api: config[delay]
- * ``Number`` Time in milliseconds before setting the opacity value to the
- * layer. If the value change again within that time, the original value
- * is not set. Only applicable if aggressive is true.
- */
- delay: 5,
-
- /** api: config[changeVisibilityDelay]
- * ``Number`` Time in milliseconds before changing the layer's visibility.
- * If the value changes again within that time, the layer's visibility
- * change does not occur. Only applicable if changeVisibility is true.
- * Defaults to 5.
- */
- changeVisibilityDelay: 5,
-
- /** api: config[aggressive]
- * ``Boolean``
- * If set to true, the opacity is changed as soon as the thumb is moved.
- * Otherwise when the thumb is released (default).
- */
- aggressive: false,
-
- /** api: config[changeVisibility]
- * ``Boolean``
- * If set to true, the layer's visibility is handled by the
- * slider, the slider makes the layer invisible when its
- * value is changed to the min value, and makes the layer
- * visible again when its value goes from the min value
- * to some other value. The layer passed to the constructor
- * must be visible, as its visibility is fully handled by
- * the slider. Defaults to false.
- */
- changeVisibility: false,
-
- /** api: config[value]
- * ``Number``
- * The value to initialize the slider with. This value is
- * taken into account only if the layer's opacity is null.
- * If the layer's opacity is null and this value is not
- * defined in the config object then the slider initializes
- * it to the max value.
- */
- value: null,
-
- /** api: config[inverse]
- * ``Boolean``
- * If true, we will work with transparency instead of with opacity.
- * Defaults to false.
- */
- /** private: property[inverse]
- * ``Boolean``
- */
- inverse: false,
-
- /** private: method[constructor]
- * Construct the component.
- */
- constructor: function(config) {
- if (config.layer) {
- this.layer = this.getLayer(config.layer);
- this.bind();
- this.complementaryLayer = this.getLayer(config.complementaryLayer);
- // before we call getOpacityValue inverse should be set
- if (config.inverse !== undefined) {
- this.inverse = config.inverse;
- }
- config.value = (config.value !== undefined) ?
- config.value : this.getOpacityValue(this.layer);
- delete config.layer;
- delete config.complementaryLayer;
- }
- GeoExt.LayerOpacitySlider.superclass.constructor.call(this, config);
- },
-
- /** private: method[bind]
- */
- bind: function() {
- if (this.layer && this.layer.map) {
- this.layer.map.events.on({
- changelayer: this.update,
- scope: this
- });
- }
- },
-
- /** private: method[unbind]
- */
- unbind: function() {
- if (this.layer && this.layer.map) {
- this.layer.map.events.un({
- changelayer: this.update,
- scope: this
- });
- }
- },
-
- /** private: method[update]
- * Registered as a listener for opacity change. Updates the value of the slider.
- */
- update: function(evt) {
- if (evt.property === "opacity" && evt.layer == this.layer) {
- this.setValue(this.getOpacityValue(this.layer));
- }
- },
-
- /** api: method[setLayer]
- * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
- *
- * Bind a new layer to the opacity slider.
- */
- setLayer: function(layer) {
- this.unbind();
- this.layer = this.getLayer(layer);
- this.setValue(this.getOpacityValue(layer));
- this.bind();
- },
-
- /** private: method[getOpacityValue]
- * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
- * :return: ``Integer`` The opacity for the layer.
- *
- * Returns the opacity value for the layer.
- */
- getOpacityValue: function(layer) {
- var value;
- if (layer && layer.opacity !== null) {
- value = parseInt(layer.opacity * (this.maxValue - this.minValue));
- } else {
- value = this.maxValue;
- }
- if (this.inverse === true) {
- value = (this.maxValue - this.minValue) - value;
- }
- return value;
- },
-
- /** private: method[getLayer]
- * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
- * :return: ``OpenLayers.Layer`` The OpenLayers layer object
- *
- * Returns the OpenLayers layer object for a layer record or a plain layer
- * object.
- */
- getLayer: function(layer) {
- if (layer instanceof OpenLayers.Layer) {
- return layer;
- } else if (layer instanceof GeoExt.data.LayerRecord) {
- return layer.getLayer();
- }
- },
-
- /** private: method[initComponent]
- * Initialize the component.
- */
- initComponent: function() {
-
- GeoExt.LayerOpacitySlider.superclass.initComponent.call(this);
-
- if (this.changeVisibility && this.layer &&
- (this.layer.opacity == 0 ||
- (this.inverse === false && this.value == this.minValue) ||
- (this.inverse === true && this.value == this.maxValue))) {
- this.layer.setVisibility(false);
- }
-
- if (this.complementaryLayer &&
- ((this.layer && this.layer.opacity == 1) ||
- (this.inverse === false && this.value == this.maxValue) ||
- (this.inverse === true && this.value == this.minValue))) {
- this.complementaryLayer.setVisibility(false);
- }
-
- if (this.aggressive === true) {
- this.on('change', this.changeLayerOpacity, this, {
- buffer: this.delay
- });
- } else {
- this.on('changecomplete', this.changeLayerOpacity, this);
- }
-
- if (this.changeVisibility === true) {
- this.on('change', this.changeLayerVisibility, this, {
- buffer: this.changeVisibilityDelay
- });
- }
-
- if (this.complementaryLayer) {
- this.on('change', this.changeComplementaryLayerVisibility, this, {
- buffer: this.changeVisibilityDelay
- });
- }
- this.on("beforedestroy", this.unbind, this);
- },
-
- /** private: method[changeLayerOpacity]
- * :param slider: :class:`GeoExt.LayerOpacitySlider`
- * :param value: ``Number`` The slider value
- *
- * Updates the ``OpenLayers.Layer`` opacity value.
- */
- changeLayerOpacity: function(slider, value) {
- if (this.layer) {
- value = value / (this.maxValue - this.minValue);
- if (this.inverse === true) {
- value = 1 - value;
- }
- this.layer.setOpacity(value);
- }
- },
-
- /** private: method[changeLayerVisibility]
- * :param slider: :class:`GeoExt.LayerOpacitySlider`
- * :param value: ``Number`` The slider value
- *
- * Updates the ``OpenLayers.Layer`` visibility.
- */
- changeLayerVisibility: function(slider, value) {
- var currentVisibility = this.layer.getVisibility();
- if ((this.inverse === false && value == this.minValue) ||
- (this.inverse === true && value == this.maxValue) &&
- currentVisibility === true) {
- this.layer.setVisibility(false);
- } else if ((this.inverse === false && value > this.minValue) ||
- (this.inverse === true && value < this.maxValue) &&
- currentVisibility == false) {
- this.layer.setVisibility(true);
- }
- },
-
- /** private: method[changeComplementaryLayerVisibility]
- * :param slider: :class:`GeoExt.LayerOpacitySlider`
- * :param value: ``Number`` The slider value
- *
- * Updates the complementary ``OpenLayers.Layer`` visibility.
- */
- changeComplementaryLayerVisibility: function(slider, value) {
- var currentVisibility = this.complementaryLayer.getVisibility();
- if ((this.inverse === false && value == this.maxValue) ||
- (this.inverse === true && value == this.minValue) &&
- currentVisibility === true) {
- this.complementaryLayer.setVisibility(false);
- } else if ((this.inverse === false && value < this.maxValue) ||
- (this.inverse === true && value > this.minValue) &&
- currentVisibility == false) {
- this.complementaryLayer.setVisibility(true);
- }
- },
-
- /** private: method[addToMapPanel]
- * :param panel: :class:`GeoExt.MapPanel`
- *
- * Called by a MapPanel if this component is one of the items in the panel.
- */
- addToMapPanel: function(panel) {
- this.on({
- render: function() {
- var el = this.getEl();
- el.setStyle({
- position: "absolute",
- zIndex: panel.map.Z_INDEX_BASE.Control
- });
- el.on({
- mousedown: this.stopMouseEvents,
- click: this.stopMouseEvents
- });
- },
- scope: this
- });
- },
-
- /** private: method[removeFromMapPanel]
- * :param panel: :class:`GeoExt.MapPanel`
- *
- * Called by a MapPanel if this component is one of the items in the panel.
- */
- removeFromMapPanel: function(panel) {
- var el = this.getEl();
- el.un({
- mousedown: this.stopMouseEvents,
- click: this.stopMouseEvents,
- scope: this
- });
- this.unbind();
- },
-
- /** private: method[stopMouseEvents]
- * :param e: ``Object``
- */
- stopMouseEvents: function(e) {
- e.stopEvent();
- }
-});
-
-/** api: xtype = gx_opacityslider */
-Ext.reg('gx_opacityslider', GeoExt.LayerOpacitySlider);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendImage.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendImage.js
deleted file mode 100644
index 25914621ae6..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendImage.js
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt
- * class = LegendImage
- * base_link = `Ext.BoxComponent `_
- */
-
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: LegendImage(config)
- *
- * Show a legend image in a BoxComponent and make sure load errors are
- * dealt with.
- */
-GeoExt.LegendImage = Ext.extend(Ext.BoxComponent, {
-
- /** api: config[url]
- * ``String`` The url of the image to load
- */
- url: null,
-
- /** api: config[defaultImgSrc]
- * ``String`` Path to image that will be used if the legend image fails
- * to load. Default is Ext.BLANK_IMAGE_URL.
- */
- defaultImgSrc: null,
-
- /** api: config[imgCls]
- * ``String`` Optional css class to apply to img tag
- */
- imgCls: null,
-
- /** private: method[initComponent]
- * Initializes the legend image component.
- */
- initComponent: function() {
- GeoExt.LegendImage.superclass.initComponent.call(this);
- if(this.defaultImgSrc === null) {
- this.defaultImgSrc = Ext.BLANK_IMAGE_URL;
- }
- this.autoEl = {
- tag: "img",
- "class": (this.imgCls ? this.imgCls : ""),
- src: this.defaultImgSrc
- };
- },
-
- /** api: method[setUrl]
- * :param url: ``String`` The new URL.
- *
- * Sets the url of the legend image.
- */
- setUrl: function(url) {
- this.url = url;
- var el = this.getEl();
- if (el) {
- el.un("error", this.onImageLoadError, this);
- el.on("error", this.onImageLoadError, this, {single: true});
- el.dom.src = url;
- }
- },
-
- /** private: method[onRender]
- * Private method called when the legend image component is being
- * rendered.
- */
- onRender: function(ct, position) {
- GeoExt.LegendImage.superclass.onRender.call(this, ct, position);
- if(this.url) {
- this.setUrl(this.url);
- }
- },
-
- /** private: method[onDestroy]
- * Private method called during the destroy sequence.
- */
- onDestroy: function() {
- var el = this.getEl();
- if(el) {
- el.un("error", this.onImageLoadError, this);
- }
- GeoExt.LegendImage.superclass.onDestroy.apply(this, arguments);
- },
-
- /** private: method[onImageLoadError]
- * Private method called if the legend image fails loading.
- */
- onImageLoadError: function() {
- this.getEl().dom.src = this.defaultImgSrc;
- }
-
-});
-
-/** api: xtype = gx_legendimage */
-Ext.reg('gx_legendimage', GeoExt.LegendImage);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendPanel.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendPanel.js
deleted file mode 100644
index 7dbbf3088da..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/LegendPanel.js
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt
- * class = LegendPanel
- * base_link = `Ext.Panel `_
- */
-
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: LegendPanel(config)
- *
- * A panel showing legends of all layers in a layer store.
- * Depending on the layer type, a legend renderer will be chosen.
- */
-GeoExt.LegendPanel = Ext.extend(Ext.Panel, {
-
- /** api: config[dynamic]
- * ``Boolean``
- * If false the LegendPanel will not listen to the add, remove and change
- * events of the LayerStore. So it will load with the initial state of
- * the LayerStore and not change anymore.
- */
- dynamic: true,
-
- /** api: config[layerStore]
- * ``GeoExt.data.LayerStore``
- * The layer store containing layers to be displayed in the legend
- * container. If not provided it will be taken from the MapPanel.
- */
- layerStore: null,
-
- /** api: config[preferredTypes]
- * ``Array(String)`` An array of preferred legend types.
- */
-
- /** private: property[preferredTypes]
- */
- preferredTypes: null,
-
- /** api: config[filter]
- * ``Function``
- * A function, called in the scope of the legend panel, with a layer record
- * as argument. Is expected to return true for layers to be displayed, false
- * otherwise. By default, all layers will be displayed.
- *
- * .. code-block:: javascript
- *
- * filter: function(record) {
- * return record.getLayer().isBaseLayer;
- * }
- */
- filter: function(record) {
- return true;
- },
-
- /** private: method[initComponent]
- * Initializes the legend panel.
- */
- initComponent: function() {
- GeoExt.LegendPanel.superclass.initComponent.call(this);
- },
-
- /** private: method[onRender]
- * Private method called when the legend panel is being rendered.
- */
- onRender: function() {
- GeoExt.LegendPanel.superclass.onRender.apply(this, arguments);
- if(!this.layerStore) {
- this.layerStore = GeoExt.MapPanel.guess().layers;
- }
- this.layerStore.each(function(record) {
- this.addLegend(record);
- }, this);
- if (this.dynamic) {
- this.layerStore.on({
- "add": this.onStoreAdd,
- "remove": this.onStoreRemove,
- "clear": this.onStoreClear,
- scope: this
- });
- }
- },
-
- /** private: method[recordIndexToPanelIndex]
- * Private method to get the panel index for a layer represented by a
- * record.
- *
- * :param index ``Integer`` The index of the record in the store.
- *
- * :return: ``Integer`` The index of the sub panel in this panel.
- */
- recordIndexToPanelIndex: function(index) {
- var store = this.layerStore;
- var count = store.getCount();
- var panelIndex = -1;
- var legendCount = this.items ? this.items.length : 0;
- var record, layer;
- for(var i=count-1; i>=0; --i) {
- record = store.getAt(i);
- layer = record.getLayer();
- var types = GeoExt.LayerLegend.getTypes(record);
- if(layer.displayInLayerSwitcher && types.length > 0 &&
- (store.getAt(i).get("hideInLegend") !== true)) {
- ++panelIndex;
- if(index === i || panelIndex > legendCount-1) {
- break;
- }
- }
- }
- return panelIndex;
- },
-
- /** private: method[getIdForLayer]
- * :arg layer: ``OpenLayers.Layer``
- * :returns: ``String``
- *
- * Generate an element id that is unique to this panel/layer combo.
- */
- getIdForLayer: function(layer) {
- return this.id + "-" + layer.id;
- },
-
- /** private: method[onStoreAdd]
- * Private method called when a layer is added to the store.
- *
- * :param store: ``Ext.data.Store`` The store to which the record(s) was
- * added.
- * :param record: ``Ext.data.Record`` The record object(s) corresponding
- * to the added layers.
- * :param index: ``Integer`` The index of the inserted record.
- */
- onStoreAdd: function(store, records, index) {
- var panelIndex = this.recordIndexToPanelIndex(index+records.length-1);
- for (var i=0, len=records.length; i 0) {
- this.insert(index, {
- xtype: types[0],
- id: this.getIdForLayer(layer),
- layerRecord: record,
- hidden: !((!layer.map && layer.visibility) ||
- (layer.getVisibility() && layer.calculateInRange()))
- });
- }
- }
- },
-
- /** private: method[onDestroy]
- * Private method called during the destroy sequence.
- */
- onDestroy: function() {
- if(this.layerStore) {
- this.layerStore.un("add", this.onStoreAdd, this);
- this.layerStore.un("remove", this.onStoreRemove, this);
- this.layerStore.un("clear", this.onStoreClear, this);
- }
- GeoExt.LegendPanel.superclass.onDestroy.apply(this, arguments);
- }
-});
-
-/** api: xtype = gx_legendpanel */
-Ext.reg('gx_legendpanel', GeoExt.LegendPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/MapPanel.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/MapPanel.js
deleted file mode 100644
index c18b4cdfc5c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/MapPanel.js
+++ /dev/null
@@ -1,387 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/data/LayerStore.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = MapPanel
- * base_link = `Ext.Panel `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a panel with a new map:
- *
- * .. code-block:: javascript
- *
- * var mapPanel = new GeoExt.MapPanel({
- * border: false,
- * renderTo: "div-id",
- * map: {
- * maxExtent: new OpenLayers.Bounds(-90, -45, 90, 45)
- * }
- * });
- *
- * Sample code to create a map panel with a bottom toolbar in a Window:
- *
- * .. code-block:: javascript
- *
- * var win = new Ext.Window({
- * title: "My Map",
- * items: [{
- * xtype: "gx_mappanel",
- * bbar: new Ext.Toolbar()
- * }]
- * });
- */
-
-/** api: constructor
- * .. class:: MapPanel(config)
- *
- * Create a panel container for a map.
- */
-GeoExt.MapPanel = Ext.extend(Ext.Panel, {
-
- /** api: config[map]
- * ``OpenLayers.Map or Object`` A configured map or a configuration object
- * for the map constructor. A configured map will be available after
- * construction through the :attr:`map` property.
- */
-
- /** api: property[map]
- * ``OpenLayers.Map`` or ``Object`` A map or map configuration.
- */
- map: null,
-
- /** api: config[layers]
- * ``GeoExt.data.LayerStore or GeoExt.data.GroupingStore or Array(OpenLayers.Layer)``
- * A store holding records. The layers provided here will be added to this
- * MapPanel's map when it is rendered.
- */
-
- /** api: property[layers]
- * :class:`GeoExt.data.LayerStore` A store containing
- * :class:`GeoExt.data.LayerRecord` objects.
- */
- layers: null,
-
-
- /** api: config[center]
- * ``OpenLayers.LonLat or Array(Number)`` A location for the map center. If
- * an array is provided, the first two items should represent x & y coordinates.
- */
- center: null,
-
- /** api: config[zoom]
- * ``Number`` An initial zoom level for the map.
- */
- zoom: null,
-
- /** api: config[prettyStateKeys]
- * ``Boolean`` Set this to true if you want pretty strings in the MapPanel's
- * state keys. More specifically, layer.name instead of layer.id will be used
- * in the state keys if this option is set to true. But in that case you have
- * to make sure you don't have two layers with the same name. Defaults to
- * false.
- */
- prettyStateKeys: false,
-
- /** api: config[extent]
- * ``OpenLayers.Bounds or Array(Number)`` An initial extent for the map (used
- * if center and zoom are not provided. If an array, the first four items
- * should be minx, miny, maxx, maxy.
- */
- extent: null,
-
- /** private: property[stateEvents]
- * ``Array(String)`` Array of state events
- */
- stateEvents: ["aftermapmove",
- "afterlayervisibilitychange",
- "afterlayeropacitychange"],
-
- /** private: method[initComponent]
- * Initializes the map panel. Creates an OpenLayers map if
- * none was provided in the config options passed to the
- * constructor.
- */
- initComponent: function(){
- if(!(this.map instanceof OpenLayers.Map)) {
- this.map = new OpenLayers.Map(
- Ext.applyIf(this.map || {}, {allOverlays: true})
- );
- }
- var layers = this.layers;
- if(!layers || layers instanceof Array) {
- this.layers = new GeoExt.data.LayerStore({
- layers: layers,
- map: this.map.layers.length > 0 ? this.map : null
- });
- }
-
- if(typeof this.center == "string") {
- this.center = OpenLayers.LonLat.fromString(this.center);
- } else if(this.center instanceof Array) {
- this.center = new OpenLayers.LonLat(this.center[0], this.center[1]);
- }
- if(typeof this.extent == "string") {
- this.extent = OpenLayers.Bounds.fromString(this.extent);
- } else if(this.extent instanceof Array) {
- this.extent = OpenLayers.Bounds.fromArray(this.extent);
- }
-
- GeoExt.MapPanel.superclass.initComponent.call(this);
-
- this.addEvents(
- /** private: event[aftermapmove]
- * Fires after the map is moved.
- */
- "aftermapmove",
-
- /** private: event[afterlayervisibilitychange]
- * Fires after a layer changed visibility.
- */
- "afterlayervisibilitychange",
-
- /** private: event[afterlayeropacitychange]
- * Fires after a layer changed opacity.
- */
- "afterlayeropacitychange"
- );
- this.map.events.on({
- "moveend": this.onMoveend,
- "changelayer": this.onLayerchange,
- scope: this
- });
- },
-
- /** private: method[onMoveend]
- *
- * The "moveend" listener.
- */
- onMoveend: function() {
- this.fireEvent("aftermapmove");
- },
-
- /** private: method[onLayerchange]
- * :param e: ``Object``
- *
- * The "changelayer" listener.
- */
- onLayerchange: function(e) {
- if(e.property) {
- if(e.property === "visibility") {
- this.fireEvent("afterlayervisibilitychange");
- } else if(e.property === "opacity") {
- this.fireEvent("afterlayeropacitychange");
- }
- }
- },
-
- /** private: method[applyState]
- * :param state: ``Object`` The state to apply.
- *
- * Apply the state provided as an argument.
- */
- applyState: function(state) {
-
- // if we get strings for state.x, state.y or state.zoom
- // OpenLayers will take care of converting them to the
- // appropriate types so we don't bother with that
- this.center = new OpenLayers.LonLat(state.x, state.y);
- this.zoom = state.zoom;
-
- // set layer visibility and opacity
- var i, l, layer, layerId, visibility, opacity;
- var layers = this.map.layers;
- for(i=0, l=layers.length; i 0) {
- if(this.center || this.zoom != null) {
- // both do not have to be defined
- map.setCenter(this.center, this.zoom);
- } else if(this.extent) {
- map.zoomToExtent(this.extent);
- } else {
- map.zoomToMaxExtent();
- }
- }
- },
-
- /** private: method[afterRender]
- * Private method called after the panel has been rendered.
- */
- afterRender: function() {
- GeoExt.MapPanel.superclass.afterRender.apply(this, arguments);
- if(!this.ownerCt) {
- this.renderMap();
- } else {
- this.ownerCt.on("move", this.updateMapSize, this);
- this.ownerCt.on({
- "afterlayout": {
- fn: this.renderMap,
- scope: this,
- single: true
- }
- });
- }
- },
-
- /** private: method[onResize]
- * Private method called after the panel has been resized.
- */
- onResize: function() {
- GeoExt.MapPanel.superclass.onResize.apply(this, arguments);
- this.updateMapSize();
- },
-
- /** private: method[onBeforeAdd]
- * Private method called before a component is added to the panel.
- */
- onBeforeAdd: function(item) {
- if(typeof item.addToMapPanel === "function") {
- item.addToMapPanel(this);
- }
- GeoExt.MapPanel.superclass.onBeforeAdd.apply(this, arguments);
- },
-
- /** private: method[remove]
- * Private method called when a component is removed from the panel.
- */
- remove: function(item, autoDestroy) {
- if(typeof item.removeFromMapPanel === "function") {
- item.removeFromMapPanel(this);
- }
- GeoExt.MapPanel.superclass.remove.apply(this, arguments);
- },
-
- /** private: method[beforeDestroy]
- * Private method called during the destroy sequence.
- */
- beforeDestroy: function() {
- if(this.ownerCt) {
- this.ownerCt.un("move", this.updateMapSize, this);
- }
- if(this.map && this.map.events) {
- this.map.events.un({
- "moveend": this.onMoveend,
- "changelayer": this.onLayerchange,
- scope: this
- });
- }
- // if the map panel was passed a map instance, this map instance
- // is under the user's responsibility
- if(!this.initialConfig.map ||
- !(this.initialConfig.map instanceof OpenLayers.Map)) {
- // we created the map, we destroy it
- if(this.map && this.map.destroy) {
- this.map.destroy();
- }
- }
- delete this.map;
- GeoExt.MapPanel.superclass.beforeDestroy.apply(this, arguments);
- }
-
-});
-
-/** api: function[guess]
- * :return: ``GeoExt.MapPanel`` The first map panel found by the Ext
- * component manager.
- *
- * Convenience function for guessing the map panel of an application. This
- * can reliably be used for all applications that just have one map panel
- * in the viewport.
- */
-GeoExt.MapPanel.guess = function() {
- return Ext.ComponentMgr.all.find(function(o) {
- return o instanceof GeoExt.MapPanel;
- });
-};
-
-
-/** api: xtype = gx_mappanel */
-Ext.reg('gx_mappanel', GeoExt.MapPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Popup.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Popup.js
deleted file mode 100644
index 7736882f2d0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/Popup.js
+++ /dev/null
@@ -1,361 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/MapPanel.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = Popup
- * base_link = `Ext.Window `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a popup anchored to a feature:
- *
- * .. code-block:: javascript
- *
- * var popup = new GeoExt.Popup({
- * title: "My Popup",
- * location: feature,
- * width: 200,
- * html: "
Popup content
",
- * collapsible: true
- * });
- */
-
-/** api: constructor
- * .. class:: Popup(config)
- *
- * Popups are a specialized Window that supports anchoring
- * to a particular location in a MapPanel. When a popup
- * is anchored to a location, that means that the popup
- * will visibly point to the location on the map, and move
- * accordingly when the map is panned or zoomed.
- */
-GeoExt.Popup = Ext.extend(Ext.Window, {
-
- /** api: config[anchored]
- * ``Boolean`` The popup begins anchored to its location. Default is
- * ``true``.
- */
- anchored: true,
-
- /** api: config[map]
- * ``OpenLayers.Map`` or :class:`GeoExt.MapPanel`
- * The map this popup will be anchored to (only required if ``anchored``
- * is set to true and the map cannot be derived from the ``location``'s
- * layer.
- */
- map: null,
-
- /** api: config[panIn]
- * ``Boolean`` The popup should pan the map so that the popup is
- * fully in view when it is rendered. Default is ``true``.
- */
- panIn: true,
-
- /** api: config[unpinnable]
- * ``Boolean`` The popup should have a "unpin" tool that unanchors it from
- * its location. Default is ``true``.
- */
- unpinnable: true,
-
- /** api: config[location]
- * ``OpenLayers.Feature.Vector`` or ``OpenLayers.LonLat`` or
- * ``OpenLayers.Pixel`` or ``OpenLayers.Geometry`` A location for this
- * popup's anchor.
- */
-
- /** private: property[location]
- * ``OpenLayers.LonLat``
- */
- location: null,
-
- /**
- * Some Ext.Window defaults need to be overriden here
- * because some Ext.Window behavior is not currently supported.
- */
-
- /** private: config[animCollapse]
- * ``Boolean`` Animate the transition when the panel is collapsed.
- * Default is ``false``. Collapsing animation is not supported yet for
- * popups.
- */
- animCollapse: false,
-
- /** private: config[draggable]
- * ``Boolean`` Enable dragging of this Panel. Defaults to ``false``
- * because the popup defaults to being anchored, and anchored popups
- * should not be draggable.
- */
- draggable: false,
-
- /** private: config[shadow]
- * ``Boolean`` Give the popup window a shadow. Defaults to ``false``
- * because shadows are not supported yet for popups (the shadow does
- * not look good with the anchor).
- */
- shadow: false,
-
- /** api: config[popupCls]
- * ``String`` CSS class name for the popup DOM elements. Default is
- * "gx-popup".
- */
- popupCls: "gx-popup",
-
- /** api: config[ancCls]
- * ``String`` CSS class name for the popup's anchor.
- */
- ancCls: null,
-
- /** private: method[initComponent]
- * Initializes the popup.
- */
- initComponent: function() {
- if(this.map instanceof GeoExt.MapPanel) {
- this.map = this.map.map;
- }
- if(!this.map && this.location instanceof OpenLayers.Feature.Vector &&
- this.location.layer) {
- this.map = this.location.layer.map;
- }
- if (this.location instanceof OpenLayers.Feature.Vector) {
- this.location = this.location.geometry;
- }
- if (this.location instanceof OpenLayers.Geometry) {
- if (typeof this.location.getCentroid == "function") {
- this.location = this.location.getCentroid();
- }
- this.location = this.location.getBounds().getCenterLonLat();
- } else if (this.location instanceof OpenLayers.Pixel) {
- this.location = this.map.getLonLatFromViewPortPx(this.location);
- }
-
- if(this.anchored) {
- this.addAnchorEvents();
- }
-
- this.baseCls = this.popupCls + " " + this.baseCls;
-
- this.elements += ',anc';
-
- GeoExt.Popup.superclass.initComponent.call(this);
- },
-
- /** private: method[onRender]
- * Executes when the popup is rendered.
- */
- onRender: function(ct, position) {
- GeoExt.Popup.superclass.onRender.call(this, ct, position);
- this.ancCls = this.popupCls + "-anc";
-
- //create anchor dom element.
- this.createElement("anc", this.el.dom);
- },
-
- /** private: method[initTools]
- * Initializes the tools on the popup. In particular,
- * it adds the 'unpin' tool if the popup is unpinnable.
- */
- initTools : function() {
- if(this.unpinnable) {
- this.addTool({
- id: 'unpin',
- handler: this.unanchorPopup.createDelegate(this, [])
- });
- }
-
- GeoExt.Popup.superclass.initTools.call(this);
- },
-
- /** private: method[show]
- * Override.
- */
- show: function() {
- GeoExt.Popup.superclass.show.apply(this, arguments);
- if(this.anchored) {
- this.position();
- if(this.panIn && !this._mapMove) {
- this.panIntoView();
- }
- }
- },
-
- /** private: method[maximize]
- * Override.
- */
- maximize: function() {
- if(!this.maximized && this.anc) {
- this.unanchorPopup();
- }
- GeoExt.Popup.superclass.maximize.apply(this, arguments);
- },
-
- /** api: method[setSize]
- * :param w: ``Integer``
- * :param h: ``Integer``
- *
- * Sets the size of the popup, taking into account the size of the anchor.
- */
- setSize: function(w, h) {
- if(this.anc) {
- var ancSize = this.anc.getSize();
- if(typeof w == 'object') {
- h = w.height - ancSize.height;
- w = w.width;
- } else if(!isNaN(h)){
- h = h - ancSize.height;
- }
- }
- GeoExt.Popup.superclass.setSize.call(this, w, h);
- },
-
- /** private: method[position]
- * Positions the popup relative to its location
- */
- position: function() {
- if(this._mapMove === true) {
- var visible = this.map.getExtent().containsLonLat(this.location);
- if(visible !== this.isVisible()) {
- this.setVisible(visible);
- }
- }
-
- if(this.isVisible()) {
- var centerPx = this.map.getViewPortPxFromLonLat(this.location);
- var mapBox = Ext.fly(this.map.div).getBox();
-
- //This works for positioning with the anchor on the bottom.
-
- var anc = this.anc;
- var dx = anc.getLeft(true) + anc.getWidth() / 2;
- var dy = this.el.getHeight();
-
- //Assuming for now that the map viewport takes up
- //the entire area of the MapPanel
- this.setPosition(centerPx.x + mapBox.x - dx, centerPx.y + mapBox.y - dy);
- }
- },
-
- /** private: method[unanchorPopup]
- * Unanchors a popup from its location. This removes the popup from its
- * MapPanel and adds it to the page body.
- */
- unanchorPopup: function() {
- this.removeAnchorEvents();
-
- //make the window draggable
- this.draggable = true;
- this.header.addClass("x-window-draggable");
- this.dd = new Ext.Window.DD(this);
-
- //remove anchor
- this.anc.remove();
- this.anc = null;
-
- //hide unpin tool
- this.tools.unpin.hide();
- },
-
- /** private: method[panIntoView]
- * Pans the MapPanel's map so that an anchored popup can come entirely
- * into view, with padding specified as per normal OpenLayers.Map popup
- * padding.
- */
- panIntoView: function() {
- var mapBox = Ext.fly(this.map.div).getBox();
-
- //assumed viewport takes up whole body element of map panel
- var popupPos = this.getPosition(true);
- popupPos[0] -= mapBox.x;
- popupPos[1] -= mapBox.y;
-
- var panelSize = [mapBox.width, mapBox.height]; // [X,Y]
-
- var popupSize = this.getSize();
-
- var newPos = [popupPos[0], popupPos[1]];
-
- //For now, using native OpenLayers popup padding. This may not be ideal.
- var padding = this.map.paddingForPopups;
-
- // X
- if(popupPos[0] < padding.left) {
- newPos[0] = padding.left;
- } else if(popupPos[0] + popupSize.width > panelSize[0] - padding.right) {
- newPos[0] = panelSize[0] - padding.right - popupSize.width;
- }
-
- // Y
- if(popupPos[1] < padding.top) {
- newPos[1] = padding.top;
- } else if(popupPos[1] + popupSize.height > panelSize[1] - padding.bottom) {
- newPos[1] = panelSize[1] - padding.bottom - popupSize.height;
- }
-
- var dx = popupPos[0] - newPos[0];
- var dy = popupPos[1] - newPos[1];
-
- this.map.pan(dx, dy);
- },
-
- /** private: method[onMapMove]
- */
- onMapMove: function() {
- this._mapMove = true;
- this.position();
- delete this._mapMove;
- },
-
- /** private: method[addAnchorEvents]
- */
- addAnchorEvents: function() {
- this.map.events.on({
- "move" : this.onMapMove,
- scope : this
- });
-
- this.on({
- "resize": this.position,
- "collapse": this.position,
- "expand": this.position,
- scope: this
- });
- },
-
- /** private: method[removeAnchorEvents]
- */
- removeAnchorEvents: function() {
- //stop position with location
- this.map.events.un({
- "move" : this.onMapMove,
- scope : this
- });
-
- this.un("resize", this.position, this);
- this.un("collapse", this.position, this);
- this.un("expand", this.position, this);
-
- },
-
- /** private: method[beforeDestroy]
- * Cleanup events before destroying the popup.
- */
- beforeDestroy: function() {
- if(this.anchored) {
- this.removeAnchorEvents();
- }
- GeoExt.Popup.superclass.beforeDestroy.call(this);
- }
-});
-
-/** api: xtype = gx_popup */
-Ext.reg('gx_popup', GeoExt.Popup);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/PrintMapPanel.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/PrintMapPanel.js
deleted file mode 100644
index 9dff34250a1..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/PrintMapPanel.js
+++ /dev/null
@@ -1,373 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @requires GeoExt/widgets/MapPanel.js
- * @include GeoExt/data/PrintProvider.js
- * @include GeoExt/data/PrintPage.js
- */
-Ext.namespace("GeoExt");
-
-/** api: (define)
- * module = GeoExt
- * class = PrintMapPanel
- */
-
-/** api: (extends)
- * GeoExt/widgets/MapPanel.js
- */
-
-/** api: example
- * A map with a "Print..." button. If clicked, a dialog containing a
- * PrintMapPanel will open, with a "Create PDF" button.
- *
- * .. code-block:: javascript
- *
- * var mapPanel = new GeoExt.MapPanel({
- * renderTo: "map",
- * layers: [new OpenLayers.Layer.WMS("Tasmania State Boundaries",
- * "http://demo.opengeo.org/geoserver/wms",
- * {layers: "topp:tasmania_state_boundaries"}, {singleTile: true})],
- * center: [146.56, -41.56],
- * zoom: 6,
- * bbar: [{
- * text: "Print...",
- * handler: function() {
- * var printDialog = new Ext.Window({
- * autoHeight: true,
- * width: 350,
- * items: [new GeoExt.PrintMapPanel({
- * sourceMap: mapPanel,
- * printProvider: {
- * capabilities: printCapabilities
- * }
- * })],
- * bbar: [{
- * text: "Create PDF",
- * handler: function() {
- * printDialog.items.get(0).print();
- * }
- * }]
- * });
- * printDialog.show();
- * }
- * }]
- * });
- */
-
-/** api: constructor
- * .. class:: PrintMapPanel
- *
- * A map panel that controls scale and center of a print page. Based on the
- * current view (i.e. layers and extent) of a source map, this panel will be
- * sized according to the aspect ratio of the print page. As the user zooms
- * and pans in the :class:`GeoExt.PrintMapPanel`, the print page will update
- * its scale and center accordingly. If the scale on the print page changes
- * (e.g. by setting it using a combo box with a
- * :class:`GeoExt.plugins.PrintPageField`), the extent of the
- * :class:`GeoExt.PrintMapPanel` will be updated to match the page bounds.
- *
- * .. note:: The ``zoom``, ``center`` and ``extent`` config options will have
- * no affect, as they will be determined by the ``sourceMap``.
- */
-GeoExt.PrintMapPanel = Ext.extend(GeoExt.MapPanel, {
-
- /** api: config[map]
- * ``Object`` Optional configuration for the ``OpenLayers.Map`` object
- * that this PrintMapPanel creates. Useful e.g. to configure a map with a
- * custom set of controls, or to add a ``preaddlayer`` listener for
- * filtering out layer types that cannot be printed.
- */
-
- /** api: config[sourceMap]
- * :class:`GeoExt.MapPanel` or ``OpenLayers.Map`` The map that is to be
- * printed.
- */
-
- /** private: property[sourceMap]
- * ``OpenLayers.Map``
- */
- sourceMap: null,
-
- /** api: config[printProvider]
- * :class:`GeoExt.data.PrintProvider` or ``Object`` PrintProvider to use
- * for printing. If an ``Object`` is provided, a new PrintProvider will
- * be created and configured with the object.
- *
- * .. note:: The PrintMapPanel requires the printProvider's capabilities
- * to be available upon initialization. This means that a PrintMapPanel
- * configured with an ``Object`` as ``printProvider`` will only work
- * when ``capabilities`` is provided in the printProvider's
- * configuration object. If ``printProvider`` is provided as an instance
- * of :class:`GeoExt.data.PrintProvider`, the capabilities must be
- * loaded before PrintMapPanel initialization.
- */
-
- /** api: property[printProvider]
- * :class:`GeoExt.data.PrintProvider` PrintProvider for this
- * PrintMapPanel.
- */
- printProvider: null,
-
- /** api: property[printPage]
- * :class:`GeoExt.data.PrintPage` PrintPage for this PrintMapPanel.
- * Read-only.
- */
- printPage: null,
-
- /** api: config[limitScales]
- * ``Boolean`` If set to true, the printPage cannot be set to scales that
- * would generate a preview in this :class:`GeoExt.PrintMapPanel` with a
- * completely different extent than the one that would appear on the
- * printed map. Default is false.
- */
-
- /** api: property[previewScales]
- * ``Ext.data.Store`` A data store with a subset of the printProvider's
- * scales. By default, this contains all the scales of the printProvider.
- * If ``limitScales`` is set to true, it will only contain print scales
- * that can properly be previewed with this :class:`GeoExt.PrintMapPanel`.
- */
- previewScales: null,
-
- /** api: config[center]
- * ``OpenLayers.LonLat`` or ``Array(Number)`` A location for the map
- * center. Do not set, as this will be overridden with the ``sourceMap``
- * center.
- */
- center: null,
-
- /** api: config[zoom]
- * ``Number`` An initial zoom level for the map. Do not set, because the
- * initial extent will be determined by the ``sourceMap``.
- */
- zoom: null,
-
- /** api: config[extent]
- * ``OpenLayers.Bounds or Array(Number)`` An initial extent for the map.
- * Do not set, because the initial extent will be determined by the
- * ``sourceMap``.
- */
- extent: null,
-
- /** private: property[currentZoom]
- * ``Number``
- */
- currentZoom: null,
-
- /**
- * private: method[initComponent]
- * private override
- */
- initComponent: function() {
- if(this.sourceMap instanceof GeoExt.MapPanel) {
- this.sourceMap = this.sourceMap.map;
- }
-
- if (!this.map) {
- this.map = {};
- }
- Ext.applyIf(this.map, {
- projection: this.sourceMap.getProjection(),
- maxExtent: this.sourceMap.getMaxExtent(),
- maxResolution: this.sourceMap.getMaxResolution(),
- units: this.sourceMap.getUnits()
- });
-
- if(!(this.printProvider instanceof GeoExt.data.PrintProvider)) {
- this.printProvider = new GeoExt.data.PrintProvider(
- this.printProvider);
- }
- this.printPage = new GeoExt.data.PrintPage({
- printProvider: this.printProvider
- });
-
- this.previewScales = new Ext.data.Store();
- this.previewScales.add(this.printProvider.scales.getRange());
-
- this.layers = [];
- var layer;
- Ext.each(this.sourceMap.layers, function(layer) {
- var clone = layer.clone();
- layer.getVisibility() === true && this.layers.push(clone);
- }, this);
-
- this.extent = this.sourceMap.getExtent();
-
- GeoExt.PrintMapPanel.superclass.initComponent.call(this);
-
- this.printProvider.on("layoutchange", this.syncSize, this);
- this.printPage.on("change", this.fitZoom, this);
- this.map.events.register("moveend", this, this.updatePage);
- },
-
- /** private: method[afterRender]
- * Private method called after the panel has been rendered.
- */
- afterRender: function() {
- GeoExt.PrintMapPanel.superclass.afterRender.apply(this, arguments);
- this.syncSize();
- if (this.initialConfig.limitScales === true) {
- if (!this.ownerCt) {
- this.calculatePreviewScales();
- } else {
- this.ownerCt.on({
- "afterlayout": {
- fn: this.calculatePreviewScales,
- scope: this,
- single: true
- }
- });
- }
- this.on("resize", this.calculatePreviewScales, this);
- }
- },
-
- /** private: method[adjustSize]
- * :param width: ``Number`` If not provided or 0, initialConfig.width will
- * be used.
- * :param height: ``Number`` If not provided or 0, initialConfig.height
- * will be used.
- * Private override - sizing this component always takes the aspect ratio
- * of the print page into account.
- */
- adjustSize: function(width, height) {
- var printSize = this.printProvider.layout.get("size");
- var ratio = printSize.width / printSize.height;
- // respect width & height when sizing according to the print page's
- // aspect ratio - do not exceed either, but don't take values for
- // granted if container is configured with autoWidth or autoHeight.
- var ownerCt = this.ownerCt;
- var targetWidth = (ownerCt && ownerCt.autoWidth) ? 0 :
- (width || this.initialConfig.width);
- var targetHeight = (ownerCt && ownerCt.autoHeight) ? 0 :
- (height || this.initialConfig.height);
- if (targetWidth) {
- height = targetWidth / ratio;
- if (targetHeight && height > targetHeight) {
- height = targetHeight;
- width = height * ratio;
- } else {
- width = targetWidth;
- }
- } else if (targetHeight) {
- width = targetHeight * ratio;
- height = targetHeight;
- }
-
- return {width: width, height: height};
- },
-
- /** private: method[fitZoom]
- * Fits this PrintMapPanel's zoom to the print scale.
- */
- fitZoom: function() {
- if (!this._updating && this.printPage.scale) {
- this._updating = true;
- var printBounds = this.printPage.getPrintExtent(this.map);
- this.currentZoom = this.map.getZoomForExtent(printBounds);
- this.map.zoomToExtent(printBounds);
- delete this._updating;
- }
- },
-
- /** private: method[updatePage]
- * updates the print page to match this PrintMapPanel's center and scale.
- */
- updatePage: function() {
- if (!this._updating) {
- var zoom = this.map.getZoom();
- this._updating = true;
- if (zoom === this.currentZoom) {
- this.printPage.setCenter(this.map.getCenter());
- } else {
- this.printPage.fit(this.map);
- }
- delete this._updating;
- this.currentZoom = zoom;
- }
- },
-
- /** private: method[calculatePreviewScales]
- */
- calculatePreviewScales: function() {
- this.previewScales.removeAll();
-
- this.printPage.suspendEvents();
- var scale = this.printPage.scale;
-
- // group print scales by the zoom level they would be previewed at
- var viewSize = this.map.getSize();
- var scalesByZoom = {};
- var zooms = [];
- this.printProvider.scales.each(function(rec) {
- this.printPage.setScale(rec);
- var extent = this.printPage.getPrintExtent(this.map);
- var zoom = this.map.getZoomForExtent(extent);
-
- var idealResolution = Math.max(
- extent.getWidth() / viewSize.w,
- extent.getHeight() / viewSize.h
- );
- var resolution = this.map.getResolutionForZoom(zoom);
- // the closer to the ideal resolution, the better the fit
- var diff = Math.abs(idealResolution - resolution);
- if (!(zoom in scalesByZoom) || scalesByZoom[zoom].diff > diff) {
- scalesByZoom[zoom] = {
- rec: rec,
- diff: diff
- };
- zooms.indexOf(zoom) == -1 && zooms.push(zoom);
- }
- }, this);
-
- // add only the preview scales that closely fit print extents
- for (var i=0, ii=zooms.length; i 0) {
- var maxScale = this.previewScales.getAt(0);
- var minScale = this.previewScales.getAt(this.previewScales.getCount()-1);
- if (scale.get("value") < minScale.get("value")) {
- this.printPage.setScale(minScale);
- } else if (scale.get("value") > maxScale.get("value")) {
- this.printPage.setScale(maxScale);
- }
- }
-
- this.fitZoom();
- },
-
- /** api: method[print]
- * :param options: ``Object`` options for
- * the :class:`GeoExt.data.PrintProvider` :: ``print`` method.
- *
- * Convenience method for printing the map, without the need to
- * interact with the printProvider and printPage.
- */
- print: function(options) {
- this.printProvider.print(this.map, [this.printPage], options);
- },
-
- /** private: method[beforeDestroy]
- */
- beforeDestroy: function() {
- this.map.events.unregister("moveend", this, this.updatePage);
- this.printPage.un("change", this.fitZoom, this);
- this.printProvider.un("layoutchange", this.syncSize, this);
- GeoExt.PrintMapPanel.superclass.beforeDestroy.apply(this, arguments);
- }
-});
-
-/** api: xtype = gx_printmappanel */
-Ext.reg('gx_printmappanel', GeoExt.PrintMapPanel);
-
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/UrlLegend.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/UrlLegend.js
deleted file mode 100644
index 38c2bba33b6..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/UrlLegend.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/LegendImage.js
- * @requires GeoExt/widgets/LayerLegend.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = UrlLegend
- */
-
-/** api: (extends)
- * GeoExt/widgets/LayerLegend.js
- */
-
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: UrlLegend(config)
- *
- * Show a legend image in a BoxComponent and make sure load errors are
- * dealt with.
- */
-GeoExt.UrlLegend = Ext.extend(GeoExt.LayerLegend, {
-
- /** private: method[initComponent]
- * Initializes the legend image component.
- */
- initComponent: function() {
- GeoExt.UrlLegend.superclass.initComponent.call(this);
- this.add(new GeoExt.LegendImage({
- url: this.layerRecord.get("legendURL")
- }));
- },
-
- /** private: method[update]
- * Private override
- */
- update: function() {
- GeoExt.UrlLegend.superclass.update.apply(this, arguments);
- this.items.get(1).setUrl(this.layerRecord.get("legendURL"));
- }
-
-});
-
-/** private: method[supports]
- * Private override
- */
-GeoExt.UrlLegend.supports = function(layerRecord) {
- return layerRecord.get("legendURL") != null;
-};
-
-/** api: legendtype = gx_urllegend */
-GeoExt.LayerLegend.types["gx_urllegend"] = GeoExt.UrlLegend;
-
-/** api: xtype = gx_urllegend */
-Ext.reg('gx_urllegend', GeoExt.UrlLegend);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/VectorLegend.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/VectorLegend.js
deleted file mode 100644
index 3ec9f6cda24..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/VectorLegend.js
+++ /dev/null
@@ -1,671 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/FeatureRenderer.js
- * @requires GeoExt/widgets/LayerLegend.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = VectorLegend
- */
-
-/** api: (extends)
- * GeoExt/widgets/LayerLegend.js
- */
-
-Ext.namespace('GeoExt');
-
-/** api: constructor
- * .. class:: VectorLegend(config)
- *
- * Create a vector legend.
- */
-GeoExt.VectorLegend = Ext.extend(GeoExt.LayerLegend, {
-
- /** api: config[layerRecord]
- * :class:`GeoExt.data.LayerRecord`
- * The record containing a vector layer that this legend will be based on.
- * One of ``layerRecord``, ``layer``, or ``rules`` must be specified in
- * the config.
- */
- layerRecord: null,
-
- /** api: config[layer]
- * ``OpenLayers.Layer.Vector``
- * The layer that this legend will be based on. One of ``layer``,
- * ``rules``, or ``layerRecord`` must be specified in the config.
- */
- layer: null,
-
- /** api: config[rules]
- * ``Array(OpenLayers.Rule)``
- * List of rules. One of ``rules``, ``layer``, or ``layerRecord`` must be
- * specified in the config. The ``symbolType`` property must also be
- * provided if only ``rules`` are given in the config.
- */
- rules: null,
-
- /** api: config[symbolType]
- * ``String``
- * The symbol type for legend swatches. Must be one of ``"Point"``,
- * ``"Line"``, or ``"Polygon"``. If not provided, the ``layer`` or
- * ``layerRecord`` config property must be specified, and the geometry type
- * of the first feature found on the layer will be used. If a rule does
- * not have a symbolizer for ``symbolType``, we look at the symbolizers
- * for the rule, and see if it has a ``"Point"``, ``"Line"`` or
- * ``"Polygon"`` symbolizer, which we use for rendering a swatch of the
- * respective geometry type.
- */
- symbolType: null,
-
- /** api: config[untitledPrefix]
- * ``String``
- * The prefix to use as a title for rules with no title or
- * name. Default is ``"Untitled "``. Prefix will be appended with a
- * number that corresponds to the index of the rule (1 for first rule).
- */
- untitledPrefix: "Untitled ",
-
- /** api: config[clickableSymbol]
- * ``Boolean``
- * Set cursor style to "pointer" for symbolizers. Register for
- * the ``symbolclick`` event to handle clicks. Note that click events
- * are fired regardless of this value. If ``false``, no cursor style will
- * be set. Default is ``false``.
- */
- clickableSymbol: false,
-
- /** api: config[clickableTitle]
- * ``Boolean``
- * Set cursor style to "pointer" for rule titles. Register for
- * the ``titleclick`` event to handle clicks. Note that click events
- * are fired regardless of this value. If ``false``, no cursor style will
- * be set. Default is ``false``.
- */
- clickableTitle: false,
-
- /** api: config[selectOnClick]
- * ``Boolean``
- * Set to true if a rule should be selected by clicking on the
- * symbol or title. Selection will trigger the ruleselected event, and
- * a click on a selected rule will unselect it and trigger the
- * ``ruleunselected`` event. Default is ``false``.
- */
- selectOnClick: false,
-
- /** api: config[enableDD]
- * ``Boolean``
- * Allow drag and drop of rules. Default is ``false``.
- */
- enableDD: false,
-
- /** api: config[bodyBorder]
- * ``Boolean``
- * Show a border around the legend panel. Default is ``false``.
- */
- bodyBorder: false,
-
- /** private: property[feature]
- * ``OpenLayers.Feature.Vector``
- * Cached feature for rendering.
- */
- feature: null,
-
- /** private: property[selectedRule]
- * ``OpenLayers.Rule``
- * The rule that is currently selected.
- */
- selectedRule: null,
-
- /** private: property[currentScaleDenominator]
- * ``Number``
- * The current scale denominator of any map associated with this
- * legend. Use :meth`setCurrentScaleDenominator` to change this. If not
- * set an entry for each rule will be rendered. If set, only rules that
- * apply for the given scale will be rendered.
- */
- currentScaleDenominator: null,
-
- /** private: method[initComponent]
- * Initializes the Vector legend.
- */
- initComponent: function() {
- GeoExt.VectorLegend.superclass.initComponent.call(this);
- if (this.layerRecord) {
- this.layer = this.layerRecord.getLayer();
- if (this.layer.map) {
- this.currentScaleDenominator = this.layer.map.getScale();
- this.layer.map.events.on({
- "zoomend": this.onMapZoom,
- scope: this
- });
- }
- }
-
- // determine symbol type
- if (!this.symbolType) {
- if (this.feature) {
- this.symbolType = this.symbolTypeFromFeature(this.feature);
- } else if (this.layer) {
- if (this.layer.features.length > 0) {
- var feature = this.layer.features[0].clone();
- feature.attributes = {};
- this.feature = feature;
- this.symbolType = this.symbolTypeFromFeature(this.feature);
- } else {
- this.layer.events.on({
- featuresadded: this.onFeaturesAdded,
- scope: this
- });
- }
- }
- }
-
- // set rules if not provided
- if (this.layer && this.feature && !this.rules) {
- this.setRules();
- }
-
- this.rulesContainer = new Ext.Container({
- autoEl: {}
- });
-
- this.add(this.rulesContainer);
-
- this.addEvents(
- /** api: event[titleclick]
- * Fires when a rule title is clicked.
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule whose title was clicked.
- */
- "titleclick",
-
- /** api: event[symbolclick]
- * Fires when a rule symbolizer is clicked.
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule whose symbol was clicked.
- */
- "symbolclick",
-
- /** api: event[ruleclick]
- * Fires when a rule entry is clicked (fired with symbolizer or
- * title click).
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule that was clicked.
- */
- "ruleclick",
-
- /** api: event[ruleselected]
- * Fires when a rule is clicked and ``selectOnClick`` is set to
- * ``true``.
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule that was selected.
- */
- "ruleselected",
-
- /** api: event[ruleunselected]
- * Fires when the selected rule is clicked and ``selectOnClick``
- * is set to ``true``, or when a rule is unselected by selecting a
- * different one.
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule that was unselected.
- */
- "ruleunselected",
-
- /** api: event[rulemoved]
- * Fires when a rule is moved.
- *
- * Listener arguments:
- *
- * * comp - :class:`GeoExt.VectorLegend`` This component.
- * * rule - ``OpenLayers.Rule`` The rule that was moved.
- */
- "rulemoved"
- );
-
- this.update();
- },
-
- /** private: method[onMapZoom]
- * Listener for map zoomend.
- */
- onMapZoom: function() {
- this.setCurrentScaleDenominator(
- this.layer.map.getScale()
- );
- },
-
- /** private: method[symbolTypeFromFeature]
- * :arg feature: ``OpenLayers.Feature.Vector``
- *
- * Determine the symbol type given a feature.
- */
- symbolTypeFromFeature: function(feature) {
- var match = feature.geometry.CLASS_NAME.match(/Point|Line|Polygon/);
- return (match && match[0]) || "Point";
- },
-
- /** private: method[onFeaturesAdded]
- * Set as a one time listener for the ``featuresadded`` event on the layer
- * if it was provided with no features originally.
- */
- onFeaturesAdded: function() {
- this.layer.events.un({
- featuresadded: this.onFeaturesAdded,
- scope: this
- });
- var feature = this.layer.features[0].clone();
- feature.attributes = {};
- this.feature = feature;
- this.symbolType = this.symbolTypeFromFeature(this.feature);
- if (!this.rules) {
- this.setRules();
- }
- this.update();
- },
-
- /** private: method[setRules]
- * Sets the ``rules`` property for this. This is called when the component
- * is constructed without rules. Rules will be derived from the layer's
- * style map if it has one.
- */
- setRules: function() {
- var style = this.layer.styleMap && this.layer.styleMap.styles["default"];
- if (!style) {
- style = new OpenLayers.Style();
- }
- if (style.rules.length === 0) {
- this.rules = [
- new OpenLayers.Rule({
- symbolizer: style.createSymbolizer(this.feature)
- })
- ];
- } else {
- this.rules = style.rules;
- }
- },
-
- /** api: method[setCurrentScaleDenominator]
- * :arg scale: ``Number`` The scale denominator.
- *
- * Set the current scale denominator. This will hide entries for any
- * rules that don't apply at the current scale.
- */
- setCurrentScaleDenominator: function(scale) {
- if (scale !== this.currentScaleDenominator) {
- this.currentScaleDenominator = scale;
- this.update();
- }
- },
-
- /** private: method[getRuleEntry]
- * :arg rule: ``OpenLayers.Rule``
- * :returns: ``Ext.Container``
- *
- * Get the item corresponding to the rule.
- */
- getRuleEntry: function(rule) {
- return this.rulesContainer.items.get(this.rules.indexOf(rule));
- },
-
- /** private: method[addRuleEntry]
- * :arg rule: ``OpenLayers.Rule``
- * :arg noDoLayout: ``Boolean`` Don't call doLayout after adding rule.
- * Default is ``false``.
- *
- * Add a new rule entry in the rules container. This
- * method does not add the rule to the rules array.
- */
- addRuleEntry: function(rule, noDoLayout) {
- this.rulesContainer.add(this.createRuleEntry(rule));
- if (!noDoLayout) {
- this.doLayout();
- }
- },
-
- /** private: method[removeRuleEntry]
- * :arg rule: ``OpenLayers.Rule``
- * :arg noDoLayout: ``Boolean`` Don't call doLayout after removing rule.
- * Default is ``false``.
- *
- * Remove a rule entry from the rules container, this
- * method assumes the rule is in the rules array, and
- * it does not remove the rule from the rules array.
- */
- removeRuleEntry: function(rule, noDoLayout) {
- var ruleEntry = this.getRuleEntry(rule);
- if (ruleEntry) {
- this.rulesContainer.remove(ruleEntry);
- if (!noDoLayout) {
- this.doLayout();
- }
- }
- },
-
- /** private: method[selectRuleEntry]
- */
- selectRuleEntry: function(rule) {
- var newSelection = rule != this.selectedRule;
- if (this.selectedRule) {
- this.unselect();
- }
- if (newSelection) {
- var ruleEntry = this.getRuleEntry(rule);
- ruleEntry.body.addClass("x-grid3-row-selected");
- this.selectedRule = rule;
- this.fireEvent("ruleselected", this, rule);
- }
- },
-
- /** private: method[unselect]
- */
- unselect: function() {
- this.rulesContainer.items.each(function(item, i) {
- if (this.rules[i] == this.selectedRule) {
- item.body.removeClass("x-grid3-row-selected");
- this.selectedRule = null;
- this.fireEvent("ruleunselected", this, this.rules[i]);
- }
- }, this);
- },
-
- /** private: method[createRuleEntry]
- */
- createRuleEntry: function(rule) {
- var applies = true;
- if (this.currentScaleDenominator != null) {
- if (rule.minScaleDenominator) {
- applies = applies && (this.currentScaleDenominator >= rule.minScaleDenominator);
- }
- if (rule.maxScaleDenominator) {
- applies = applies && (this.currentScaleDenominator < rule.maxScaleDenominator);
- }
- }
- return {
- xtype: "panel",
- layout: "column",
- border: false,
- hidden: !applies,
- bodyStyle: this.selectOnClick ? {cursor: "pointer"} : undefined,
- defaults: {
- border: false
- },
- items: [
- this.createRuleRenderer(rule),
- this.createRuleTitle(rule)
- ],
- listeners: {
- render: function(comp){
- this.selectOnClick && comp.getEl().on({
- click: function(comp){
- this.selectRuleEntry(rule);
- },
- scope: this
- });
- if (this.enableDD == true) {
- this.addDD(comp);
- }
- },
- scope: this
- }
- };
- },
-
- /** private: method[createRuleRenderer]
- * :arg rule: ``OpenLayers.Rule``
- * :returns: ``GeoExt.FeatureRenderer``
- *
- * Create a renderer for the rule.
- */
- createRuleRenderer: function(rule) {
- var types = [this.symbolType, "Point", "Line", "Polygon"];
- var type, haveType;
- var symbolizers = rule.symbolizers;
- if (!symbolizers) {
- // TODO: remove this when OpenLayers.Symbolizer is used everywhere
- var symbolizer = rule.symbolizer;
- for (var i=0, len=types.length; i targetPos) {
- cls = "gx-ruledrag-insert-above";
- } else if (sourcePos < targetPos) {
- cls = "gx-ruledrag-insert-below";
- }
- cls && target.addClass(cls);
- return Ext.dd.DragZone.prototype.onDragEnter.apply(this, arguments);
- },
- onDragDrop: function(e, targetId) {
- panel.moveRule(ct.items.indexOf(component),
- ct.items.indexOf(Ext.getCmp(targetId)));
- return Ext.dd.DragZone.prototype.onDragDrop.apply(this, arguments);
- },
- getDragData: function(e) {
- var sourceEl = e.getTarget(".x-column-inner");
- if(sourceEl) {
- var d = sourceEl.cloneNode(true);
- d.id = Ext.id();
- return {
- sourceEl: sourceEl,
- repairXY: Ext.fly(sourceEl).getXY(),
- ddel: d
- }
- }
- }
- });
- new Ext.dd.DropTarget(component.getEl(), {
- ddGroup: ct.id,
- notifyDrop: function() {
- return true;
- }
- });
- },
-
- /** api: method[update]
- * Update rule titles and symbolizers.
- */
- update: function() {
- GeoExt.VectorLegend.superclass.update.apply(this, arguments);
- if (this.symbolType && this.rules) {
- if (this.rulesContainer.items) {
- var comp;
- for (var i=this.rulesContainer.items.length-1; i>=0; --i) {
- comp = this.rulesContainer.getComponent(i);
- this.rulesContainer.remove(comp, true);
- }
- }
- for (var i=0, ii=this.rules.length; i 0) {
- if(styleName) {
- Ext.each(styles, function(s) {
- url = (s.name == styleName && s.legend) && s.legend.href;
- return !url;
- });
- } else if(this.defaultStyleIsFirst === true && !styleNames &&
- !layer.params.SLD && !layer.params.SLD_BODY) {
- url = styles[0].legend && styles[0].legend.href;
- }
- }
- if(!url) {
- url = layer.getFullRequestString({
- REQUEST: "GetLegendGraphic",
- WIDTH: null,
- HEIGHT: null,
- EXCEPTIONS: "application/vnd.ogc.se_xml",
- LAYER: layerName,
- LAYERS: null,
- STYLE: (styleName !== '') ? styleName: null,
- STYLES: null,
- SRS: null,
- FORMAT: null
- });
- }
- // add scale parameter - also if we have the url from the record's
- // styles data field and it is actually a GetLegendGraphic request.
- if(this.useScaleParameter === true &&
- url.toLowerCase().indexOf("request=getlegendgraphic") != -1) {
- var scale = layer.map.getScale();
- url = Ext.urlAppend(url, "SCALE=" + scale);
- }
- var params = this.baseParams || {};
- Ext.applyIf(params, {FORMAT: 'image/gif'});
- if(url.indexOf('?') > 0) {
- url = Ext.urlEncode(params, url);
- }
-
- return url;
- },
-
- /** private: method[update]
- * Update the legend, adding, removing or updating
- * the per-sublayer box component.
- */
- update: function() {
- var layer = this.layerRecord.getLayer();
- // In some cases, this update function is called on a layer
- // that has just been removed, see ticket #238.
- // The following check bypass the update if map is not set.
- if(!(layer && layer.map)) {
- return;
- }
- GeoExt.WMSLegend.superclass.update.apply(this, arguments);
-
- var layerNames, layerName, i, len;
-
- layerNames = [layer.params.LAYERS].join(",").split(",");
-
- var destroyList = [];
- var textCmp = this.items.get(0);
- this.items.each(function(cmp) {
- i = layerNames.indexOf(cmp.itemId);
- if(i < 0 && cmp != textCmp) {
- destroyList.push(cmp);
- } else if(cmp !== textCmp){
- layerName = layerNames[i];
- var newUrl = this.getLegendUrl(layerName, layerNames);
- if(!OpenLayers.Util.isEquivalentUrl(newUrl, cmp.url)) {
- cmp.setUrl(newUrl);
- }
- }
- }, this);
- for(i = 0, len = destroyList.length; i`_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to render a slider outside the map viewport:
- *
- * .. code-block:: javascript
- *
- * var slider = new GeoExt.ZoomSlider({
- * renderTo: document.body,
- * width: 200,
- * map: map
- * });
- *
- * Sample code to add a slider to a map panel:
- *
- * .. code-block:: javascript
- *
- * var panel = new GeoExt.MapPanel({
- * renderTo: document.body,
- * height: 300,
- * width: 400,
- * map: {
- * controls: [new OpenLayers.Control.Navigation()]
- * },
- * layers: [new OpenLayers.Layer.WMS(
- * "Global Imagery",
- * "http://maps.opengeo.org/geowebcache/service/wms",
- * {layers: "bluemarble"}
- * )],
- * extent: [-5, 35, 15, 55],
- * items: [{
- * xtype: "gx_zoomslider",
- * aggressive: true,
- * vertical: true,
- * height: 100,
- * x: 10,
- * y: 20
- * }]
- * });
- */
-
-/** api: constructor
- * .. class:: ZoomSlider(config)
- *
- * Create a slider for controlling a map's zoom level.
- */
-GeoExt.ZoomSlider = Ext.extend(Ext.Slider, {
-
- /** api: config[map]
- * ``OpenLayers.Map`` or :class:`GeoExt.MapPanel`
- * The map that the slider controls.
- */
- map: null,
-
- /** api: config[baseCls]
- * ``String``
- * The CSS class name for the slider elements. Default is "gx-zoomslider".
- */
- baseCls: "gx-zoomslider",
-
- /** api: config[aggressive]
- * ``Boolean``
- * If set to true, the map is zoomed as soon as the thumb is moved. Otherwise
- * the map is zoomed when the thumb is released (default).
- */
- aggressive: false,
-
- /** private: property[updating]
- * ``Boolean``
- * The slider position is being updated by itself (based on map zoomend).
- */
- updating: false,
-
- /** private: method[initComponent]
- * Initialize the component.
- */
- initComponent: function() {
- GeoExt.ZoomSlider.superclass.initComponent.call(this);
-
- if(this.map) {
- if(this.map instanceof GeoExt.MapPanel) {
- this.map = this.map.map;
- }
- this.bind(this.map);
- }
-
- if (this.aggressive === true) {
- this.on('change', this.changeHandler, this);
- } else {
- this.on('changecomplete', this.changeHandler, this);
- }
- this.on("beforedestroy", this.unbind, this);
- },
-
- /** private: method[onRender]
- * Override onRender to set base css class.
- */
- onRender: function() {
- GeoExt.ZoomSlider.superclass.onRender.apply(this, arguments);
- this.el.addClass(this.baseCls);
- },
-
- /** private: method[afterRender]
- * Override afterRender because the render event is fired too early
- * to call update.
- */
- afterRender : function(){
- Ext.Slider.superclass.afterRender.apply(this, arguments);
- this.update();
- },
-
- /** private: method[addToMapPanel]
- * :param panel: :class:`GeoExt.MapPanel`
- *
- * Called by a MapPanel if this component is one of the items in the panel.
- */
- addToMapPanel: function(panel) {
- this.on({
- render: function() {
- var el = this.getEl();
- el.setStyle({
- position: "absolute",
- zIndex: panel.map.Z_INDEX_BASE.Control
- });
- el.on({
- mousedown: this.stopMouseEvents,
- click: this.stopMouseEvents
- });
- },
- afterrender: function() {
- this.bind(panel.map);
- },
- scope: this
- });
- },
-
- /** private: method[stopMouseEvents]
- * :param e: ``Object``
- */
- stopMouseEvents: function(e) {
- e.stopEvent();
- },
-
- /** private: method[removeFromMapPanel]
- * :param panel: :class:`GeoExt.MapPanel`
- *
- * Called by a MapPanel if this component is one of the items in the panel.
- */
- removeFromMapPanel: function(panel) {
- var el = this.getEl();
- el.un("mousedown", this.stopMouseEvents, this);
- el.un("click", this.stopMouseEvents, this);
- this.unbind();
- },
-
- /** private: method[bind]
- * :param map: ``OpenLayers.Map``
- */
- bind: function(map) {
- this.map = map;
- this.map.events.on({
- zoomend: this.update,
- changebaselayer: this.initZoomValues,
- scope: this
- });
- if(this.map.baseLayer) {
- this.initZoomValues();
- this.update();
- }
- },
-
- /** private: method[unbind]
- */
- unbind: function() {
- if(this.map) {
- this.map.events.un({
- zoomend: this.update,
- changebaselayer: this.initZoomValues,
- scope: this
- });
- }
- },
-
- /** private: method[initZoomValues]
- * Set the min/max values for the slider if not set in the config.
- */
- initZoomValues: function() {
- var layer = this.map.baseLayer;
- if(this.initialConfig.minValue === undefined) {
- this.minValue = layer.minZoomLevel || 0;
- }
- if(this.initialConfig.maxValue === undefined) {
- this.maxValue = layer.minZoomLevel == null ?
- layer.numZoomLevels - 1 : layer.maxZoomLevel;
- }
- },
-
- /** api: method[getZoom]
- * :return: ``Number`` The map zoom level.
- *
- * Get the zoom level for the associated map based on the slider value.
- */
- getZoom: function() {
- return this.getValue();
- },
-
- /** api: method[getScale]
- * :return: ``Number`` The map scale denominator.
- *
- * Get the scale denominator for the associated map based on the slider value.
- */
- getScale: function() {
- return OpenLayers.Util.getScaleFromResolution(
- this.map.getResolutionForZoom(this.getValue()),
- this.map.getUnits()
- );
- },
-
- /** api: method[getResolution]
- * :return: ``Number`` The map resolution.
- *
- * Get the resolution for the associated map based on the slider value.
- */
- getResolution: function() {
- return this.map.getResolutionForZoom(this.getValue());
- },
-
- /** private: method[changeHandler]
- * Registered as a listener for slider changecomplete. Zooms the map.
- */
- changeHandler: function() {
- if(this.map && !this.updating) {
- this.map.zoomTo(this.getValue());
- }
- },
-
- /** private: method[update]
- * Registered as a listener for map zoomend. Updates the value of the slider.
- */
- update: function() {
- if(this.rendered && this.map) {
- this.updating = true;
- this.setValue(this.map.getZoom());
- this.updating = false;
- }
- }
-
-});
-
-/** api: xtype = gx_zoomslider */
-Ext.reg('gx_zoomslider', GeoExt.ZoomSlider);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form.js
deleted file mode 100644
index 873d6622af5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form.js
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.form");
-
-/** private: function[toFilter]
- * :param form: ``Ext.form.BasicForm|Ext.form.FormPanel``
- * :param logicalOp: ``String`` Either ``OpenLayers.Filter.Logical.AND`` or
- * ``OpenLayers.Filter.Logical.OR``, set to
- * ``OpenLayers.Filter.Logical.AND`` if null or undefined
- * :param wildcard: ``Integer`` Determines the wildcard behaviour of like
- * queries. This behaviour can either be: none, prepend, append or both.
- *
- * :return: ``OpenLayers.Filter``
- *
- * Create an {OpenLayers.Filter} object from a {Ext.form.BasicForm}
- * or a {Ext.form.FormPanel} instance.
- */
-GeoExt.form.toFilter = function(form, logicalOp, wildcard) {
- if(form instanceof Ext.form.FormPanel) {
- form = form.getForm();
- }
- var filters = [], values = form.getValues(false);
- for(var prop in values) {
- var s = prop.split("__");
-
- var value = values[prop], type;
-
- if(s.length > 1 &&
- (type = GeoExt.form.toFilter.FILTER_MAP[s[1]]) !== undefined) {
- prop = s[0];
- } else {
- type = OpenLayers.Filter.Comparison.EQUAL_TO;
- }
-
- if (type === OpenLayers.Filter.Comparison.LIKE) {
- switch(wildcard) {
- case GeoExt.form.ENDS_WITH:
- value = '.*' + value;
- break;
- case GeoExt.form.STARTS_WITH:
- value += '.*';
- break;
- case GeoExt.form.CONTAINS:
- value = '.*' + value + '.*';
- break;
- default:
- // do nothing, just take the value
- break;
- }
- }
-
- filters.push(
- new OpenLayers.Filter.Comparison({
- type: type,
- value: value,
- property: prop
- })
- );
- }
-
- return new OpenLayers.Filter.Logical({
- type: logicalOp || OpenLayers.Filter.Logical.AND,
- filters: filters
- });
-};
-
-/** private: constant[FILTER_MAP]
- * An object mapping operator strings as found in field names to
- * ``OpenLayers.Filter.Comparison`` types.
- */
-GeoExt.form.toFilter.FILTER_MAP = {
- "eq": OpenLayers.Filter.Comparison.EQUAL_TO,
- "ne": OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
- "lt": OpenLayers.Filter.Comparison.LESS_THAN,
- "le": OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
- "gt": OpenLayers.Filter.Comparison.GREATER_THAN,
- "ge": OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
- "like": OpenLayers.Filter.Comparison.LIKE
-};
-
-GeoExt.form.ENDS_WITH = 1;
-GeoExt.form.STARTS_WITH = 2;
-GeoExt.form.CONTAINS = 3;
-
-/** private: function[recordToField]
- * :param record: ``Ext.data.Record``, typically from an attributeStore
- *
- * :return: ``Object`` An object literal with a xtype property, use
- * ``Ext.ComponentMgr.create`` (or ``Ext.create`` in Ext 3) to create
- * an ``Ext.form.Field`` from this object.
- *
- * This function can be used to create an ``Ext.form.Field`` from
- * an ``Ext.data.Record`` containing name, type, restriction and
- * label fields.
- */
-GeoExt.form.recordToField = function(record) {
- var type = record.get("type");
-
- if(typeof type === "object" && type.xtype) {
- // we have an xtype'd object literal in the type
- // field, just return it
- return type;
- }
-
- var field;
-
- var name = record.get("name");
- var label = record.get("label");
- var restriction = record.get("restriction") || {};
-
- // use name for label if label isn't defined in the record
- if(label == null) {
- label = name;
- }
-
- type = type.split(":").pop(); // remove ns prefix
-
- var r = GeoExt.form.recordToField.REGEXES;
-
- if(type.match(r["text"])) {
- var maxLength = restriction["maxLength"] !== undefined ?
- parseFloat(restriction["maxLength"]) : undefined;
- var minLength = restriction["minLength"] !== undefined ?
- parseFloat(restriction["minLength"]) : undefined;
- field = {
- xtype: "textfield",
- name: name,
- fieldLabel: label,
- maxLength: maxLength,
- minLength: minLength
- };
- } else if(type.match(r["number"])) {
- var maxValue = restriction["maxInclusive"] !== undefined ?
- parseFloat(restriction["maxInclusive"]) : undefined;
- var minValue = restriction["minInclusive"] !== undefined ?
- parseFloat(restriction["minInclusive"]) : undefined;
- field = {
- xtype: "numberfield",
- name: name,
- fieldLabel: label,
- maxValue: maxValue,
- minValue: minValue
- };
- } else if(type.match(r["boolean"])) {
- field = {
- xtype: "checkbox",
- name: name,
- boxLabel: label
- };
- } else if(type.match(r["date"])) {
- field = {
- xtype: "datefield",
- fieldLabel: label,
- name: name
- };
- }
-
- return field;
-}
-
-/** private: constant[REGEXES]
- * ``Object`` Regular expressions for determining what type
- * of field to create from an attribute record.
- */
-GeoExt.form.recordToField.REGEXES = {
- "text": new RegExp(
- "^(text|string)$", "i"
- ),
- "number": new RegExp(
- "^(number|float|decimal|double|int|long|integer|short)$", "i"
- ),
- "boolean": new RegExp(
- "^(boolean)$", "i"
- ),
- "date": new RegExp(
- "^(dateTime)$", "i"
- )
-};
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/BasicForm.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/BasicForm.js
deleted file mode 100644
index ac5c9cde410..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/BasicForm.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/form/SearchAction.js
- */
-
-/** api: (define)
- * module = GeoExt.form
- * class = BasicForm
- * base_link = `Ext.form.BasicForm `_
- */
-
-Ext.namespace("GeoExt.form");
-
-/** api: constructor
- * .. class:: BasicForm(config)
- *
- * A specific ``Ext.form.BasicForm`` whose doAction method creates
- * a :class:`GeoExt.form.SearchAction` if it is passed the string
- * "search" as its first argument.
- *
- * In most cases one would not use this class directly, but
- * :class:`GeoExt.form.FormPanel` instead.
- */
-GeoExt.form.BasicForm = Ext.extend(Ext.form.BasicForm, {
- /** private: property[protocol]
- * ``OpenLayers.Protocol`` The protocol configured in this
- * instance.
- */
- protocol: null,
-
- /**
- * private: property[prevResponse]
- * ``OpenLayers.Protocol.Response`` The response return by a call to
- * protocol.read method.
- */
- prevResponse: null,
-
- /**
- * api: config[autoAbort]
- * ``Boolean`` Tells if pending requests should be aborted
- * when a new action is performed.
- */
- autoAbort: true,
-
- /** api: method[doAction]
- * :param action: ``String or Ext.form.Action`` Either the name
- * of the action or a ``Ext.form.Action`` instance.
- * :param options: ``Object`` The options passed to the Action
- * constructor.
- * :return: :class:`GeoExt.form.BasicForm` This form.
- *
- * Performs the action, if the string "search" is passed as the
- * first argument then a :class:`GeoExt.form.SearchAction` is created.
- */
- doAction: function(action, options) {
- if(action == "search") {
- options = Ext.applyIf(options || {}, {
- protocol: this.protocol,
- abortPrevious: this.autoAbort
- });
- action = new GeoExt.form.SearchAction(this, options);
- }
- return GeoExt.form.BasicForm.superclass.doAction.call(
- this, action, options
- );
- },
-
- /** api: method[search]
- * :param options: ``Object`` The options passed to the Action
- * constructor.
- * :return: :class:`GeoExt.form.BasicForm` This form.
- *
- * Shortcut to do a search action.
- */
- search: function(options) {
- return this.doAction("search", options);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/FormPanel.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/FormPanel.js
deleted file mode 100644
index 8fca747e9f1..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/FormPanel.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.form
- * class = FormPanel
- * base_link = `Ext.form.FormPanel `_
- */
-
-/**
- * @include GeoExt/widgets/form/BasicForm.js
- */
-
-Ext.namespace("GeoExt.form");
-
-/** api: example
- * Sample code showing how to use a GeoExt form panel.
- *
- * .. code-block:: javascript
- *
- * var formPanel = new GeoExt.form.FormPanel({
- * renderTo: "formpanel",
- * protocol: new OpenLayers.Protocol.WFS({
- * url: "http://publicus.opengeo.org/geoserver/wfs",
- * featureType: "tasmania_roads",
- * featureNS: "http://www.openplans.org/topp"
- * }),
- * items: [{
- * xtype: "textfield",
- * name: "name__ilike",
- * value: "mont"
- * }, {
- * xtype: "textfield",
- * name: "elevation__ge",
- * value: "2000"
- * }],
- * listeners: {
- * actioncomplete: function(form, action) {
- * // this listener triggers when the search request
- * // is complete, the OpenLayers.Protocol.Response
- * // resulting from the request is available
- * // in "action.response"
- * }
- * }
- * });
- *
- * formPanel.addButton({
- * text: "search",
- * handler: function() {
- * this.search();
- * },
- * scope: formPanel
- * });
- */
-
-/** api: constructor
- * .. class:: FormPanel(config)
- *
- * A specific ``Ext.form.FormPanel`` whose internal form is a
- * :class:`GeoExt.form.BasicForm` instead of ``Ext.form.BasicForm``.
- * One would use this form to do search requests through
- * an ``OpenLayers.Protocol`` object (``OpenLayers.Protocol.WFS``
- * for example).
- *
- * Look at :class:`GeoExt.form.SearchAction` to understand how
- * form fields must be named for appropriate filters to be
- * passed to the protocol.
- */
-GeoExt.form.FormPanel = Ext.extend(Ext.form.FormPanel, {
- /** api: config[protocol]
- * ``OpenLayers.Protocol`` The protocol instance this form panel
- * is configured with, actions resulting from this form
- * will be performed through the protocol.
- */
- protocol: null,
-
- /** private: method[createForm]
- * Create the internal :class:`GeoExt.form.BasicForm` instance.
- */
- createForm: function() {
- delete this.initialConfig.listeners;
- return new GeoExt.form.BasicForm(null, this.initialConfig);
- },
-
- /** api: method[search]
- * :param options: ``Object`` The options passed to the
- * :class:`GeoExt.form.SearchAction` constructor.
- *
- * Shortcut to the internal form's search method.
- */
- search: function(options) {
- this.getForm().search(options);
- }
-});
-
-/** api: xtype = gx_formpanel */
-Ext.reg("gx_formpanel", GeoExt.form.FormPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/SearchAction.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/SearchAction.js
deleted file mode 100644
index 75e4c4eccd9..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/form/SearchAction.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.form
- * class = SearchAction
- * base_link = `Ext.form.Action `_
- */
-
-/**
- * @include GeoExt/widgets/form.js
- */
-
-Ext.namespace("GeoExt.form");
-
-/** api: example
- * Sample code showing how to use a GeoExt SearchAction with an Ext form panel:
- *
- * .. code-block:: javascript
- *
- * var formPanel = new Ext.form.Panel({
- * renderTo: "formpanel",
- * items: [{
- * xtype: "textfield",
- * name: "name__like",
- * value: "mont"
- * }, {
- * xtype: "textfield",
- * name: "elevation__ge",
- * value: "2000"
- * }]
- * });
- *
- * var searchAction = new GeoExt.form.SearchAction(formPanel.getForm(), {
- * protocol: new OpenLayers.Protocol.WFS({
- * url: "http://publicus.opengeo.org/geoserver/wfs",
- * featureType: "tasmania_roads",
- * featureNS: "http://www.openplans.org/topp"
- * }),
- * abortPrevious: true
- * });
- *
- * formPanel.getForm().doAction(searchAction, {
- * callback: function(response) {
- * // response.features includes the features read
- * // from the server through the protocol
- * }
- * });
- */
-
-/** api: constructor
- * .. class:: SearchAction(form, options)
- *
- * A specific ``Ext.form.Action`` to be used when using a form to do
- * trigger search requests througn an ``OpenLayers.Protocol``.
- *
- * Arguments:
- *
- * * form ``Ext.form.BasicForm`` A basic form instance.
- * * options ``Object`` Options passed to the protocol'read method
- * One can add an abortPrevious property to these options, if set
- * to true, the abort method will be called on the protocol if
- * there's a pending request.
- *
- * When run this action builds an ``OpenLayers.Filter`` from the form
- * and passes this filter to its protocol's read method. The form fields
- * must be named after a specific convention, so that an appropriate
- * ``OpenLayers.Filter.Comparison`` filter is created for each
- * field.
- *
- * For example a field with the name ``foo__like`` would result in an
- * ``OpenLayers.Filter.Comparison`` of type
- * ``OpenLayers.Filter.Comparison.LIKE`` being created.
- *
- * Here is the convention:
- *
- * * ``__eq: OpenLayers.Filter.Comparison.EQUAL_TO``
- * * ``__ne: OpenLayers.Filter.Comparison.NOT_EQUAL_TO``
- * * ``__lt: OpenLayers.Filter.Comparison.LESS_THAN``
- * * ``__le: OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO``
- * * ``__gt: OpenLayers.Filter.Comparison.GREATER_THAN``
- * * ``__ge: OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO``
- * * ``__like: OpenLayers.Filter.Comparison.LIKE``
- *
- * In most cases your would not directly create ``GeoExt.form.SearchAction``
- * objects, but use :class:`GeoExt.form.FormPanel` instead.
- */
-GeoExt.form.SearchAction = Ext.extend(Ext.form.Action, {
- /** private: property[type]
- * ``String`` The action type string.
- */
- type: "search",
-
- /** api: property[response]
- * ``OpenLayers.Protocol.Response`` A reference to the response
- * resulting from the search request. Read-only.
- */
- response: null,
-
- /** private */
- constructor: function(form, options) {
- GeoExt.form.SearchAction.superclass.constructor.call(this, form, options);
- },
-
- /** private: method[run]
- * Run the action.
- */
- run: function() {
- var o = this.options;
- var f = GeoExt.form.toFilter(this.form, o.logicalOp, o.wildcard);
- if(o.clientValidation === false || this.form.isValid()){
-
- if (o.abortPrevious && this.form.prevResponse) {
- o.protocol.abort(this.form.prevResponse);
- }
-
- this.form.prevResponse = o.protocol.read(
- Ext.applyIf({
- filter: f,
- callback: this.handleResponse,
- scope: this
- }, o)
- );
-
- } else if(o.clientValidation !== false){
- // client validation failed
- this.failureType = Ext.form.Action.CLIENT_INVALID;
- this.form.afterAction(this, false);
- }
- },
-
- /** private: method[handleResponse]
- * :param response: ``OpenLayers.Protocol.Response`` The response
- * object.
- *
- * Handle the response to the search query.
- */
- handleResponse: function(response) {
- this.form.prevResponse = null;
- this.response = response;
- if(response.success()) {
- this.form.afterAction(this, true);
- } else {
- this.form.afterAction(this, false);
- }
- var o = this.options;
- if(o.callback) {
- o.callback.call(o.scope, response);
- }
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/grid/FeatureSelectionModel.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/grid/FeatureSelectionModel.js
deleted file mode 100644
index 85247eb0285..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/grid/FeatureSelectionModel.js
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt.grid
- * class = FeatureSelectionModel
- * base_link = `Ext.grid.RowSelectionModel `_
- */
-
-Ext.namespace('GeoExt.grid');
-
-/** api: constructor
- * .. class:: FeatureSelectionModel
- *
- * A row selection model which enables automatic selection of features
- * in the map when rows are selected in the grid and vice-versa.
- */
-
-/** api: example
- * Sample code to create a feature grid with a feature selection model:
- *
- * .. code-block:: javascript
- *
- * var gridPanel = new Ext.grid.GridPanel({
- * title: "Feature Grid",
- * region: "east",
- * store: store,
- * width: 320,
- * columns: [{
- * header: "Name",
- * width: 200,
- * dataIndex: "name"
- * }, {
- * header: "Elevation",
- * width: 100,
- * dataIndex: "elevation"
- * }],
- * sm: new GeoExt.grid.FeatureSelectionModel()
- * });
- */
-
-GeoExt.grid.FeatureSelectionModelMixin = function() {
- return {
- /** api: config[autoActivateControl]
- * ``Boolean`` If true the select feature control is activated and
- * deactivated when binding and unbinding. Defaults to true.
- */
- autoActivateControl: true,
-
- /** api: config[layerFromStore]
- * ``Boolean`` If true, and if the constructor is passed neither a
- * layer nor a select feature control, a select feature control is
- * created using the layer found in the grid's store. Set it to
- * false if you want to manually bind the selection model to a
- * layer. Defaults to true.
- */
- layerFromStore: true,
-
- /** api: config[selectControl]
- *
- * ``OpenLayers.Control.SelectFeature`` A select feature control. If not
- * provided one will be created. If provided any "layer" config option
- * will be ignored, and its "multiple" option will be used to configure
- * the selectionModel. If an ``Object`` is provided here, it will be
- * passed as config to the SelectFeature constructor, and the "layer"
- * config option will be used for the layer.
- */
-
- /** private: property[selectControl]
- * ``OpenLayers.Control.SelectFeature`` The select feature control
- * instance.
- */
- selectControl: null,
-
- /** api: config[layer]
- * ``OpenLayers.Layer.Vector`` The vector layer used for the creation of
- * the select feature control, it must already be added to the map. If not
- * provided, the layer bound to the grid's store, if any, will be used.
- */
-
- /** private: property[bound]
- * ``Boolean`` Flag indicating if the selection model is bound.
- */
- bound: false,
-
- /** private: property[superclass]
- * ``Ext.grid.AbstractSelectionModel`` Our superclass.
- */
- superclass: null,
-
- /** private */
- constructor: function(config) {
- config = config || {};
- if(config.selectControl instanceof OpenLayers.Control.SelectFeature) {
- if(!config.singleSelect) {
- var ctrl = config.selectControl;
- config.singleSelect = !(ctrl.multiple || !!ctrl.multipleKey);
- }
- } else if(config.layer instanceof OpenLayers.Layer.Vector) {
- this.selectControl = this.createSelectControl(
- config.layer, config.selectControl
- );
- delete config.layer;
- delete config.selectControl;
- }
- this.superclass = arguments.callee.superclass;
- this.superclass.constructor.call(this, config);
- },
-
- /** private: method[initEvents]
- *
- * Called after this.grid is defined
- */
- initEvents: function() {
- this.superclass.initEvents.call(this);
- if(this.layerFromStore) {
- var layer = this.grid.getStore() && this.grid.getStore().layer;
- if(layer &&
- !(this.selectControl instanceof OpenLayers.Control.SelectFeature)) {
- this.selectControl = this.createSelectControl(
- layer, this.selectControl
- );
- }
- }
- if(this.selectControl) {
- this.bind(this.selectControl);
- }
- },
-
- /** private: createSelectControl
- * :param layer: ``OpenLayers.Layer.Vector`` The vector layer.
- * :param config: ``Object`` The select feature control config.
- *
- * Create the select feature control.
- */
- createSelectControl: function(layer, config) {
- config = config || {};
- var singleSelect = config.singleSelect !== undefined ?
- config.singleSelect : this.singleSelect;
- config = OpenLayers.Util.extend({
- toggle: true,
- multipleKey: singleSelect ? null :
- (Ext.isMac ? "metaKey" : "ctrlKey")
- }, config);
- var selectControl = new OpenLayers.Control.SelectFeature(
- layer, config
- );
- layer.map.addControl(selectControl);
- return selectControl;
- },
-
- /** api: method[bind]
- *
- * :param obj: ``OpenLayers.Layer.Vector`` or
- * ``OpenLayers.Control.SelectFeature`` The object this selection model
- * should be bound to, either a vector layer or a select feature
- * control.
- * :param options: ``Object`` An object with a "controlConfig"
- * property referencing the configuration object to pass to the
- * ``OpenLayers.Control.SelectFeature`` constructor.
- * :return: ``OpenLayers.Control.SelectFeature`` The select feature
- * control this selection model uses.
- *
- * Bind the selection model to a layer or a SelectFeature control.
- */
- bind: function(obj, options) {
- if(!this.bound) {
- options = options || {};
- this.selectControl = obj;
- if(obj instanceof OpenLayers.Layer.Vector) {
- this.selectControl = this.createSelectControl(
- obj, options.controlConfig
- );
- }
- if(this.autoActivateControl) {
- this.selectControl.activate();
- }
- var layers = this.getLayers();
- for(var i = 0, len = layers.length; i < len; i++) {
- layers[i].events.on({
- featureselected: this.featureSelected,
- featureunselected: this.featureUnselected,
- scope: this
- });
- }
- this.on("rowselect", this.rowSelected, this);
- this.on("rowdeselect", this.rowDeselected, this);
- this.bound = true;
- }
- return this.selectControl;
- },
-
- /** api: method[unbind]
- * :return: ``OpenLayers.Control.SelectFeature`` The select feature
- * control this selection model used.
- *
- * Unbind the selection model from the layer or SelectFeature control.
- */
- unbind: function() {
- var selectControl = this.selectControl;
- if(this.bound) {
- var layers = this.getLayers();
- for(var i = 0, len = layers.length; i < len; i++) {
- layers[i].events.un({
- featureselected: this.featureSelected,
- featureunselected: this.featureUnselected,
- scope: this
- });
- }
- this.un("rowselect", this.rowSelected, this);
- this.un("rowdeselect", this.rowDeselected, this);
- if(this.autoActivateControl) {
- selectControl.deactivate();
- }
- this.selectControl = null;
- this.bound = false;
- }
- return selectControl;
- },
-
- /** private: method[featureSelected]
- * :param evt: ``Object`` An object with a feature property referencing
- * the selected feature.
- */
- featureSelected: function(evt) {
- if(!this._selecting) {
- var store = this.grid.store;
- var row = store.findBy(function(record, id) {
- return record.getFeature() == evt.feature;
- });
- if(row != -1 && !this.isSelected(row)) {
- this._selecting = true;
- this.selectRow(row, !this.singleSelect);
- this._selecting = false;
- // focus the row in the grid to ensure it is visible
- this.grid.getView().focusRow(row);
- }
- }
- },
-
- /** private: method[featureUnselected]
- * :param evt: ``Object`` An object with a feature property referencing
- * the unselected feature.
- */
- featureUnselected: function(evt) {
- if(!this._selecting) {
- var store = this.grid.store;
- var row = store.findBy(function(record, id) {
- return record.getFeature() == evt.feature;
- });
- if(row != -1 && this.isSelected(row)) {
- this._selecting = true;
- this.deselectRow(row);
- this._selecting = false;
- this.grid.getView().focusRow(row);
- }
- }
- },
-
- /** private: method[rowSelected]
- * :param model: ``Ext.grid.RowSelectModel`` The row select model.
- * :param row: ``Integer`` The row index.
- * :param record: ``Ext.data.Record`` The record.
- */
- rowSelected: function(model, row, record) {
- var feature = record.getFeature();
- if(!this._selecting && feature) {
- var layers = this.getLayers();
- for(var i = 0, len = layers.length; i < len; i++) {
- if(layers[i].selectedFeatures.indexOf(feature) == -1) {
- this._selecting = true;
- this.selectControl.select(feature);
- this._selecting = false;
- break;
- }
- }
- }
- },
-
- /** private: method[rowDeselected]
- * :param model: ``Ext.grid.RowSelectModel`` The row select model.
- * :param row: ``Integer`` The row index.
- * :param record: ``Ext.data.Record`` The record.
- */
- rowDeselected: function(model, row, record) {
- var feature = record.getFeature();
- if(!this._selecting && feature) {
- var layers = this.getLayers();
- for(var i = 0, len = layers.length; i < len; i++) {
- if(layers[i].selectedFeatures.indexOf(feature) != -1) {
- this._selecting = true;
- this.selectControl.unselect(feature);
- this._selecting = false;
- break;
- }
- }
- }
- },
-
- /** private: method[getLayers]
- * Return the layers attached to the select feature control.
- */
- getLayers: function() {
- return this.selectControl.layers || [this.selectControl.layer];
- }
- };
-};
-
-GeoExt.grid.FeatureSelectionModel = Ext.extend(
- Ext.grid.RowSelectionModel,
- new GeoExt.grid.FeatureSelectionModelMixin
-);
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js
deleted file mode 100644
index 062ce102962..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @requires GeoExt/widgets/tips/SliderTip.js
- */
-
-/** api: (extends)
- * GeoExt/widgets/tips/SliderTip.js
- */
-
-/** api: (define)
- * module = GeoExt
- * class = LayerOpacitySliderTip
- * base_link = `Ext.Tip `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a slider tip to display scale and resolution:
- *
- * .. code-block:: javascript
- *
- * var slider = new GeoExt.LayerOpacitySlider({
- * renderTo: document.body,
- * width: 200,
- * layer: layer,
- * plugins: new GeoExt.LayerOpacitySliderTip({
- * template: "Opacity: {opacity}%"
- * })
- * });
- */
-
-/** api: constructor
- * .. class:: LayerOpacitySliderTip(config)
- *
- * Create a slider tip displaying :class:`GeoExt.LayerOpacitySlider` values.
- */
-GeoExt.LayerOpacitySliderTip = Ext.extend(GeoExt.SliderTip, {
-
- /** api: config[template]
- * ``String``
- * Template for the tip. Can be customized using the following keywords in
- * curly braces:
- *
- * * ``opacity`` - the opacity value in percent.
- */
- template: '
{opacity}%
',
-
- /** private: property[compiledTemplate]
- * ``Ext.Template``
- * The template compiled from the ``template`` string on init.
- */
- compiledTemplate: null,
-
- /** private: method[init]
- * Called to initialize the plugin.
- */
- init: function(slider) {
- this.compiledTemplate = new Ext.Template(this.template);
- GeoExt.LayerOpacitySliderTip.superclass.init.call(this, slider);
- },
-
- /** private: method[getText]
- * :param slider: ``Ext.Slider`` The slider this tip is attached to.
- */
- getText: function(thumb) {
- var data = {
- opacity: thumb.value
- };
- return this.compiledTemplate.apply(data);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/SliderTip.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/SliderTip.js
deleted file mode 100644
index c986f1c282c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tips/SliderTip.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: (define)
- * module = GeoExt
- * class = SliderTip
- * base_link = `Ext.Tip `_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a slider tip to display slider value on hover:
- *
- * .. code-block:: javascript
- *
- * var slider = new Ext.Slider({
- * renderTo: document.body,
- * width: 200,
- * plugins: new GeoExt.SliderTip()
- * });
- */
-
-/** api: constructor
- * .. class:: SliderTip(config)
- *
- * Create a slider tip displaying ``Ext.Slider`` values over slider thumbs.
- */
-GeoExt.SliderTip = Ext.extend(Ext.slider.Tip, {
-
- /** api: config[hover]
- * ``Boolean``
- * Display the tip when hovering over the thumb. If ``false``, tip will
- * only be displayed while dragging. Default is ``true``.
- */
- hover: true,
-
- /** api: config[minWidth]
- * ``Number``
- * Minimum width of the tip. Default is 10.
- */
- minWidth: 10,
-
- /** api: config[offsets]
- * ``Array(Number)``
- * A two item list that provides x, y offsets for the tip. Default is
- * [0, -10].
- */
- offsets : [0, -10],
-
- /** private: property[dragging]
- * ``Boolean``
- * The thumb is currently being dragged.
- */
- dragging: false,
-
- /** private: method[init]
- * :param slider: ``Ext.Slider``
- *
- * Called when the plugin is initialized.
- */
- init: function(slider) {
- GeoExt.SliderTip.superclass.init.apply(this, arguments);
- if (this.hover) {
- slider.on("render", this.registerThumbListeners, this);
- }
- this.slider = slider;
- },
-
- /** private: method[registerThumbListeners]
- * Set as a listener for 'render' if hover is true.
- */
- registerThumbListeners: function() {
- var thumb, el;
- for (var i=0, ii=this.slider.thumbs.length; i`_
- */
-Ext.namespace("GeoExt");
-
-/** api: example
- * Sample code to create a slider tip to display scale and resolution:
- *
- * .. code-block:: javascript
- *
- * var slider = new GeoExt.ZoomSlider({
- * renderTo: document.body,
- * width: 200,
- * map: map,
- * plugins: new GeoExt.ZoomSliderTip({
- * template: "Scale: 1 : {scale} Resolution: {resolution}"
- * })
- * });
- */
-
-/** api: constructor
- * .. class:: ZoomSliderTip(config)
- *
- * Create a slider tip displaying :class:`GeoExt.ZoomSlider` values.
- */
-GeoExt.ZoomSliderTip = Ext.extend(GeoExt.SliderTip, {
-
- /** api: config[template]
- * ``String``
- * Template for the tip. Can be customized using the following keywords in
- * curly braces:
- *
- * * ``zoom`` - the zoom level
- * * ``resolution`` - the resolution
- * * ``scale`` - the scale denominator
- */
- template: '
Zoom Level: {zoom}
' +
- '
Resolution: {resolution}
' +
- '
Scale: 1 : {scale}
',
-
- /** private: property[compiledTemplate]
- * ``Ext.Template``
- * The template compiled from the ``template`` string on init.
- */
- compiledTemplate: null,
-
- /** private: method[init]
- * Called to initialize the plugin.
- */
- init: function(slider) {
- this.compiledTemplate = new Ext.Template(this.template);
- GeoExt.ZoomSliderTip.superclass.init.call(this, slider);
- },
-
- /** private: method[getText]
- * :param slider: ``Ext.Slider`` The slider this tip is attached to.
- */
- getText: function(thumb) {
- var data = {
- zoom: thumb.value,
- resolution: this.slider.getResolution(),
- scale: Math.round(this.slider.getScale())
- };
- return this.compiledTemplate.apply(data);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/BaseLayerContainer.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/BaseLayerContainer.js
deleted file mode 100644
index 6338201e8a1..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/BaseLayerContainer.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @requires GeoExt/widgets/tree/LayerContainer.js
- */
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = BaseLayerContainer
- */
-
-/** api: (extends)
- * GeoExt/widgets/tree/LayerContainer.js
- */
-
-/** api: constructor
- * .. class:: BaseLayerContainer
- *
- * A layer container that will collect all base layers of an OpenLayers
- * map. Only layers that have displayInLayerSwitcher set to true will be
- * included. The childrens' iconCls defaults to "gx-tree-baselayer-icon".
- *
- * Children will be rendered with a radio button instead of a checkbox,
- * showing the user that only one base layer can be active at a time.
- *
- * To use this node type in ``TreePanel`` config, set nodeType to
- * "gx_baselayercontainer".
- */
-GeoExt.tree.BaseLayerContainer = Ext.extend(GeoExt.tree.LayerContainer, {
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- config = Ext.applyIf(config || {}, {
- text: "Base Layer",
- loader: {}
- });
- config.loader = Ext.applyIf(config.loader, {
- baseAttrs: Ext.applyIf(config.loader.baseAttrs || {}, {
- iconCls: 'gx-tree-baselayer-icon',
- checkedGroup: 'baselayer'
- }),
- filter: function(record) {
- var layer = record.getLayer();
- return layer.displayInLayerSwitcher === true &&
- layer.isBaseLayer === true;
- }
- });
-
- GeoExt.tree.BaseLayerContainer.superclass.constructor.call(this,
- config);
- }
-});
-
-/**
- * NodeType: gx_baselayercontainer
- */
-Ext.tree.TreePanel.nodeTypes.gx_baselayercontainer = GeoExt.tree.BaseLayerContainer;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerContainer.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerContainer.js
deleted file mode 100644
index cab6b89b898..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerContainer.js
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/tree/LayerLoader.js
- */
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = LayerContainer
- * base_link = `Ext.tree.AsyncTreeNode `_
- */
-
-/** api: constructor
- * .. class:: LayerContainer
- *
- * A subclass of ``Ext.tree.AsyncTreeNode`` that will collect all layers of an
- * OpenLayers map. Only layers that have displayInLayerSwitcher set to true
- * will be included. The childrens' iconCls defaults to
- * "gx-tree-layer-icon".
- *
- * Note: if this container is loaded by an ``Ext.tree.TreeLoader``, the
- * ``applyLoader`` config option of that loader needs to be set to
- * "false". Also note that the list of available uiProviders will be
- * taken from the ownerTree if this container's loader is configured
- * without one.
- *
- * To use this node type in ``TreePanel`` config, set nodeType to
- * "gx_layercontainer".
- */
-GeoExt.tree.LayerContainer = Ext.extend(Ext.tree.AsyncTreeNode, {
-
- /** api: config[loader]
- * :class:`GeoExt.tree.LayerLoader` or ``Object`` The loader to use with
- * this container. If an ``Object`` is provided, a
- * :class:`GeoExt.tree.LayerLoader`, configured with the the properties
- * from the provided object, will be created.
- */
-
- /** api: config[layerStore]
- * :class:`GeoExt.data.LayerStore` The layer store containing layers to be
- * displayed in the container. If loader is not provided or provided as
- * ``Object``, this property will be set as the store option of the
- * loader. Otherwise it will be ignored.
- */
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- config = Ext.applyIf(config || {}, {
- text: "Layers"
- });
- this.loader = config.loader instanceof GeoExt.tree.LayerLoader ?
- config.loader :
- new GeoExt.tree.LayerLoader(Ext.applyIf(config.loader || {}, {
- store: config.layerStore
- }));
-
- GeoExt.tree.LayerContainer.superclass.constructor.call(this, config);
- },
-
- /** private: method[recordIndexToNodeIndex]
- * :param index: ``Number`` The record index in the layer store.
- * :return: ``Number`` The appropriate child node index for the record.
- */
- recordIndexToNodeIndex: function(index) {
- var store = this.loader.store;
- var count = store.getCount();
- var nodeCount = this.childNodes.length;
- var nodeIndex = -1;
- for(var i=count-1; i>=0; --i) {
- if(this.loader.filter(store.getAt(i)) === true) {
- ++nodeIndex;
- if(index === i || nodeIndex > nodeCount-1) {
- break;
- }
- }
- }
- return nodeIndex;
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- delete this.layerStore;
- GeoExt.tree.LayerContainer.superclass.destroy.apply(this, arguments);
- }
-});
-
-/**
- * NodeType: gx_layercontainer
- */
-Ext.tree.TreePanel.nodeTypes.gx_layercontainer = GeoExt.tree.LayerContainer;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerLoader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerLoader.js
deleted file mode 100644
index 27985107ebc..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerLoader.js
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @include GeoExt/widgets/tree/LayerNode.js
- * @include GeoExt/widgets/tree/LayerContainer.js
- */
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = LayerLoader
- * base_link = `Ext.util.Observable `_
- */
-
-/** api: constructor
- * .. class:: LayerLoader
- *
- * A loader that will load all layers of a :class:`GeoExt.data.LayerStore`
- * By default, only layers that have displayInLayerSwitcher set to true
- * will be included. The childrens' iconCls defaults to
- * "gx-tree-layer-icon".
- */
-GeoExt.tree.LayerLoader = function(config) {
- Ext.apply(this, config);
- this.addEvents(
-
- /** api: event[beforeload]
- * Triggered before loading children. Return false to avoid
- * loading children.
- *
- * Listener arguments:
- *
- * * loader - :class:`GeoExt.tree.LayerLoader` this loader
- * * node - ``Ex.tree.TreeNode`` the node that this loader is
- * configured with
- */
- "beforeload",
-
- /** api: event[load]
- * Triggered after children wer loaded.
- *
- * Listener arguments:
- *
- * * loader - :class:`GeoExt.tree.LayerLoader` this loader
- * * node - ``Ex.tree.TreeNode`` the node that this loader is
- * configured with
- */
- "load"
- );
-
- GeoExt.tree.LayerLoader.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoExt.tree.LayerLoader, Ext.util.Observable, {
-
- /** api: config[store]
- * :class:`GeoExt.data.LayerStore`
- * The layer store containing layers to be added by this loader.
- */
- store: null,
-
- /** api: config[filter]
- * ``Function``
- * A function, called in the scope of this loader, with a layer record
- * as argument. Is expected to return true for layers to be loaded, false
- * otherwise. By default, the filter checks for displayInLayerSwitcher:
- *
- * .. code-block:: javascript
- *
- * filter: function(record) {
- * return record.getLayer().displayInLayerSwitcher == true
- * }
- */
- filter: function(record) {
- return record.getLayer().displayInLayerSwitcher == true;
- },
-
- /** api: config[baseAttrs]
- * An object containing attributes to be added to all nodes created by
- * this loader.
- */
- baseAttrs: null,
-
- /** api: config[uiProviders]
- * ``Object``
- * An optional object containing properties which specify custom
- * GeoExt.tree.LayerNodeUI implementations. If the optional uiProvider
- * attribute for child nodes is a string rather than a reference to a
- * TreeNodeUI implementation, then that string value is used as a
- * property name in the uiProviders object. If not provided, the
- * uiProviders object will be taken from the ownerTree's loader.
- */
- uiProviders: null,
-
- /** private: method[load]
- * :param node: ``Ext.tree.TreeNode`` The node to add children to.
- * :param callback: ``Function``
- */
- load: function(node, callback) {
- if(this.fireEvent("beforeload", this, node)) {
- this.removeStoreHandlers();
- while (node.firstChild) {
- node.removeChild(node.firstChild);
- }
-
- if(!this.uiProviders) {
- this.uiProviders = node.getOwnerTree().getLoader().uiProviders;
- }
-
- if(!this.store) {
- this.store = GeoExt.MapPanel.guess().layers;
- }
- this.store.each(function(record) {
- this.addLayerNode(node, record);
- }, this);
- this.addStoreHandlers(node);
-
- if(typeof callback == "function"){
- callback();
- }
-
- this.fireEvent("load", this, node);
- }
- },
-
- /** private: method[onStoreAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- * :param node: ``Ext.tree.TreeNode``
- *
- * Listener for the store's add event.
- */
- onStoreAdd: function(store, records, index, node) {
- if(!this._reordering) {
- var nodeIndex = node.recordIndexToNodeIndex(index+records.length-1);
- for(var i=0; i 1) {
- // find index by neighboring node in the same container
- var searchIndex = (index === 0) ? index + 1 : index - 1;
- newRecordIndex = this.store.findBy(function(r) {
- return newParent.childNodes[searchIndex].layer === r.getLayer();
- });
- index === 0 && newRecordIndex++;
- } else if(oldParent.parentNode === newParent.parentNode){
- // find index by last node of a container above
- var prev = newParent;
- do {
- prev = prev.previousSibling;
- } while (prev && !(prev instanceof GeoExt.tree.LayerContainer && prev.lastChild));
- if(prev) {
- newRecordIndex = this.store.findBy(function(r) {
- return prev.lastChild.layer === r.getLayer();
- });
- } else {
- // find indext by first node of a container below
- var next = newParent;
- do {
- next = next.nextSibling;
- } while (next && !(next instanceof GeoExt.tree.LayerContainer && next.firstChild));
- if(next) {
- newRecordIndex = this.store.findBy(function(r) {
- return next.firstChild.layer === r.getLayer();
- });
- }
- newRecordIndex++;
- }
- }
- if(newRecordIndex !== undefined) {
- this.store.insert(newRecordIndex, [record]);
- window.setTimeout(function() {
- newParent.reload();
- oldParent.reload();
- });
- } else {
- this.store.insert(oldRecordIndex, [record]);
- }
- delete newParent.loader._reordering;
- }
- delete this._reordering;
- },
-
- /** private: method[addStoreHandlers]
- * :param node: :class:`GeoExt.tree.LayerNode`
- */
- addStoreHandlers: function(node) {
- if(!this._storeHandlers) {
- this._storeHandlers = {
- "add": this.onStoreAdd.createDelegate(this, [node], true),
- "remove": this.onStoreRemove.createDelegate(this, [node], true)
- };
- for(var evt in this._storeHandlers) {
- this.store.on(evt, this._storeHandlers[evt], this);
- }
- }
- },
-
- /** private: method[removeStoreHandlers]
- */
- removeStoreHandlers: function() {
- if(this._storeHandlers) {
- for(var evt in this._storeHandlers) {
- this.store.un(evt, this._storeHandlers[evt], this);
- }
- delete this._storeHandlers;
- }
- },
-
- /** api: method[createNode]
- * :param attr: ``Object`` attributes for the new node
- *
- * Override this function for custom TreeNode node implementation, or to
- * modify the attributes at creation time.
- */
- createNode: function(attr) {
- if(this.baseAttrs){
- Ext.apply(attr, this.baseAttrs);
- }
- if(typeof attr.uiProvider == 'string'){
- attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
- }
- attr.nodeType = attr.nodeType || "gx_layer";
-
- return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr);
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- this.removeStoreHandlers();
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerNode.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerNode.js
deleted file mode 100644
index b6fa4f675ad..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerNode.js
+++ /dev/null
@@ -1,389 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.tree");
-
-/** private: constructor
- * .. class:: LayerNodeUI
- *
- * Place in a separate file if this should be documented.
- */
-GeoExt.tree.LayerNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
-
- /** private: method[constructor]
- */
- constructor: function(config) {
- GeoExt.tree.LayerNodeUI.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[render]
- * :param bulkRender: ``Boolean``
- */
- render: function(bulkRender) {
- var a = this.node.attributes;
- if (a.checked === undefined) {
- a.checked = this.node.layer.getVisibility();
- }
- GeoExt.tree.LayerNodeUI.superclass.render.apply(this, arguments);
- var cb = this.checkbox;
- if(a.checkedGroup) {
- // replace the checkbox with a radio button
- var radio = Ext.DomHelper.insertAfter(cb,
- [''].join(""));
- radio.defaultChecked = cb.defaultChecked;
- Ext.get(cb).remove();
- this.checkbox = radio;
- }
- this.enforceOneVisible();
- },
-
- /** private: method[onClick]
- * :param e: ``Object``
- */
- onClick: function(e) {
- if(e.getTarget('.x-tree-node-cb', 1)) {
- this.toggleCheck(this.isChecked());
- } else {
- GeoExt.tree.LayerNodeUI.superclass.onClick.apply(this, arguments);
- }
- },
-
- /** private: method[toggleCheck]
- * :param value: ``Boolean``
- */
- toggleCheck: function(value) {
- value = (value === undefined ? !this.isChecked() : value);
- GeoExt.tree.LayerNodeUI.superclass.toggleCheck.call(this, value);
-
- this.enforceOneVisible();
- },
-
- /** private: method[enforceOneVisible]
- *
- * Makes sure that only one layer is visible if checkedGroup is set.
- */
- enforceOneVisible: function() {
- var attributes = this.node.attributes;
- var group = attributes.checkedGroup;
- // If we are in the baselayer group, the map will take care of
- // enforcing visibility.
- if(group && group !== "gx_baselayer") {
- var layer = this.node.layer;
- var checkedNodes = this.node.getOwnerTree().getChecked();
- var checkedCount = 0;
- // enforce "not more than one visible"
- Ext.each(checkedNodes, function(n){
- var l = n.layer
- if(!n.hidden && n.attributes.checkedGroup === group) {
- checkedCount++;
- if(l != layer && attributes.checked) {
- l.setVisibility(false);
- }
- }
- });
- // enforce "at least one visible"
- if(checkedCount === 0 && attributes.checked == false) {
- layer.setVisibility(true);
- }
- }
- },
-
- /** private: method[appendDDGhost]
- * :param ghostNode ``DOMElement``
- *
- * For radio buttons, makes sure that we do not use the option group of
- * the original, otherwise only the original or the clone can be checked
- */
- appendDDGhost : function(ghostNode){
- var n = this.elNode.cloneNode(true);
- var radio = Ext.DomQuery.select("input[type='radio']", n);
- Ext.each(radio, function(r) {
- r.name = r.name + "_clone";
- });
- ghostNode.appendChild(n);
- }
-});
-
-
-/** api: (define)
- * module = GeoExt.tree
- * class = LayerNode
- * base_link = `Ext.tree.TreeNode `_
- */
-
-/** api: constructor
- * .. class:: LayerNode(config)
- *
- * A subclass of ``Ext.tree.TreeNode`` that is connected to an
- * ``OpenLayers.Layer`` by setting the node's layer property. Checking or
- * unchecking the checkbox of this node will directly affect the layer and
- * vice versa. The default iconCls for this node's icon is
- * "gx-tree-layer-icon", unless it has children.
- *
- * Setting the node's layer property to a layer name instead of an object
- * will also work. As soon as a layer is found, it will be stored as layer
- * property in the attributes hash.
- *
- * The node's text property defaults to the layer name.
- *
- * If the node has a checkedGroup attribute configured, it will be
- * rendered with a radio button instead of the checkbox. The value of
- * the checkedGroup attribute is a string, identifying the options group
- * for the node.
- *
- * To use this node type in a ``TreePanel`` config, set ``nodeType`` to
- * "gx_layer".
- */
-GeoExt.tree.LayerNode = Ext.extend(Ext.tree.AsyncTreeNode, {
-
- /** api: config[layer]
- * ``OpenLayers.Layer or String``
- * The layer that this layer node will
- * be bound to, or the name of the layer (has to match the layer's
- * name property). If a layer name is provided, ``layerStore`` also has
- * to be provided.
- */
-
- /** api: property[layer]
- * ``OpenLayers.Layer``
- * The layer this node is bound to.
- */
- layer: null,
-
- /** api: config[layerStore]
- * :class:`GeoExt.data.LayerStore` ``or "auto"``
- * The layer store containing the layer that this node represents. If set
- * to "auto", the node will query the ComponentManager for a
- * :class:`GeoExt.MapPanel`, take the first one it finds and take its layer
- * store. This property is only required if ``layer`` is provided as a
- * string.
- */
- layerStore: null,
-
- /** api: config[loader]
- * ``Ext.tree.TreeLoader|Object`` If provided, subnodes will be added to
- * this LayerNode. Obviously, only loaders that process an
- * ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord` (like
- * :class:`GeoExt.tree.LayerParamsLoader`) will actually generate child
- * nodes here. If provided as ``Object``, a
- * :class:`GeoExt.tree.LayerParamLoader` instance will be created, with
- * the provided object as configuration.
- */
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- config.leaf = config.leaf || !(config.children || config.loader);
-
- if(!config.iconCls && !config.children) {
- config.iconCls = "gx-tree-layer-icon";
- }
- if(config.loader && !(config.loader instanceof Ext.tree.TreeLoader)) {
- config.loader = new GeoExt.tree.LayerParamLoader(config.loader);
- }
-
- this.defaultUI = this.defaultUI || GeoExt.tree.LayerNodeUI;
-
- Ext.apply(this, {
- layer: config.layer,
- layerStore: config.layerStore
- });
- if (config.text) {
- this.fixedText = true;
- }
- GeoExt.tree.LayerNode.superclass.constructor.apply(this, arguments);
- },
-
- /** private: method[render]
- * :param bulkRender: ``Boolean``
- */
- render: function(bulkRender) {
- var layer = this.layer instanceof OpenLayers.Layer && this.layer;
- if(!layer) {
- // guess the store if not provided
- if(!this.layerStore || this.layerStore == "auto") {
- this.layerStore = GeoExt.MapPanel.guess().layers;
- }
- // now we try to find the layer by its name in the layer store
- var i = this.layerStore.findBy(function(o) {
- return o.get("title") == this.layer;
- }, this);
- if(i != -1) {
- // if we found the layer, we can assign it and everything
- // will be fine
- layer = this.layerStore.getAt(i).getLayer();
- }
- }
- if (!this.rendered || !layer) {
- var ui = this.getUI();
-
- if(layer) {
- this.layer = layer;
- // no DD and radio buttons for base layers
- if(layer.isBaseLayer) {
- this.draggable = false;
- Ext.applyIf(this.attributes, {
- checkedGroup: "gx_baselayer"
- });
- }
- if(!this.text) {
- this.text = layer.name;
- }
-
- ui.show();
- this.addVisibilityEventHandlers();
- } else {
- ui.hide();
- }
-
- if(this.layerStore instanceof GeoExt.data.LayerStore) {
- this.addStoreEventHandlers(layer);
- }
- }
- GeoExt.tree.LayerNode.superclass.render.apply(this, arguments);
- },
-
- /** private: method[addVisibilityHandlers]
- * Adds handlers that sync the checkbox state with the layer's visibility
- * state
- */
- addVisibilityEventHandlers: function() {
- this.layer.events.on({
- "visibilitychanged": this.onLayerVisibilityChanged,
- scope: this
- });
- this.on({
- "checkchange": this.onCheckChange,
- scope: this
- });
- },
-
- /** private: method[onLayerVisiilityChanged
- * handler for visibilitychanged events on the layer
- */
- onLayerVisibilityChanged: function() {
- if(!this._visibilityChanging) {
- this.getUI().toggleCheck(this.layer.getVisibility());
- }
- },
-
- /** private: method[onCheckChange]
- * :param node: ``GeoExt.tree.LayerNode``
- * :param checked: ``Boolean``
- *
- * handler for checkchange events
- */
- onCheckChange: function(node, checked) {
- if(checked != this.layer.getVisibility()) {
- this._visibilityChanging = true;
- var layer = this.layer;
- if(checked && layer.isBaseLayer && layer.map) {
- layer.map.setBaseLayer(layer);
- } else {
- layer.setVisibility(checked);
- }
- delete this._visibilityChanging;
- }
- },
-
- /** private: method[addStoreEventHandlers]
- * Adds handlers that make sure the node disappeares when the layer is
- * removed from the store, and appears when it is re-added.
- */
- addStoreEventHandlers: function() {
- this.layerStore.on({
- "add": this.onStoreAdd,
- "remove": this.onStoreRemove,
- "update": this.onStoreUpdate,
- scope: this
- });
- },
-
- /** private: method[onStoreAdd]
- * :param store: ``Ext.data.Store``
- * :param records: ``Array(Ext.data.Record)``
- * :param index: ``Number``
- *
- * handler for add events on the store
- */
- onStoreAdd: function(store, records, index) {
- var l;
- for(var i=0; i`_
- */
-
-/** api: constructor
- * .. class:: LayerParamLoader
- *
- * A loader that creates children from its node's layer
- * (``OpenLayers.Layer.HTTPRequest``) by items in one of the values in
- * the layer's params object.
- */
-GeoExt.tree.LayerParamLoader = function(config) {
- Ext.apply(this, config);
- this.addEvents(
-
- /** api: event[beforeload]
- * Triggered before loading children. Return false to avoid
- * loading children.
- *
- * Listener arguments:
- *
- * * loader - :class:`GeoExt.tree.LayerLoader` this loader
- * * node - ``Ex.tree.TreeNode`` the node that this loader is
- * configured with
- */
- "beforeload",
-
- /** api: event[load]
- * Triggered after children were loaded.
- *
- * Listener arguments:
- *
- * * loader - :class:`GeoExt.tree.LayerLoader` this loader
- * * node - ``Ex.tree.TreeNode`` the node that this loader is
- * configured with
- */
- "load"
- );
-
- GeoExt.tree.LayerParamLoader.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoExt.tree.LayerParamLoader, Ext.util.Observable, {
-
- /** api: config[param]
- * ``String`` Key for a param (key-value pair in the params object of the
- * layer) that this loader uses to create childnodes from its items. The
- * value can either be an ``Array`` or a ``String``, delimited by the
- * character (or string) provided as ``delimiter`` config option.
- */
-
- /** private: property[param]
- * ``String``
- */
- param: null,
-
- /** api: config[delimiter]
- * ``String`` Delimiter of the ``param``'s value's items. Default is
- * ``,`` (comma). If the ``param``'s value is an array, this property has
- * no effect.
- */
-
- /** private: property[delimiter]
- * ``String``
- */
- delimiter: ",",
-
- /** private: method[load]
- * :param node: ``Ext.tree.TreeNode`` The node to add children to.
- * :param callback: ``Function``
- */
- load: function(node, callback) {
- if(this.fireEvent("beforeload", this, node)) {
- while (node.firstChild) {
- node.removeChild(node.firstChild);
- }
-
- var paramValue =
- (node.layer instanceof OpenLayers.Layer.HTTPRequest) &&
- node.layer.params[this.param];
- if(paramValue) {
- var items = (paramValue instanceof Array) ?
- paramValue.slice() :
- paramValue.split(this.delimiter);
-
- Ext.each(items, function(item, index, allItems) {
- this.addParamNode(item, allItems, node);
- }, this);
- }
-
- if(typeof callback == "function"){
- callback();
- }
-
- this.fireEvent("load", this, node);
- }
- },
-
- /** private: method[addParamNode]
- * :param paramItem: ``String`` The param item that the child node will
- * represent.
- * :param allParamItems: ``Array`` The full list of param items.
- * :param node: :class:`GeoExt.tree.LayerNode`` The node that the param
- * node will be added to as child.
- *
- * Adds a child node representing a param value of the layer
- */
- addParamNode: function(paramItem, allParamItems, node) {
- var child = this.createNode({
- layer: node.layer,
- param: this.param,
- item: paramItem,
- allItems: allParamItems,
- delimiter: this.delimiter
- });
- var sibling = node.item(0);
- if(sibling) {
- node.insertBefore(child, sibling);
- } else {
- node.appendChild(child);
- }
- },
-
- /** api: method[createNode]
- * :param attr: ``Object`` attributes for the new node
- *
- * Override this function for custom TreeNode node implementation, or to
- * modify the attributes at creation time.
- */
- createNode: function(attr){
- if(this.baseAttrs){
- Ext.apply(attr, this.baseAttrs);
- }
- if(typeof attr.uiProvider == 'string'){
- attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);
- }
- attr.nodeType = attr.nodeType || "gx_layerparam";
-
- return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerParamNode.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerParamNode.js
deleted file mode 100644
index a4e2ada73e5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/LayerParamNode.js
+++ /dev/null
@@ -1,250 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = LayerParamNode
- * base_link = `Ext.tree.TreeNode `_
- */
-
-/** api: constructor
- * .. class:: LayerParamNode
- *
- * A subclass of ``Ext.tree.TreeNode`` that represents a value of a list of
- * values provided as one of an ``OpenLayers.Layer.HTTPRequest``'s params.
- * The default iconCls for this node's icon is "gx-tree-layerparam-icon".
- *
- * To use this node type in a ``TreePanel`` config, set ``nodeType`` to
- * "gx_layerparam".
- */
-GeoExt.tree.LayerParamNode = Ext.extend(Ext.tree.TreeNode, {
-
- /** api: config[layer]
- * ``OpenLayers.Layer.HTTPRequest|String`` The layer that this node
- * represents a subnode of. If provided as string, the string has to
- * match the title of one of the records in the ``layerStore``.
- */
-
- /** private: property[layer]
- * ``OpenLayers.Layer.HTTPRequest``
- */
- layer: null,
-
- /** api: config[layerStore]
- * :class:`GeoExt.data.LayerStore` Only used if layer is provided as
- * string. The store where we can find the layer. If not provided, the
- * store of a map panel found by ``GeoExt.MapPanel::guess`` will be used.
- */
-
- /** api: config[param]
- * ``String`` Key for a param (key-value pair in the params object of the
- * layer) that this node represents an item of. The value can either be an
- * ``Array`` or a ``String``, delimited by the character (or string)
- * provided as ``delimiter`` config option.
- */
-
- /** private: property[param]
- * ``String``
- */
- param: null,
-
- /** api: config[item]
- * ``String`` The param's value's item that this node represents.
- */
-
- /** private: property[item]
- * ``String``
- */
- item: null,
-
- /** api: config[delimiter]
- * ``String`` Delimiter of the ``param``'s value's items. Default is
- * ``,`` (comma). If the ``param``'s value is an array, this property
- * has no effect.
- */
-
- /** private: property[delimiter]
- * ``String``
- */
- delimiter: null,
-
- /** private: property[allItems]
- * ``Array`` All items in the param value.
- */
- allItems: null,
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(attributes) {
- var config = attributes || {};
- config.iconCls = config.iconCls || "gx-tree-layerparam-icon";
- config.text = config.text || config.item;
-
- this.param = config.param;
- this.item = config.item;
- this.delimiter = config.delimiter || ",";
- this.allItems = config.allItems;
-
- GeoExt.tree.LayerParamNode.superclass.constructor.apply(this, arguments);
-
- this.getLayer();
-
- if(this.layer) {
-
- // read items from layer if allItems isn't set
- // in the attributes
- if(!this.allItems) {
- this.allItems = this.getItemsFromLayer();
- }
-
- // if the "checked" attribute isn't set we derive
- // it from what we have in the layer. Else, we need
- // to update the layer param based on the value of
- // the "checked" attribute
- if(this.attributes.checked == null) {
- this.attributes.checked =
- this.layer.getVisibility() &&
- this.getItemsFromLayer().indexOf(this.item) >= 0;
- } else {
- this.onCheckChange(this, this.attributes.checked);
- }
-
- this.layer.events.on({
- "visibilitychanged": this.onLayerVisibilityChanged,
- scope: this
- });
-
- this.on({
- "checkchange": this.onCheckChange,
- scope: this
- });
- }
- },
-
- /** private: method[getLayer]
- * :return: ``OpenLayers.Layer.HTTPRequest`` the layer
- *
- * Sets this.layer and returns the layer.
- */
- getLayer: function() {
- if(!this.layer) {
- var layer = this.attributes.layer;
- if(typeof layer == "string") {
- var store = this.attributes.layerStore ||
- GeoExt.MapPanel.guess().layers;
- var i = store.findBy(function(o) {
- return o.get("title") == layer;
- });
- layer = i != -1 ? store.getAt(i).getLayer() : null;
- }
- this.layer = layer;
- }
- return this.layer;
- },
-
- /** private: method[getItemsFromLayer]
- * :return: ``Array`` the items of this node's layer's param
- */
- getItemsFromLayer: function() {
- var paramValue = this.layer.params[this.param];
- return paramValue instanceof Array ?
- paramValue :
- (paramValue ? paramValue.split(this.delimiter) : []);
- },
-
- /** private: method[createParams]
- * :param items: ``Array``
- * :return: ``Object`` The params object to pass to mergeNewParams
- */
- createParams: function(items) {
- var params = {};
- params[this.param] = this.layer.params[this.param] instanceof Array ?
- items :
- items.join(this.delimiter);
- return params;
- },
-
- /** private: method[onLayerVisibilityChanged]
- * Handler for visibilitychanged events on the layer.
- */
- onLayerVisibilityChanged: function() {
- if(this.getItemsFromLayer().length === 0) {
- this.layer.mergeNewParams(this.createParams(this.allItems));
- }
- var visible = this.layer.getVisibility();
- if(visible && this.getItemsFromLayer().indexOf(this.item) !== -1) {
- this.getUI().toggleCheck(true);
- }
- if(!visible) {
- this.layer.mergeNewParams(this.createParams([]));
- this.getUI().toggleCheck(false);
- }
- },
-
- /** private: method[onCheckChange]
- * :param node: :class:`GeoExt.tree.LayerParamNode``
- * :param checked: ``Boolean``
- *
- * Handler for checkchange events.
- */
- onCheckChange: function(node, checked) {
- var layer = this.layer;
-
- var newItems = [];
- var curItems = this.getItemsFromLayer();
- // if the layer is invisible, and a subnode is checked for the first
- // time, we need to pretend that no subnode param items are set.
- if(checked === true && layer.getVisibility() === false &&
- curItems.length === this.allItems.length) {
- curItems = [];
-
- }
- Ext.each(this.allItems, function(item) {
- if((item !== this.item && curItems.indexOf(item) !== -1) ||
- (checked === true && item === this.item)) {
- newItems.push(item);
- }
- }, this);
-
- var visible = (newItems.length > 0);
- // if there is something to display, we want to update the params
- // before the layer is turned on
- visible && layer.mergeNewParams(this.createParams(newItems));
- if(visible !== layer.getVisibility()) {
- layer.setVisibility(visible);
- }
- // if there is nothing to display, we want to update the params
- // when the layer is turned off, so we don't fire illegal requests
- // (i.e. param value being empty)
- (!visible) && layer.mergeNewParams(this.createParams([]));
- },
-
- /** private: method[destroy]
- */
- destroy: function() {
- var layer = this.layer;
- if (layer instanceof OpenLayers.Layer) {
- layer.events.un({
- "visibilitychanged": this.onLayerVisibilityChanged,
- scope: this
- });
- }
- delete this.layer;
-
- this.un("checkchange", this.onCheckChange, this);
-
- GeoExt.tree.LayerParamNode.superclass.destroy.apply(this, arguments);
- }
-});
-
-/**
- * NodeType: gx_layerparam
- */
-Ext.tree.TreePanel.nodeTypes.gx_layerparam = GeoExt.tree.LayerParamNode;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/OverlayLayerContainer.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/OverlayLayerContainer.js
deleted file mode 100644
index 729faf5de91..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/OverlayLayerContainer.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/**
- * @requires GeoExt/widgets/tree/LayerContainer.js
- */
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = OverlayLayerContainer
- */
-
-/** api: (extends)
- * GeoExt/widgets/tree/LayerContainer.js
- */
-
-/** api: constructor
- * .. class:: OverlayLayerContainer
- *
- * A layer container that will collect all overlay layers of an OpenLayers
- * map. Only layers that have displayInLayerSwitcher set to true will be
- * included.
- *
- * To use this node type in ``TreePanel`` config, set nodeType to
- * "gx_overlaylayercontainer".
- */
-GeoExt.tree.OverlayLayerContainer = Ext.extend(GeoExt.tree.LayerContainer, {
-
- /** private: method[constructor]
- * Private constructor override.
- */
- constructor: function(config) {
- config = Ext.applyIf(config || {}, {
- text: "Overlays"
- });
- config.loader = Ext.applyIf(config.loader || {}, {
- filter: function(record){
- var layer = record.getLayer();
- return layer.displayInLayerSwitcher === true &&
- layer.isBaseLayer === false;
- }
- });
-
- GeoExt.tree.OverlayLayerContainer.superclass.constructor.call(this,
- config);
- }
-});
-
-/**
- * NodeType: gx_overlaylayercontainer
- */
-Ext.tree.TreePanel.nodeTypes.gx_overlaylayercontainer = GeoExt.tree.OverlayLayerContainer;
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js
deleted file mode 100644
index 2090c1b2fa7..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = TreeNodeUIEventMixin
- */
-
-/** api: constructor
- * A mixin that adds events to TreeNodeUIs. With these events, tree plugins
- * can modify the node ui's DOM when it is rendered, and react to raw click
- * events on tree nodes.
- */
-
- /** api: example
- * Sample code to create a tree with a node that uses the
- * :class:`GeoExt.tree.TreeNodeUIEventMixin`:
- *
- * .. code-block:: javascript
- *
- * var UIClass = Ext.extend(
- * Ext.tree.TreeNodeUI,
- * GeoExt.tree.TreeNodeUIEventMixin
- * );
- * var tree = new Ext.tree.TreePanel({
- * root: {
- * nodeType: "node",
- * uiProvider: UIClass,
- * text: "My Node"
- * }
- * }
- */
-
-GeoExt.tree.TreeNodeUIEventMixin = function(){
- return {
-
- constructor: function(node) {
-
- node.addEvents(
-
- /** api: event[rendernode]
- * Fires on the tree when a node is rendered.
- *
- * Listener arguments:
- *
- * * node - ``Ext.TreeNode`` The rendered node.
- */
- "rendernode",
-
- /** api: event[rawclicknode]
- * Fires on the tree when a node is clicked.
- *
- * Listener arguments:
- *
- * * node - ``Ext.TreeNode`` The clicked node.
- * * event - ``Ext.EventObject`` The click event.
- */
- "rawclicknode"
- );
- this.superclass = arguments.callee.superclass;
- this.superclass.constructor.apply(this, arguments);
-
- },
-
- /** private: method[render]
- * :param bulkRender: ``Boolean``
- */
- render: function(bulkRender) {
- if(!this.rendered) {
- this.superclass.render.apply(this, arguments);
- this.fireEvent("rendernode", this.node);
- }
- },
-
- /** private: method[onClick]
- * :param e: ``Ext.EventObject``
- */
- onClick: function(e) {
- if(this.fireEvent("rawclicknode", this.node, e) !== false) {
- this.superclass.onClick.apply(this, arguments);
- }
- }
- }
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js b/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js
deleted file mode 100644
index 89287932fab..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-Ext.namespace("GeoExt.tree");
-
-/** api: (define)
- * module = GeoExt.tree
- * class = WMSCapabilitiesLoader
- * base_link = `Ext.tree.TreeLoader `_
- */
-
-/** api: constructor
- * .. class:: WMSCapabilitiesLoader
- *
- * A loader that will load create a tree of all layers of a Web Map
- * Service (WMS), maintaining its tree structure. Nodes created by this
- * loader are instances of ``Ext.tree.TreeNode``. If the WMS Capabilities
- * advertise a name for a layer, an OpenLayers.Layer.WMS instance will
- * be set on the node in its ``layer`` attribute.
- */
-GeoExt.tree.WMSCapabilitiesLoader = function(config) {
- Ext.apply(this, config);
- GeoExt.tree.WMSCapabilitiesLoader.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoExt.tree.WMSCapabilitiesLoader, Ext.tree.TreeLoader, {
-
- /** api: config[url]
- * ``String``
- * The online resource of the Web Map Service.
- */
- url: null,
-
- /** api: config[layerOptions]
- * ``Object``
- * Optional options to set on the WMS layers which will be created by
- * this loader.
- */
- layerOptions: null,
-
- /** api: config[layerParams]
- * ``Object``
- * Optional parameters to set on the WMS layers which will be created by
- * this loader.
- */
- layerParams: null,
-
- /** private: property[requestMethod]
- * ``String`` WMS GetCapabilities request needs to be done using HTTP GET
- */
- requestMethod: 'GET',
-
- /** private: method[getParams]
- * Private getParams override.
- */
- getParams: function(node) {
- return {'service': 'WMS', 'request': 'GetCapabilities'};
- },
-
- /** private: method[processResponse]
- * :param response: ``Object`` The XHR object
- * :param node: ``Ext.tree.TreeNode``
- * :param callback: ``Function``
- * :param scope: ``Object``
- *
- * Private processResponse override.
- */
- processResponse : function(response, node, callback, scope){
- var capabilities = new OpenLayers.Format.WMSCapabilities().read(
- response.responseXML || response.responseText);
- this.processLayer(capabilities.capability,
- capabilities.capability.request.getmap.href, node);
- if (typeof callback == "function") {
- callback.apply(scope || node, [node]);
- }
- },
-
- /** private: method[createWMSLayer]
- * :param layer: ``Object`` The layer object from the WMS GetCapabilities
- * parser
- * :param url: ``String`` The online resource of the WMS
- * :return: ``OpenLayers.Layer.WMS`` or ``null`` The WMS layer created or
- * null.
- *
- * Create a WMS layer which will be attached as an attribute to the
- * node.
- */
- createWMSLayer: function(layer, url) {
- if (layer.name) {
- return new OpenLayers.Layer.WMS( layer.title, url,
- OpenLayers.Util.extend({formats: layer.formats[0],
- layers: layer.name}, this.layerParams),
- OpenLayers.Util.extend({minScale: layer.minScale,
- queryable: layer.queryable, maxScale: layer.maxScale,
- metadata: layer
- }, this.layerOptions));
- } else {
- return null;
- }
- },
-
- /** private: method[processLayer]
- * :param layer: ``Object`` The layer object from the WMS GetCapabilities
- * parser
- * :param url: ``String`` The online resource of the WMS
- * :param node: ``Ext.tree.TreeNode``
- *
- * Recursive function to create the tree nodes for the layer structure
- * of a WMS GetCapabilities response.
- */
- processLayer: function(layer, url, node) {
- Ext.each(layer.nestedLayers, function(el) {
- var n = this.createNode({text: el.title || el.name,
- // use nodeType 'node' so no AsyncTreeNodes are created
- nodeType: 'node',
- layer: this.createWMSLayer(el, url),
- leaf: (el.nestedLayers.length === 0)});
- if(n){
- node.appendChild(n);
- }
- if (el.nestedLayers) {
- this.processLayer(el, url, n);
- }
- }, this);
- }
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.js b/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.js
deleted file mode 100644
index b3268eb8a0a..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
- *
- * Published under the BSD license.
- * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
- * of the license.
- */
-
-/** api: override = Ext.Ajax */
-(function() {
-
- /** private: function[createComplete]
- * ``Function``
- */
- var createComplete = function(fn, cb) {
- return function(request) {
- if(cb && cb[fn]) {
- cb[fn].call(cb.scope || window, {
- responseText: request.responseText,
- responseXML: request.responseXML,
- argument: cb.argument
- });
- }
- };
- };
-
- Ext.apply(Ext.lib.Ajax, {
- /** private: method[request]
- */
- request: function(method, uri, cb, data, options) {
- options = options || {};
- method = method || options.method;
- var hs = options.headers;
- if(options.xmlData) {
- if(!hs || !hs["Content-Type"]) {
- hs = hs || {};
- hs["Content-Type"] = "text/xml";
- }
- method = method || "POST";
- data = options.xmlData;
- } else if(options.jsonData) {
- if(!hs || !hs["Content-Type"]) {
- hs = hs || {};
- hs["Content-Type"] = "application/json";
- }
- method = method || "POST";
- data = typeof options.jsonData == "object" ?
- Ext.encode(options.jsonData) : options.jsonData;
- }
- // if POST method, options.form or options.params means
- // form-encoded data, so change content-type
- if ((method && method.toLowerCase() == "post") &&
- (options.form || options.params) &&
- (!hs || !hs["Content-Type"])) {
- hs = hs || {};
- hs["Content-Type"] = "application/x-www-form-urlencoded";
- }
- return OpenLayers.Request.issue({
- success: createComplete("success", cb),
- failure: createComplete("failure", cb),
- method: method,
- headers: hs,
- data: data,
- url: uri
- });
- },
-
- /** private: method[isCallInProgress]
- * :params request: ``Object`` The XHR object.
- */
- isCallInProgress: function(request) {
- // do not prevent our caller from calling abort()
- return true;
- },
-
- /** private: method[abort]
- * :params request: ``Object`` The XHR object.
- */
- abort: function(request) {
- request.abort();
- }
- });
-})();
diff --git a/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.jst b/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.jst
deleted file mode 100644
index 098c8a068d8..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/lib/overrides/override-ext-ajax.jst
+++ /dev/null
@@ -1,64 +0,0 @@
-.. _overrides.ext.ajax:
-
-Ext.Ajax Overrides
-==================
-
-GeoExt provides an override for the functionality in
-`Ext.Ajax `_. If you include
-the :file:`override-ext-ajax.js` file in your build, any calls to ``Ext.Ajax``
-methods will be routed through ``OpenLayers.Request`` methods. The practical
-implication of this is that you can set the ``OpenLayers.ProxyHost`` property
-in your application and have this proxy used by Ext components that call
-``Ext.Ajax`` methods.
-
-To include :file:`override-ext-ajax.js` in your build, the GeoExt section in
-your build config should look like one of the following:
-
-.. code-block:: ini
-
- # include everything (including override-ext-ajax.js)
- [GeoExt.js]
- root = ../lib
- license = geoext-license.js
- exclude =
- GeoExt.js
- GeoExt/SingleFile.js
-
-
-or
-
-.. code-block:: ini
-
- # custom build
- [GeoExt.js]
- root = ../lib
- license = geoext-license.js
- include =
- overrides/override-ext-ajax.js
- # other files listed here ...
-
-
-Workaround for Existing Builds
-------------------------------
-
-If you are using a build of GeoExt that includes the Ajax overrides (e.g. the
-0.6 release or earlier), you can work around any issues you may have using this
-override in your appliction by protecting the ``Ext.lib.Ajax`` object before
-loading file:`GeoExt.js`.
-
-The example markup below will remove the effect of the override on Ajax methods.
-
-.. code-block:: html
-
-
-
-
-
-
-Note that issues with the Ajax override present in 0.6 will be fixed in
-subsequent releases.
diff --git a/web-client/src/main/resources/apps/js/GeoExt/license.txt b/web-client/src/main/resources/apps/js/GeoExt/license.txt
deleted file mode 100644
index 2e0fc00be9b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/license.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-This license applies to all code and content hosted in the "core" directory of
-this repository (http://svn.geoext.org/core/) - including the "trunk",
-"branches", and "tags" subdirectories. This license does not apply to external
-code and content which may be checked out in working copies (due to
-svn:externals properties on subdirectories).
-
-License
-=======
-
-Copyright (c) 2008-2010, The Open Source Geospatial Foundation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Open Source Geospatial Foundation nor the names
- of its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-
-
-Notice about ExtJS
-==================
-
-The GeoExt library is for use with the ExtJS library. ExtJS is distributed
-under the terms of the GPL v3. See http://www.sencha.com/products/license.php
-for details on ExtJS licensing.
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all-debug.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all-debug.css
deleted file mode 100644
index 84c754709b0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all-debug.css
+++ /dev/null
@@ -1 +0,0 @@
-@import popup.css;@import layerlegend.css;
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all.css
deleted file mode 100644
index ff4c8240ae6..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/geoext-all.css
+++ /dev/null
@@ -1,2 +0,0 @@
-
-.gx-popup-anc{background:transparent url(../images/default/anchor.png) no-repeat 0 0;position:relative;top:-1px;left:5px;z-index:2;height:16px;width:31px;}.gx-ruledrag-insert-below{border-bottom:1px dotted;}.gx-ruledrag-insert-above{border-top:1px dotted;}
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-gray.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-gray.css
deleted file mode 100644
index dad4266d6e9..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-gray.css
+++ /dev/null
@@ -1 +0,0 @@
-.gx-popup-anc{background:transparent url(../images/gray/anchor.png) no-repeat 0 0;position:relative;top:-1px;left:5px;z-index:2;height:16px;width:31px;}
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-slate.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-slate.css
deleted file mode 100644
index 34fb90b144d..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/gxtheme-slate.css
+++ /dev/null
@@ -1 +0,0 @@
-.gx-popup-anc{background:transparent url(../images/slate/anchor.png) no-repeat 0 0;position:relative;top:-1px;left:5px;z-index:2;height:16px;width:31px;}
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/layerlegend.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/layerlegend.css
deleted file mode 100644
index b19c40f8ce0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/layerlegend.css
+++ /dev/null
@@ -1 +0,0 @@
-.gx-ruledrag-insert-below{border-bottom:1px dotted;}.gx-ruledrag-insert-above{border-top:1px dotted;}
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/css/popup.css b/web-client/src/main/resources/apps/js/GeoExt/resources/css/popup.css
deleted file mode 100644
index 665b10e7edf..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/resources/css/popup.css
+++ /dev/null
@@ -1 +0,0 @@
-.gx-popup-anc{background:transparent url(../images/default/anchor.png) no-repeat 0 0;position:relative;top:-1px;left:5px;z-index:2;height:16px;width:31px;}
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/images/default/anchor.png b/web-client/src/main/resources/apps/js/GeoExt/resources/images/default/anchor.png
deleted file mode 100644
index 0cffbc37776..00000000000
Binary files a/web-client/src/main/resources/apps/js/GeoExt/resources/images/default/anchor.png and /dev/null differ
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/images/gray/anchor.png b/web-client/src/main/resources/apps/js/GeoExt/resources/images/gray/anchor.png
deleted file mode 100644
index 1a7e9c2b878..00000000000
Binary files a/web-client/src/main/resources/apps/js/GeoExt/resources/images/gray/anchor.png and /dev/null differ
diff --git a/web-client/src/main/resources/apps/js/GeoExt/resources/images/slate/anchor.png b/web-client/src/main/resources/apps/js/GeoExt/resources/images/slate/anchor.png
deleted file mode 100644
index 18d1ac6f4e1..00000000000
Binary files a/web-client/src/main/resources/apps/js/GeoExt/resources/images/slate/anchor.png and /dev/null differ
diff --git a/web-client/src/main/resources/apps/js/GeoExt/script/GeoExt.js b/web-client/src/main/resources/apps/js/GeoExt/script/GeoExt.js
deleted file mode 100644
index 52bf48006cc..00000000000
--- a/web-client/src/main/resources/apps/js/GeoExt/script/GeoExt.js
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
-AA
-Copyright (c) 2008-2010, The Open Source Geospatial Foundation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Open Source Geospatial Foundation nor the names
- of its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-Ext.namespace('GeoExt');GeoExt.LayerLegend=Ext.extend(Ext.Container,{layerRecord:null,showTitle:true,legendTitle:null,labelCls:null,layerStore:null,initComponent:function(){GeoExt.LayerLegend.superclass.initComponent.call(this);this.autoEl={};this.add({xtype:"label",text:this.getLayerTitle(this.layerRecord),cls:'x-form-item x-form-item-label'+
-(this.labelCls?' '+this.labelCls:'')});if(this.layerRecord&&this.layerRecord.store){this.layerStore=this.layerRecord.store;this.layerStore.on("update",this.onStoreUpdate,this);}},onStoreUpdate:function(store,record,operation){if(record===this.layerRecord&&this.items.getCount()>0){var layer=record.getLayer();this.setVisible(layer.getVisibility()&&layer.calculateInRange()&&layer.displayInLayerSwitcher&&!record.get('hideInLegend'));this.update();}},update:function(){var title=this.getLayerTitle(this.layerRecord);if(this.items.get(0).text!==title){this.items.get(0).setText(title);}},getLayerTitle:function(record){var title=this.legendTitle||"";if(this.showTitle&&!title){if(record&&!record.get("hideTitle")){title=record.get("title")||record.get("name")||record.getLayer().name||"";}}
-return title;},beforeDestroy:function(){this.layerStore&&this.layerStore.un("update",this.onStoreUpdate,this);GeoExt.LayerLegend.superclass.beforeDestroy.apply(this,arguments);}});GeoExt.LayerLegend.getTypes=function(layerRecord,preferredTypes){var types=(preferredTypes||[]).concat();var goodTypes=[];for(var type in GeoExt.LayerLegend.types){if(GeoExt.LayerLegend.types[type].supports(layerRecord)){types.indexOf(type)==-1&&goodTypes.push(type);}else{types.remove(type);}}
-return types.concat(goodTypes);};GeoExt.LayerLegend.supports=function(layerRecord){};GeoExt.LayerLegend.types={};Ext.namespace('GeoExt');GeoExt.VectorLegend=Ext.extend(GeoExt.LayerLegend,{layerRecord:null,layer:null,rules:null,symbolType:null,untitledPrefix:"Untitled ",clickableSymbol:false,clickableTitle:false,selectOnClick:false,enableDD:false,bodyBorder:false,feature:null,selectedRule:null,currentScaleDenominator:null,initComponent:function(){GeoExt.VectorLegend.superclass.initComponent.call(this);if(this.layerRecord){this.layer=this.layerRecord.getLayer();if(this.layer.map){this.currentScaleDenominator=this.layer.map.getScale();this.layer.map.events.on({"zoomend":this.onMapZoom,scope:this});}}
-if(!this.symbolType){if(this.feature){this.symbolType=this.symbolTypeFromFeature(this.feature);}else if(this.layer){if(this.layer.features.length>0){var feature=this.layer.features[0].clone();feature.attributes={};this.feature=feature;this.symbolType=this.symbolTypeFromFeature(this.feature);}else{this.layer.events.on({featuresadded:this.onFeaturesAdded,scope:this});}}}
-if(this.layer&&this.feature&&!this.rules){this.setRules();}
-this.rulesContainer=new Ext.Container({autoEl:{}});this.add(this.rulesContainer);this.addEvents("titleclick","symbolclick","ruleclick","ruleselected","ruleunselected","rulemoved");this.update();},onMapZoom:function(){this.setCurrentScaleDenominator(this.layer.map.getScale());},symbolTypeFromFeature:function(feature){var match=feature.geometry.CLASS_NAME.match(/Point|Line|Polygon/);return(match&&match[0])||"Point";},onFeaturesAdded:function(){this.layer.events.un({featuresadded:this.onFeaturesAdded,scope:this});var feature=this.layer.features[0].clone();feature.attributes={};this.feature=feature;this.symbolType=this.symbolTypeFromFeature(this.feature);if(!this.rules){this.setRules();}
-this.update();},setRules:function(){var style=this.layer.styleMap&&this.layer.styleMap.styles["default"];if(!style){style=new OpenLayers.Style();}
-if(style.rules.length===0){this.rules=[new OpenLayers.Rule({symbolizer:style.createSymbolizer(this.feature)})];}else{this.rules=style.rules;}},setCurrentScaleDenominator:function(scale){if(scale!==this.currentScaleDenominator){this.currentScaleDenominator=scale;this.update();}},getRuleEntry:function(rule){return this.rulesContainer.items.get(this.rules.indexOf(rule));},addRuleEntry:function(rule,noDoLayout){this.rulesContainer.add(this.createRuleEntry(rule));if(!noDoLayout){this.doLayout();}},removeRuleEntry:function(rule,noDoLayout){var ruleEntry=this.getRuleEntry(rule);if(ruleEntry){this.rulesContainer.remove(ruleEntry);if(!noDoLayout){this.doLayout();}}},selectRuleEntry:function(rule){var newSelection=rule!=this.selectedRule;if(this.selectedRule){this.unselect();}
-if(newSelection){var ruleEntry=this.getRuleEntry(rule);ruleEntry.body.addClass("x-grid3-row-selected");this.selectedRule=rule;this.fireEvent("ruleselected",this,rule);}},unselect:function(){this.rulesContainer.items.each(function(item,i){if(this.rules[i]==this.selectedRule){item.body.removeClass("x-grid3-row-selected");this.selectedRule=null;this.fireEvent("ruleunselected",this,this.rules[i]);}},this);},createRuleEntry:function(rule){var applies=true;if(this.currentScaleDenominator!=null){if(rule.minScaleDenominator){applies=applies&&(this.currentScaleDenominator>=rule.minScaleDenominator);}
-if(rule.maxScaleDenominator){applies=applies&&(this.currentScaleDenominatortargetPos){cls="gx-ruledrag-insert-above";}else if(sourcePos=0;--i){comp=this.rulesContainer.getComponent(i);this.rulesContainer.remove(comp,true);}}
-for(var i=0,ii=this.rules.length;i=0;--i){if(this.loader.filter(store.getAt(i))===true){++nodeIndex;if(index===i||nodeIndex>nodeCount-1){break;}}}
-return nodeIndex;},destroy:function(){delete this.layerStore;GeoExt.tree.LayerContainer.superclass.destroy.apply(this,arguments);}});Ext.tree.TreePanel.nodeTypes.gx_layercontainer=GeoExt.tree.LayerContainer;Ext.namespace("GeoExt.tree");GeoExt.tree.BaseLayerContainer=Ext.extend(GeoExt.tree.LayerContainer,{constructor:function(config){config=Ext.applyIf(config||{},{text:"Base Layer",loader:{}});config.loader=Ext.applyIf(config.loader,{baseAttrs:Ext.applyIf(config.loader.baseAttrs||{},{iconCls:'gx-tree-baselayer-icon',checkedGroup:'baselayer'}),filter:function(record){var layer=record.getLayer();return layer.displayInLayerSwitcher===true&&layer.isBaseLayer===true;}});GeoExt.tree.BaseLayerContainer.superclass.constructor.call(this,config);}});Ext.tree.TreePanel.nodeTypes.gx_baselayercontainer=GeoExt.tree.BaseLayerContainer;Ext.namespace("GeoExt.plugins");GeoExt.plugins.PrintExtent=Ext.extend(Ext.util.Observable,{initialConfig:null,printProvider:null,map:null,layer:null,control:null,pages:null,page:null,constructor:function(config){config=config||{};Ext.apply(this,config);this.initialConfig=config;if(!this.printProvider){this.printProvider=this.pages[0].printProvider;}
-if(!this.pages){this.pages=[];}
-this.addEvents("selectpage");GeoExt.plugins.PrintExtent.superclass.constructor.apply(this,arguments);},print:function(options){this.printProvider.print(this.map,this.pages,options);},init:function(mapPanel){this.map=mapPanel.map;mapPanel.on("destroy",this.onMapPanelDestroy,this);if(!this.layer){this.layer=new OpenLayers.Layer.Vector(null,{displayInLayerSwitcher:false});}
-this.createControl();for(var i=0,len=this.pages.length;i=0;i--){this.removePage(this.pages[i]);}
-this.hide();var control=this.control;if(map&&map.events&&control&&control.events){control.destroy();}
-var layer=this.layer;if(!this.initialConfig.layer&&map&&map.events&&layer&&layer.events){layer.destroy();}
-delete this.layer;delete this.control;delete this.page;this.map=null;},createControl:function(){this.control=new OpenLayers.Control.TransformFeature(this.layer,{preserveAspectRatio:true,eventListeners:{"beforesetfeature":function(e){for(var i=0,len=this.pages.length;i-1){return"application/vnd.ogc.se_inimage";}
-if(OpenLayers.Util.indexOf(formats,"application/vnd.ogc.se_xml")>-1){return"application/vnd.ogc.se_xml";}
-return formats[0];},imageFormat:function(layer){var formats=layer.formats;if(layer.opaque&&OpenLayers.Util.indexOf(formats,"image/jpeg")>-1){return"image/jpeg";}
-if(OpenLayers.Util.indexOf(formats,"image/png")>-1){return"image/png";}
-if(OpenLayers.Util.indexOf(formats,"image/png; mode=24bit")>-1){return"image/png; mode=24bit";}
-if(OpenLayers.Util.indexOf(formats,"image/gif")>-1){return"image/gif";}
-return formats[0];},imageTransparent:function(layer){return layer.opaque==undefined||!layer.opaque;},readRecords:function(data){if(typeof data==="string"||data.nodeType){data=this.meta.format.read(data);}
-var version=data.version;var capability=data.capability||{};var url=capability.request&&capability.request.getmap&&capability.request.getmap.href;var layers=capability.layers;var formats=capability.exception?capability.exception.formats:[];var exceptions=this.serviceExceptionFormat(formats);var records=[];if(url&&layers){var fields=this.recordType.prototype.fields;var layer,values,options,params,field,v;for(var i=0,lenI=layers.length;i");}
-if(attribution.title){markup.push(""
-+attribution.title
-+"");}
-if(attribution.href){for(var i=0;i"
-+markup[i]
-+"";}}
-return markup.join(" ");}});Ext.namespace("GeoExt.data");GeoExt.data.LayerStoreMixin=function(){return{map:null,reader:null,constructor:function(config){config=config||{};config.reader=config.reader||new GeoExt.data.LayerReader({},config.fields);delete config.fields;var map=config.map instanceof GeoExt.MapPanel?config.map.map:config.map;delete config.map;if(config.layers){config.data=config.layers;}
-delete config.layers;var options={initDir:config.initDir};delete config.initDir;arguments.callee.superclass.constructor.call(this,config);if(map){this.bind(map,options);}},bind:function(map,options){if(this.map){return;}
-this.map=map;options=options||{};var initDir=options.initDir;if(options.initDir==undefined){initDir=GeoExt.data.LayerStore.MAP_TO_STORE|GeoExt.data.LayerStore.STORE_TO_MAP;}
-var layers=map.layers.slice(0);if(initDir&GeoExt.data.LayerStore.STORE_TO_MAP){this.each(function(record){this.map.addLayer(record.getLayer());},this);}
-if(initDir&GeoExt.data.LayerStore.MAP_TO_STORE){this.loadData(layers,true);}
-map.events.on({"changelayer":this.onChangeLayer,"addlayer":this.onAddLayer,"removelayer":this.onRemoveLayer,scope:this});this.on({"load":this.onLoad,"clear":this.onClear,"add":this.onAdd,"remove":this.onRemove,"update":this.onUpdate,scope:this});this.data.on({"replace":this.onReplace,scope:this});},unbind:function(){if(this.map){this.map.events.un({"changelayer":this.onChangeLayer,"addlayer":this.onAddLayer,"removelayer":this.onRemoveLayer,scope:this});this.un("load",this.onLoad,this);this.un("clear",this.onClear,this);this.un("add",this.onAdd,this);this.un("remove",this.onRemove,this);this.data.un("replace",this.onReplace,this);this.map=null;}},onChangeLayer:function(evt){var layer=evt.layer;var recordIndex=this.findBy(function(rec,id){return rec.getLayer()===layer;});if(recordIndex>-1){var record=this.getAt(recordIndex);if(evt.property==="order"){if(!this._adding&&!this._removing){var layerIndex=this.map.getLayerIndex(layer);if(layerIndex!==recordIndex){this._removing=true;this.remove(record);delete this._removing;this._adding=true;this.insert(layerIndex,[record]);delete this._adding;}}}else if(evt.property==="name"){record.set("title",layer.name);}else{this.fireEvent("update",this,record,Ext.data.Record.EDIT);}}},onAddLayer:function(evt){if(!this._adding){var layer=evt.layer;this._adding=true;this.loadData([layer],true);delete this._adding;}},onRemoveLayer:function(evt){if(this.map.unloadDestroy){if(!this._removing){var layer=evt.layer;this._removing=true;this.remove(this.getById(layer.id));delete this._removing;}}else{this.unbind();}},onLoad:function(store,records,options){if(!Ext.isArray(records)){records=[records];}
-if(options&&!options.add){this._removing=true;for(var i=this.map.layers.length-1;i>=0;i--){this.map.removeLayer(this.map.layers[i]);}
-delete this._removing;var len=records.length;if(len>0){var layers=new Array(len);for(var j=0;j=0;i--){this.map.removeLayer(this.map.layers[i]);}
-delete this._removing;},onAdd:function(store,records,index){if(!this._adding){this._adding=true;var layer;for(var i=records.length-1;i>=0;--i){layer=records[i].getLayer();this.map.addLayer(layer);if(index!==this.map.layers.length-1){this.map.setLayerIndex(layer,index);}}
-delete this._adding;}},onRemove:function(store,record,index){if(!this._removing){var layer=record.getLayer();if(this.map.getLayer(layer.id)!=null){this._removing=true;this.removeMapLayer(record);delete this._removing;}}},onUpdate:function(store,record,operation){if(operation===Ext.data.Record.EDIT){if(record.modified&&record.modified.title){var layer=record.getLayer();var title=record.get("title");if(title!==layer.name){layer.setName(title);}}}},removeMapLayer:function(record){this.map.removeLayer(record.getLayer());},onReplace:function(key,oldRecord,newRecord){this.removeMapLayer(oldRecord);},getByLayer:function(layer){var index=this.findBy(function(r){return r.getLayer()===layer;});if(index>-1){return this.getAt(index);}},destroy:function(){this.unbind();GeoExt.data.LayerStore.superclass.destroy.call(this);}};};GeoExt.data.LayerStore=Ext.extend(Ext.data.Store,new GeoExt.data.LayerStoreMixin);GeoExt.data.LayerStore.MAP_TO_STORE=1;GeoExt.data.LayerStore.STORE_TO_MAP=2;Ext.namespace("GeoExt.tree");GeoExt.tree.LayerLoader=function(config){Ext.apply(this,config);this.addEvents("beforeload","load");GeoExt.tree.LayerLoader.superclass.constructor.call(this);};Ext.extend(GeoExt.tree.LayerLoader,Ext.util.Observable,{store:null,filter:function(record){return record.getLayer().displayInLayerSwitcher==true;},baseAttrs:null,uiProviders:null,load:function(node,callback){if(this.fireEvent("beforeload",this,node)){this.removeStoreHandlers();while(node.firstChild){node.removeChild(node.firstChild);}
-if(!this.uiProviders){this.uiProviders=node.getOwnerTree().getLoader().uiProviders;}
-if(!this.store){this.store=GeoExt.MapPanel.guess().layers;}
-this.store.each(function(record){this.addLayerNode(node,record);},this);this.addStoreHandlers(node);if(typeof callback=="function"){callback();}
-this.fireEvent("load",this,node);}},onStoreAdd:function(store,records,index,node){if(!this._reordering){var nodeIndex=node.recordIndexToNodeIndex(index+records.length-1);for(var i=0;i1){var searchIndex=(index===0)?index+1:index-1;newRecordIndex=this.store.findBy(function(r){return newParent.childNodes[searchIndex].layer===r.getLayer();});index===0&&newRecordIndex++;}else if(oldParent.parentNode===newParent.parentNode){var prev=newParent;do{prev=prev.previousSibling;}while(prev&&!(prev instanceof GeoExt.tree.LayerContainer&&prev.lastChild));if(prev){newRecordIndex=this.store.findBy(function(r){return prev.lastChild.layer===r.getLayer();});}else{var next=newParent;do{next=next.nextSibling;}while(next&&!(next instanceof GeoExt.tree.LayerContainer&&next.firstChild));if(next){newRecordIndex=this.store.findBy(function(r){return next.firstChild.layer===r.getLayer();});}
-newRecordIndex++;}}
-if(newRecordIndex!==undefined){this.store.insert(newRecordIndex,[record]);window.setTimeout(function(){newParent.reload();oldParent.reload();});}else{this.store.insert(oldRecordIndex,[record]);}
-delete newParent.loader._reordering;}
-delete this._reordering;},addStoreHandlers:function(node){if(!this._storeHandlers){this._storeHandlers={"add":this.onStoreAdd.createDelegate(this,[node],true),"remove":this.onStoreRemove.createDelegate(this,[node],true)};for(var evt in this._storeHandlers){this.store.on(evt,this._storeHandlers[evt],this);}}},removeStoreHandlers:function(){if(this._storeHandlers){for(var evt in this._storeHandlers){this.store.un(evt,this._storeHandlers[evt],this);}
-delete this._storeHandlers;}},createNode:function(attr){if(this.baseAttrs){Ext.apply(attr,this.baseAttrs);}
-if(typeof attr.uiProvider=='string'){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider);}
-attr.nodeType=attr.nodeType||"gx_layer";return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr);},destroy:function(){this.removeStoreHandlers();}});Ext.namespace("GeoExt.plugins");GeoExt.plugins.PrintProviderField=Ext.extend(Ext.util.Observable,{target:null,constructor:function(config){this.initialConfig=config;Ext.apply(this,config);GeoExt.plugins.PrintProviderField.superclass.constructor.apply(this,arguments);},init:function(target){this.target=target;var onCfg={scope:this,"render":this.onRender,"beforedestroy":this.onBeforeDestroy};onCfg[target instanceof Ext.form.ComboBox?"select":"valid"]=this.onFieldChange;target.on(onCfg);},onRender:function(field){var printProvider=this.printProvider||field.ownerCt.printProvider;if(field.store===printProvider.layouts){field.setValue(printProvider.layout.get(field.displayField));printProvider.on({"layoutchange":this.onProviderChange,scope:this});}else if(field.store===printProvider.dpis){field.setValue(printProvider.dpi.get(field.displayField));printProvider.on({"dpichange":this.onProviderChange,scope:this});}else if(field.initialConfig.value===undefined){field.setValue(printProvider.customParams[field.name]);}},onFieldChange:function(field,record){var printProvider=this.printProvider||field.ownerCt.printProvider;var value=field.getValue();this._updating=true;if(record){switch(field.store){case printProvider.layouts:printProvider.setLayout(record);break;case printProvider.dpis:printProvider.setDpi(record);}}else{printProvider.customParams[field.name]=value;}
-delete this._updating;},onProviderChange:function(printProvider,rec){if(!this._updating){this.target.setValue(rec.get(this.target.displayField));}},onBeforeDestroy:function(){this.target.un("beforedestroy",this.onBeforeDestroy,this);this.target.un("render",this.onRender,this);this.target.un("select",this.onFieldChange,this);this.target.un("valid",this.onFieldChange,this);this.printProvider.un("layoutchange",this.onProviderChange,this);this.printProvider.un("dpichange",this.onProviderChange,this);}});Ext.preg("gx_printproviderfield",GeoExt.plugins.PrintProviderField);Ext.namespace("GeoExt","GeoExt.data");GeoExt.data.LayerReader=function(meta,recordType){meta=meta||{};if(!(recordType instanceof Function)){recordType=GeoExt.data.LayerRecord.create(recordType||meta.fields||{});}
-GeoExt.data.LayerReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(GeoExt.data.LayerReader,Ext.data.DataReader,{totalRecords:null,readRecords:function(layers){var records=[];if(layers){var recordType=this.recordType,fields=recordType.prototype.fields;var i,lenI,j,lenJ,layer,values,field,v;for(i=0,lenI=layers.length;i0){if(styleName){Ext.each(styles,function(s){url=(s.name==styleName&&s.legend)&&s.legend.href;return!url;});}else if(this.defaultStyleIsFirst===true&&!styleNames&&!layer.params.SLD&&!layer.params.SLD_BODY){url=styles[0].legend&&styles[0].legend.href;}}
-if(!url){url=layer.getFullRequestString({REQUEST:"GetLegendGraphic",WIDTH:null,HEIGHT:null,EXCEPTIONS:"application/vnd.ogc.se_xml",LAYER:layerName,LAYERS:null,STYLE:(styleName!=='')?styleName:null,STYLES:null,SRS:null,FORMAT:null});}
-if(this.useScaleParameter===true&&url.toLowerCase().indexOf("request=getlegendgraphic")!=-1){var scale=layer.map.getScale();url=Ext.urlAppend(url,"SCALE="+scale);}
-var params=this.baseParams||{};Ext.applyIf(params,{FORMAT:'image/gif'});if(url.indexOf('?')>0){url=Ext.urlEncode(params,url);}
-return url;},update:function(){var layer=this.layerRecord.getLayer();if(!(layer&&layer.map)){return;}
-GeoExt.WMSLegend.superclass.update.apply(this,arguments);var layerNames,layerName,i,len;layerNames=[layer.params.LAYERS].join(",").split(",");var destroyList=[];var textCmp=this.items.get(0);this.items.each(function(cmp){i=layerNames.indexOf(cmp.itemId);if(i<0&&cmp!=textCmp){destroyList.push(cmp);}else if(cmp!==textCmp){layerName=layerNames[i];var newUrl=this.getLegendUrl(layerName,layerNames);if(!OpenLayers.Util.isEquivalentUrl(newUrl,cmp.url)){cmp.setUrl(newUrl);}}},this);for(i=0,len=destroyList.length;ipanelSize[0]-padding.right){newPos[0]=panelSize[0]-padding.right-popupSize.width;}
-if(popupPos[1]panelSize[1]-padding.bottom){newPos[1]=panelSize[1]-padding.bottom-popupSize.height;}
-var dx=popupPos[0]-newPos[0];var dy=popupPos[1]-newPos[1];this.map.pan(dx,dy);},onMapMove:function(){this._mapMove=true;this.position();delete this._mapMove;},addAnchorEvents:function(){this.map.events.on({"move":this.onMapMove,scope:this});this.on({"resize":this.position,"collapse":this.position,"expand":this.position,scope:this});},removeAnchorEvents:function(){this.map.events.un({"move":this.onMapMove,scope:this});this.un("resize",this.position,this);this.un("collapse",this.position,this);this.un("expand",this.position,this);},beforeDestroy:function(){if(this.anchored){this.removeAnchorEvents();}
-GeoExt.Popup.superclass.beforeDestroy.call(this);}});Ext.reg('gx_popup',GeoExt.Popup);Ext.namespace("GeoExt.data");GeoExt.data.AttributeStoreMixin=function(){return{constructor:function(c){c=c||{};arguments.callee.superclass.constructor.call(this,Ext.apply(c,{proxy:c.proxy||(!c.data?new Ext.data.HttpProxy({url:c.url,disableCaching:false,method:"GET"}):undefined),reader:new GeoExt.data.AttributeReader(c,c.fields||["name","type","restriction"])}));if(this.feature){this.bind();}},bind:function(){this.on({"update":this.onUpdate,"load":this.onLoad,"add":this.onAdd,scope:this});var records=[];this.each(function(record){records.push(record);});this.updateFeature(records);},onUpdate:function(store,record,operation){this.updateFeature([record]);},onLoad:function(store,records,options){if(!options||options.add!==true){this.updateFeature(records);}},onAdd:function(store,records,index){this.updateFeature(records);},updateFeature:function(records){var feature=this.feature,layer=feature.layer;var i,len,record,name,value,oldValue,dirty;for(i=0,len=records.length;i=0;--i){record=store.getAt(i);layer=record.getLayer();var types=GeoExt.LayerLegend.getTypes(record);if(layer.displayInLayerSwitcher&&types.length>0&&(store.getAt(i).get("hideInLegend")!==true)){++panelIndex;if(index===i||panelIndex>legendCount-1){break;}}}
-return panelIndex;},getIdForLayer:function(layer){return this.id+"-"+layer.id;},onStoreAdd:function(store,records,index){var panelIndex=this.recordIndexToPanelIndex(index+records.length-1);for(var i=0,len=records.length;i0){this.insert(index,{xtype:types[0],id:this.getIdForLayer(layer),layerRecord:record,hidden:!((!layer.map&&layer.visibility)||(layer.getVisibility()&&layer.calculateInRange()))});}}},onDestroy:function(){if(this.layerStore){this.layerStore.un("add",this.onStoreAdd,this);this.layerStore.un("remove",this.onStoreRemove,this);this.layerStore.un("clear",this.onStoreClear,this);}
-GeoExt.LegendPanel.superclass.onDestroy.apply(this,arguments);}});Ext.reg('gx_legendpanel',GeoExt.LegendPanel);Ext.namespace("GeoExt.form");GeoExt.form.toFilter=function(form,logicalOp,wildcard){if(form instanceof Ext.form.FormPanel){form=form.getForm();}
-var filters=[],values=form.getValues(false);for(var prop in values){var s=prop.split("__");var value=values[prop],type;if(s.length>1&&(type=GeoExt.form.toFilter.FILTER_MAP[s[1]])!==undefined){prop=s[0];}else{type=OpenLayers.Filter.Comparison.EQUAL_TO;}
-if(type===OpenLayers.Filter.Comparison.LIKE){switch(wildcard){case GeoExt.form.ENDS_WITH:value='.*'+value;break;case GeoExt.form.STARTS_WITH:value+='.*';break;case GeoExt.form.CONTAINS:value='.*'+value+'.*';break;default:break;}}
-filters.push(new OpenLayers.Filter.Comparison({type:type,value:value,property:prop}));}
-return new OpenLayers.Filter.Logical({type:logicalOp||OpenLayers.Filter.Logical.AND,filters:filters});};GeoExt.form.toFilter.FILTER_MAP={"eq":OpenLayers.Filter.Comparison.EQUAL_TO,"ne":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"lt":OpenLayers.Filter.Comparison.LESS_THAN,"le":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,"gt":OpenLayers.Filter.Comparison.GREATER_THAN,"ge":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,"like":OpenLayers.Filter.Comparison.LIKE};GeoExt.form.ENDS_WITH=1;GeoExt.form.STARTS_WITH=2;GeoExt.form.CONTAINS=3;GeoExt.form.recordToField=function(record){var type=record.get("type");if(typeof type==="object"&&type.xtype){return type;}
-var field;var name=record.get("name");var label=record.get("label");var restriction=record.get("restriction")||{};if(label==null){label=name;}
-type=type.split(":").pop();var r=GeoExt.form.recordToField.REGEXES;if(type.match(r["text"])){var maxLength=restriction["maxLength"]!==undefined?parseFloat(restriction["maxLength"]):undefined;var minLength=restriction["minLength"]!==undefined?parseFloat(restriction["minLength"]):undefined;field={xtype:"textfield",name:name,fieldLabel:label,maxLength:maxLength,minLength:minLength};}else if(type.match(r["number"])){var maxValue=restriction["maxInclusive"]!==undefined?parseFloat(restriction["maxInclusive"]):undefined;var minValue=restriction["minInclusive"]!==undefined?parseFloat(restriction["minInclusive"]):undefined;field={xtype:"numberfield",name:name,fieldLabel:label,maxValue:maxValue,minValue:minValue};}else if(type.match(r["boolean"])){field={xtype:"checkbox",name:name,boxLabel:label};}else if(type.match(r["date"])){field={xtype:"datefield",fieldLabel:label,name:name};}
-return field;}
-GeoExt.form.recordToField.REGEXES={"text":new RegExp("^(text|string)$","i"),"number":new RegExp("^(number|float|decimal|double|int|long|integer|short)$","i"),"boolean":new RegExp("^(boolean)$","i"),"date":new RegExp("^(dateTime)$","i")};Ext.namespace("GeoExt.plugins");GeoExt.plugins.PrintPageField=Ext.extend(Ext.util.Observable,{printPage:null,target:null,constructor:function(config){this.initialConfig=config;Ext.apply(this,config);GeoExt.plugins.PrintPageField.superclass.constructor.apply(this,arguments);},init:function(target){this.target=target;var onCfg={"beforedestroy":this.onBeforeDestroy,scope:this};var eventName=target instanceof Ext.form.ComboBox?"select":target instanceof Ext.form.Checkbox?"check":"valid";onCfg[eventName]=this.onFieldChange;target.on(onCfg);this.printPage.on({"change":this.onPageChange,scope:this});this.printPage.printProvider.on({"layoutchange":this.onLayoutChange,scope:this});this.setValue(this.printPage);},onFieldChange:function(field,record){var printProvider=this.printPage.printProvider;var value=field.getValue();this._updating=true;if(field.store===printProvider.scales||field.name==="scale"){this.printPage.setScale(record);}else if(field.name=="rotation"){!isNaN(value)&&this.printPage.setRotation(value);}else{this.printPage.customParams[field.name]=value;}
-delete this._updating;},onPageChange:function(printPage){if(!this._updating){this.setValue(printPage);}},onLayoutChange:function(printProvider,layout){var t=this.target;t.name=="rotation"&&t.setDisabled(!layout.get("rotation"));},setValue:function(printPage){var t=this.target;t.suspendEvents();if(t.store===printPage.printProvider.scales||t.name==="scale"){if(printPage.scale){t.setValue(printPage.scale.get(t.displayField));}}else if(t.name=="rotation"){t.setValue(printPage.rotation);}
-t.resumeEvents();},onBeforeDestroy:function(){this.target.un("beforedestroy",this.onBeforeDestroy,this);this.target.un("select",this.onFieldChange,this);this.target.un("valid",this.onFieldChange,this);this.printPage.un("change",this.onPageChange,this);this.printPage.printProvider.un("layoutchange",this.onLayoutChange,this);}});Ext.preg("gx_printpagefield",GeoExt.plugins.PrintPageField);Ext.namespace("GeoExt.tree");GeoExt.tree.LayerNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{constructor:function(config){GeoExt.tree.LayerNodeUI.superclass.constructor.apply(this,arguments);},render:function(bulkRender){var a=this.node.attributes;if(a.checked===undefined){a.checked=this.node.layer.getVisibility();}
-GeoExt.tree.LayerNodeUI.superclass.render.apply(this,arguments);var cb=this.checkbox;if(a.checkedGroup){var radio=Ext.DomHelper.insertAfter(cb,[''].join(""));radio.defaultChecked=cb.defaultChecked;Ext.get(cb).remove();this.checkbox=radio;}
-this.enforceOneVisible();},onClick:function(e){if(e.getTarget('.x-tree-node-cb',1)){this.toggleCheck(this.isChecked());}else{GeoExt.tree.LayerNodeUI.superclass.onClick.apply(this,arguments);}},toggleCheck:function(value){value=(value===undefined?!this.isChecked():value);GeoExt.tree.LayerNodeUI.superclass.toggleCheck.call(this,value);this.enforceOneVisible();},enforceOneVisible:function(){var attributes=this.node.attributes;var group=attributes.checkedGroup;if(group&&group!=="gx_baselayer"){var layer=this.node.layer;var checkedNodes=this.node.getOwnerTree().getChecked();var checkedCount=0;Ext.each(checkedNodes,function(n){var l=n.layer
-if(!n.hidden&&n.attributes.checkedGroup===group){checkedCount++;if(l!=layer&&attributes.checked){l.setVisibility(false);}}});if(checkedCount===0&&attributes.checked==false){layer.setVisibility(true);}}},appendDDGhost:function(ghostNode){var n=this.elNode.cloneNode(true);var radio=Ext.DomQuery.select("input[type='radio']",n);Ext.each(radio,function(r){r.name=r.name+"_clone";});ghostNode.appendChild(n);}});GeoExt.tree.LayerNode=Ext.extend(Ext.tree.AsyncTreeNode,{layer:null,layerStore:null,constructor:function(config){config.leaf=config.leaf||!(config.children||config.loader);if(!config.iconCls&&!config.children){config.iconCls="gx-tree-layer-icon";}
-if(config.loader&&!(config.loader instanceof Ext.tree.TreeLoader)){config.loader=new GeoExt.tree.LayerParamLoader(config.loader);}
-this.defaultUI=this.defaultUI||GeoExt.tree.LayerNodeUI;Ext.apply(this,{layer:config.layer,layerStore:config.layerStore});if(config.text){this.fixedText=true;}
-GeoExt.tree.LayerNode.superclass.constructor.apply(this,arguments);},render:function(bulkRender){var layer=this.layer instanceof OpenLayers.Layer&&this.layer;if(!layer){if(!this.layerStore||this.layerStore=="auto"){this.layerStore=GeoExt.MapPanel.guess().layers;}
-var i=this.layerStore.findBy(function(o){return o.get("title")==this.layer;},this);if(i!=-1){layer=this.layerStore.getAt(i).getLayer();}}
-if(!this.rendered||!layer){var ui=this.getUI();if(layer){this.layer=layer;if(layer.isBaseLayer){this.draggable=false;Ext.applyIf(this.attributes,{checkedGroup:"gx_baselayer"});}
-if(!this.text){this.text=layer.name;}
-ui.show();this.addVisibilityEventHandlers();}else{ui.hide();}
-if(this.layerStore instanceof GeoExt.data.LayerStore){this.addStoreEventHandlers(layer);}}
-GeoExt.tree.LayerNode.superclass.render.apply(this,arguments);},addVisibilityEventHandlers:function(){this.layer.events.on({"visibilitychanged":this.onLayerVisibilityChanged,scope:this});this.on({"checkchange":this.onCheckChange,scope:this});},onLayerVisibilityChanged:function(){if(!this._visibilityChanging){this.getUI().toggleCheck(this.layer.getVisibility());}},onCheckChange:function(node,checked){if(checked!=this.layer.getVisibility()){this._visibilityChanging=true;var layer=this.layer;if(checked&&layer.isBaseLayer&&layer.map){layer.map.setBaseLayer(layer);}else{layer.setVisibility(checked);}
-delete this._visibilityChanging;}},addStoreEventHandlers:function(){this.layerStore.on({"add":this.onStoreAdd,"remove":this.onStoreRemove,"update":this.onStoreUpdate,scope:this});},onStoreAdd:function(store,records,index){var l;for(var i=0;i=0;}else{this.onCheckChange(this,this.attributes.checked);}
-this.layer.events.on({"visibilitychanged":this.onLayerVisibilityChanged,scope:this});this.on({"checkchange":this.onCheckChange,scope:this});}},getLayer:function(){if(!this.layer){var layer=this.attributes.layer;if(typeof layer=="string"){var store=this.attributes.layerStore||GeoExt.MapPanel.guess().layers;var i=store.findBy(function(o){return o.get("title")==layer;});layer=i!=-1?store.getAt(i).getLayer():null;}
-this.layer=layer;}
-return this.layer;},getItemsFromLayer:function(){var paramValue=this.layer.params[this.param];return paramValue instanceof Array?paramValue:(paramValue?paramValue.split(this.delimiter):[]);},createParams:function(items){var params={};params[this.param]=this.layer.params[this.param]instanceof Array?items:items.join(this.delimiter);return params;},onLayerVisibilityChanged:function(){if(this.getItemsFromLayer().length===0){this.layer.mergeNewParams(this.createParams(this.allItems));}
-var visible=this.layer.getVisibility();if(visible&&this.getItemsFromLayer().indexOf(this.item)!==-1){this.getUI().toggleCheck(true);}
-if(!visible){this.layer.mergeNewParams(this.createParams([]));this.getUI().toggleCheck(false);}},onCheckChange:function(node,checked){var layer=this.layer;var newItems=[];var curItems=this.getItemsFromLayer();if(checked===true&&layer.getVisibility()===false&&curItems.length===this.allItems.length){curItems=[];}
-Ext.each(this.allItems,function(item){if((item!==this.item&&curItems.indexOf(item)!==-1)||(checked===true&&item===this.item)){newItems.push(item);}},this);var visible=(newItems.length>0);visible&&layer.mergeNewParams(this.createParams(newItems));if(visible!==layer.getVisibility()){layer.setVisibility(visible);}
-(!visible)&&layer.mergeNewParams(this.createParams([]));},destroy:function(){var layer=this.layer;if(layer instanceof OpenLayers.Layer){layer.events.un({"visibilitychanged":this.onLayerVisibilityChanged,scope:this});}
-delete this.layer;this.un("checkchange",this.onCheckChange,this);GeoExt.tree.LayerParamNode.superclass.destroy.apply(this,arguments);}});Ext.tree.TreePanel.nodeTypes.gx_layerparam=GeoExt.tree.LayerParamNode;Ext.namespace('GeoExt');GeoExt.UrlLegend=Ext.extend(GeoExt.LayerLegend,{initComponent:function(){GeoExt.UrlLegend.superclass.initComponent.call(this);this.add(new GeoExt.LegendImage({url:this.layerRecord.get("legendURL")}));},update:function(){GeoExt.UrlLegend.superclass.update.apply(this,arguments);this.items.get(1).setUrl(this.layerRecord.get("legendURL"));}});GeoExt.UrlLegend.supports=function(layerRecord){return layerRecord.get("legendURL")!=null;};GeoExt.LayerLegend.types["gx_urllegend"]=GeoExt.UrlLegend;Ext.reg('gx_urllegend',GeoExt.UrlLegend);Ext.namespace("GeoExt.state");GeoExt.state.PermalinkProvider=function(config){GeoExt.state.PermalinkProvider.superclass.constructor.apply(this,arguments);config=config||{};var url=config.url;delete config.url;Ext.apply(this,config);this.state=this.readURL(url);};Ext.extend(GeoExt.state.PermalinkProvider,Ext.state.Provider,{encodeType:true,readURL:function(url){var state={};var params=OpenLayers.Util.getParameters(url);var k,split,stateId;for(k in params){if(params.hasOwnProperty(k)){split=k.split("_");if(split.length>1){stateId=split[0];state[stateId]=state[stateId]||{};state[stateId][split.slice(1).join("_")]=this.encodeType?this.decodeValue(params[k]):params[k];}}}
-return state;},getLink:function(base){base=base||document.location.href;var params={};var id,k,state=this.state;for(id in state){if(state.hasOwnProperty(id)){for(k in state[id]){params[id+"_"+k]=this.encodeType?unescape(this.encodeValue(state[id][k])):state[id][k];}}}
-OpenLayers.Util.applyDefaults(params,OpenLayers.Util.getParameters(base));var paramsStr=OpenLayers.Util.getParameterString(params);var qMark=base.indexOf("?");if(qMark>0){base=base.substring(0,qMark);}
-return Ext.urlAppend(base,paramsStr);}});Ext.namespace('GeoExt');GeoExt.LegendImage=Ext.extend(Ext.BoxComponent,{url:null,defaultImgSrc:null,imgCls:null,initComponent:function(){GeoExt.LegendImage.superclass.initComponent.call(this);if(this.defaultImgSrc===null){this.defaultImgSrc=Ext.BLANK_IMAGE_URL;}
-this.autoEl={tag:"img","class":(this.imgCls?this.imgCls:""),src:this.defaultImgSrc};},setUrl:function(url){this.url=url;var el=this.getEl();if(el){el.un("error",this.onImageLoadError,this);el.on("error",this.onImageLoadError,this,{single:true});el.dom.src=url;}},onRender:function(ct,position){GeoExt.LegendImage.superclass.onRender.call(this,ct,position);if(this.url){this.setUrl(this.url);}},onDestroy:function(){var el=this.getEl();if(el){el.un("error",this.onImageLoadError,this);}
-GeoExt.LegendImage.superclass.onDestroy.apply(this,arguments);},onImageLoadError:function(){this.getEl().dom.src=this.defaultImgSrc;}});Ext.reg('gx_legendimage',GeoExt.LegendImage);Ext.namespace("GeoExt");GeoExt.LayerOpacitySlider=Ext.extend(Ext.Slider,{layer:null,complementaryLayer:null,delay:5,changeVisibilityDelay:5,aggressive:false,changeVisibility:false,value:null,inverse:false,constructor:function(config){if(config.layer){this.layer=this.getLayer(config.layer);this.bind();this.complementaryLayer=this.getLayer(config.complementaryLayer);if(config.inverse!==undefined){this.inverse=config.inverse;}
-config.value=(config.value!==undefined)?config.value:this.getOpacityValue(this.layer);delete config.layer;delete config.complementaryLayer;}
-GeoExt.LayerOpacitySlider.superclass.constructor.call(this,config);},bind:function(){if(this.layer&&this.layer.map){this.layer.map.events.on({changelayer:this.update,scope:this});}},unbind:function(){if(this.layer&&this.layer.map){this.layer.map.events.un({changelayer:this.update,scope:this});}},update:function(evt){if(evt.property==="opacity"&&evt.layer==this.layer){this.setValue(this.getOpacityValue(this.layer));}},setLayer:function(layer){this.unbind();this.layer=this.getLayer(layer);this.setValue(this.getOpacityValue(layer));this.bind();},getOpacityValue:function(layer){var value;if(layer&&layer.opacity!==null){value=parseInt(layer.opacity*(this.maxValue-this.minValue));}else{value=this.maxValue;}
-if(this.inverse===true){value=(this.maxValue-this.minValue)-value;}
-return value;},getLayer:function(layer){if(layer instanceof OpenLayers.Layer){return layer;}else if(layer instanceof GeoExt.data.LayerRecord){return layer.getLayer();}},initComponent:function(){GeoExt.LayerOpacitySlider.superclass.initComponent.call(this);if(this.changeVisibility&&this.layer&&(this.layer.opacity==0||(this.inverse===false&&this.value==this.minValue)||(this.inverse===true&&this.value==this.maxValue))){this.layer.setVisibility(false);}
-if(this.complementaryLayer&&((this.layer&&this.layer.opacity==1)||(this.inverse===false&&this.value==this.maxValue)||(this.inverse===true&&this.value==this.minValue))){this.complementaryLayer.setVisibility(false);}
-if(this.aggressive===true){this.on('change',this.changeLayerOpacity,this,{buffer:this.delay});}else{this.on('changecomplete',this.changeLayerOpacity,this);}
-if(this.changeVisibility===true){this.on('change',this.changeLayerVisibility,this,{buffer:this.changeVisibilityDelay});}
-if(this.complementaryLayer){this.on('change',this.changeComplementaryLayerVisibility,this,{buffer:this.changeVisibilityDelay});}
-this.on("beforedestroy",this.unbind,this);},changeLayerOpacity:function(slider,value){if(this.layer){value=value/(this.maxValue-this.minValue);if(this.inverse===true){value=1-value;}
-this.layer.setOpacity(value);}},changeLayerVisibility:function(slider,value){var currentVisibility=this.layer.getVisibility();if((this.inverse===false&&value==this.minValue)||(this.inverse===true&&value==this.maxValue)&¤tVisibility===true){this.layer.setVisibility(false);}else if((this.inverse===false&&value>this.minValue)||(this.inverse===true&&valuethis.minValue)&¤tVisibility==false){this.complementaryLayer.setVisibility(true);}},addToMapPanel:function(panel){this.on({render:function(){var el=this.getEl();el.setStyle({position:"absolute",zIndex:panel.map.Z_INDEX_BASE.Control});el.on({mousedown:this.stopMouseEvents,click:this.stopMouseEvents});},scope:this});},removeFromMapPanel:function(panel){var el=this.getEl();el.un({mousedown:this.stopMouseEvents,click:this.stopMouseEvents,scope:this});this.unbind();},stopMouseEvents:function(e){e.stopEvent();}});Ext.reg('gx_opacityslider',GeoExt.LayerOpacitySlider);Ext.namespace("GeoExt.data");GeoExt.data.AttributeReader=function(meta,recordType){meta=meta||{};if(!meta.format){meta.format=new OpenLayers.Format.WFSDescribeFeatureType();}
-GeoExt.data.AttributeReader.superclass.constructor.call(this,meta,recordType||meta.fields);if(meta.feature){this.recordType.prototype.fields.add(new Ext.data.Field("value"));}};Ext.extend(GeoExt.data.AttributeReader,Ext.data.DataReader,{read:function(request){var data=request.responseXML;if(!data||!data.documentElement){data=request.responseText;}
-return this.readRecords(data);},readRecords:function(data){var attributes;if(data instanceof Array){attributes=data;}else{attributes=this.meta.format.read(data).featureTypes[0].properties;}
-var feature=this.meta.feature;var recordType=this.recordType;var fields=recordType.prototype.fields;var numFields=fields.length;var attr,values,name,record,ignore,value,records=[];for(var i=0,len=attributes.length;i-1);}else if(matches instanceof RegExp){ignore=(matches.test(value));}}
-return ignore;}});Ext.namespace("GeoExt.plugins");GeoExt.plugins.TreeNodeComponent=Ext.extend(Ext.util.Observable,{constructor:function(config){Ext.apply(this.initialConfig,Ext.apply({},config));Ext.apply(this,config);GeoExt.plugins.TreeNodeComponent.superclass.constructor.apply(this,arguments);},init:function(tree){tree.on({"rendernode":this.onRenderNode,scope:this});},onRenderNode:function(node){var rendered=node.rendered;var attr=node.attributes;var component=attr.component||this.component;if(!rendered&&component){var elt=Ext.DomHelper.append(node.ui.elNode,[{"tag":"div"}]);if(typeof component=="function"){component=component(node,elt);}else if(typeof component=="object"&&typeof component.fn=="function"){component=component.fn.apply(component.scope,[node,elt]);}
-if(typeof component=="object"&&typeof component.xtype=="string"){component=Ext.ComponentMgr.create(component);}
-if(component instanceof Ext.Component){component.render(elt);node.component=component;}}},destroy:function(){tree.un("rendernode",this.onRenderNode,this);}});Ext.preg&&Ext.preg("gx_treenodecomponent",GeoExt.plugins.TreeNodeComponent);Ext.namespace("GeoExt");GeoExt.ZoomSliderTip=Ext.extend(GeoExt.SliderTip,{template:'
This example show how to link a metadata search results view to a GeoExt mappanel.
- A layer is added to the map in order to draw bounding box for each record found
- (multiple bounding box will be group in a multipolygon feature if needed). On mouse over
- the bounding box is highlighted on the map and When double
- click on a record, the map zoom to the extent of the record.
-
- This example show how to register an OGC WMS to the catalogue. For the time being, you need to add xml.havesting.add,
- xml.havesting.start and xml.havesting.run to guest user if you want to make that service publicly available. You also
- need a quite flexible proxy for GetCapabilities calls.
-
-
-
-
-
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/examples/quick-harvester-register.js b/web-client/src/main/resources/apps/js/GeoNetwork/examples/quick-harvester-register.js
deleted file mode 100644
index 20ba8b25965..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/examples/quick-harvester-register.js
+++ /dev/null
@@ -1,40 +0,0 @@
-OpenLayers.ProxyHostURL = '/geonetwork/proxy?url=';
-OpenLayers.ProxyHost = function(url){
- /**
- * Do not use proxy for local domain.
- * This is required to keep the session activated.
- */
- if (url && url.indexOf(window.location.host) != -1) {
- return url;
- } else {
- return OpenLayers.ProxyHostURL + encodeURIComponent(url);
- }
-};
-
-var catalogue;
-
-Ext.onReady(function(){
-
- catalogue = new GeoNetwork.Catalogue({
- servlet: GeoNetwork.URL
- });
- catalogue.metadataStore = GeoNetwork.data.MetadataResultsStore();
-
- var tb = new Ext.Toolbar({
- width: 155
- });
- tb.render('qr');
-
- var menu = new GeoNetwork.OGCServiceQuickRegister({
- catalogue: catalogue
- });
-
- tb.add({
- text: 'Add an OGC service',
- iconCls: 'md-mn md-mn-badd',
- scale: 'large',
- iconAlign: 'left',
- menu: menu
- });
- tb.doLayout();
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/examples/search-by-geometry.html b/web-client/src/main/resources/apps/js/GeoNetwork/examples/search-by-geometry.html
deleted file mode 100644
index 3baaca57d19..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/examples/search-by-geometry.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
- Search history
-
-
-
-
-
-
-
-
-
-
-
-
-
Search using spatial filter
-
Here is an example to create a geometry search field which could be
- initialized by different types of interactive components like a button
- to set the location based on browser geolocalisation or with a simple
- map which define the search extent. Usually the geometry field will be
- a hidden field. The relation field is optional as intersection will be
- the default value used.
Simple widget which helps user define an area of interest in order to extract data
- from a WFS server. This example could be called with a url and version parameters.
- Example: wxs-extractor.html?url=http://localhost:8080/geoserver/wfs
-
-
-
-
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/examples/wxs-extractor.js b/web-client/src/main/resources/apps/js/GeoNetwork/examples/wxs-extractor.js
deleted file mode 100644
index f79154be084..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/examples/wxs-extractor.js
+++ /dev/null
@@ -1,35 +0,0 @@
-OpenLayers.ProxyHostURL = '../../../../proxy?url=';
-
-OpenLayers.ProxyHost = function(url){
- if (url && url.indexOf(window.location.host) != -1) {
- return url;
- } else {
- return OpenLayers.ProxyHostURL + encodeURIComponent(url);
- }
-};
-
-Ext.onReady(function() {
- var urlParameters = GeoNetwork.Util.getParameters(location.href);
-
- var map = new OpenLayers.Map({
- div : "map",
- controls : [ new OpenLayers.Control.TouchNavigation({
- dragPanOptions : {
- enableKinetic : true
- }
- }), new OpenLayers.Control.Zoom() ],
- layers : [ new OpenLayers.Layer.OSM("OpenStreetMap", null, {
- transitionEffect : "resize"
- }) ],
- center : new OpenLayers.LonLat(0, 0),
- zoom : 1
- });
-
- new GeoNetwork.WxSExtractor({
- renderTo : 'extractor',
- url: urlParameters.url || 'http://services.sandre.eaufrance.fr/geo/ouvrage',
- version: urlParameters.version,
- layer: 'repom',
- map: map
- });
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork.js
deleted file mode 100644
index 21b781e0dd0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork.js
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-/*
- * The code in this file is based on code taken from OpenLayers.
- *
- * Copyright (c) 2006-2007 MetaCarta, Inc., published under the Clear BSD
- * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
- * full text of the license.
- */
-
-(function() {
-
- /**
- * Check to see if GeoNetwork.singleFile is true. It is true if the
- * GeoNetwork/SingleFile.js is included before this one, as it is
- * the case in single file builds.
- */
- var singleFile = (typeof GeoNetwork == "object" && GeoNetwork.singleFile);
-
- /**
- * The relative path of this script.
- */
- var scriptName = singleFile ? "GeoNetwork.js" : "lib/GeoNetwork.js";
-
- /**
- * Function returning the path of this script.
- */
- var getScriptLocation = function() {
- var scriptLocation = "";
- // If we load other scripts right before GeoNetwork using the same
- // mechanism to add script resources dynamically (e.g. OpenLayers),
- // document.getElementsByTagName will not find the GeoNetwork script tag
- // in FF2. Using document.documentElement.getElementsByTagName instead
- // works around this issue.
- var scripts = document.documentElement.getElementsByTagName('script');
- for(var i=0, len=scripts.length; i -1) && (index + scriptName.length == pathLength)) {
- scriptLocation = src.slice(0, pathLength - scriptName.length);
- break;
- }
- }
- }
- return scriptLocation;
- };
-
- /**
- * If GeoNetwork.singleFile is false then the JavaScript files in the jsfiles
- * array are autoloaded.
- */
- if(!singleFile) {
- var jsfiles = new Array(
- "GeoNetwork/Util.js",
- "GeoNetwork/Message.js",
- "GeoNetwork/lang/ca.js",
- "GeoNetwork/lang/en.js",
- "GeoNetwork/lang/fr.js",
- "GeoNetwork/lang/nl.js",
- "GeoNetwork/lang/de.js",
- "GeoNetwork/lang/es.js",
- "GeoNetwork/lang/pl.js",
- "GeoNetwork/Catalogue.js",
- "GeoNetwork/util/Old.js",
- "GeoNetwork/util/SearchTools.js",
- "GeoNetwork/util/INSPIRESearchFormTools.js",
- "GeoNetwork/util/SearchFormTools.js",
- "GeoNetwork/util/CSWSearchTools.js",
- "GeoNetwork/data/SubTemplateTypeStore.js",
- "GeoNetwork/util/HelpTools.js",
-// "GeoNetwork/util/LinkTools.js",
- "GeoNetwork/data/GroupStore.js",
- "GeoNetwork/data/UserStore.js",
- "GeoNetwork/data/StatusStore.js",
- "GeoNetwork/data/CategoryStore.js",
- "GeoNetwork/data/ValidationRuleStore.js",
- "GeoNetwork/data/LanguageStore.js",
- "GeoNetwork/data/SuggestionStore.js",
- "GeoNetwork/data/ThesaurusFeedStore.js",
- "GeoNetwork/data/RegionStore.js",
- "GeoNetwork/data/CodeListStore.js",
- "GeoNetwork/data/ThesaurusStore.js",
- "GeoNetwork/data/CatalogueSourceStore.js",
- "GeoNetwork/data/HarvesterStore.js",
- "GeoNetwork/data/MetadataThumbnailStore.js",
- "GeoNetwork/data/MetadataResultsStore.js",
- "GeoNetwork/data/MetadataResultsFastStore.js",
- "GeoNetwork/data/MetadataRelationStore.js",
- "GeoNetwork/data/MetadataCSWResultsStore.js",
- "GeoNetwork/data/MetadataSummaryStore.js",
- "GeoNetwork/data/OpenSearchSuggestionReader.js",
- "GeoNetwork/data/OpenSearchSuggestionStore.js",
- "GeoNetwork/form/SearchField.js",
- "GeoNetwork/form/GeometryMapField.js",
- "GeoNetwork/form/OpenSearchSuggestionTextField.js",
- "GeoNetwork/widgets/LoginForm.js",
- "GeoNetwork/widgets/Templates.js",
- "GeoNetwork/widgets/MetadataMenu.js",
- "GeoNetwork/widgets/SearchFormPanel.js",
- "GeoNetwork/widgets/FeedbackForm.js",
- "GeoNetwork/widgets/MetadataResultsView.js",
- "GeoNetwork/widgets/MetadataResultsToolbar.js",
- "GeoNetwork/widgets/FacetsPanel.js",
- "GeoNetwork/widgets/TagCloudView.js",
- "GeoNetwork/widgets/admin/AdminTools.js",
- "GeoNetwork/widgets/admin/MetadataInsertPanel.js",
- "GeoNetwork/widgets/admin/HarvesterPanel.js",
- "GeoNetwork/widgets/admin/SubTemplateManagerPanel.js",
- "GeoNetwork/widgets/admin/PrivilegesPanel.js",
- "GeoNetwork/widgets/view/ViewWindow.js",
- "GeoNetwork/widgets/view/ViewPanel.js",
- "GeoNetwork/widgets/editor/KeywordSelectionPanel.js",
- "GeoNetwork/widgets/editor/ConceptSelectionPanel.js",
- "GeoNetwork/widgets/editor/CRSSelectionPanel.js",
- "GeoNetwork/widgets/editor/SubTemplateSelectionPanel.js",
- "GeoNetwork/widgets/editor/NewMetadataPanel.js",
- "GeoNetwork/widgets/editor/LogoSelectionPanel.js",
- "GeoNetwork/widgets/editor/LinkedMetadataSelectionPanel.js",
- "GeoNetwork/widgets/editor/EditorTools.js",
- "GeoNetwork/widgets/editor/SuggestionsPanel.js",
- "GeoNetwork/widgets/editor/HelpPanel.js",
- "GeoNetwork/widgets/editor/GeoPublisherPanel.js",
- "GeoNetwork/widgets/editor/ThumbnailPanel.js",
- "GeoNetwork/widgets/editor/LinkResourcesWindow.js",
- "GeoNetwork/widgets/editor/LinkedMetadataPanel.js",
- "GeoNetwork/widgets/editor/ValidationPanel.js",
- "GeoNetwork/widgets/editor/EditorPanel.js",
- "GeoNetwork/widgets/editor/EditorToolbar.js",
- "GeoNetwork/widgets/OGCServiceQuickRegister.js",
- "GeoNetwork/map/ExtentMap.js",
- "GeoNetwork/map/core/OGCUtil.js",
- "GeoNetwork/map/core/CatalogueInterface.js",
- "GeoNetwork/map/core/WMCManager.js",
- "GeoNetwork/map/Control/ExtentBox.js",
- "GeoNetwork/map/Control/ZoomWheel.js",
- "GeoNetwork/map/widgets/tree/WMSListGenerator.js",
- "GeoNetwork/map/widgets/tree/WMSTreeGenerator.js",
- "GeoNetwork/map/widgets/wms/BrowserPanel.js",
- "GeoNetwork/map/widgets/wms/LayerInfoPanel.js",
- "GeoNetwork/map/widgets/wms/LayerStylesPanel.js",
- "GeoNetwork/map/widgets/wms/PreviewPanel.js",
- "GeoNetwork/map/widgets/wms/WMSLayerInfo.js",
- "GeoNetwork/map/widgets/FeatureInfoPanel.js",
- "GeoNetwork/map/widgets/LegendPanel.js",
- "GeoNetwork/map/widgets/OpacitySlider.js",
- "GeoNetwork/map/widgets/ProjectionSelector.js",
- "GeoNetwork/map/widgets/TimeSelector.js",
- "GeoNetwork/map/widgets/WxSExtractor.js",
- "GeoNetwork/map/windows/BaseWindow.js",
- "GeoNetwork/map/windows/SingletonWindowManager.js",
- "GeoNetwork/map/windows/AddWMS.js",
- "GeoNetwork/map/windows/FeatureInfo.js",
- "GeoNetwork/map/windows/Opacity.js",
- "GeoNetwork/map/windows/LoadWmc.js",
- "GeoNetwork/map/windows/Disclaimer.js",
- "GeoNetwork/map/windows/LayerStyles.js",
- "GeoNetwork/map/windows/WmsLayerMetadata.js",
- "GeoNetwork/map/windows/WMSTime.js",
- "../../OpenLayers/addins/LoadingPanel.js",
- "../../OpenLayers/addins/ScaleBar.js",
- "../../OpenLayers/addins/Format/CSWGetRecords/v2_0_2_GeoNetwork.js",
- "../../OpenLayers/addins/Format/GeoNetworkRecords.js"
- //"GeoNetwork/map/widgets/PrintAction.js"
- );
-
- var allScriptTags = new Array(jsfiles.length);
-
- var host = getScriptLocation() + "lib/";
- for (var i=0, len=jsfiles.length; i";
- }
- document.write(allScriptTags.join(""));
- }
-})();
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Catalogue.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Catalogue.js
deleted file mode 100644
index deef9c043a4..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Catalogue.js
+++ /dev/null
@@ -1,1613 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork');
-
-/** api: (define)
- * module = GeoNetwork
- * class = Catalogue
- * base_link = `Ext.util.Observable `_
- */
-/** api: example
- *
- * Sample code to create a GeoNetwork catalogue connection on the
- * same host as the web page (ig. http://localhost/geonetwork will be the
- * default connection url):
- *
- * .. code-block:: javascript
- *
- * var catalogue = new GeoNetwork.Catalogue({
- * metadataStore : GeoNetwork.data.MetadataResultsStore(),
- * summaryStore : GeoNetwork.data.MetadataSummaryStore()
- * });
- *
- */
-/** api: constructor
- * .. class:: GeoNetwork(config)
- *
- * Create a GeoNetwork catalogue client.
- *
- *
- * Catalogue client is recommended to be running on the same
- * host as the catalogue in order to be used without a proxy
- * for XHR requests. Catalogue could run with a proxy but some
- * functionnalities will not be able because they require a
- * continuity in the session (often broken by the use of
- * a proxy).
- *
- * If the application need both cross domain and local
- * domain XHR Request configure OpenLayers.ProxyHost with
- * the following:
- *
- * .. code-block:: javascript
- *
- * OpenLayers.ProxyHost = function(url) {
- * if (url.indexOf(window.location.host)!=-1) {
- * return url;
- * } else {
- * return OpenLayers.ProxyHostURL + encodeURIComponent(url);
- * }
- * };
- *
- *
- *
- * To be improved & discussed :
- *
- * * i18n : generate from GeoNetwork file ?
- *
- * * memory usage (eg. destroy calls)
- *
- * * massive action : hack made embedded existing HTML page in a panel
- *
- * and overriding JS in Old.js
- *
- * * search form : remote & Z39.50
- *
- * * global var named catalogue required (eg. Templates) should be improved, How ?
- *
- * * add more events to component in order to reduce dependencies
- *
- * * session state ? using localStorage or cookie ?
- *
- */
-GeoNetwork.Catalogue = Ext.extend(Ext.util.Observable, {
- /** api: property[SERVERURL]
- * ``String`` GeoNetwork catalogue host URL.
- */
- SERVERURL: null,
-
- /** api: property[URL]
- * ``String`` GeoNetwork catalogue URL.
- */
- URL: null,
-
- /** api: property[LANG]
- * ``String`` Optional GeoNetwork language
- * parameter use for all services (eg.
- * http://localhost/geonetwork/en/xml.search).
- * ``DEFAULT_LANG`` by default.
- */
- LANG: "en",
-
- /** api: property[LANG]
- * ``String`` Default language
- */
- DEFAULT_LANG: "en",
-
-
- EDITOR_MODE : {
- IN_OTHER_WINDOW : 1,
- IN_EDITOR_POPUP : 2
- },
-
- editMode : 1,
-
- /** api: config[hostUrl]
- * ``String`` Optional GeoNetwork host name.
- * Default value is web page host name.
- *
- * api: example
- * .. code-block:: javascript
- *
- * var catalogue = new GeoNetwork.Catalogue({
- * hostUrl : 'http://www.fao.org/',
- * servlet : 'geonetwork'
- * });
- *
- *
- */
- hostUrl: null,
-
- /** api: config[servlet]
- * ``String`` Optional GeoNetwork servlet name.
- * Default value is ``geonetwork``.
- */
- servlet: null,
-
- extentMap: null,
-
- /** api: property[services]
- * ``Object`` The list of GeoNetwork services
- */
- services: {},
-
- /** api: property[windowOption]
- * ``String`` Configuration of popup windows
- */
- windowOption: "menubar=no,location=no,toolbar=no,directories=no",
-
- /** api: property[windowName]
- * ``String`` Name of popup windows
- *
- * FIXME : this is always the same, assumming the main app will
- * always popup in the same window. Maybe that's not a good idea
- * in order to allow multi editors for example.
- */
- windowName: "",
-
- /** api: property[startRecord]
- * ``Number`` Index of the first record for current search
- */
- startRecord: 1,
-
- /** api: config[mdStore]
- * ``GeoNetwork.data.MetadataResultsStore`` A store holding
- * search results (see :class:`GeoNetwork.data.MetadataResultsStore` )
- */
- mdStore: null,
-
- /** api: config[summaryStore]
- * ``GeoNetwork.data.MetadataSummaryStore`` The store
- * for search summary results (see :class:`GeoNetwork.data.MetadataSummaryStore` ).
- */
- summaryStore: null,
-
- /** api: config[statusBarId]
- * ``String`` Optional identifier of an ``Ext.Element`` or a DOM element
- * to be use to display status information.
- */
- statusBarId: null,
-
- /** api: config[mdDisplayPanelId]
- * ``String`` Optional identifier of a panel to use to display metadata
- */
- mdDisplayPanelId: undefined,
- /** api: config[resultsView]
- * ``String`` Optional metadata results view panel
- */
- resultsView: undefined,
- /** api: config[mdOverlayedCmpId]
- * ``String`` Not used for now
- */
- mdOverlayedCmpId: undefined,
-
- /** api: property[identifiedUser]
- * ``Object`` Current user information and role.
- */
- identifiedUser: undefined,
-
- metadataEditFn: undefined,
- /** api: config[adminAppUrl]
- * ``String`` URL to the administration interface
- * TODO : should we go to admin service by default ?
- *
- */
- adminAppUrl: '',
- /** private: property[selectedRecords]
- * ``Number`` Number of selected records
- */
- selectedRecords: 0,
-
- /**
- * private: property[casEnabled]
- * ``Boolean`` If is cas is the authentication
- * mechanism. getInfo will set this property
- */
- casEnabled : false,
-
- /** private: property[info]
- * ``Object`` Information about the catalog retrieved from xml.info service
- */
- info: null,
- /** private: method[constructor]
- * Initializes the catalogue connection configuration
- * and service URL.
- *
- */
- constructor: function(config){
- config = config || {};
- Ext.apply(this, config);
-
-
- if (this.hostUrl) {
- // relative path
- if (this.hostUrl.indexOf('http') === -1) {
- this.hostUrl = window.location.href.match(/http.*\//, '') + this.hostUrl;
- }
- this.SERVERURL = this.hostUrl;
- } else {
- this.SERVERURL = 'http://' + window.location.host + '/';
- }
-
- // Set catalogue URL based on hostUrl first
- if (this.hostUrl) {
- this.URL = this.SERVERURL;
- } else if (this.servlet) {
- this.URL = this.SERVERURL + this.servlet;
- } else {
- this.URL = this.SERVERURL + 'geonetwork';
- }
-
- if (!this.node) {
- this.node = 'srv';
- }
-
- this.LANG = (this.lang ? this.lang : this.DEFAULT_LANG);
-
- // Register GeoNetwork services URL
- var serviceUrl = this.URL + '/' + this.node + '/' + this.LANG + "/";
- this.services = {
- rootUrl: serviceUrl,
- csw: serviceUrl + 'csw',
- feedback: serviceUrl + 'feedback.send',
- xmlSearch: serviceUrl + 'xml.search',
- mdSelect: serviceUrl + 'metadata.select',
- mdView: serviceUrl + 'view',
- mdXMLInsert: serviceUrl + 'xml.metadata.insert',
- mdInsertPaste: serviceUrl + 'xml.metadata.insert.paste',
- mdInsertUpload: serviceUrl + 'xml.mef.import.ui',
- mdShow: serviceUrl + 'metadata.show.embedded',
- mdMEF: serviceUrl + 'mef.export',
- mdXMLGet: serviceUrl + 'xml.metadata.get',
- mdRDFGet: serviceUrl + 'rdf.metadata.get',
- mdXMLGet19139: serviceUrl + 'xml_iso19139',
- mdXMLGetDC: serviceUrl + 'xml_dublin-core',
- mdXMLGetFGDC: serviceUrl + 'xml_fgdc-std',
- mdXMLGet19115: serviceUrl + 'xml_iso19115to19139',
- mdDuplicate: serviceUrl + 'metadata.duplicate.form',
- mdDelete: serviceUrl + 'metadata.delete',
- mdExtract: serviceUrl + 'metadata.service.extract',
- mdPrint: serviceUrl + 'pdf',
- //mdEdit : serviceUrl + 'metadata.edit',
- mdEdit: serviceUrl + 'edit',
- mdCreate: serviceUrl + 'metadata.create.new',
- mdUpdate: serviceUrl + 'metadata.update.new',
- mdProcessingXml: serviceUrl + 'xml.metadata.processing',
- mdProcessing: serviceUrl + 'metadata.processing.new',
- mdMassiveChildrenForm: serviceUrl + 'metadata.batch.children.form',
- mdAdmin: serviceUrl + 'metadata.admin.form',
- mdAdminSave: serviceUrl + 'md.privileges.update',
- mdAdminXml: serviceUrl + 'xml.metadata.admin.form',
- mdBatchAdminXml: serviceUrl + 'md.privileges.batch',
- mdBatchSaveXml: serviceUrl + 'md.privileges.batch.update',
- mdValidate: serviceUrl + 'xml.metadata.validate',
- mdSuggestion: serviceUrl + 'metadata.suggestion',
- mdCategory: serviceUrl + 'metadata.category.form',
- mdRelationInsert: serviceUrl + 'xml.relation.insert',
- mdRelationDelete: serviceUrl + 'xml.relation.delete',
- mdRelation: serviceUrl + 'xml.relation',
- mdGetThumbnail: serviceUrl + 'metadata.thumbnail',
- mdSetThumbnail: serviceUrl + 'md.thumbnail.upload',
- mdUnsetThumbnail: serviceUrl + 'metadata.thumbnail.unset.new',
- mdImport: serviceUrl + 'metadata.xmlinsert.form',
- mdStatus: serviceUrl + 'metadata.status.form',
- mdStatusSet: serviceUrl + 'metadata.status',
- mdVersioning: serviceUrl + 'metadata.version',
- subTemplateType: serviceUrl + 'subtemplate.types',
- subTemplate: serviceUrl + 'subtemplate',
- upload: serviceUrl + 'resources.upload.new',
- uploadResource: serviceUrl + 'resource.upload.and.link',
- delResource: serviceUrl + 'resource.del.and.detach',
- prepareDownload: serviceUrl + 'prepare.file.download',
- fileDisclaimer: serviceUrl + 'file.disclaimer',
- fileDownload: serviceUrl + 'file.download',
- geopublisher: serviceUrl + 'geoserver.publisher',
- login: this.URL + '/j_spring_security_check',
- logout: this.URL + '/j_spring_security_logout',
- mef: serviceUrl + 'mef.export?format=full&version=2',
- csv: serviceUrl + 'csv.search',
- pdf: serviceUrl + 'pdf.selection.search',
- harvestingStart: serviceUrl + 'xml.harvesting.start',
- harvestingStop: serviceUrl + 'xml.harvesting.stop',
- harvestingRun: serviceUrl + 'xml.harvesting.run',
- harvestingAdd: serviceUrl + 'xml.harvesting.add',
- harvestingUpdate: serviceUrl + 'xml.harvesting.update',
- harvestingRemove: serviceUrl + 'xml.harvesting.remove',
- thesaurusAdd: serviceUrl + 'thesaurus.add',
- thesaurusActivate: serviceUrl + 'thesaurus.activate',
- thesaurusDelete: serviceUrl + 'thesaurus.delete',
- thesaurusUpload: serviceUrl + 'xml.thesaurus.upload',
- thesaurusDownload: serviceUrl + 'thesaurus.download',
- thesaurusConceptAdd: serviceUrl + 'thesaurus.addelement',
- thesaurusConceptUpdate: serviceUrl + 'thesaurus.updateelement',
- thesaurusConceptDelete: serviceUrl + 'thesaurus.deleteelement',
- getIcons: serviceUrl + 'xml.harvesting.info?type=icons',
- opensearchSuggest: serviceUrl + 'suggest',
- massiveOp: {
- NewOwner: serviceUrl + 'metadata.batch.newowner.form',
- Categories: serviceUrl + 'metadata.batch.category.form',
- Delete: serviceUrl + 'metadata.batch.delete',
- Privileges: serviceUrl + 'metadata.batch.admin.form',
- Versioning: serviceUrl + 'metadata.batch.version',
- Status: serviceUrl + 'metadata.batch.status.form',
- Replace: serviceUrl + 'metadata.batch.replace.form'
- },
- metadataMassiveUpdatePrivilege: serviceUrl + 'metadata.batch.update.privileges',
- metadataMassiveUpdateCategories: serviceUrl + 'metadata.batch.update.categories',
- metadataMassiveNewOwner: serviceUrl + 'metadata.batch.newowner',
- getMyInfo: serviceUrl + 'xml.info?type=me',
- getGroups: serviceUrl + 'xml.info?type=groups',
- getRegions: serviceUrl + 'xml.info?type=regions',
- getSources: serviceUrl + 'xml.info?type=sources',
- getUsers: serviceUrl + 'xml.info?type=users',
- getSiteInfo: serviceUrl + 'xml.info?type=site&type=auth&type=userGroupOnly',
- getInspireInfo: serviceUrl + 'xml.info?type=inspire',
- getIsoLanguages: serviceUrl + 'isolanguages',
- schemaInfo: serviceUrl + 'xml.schema.info',
- getZ3950repositories: serviceUrl + 'xml.info?type=z3950repositories',
- getCategories: serviceUrl + 'xml.info?type=categories',
- getHarvesters: serviceUrl + 'xml.harvesting.get',
- rate: serviceUrl + 'xml.metadata.rate',
- readOnly: serviceUrl + 'xml.info?type=readonly',
- xmlConfig: serviceUrl + 'xml.config.get',
- admin: serviceUrl + 'admin',
- xmlError: serviceUrl + 'xml.main.error',
- searchKeyword: serviceUrl + 'xml.search.keywords',
- getThesaurus: serviceUrl + 'xml.thesaurus.getList',
- getStatus: serviceUrl + 'xml.info?type=status',
- getKeyword: serviceUrl + 'xml.keyword.get',
- searchCRS: serviceUrl + 'crs.search',
- getCRSTypes: serviceUrl + 'crs.types',
- logoAdd: serviceUrl + 'logo.add',
- updatePassword: serviceUrl + 'change.password#/',
- updateUserInfo: serviceUrl + 'admin.console#/organization/users/',
- harvestingAdmin: serviceUrl + 'admin.console#/harvest',
- logoUrl: this.URL + '/images/logos/',
- imgUrl: this.URL + '/images/',
- harvesterLogoUrl: this.URL + '/images/harvesting/',
- getImportXSL: serviceUrl + 'get.conversions.xsl',
- proxy: this.URL + '/proxy'
- };
-
- // TODO : init only once required (ie. metadata show)
- this.extentMap = new GeoNetwork.map.ExtentMap();
-
- /** private: event[onSelectionChange]
- * Fires after the selection change.
- */
- /** private: event[afterLogin]
- * Fires after the user logged in.
- */
- /** private: event[afterLogout]
- * Fires after the user logged out.
- */
- /** private: event[afterBadLogin]
- * Fires after bad user logged in.
- */
- /** private: event[afterBadLogout]
- * Fires after bad user logged out.
- */
- this.addEvents('selectionchange', 'afterLogin', 'afterLogout', 'afterBadLogin', 'afterBadLogout', 'afterDelete');
-
- GeoNetwork.Catalogue.superclass.constructor.call(this, config);
- },
- setServiceUrl: function(serviceName, url) {
- this.services[serviceName] = this.services.rootUrl + url;
- },
- /** api: method[isIdentified]
- *
- * FIXME : return Object
- */
- isIdentified: function(){
- return !this.identifiedUser ? false : true;
- },
- /** api: method[isAdmin]
- * Return true if current user is an admin
- */
- isAdmin: function(){
- return this.identifiedUser.role === "Administrator";
- },
- /** api: method[canSetInternalPrivileges]
- * Return true if current user can set privileges to internal groups (ie. internet, intranet)
- */
- canSetInternalPrivileges: function(){
- return this.identifiedUser.role === "Administrator" || this.identifiedUser.role === "Reviewer";
- },
- /** api: method[isReadOnly]
- * Return true if GN is is read-only mode
- *
- * Only refresh status every 10 sec to not
- * call too many times the server status info service.
- */
- isReadOnlyCheckInterval: 10000,
- isReadOnlyStatus: false,
- isReadOnlyLastCheck: null,
- isReadOnly: function(){
- var start = new Date().getTime();
- var interval = start - this.isReadOnlyLastCheck;
- if (this.isReadOnlyLastCheck == null ||
- interval > this.isReadOnlyCheckInterval) {
- this.isReadOnlyStatus = false;
- var request = OpenLayers.Request.GET({
- url: this.services.readOnly,
- async: false
- }), ro;
-
- if (request.responseXML) {
- var xml = request.responseXML.documentElement;
- ro = xml.getElementsByTagName('readonly')[0];
- if(ro) {
- this.isReadOnlyStatus = ro.childNodes[0].nodeValue === "true";
- this.isReadOnlyLastCheck = new Date().getTime();
- }
- }
- }
- return this.isReadOnlyStatus;
- },
- /** api: method[onAfterLogin]
- * :param e: ``Object``
- *
- * The "onAfterLogin" listener.
- *
- * Listeners will be called with the following arguments:
- *
- * * ``this`` : GeoNetwork.Catalogue
- *
- * * ``user`` : Current user FIXME
- *
- */
- onAfterLogin: function(){
- this.fireEvent('afterLogin', this, this.identifiedUser);
- },
- /** api: method[onAfterBadLogin]
- * :param e: ``Object``
- *
- * The "onAfterBadLogin" listener.
- *
- */
- onAfterBadLogin: function(){
- this.fireEvent('afterBadLogin', this, this.identifiedUser);
- },
- /** api: method[onAfterLogout]
- * :param e: ``Object``
- *
- * The "onAfterLogout" listener.
- */
- onAfterLogout: function(){
- this.fireEvent('afterLogout', this, this.identifiedUser);
- },
- /** api: method[onAfterBadLogout]
- * :param e: ``Object``
- *
- * The "onAfterBadLogout" listener.
- */
- onAfterBadLogout: function(){
- this.fireEvent('afterBadLogout', this, this.identifiedUser);
- },
- /** api: method[onAfterDelete]
- * :param e: ``Object``
- *
- * The "onAfterDelete" listener.
- *
- * Listeners will be called with the following arguments:
- *
- * * ``this`` : GeoNetwork.Catalogue
- *
- */
- onAfterDelete: function(){
- this.fireEvent('afterDelete', this);
- },
- /** api: method[onAfterRating]
- * :param e: ``Object``
- *
- * The "onAfterRating" listener.
- *
- * Listeners will be called with the following arguments:
- *
- * * ``this`` : GeoNetwork.Catalogue
- *
- */
- onAfterRating: function(){
- this.fireEvent('afterRating', this);
- },
- /** api: method[onAfterStatus]
- * :param e: ``Object``
- *
- * The "onAfterStatus" listener.
- *
- * Listeners will be called with the following arguments:
- *
- * * ``this`` : GeoNetwork.Catalogue
- *
- */
- onAfterStatus: function(){
- this.fireEvent('afterStatus', this);
- },
- /** private: method[setSelectedRecords]
- * :param nb: ``Number``
- *
- * Set number of selected records
- */
- setSelectedRecords: function(nb){
- this.selectedRecords = parseInt(nb, 10);
- this.onSelectionChange();
- },
- getSelectedRecords: function(){
- return this.selectedRecords;
- },
- onSelectionChange: function(){
- this.fireEvent('selectionchange', this, this.getSelectedRecords());
- },
- /** api: method[getInfo]
- * :param refresh: ``boolean`` force refreshing the catalog info if not available.
- *
- * Return catalogue information (site name, organization, id, casEnabled).
- */
- getInfo: function (refresh) {
- if (refresh || this.info === null) {
- this.info = {};
- var properties = ['name', 'organization', 'siteId', 'casEnabled', 'userGroupOnly'];
- var request = OpenLayers.Request.GET({
- url: this.services.getSiteInfo,
- async: false
- });
-
- //IE10 issue
- if(!request.responseXML) {
- var parser = new DOMParser();
- request.responseXML = parser.parseFromString(request.responseText, "application/xml");
- }
-
- if (request.responseXML) {
- var xml = request.responseXML.documentElement;
- Ext.each(properties, function(item, idx){
- var children = xml.getElementsByTagName(item)[0];
- if (children) {
- this.info[item] = children.childNodes[0].nodeValue;
- }
- }, this);
- }
- this.casEnabled = this.info.casEnabled === 'true';
- }
- return this.info;
- },
- /** api: method[getInspireInfo]
- *
- * Return catalogue inspire information (enable, enableSearchPanel).
- */
- getInspireInfo: function(){
- var info = {};
- var properties = ['enable', 'enableSearchPanel'];
- var request = OpenLayers.Request.GET({
- url: this.services.getInspireInfo,
- async: false
- });
-
- //IE10 issue
- if(!request.responseXML) {
- var parser = new DOMParser();
- request.responseXML = parser.parseFromString(request.responseText, "application/xml");
- }
- if (request.responseXML) {
- var xml = request.responseXML.documentElement;
- Ext.each(properties, function(item, idx){
- var i = xml.getElementsByTagName(item)[0];
- info[item] = i && i.childNodes[0] && i.childNodes[0].nodeValue;
- });
- }
- return info;
- },
- /** private: method[updateStatus]
- *
- * Update status bar information. Status bar could be an
- * HTML div or an Ext.component
- *
- * TODO : Ext.Element MUST have an update method.
- *
- */
- updateStatus: function(msg){
- if (this.statusBarId) {
- var el = Ext.getCmp(this.statusBarId);
- if (el) {
- // In case of a TextItem
- el.update(msg);
- return;
- }
-
- el = Ext.getDom(this.statusBarId);
- if (el) {
- el.innerHTML = msg;
- return;
- }
- }
- },
- /** api: method[search]
- * :param formId: ``String`` An Ext.Form identifier.
- * :param onSuccess: ``Function or null`` A function to trigger in
- * case of success (Ext.emptyFn by default).
- * :param onFailure: ``Function or null`` A function to trigger in
- * case of failure (Ext.emptyFn by default).
- * :param startRecord: ``Number or null`` The start record for the
- * search (Default is 1). The number of records returned by a search
- * is defined by an E_hits_per_page field defined in the form. If
- * not default value is used.
- * :param updateStore: ``Boolean`` false to not update catalogue stores.
- * Default to true.
- * :param metadataStore: ``GeoNetwork.data.MetadataResultsStore or GeoNetwork.data.MetadataResultsFastStore`` the metadata store to use. If undefined, catalogue metadata store
- * :param summaryStore: ``GeoNetwork.data.MetadataSummaryStore`` the summary store to use. If undefined, the catalogue summary store.
- * :param async: ``Boolean`` false to run in synchrone mode. Default is true.
- *
- * Run a search operation using GeoNetwork xml.search service.
- * Initialize results and summary stores.
- */
- search: function(formOrParams, onSuccess, onFailure, startRecord, updateStore, metadataStore, summaryStore, async){
-
- var isCatalogueMdStore = this.metadataStore === metadataStore;
- if (isCatalogueMdStore) {
- this.updateStatus(OpenLayers.i18n('searching'));
- }
-
- if (updateStore !== false) {
- updateStore = true;
- }
- if (!startRecord) {
- startRecord = this.startRecord;
- }
- if (!onSuccess) {
- onSuccess = Ext.emptyFn;
- }
- if (!onFailure) {
- onFailure = Ext.emptyFn;
- }
- if (metadataStore === undefined) {
- metadataStore = this.metadataStore;
- }
- if (summaryStore === undefined) {
- summaryStore = this.summaryStore;
- }
- if (updateStore) {
- metadataStore.removeAll();
- }
- if (typeof formOrParams === 'object') {
- GeoNetwork.util.SearchTools.doQueryFromParams(formOrParams, this, startRecord, onSuccess, onFailure, updateStore, metadataStore, summaryStore, async);
- } else {
- GeoNetwork.util.SearchTools.doQueryFromForm(formOrParams, this, startRecord, onSuccess, onFailure, updateStore, metadataStore, summaryStore, async);
- }
- },
- /** api: method[kvpSearch]
- * :param query: ``String`` A KVP search string (eg. any=africa to
- * do a full text search for africa). All GeoNetwork search terms
- * could be used.
- * :param onSuccess: ``Function or null`` A function to trigger in
- * case of success (Ext.emptyFn by default).
- * :param onFailure: ``Function or null`` A function to trigger in
- * case of failure (Ext.emptyFn by default).
- * :param startRecord: ``Number or null`` The start record for the
- * search (Default is 1). The number of records returned by a search
- * is defined by an E_hits_per_page field defined in the form. If
- * not default value is used.
- * :param updateStore: ``Boolean`` true to update catalogue attached stores.
- * :param async: ``Boolean`` false to run in synchrone mode. Default is true.
- *
- * Run a search operation based on KVP query using GeoNetwork
- * xml.search service. Initialize results and summary stores.
- * KVP search could be used in fast mode in order to quickly
- * populate a summary store (for a TagCloud for example).
- */
- kvpSearch: function(query, onSuccess, onFailure, startRecord, updateStore, metadataStore, summaryStore, async){
-
- if (updateStore !== false) {
- updateStore = true;
- }
- if (!startRecord) {
- startRecord = this.startRecord;
- }
- if (!onSuccess) {
- onSuccess = Ext.emptyFn;
- }
- if (!onFailure) {
- onFailure = Ext.emptyFn;
- }
- if (!metadataStore) {
- metadataStore = this.metadataStore;
- }
- if (!summaryStore) {
- summaryStore = this.summaryStore;
- }
- if (updateStore) {
- metadataStore.removeAll();
- }
- GeoNetwork.util.SearchTools.doQuery(query, this, startRecord, onSuccess, onFailure, updateStore, metadataStore, summaryStore, async);
- },
- /** api: method[cswSearch]
- * :param formId: ``String`` An Ext.Form identifier
- * :param onSuccess: ``Function or null`` A function to trigger in
- * case of success (Ext.emptyFn by default)
- * :param onFailure: ``Function or null`` A function to trigger in
- * case of failure (Ext.emptyFn by default)
- * :param startRecord: ``Number or null`` The start record for the
- * search (Default is 1). The number of records returned by a search
- * is defined by an E_hits_per_page field defined in the form. If
- * not default value is used.
- *
- * Run a CSW search operation using GeoNetwork csw service.
- * Initialize results and summary stores.
- */
- cswSearch: function(formId, onSuccess, onFailure, startRecord){
- this.metadataCSWStore.removeAll();
- if (onSuccess) {
- onSuccess = Ext.emptyFn;
- }
- if (onFailure) {
- onFailure = Ext.emptyFn;
- }
- if (startRecord) {
- startRecord = this.startRecord;
- }
- GeoNetwork.util.CSWSearchTools.doCSWQueryFromForm(formId, this, startRecord, onSuccess, null, onFailure);
- },
- /** api: method[metadataSelect]
- * :param uuids: ``Array(String)`` A list of uuids to select.
- *
- * Add uuids to current user selection.
- */
- metadataSelect: function(type, uuids){
- this.setSelectedRecords(0);
- var app = this;
- var i = 0;
-
- for (i = 0; i < uuids.length; i++) {
- OpenLayers.Request.GET({
- url: this.services.mdSelect,
- params: {
- id: uuids[i],
- selected: type
- },
- success: function(response){
- var nb = response.responseXML.documentElement.getElementsByTagName("Selected")[0].childNodes[0].nodeValue;
- if (nb) {
- app.setSelectedRecords(nb);
- }
- },
- failure: function(response){
- Ext.Msg.alert('Selection failed', response.responseText);
- }
- });
- }
- },
- /** api: method[metadataRate]
- * :param uuid: ``String`` Metadata identifier
- * :param rating: ``Number`` Rate
- *
- * Update metadata record rating information
- */
- metadataRate: function(uuid, rating, onSuccess){
-
- OpenLayers.Request.GET({
- url: this.services.rate,
- params: {
- uuid: uuid,
- rating: rating
- },
- success: function(response){
- var nb = response.responseXML.documentElement.childNodes[0].nodeValue;
- if (onSuccess) {
- onSuccess(nb);
- }
-
- catalogue.onAfterRating();
-
- return nb;
- },
- failure: function(response){
- Ext.Msg.alert('Rating failed', response.responseText);
- }
- });
- },
- /** api: method[metadataSelectAll]
- * :param onSuccess: ``Function`` A function to trigger in case of success.
- *
- * Select all records in current search.
- */
- metadataSelectAll: function(onSuccess){
- this.metadataSelection('add-all', onSuccess);
- },
- /** api: method[metadataSelectNone]
- * :param onSuccess: ``Function`` A function to trigger in case of success.
- *
- * Remove all records in current selection.
- */
- metadataSelectNone: function(onSuccess){
- this.metadataSelection('remove-all', onSuccess);
- },
- /** api: private[metadataSelection]
- * :param type: remove-all or add-all
- * :param onSuccess: function to trigger on success
- *
- * Private method called after selection call operations.
- * Use GeoNetwork selection service.
- */
- metadataSelection: function(type, onSuccess){
- // CHECKME : is this a good option ?
- var app = this;
-
- OpenLayers.Request.GET({
- url: this.services.mdSelect,
- params: {
- selected: type
- },
- success: function(response){
- var nb = response.responseXML.documentElement.getElementsByTagName("Selected")[0].childNodes[0].nodeValue;
- if (nb) {
- app.setSelectedRecords(nb);
- }
-
- if (onSuccess) {
- onSuccess();
- }
- },
- failure: function(response){
- // TODO app.selectedRecords =
- // response.responseXML.documentElement.getElementsByTagName("Selected")[0].childNodes[0].nodeValue;
- }
- });
- },
- /** api: method[csvExport]
- *
- * Export current selection in CSV format.
- */
- csvExport: function(){
- window.open(this.services.csv, this.windowName, this.windowOption);
- },
- /** api: method[mefExport]
- *
- * Export current selection in MEF format.
- */
- mefExport: function(){
- location.replace(this.services.mef);
- },
- /** api: method[pdfExport]
- * :param sortField: ``String`` sort field name
- * :param sortOrder: ``String`` sort order
- *
- * Export current selection in PDF format.
- */
- pdfExport: function(sortField, sortOrder){
- var pdfExportUrl = this.services.pdf;
-
- if (sortField != undefined) {
- pdfExportUrl = pdfExportUrl + "?sortBy=" + sortField;
-
- if (sortOrder != undefined) {
- pdfExportUrl = pdfExportUrl + "&sortOrder=" + sortOrder;
- }
- }
-
- location.replace(pdfExportUrl);
- },
- /** api: method[metadataShow]
- * :param uuid: ``String`` uuid of the metadata to dislay
- *
- * Display a metadata record in a Ext.Panel or a Ext.Window.
- * Defined GeoNetwork.defaultViewMode variable to change default view mode.
- * If not set, simple mode is used.
- *
- * Define metadataShowFn in order to override metadata show default behavior::
- *
- * this.metadataShowFn(uuid, record, url, maximized, width, height);
- */
- metadataShow: function(uuid, maximized, width, height){
- // UUID may contains special character like #
- var url = this.services.mdView + '?uuid=' + escape(uuid);
- var bd = Ext.getBody();
-
- if (this.resultsView) {
- var record = this.metadataStore.getAt(this.metadataStore.find('uuid', uuid));
-
- // No current search available with this record information
- if (!record) {
- // Retrieve information in synchrone mode
- var store = GeoNetwork.data.MetadataResultsFastStore();
- this.kvpSearch("fast=index&_uuid=" + uuid, null, null, null, true, store, null, false);
- record = store.getAt(store.find('uuid', uuid));
- }
-
- // metadata deleted or not visible to current user
- if (record !== undefined) {
- if (this.metadataShowFn) {
- this.metadataShowFn(uuid, record, url, maximized, width, height);
- } else {
- var win = new GeoNetwork.view.ViewWindow({
- serviceUrl: url,
- lang: this.lang,
- currTab: GeoNetwork.defaultViewMode || 'simple',
- printDefaultForTabs: GeoNetwork.printDefaultForTabs || false,
- printUrl: GeoNetwork.printUrl || 'print.html',
- catalogue: this,
- maximized: maximized || false,
- metadataUuid: uuid,
- record: record,
- resultsView: this.resultsView
- });
- win.show(this.resultsView);
- win.alignTo(bd, 'tr-tr');
- }
- } else {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('error'),
- msg: OpenLayers.i18n('metadata-not-found'),
- tokens: {
- uuid: uuid
- },
- status: 'warning',
- target: Ext.getBody()
- });
- }
- }
- },
- metadataShowById: function(id, maximized, width, height){
- var url = this.services.mdView + '?id=' + id, record;
-
- if (this.resultsView) {
- // No current search available with this record information
- if (!record) {
- // Retrieve information in synchrone mode
- var store = GeoNetwork.data.MetadataResultsFastStore();
- // TODO : This failed to load template information
- this.kvpSearch("fast=index&_id=" + id, null, null, null, true, store, null, false);
- record = store.getAt(store.find('id', id));
- }
- this.metadataShow(record ? record.get('uuid') : undefined, maximized, width, height);
- }
- },
- /** api: method[metadataXMLShow]
- * :param uuid: ``String`` uuid of the metadata to dislay
- *
- * Display a metadata record in a new window in XML format
- *
- */
- metadataXMLShow: function(uuid, schema){
- // Default GeoNetwork XML service
- var service = this.services.mdXMLGet;
-
- // ISO 19139 or ISO profil will be displayed in ISO19139
- if (schema === 'iso19139') {
- service = this.services.mdXMLGet19139;
- } else if (schema === 'dublin-core') {
- service = this.services.mdXMLGetDC;
- } else if (schema === 'fgdc') {
- service = this.services.mdXMLGetFGDC;
- } else if (schema === 'iso19115') {
- service = this.services.mdXMLGet19115; // Force ISO19115 record to 19139
- }
-
- var url = service + '?uuid=' + uuid;
- window.open(url, this.windowName, this.windowOption);
- },
- /** api: method[metadataXMLShow]
- * :param uuid: ``String`` uuid of the metadata to dislay
- *
- * Display a metadata record in a new window in XML format
- *
- */
- metadataPrint: function(uuid){
- var url = this.services.mdPrint + '?uuid=' + uuid;
- location.replace(url);
- },
- /** api: method[metadataMEF]
- * :param uuid: ``String`` uuid of the metadata to export in MEF format
- *
- * Open new window to retrieve MEF file for the metadata record
- *
- */
- metadataMEF: function(uuid){
- var url = this.services.mdMEF + '?version=2&uuid=' + uuid;
- location.replace(url);
- },
- /**
- * Return true if browser is supported.
- * Display an error message if not and return false.
- */
- isSupportedBrowser: function(msg) {
- if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8) {
- this.showError(OpenLayers.i18n('unsupportedBrowser'), msg);
- return false;
- } else {
- return true;
- }
- },
- /** api: method[metadataEdit]
- * :param uuid: ``String`` Uuid of the metadata record to edit
- *
- * Open a metadata editor.
- *
- * FIXME : metadata.edit service does not support uuid param
- */
- metadataEdit: function(id, create, group, child, isTemplate, schema){
-
- switch(this.editMode) {
- case this.EDITOR_MODE.IN_EDITOR_POPUP:
- if (this.metadataEditFn) {
- this.metadataEditFn(id, create, group, child, isTemplate, schema);
- }
- break;
- default:
- var url;
- if (create) {
- child = child ? 'y' : 'n';
- url = this.services.mdCreate + '?id=' + id + '&group=' + group +
- '&template=' + isTemplate + '&child=' + child;
- } else {
- url = this.services.mdEdit + '?id=' + id;
- }
- window.open(url, this.windowName, this.windowOption);
- }
- },
- metadataEdit2: function(id, create, group, child, isTemplate, schema){
- if (this.isSupportedBrowser(OpenLayers.i18n('editorBrowserRestriction'))) {
- var url = 'catalog.edit#/';
- if (create) {
- if (id) {
- if (child) {
- url += 'create?childOf=' + id;
- } else {
- url += 'create?from=' + id;
- }
- } else {
- url += 'create';
- }
- } else {
- url += 'metadata/' + id;
- }
- window.open(url, '_blank');
- }
- },
- /** api: method[metadataDuplicate]
- * :param uuid: ``String`` Uuid of the metadata to duplicate
- *
- * Create a metadata by duplication of an existing one
- */
- metadataDuplicate: function(uuid){
- window.open(this.services.mdDuplicate + '?uuid=' + uuid, this.windowName, this.windowOption);
- },
- /** api: method[metadataCreateChild]
- * :param uuid: ``String`` Uuid of the metadata to duplicate
- *
- * Create a child metadata record from an existing one
- */
- metadataCreateChild: function(uuid){
- window.open(this.services.mdDuplicate + '?child=y&uuid=' + uuid, this.windowName, this.windowOption);
- },
- /** api: method[metadataDuplicateWithSchema]
- * :param schema: ``String`` Schema
- *
- * Create a metadata record in one of the schema
- */
- metadataDuplicateWithSchema: function(uuid, schema){
- window.open(this.services.mdDuplicate + '?uuid=' + uuid +
- "&schema=" +
- schema, this.windowName, this.windowOption);
- },
- /** api: method[metadataDelete]
- * :param uuid: ``String`` Uuid of the metadata
- *
- * Delete metadata record.
- */
- metadataDelete: function(uuid){
- Ext.Msg.confirm(OpenLayers.i18n('deleteRecord'), OpenLayers.i18n('deleteConfirm'), this.metadataDeleteDo, uuid);
- },
- /** api: private[metadataDeleteDo]
- *
- * Private method called after user confirmation.
- * Use GeoNetwork metadata.delete service.
- *
- * FIXME : need a global var named catalogue
- * TODO : trigger results refresh ?
- * TODO : create a status or popup bar object to display info
- */
- metadataDeleteDo: function(btn){
- if (btn === 'yes') {
- var params = {
- uuid: this
- };
- catalogue.doAction(catalogue.services.mdDelete, params,
- OpenLayers.i18n('deleteRecordSuccess'),
- OpenLayers.i18n('deleteRecordFailure'),
- catalogue.onAfterDelete.bind(catalogue));
- }
- },
- /** api: method[doAction]
- * :param url: ``String`` The service URL to call
- * :param params: ``Object`` The service parameters
- * :param msgSuccess: ``String`` Optional popup title on success
- * :param msgFailure: ``String`` Optional popup title on failure
- * :param onSuccess: ``Function`` Optional function to trigger on success
- * :param onFailure: ``Function`` Optional function to trigger on failure
- *
- *
- * Method called to run a
- * GeoNetwork service and popup a message after success and failure.
- *
- * TODO : create a status or popup bar object to display info
- */
- doAction: function(url, params, msgSuccess, msgFailure, onSuccess, onFailure){
- if (url.indexOf('http') === -1) {
- url = this.services.rootUrl + url;
- }
-
- OpenLayers.Request.GET({
- url: url,
- params: params,
- success: function(response){
- if (msgSuccess) {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n(msgSuccess),
- msg: response.responseText,
- status: '',
- target: Ext.getBody()
- });
- }
-
- if (onSuccess) {
- onSuccess(response);
- }
- },
- failure: function(response){
- if (msgFailure) {
- Ext.Msg.alert(msgFailure, response.responseText);
- }
- if (onFailure) {
- onFailure(response);
- }
- }
- });
- },
- getNodeText: function(node){
- if (node) {
- return node.innerText || node.textContent || node.text;
- } else {
- return '';
- }
- },
- /** api: method[isLoggedIn]
- *
- * Get the xml.info for me. If user is not identified
- * response xml will have a me element with an authenticated attribute.
- * If catalogue URL is wrong, response status is 404 (check catalogue URL).
- * In case of exception continue catalogue connection validation
- * using the xml.main.error service (@see checkError).
- */
- isLoggedIn: function(){
- var response = OpenLayers.Request.GET({
- url: this.services.getMyInfo,
- async: false
- }), exception, authenticated, me;
-
- if(!response.responseXML) {
- var parser = new DOMParser();
- response.responseXML = parser.parseFromString(response.responseText, "application/xml");
- }
- me = response.responseXML.getElementsByTagName('me')[0];
- authenticated = me.getAttribute('authenticated') == 'true';
-
- // Check status and also check than an Exception is not described in the HTML response
- // in case of bad startup
- exception = response.responseText.indexOf('Exception') !== -1;
-
- if (response.status === 200 && authenticated) {
- this.identifiedUser = {
- id: this.getNodeText(me.getElementsByTagName('id')[0]),
- username: this.getNodeText(me.getElementsByTagName('username')[0]),
- name: this.getNodeText(me.getElementsByTagName('name')[0]),
- surname: this.getNodeText(me.getElementsByTagName('surname')[0]),
- email: this.getNodeText(me.getElementsByTagName('email')[0]),
- hash: this.getNodeText(me.getElementsByTagName('hash')[0]),
- role: this.getNodeText(me.getElementsByTagName('profile')[0])
- };
- this.onAfterLogin();
- return true;
- } else if (response.status === 404) {
- this.showError(OpenLayers.i18n('connectIssue'),
- OpenLayers.i18n('connectIssueMsg') + this.services.rootUrl + '.');
- } else if (exception) {
- this.checkError();
- return false;
- } else {
- // Reset user cookie information
- if (cookie) {
- cookie.set('user', undefined);
- }
-
- this.identifiedUser = undefined;
- this.onAfterBadLogin();
-
- return false;
- }
- },
- postToUrl: function (path, params, method) {
- method = method || "post"; // Set method to post by default if not specified.
-
- // The rest of this code assumes you are not using a library.
- // It can be made less wordy if you use one.
- var form = document.createElement("form");
- form.setAttribute("method", method);
- form.setAttribute("action", path);
-
- for(var key in params) {
- if(params.hasOwnProperty(key)) {
- var hiddenField = document.createElement("input");
- hiddenField.setAttribute("type", "hidden");
- hiddenField.setAttribute("name", key);
- hiddenField.setAttribute("value", params[key]);
-
- form.appendChild(hiddenField);
- }
- }
-
- document.body.appendChild(form);
- form.submit();
- },
- /** api: method[login]
- * :param username: ``String`` The user name
- * :param password: ``String`` The password for the user
- *
- * Log in to the catalogue.
- *
- * Fires the afterLogin or afterBadLogin events
- *
- * TODO : GeoNetwork does not return any information about the
- * user. Those information are required in the client side.
- */
- login: function(username, password){
- var app = this, user;
- var intervalID;
- var loginAttempts = 0;
- var loginWindow;
- if (this.casEnabled) {
- loginWindow = window.open(this.URL+'/srv/'+this.LANG+'/login.form?casLogin', '_casLogin', 'menubar=no,location=no,toolbar=no', true);
- intervalID = setInterval(function (){
- loginAttempts += 1;
- if(loginAttempts > (5*60*2)) {
- clearInterval (intervalID);
- app.identifiedUser = undefined;
- app.onAfterBadLogin();
- } else if(loginWindow.closed) {
- clearInterval (intervalID);
- app.isLoggedIn();
- }
- }, 500);
- } else {
- var params = {username: username, password: password};
- if (this.node) {
- params.node = this.node;
- }
- params.redirectUrl = '/..' + location.pathname;
- this.postToUrl(this.services.login, params, 'POST');
-// OpenLayers.Request.POST({
-// url: this.services.login,
-// data: OpenLayers.Util.getParameterString(params),
-// headers: {
-// "Content-Type": "application/x-www-form-urlencoded"
-// },
-// success: function(response){
-// app.isLoggedIn(); // will get the user information and trigger after login event
-// },
-// failure: function(response){
-// app.identifiedUser = undefined;
-// app.onAfterBadLogin();
-// // TODO : Get Exception from GeoNetwork
-// }
-// });
- }
- },
- /** api: method[logout]
- * Log out from the catalogue.
- *
- * Fires the afterLogout or afterBadLogout events
- */
- logout: function(){
- if (this.casEnabled) {
- window.location = this.services.logout;
- } else {
- var params = {};
- params.redirectUrl = '/..' + location.pathname;
- this.postToUrl(this.services.logout, params, 'POST');
-
-// var app = this;
-// OpenLayers.Request.GET({
-// url: this.services.logout,
-// async: false, // logout does not seem to work when it is asynchronous request
-// success: function(response){
-// app.identifiedUser = undefined;
-// app.onAfterLogout();
-// },
-// failure: function(response){
-// app.identifiedUser = undefined;
-// app.onAfterBadLogout();
-// }
-// });
- }
- },
- /** api: method[checkError]
- * Check if catalogue started correctly
- *
- * :param successCb: A callback to run on success. Argument this and response are passed as parameters.
- */
- checkError: function(successCb){
- var app = this, error, msg;
-
- OpenLayers.Request.GET({
- url: this.services.xmlError,
- success: function(response){
- error = app.parseError(response.responseXML);
- msg = error.info + " " + error.exc + " " + error.stack;
- app.showError('Catalogue error', msg);
- if (successCb) {
- successCb(app, response);
- }
- },
- failure: function(response){
- app.showError('Catalogue error', response.status);
- }
- });
- },
- /** api: method[showError]
- * Display an alert message box.
- *
- * :param title: The message box title
- * :param msg: The message in the box
- */
- showError: function(title, msg){
- Ext.MessageBox.show({
- title: title,
- msg: msg,
- buttons: Ext.MessageBox.OK,
- icon: Ext.MessageBox.ERROR
- });
- },
- /** api: method[parseError]
- * Parse a GeoNetwork startup error exception.
- *
- * :param xml: The xml error
- */
- parseError: function(xml){
- var error = xml.getElementsByTagName('error')[0];
-
- return {
- stack: error.getElementsByTagName('Stack')[0].firstChild.nodeValue,
- exc: error.getElementsByTagName('Exception')[0].firstChild.nodeValue,
- resource: error.getElementsByTagName('Resource')[0].firstChild.nodeValue,
- msg: error.getElementsByTagName('Message')[0].firstChild.nodeValue,
- provider: error.getElementsByTagName('Provider')[0].firstChild.nodeValue,
- info: error.getElementsByTagName('Error')[0].firstChild.nodeValue
- };
- },
- /** api: method[admin]
- *
- * Open the administration interface according to adminAppUrl properties.
- */
- admin: function(){
- if (this.isSupportedBrowser(OpenLayers.i18n('editorBrowserRestriction'))) {
- location.href = this.adminAppUrl;
- }
- },
- /** api: method[admin]
- *
- * Open the administration interface according to adminAppUrl properties.
- */
- moveToURL: function(url){
- location.href = url;
- },
- metadataImport: function(){
- location.href = this.services.mdImport;
- },
- /** api: method[massiveOp]
- * :param type: Type of massive operation. One of ``NewOwner``,
- * ``Categories``, ``Delete``, ``Privileges``
- *
- * Load massive operation in a window
- * align to top and centered.
- *
- * TODO : Could we have a window like a modal box ?
- * no bottom borders.
- *
- * FIXME : Need work on GeoNetwork side to fix JS calls
- */
- massiveOp: function(type, cb){
- if (type === 'Privileges') {
- var url = this.services.mdBatchAdminXml + "?id=" + id;
- var privilegesPanel = new GeoNetwork.admin.PrivilegesPanel({
- id: id,
- url: url,
- batch: true,
- onlyUserGroup: this.info.userGroupOnly.toLowerCase() === 'true' || false
- });
- this.modalAction(OpenLayers.i18n('setBatchPrivileges'), privilegesPanel, cb);
- } else if (type === 'Replace') {
- var url = this.services.massiveOp[type];
- this.modalAction(OpenLayers.i18n('massiveOp') + " - " + type, url, cb, true);
- } else {
- var url = this.services.massiveOp[type];
- this.modalAction(OpenLayers.i18n('massiveOp') + " - " + type, url, cb);
- }
- },
- /** private: method[modalAction]
- *
- * Create a modal window and load the URL content or add the panel
- * in the modal window.
- *
- * If no callback provided, default callback on error, close the window.
- *
- * TODO : retrieve error message on error (currently HTML services are
- * called with HTML response not easy to parse)
- */
- modalAction: function(title, urlOrPanel, cb, scripts){
- if (urlOrPanel) {
- var app = this, win, defaultCb = function(el, success, response, options) {
- if (!success){
- app.showError('Catalogue error', title);
- win.close();
- }
- };
-
-
- if(typeof(scripts) == 'undefined') {
- scripts = false;
- }
-
- var item;
- if(typeof(urlOrPanel) == 'string') {
- item = new Ext.Panel({
- autoLoad: {
- url: urlOrPanel,
- callback: cb || defaultCb,
- scripts: scripts,
- scope: win
- },
- border: false,
- frame: false,
- autoScroll: true
- })
- }
- else {
- item =urlOrPanel;
- }
-
-
- win = new Ext.Window({
- id: 'modalWindow',
- layout: 'fit',
- width: 900,
- height: 500,
- closeAction: 'destroy',
- plain: true,
- modal: true,
- draggable: false,
- title: title,
- items: item
- });
- win.show(this);
- win.alignTo(Ext.getBody(), 't-t');
-
- }
- },
- /** api: method[metadataAdmin]
- * Metadata admin form for privileges
- */
- metadataAdmin: function(record){
- var url = this.services.mdAdminXml + "?id=" + record.get('id');
- var privilegesPanel = new GeoNetwork.admin.PrivilegesPanel({
- id: record.get('id'),
- url: url,
- onlyUserGroup: (this.info && this.info.userGroupOnly.toLowerCase() === 'true') || false
- });
- this.modalAction(OpenLayers.i18n('setPrivileges') + ' - ' + record.get('title'), privilegesPanel);
- },
- /** api: method[metadataAdmin]
- * Metadata publication. If record is published, action will unpublished it.
- */
- metadataPublish: function(record, messageTarget){
- var published = record.get('isPublishedToAll') === 'true',
- flag = published ? 'off' : 'on',
- pivileges = ['_1_0=' + flag, '_1_1=' + flag, '_1_5=' + flag, '_1_6=' + flag],
- // View, Interactive Map, Download, Featured
- service = this.services.mdAdminSave + '?update=true&id=' + record.get('id') + '&',
- url = service + pivileges.join('&'),
- app = this;
-
- OpenLayers.Request.GET({
- url: url,
- success: function(response){
- if (messageTarget) {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('metadataRecordPublishedTitle'),
- msg: published ?
- OpenLayers.i18n('metadataRecordUnPublished') :
- OpenLayers.i18n('metadataRecordPublished'),
- tokens: {
- title: record.get('title')
- },
- status: 'info',
- target: messageTarget
- });
- }
- },
- failure: function(response){
- app.showError(OpenLayers.i18n('metadataRecordPublishedTitle'), response.status);
- }
- });
- },
- /** api: method[metadataStatus]
- * Open status form to update metadata status
- */
- metadataStatus: function(record){
- var url = this.services.mdStatus + "?id=" + record.get('id');
- this.modalAction(OpenLayers.i18n('setStatus') + ' - ' + record.get('title'), url);
- },
- /** api: method[metadataSetStatus]
- * Change status for this metadata
- */
- metadataSetStatus: function(id, status, msg){
- var url = this.services.mdStatusSet + "?id=" + id + "&status=" + status + "&changeMessage=" + msg;
-
- catalogue.doAction(catalogue.services.mdStatusSet, {
- id: id,
- status: status,
- changeMessage: msg
- },
- undefined,
- OpenLayers.i18n('error'),
- function () {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('enableWorkflow'),
- msg: OpenLayers.i18n('enableWorkflowStart'),
- status: '',
- target: Ext.getBody()
- });
- catalogue.onAfterStatus();
- });
- },
- /** api: method[metadataVersioning]
- * Active versioning for this metadata
- */
- metadataVersioning: function(id){
- var url = this.services.mdVersioning + "?id=" + id;
- this.modalAction(OpenLayers.i18n('setVersioning'), url);
- },
- /** api: method[metadataCategory]
- * Metadata admin form for categories
- */
- metadataCategory: function(id){
- var url = this.services.mdCategory + "?id=" + id;
- this.modalAction(OpenLayers.i18n('setCategories'), url);
- },
- /** api: method[metadataPrepareDownload]
- * Prepare download metadata popup
- */
- metadataPrepareDownload: function(id){
- var url = this.services.prepareDownload + "?id=" + id;
- this.modalAction(OpenLayers.i18n('prepareDownload'), url);
- }
-});
-
-/** api: xtype = gn_catalogue */
-Ext.reg('gn_catalogue', GeoNetwork.Catalogue);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Message.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Message.js
deleted file mode 100644
index 8d01b2ff312..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Message.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork');
-
-GeoNetwork.Message = function () {
- var msgCt;
- function createBox(t, s, c) {
- return ['
', t, '
', s, '
'].join('');;
- }
- return {
- /** api: method[msg]
- * :param config: ``Object`` configuration for the message
- * title: the message title
- * msg: the message content
- * tokens: the token to substitute in the msg if any. Default is undefined.
- * status: the CSS class to use (success, warning). Default style if undefined.
- * target: an element id. document if undefined
- *
- *
- * Display a message or alert
- */
- msg : function (config) {
- // title, format, status, target
- if (!msgCt) {
- msgCt = Ext.DomHelper.insertFirst(document.body, {id: 'msg-div'}, true);
- }
- msgCt.alignTo(config.target || document, 't-t');
- var s = OpenLayers.String.format(config.msg, config.tokens);
- var m = Ext.DomHelper.append(msgCt, {html: createBox(config.title, s, config.status)}, true);
- m.slideIn('t').pause(config.pause || 4).fadeOut({remove: true});
- }
- };
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/SingleFile.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/SingleFile.js
deleted file mode 100644
index 3ca7541221a..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/SingleFile.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace("GeoNetwork");
-
-GeoNetwork.singleFile = true;
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Util.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Util.js
deleted file mode 100644
index ccfd7e467ad..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/Util.js
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork');
-
-//Required for IE6, 7, 8
-//https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
-if (!Function.prototype.bind) {
- Function.prototype.bind = function (oThis) {
- if (typeof this !== "function") {
- // closest thing possible to the ECMAScript 5 internal IsCallable function
- throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
- }
-
- var aArgs = Array.prototype.slice.call(arguments, 1),
- fToBind = this,
- fNOP = function () {},
- fBound = function () {
- return fToBind.apply(this instanceof fNOP && oThis
- ? this
- : oThis,
- aArgs.concat(Array.prototype.slice.call(arguments)));
- };
-
- fNOP.prototype = this.prototype;
- fBound.prototype = new fNOP();
-
- return fBound;
- };
-}
-
-GeoNetwork.Lang = {};
-
-GeoNetwork.Util = {
- defaultLocale: 'eng',
- /**
- * Supported GeoNetwork GUI languages
- */
- locales: [
- ['ar', 'عربي', 'ara'],
- ['ca', 'Català', 'cat'],
- ['cn', '中文', 'chi'],
- ['de', 'Deutsch', 'ger'],
- ['en', 'English', 'eng'],
- ['es', 'Español', 'spa'],
- ['fr', 'Français', 'fre'],
- ['it', 'Italiano', 'ita'],
- ['nl', 'Nederlands', 'dut'],
- ['no', 'Norsk', 'nor'],
- ['pl', 'Polski', 'pol'],
- ['pt', 'Рortuguês', 'por'],
- ['ru', 'Русский', 'rus'],
- ['fi', 'Suomeksi', 'fin'],
- ['tr', 'Türkçe', 'tur']
-
- ],
- /** api: method[setLang]
- * :param lang: String ISO 3 letters code
- * :param baseUrl: String Base URL use to load Ext loc files
- *
- * Set OpenLayers lang and load ext required lang files
- */
- setLang: function(lang, baseUrl){
- lang = lang || GeoNetwork.Util.defaultLocale;
- // translate to ISO2 language code
- var openlayerLang = this.getISO2LangCode(lang);
-
- OpenLayers.Lang.setCode(openlayerLang);
- var s = document.createElement("script");
- s.type = 'text/javascript';
- s.src = baseUrl + "/js/ext/src/locale/ext-lang-" + openlayerLang + ".js";
- document.getElementsByTagName("head")[0].appendChild(s);
- },
- /** api: method[setLang]
- * :param lang: String ISO 3 letters code
- *
- *
- * Return a valid language code if translation is available.
- * Catalogue use ISO639-2 code.
- */
- getCatalogueLang: function(lang){
- var i;
- for (i = 0; i < GeoNetwork.Util.locales.length; i++) {
- if (GeoNetwork.Util.locales[i][0] === lang) {
- return GeoNetwork.Util.locales[i][2];
- }
- }
- return 'eng';
- },
- /** api: method[setLang]
- * :param lang: String ISO 3 letters code
- *
- * Return ISO2 language code (Used by OpenLayers lang and before GeoNetwork 2.7.0)
- * for corresponding ISO639-2 language code.
- */
- getISO2LangCode: function(lang){
- var i;
- for (i = 0; i < GeoNetwork.Util.locales.length; i++) {
- if (GeoNetwork.Util.locales[i][2] === lang) {
- return GeoNetwork.Util.locales[i][0];
- }
- }
- return 'en';
- },
- /** api: method[getParameters]
- * :param url: String URL to parse
- *
- * Get list of URL parameters including anchor
- */
- getParameters: function(url){
- var parameters = OpenLayers.Util.getParameters(url);
- if (OpenLayers.String.contains(url, '#')) {
- var start = url.indexOf('#') + 1;
- var end = url.length;
- var paramsString = url.substring(start, end);
-
- var pairs = paramsString.split(/[\/]/);
- for (var i = 0, len = pairs.length; i < len; ++i) {
- var keyValue = pairs[i].split('=');
- var key = keyValue[0];
- var value = keyValue[1] || '';
- parameters[key] = value;
- }
- }
- return parameters;
- },
- getBaseUrl: function(url){
- return url.substring(0, url.indexOf('?') || url.indexOf('#') || url.length);
- },
- /** api: property[protocolToCSS]
- *
- * Provide a mapping between various GeoNetwork protocol and the CSS icon class
- */
- protocolToCSS: {
- 'application/vnd.ogc.wms_xml': 'addLayerIcon',
- 'application/vnd.ogc.wmc': 'addLayerIcon',
- 'OGC:WMS': 'addLayer',
- 'application/vnd.google-earth.kml+xml': 'md-mn-kml',
- 'application/zip': 'md-mn-zip',
- 'WWW:DOWNLOAD-1.0-http--download': 'md-mn-zip',
- 'application/x-compressed': 'md-mn-zip',
- 'text/html': 'md-mn-www',
- 'text/plain': 'md-mn-www'
- },
- // TODO : add function to compute color map
- defaultColorMap: [
- "#2205fd",
- "#28bc03",
- "#bc3303",
- "#e4ff04",
- "#ff04a0",
- "#a6ff96",
- "#408d5d",
- "#7d253e",
- "#2ce37e",
- "#10008c",
- "#ff9e05",
- "#ff7b5d",
- "#ff0000",
- "#00FF00"],
- /** api: method[generateColorMap]
- * :param classes: integer Number of classes
- *
- * Return a random color map
- */
- generateColorMap: function (classes) {
- var colors = [];
- for (var i = 0; i < classes; i++) {
- // http://paulirish.com/2009/random-hex-color-code-snippets/
- colors[i] = '#'+('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);
- }
- return colors;
- },
- /** api: method[updateHeadInfo]
- * :param info: Object with the following properties
- *
- * - title: a title properties to be use as document title
- *
- * - meta: an Object of element to be added
- * as meta tags.
- *
- * - tagsToRemove: an Object of META name to remove (default is subject, author, keywords).
- *
- */
- updateHeadInfo: function (info) {
- if (info && info.title) {
- document.title = info.title;
- }
- GeoNetwork.Util.removeMetaTags(info.tagsToRemove || {'subject': true, 'author': true, 'keywords': true});
-
- if (info) {
- for (var key in info.meta) {
- if (info.meta.hasOwnProperty(key)) {
- var values = info.meta[key];
- Ext.each(values, function (item) {
- GeoNetwork.Util.addMetaTag(key, item);
- });
- }
- }
- }
- },
- /** api: method[addMetaTag]
- * :param name: the name of the META tag
- * :param content: the content of the META tag
- *
- * Add a META tag with name and content to the HEAD.
- *
- */
- addMetaTag: function (name, content) {
- var meta = document.createElement('meta');
- meta.name = name;
- meta.content = content;
- document.getElementsByTagName('head')[0].appendChild(meta);
- },
- /** api: method[removeMetaTags]
- * :param tagToRemove: Object with the list of tag to remove
- *
- * Remove all META tags from HEAD which names match one of the
- * tag to remove.
- *
- */
- removeMetaTags: function (tagsToRemove) {
- var metas = Ext.DomQuery.jsSelect('head > meta');
- Ext.each(metas, function (meta) {
- var name = meta.getAttribute('name');
- if (tagsToRemove[name]) {
- Ext.get(meta).remove();
- }
- });
- },
- /** api: method[buildPermalinkMenu]
- * :param l: String or Function If String the link is added as is, if a function
- * the function is called on 'show' event
- * :param scope: Object The scope on which the l function is called.
- *
- * Create a permalink menu which is updated on show.
- *
- * TODO : maybe move on widget package - this is GUI related?
- *
- * Return Ext.menu.Menu
- */
- buildPermalinkMenu: function (l, scope) {
- var menu = new Ext.menu.Menu();
- var permalinkMenu = new Ext.menu.TextItem({text: ' '});
- menu.add(
- '' + OpenLayers.i18n('permalinkInfo') + '',
- permalinkMenu
- );
- // update link when item is displayed
- var updatePermalink = function() {
- var link = l;
- if (typeof(l) == 'function') {
- link = l.apply(scope);
- }
- var id = 'permalink-' + permalinkMenu.getId();
- permalinkMenu.update(''
- + ''
- + 'Link',
- true,
- // Select permalink input for user to easily copy/paste link
- function() {
- // On IE8, select() on an element scroll to top of page, why ?
- if (!Ext.isIE8) {
- // update callback is not really called after update
- // so add a short timeout TODO
- setTimeout(function(){
- var e = Ext.get(id);
- if (e) {
- e.dom.select();
- }
- }, 100);
- }
- });
-
- };
- // onstatechange does not work because the menu item may be not be rendered
- //this.permalinkProvider.on('statechange', onStatechange, this.permalinkMenu);
- menu.on('show', updatePermalink, scope);
- return new Ext.Button({
- iconCls: 'linkIcon',
- menu: menu
- });
- }
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CatalogueSourceStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CatalogueSourceStore.js
deleted file mode 100644
index 28c95abaabd..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CatalogueSourceStore.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = CatalogueSourceStore
- */
-/** api: example
- *
- * Sample code to create a catalogue sources combobox from the catalogue store.
- *
- * .. code-block:: javascript
- *
- *
- * var services = catalogue.services;
- * var catStore = GeoNetwork.data.CatalogueSourceStore(services.getSources);
- * catStore.load();
- *
- * var cbCat = new Ext.form.ComboBox( {
- * name : 'E_siteId', // siteId is Lucene field name
- * mode : 'local',
- * triggerAction: 'all',
- * fieldLabel : 'Catalogue',
- * store : catStore,
- * valueField : 'id',
- * displayField : 'name',
- * tpl : '
{name}
'
- * });
- *
- */
-/** api: method[CatalogueSourceStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork catalogue sources.
- *
- * :param url: ``String`` Usually the xml.info service URL. See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_ for mode information.
- *
- */
-GeoNetwork.data.CatalogueSourceStore = function(url){
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'source',
- idPath: 'id',
- fields: [{
- name: 'id',
- mapping: 'uuid'
- }, {
- name: 'name'
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CategoryStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CategoryStore.js
deleted file mode 100644
index 1bfd0ba6800..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CategoryStore.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = CategoryStore
- */
-/** api: method[CategoryStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork categories including labels in different language.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- *
- */
-GeoNetwork.data.CategoryStore = function(url){
-
- /**
- * Create a list of label
- */
- function getLabel(v, record){
- var labels = {};
- var label = record.getElementsByTagName('label');
- var i;
-
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1) {
- labels[child.nodeName] = child.firstChild.nodeValue;
- }
- }
- }
- return labels;
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'category',
- idPath: 'id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'name'
- }, {
- name: 'label',
- convert: getLabel
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CodeListStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CodeListStore.js
deleted file mode 100644
index 6996488fc9f..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/CodeListStore.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = CodeListStore
- */
-/** api: method[CodeListStore]
- * A pre-configured `Ext.data.Store `_
- * for GeoNetwork codeList. Codelist are defined by a code, a label and a description
- *
- * :param url: ``String`` Usually the xml.schema.info service URL.
- */
-GeoNetwork.data.CodeListStore = function(config){
-
- var schema = config.schema || 'iso19139';
- var requestBody = '';
- var model = [{
- name: 'code'
- }, {
- name: 'label'
- }, {
- name: 'description'
- }];
-
- var DataRecord = Ext.data.Record.create(model);
- var store = new Ext.data.Store({
- fields: model
- });
-
- // Improve ? Here we use OL to load the response (how to POST body using Ext)
- // and load results in the returned store.
- OpenLayers.Request.POST({
- url: config.url,
- data: requestBody,
- success: function(response){
- var help = response.responseXML.getElementsByTagName('entry');
-
- for (var i = 0; i < help.length; i++) {
- var record = new DataRecord({
- code: help[i].getElementsByTagName('code')[0].firstChild.nodeValue,
- label: help[i].getElementsByTagName('label')[0].firstChild.nodeValue,
- description: help[i].getElementsByTagName('description')[0].firstChild.nodeValue
- });
- store.add(record);
- }
- }
- });
-
- return store;
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/GroupStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/GroupStore.js
deleted file mode 100644
index 94cc5a1e722..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/GroupStore.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = GroupStore
- */
-/** api: method[GroupStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork groups. Groups visibility depends on user privileges.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.GroupStore = function(url){
- /**
- * Create a list of label // TODO : merge with other stores
- */
- function getLabel(v, record){
- var labels = {};
- var i;
- var label = record.getElementsByTagName('label');
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1) {
- labels[child.nodeName] = child.firstChild.nodeValue;
- }
- }
- }
- return labels;
- }
- function getLabelForCurrentLang(v, record){
- var labels = {};
- var i;
- var label = record.getElementsByTagName('label');
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1 && child.nodeName == catalogue.lang) {
- label = child.firstChild.nodeValue;
- }
- }
- }
- return label;
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'group/group',
- idPath: 'id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'name'
- }, {
- name: 'description'
- }, {
- name: 'email'
- }, {
- name: 'referrer'
- }, {
- name: 'label',
- convert: getLabel
- }, {
- name: 'labelInLang',
- convert: getLabelForCurrentLang
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/HarvesterStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/HarvesterStore.js
deleted file mode 100644
index f9bba87c536..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/HarvesterStore.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = HarvesterStore
- */
-/** api: method[HarvesterStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork harvesters.
- *
- * See :class:`GeoNetwork.admin.HarvesterPanel`
- *
- * :param url: ``String`` Usually the xml.harvester.get service URL.
- * See `service description <../../../developers/xml_services/services_harvesting.html#xml-harvesting-get>`_
- * for mode information.
- */
-GeoNetwork.data.HarvesterStore = function(url){
- /**
- * Return an array of categories
- */
- function getCategories(v, record){
- var categories = [],
- i,
- catNode = record.getElementsByTagName('categories');
- if (catNode.length === 1) {
- var cats = catNode[0].getElementsByTagName('category');
- for (i = 0; i < cats.length; i++) {
- categories.push(cats[i].getAttribute('id'));
- }
- }
- return categories;
- }
-
- /**
- * Return an array of operation
- */
- function getOperation(v, record){
- var operation = [],
- i,
- ops = record.getElementsByTagName('operation');
- for (i = 0; i < ops.length; i++) {
- var op = ops[i];
- operation.push(op.getAttribute('name'));
- }
- return operation;
- }
-
- /**
- * Read privileges node
- */
- function getPrivileges(v, record){
-
- var Privilege = Ext.data.Record.create([{
- name: 'group_id',
- mapping: '@id'
- }, {
- name: 'operation',
- convert: getOperation
- }]);
-
- // Maybe the use of a reader here is not so useful
- var pReader = new Ext.data.XmlReader({
- record: "group"
- }, Privilege);
-
- var r = pReader.readRecords(record);
- return r;
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- url: url,
- // reader configs
- record: 'node', // records will have an "Item" tag
- idPath: '@id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'type',
- mapping: '@type'
- }, {
- name: 'site_name',
- mapping: 'site/name'
- }, {
- name: 'site_uuid',
- mapping: 'site/uuid'
- }, /* GeoNetwork */ {
- name: 'site_host',
- mapping: 'site/host'
- }, {
- name: 'site_servlet',
- mapping: 'site/servlet'
- }, {
- name: 'site_port',
- mapping: 'site/port'
- }, /* OGC WxS */ {
- name: 'site_url',
- mapping: 'site/url'
- }, {
- name: 'site_icon',
- mapping: 'site/icon'
- }, {
- name: 'site_ogctype',
- mapping: 'site/ogctype'
- }, {
- name: 'options_lang',
- mapping: 'options/lang'
- }, {
- name: 'options_topic',
- mapping: 'options/topic'
- }, {
- name: 'options_createthumbnails',
- mapping: 'options/createthumbnails'
- }, {
- name: 'options_uselayer',
- mapping: 'options/uselayer'
- }, {
- name: 'options_uselayermd',
- mapping: 'options/uselayermd'
- }, {
- name: 'options_datasetcategory',
- mapping: 'options/datasetcategory'
- }, {
- name: 'privileges',
- convert: getPrivileges
- }, {
- name: 'categories',
- convert: getCategories
- }, {
- name: 'site_account_use',
- mapping: 'site/account/use'
- }, {
- name: 'site_account_username',
- mapping: 'site/account/username'
- }, {
- name: 'site_account_password',
- mapping: 'site/account/password'
- }, {
- name: 'options_every',
- mapping: 'options/every'
- }, {
- name: 'options_onerunonly',
- mapping: 'options/onerunonly'
- }, {
- name: 'options_status',
- mapping: 'options/status'
- }, {
- name: 'info_lastrun',
- mapping: 'info/lastRun'
- }, {
- name: 'info_running',
- mapping: 'info/running'
- }, {
- name: 'info_result_total',
- mapping: 'info/result/total'
- }, {
- name: 'info_result_added',
- mapping: 'info/result/added'
- }, {
- name: 'info_result_layer',
- mapping: 'info/result/layer'
- }, {
- name: 'info_result_layerUuidExist',
- mapping: 'info/result/layerUuidExist'
- }, {
- name: 'info_result_layerUsingMdUrl',
- mapping: 'info/result/layerUsingMdUrl'
- }, {
- name: 'info_result_unknownSchema',
- mapping: 'info/result/unknownSchema'
- }, {
- name: 'info_result_removed',
- mapping: 'info/result/removed'
- }, {
- name: 'info_result_unretrievable',
- mapping: 'info/result/unretrievable'
- }, {
- name: 'info_result_badFormat',
- mapping: 'info/result/badFormat'
- }, {
- name: 'info_result_doesNotValidate',
- mapping: 'info/result/doesNotValidate'
- }, {
- name: 'info_result_thumbnails',
- mapping: 'info/result/thumbnails'
- }, {
- name: 'info_result_thumbnailsFailed',
- mapping: 'info/result/thumbnailsFailed'
- }, {
- name: 'error_message',
- mapping: 'error/message'
- }, {
- name: 'error_class',
- mapping: 'error/class'
- }, {
- name: 'error_stack'
- // TODO convert stack to text or object mapping : 'error/message'
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/LanguageStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/LanguageStore.js
deleted file mode 100644
index 8101724aea4..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/LanguageStore.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = LanguageStore
- */
-/** api: method[LanguageStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork languages.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.LanguageStore = function(url, lang){
-
- var ln = lang;
-
- /**
- * Create a list of label // TODO duplicate with categoryStore and probably others
- */
- function getLabel(v, record){
- var labels = {};
- var i;
- var label = record.getElementsByTagName('label');
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1) {
- labels[child.nodeName] = child.firstChild.nodeValue;
- }
- }
- }
- return labels;
- }
-
- function getName(v, record){
- var labels = {};
- var i;
- var label = record.getElementsByTagName('label');
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if ((child.nodeType === 1) && (child.nodeName == ln)) {
- return child.firstChild.nodeValue;
- }
- }
- }
- return '';
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'record ',
- idPath: 'id',
- fields: [{
- name: 'id'
- }, {
- name: 'code'
- },{
- name: 'label',
- convert: getLabel
- }, {
- name: 'name',
- convert: getName
- }]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataCSWResultsStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataCSWResultsStore.js
deleted file mode 100644
index a4bbe8053eb..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataCSWResultsStore.js
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = MetadataCSWResultsStore
- */
-/** api: constructor
- * .. class:: GeoNetwork.data.MetadataCSWResultsStore()
- *
- * A pre-configured `Ext.data.JsonStore `_
- * for CSW results. A CSW store does not contains
- * any catalogue information about metadata (ie. geonet:info:* elements). This store
- * could only be used to do search and display results (not metadata
- * management).
- *
- * Records will be similar to :class:`GeoNetwork.data.MetadataResultsStore` records.
- *
- * Depends on ``OpenLayers.Format.GeoNetworkRecords``.
- */
-GeoNetwork.data.MetadataCSWResultsStore = function(){
-
- function getThumbnails(v, record){
- var i, uri;
-
- if (record.URI) {
- for (i = 0; i < record.URI.length; i++) {
- uri = record.URI[i];
- if (uri.name === 'thumbnail') {
- if (uri.value.indexOf('http') === -1) {
- return GeoNetwork.Catalogue.URL + "/srv/en/" + uri.value;
- } else {
- return uri.value;
- }
- }
- }
- }
- return '';
- }
-
- function getCapabilitiesUrl(v, record){
- var i, uri;
-
- if (record.URI) {
- for (i = 0; i < record.URI.length; i++) {
- uri = record.URI[i];
- if (uri.protocol && uri.protocol.indexOf('http-get-capabilities') !== -1) {
- return uri.value;
- }
- }
- }
- return '';
- }
-
- /**
- * Some convert function to face empty geonet_info parameters BUG in
- * GeoNetwork when retrieving iso19115 record through CSW
- */
- function getSource(v, record){
- if (record.geonet_info) {
- return record.geonet_info.source[0];
- } else {
- return '';
- }
- }
-
- function getPopularity(v, record){
- if (record.geonet_info) {
- return record.geonet_info.popularity[0];
- } else {
- return '';
- }
- }
-
- function getRating(v, record){
- if (record.geonet_info) {
- return record.geonet_info.rating[0];
- } else {
- return '';
- }
- }
-
- function getDownload(v, record){
- if (record.geonet_info) {
- return record.geonet_info.download[0];
- } else {
- return '';
- }
- }
-
- function getOwnerName(v, record){
- if (record.geonet_info) {
- return record.geonet_info.ownername[0];
- } else {
- return '';
- }
- }
-
- function getIsHarvested(v, record){
- if (record.geonet_info && record.geonet_info.is_harvested) {
- return record.geonet_info.is_harvested[0];
- } else {
- return '';
- }
- }
-
- function getEdit(v, record){
- if (record.geonet_info && record.geonet_info.edit) {
- return record.geonet_info.edit;
- } else {
- return 'false';
- }
- }
-
-
- return new Ext.data.JsonStore({
- totalProperty: 'SearchResults.numberOfRecordsMatched',
- root: 'records',
- fields: [{
- name: 'title',
- mapping: 'title[0].value',
- defaultValue: ''
- }, {
- name: 'abstract',
- mapping: 'abstract',
- defaultValue: ''
- }, {
- name: 'subject',
- mapping: 'subject'
- }, {
- name: 'uuid',
- mapping: 'identifier[0].value',
- defaultValue: ''
- }, {
- name: 'thumbnail',
- convert: getThumbnails
- }, {
- name: 'uri',
- mapping: 'uri',
- defaultValue: ''
- }, {
- name: 'getCapabilitiesUrl',
- convert: getCapabilitiesUrl
- }, {
- name: 'isharvested',
- convert: getIsHarvested
- }, {
- name: 'source',
- convert: getSource
- }, {
- name: 'rating',
- convert: getRating
- }, {
- name: 'popularity',
- convert: getPopularity
- }, {
- name: 'download',
- convert: getDownload
- }, {
- name: 'ownername',
- convert: getOwnerName
- }, {
- name: 'edit',
- convert: getEdit
- }, {
- name: 'bbox',
- mapping: 'BoundingBox',
- defaultValue: ''
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataRelationStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataRelationStore.js
deleted file mode 100644
index e4d091e4b17..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataRelationStore.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = MetadataRelationStore
- */
-/** api: method[MetadataRelationStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork metadata relation (relation to services, datasets, feature catalogues
- * sources, relations and parent records).
- *
- * :param url: ``String`` Usually the xml.relation service URL.
- *
- * :param grouping: ``boolean`` Set to true to return a Ext.data.GroupingStore
- */
-GeoNetwork.data.MetadataRelationStore = function(url, params, grouping){
- var fields = [{
- name: 'id'
- }, {
- name: 'uuid'
- }, {
- name: 'title'
- }, {
- name: 'abstract'
- }, {
- name: 'keyword'
- }, {
- name: 'type',
- mapping: '@type'
- }, {
- name: 'subType',
- mapping: '@subType'
- }];
-
- if (grouping) {
- var reader = new Ext.data.XmlReader({
- record: 'relation',
- idProperty: 'uuid'
- }, fields);
-
- return new Ext.data.GroupingStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- params: params,
- disableCaching: false
- }),
- reader: reader,
- groupField: 'type',
- sortInfo: {
- field: 'type',
- direction: "ASC"
- }
- });
- } else {
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'relation',
- idPath: 'uuid',
- fields: fields
- });
- }
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsFastStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsFastStore.js
deleted file mode 100644
index 22f4ee58178..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsFastStore.js
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = MetadataResultsFastStore
- */
-/** api: constructor
- * .. class:: GeoNetwork.data.MetadataResultsFastStore()
- *
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork results.
- *
- * To be used with the "q" search service which use only index content.
- *
- *
- * TODO : Merge by extension with MetadataResultsStore
- *
- */
-GeoNetwork.data.MetadataResultsFastStore = function(){
- var separator = "|";
-
- function getTitle(v, record){
- if (record.title && record.title[0]) {
- return record.title[0].value;
- } else if (record.defaultTitle && record.defaultTitle[0]) {
- return record.defaultTitle[0].value;
- } else {
- return '';
- }
- }
- function getValidationInfo(v, record){
- if (record.valid) {
- return record.valid[0].value;
- } else {
- return '-1';
- }
- }
- function getIdxMsg(v, record){
- if (record.idxMsg) {
- var info = record.idxMsg[0].value.split('|');
- return info;
- } else {
- return '';
- }
- }
- function getValidationDetails(v, record){
- var i, validity = [], validInfo;
- for (var key in record) {
- if (record.hasOwnProperty(key) && key.indexOf('valid_') !== -1) {
- var obj = record[key];
- validity.push({
- valid: obj[0].value,
- type: key.split('_')[1],
- ratio: '' // TODO
- });
- }
- }
- return validity;
- }
-
- function getThumbnails(v, record){
- var i;
- var uri = '';
- var currentUri;
-
- if (record.image) {
-
- for (i = 0; i < record.image.length; i++) {
- var tokens = record.image[i].value.split(separator);
- currentUri = tokens[1];
- // Return the first URL even if not http (FIXME ?)
- if (tokens[0] == 'thumbnail' && currentUri.indexOf('http') !== -1 || i === 0) {
- uri = currentUri;
- }
- }
- }
- return uri;
- }
-
- function getOverview(v, record){
- var i;
- var uri = '';
- var currentUri;
-
- if (record.image) {
-
- for (i = 0; i < record.image.length; i++) {
- var tokens = record.image[i].value.split(separator);
- currentUri = tokens[1];
- // Return the first URL even if not http (FIXME ?)
- if (tokens[0] == 'overview' && currentUri.indexOf('http') !== -1 || i === 0) {
- uri = currentUri;
- }
- }
- }
- return uri;
- }
-
- function getContact(v, record){
- var i, contact = [], el, name;
-
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- var tokens = record.responsibleParty[i].value.split(separator);
- contact.push({
- applies: tokens[1],
- logo: tokens[3],
- role: tokens[0],
- name: tokens[2]
- });
- }
- }
- return contact;
- }
- function getOrganization(v, record) {
- var orgName, el;
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- var tokens = record.responsibleParty[i].value.split(separator);
- if(tokens[2]) {
- orgName = tokens[2];
- break;
- }
- }
- }
- return orgName;
- }
-
- function getEmail(v, record) {
- var email, el;
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- var tokens = record.responsibleParty[i].value.split(separator);
- if(tokens[4]) {
- email = tokens[4];
- break;
- }
- }
- }
- return email;
- }
-
- function getLinks(v, record){
- var links = [];
- if (record.link) {
- for (i = 0; i < record.link.length; i++) {
- var tokens = record.link[i].value.split(separator);
- links.push({
- name: tokens[0],
- title: tokens[1],
- href: tokens[2],
- protocol: tokens[3],
- type: tokens[4]
- });
- }
- }
- return links;
- }
-
- /**
- * Some convert function to face empty geonet_info parameters
- * BUG in GeoNetwork when retrieving iso19115 record through CSW
- */
- function getSource(v, record){
- if (record.geonet_info && record.geonet_info.source) {
- return record.geonet_info.source[0].value;
- } else {
- return '';
- }
- }
-
- function getCredit(v, record){
- if (record.credit) {
- return record.credit;
- } else {
- return '';
- }
- }
-
- function getPopularity(v, record){
- if (record.popularity) {
- return record.popularity[0].value;
- } else {
- return '';
- }
- }
-
- function getRating(v, record){
- if (record.rating) {
- return record.rating[0].value;
- } else {
- return '';
- }
- }
-
- function getStatus(v, record){
- if (record.mdStatus) {
- return record.mdStatus[0].value;
- } else {
- return '';
- }
- }
-
- function getDownload(v, record){
- if (record.geonet_info && record.geonet_info.download) {
- return (record.geonet_info.download[0].value === 'true');
- } else {
- return false;
- }
- }
-
- function getDynamic(v, record){
- if (record.geonet_info && record.geonet_info.dynamic) {
- return (record.geonet_info.dynamic[0].value === 'true');
- } else {
- return false;
- }
- }
-
- function getOwnerName(v, record){
- if (record.userinfo && record.userinfo[0].value) {
- var userinfo = record.userinfo[0].value.split(separator);
- try {
- return userinfo[2] + " " + userinfo[1]; // User profile + ' (' + OpenLayers.i18n(userinfo[3]) + ')';
- } catch (e) {
- return '';
- }
- } else {
- return '';
- }
- }
-
- function getIsHarvested(v, record){
- if (record.isHarvested) {
- return record.isHarvested[0].value;
- } else {
- return '';
- }
- }
- function getHarvesterType(v, record){
- // FIXME
- if (record.geonet_info && record.geonet_info.harvestInfo && record.geonet_info.harvestInfo.type) {
- return record.geonet_info.harvestInfo.type[0].value;
- } else {
- return '';
- }
- }
- function getCategory(v, record){
- if (record.category) {
- return record.category;
- } else {
- return '';
- }
- }
- function getChangeDate(v, record){
- if (record.geonet_info && record.geonet_info.changeDate) {
- return record.geonet_info.changeDate[0].value;
- } else {
- return '';
- }
- }
- function getCreateDate(v, record){
- if (record.geonet_info && record.geonet_info.createDate) {
- return record.geonet_info.createDate[0].value;
- } else {
- return '';
- }
- }
- function getSelected(v, record){
- if (record.geonet_info && record.geonet_info.selected) {
- return record.geonet_info.selected[0].value;
- } else {
- return '';
- }
- }
- function getPublished(v, record){
- if (record.geonet_info && record.geonet_info.isPublishedToAll) {
- return record.geonet_info.isPublishedToAll[0].value;
- } else {
- return 'false';
- }
- }
- function getAbstract(v, record){
- if (record['abstract'] && record['abstract'][0]) {
- return record['abstract'][0].value;
- } else {
- return '';
- }
- }
- function getType(v, record){
- if (record['type'] && record['type'][0]) {
- return record['type'][0].value;
- } else {
- return '';
- }
- }
- function getSpatialRepresentationType(v, record){
- if (record['spatialRepresentationType'] && record['spatialRepresentationType'][0]) {
- return record['spatialRepresentationType'][0].value;
- } else {
- return '';
- }
- }
- function getEdit(v, record){
- if (record.geonet_info && record.geonet_info.edit) {
- return record.geonet_info.edit[0].value;
- } else {
- return 'false';
- }
- }
- function getDisplayOrder(v, record){
- if (record.displayOrder) {
- return record.displayOrder[0].value;
- } else {
- return 0;
- }
- }
-
-
- return new Ext.data.JsonStore({
- totalProperty: 'summary.count',
- root: 'records',
- fast: 'index',
- service: 'q',
- fields: [{
- name: 'title',
- convert: getTitle
- }, {
- name: 'abstract',
- convert: getAbstract
- }, {
- name: 'type',
- convert: getType
- }, {
- name: 'subject',
- mapping: 'keyword',
- defaultValue: ''
- }, {
- name: 'spatialRepresentationType',
- convert: getSpatialRepresentationType
- }, {
- name: 'uuid',
- mapping: 'geonet_info.uuid[0].value',
- defaultValue: ''
- }, {
- name: 'id',
- mapping: 'geonet_info.id[0].value',
- defaultValue: ''
- }, {
- name: 'schema',
- mapping: 'geonet_info.schema[0].value',
- defaultValue: ''
- }, {
- name: 'contact',
- convert: getContact
- }, {
- name: 'email',
- convert: getEmail
- }, {
- name: 'organization',
- convert: getOrganization
- }, {
- name: 'credit',
- convert: getCredit
- }, {
- name: 'thumbnail',
- convert: getThumbnails
- }, {
- name: 'overview',
- convert: getOverview
- }, {
- name: 'links',
- convert: getLinks
- }, {
- name: 'uri',
- mapping: 'uri',
- defaultValue: ''
- }, {
- name: 'isharvested',
- convert: getIsHarvested
- }, {
- name: 'harvestertype',
- convert: getHarvesterType
- }, {
- name: 'createdate',
- convert: getCreateDate
- }, {
- name: 'changedate',
- convert: getChangeDate
- }, {
- name: 'selected',
- convert: getSelected
- }, {
- name: 'source',
- convert: getSource
- }, {
- name: 'category',
- convert: getCategory
- }, {
- name: 'rating',
- convert: getRating
- }, {
- name: 'status',
- convert: getStatus
- }, {
- name: 'popularity',
- convert: getPopularity
- }, {
- name: 'download',
- convert: getDownload
- }, {
- name: 'dynamic',
- convert: getDynamic
- }, {
- name: 'ownername',
- convert: getOwnerName
- }, {
- name: 'edit',
- convert: getEdit
- }, {
- name: 'bbox',
- mapping: 'BoundingBox',
- defaultValue: ''
- }, {
- name: 'isPublishedToAll',
- convert: getPublished
- }, {
- name: 'displayOrder',
- convert: getDisplayOrder,
- sortType: 'asInt'
- }, {
- name: 'valid',
- convert: getValidationInfo
- }, {
- name: 'valid_details',
- convert: getValidationDetails
- }, {
- name: 'idxMsg',
- convert: getIdxMsg
- }
- ]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsStore.js
deleted file mode 100644
index 395e74d9441..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataResultsStore.js
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = MetadataResultsStore
- */
-/** api: constructor
- * .. class:: GeoNetwork.data.MetadataResultsStore()
- *
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork results.
- *
- * Depends on ``OpenLayers.Format.GeoNetworkRecords``.
- *
- * Fields available are:
- *
- * * id : The metadata internal identifier
- * * uuid : The metadata unique identifier
- * * schema : The schema (eg. dublin-code, iso19139)
- * * title
- * * abstract
- * * subject ``Array()``
- * * thumbnail
- * * links ``Array()``
- * * contacts ``Array()``
- * * uri Not used
- * * isharvested
- * * source
- * * rating
- * * popularity
- * * download
- * * ownername
- * * valid : The validation status
- * * valid_details : The validation information for each level of validation
- * * edit
- * * bbox ``Array()``
- *
- * FIXME : this is not a constructor, it's a function.
- * Is that good enough ? Comment also applied to other Stores
- *
- * TODO : handle multiple thumbnail ?
- */
-GeoNetwork.data.MetadataResultsStore = function(){
-
- function getTitle(v, record){
- if (record.title && record.title[0]) {
- return record.title[0].value;
- } else if (record.defaultTitle && record.defaultTitle[0]) {
- return record.defaultTitle[0].value;
- } else {
- return '';
- }
- }
- function getValidationInfo(v, record){
- var i, validity = [], validInfo;
- if (record.geonet_info && record.geonet_info.valid_details) {
- validInfo = record.geonet_info.valid_details;
- for (i = 0; i < validInfo.length; i++) {
- validity.push({
- valid: validInfo.status[i].value,
- type: validInfo.type[i].value,
- ratio: validInfo.ratio[i].value
- });
- }
- }
- return validity;
- }
-
- function getThumbnails(v, record){
- var i;
- var uri = '';
- var currentUri;
-
- if (record.image) {
- for (i = 0; i < record.image.length; i++) {
- currentUri = record.image[i].value;
- // Return the first URL even if not http (FIXME ?)
- if (currentUri.indexOf('http') !== -1 || i === 0) {
- uri = currentUri;
- }
- }
- }
- return uri;
- }
-
-
- function getContact(v, record){
- var i, contact = [], el, name;
-
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- el = record.responsibleParty[i];
-
- name = (record.responsibleParty.organisationName && record.responsibleParty.organisationName[i] ?
- record.responsibleParty.organisationName[i].value : '');
- contact.push({
- applies: el.appliesTo,
- logo: el.logo,
- role: el.role,
- name: name
- });
- }
- }
- return contact;
- }
- function getOrganization(v, record) {
- var orgName, el;
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- var tokens = record.responsibleParty[i].value.split(GeoNetwork.data.MetadataResultsFastStore.separator);
- if(tokens[2]) {
- orgName = tokens[2];
- break;
- }
- }
- }
- return orgName;
- }
-
- function getEmail(v, record) {
- var email, el;
- if (record.responsibleParty) {
- for (i = 0; i < record.responsibleParty.length; i++) {
- var tokens = record.responsibleParty[i].value.split(GeoNetwork.data.MetadataResultsFastStore.separator);
- if(tokens[4]) {
- email = tokens[4];
- break;
- }
- }
- }
- return email;
- }
- function getLinks(v, record){
- if (record.link) {
- return record.link;
- }
- return [];
- }
-
- /**
- * Some convert function to face empty geonet_info parameters
- * BUG in GeoNetwork when retrieving iso19115 record through CSW
- */
- function getSource(v, record){
- if (record.geonet_info && record.geonet_info.source) {
- return record.geonet_info.source[0].value;
- } else {
- return '';
- }
- }
-
- function getPopularity(v, record){
- if (record.geonet_info && record.geonet_info.popularity) {
- return record.geonet_info.popularity[0].value;
- } else {
- return '';
- }
- }
-
- function getRating(v, record){
- if (record.geonet_info && record.geonet_info.rating) {
- return record.geonet_info.rating[0].value;
- } else {
- return '';
- }
- }
-
- function getDownload(v, record){
- if (record.geonet_info && record.geonet_info.download) {
- return record.geonet_info.download[0].value;
- } else {
- return '';
- }
- }
-
- function getOwnerName(v, record){
- if (record.geonet_info && record.geonet_info.ownername) {
- return record.geonet_info.ownername[0].value;
- } else {
- return '';
- }
- }
-
- function getPublicationDate(v, record) {
- if (record.geonet_info && record.geonet_info.publicationDate) {
- return record.geonet_info.publicationDate[0].value;
- } else {
- return '';
- }
- }
-
- function getIsHarvested(v, record){
- if (record.geonet_info && record.geonet_info.isHarvested) {
- return record.geonet_info.isHarvested[0].value;
- } else {
- return '';
- }
- }
- function getHarvesterType(v, record){
- if (record.geonet_info && record.geonet_info.harvestInfo && record.geonet_info.harvestInfo.type) {
- return record.geonet_info.harvestInfo.type[0].value;
- } else {
- return '';
- }
- }
- function getCategory(v, record){
- if (record.geonet_info && record.geonet_info.category) {
- return record.geonet_info.category;
- } else {
- return '';
- }
- }
- function getChangeDate(v, record){
- if (record.geonet_info && record.geonet_info.changeDate) {
- return record.geonet_info.changeDate[0].value;
- } else {
- return '';
- }
- }
- function getCreateDate(v, record){
- if (record.geonet_info && record.geonet_info.createDate) {
- return record.geonet_info.createDate[0].value;
- } else {
- return '';
- }
- }
- function getSelected(v, record){
- if (record.geonet_info && record.geonet_info.selected) {
- return record.geonet_info.selected[0].value;
- } else {
- return '';
- }
- }
- function getAbstract(v, record){
- if (record['abstract']) {
- return record['abstract'][0].value;
- } else {
- return '';
- }
- }
- function getType(v, record){
- if (record['type']) {
- return record['type'][0].value;
- } else {
- return '';
- }
- }
- function getEdit(v, record){
- if (record.geonet_info && record.geonet_info.edit) {
- return record.geonet_info.edit[0].value;
- } else {
- return 'false';
- }
- }
- function getDisplayOrder(v, record){
- if (record.geonet_info && record.geonet_info.displayOrder) {
- return record.geonet_info.displayOrder[0].value;
- } else {
- return 0;
- }
- }
-
- return new Ext.data.JsonStore({
- totalProperty: 'summary.count',
- root: 'records',
- fast: 'false',
- service: 'xml.search',
- fields: [{
- name: 'title',
- convert: getTitle
- }, {
- name: 'abstract',
- convert: getAbstract
- }, {
- name: 'type',
- convert: getType
- }, {
- name: 'subject',
- mapping: 'keyword',
- defaultValue: ''
- }, {
- name: 'uuid',
- mapping: 'geonet_info.uuid[0].value',
- defaultValue: ''
- }, {
- name: 'id',
- mapping: 'geonet_info.id[0].value',
- defaultValue: ''
- }, {
- name: 'schema',
- mapping: 'geonet_info.schema[0].value',
- defaultValue: ''
- }, {
- name: 'contact',
- convert: getContact
- }, {
- name: 'email',
- convert: getEmail
- }, {
- name: 'organization',
- convert: getOrganization
- }, {
- name: 'thumbnail',
- convert: getThumbnails
- }, {
- name: 'links',
- convert: getLinks
- }, {
- name: 'uri',
- mapping: 'uri',
- defaultValue: ''
- }, {
- name: 'isharvested',
- convert: getIsHarvested
- }, {
- name: 'harvestertype',
- convert: getHarvesterType
- }, {
- name: 'createdate',
- convert: getCreateDate
- }, {
- name: 'changedate',
- convert: getChangeDate
- }, {
- name : 'publicationdate',
- convert : this.getPublicationDate
- }, {
- name: 'selected',
- convert: getSelected
- }, {
- name: 'source',
- convert: getSource
- }, {
- name: 'category',
- convert: getCategory
- }, {
- name: 'rating',
- convert: getRating
- }, {
- name: 'popularity',
- convert: getPopularity
- }, {
- name: 'download',
- convert: getDownload
- }, {
- name: 'ownername',
- convert: getOwnerName
- }, {
- name: 'edit',
- convert: getEdit
- }, {
- name: 'bbox',
- mapping: 'BoundingBox',
- defaultValue: ''
- }, {
- name: 'displayOrder',
- convert: getDisplayOrder,
- sortType: 'asInt'
- }, {
- name: 'valid',
- mapping: 'geonet_info.valid[0].value',
- defaultValue: '-1'
- }, {
- name: 'valid_details',
- convert: getValidationInfo
- }]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataSummaryStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataSummaryStore.js
deleted file mode 100644
index 239e0b3d454..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/MetadataSummaryStore.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = MetadataSummaryStore
- */
-/** api: method[MetadataSummaryStore]
- *
- * return a pre-configured `Ext.data.JsonStore * `_
- * for GeoNetwork summary.
- *
- *
- * .. code-block:: xml
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- * `_
- * for GeoNetwork metadata thumbnails.
- *
- * :param url: ``String`` Usually the metadata.thumbnail service URL.
- *
- *
- * .. code-block:: javascript
- *
- * this.store = new GeoNetwork.data.MetadataThumbnailStore(
- * catalogue.services.getThumbnail,
- * {id: this.metadataId}
- * );
- *
- */
-GeoNetwork.data.MetadataThumbnailStore = function(url, params){
-
- var fields = [{
- name: 'href'
- }, {
- name: 'desc'
- }, {
- name: 'type'
- }, {
- name: 'mimetype'
- }];
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'POST',
- url: url,
- params: params,
- disableCaching: false
- }),
- record: 'thumbnail',
- idPath: 'href',
- fields: fields
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionReader.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionReader.js
deleted file mode 100644
index 07ef1ec1bf2..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionReader.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace("GeoNetwork.data");
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = OpenSearchSuggestionReader
- * base_link = `Ext.data.JsonReader `_
- */
-/** api: constructor
- * .. class:: OpenSearchSuggestionReader(meta, recordType)
- *
- * Create a new OpenSearch suggestion reader object.
- *
- * An Ext.ArrayReader could not be used because it seems that
- * we cannot retrieve the root based on an array index.
- * In OpenSearch, root is the 2nd column of the array:
- *
- * .. code-block:: javascript
- *
- * ["sea",["sears","search engines","search engine",
- *
- */
-GeoNetwork.data.OpenSearchSuggestionReader = function(meta, recordType){
- meta = meta || {};
- GeoNetwork.data.OpenSearchSuggestionReader.superclass.constructor.call(this, meta, recordType || meta.fields);
-
-};
-
-Ext.extend(GeoNetwork.data.OpenSearchSuggestionReader, Ext.data.JsonReader, {
- /**
- * Index of the root element in the Array
- */
- rootId: undefined,
-
- /** private: method[readRecords]
- * :arg data: ``DOMElement or String or Array`` A document element or XHR response
- * string. As an alternative to fetching attributes data
- * from a remote source, an array of attribute objects can
- * be provided given that the properties of each attribute
- * object map to a provided field name. :return: ``Object``
- * A data block which is used by an ``Ext.data.Store`` as a
- * cache of ``Ext.data.Records``.
- *
- * Create a data block containing Ext.data.Records from an
- * OpenSearch suggestion document.
- */
- readRecords: function(o){
- this.arrayData = o;
- var i, j;
- var s = this.meta, sid = s ? Ext.num(s.idIndex, s.id) : null, recordType = this.recordType, fields = recordType.prototype.fields, records = [], success = true, v;
-
- // FIXME : should be from constructor
- this.rootId = 1;
- var root = (!this.rootId ? this.getRoot(o) : o[this.rootId]);
-
- for (i = 0, len = root.length; i < len; i++) {
- var n = root[i], values = {}, id = ((sid || sid === 0) &&
- n[sid] !== undefined &&
- n[sid] !== "" ? n[sid] : null);
- for (j = 0, jlen = fields.length; j < jlen; j++) {
- var f = fields.items[j], k = f.mapping !== undefined &&
- f.mapping !== null ? f.mapping : j;
- v = n[k] !== undefined ? n[k] : f.defaultValue;
- v = f.convert(v, n);
- values[f.name] = n;
- }
- var record = new recordType(values, id);
- record.json = n;
- records[records.length] = record;
- }
-
- var totalRecords = records.length;
-
- if (s.totalProperty) {
- v = parseInt(this.getTotal(o), 10);
- if (!isNaN(v)) {
- totalRecords = v;
- }
- }
- if (s.successProperty) {
- v = this.getSuccess(o);
- if (v === false || v === 'false') {
- success = false;
- }
- }
- return {
- success: true,
- records: records,
- totalRecords: records.length
- };
-
- }
-
-});
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionStore.js
deleted file mode 100644
index 59165754f58..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/OpenSearchSuggestionStore.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace("GeoNetwork.data");
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = OpenSearchSuggestionStore
- * base_link = `Ext.data.Store `_
- */
-Ext.namespace("GeoNetwork.data");
-
-/** api: constructor
- * .. class:: OpenSearchSuggestionStore(config)
- *
- * Small helper class to make creating stores for remotely-loaded attributes
- * data easier. OpenSearchSuggestionStore is pre-configured with a built-in
- * ``Ext.data.HttpProxy`` and :class:`GeoNetwork.data.OpenSearchSuggestionReader`.
- * The HttpProxy is configured to allow caching (disableCaching: false) and
- * uses GET.
- */
-GeoNetwork.data.OpenSearchSuggestionStore = function(c){
- c = c || {};
- GeoNetwork.data.OpenSearchSuggestionStore.superclass.constructor.call(this, Ext.apply(c, {
- proxy: c.proxy ||
- (!c.data ? new Ext.data.HttpProxy({
- url: c.url,
- disableCaching: false,
- method: "GET"
- }) : undefined),
- reader: new GeoNetwork.data.OpenSearchSuggestionReader(c, c.fields ||
- ["value"] // TODO : add extra field according to OpenSearch suggestion (not supported by GeoNetwork yet)
-)
- }));
-};
-Ext.extend(GeoNetwork.data.OpenSearchSuggestionStore, Ext.data.Store);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/RegionStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/RegionStore.js
deleted file mode 100644
index cbaecd705fc..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/RegionStore.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = RegionStore
- */
-/** api: method[RegionStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork regions.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.RegionStore = function(url){
- /**
- * Create a list of label // TODO duplicate with categoryStore and probably others
- */
- function getLabel(v, record){
- var labels = {};
- var i;
- var label = record.getElementsByTagName('label');
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1) {
- labels[child.nodeName] = child.firstChild.nodeValue;
- }
- }
- }
- return labels;
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'region',
- idPath: '@id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'north'
- }, {
- name: 'south'
- }, {
- name: 'east'
- }, {
- name: 'west'
- }, {
- name: 'label',
- convert: getLabel
- }]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/StatusStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/StatusStore.js
deleted file mode 100644
index 0ff75a2b1c8..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/StatusStore.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = StatusStore
- */
-/** api: method[StatusStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork metadata status including labels in different language.
- *
- * :param url: ``String`` Usually the xml.info?type=status service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- *
- */
-GeoNetwork.data.StatusStore = function(url){
-
- /**
- * Create a list of label
- */
- function getLabel(v, record){
- var labels = {};
- var label = record.getElementsByTagName('label');
- var i;
-
- if (label.length === 1) {
- var children = label[0].childNodes;
- var child;
- for (i = 0, len = children.length; i < len; ++i) {
- child = children[i];
- if (child.nodeType === 1) {
- labels[child.nodeName] = child.firstChild.nodeValue;
- }
- }
- }
- return labels;
- }
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'status',
- idPath: 'id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'name'
- }, {
- name: 'reserved'
- }, {
- name: 'label',
- convert: getLabel
- }]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SubTemplateTypeStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SubTemplateTypeStore.js
deleted file mode 100644
index 8ccfe47c96b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SubTemplateTypeStore.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = SubTemplateTypeStore
- */
-/** api: method[SubTemplateTypeStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork sub-template types.
- *
- * See :class:`GeoNetwork.editor.SubTemplateSelectionPanel`
- *
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.SubTemplateTypeStore = function(url){
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'record',
- idPath: 'type',
- fields: [{
- name: 'type'
- },{
- name: 'schema'
- },{
- name: 'label'
- },{
- name: 'description'
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SuggestionStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SuggestionStore.js
deleted file mode 100644
index 3ac58882945..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/SuggestionStore.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = SuggestionStore
- */
-/** api: method[SuggestionStore]
- * A pre-configured `Ext.data.JsonStore `_
- * or `Ext.data.XmlStore `_
- * for metadata suggestion.
- *
- * See :class:`GeoNetwork.editor.SuggestionsPanel`
- *
- * :param url: ``String`` Usually the xml.metadata.validate service URL.
- * :param grouping: ``boolean`` Set to true to return a Ext.data.GroupingStore
- */
-GeoNetwork.data.SuggestionStore = function(url, params, grouping){
-
- function getStatusIcon(v, record){
- var status = record.getAttribute('type');
- return '';
- }
-
- var fields = [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'name',
- mapping: '@process'
- }, {
- name: 'target',
- mapping: '@target'
- }, {
- name: 'category',
- mapping: '@category'
- }, {
- name: 'desc',
- mapping: 'name'
- }, {
- name: 'params',
- mapping: 'params'
- }, {
- name: 'operational',
- mapping: 'operational'
- }];
-
- if (grouping) {
- var reader = new Ext.data.XmlReader({
- record: 'suggestion',
- idProperty: '@id'
- }, fields);
-
- return new Ext.data.GroupingStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'POST',
- url: url,
- params: params,
- disableCaching: false
- }),
- reader: reader,
- groupField: 'category',
- sortInfo: {
- field: 'target',
- direction: "ASC"
- }
- });
- } else {
- return new Ext.data.XmlStore({
- autoDestroy: true,
- baseParams: params,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'suggestion',
- idPath: '@id',
- fields: fields
- });
- }
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ThesaurusStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ThesaurusStore.js
deleted file mode 100644
index 07c4a930b72..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ThesaurusStore.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = ThesaurusStore
- */
-/** api: method[ThesaurusStore]
- * A pre-configured `Ext.data.Store `_
- * for GeoNetwork SKOS thesaurus.
- *
- * :param url: ``String`` Usually the xml.thesaurus.getList service URL.
- */
-GeoNetwork.data.ThesaurusStore = function(config){
- var DataRecord = Ext.data.Record.create([{
- name: 'filename'
- }, {
- name: 'title'
- }, {
- name: 'theme',
- mapping: 'dname'
- }, {
- name: 'id',
- mapping: 'key'
- }, {
- name: 'defaultNamespace'
- }, {
- name: 'type'
- }, {
- name: 'activated'
- }]);
-
- var store = new Ext.data.Store({
- url: config.url, // FIXME
- reader: new Ext.data.XmlReader({
- record: 'thesaurus'
- }, DataRecord),
- sortInfo: config.sortInfo || {
- field: 'title',
- direction: 'ASC'
- },
- fields: ['filename', 'theme', 'id', 'title', 'type', 'activated', 'defaultNamespace'],
- listeners: config.listeners
- });
-
- if (config.allOption) {
- // add the "any thesaurus" record
- var record = new DataRecord({
- filename: OpenLayers.i18n('anyThesaurus'),
- activated: 'y'
- });
- record.set('id', '');
- store.add(record);
- }
-
- if (config.activatedOnly) {
- // Filter activated thesaurus only
- store.on('load', function() {
- var coll = this.query('activated', 'n');
- coll.each(function (item, idx) {
- this.removeAt(this.indexOf(item));
- }, store);
- }, store);
- }
-
- store.load({
- add: true
- });
-
- return store;
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/UserStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/UserStore.js
deleted file mode 100644
index bcf7c9b61a9..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/UserStore.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = UserStore
- */
-/** api: method[UserStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork users. Users visibility depends on user privileges.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.UserStore = function(url){
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'user', // records will have an "Item" tag
- idPath: 'id',
- fields: [{
- name: 'id'
- }, {
- name: 'username'
- }, {
- name: 'surname'
- }, {
- name: 'name'
- }, {
- name: 'profile'
- }, {
- name: 'address'
- }, {
- name: 'email'
- }, {
- name: 'city'
- }, {
- name: 'state'
- }, {
- name: 'zip'
- }, {
- name: 'country'
- }, {
- name: 'organisation'
- }, {
- name: 'kind'
- }]
- });
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ValidationRuleStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ValidationRuleStore.js
deleted file mode 100644
index 1f1a7b98134..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/ValidationRuleStore.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = ValidationRuleStore
- */
-/** api: method[ValidationRuleStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork validation report rules.
- *
- * :param url: ``String`` Usually the xml.metadata.validate service URL.
- *
- * :param grouping: ``boolean`` Set to true to return a Ext.data.GroupingStore
- */
-GeoNetwork.data.ValidationRuleStore = function(url, params, grouping){
-
- function getStatusIcon(v, record){
- var status = record.getAttribute('type');
- return '';
- }
-
- var fields = [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'group',
- mapping: '@group'
- }, {
- name: 'status',
- mapping: '@type'
- }, {
- name: 'statusIcon',
- convert: getStatusIcon
- }, {
- name: 'title'
- }, {
- name: 'details'
- }, {
- name: 'msg'
- }];
-
- if (grouping) {
- var reader = new Ext.data.XmlReader({
- record: 'rule',
- idProperty: 'id'
- }, fields);
-
- return new Ext.data.GroupingStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'POST',
- url: url,
- params: params,
- disableCaching: false
- }),
- reader: reader,
- groupField: 'group',
- sortInfo: {
- field: 'status',
- direction: "ASC"
- }
- });
- } else {
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- params: params,
- disableCaching: false
- }),
- record: 'rule',
- idPath: '@id',
- fields: fields
- });
- }
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/Z3950RepositoryStore.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/Z3950RepositoryStore.js
deleted file mode 100644
index b2e70ee5951..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/data/Z3950RepositoryStore.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.data');
-
-/** api: (define)
- * module = GeoNetwork.data
- * class = Z3950RepositoryStore
- */
-/** api: method[Z3950RepositoryStore]
- * A pre-configured `Ext.data.JsonStore `_
- * for GeoNetwork Z39.50 Repository.
- *
- * :param url: ``String`` Usually the xml.info service URL.
- * See `xml.info service description <../../../developers/xml_services/services_general.html#xml-info>`_
- * for mode information.
- */
-GeoNetwork.data.Z3950RepositoryStore = function(url){
-
- return new Ext.data.XmlStore({
- autoDestroy: true,
- proxy: new Ext.data.HttpProxy({
- method: 'GET',
- url: url,
- disableCaching: false
- }),
- record: 'repository',
- idPath: 'id',
- fields: [{
- name: 'id',
- mapping: '@id'
- }, {
- name: 'code',
- mapping: 'id/@code'
- }, {
- name: 'name',
- mapping: 'label'
- }]
- });
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/GeometryMapField.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/GeometryMapField.js
deleted file mode 100644
index 0cdb52aabe5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/GeometryMapField.js
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-Ext.namespace('GeoNetwork.form');
-
-/** api: (define)
- * module = GeoNetwork.form
- * class = GeometryMapField
- * base_link = `GeoExt.MapPanel `_
- */
-
-/** api: example
- *
- *
- * .. code-block:: javascript
- *
- * var fields = [];
- * var geomField = new Ext.form.TextField( {
- * name : 'E_geometry',
- * id : 'geometry',
- * fieldLabel : 'WKT geometry',
- * // toolTip : '(eg. POLYGON((-180 -90,180 -90,180 90,-180 90,-180
- * // -90)) or POINT(6 10))',
- * hideLabel : false
- * });
- *
- * var geomWithMapField = new GeoNetwork.form.GeometryMapField({
- * geometryFieldId : 'geometry',
- * layers : [new OpenLayers.Layer.WMS(
- * "Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms",
- * {layers: "bluemarble"}
- * )],
- * zoom: 1
- * });
- * fields.push(geomField, geomWithMapField);
- *
- * var searchForm = new Ext.FormPanel( {
- * items : fields,
- * ...
- *
- */
-
-/** api: constructor
- * .. class:: GeometryMapField(config)
- *
- * Create a small map which has to be related to an existing
- * (hidden) text field for the geometry criteria.
- * On map move, the geometry field is updated with the current
- * map extent as WKT.
- *
- * A Checkbox is available to turn off the field update.
- *
- *
- * TODO :
- * * Support other projection
- * * Add draw buttons (like current minimap)
- * * Add list of well know region to quickly zoom to an AOI or a Gazetter service like GeoNames.org ?
- */
-GeoNetwork.form.GeometryMapField = Ext.extend(GeoExt.MapPanel, {
- // TODO : Add capablitiy to change layer_style and drawing layer_style
- layer_style: OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']),
-
- /** api: config[geometryFieldId]
- * ``String`` Identifier of an Ext.form.TextField to update
- * with the WKT representation of the map extent. If undefined,
- * a hidden text field is created to store the geometry.
- */
- geometryFieldId : undefined,
-
- /** api: property[geometryField]
- * ``Ext.form.TextField`` The TextField to update
- */
- geometryField : undefined,
- mapOptions: undefined,
- extentBox : undefined,
- vectorLayer : undefined,
- /** private: property[nearYou]
- * Near you button
- */
- nearYou : undefined,
-
- /** private: method[initStyle]
- * Define default layer styles
- */
- initStyle: function(){
- // See http://dev.openlayers.org/releases/OpenLayers-2.8/doc/apidocs/files/OpenLayers/Feature/Vector-js.html for more style info
- this.layer_style.fillOpacity = 0;
- this.layer_style.strokeOpacity = 0.8;
- this.layer_style.strokeDashstyle = 'dash';
- this.layer_style.strokeWidth = 4;
- },
- createExtentControl: function() {
- var action;
-
- // Restrict to map extent action or draw polygon control
- if (this.restrictToMapExtent) {
- action = new Ext.form.Checkbox( {
- boxLabel : OpenLayers.i18n('restrictSearchToMap'),
- checked : this.activated ? true : false,
- listeners : {
- check : function(cb, checked) {
- this.geometryField.setValue('');
- this.nearYou.toggle(false);
-
- if (checked) {
- this.on('aftermapmove', this.setField, this);
- this.fireEvent('aftermapmove');
- } else {
- this.un('aftermapmove', this.setField, this);
- }
- },
- scope : panel
- }
- });
- this.getTopToolbar().add(action);
-
- if (this.activated) {
- this.on('aftermapmove', this.setField, this);
- }
- } else {
- this.initStyle();
- this.extentBox = new GeoNetwork.Control.ExtentBox({
- wktelement: this.geometryField,
- vectorLayerStyle: this.layer_style
- });
- action = new GeoExt.Action({
- control: this.extentBox,
- toggleGroup: this.map.id + "move",
- allowDepress: false,
- pressed: this.activated ? true : false,
- map: this.map,
- tooltip: {
- title: OpenLayers.i18n("selectExtentTooltipTitle"),
- text: OpenLayers.i18n("selectExtentTooltipText")
- },
- iconCls: 'selextent'
- });
- this.vectorLayer = this.extentBox.getOrCreateLayer();
- var clearAction = {
- iconCls: "clearPolygon",
- tooltip: {
- title: OpenLayers.i18n("clearExtentTooltipTitle"),
- text: OpenLayers.i18n("clearExtentTooltipText")
- },
- handler: function(){
- this.vectorLayer.destroyFeatures();
- this.geometryField.setValue('');
- },
- scope: this
- };
- this.getTopToolbar().add(action, clearAction);
- }
-
- if (this.nearYouControl) {
- this.getTopToolbar().add(this.nearYou);
- }
-
- return action;
- },
- /** private: method[createToolbar]
- * Create the default toolbar
- */
- createNavBar : function() {
- var items = [];
- var panel = this;
-
- this.nearYou = new Ext.Button( {
- iconCls : 'md-mn mn-user-location',
- iconAlign : 'right',
- tooltip: OpenLayers.i18n('mapNearYou'),
- enableToggle : true,
- toggleGroup: this.map.id + "move",
- listeners : {
- toggle : function(bt, pressed) {
- var o = this;
- if (pressed) {
- if (navigator.geolocation) {
- navigator.geolocation.getCurrentPosition(function(position) {
- o.map.panTo(new OpenLayers.LonLat(position.coords.longitude, position.coords.latitude));
- o.geometryField.setValue('POINT(' + position.coords.latitude + ' ' +
- position.coords.longitude + ')');
- }); //, function(error){console.log(error);});
- }
- } else {
- o.geometryField.setValue('');
- }
- },
- scope : panel
- }
- });
-
- var zoomAllAction = new GeoExt.Action({
- control: new OpenLayers.Control.ZoomToMaxExtent(),
- map: this.map,
- iconCls: 'zoomfull',
- tooltip: {title: OpenLayers.i18n("zoomToMaxExtentTooltipTitle"), text: OpenLayers.i18n("zoomToMaxExtentTooltipText")}
- });
-
- var zoomInAction = new GeoExt.Action({
- control: new OpenLayers.Control.ZoomBox(),
- map: this.map,
- toggleGroup: this.map.id + "move",
- allowDepress: false,
- iconCls: 'zoomin',
- tooltip: {title: OpenLayers.i18n("zoominTooltipTitle"), text: OpenLayers.i18n("zoominTooltipText")}
- });
-
- var zoomOutAction = new GeoExt.Action({
- control: new OpenLayers.Control.ZoomBox({
- displayClass: 'ZoomOut',
- out: true
- }),
- map: this.map,
- toggleGroup: this.map.id + "move",
- allowDepress: false,
- tooltip: {title: OpenLayers.i18n("zoomoutTooltipTitle"), text: OpenLayers.i18n("zoomoutTooltipText")},
- iconCls: 'zoomout'
- });
-
- var panAction = new GeoExt.Action({
- control: new OpenLayers.Control.DragPan({
- isDefault: true
- }),
- toggleGroup: this.map.id + "move",
- allowDepress: false,
- pressed: this.activated ? false : true,
- map: this.map,
- iconCls: 'pan',
- tooltip: {title: OpenLayers.i18n("dragTooltipTitle"), text: OpenLayers.i18n("dragTooltipText")}
- });
-
- items.push(zoomAllAction, zoomInAction, zoomOutAction, panAction, '->');
-
- //this.getTopToolbar().add(items);
- return items;
- },
-
- /** api: property[mapOptions]
- * ``Object`` The default mapOptions. By default WGS84 world based map.
- */
- /** api: property[width]
- * ``Number`` Width default to 290 // TODO Remove ?
- */
- /** api: property[height]
- * ``Number`` Height default to 180 // TODO Remove ?
- */
- /** api: property[restrictToMapExtent]
- * ``Boolean`` Define if extent should be restricted to map extent
- */
- /** api: property[border]
- * ``Boolean`` No border by default
- */
- /** api: property[activated]
- * ``Boolean`` Define if the control is activated on startup.
- * False by default to not update the geometry field.
- */
- defaultConfig : {
- id : 'geometryMap', // FIXME : This is hardcoded
- width: 290,
- height: 180,
- stateful: false,
- border : false,
- activated : false,
- restrictToMapExtent : false,
- nearYouControl : true
- },
- /** private: method[initComponent]
- * Initializes the component
- */
- initComponent : function() {
- Ext.applyIf(this, this.defaultConfig);
-
- var options = this.mapOptions || {
- projection: "EPSG:4326",
- units: "degrees",
- maxExtent: new OpenLayers.Bounds(-180,-90,180,90),
- restrictedExtent: new OpenLayers.Bounds(-180,-90,180,90),
- controls: []
- };
-
- if (!options.controls) {
- options.controls = [];
- }
-
- if(this.layers && this.layers.length > 0) {
- for(i=0;i`_
- */
-/** api: example
- *
- *
- * .. code-block:: javascript
- *
- * var fields = [];
- *
- * var searchField = new GeoNetwork.form.OpenSearchSuggestionTextField({
- * url: catalogue.services.opensearchSuggest
- * });
- *
- *
- * var titleField = new GeoNetwork.form.OpenSearchSuggestionTextField({
- * field: 'title',
- * fieldLabel: 'Title',
- * url: catalogue.services.opensearchSuggest,
- * hideTrigger: true
- * });
- *
- * fields.push(search, title);
- * fields.push(GeoNetwork.util.SearchFormTools.getOptions());
- *
- * var searchForm = new Ext.FormPanel( {
- * items : fields,
- * ...
- *
- */
-/** api: constructor
- * .. class:: OpenSearchSuggestionTextField(config)
- *
- * Create a new OpenSearch suggestion form field with autocompletion.
- *
- * Check main.search.suggest configuration in GeoNetwork configuration
- * file for better results according to catalogue content.
- *
- *
- * Comments:
- * * Lucene analyzer should be applied on the server side (TODO).
- * * When using suggestion, we should be allowed to turn off
- * FuzzyQuery as the suggested term come from the index. Trigger
- * change similarity to 1 (queries should then be a bit faster).
- */
-GeoNetwork.form.OpenSearchSuggestionTextField = Ext.extend(Ext.form.ComboBox, {
-
- defaultConfig: {
- hideLabel: true,
- width: 400,
- minChars: 2,
- loadingText: '...',
- hideTrigger: true,
- /** api: config[field]
- * ``String`` Optional, GeoNetwork Lucene field to query.
- * Default any (ie. full text search).
- */
- field: 'any',
- /** api: config[suggestionField]
- * ``String`` Optional, GeoNetwork Lucene field to use for suggestion.
- * If undefined, field is used. That could be useful to restrict the suggestion
- * to a subset of values for this field. For example any match any text
- * in a metadata record, but suggestion could be limited to title, abstract, keywords
- * stored in the anylight field.
- */
- suggestionField: '',
- /** api: config[fieldName]
- * ``String`` Optional, Field name.
- */
- name: 'E_any',
- /**
- * Don't set to true if Lucene field is not analyzed with an Analyzer using a lowerCaseFilter.
- */
- forceLowerCase: true,
- /** api: config[sortBy]
- * ``String`` request elements sorting order. FREQUENCY (default), ALPHA, STARTSWITHFIRST
- */
- sortBy: "STARTSWITHFIRST"
- },
- /** api: config[url]
- * ``String`` OpenSearch suggestion service URL.
- */
- url: undefined,
-
- /** api: config[fieldLabel]
- * ``String`` Optional, Field label.
- *
- */
- fieldLabel: undefined,
-
- displayField: 'value',
-
- /** api: config[tpl]
- * ``Ext.XTemplate`` Optional template to use.
- * Default template, highlight search string in the suggestion returned.
- *
- */
- tpl: undefined,
-
- mode: 'remote',
- store: undefined,
- queryParam: 'q',
- autoSelect: false,
- itemSelector: 'div.search-item',
- /** private: method[initComponent]
- * Initializes the metadata results view.
- */
- initComponent: function(){
- Ext.applyIf(this, this.defaultConfig);
-
-
- this.id = this.name; // FIXME : You may have 2 or more cmp with same name in the app ?
- GeoNetwork.form.OpenSearchSuggestionTextField.superclass.initComponent.call(this);
-
- if (!this.tpl) {
- /**
- * FIXME : Maybe it could be better to have a property instead
- * of doing getDom
- * FIXME : in case of lower casing, replace could not work that way
- * use /regexp/i instead probably
- *
- */
- var tpl = '
';
- this.tpl = new Ext.XTemplate(tpl);
- }
-
- if (this.forceLowerCase) {
- this.on('beforequery', function(q){
- q.query = q.query.toLowerCase();
- });
- }
- this.store = new GeoNetwork.data.OpenSearchSuggestionStore({
- url: this.url,
- rootId: 1,
- baseParams: {
- field: this.suggestionField || this.field,
-// withFrequency: true, // To display frequency info
- sortBy: this.sortBy
- }
- });
- }
-});
-
-/** api: xtype = gn_opensearchsuggestiontextfield */
-Ext.reg('gn_opensearchsuggestiontextfield', GeoNetwork.form.OpenSearchSuggestionTextField);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/SearchField.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/SearchField.js
deleted file mode 100644
index 86148864a0b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/form/SearchField.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.form');
-
-
-
-/** api: (define)
- * module = GeoNetwork.form
- * class = SearchField
- * base_link = `Ext.form.TwinTriggerField `_
- */
-/** api: constructor
- * .. class:: SearchField()
- *
- * Custom search field with a reset button once search is launched.
- */
-GeoNetwork.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
- initComponent: function(){
- if (!this.store.baseParams) {
- this.store.baseParams = {};
- }
- GeoNetwork.form.SearchField.superclass.initComponent.call(this);
- this.on('specialkey', function(f, e){
- if (e.getKey() === e.ENTER) {
- this.onTrigger2Click();
- }
- }, this);
- },
-
- validationEvent: false,
- validateOnBlur: false,
- trigger1Class: 'x-form-clear-trigger',
- trigger2Class: 'x-form-search-trigger',
- hideTrigger1: true,
- width: 180,
- hasSearch: false,
- paramName: 'query',
-
- onTrigger1Click: function(){
- if (this.hasSearch) {
- this.store.baseParams[this.paramName] = '';
- this.store.removeAll();
- this.el.dom.value = '';
- this.triggers[0].hide();
- this.hasSearch = false;
- this.focus();
- }
- },
-
- onTrigger2Click: function(){
- var v = this.getRawValue();
- if (v.length < 1) {
- this.store.baseParams[this.paramName] = '*';
- } else {
- this.store.baseParams[this.paramName] = v;
- }
-
- /**
- * If a triggerAction is defined run it. If not
- * reload associated store.
- */
- if (this.triggerAction) {
- this.triggerAction(this.scope, v);
- } else {
- this.store.reload();
- }
- this.hasSearch = true;
- this.triggers[0].show();
- this.focus();
- }
-});
-
-/** api: xtype = gn_searchfield*/
-Ext.reg('gn_searchfield', GeoNetwork.form.SearchField);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/ca.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/ca.js
deleted file mode 100644
index 338d835bc6a..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/ca.js
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.ca={
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'harvestingAdmin': 'Harvesting',
- 'filterGroup': 'Filter group ...',
- 'checkAllOrNone': 'Check all/none',
- 'updateUserInfo': 'Edit my profile',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Tipus de data',
- 'tempExtent': 'Extensió temporal',
- 'creationDate': 'Data de creació',
- 'modificationDate': 'Data de modificació',
- 'publicationDate': 'Data de publicació',
- 'previousPage': 'Tornar a la pàgina anterior',
- 'nextPage': 'Anar a la pàgina següent',
- 'upInPage': 'Desplaçar cap amunt als resultats',
- 'downInPage': 'Desplaçar cap avall als resultats',
- 'example': 'Exemple:',
- 'noInfo': 'Cap informació',
- 'helper': "Suggeriment:",
- 'toggleLayerManager': 'Mostrar el gestor de capes',
- 'tagName': 'Nom de l\'element:',
- 'enableTooltip': 'Activar l\'indicador de funció per obtenir més informació de cada camp.',
- 'connectIssue': "Problemes amb la connexió al catàleg",
- 'connectIssueMsg': "Error 404. Impossible connectar amb el catàleg de la URL ",
- 'featureInfoTooltipTitle': "Informació de l'entitat",
- 'featureInfoTooltipText': "Punxi sobre el mapa per obtenir informació de les entitats de totes les capes visibles.",
- 'zoomToMaxExtentTooltipTitle': "Extensió total",
- 'zoomToMaxExtentTooltipText': "Utilitzi aquest botó per visualitzar l'extensió total del mapa.",
- 'zoominTooltipTitle': "Apropar",
- 'zoominTooltipText': "Dibuixi una capsa en el mapa per apropar-se a la zona. També pot punxar sobre el mapa per apropar-se un factor de 2.",
- 'zoomoutTooltipTitle': "Allunyar",
- 'zoomoutTooltipText': "Punxi sobre el mapa o dibuixi una capsa per allunyar-se.",
- 'dragTooltipTitle': "Desplaçar el mapa",
- 'dragTooltipText': "Premi el botó esquerre de ratolí per desplaçar el mapa.",
- 'previousTooltipTitle': "Vista anterior",
- 'previosTooltipText': "Premi aquest botó per anar a la vista anterior del mapa",
- 'nextTooltipTitle': "Vista següent",
- 'nextTooltipText': "Premi aquest botó per anar a la vista següent del mapa",
- 'featureInfoTitle': "Informació de l'entitat",
- 'layerManagerTabTitle': "Gestió de capes",
- 'legendTabTitle': "Llegenda",
- 'scaleTitle': "Escala",
- 'xTitle': "X",
- 'yTitle': "Y",
- 'projectionTitle': "Projecció",
- 'FeatureInfoNotQueryable': "No hi ha cap capa consultable",
- 'WMSBrowserTab1': "Seleccionar",
- 'WMSBrowserTab3': "Extern",
- 'WMSBrowserPreviewTitle': "Previsualització de la capa",
- 'WMSBrowserAddButton': "Afegir",
- 'WMSBrowserDuplicateMsg': "La capa ja està al mapa",
- 'WMSBrowserPreviewWaitMsg': "Recuperar la imatge anterior",
- 'WMSBrowserConnectButton': "Connectar",
- 'WMSBrowserConnectError': "Error de connexió al servidor WMS. Si us plau, verifiqui la URL.",
- 'infoTitle': "Informació",
- 'mf.print.mapTitle': "Títol",
- 'mf.print.comment': "Commentari",
- 'mf.print.dpi': "Resolució",
- 'mf.print.scale': "Escala",
- 'mf.print.rotation': "Angle",
- 'mf.print.resetPos': "Esborrar",
- 'mf.print.print': "Imprimir",
- 'mf.print.generatingPDF': "Generant PDF",
- 'mf.print.unableToPrint': "No ha estat possible imprimir, intenti-ho més tard",
- 'mf.error': "Error",
- 'selectExtentTooltipTitle': "Seleccionar una zona",
- 'selectExtentTooltipText': "Seleccionar una zona per cercar al catàleg",
- 'clearExtentTooltipTitle': "Eliminar zona",
- 'clearExtentTooltipText': "Esborrar zona (és a dir, cap criteri espacial)",
- 'printTooltipTitle': "Imprimir",
- 'printTooltipText': "Imprimir el mapa actual",
- 'savewmcTooltipTitle': "Guardar el context de mapa web (WMC)",
- 'savewmcTooltipText': "Guardar el context de mapa web a un arxiu",
- 'saveWMCFile.windowTitle': "Guardar el context de mapa web (WMC)",
- 'saveWMCFile.errorSaveWMC': "No s'ha pogut guardar el context de mapa web (WMC)",
- 'loadwmcTooltipTitle': "Carregar un context de mapa web (WMC)",
- 'loadwmcTooltipText': "Carregar un context de mapa web des d'un arxiu en el mapa actual",
- 'selectWMCFile.windowTitle': "Carregar un context de mapa web (WMC)",
- 'selectWMCFile': "Seleccionar arxiu de context de mapa web (WMC)",
- 'selectWMCFile.waitLoadingWMC': "Carregant un context de mapa web (WMC)",
- 'selectWMCFile.loadButtonText': "Carregar",
- 'selectWMCFile.mergeButtonText': "Fusionar",
- 'selectWMCFile.errorLoadingWMC': "No ha estat possible carregar el context de mapa web (WMC)",
- 'opacityButtonText': "Opacitat",
- 'opacityWindowTitle': "Opacitat",
- 'metadataButtonText': "Metadada",
- 'removeButtonText': "Esborrar",
- 'addWMSButtonText': "Afegir WMS",
- 'addWMSWindowTitle': "Afegir capa d'un servei WMS",
- 'layerInfoPanel.windowTitle': "Metadades de la capa",
- 'layerInfoPanel.titleField': "Títol",
- 'layerInfoPanel.descriptionField': "Descripció",
- 'layerInfoPanel.queryableField': "Consultable",
- 'layerList': "Llista de capes",
- 'baseLayerList': "Capes base",
- 'overlaysList': "Overlays",
- 'metadataResults.buttonText': "Resultats",
- 'metadataResults.tooltipTitle': "Resultats",
- 'metadataResults.tooltipText': "Anar a la pàgina de resultats ",
- 'metadataResults.alertTitle': "Resultats",
- 'metadataResults.alertText': "Cap resultat a mostrar",
- 'featureInfoWindow.windowTitle': "Informació d'entitat",
- 'mf.information': "Imprimir",
- 'mf.print.pdfReady': "PDF llest",
- 'loadLayer.loadingMessage': "Carregant capa",
- 'loadLayer.error.title': "Carregar capa",
- 'loadLayer.error.message': "La capa no s'ha pogut carregar",
- 'disclaimer.windowTitle': "Disclaimer",
- 'disclaimer.loading': "Carregant...",
- 'disclaimer.buttonClose': "Tancar",
- 'gazetteerAddressField1Label': "Codi postal",
- 'gazetteerAddressField2Label': "Carrer",
- 'gazetteerAddressField3Label': "Lloc",
- 'gazetteerAddressField4Label': "Municipi",
- 'gazetteerAddressField5Label': "Portal",
- 'searchOptionButton': "Buscar",
- 'resetSearchForm': "Reinicialitzar el formulari de cerca.",
- 'GazetteerWindowTitle': "Buscar adreça",
- 'searchResults': "Resultats de la cerca",
- 'errorTitle': "Error",
- 'SearchOptionLoadFailureMsg': "No hi ha resultats. \n El servei potser no està disponible. \n",
- 'gazetteerTooltipTitle': "Cerca basada en adreça",
- 'gazetteerTooltipText': "Cerca per localització, codi postal, carrer, municipi o lloc.",
- 'SearchOptionNoResults': "No s'ha trobat cap resultat",
- 'zoomlayerTooltipTitle': "Zoom a la capa",
- 'zoomlayerTooltipText': "Usi aquest botó per anar a l'extensió màxima de la capa seleccionada.",
- 'zoomlayer.selectLayerTitle': "Zoom a la capa",
- 'zoomlayer.selectLayerText': "Cap capa seleccionada",
- 'layerStylesWindowTitle': "Estils de capa",
- 'layerStylesPreviewTitle': "Previsualitzar llegenda",
- 'selectStyleButton': "Seleccionar estil",
- 'WMSTimeWindowTitle': "WMS Time",
- 'WMSTimePositionTitle': "Seleccionar una posició en el temps",
- 'WMSTimeMovieTitle': "Executar animació",
- 'wmsTimeUpdateButtonText': "Aplicar",
- 'WMSTimeAnimationCheckbox': "Play a movie loop spanning the last ${steps} time positions",
- 'fullTextSearch': "Cerca completa de text",
- 'keyword': "Paraules clau",
- 'org': "Organització",
- 'altTitle': "Títol alternatiu",
- 'mapTypes': "Tipus de mapa",
- 'rsIdentifier': "Identificador de recurs",
- 'inspireSearchOptions': 'criteris INSPIRE',
- 'inspireannex': 'annex INSPIRE',
- 'inspirerelated': 'Relacionat amb INSPIRE',
- 'inspirerelatedtt': 'Conjunt de dades INSPIRE que informen sobre la conformitat respecte a les especificacions de dades',
- 'inspiretheme': 'temes INSPIRE',
- 'inspireClassificationDataServices': 'INSPIRE classification data services',
- 'serviceType': 'Tipus de servei',
- 'serviceType_discovery': 'Discovery Service (discovery)',
- 'serviceType_download': 'Download Service (download)',
- 'serviceType_view': 'View Service (view)',
- 'serviceType_transformation': 'Transformation Service (transformation)',
- 'serviceType_invoke': 'Invoke Spatial Data Service (invoke)',
- 'serviceType_other': 'Other Services (other)',
- 'similarity': 'Search accuracy',
- 'wkt': 'geomentria WKT',
- 'simpleViewMode': 'Simple view',
- 'spatialSearch': 'Criteris espacials',
- 'mdChangeDate': 'Data d\'actualització de la metadada',
- 'tempExtent': 'Extensió temporal',
- 'hitsPerPage': 'Número per pàgina',
- 'sortBy': 'Ordenar per',
- 'relevance': 'Rellevància',
- 'options': 'Opcions',
- 'title': 'Títol',
- 'changeDate': 'Data d\'actualització',
- 'rating': 'Ràting',
- 'popularity': 'Popularitat',
- 'scaleDesc': 'Escala (desc)',
- 'scaleAsc': 'Escala (asc)',
- 'abstract': 'Resum',
- 'catalogue': 'Catàleg',
- 'group': 'Grup',
- 'chooseGroup': 'Seleccionar un grup',
- 'md': 'Metadada',
- 'tpl': 'Plantilla',
- 'category': 'Categoria',
- 'advTextSearch': 'Opcions avançades de cerca de text',
- 'eitherWords': 'Almenys una de les paraules',
- 'exactPhrase': 'Frase exacta',
- 'allWords': 'Totes les paraules',
- 'withoutWords': 'Sense les paraules',
- 'precise': 'Precisa',
- 'imprecise': 'Imprecisa',
- 'relationType': 'Tipus de relació',
- 'within': 'dins',
- 'touches': 'toca',
- 'crosses': 'travessa',
- 'fullyOutsideOf': 'completament fora',
- 'encloses': 'conté',
- 'overlaps': 'superposa',
- 'intersection': 'intersecció',
- 'nearYou': 'A prop',
- 'from': 'Des de',
- 'to': 'a',
- 'scaleNominator': '1: ',
- 'scale': 'Escala',
- 'digital': 'Digital',
- 'hardCopy': 'Còpia en paper',
- 'download': 'Descarregar',
- 'downloadable': 'Descarregable',
- 'interactive': 'Interactiu',
- 'resourceType': 'Tipus de recurs',
- 'dataset': 'Conjunt de dades',
- 'series': 'Sèrie',
- 'service': 'Servei',
- 'model': 'Catàleg d\'entitats',
- 'spatialRepType': 'Representació espacial',
- 'video': 'Vídeo',
- 'vector': 'Vector',
- 'textTable': 'Text, taula',
- 'tin': 'Tin',
- 'stereoModel': 'Model estèreo',
- 'grid': 'Raster',
- 'kind': 'Tipus',
- 'enterGetCapURL': 'Introdueixi la URL d\'un GetCapabilities per enregistrar un nou servei.',
- 'edit': 'Editar',
- 'duplicate': 'Duplicar',
- 'delete': 'Esborrar',
- 'createChild': 'Crear fill',
- 'privileges': 'Privilegis',
- 'privilegesTT': 'Gestionar els privilegis per a l\'accés públic i per als grups de catàleg.',
- 'categories': 'Categories',
- 'otherActions': 'Altres accions',
- 'permalinkInfo': 'Paste link in email or IM',
- 'view': 'Consultar',
- 'zoomTo': 'Zoom a',
- 'saveXml': 'Salvar com a XML',
- 'exportCsv': 'Exportar (CSV)',
- 'exportZip': 'Exportar (ZIP)',
- 'printSel': 'Exportar (PDF)',
- 'printTT': 'Imprimir. Obrir una nova pàgina per imprimir.',
- 'newOwner': 'Nou propietari',
- 'updateCategories': 'Actualitzar categories',
- 'updatePrivileges': 'Actualitzar privilegis',
- 'noneSelected': 'Cap seleccionat',
- 'none': 'cap',
- 'all': 'tots',
- 'allInPage': 'tots els de la pàgina',
- 'select': 'Seleccionar ',
- 'username': 'usuari',
- 'password': 'contrasenya',
- 'login': 'Connexió',
- 'logout': 'Desconnexió',
- 'administration': 'Administració',
- 'validationReport': 'Informe de validació',
- 'setStatus': 'Estat de la metadada',
- 'status': 'Estat',
- 'updateStatus': 'Actualitzar estat',
- 'currentStatus': ' (current status is ${status})',
- 'enableWorkflow': 'Enable workflow',
- 'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
- 'enableWorkflowStart': 'Metadata status set to draft.',
- 'updateVersion': 'Activar versionat',
- 'addLayerSelection': 'Add layers of selection to the map',
- 'statusTT': 'Canviar l\'estat d\'un registre segons la fase del seu cicle de vida',
- 'setVersioning': 'Versionat de metadades',
- 'versioning': 'Activar versionat',
- 'versioningTT': 'Un cop activat, tots els canvis realitzats a la metadada es guardaran al repositoru SVN',
- 'items': 'ítems',
- 'item': 'ítem',
- 'thumbnails': 'Miniatures',
- 'noimages': 'Cap imatge disponible',
- 'add': 'Afegir',
- 'small': 'Petit',
- 'large': 'Gran',
- 'selectImage': 'Seleccionar una imatge',
- 'selectFile': 'Seleccionar un arxiu',
- 'image': 'Imatge',
- 'uploading': 'Carregant ...',
- 'upload': 'Carregar',
- 'success': 'Èxit',
- 'failure': 'Error',
- 'error': 'Error',
- 'save': 'Salvar',
- 'reset': 'Reinicialitzar',
- 'fileProcessedMsg': ' Arxiu ${res} processat al servidor',
- 'suggestion': 'Suggeriment',
- 'logoSelect': 'Seleccionar un logo',
- 'relatedResources': 'Recursos relacionats',
- 'add-thumbnail': 'Add thumbnail',
- 'add-onlinesrc': 'Add online resource',
- 'add-parent': 'Link to a parent',
- 'add-service': 'Link to a service',
- 'add-dataset': 'Link to a dataset',
- 'add-sources': 'Link to a source dataset',
- 'add-fcats': 'Link to a feature catalog',
- 'add-sibling': 'Link to other resources',
- 'fcats': 'Feature catalog',
- 'thumbnail': 'Overviews',
- 'children': 'Children',
- 'parent': 'Parent metadata',
- 'sibling': 'Other resources',
- 'onlinesrc': 'Online resources',
- 'sources': 'Source datasets',
- 'remove': 'Remove',
- 'linkADocument': 'A document',
- 'linkAMetadata': ' Online resources from an existing record',
- 'linkAResource-': 'Link a resource',
- 'linkAResource-thumbnail': 'Add an overview to the current metadata',
- 'linkAResource-fcats': 'Link a feature catalog to the current metadata',
- 'linkAResource-parent': 'Link a parent metadata record to the current metadata',
- 'linkAResource-dataset': 'Link a dataset to the current metadata',
- 'linkAResource-service': 'Link a service to the current metadata',
- 'linkAResource-sibling': 'Link a resource to the current metadata',
- 'linkAResource-sources': 'Link a source dataset to the current metadata',
- 'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
- 'associationType': 'Association type',
- 'initiativeType': 'Initiative type',
- 'uploadAnImage': 'Upload an image',
- 'UploadError': 'Failed to upload file',
- 'setAThumbnailByURL': 'Link an image with a URL',
- 'setAURL': 'Link a URL',
- 'createLink': 'Crear enllaços ...',
- 'featureCat': 'Catàleg d\'entitats',
- 'serviceMd': 'Metadada de servei',
- 'datasetMd': 'Metadata de conjunt de dades',
- 'parentMd': 'Metadada pare',
- 'updateChildren': 'Actualitzar fills',
- 'records': 'registres',
- 'record': 'registre',
- 'help': 'Ajuda',
- 'publishError': 'La publicació ha fallat.',
- 'outOfMemoryError': 'Error de falta de memoria.',
- 'publishErrorCode': 'Codi d\'error: ',
- 'saveAndCheck': 'Salvar i comprovar',
- 'saveAndClose': 'Salvar i tancar',
- 'cancel': 'Cancel·lar',
- 'layout': 'Maquetació',
- 'collapseAll': 'Col·lapsar totes les seccions',
- 'editAttributes': 'Gestionar attributs',
- 'chooseAType': 'Escollir un tipus',
- 'chooseAView': 'Escollir una vista',
- 'viewMode': 'Mode vista',
- 'errorAndStatusMsg': 'Error. Estat: ${status}, text: ${text}. Intenti-ho de nou.',
- 'mdEditor': 'Editor de metadades',
- 'minorEditTT': 'Do not update timestamp on save',
- 'editing': 'Editant ${title} (${uuid})',
- 'GetCapabilitiesDocumentError': "Error intentant recuperar la informació del servei (document GetCapabilities) de la URL: ",
- 'maxResults': "Número de resultats",
- 'mdTitle': "Títol de la metadada",
- 'keywords': "Paraules clau",
- 'createRelation': "Crear relació",
- 'createIfNotExistButton': "Crear una metadada nova",
- 'getCapabilitiesLayer': "Capes de GetCapabilities",
- 'layerName': "Nom de capa",
- 'searching': "Buscant ...",
- 'perThesaurus': " per tesaurus",
- 'anyThesaurus': "Tots els tesaurus",
- 'addFromThesaurus': 'Add from thesaurus ...',
- 'selectedKeywords': "Paraules clau seleccionades",
- 'foundKeywords': "Paraules clau disponibles",
- 'clear': "Esborrar",
- 'publish': "Publicar",
- 'publishTooltip': "Publicar el conjunt de dades actual al node remot. El conjunt de dades s'actualitzarà en cas que ja sigui present.",
- 'publishSuccess': "Publicació realitzada amb èxit.",
- 'publishLayerAdded': " Capa afegida a la previsualització del mapa.",
- 'unpublish': "Despublicar",
- 'unpublishTooltip': "Esborrar l'actual conjunt de dades del node remot.",
- 'unpublishSuccess': "Despublicació realitzada amb èxit.",
- 'unpublishError': "Error despublicant. ",
- 'check': "Comprovar",
- 'errorDatasetNotFound': "No s'ha trobat el conjunt de dades.",
- 'datasetFound': "S'ha trobat el conjunt de dades i s'ha afegit a la previsualització del mapa ",
- 'checkFailure': "Error al comprovar el conjunt de dades en el node remot.",
- 'addOnlineSourceTitle': "Enllaçar servei a la metadada",
- 'addOnlineSource': "Afegir enllaços",
- 'addOnlineSourceTT': "Afegir una secció de tipus onlinesource a la metadada actual per fer l'enllaç als serveis WMS/WFS/WCS. Si el servei és WMS, la capa es pot mostrar al visor de mapes.",
- 'statusInformation': "Informació de l'estat.",
- 'publishing': "Publicant ...",
- 'mapPreview': "Previsualització del mapa",
- 'selectANode': "Seleccionar un node ...",
- 'geoPublisherWindowTitle': "Geo-publicació: ",
- 'keywordSelectionWindowTitle': "Selecció de paraules clau",
- 'crsSelectionWindowTitle': "Selecció del sistema de coordenades de referència",
- 'linkedMetadataSelectionWindowTitle': "Selecció de la metadada relacionada",
- 'NotOwnerError': "No disposa de privilegis per actualitzar el registre relacionat.",
- 'ServiceUpdateError': "Error durant l'actualització de la metadada de servei",
- 'associateService': "Enllaçar metadades d'un servei",
- 'associateDataset': "Enllaçar metadades d'un conjunt de dades",
- 'logoSelectionWindow': "Esculli un logo",
- 'fileUploadWindow': "Carregar dades o document",
- 'selectedCRS': "Sistemes de coordenades seleccionats",
- 'foundCRS': "Sistemes de coordenades disponibles",
- 'search': "Buscar",
- 'restrictSearchToMap': "Restringir cerca a l'extensió del mapa",
- 'selected': "seleccionat",
- 'selectRegion': "Seleccionar una regió ...",
- 'drawRectangle': "Dibuixar un rectangle",
- 'drawPolygon': "Dibuixar un polígon",
- 'drawPolygonTT': "Clic al botó i després dibuixar un polígon fent clic en el mapa per cada punt. Doble clic per crear l'últim punt del polígon.",
- 'drawCircle': 'Dibuixar cercle',
- 'discovery': 'Descobriment',
- 'visualization': 'Visualització',
- 'when': 'Quan ?',
- 'anyTime': 'A qualsevol moment',
- 'onSelection': 'A la selecció',
- 'adminAction': 'Altres',
- 'newMetadata': 'Nova metadada',
- 'newMetadataTitle': 'Crear una metadada escollint una plantilla i seleccionant un grup',
- 'tplTitle': 'Descripció de la plantilla',
- 'metadatatype': 'Tipus de recurs',
- 'process': 'Processar',
- 'suggestions': 'Suggeriments',
- 'applySelected': 'Aplicar la tasca seleccionada',
- 'processParametersWindow': 'Paràmetres de la tasca',
- 'noSuggestion': 'Cap suggeriment.',
- 'thumbnailUploadWindow': 'Carrega miniatura',
- 'addThumbnail': 'Afegir',
- 'createSmall': 'Crear miniatura petita',
- 'scalingFactor': 'Factor d\'escala',
- 'smallScalingFactor': 'Factor d\'escala',
- 'type': 'Tipus de registre',
- 'clickToClose': 'Clic per tancar',
- 'removeSelected': 'Esborrar els seleccionats',
- 'ownerName': 'Propietari de la metadada',
- 'setPrivileges': 'Definir privilegis',
- 'setBatchPrivileges': 'Overwrite privileges of selected records',
- 'setCategories': 'Definir categories',
- 'massiveOp': 'Operació batch ',
- 'prepareDownload': 'Descarregar arxius',
- 'mdMenu': 'Accions',
- 'deleteRecord': 'Esborrar la metadada ?',
- 'deleteConfirm': 'Està segur que vol esborrar aquesta metadada?',
- 'deleteRecordSuccess': 'Metadada esborrada.',
- 'deleteRecordFailure': 'Error a l\'esborrar la metadada.',
- 'advancedSearchOptions': 'Criteris avançats',
- 'relatedservices': 'Serveis relacionats',
- 'relatedsource': 'Source datasets',
- 'relatedhassource': 'Is used in',
- 'relatedchildren': 'Fills',
- 'relatedsibling': 'Related records',
- 'relatedassociated': 'Related records',
- 'relatedfcats': 'Catàleg d\'entitats relacionat',
- 'relatedhasfeaturecat': 'Conjunt de dades',
- 'relatedsources': 'Source datasets',
- 'getMEF': 'Exportar (ZIP)',
- 'metadataCategories': 'Categories de la metadada',
- 'validityInfo': 'Estat de la validació: ',
- 'lastUpdate': 'LÚltima actualització : ',
- 'importMetadata': 'Importar metadada',
- 'validationStatus': 'Estat de la validació',
- 'valid': 'Vàlid',
- 'notValid': 'No vàlid',
- 'notDetermined': 'Indeterminat',
- 'addToMap': 'Afegir al mapa: ',
- 'map': 'Map',
- 'interactiveMap': 'Interactive map',
- 'staticMap': 'Static map',
- 'downloadLink': 'Descarregar: ',
- 'webLink': 'Enllaç Web: ',
- 'viewKml': 'Obrir a GoogleEarth: ',
- 'layerTree': 'Gestor de capes',
- 'mdResultsLayer': 'Resultats de la cerca',
- 'printLayer': 'Imprimir pàgina',
- 'relatedservices': 'Serveis relacionats',
- 'relatedparent': 'Pare',
- 'relateddatasets': 'Conjunt de dades relacionades',
- 'relatedchildren': 'Fills',
- 'relatedrelated': 'Enllaç al catàleg d\'entitats o al conjunt de dades',
- 'delete19110Relation': 'Esborra relació amb el catàleg d\'entitats',
- 'newWindow': 'Nova finestra',
- 'addAsXLink': 'Afegir un element enllaçat',
- 'contactSelectionWindowTitle': 'Selecció dels contactes',
- 'selectedContacts': 'Contactes seleccionats',
- 'foundContacts': 'Disponible',
- 'contactRole': 'Rol del contacte',
- 'mapNearYou': 'Centrar el mapa a la seva localització',
- 'errorChangeProtocol': 'Esborrar el fitxer carregat abans de canviar el protocol d\'un recurs online.',
- 'resultBy': ' resultat(s) / ',
- 'subTemplateImport': 'Importar un element al directori',
- 'xmlData': 'XML',
- 'minorEdit': 'Modificació menor',
- 'minorEditTT': '',
-
- 'facetMore': '+ Show more',
- 'facetLess': '- Show less',
-
- 'extractorTitle': 'Download data from ',
- 'defineExtractionArea': 'Define extraction area',
- 'chooseALayer': 'Choose a layer',
- 'outputFormat': 'Output format',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service version',
- 'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
-
- // Shortcuts
- 'runASearch': 'Executar una cerca.',
- 'focusOnAny': 'Moure el cursor al camp de cerca de text.',
- 'hideSearchForm': 'Amagar o mostrar el formulari de cerca.',
- 'switchMode': 'Canviar el mode de visualització.',
- 'resetSearchForm': 'Reinicialitzar el formulari de cerca.',
- 'focusOnLogin': 'Col·locar el cursor sobre el formulari de connexió o desconnexió si esteu connectats.',
- 'openAdmin': 'Administrar el catàleg',
- 'displayInfoPanel': 'Mostrar el panell d\'informació.',
- 'displayHelpPanel': 'Mostrar aquesta ajuda.',
-
- 'SelectionWindowTitle': "Seleccionar del directori",
- 'found': 'Registres trobats',
- 'selected': 'Seleccionat',
-
- 'create': 'Crear',
-
- // Feedback
- 'feedbackcontactDetails' : 'les dades de contacte',
- 'feedbacknameInitials' : 'Nom, Inicial (s)',
- 'feedbackmale' : 'masculí',
- 'feedbackfemale' : 'femení',
- 'feedbackposition' : 'funció',
- 'feedbackorganization' : 'Organització',
- 'feedbackphone' : 'telèfon',
- 'feedbackemail' : 'E-mail',
- 'feedbackfeedback': 'realimentació',
- 'feedbackfunction': 'funció',
- 'feedbackquestion': 'Qüestió',
- 'feedbackerror' : 'Error',
- 'feedbackremark' : 'observació',
- 'feedbackcontact' : 'contacte',
- 'feedbackcategory' : 'categoria',
- 'feedbackmetadataContent' : 'Contingut de Metadades',
- 'feedbackdataContent' : 'contingut de les dades',
- 'feedbackserviceContent' : 'contingut dels serveis',
- 'feedbacksupport' : 'Suport',
- 'feedbackmapViewer' : 'Map Viewer',
- 'feedbacksearch' : 'Cercar',
- 'feedbackorganizations' : 'Organitzacions',
- 'feedbackcontentManagement' : 'Content Management',
- 'feedbackmetadataImport' : 'Importació de Metadades',
- 'feedbackmetadataEdit' :'edició de metadades',
- 'feedbackharvesting' : 'collita',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Si no és així',
- 'feedbackremarks' : 'notes',
- 'feedbackmetadataData' : 'Metadades informació',
- 'feedbacktitle' : 'Títol',
- 'feedbackPanelTitle' : 'Amb aquest formulari pot donar la seva opinió sobre metadades, dades i / o serveis.',
- 'feedbacksubmit' : 'Enviar',
- 'feedbackerrorTitle' : 'precaució',
- 'feedbackerrorMsg' : 'No s\'ha pogut durant l\'enviament. Torneu-ho a provar més tard.',
- 'feedbackcancel' : 'Cancel',
- 'feedbackWindowTitle' : 'realimentació',
-
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace': 'Reemplaçar l\'extensió existent',
- 'add-info-from-wmssetExtent': 'Definir l\'extensió',
- 'add-info-from-wmssetAndReplaceExtent': 'Reemplaçar l\'extensió existent',
- 'add-info-from-wmssetCRS': 'Indicar el sistema de coordenades de referència',
- 'add-info-from-wmssetDynamicGraphicOverview': 'Definir la vista predefinida (usant la URL de la petició GetMap)',
- 'add-info-from-wmswmsServiceUrl': 'URL del servei',
- 'linked-data-checkerlinkUrl': 'URL a suprimir',
- 'related-metadata-checkeruuidToRemove': 'Identificador a esborrar',
- 'add-service-info-from-wxssetAndReplaceOperations': 'Reemplaçar operacions existents',
- 'add-service-info-from-wxswxsServiceUrl': 'URL de servei',
-
- // Admin
- 'manageDirectories': 'Gestionar directoris',
- 'directory': 'Directori',
- 'thesaurusManager': 'Gestor de tesaurus',
- 'Theme': 'Tema',
- 'thesaurusFilePath': 'Arxiu de tesaurus (.rdf)',
- 'ThesaurusTitle': 'Nom de tesaurus',
- 'ThesaurusId': 'Thesaurus identifier',
- 'ThesaurusNs': 'Thesaurus namespace',
- 'createThesaurusFromURL': 'a partir d\'una URL',
- 'createThesaurusFromRepository': 'a partir d\'un repositori',
- 'creationMode': 'Crear',
- 'thesaurusFromRepository': 'Tesaurus',
- 'externalThesaurusURL': 'URL',
- 'thesaurusCreation': 'Add a thesaurus',
- 'Type': 'Tipus',
- 'Activated': 'Activat',
- 'emptyThesaurus': 'Nou tesaurus buit',
- 'thesaurusFromFile': 'A partir d\'un arxiu local',
- 'thesaurusFromURL': 'A partir d\'un arxiu remot (URL)',
- 'id': 'Identificador',
- 'mdIdentifier': 'Record internal identifier: ',
- 'mdUUID': 'Record unique identifier: ',
- 'label': 'Etiqueta',
- 'definition': '-',
- 'xmin': 'X min',
- 'ymin': 'Y min',
- 'xmax': 'X max',
- 'ymax': 'Y max',
- 'newLabel': 'Etiqueta',
- 'newDefinition': 'Definició',
- 'selDirectoryTT': 'Seleccioni un tipus de directori. Un directori agrupa tots els elements que tenen la mateixa arrel (per exemple. gmd:CI_ResponsibleParty és un directori de contactes)',
- 'privTplElTT': 'Gestionar els privilegis de la selecció actual.',
- 'addTplElTT': 'Afegir un element a partir d\'un fragment d\'XML. El directori destí es basa en l\'element arrel (per exemple. gmd:CI_ResponsibleParty).',
- 'copyTplElTT': 'Crear un nou element en el directori a partir de l\'element seleccionat.',
- 'delTplElTT': 'Esborrar la selecció del directori.',
- 'language': 'Idioma',
- 'to-iso19139-keyword': 'Text mode',
- 'to-iso19139-keyword-as-xlink': 'Linked mode',
- 'to-iso19139-keyword-with-anchor': 'Anchor mode',
-
- 'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
- 'linklabel-application/vnd.ogc.wmc': 'Interactive map',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Add to map',
- 'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
- 'linklabel-application/zip': 'Download',
- 'linklabel-application/octet-stream': 'Download',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
- 'linklabel-application/x-compressed': 'Download',
- 'linklabel-text/html': 'Web link',
- 'linklabel-text/plain': 'Web link',
- 'linklabel-image/png': 'Image link',
- 'linklabel-image/jpeg': 'Image link',
- 'linklabel-': 'Link',
-
- //tabbed search
- 'Home': "Pàgina d'inici",
- 'Map': "Mapa",
- 'Poweredby': "Creat per",
- 'About': "Sobre",
- 'org': "Organització",
- 'keyword': "paraula clau",
- 'when': "quan",
- 'advancedSearchOptions': "Opcions de cerca avançades",
- 'hitsPerPage': "Resultats per pàgina",
- 'Searchforspatialdataon': "Buscar les dades espacials sobre",
- 'search': "cerca",
- 'fullTextSearch': "Cerca per text complet",
- 'reset': "reinicialitzar",
- 'resetSearchForm': "Reinicialitzar el formulari de cerca",
- 'Advanced': "Avançat",
- 'newWindow': "Nova finestra",
- 'mdEditor': "Editor de metadades",
- 'List': "Llista",
- 'insertMode': 'Insert Mode',
- 'fileUpload': 'File upload',
- 'copyPaste': 'Copy/Paste',
- 'fileType': 'File Type',
- 'singleFile' :'Single File (XML, SLD, WMC...)',
- 'mefFile': 'MEF file',
- 'importActions': 'Import actions',
- 'noActionOnImport': 'No action on import',
- 'overwriteMD': 'Overwrite metadata with same UUID' ,
- 'generateUuid': 'Generate UUID for inserted metadata',
- 'styleSheet': 'StyleSheet',
- 'validate': 'Validate',
- 'assignCurCat': 'Assign to current catalog',
- 'metadata': 'Metadata',
- 'mdInsertResults': 'Results of metadata import',
- 'mdInsertSuccess': 'Metadata inserted with',
- 'mdInsertFailure': 'Error while inserting metadata : ',
- 'mdRecordsProcessed': 'Total number of metadata records processed',
- 'mdRecordsAdded': 'Total number of metadata records added',
- 'chooseCategory': 'Choose a category',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.ca,GeoNetwork.Lang.ca);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/de.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/de.js
deleted file mode 100644
index 9433daad432..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/de.js
+++ /dev/null
@@ -1,690 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.de = {
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'harvestingAdmin': 'Harvesting',
- 'filterGroup': 'Filter group ...',
- 'checkAllOrNone': 'Check all/none',
- 'updateUserInfo': 'Edit my profile',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Datum Typ',
- 'creationDate': 'Erstellungsdatum',
- 'modificationDate': 'Änderungsdatum',
- 'publicationDate': 'Veröffentlichung',
- 'previousPage':'Zur vorherigen Seite',
-'nextPage':'Zur nächsten Seite',
-'upInPage':'Blättern Sie nach oben in den Ergebnissen',
-'downInPage':'Blättern Sie nach unten in den Ergebnissen',
-'example':'Beispiel',
-'helper':'Vorschlag',
-'toggleLayerManager':'Kartenebenen-Manager anzeigen',
-'tagName':'Elementname',
-'enableTooltip':'Tooltips aktivieren, um mehr Informationen zu den Deskriptoren zu bekommen.',
-'connectIssue':'Katalog Verbindungsproblem',
-'connectIssueMsg':'Error 404. Keine Verbindung zum Katalog unter dieser URL',
-'featureInfoTooltipTitle':'Objekteigenschaften anzeigen',
-'featureInfoTooltipText':'Klicken Sie in die Karte um Informationen von allen aktuell sichtbaren Kartenebenen abzufragen.',
-'zoomToMaxExtentTooltipTitle':'Gesamte Ausdehnung',
-'zoomToMaxExtentTooltipText':'Verwenden Sie diese Taste um auf die gesamte Ausdehnung der Karte zu zoomen.',
-'zoominTooltipTitle':'Vergrößern',
-'zoominTooltipText':'Ziehen Sie in der Karte ein Rechteck auf um die Karte auf diesen Bereich zu vergrößern. Ein einfacher Klick vergrößert die Karte um Faktor 2.',
-'zoomoutTooltipTitle':'Verkleinern',
-'zoomoutTooltipText':'Ziehen Sie in der Karte ein Rechteck auf um die Karte auf diesen Bereich zu verkleinern.',
-'dragTooltipTitle':'Karte verschieben',
-'dragTooltipText':'Verschieben Sie die Karte mit der linke Maustaste.',
-'previousTooltipTitle':'Zu vorheriger ausdehnung',
-'previosTooltipText':'Klicken Sie auf diese Taste um zur vorherigen Ausdehnung der Karte zurueckzukehren.',
-'nextTooltipTitle':'Zu nächster Ausdehnung',
-'nextTooltipText':'Klicken Sie diese Taste um zur nächsten Ausdehnung der Karte zur gelangen.',
-'featureInfoTitle':'Objekteigenschaften anzeigen',
-'layerManagerTabTitle':'Kartenebenen verwalten',
-'legendTabTitle':'Legende',
-'scaleTitle':'Skalieren',
-'xTitle':'X',
-'yTitle':'Y',
-'projectionTitle':'Projektion',
-'FeatureInfoNotQueryable':'Keine abfragbare Kartenebene vorhanden',
-'WMSBrowserTab1':'Auswählen',
-'WMSBrowserTab3':'Extern',
-'WMSBrowserPreviewTitle':'Vorschau der Kartenebene',
-'WMSBrowserAddButton':'Hinzufügen',
-'WMSBrowserDuplicateMsg':'Kartenebene existiert bereits in der Karte',
-'WMSBrowserPreviewWaitMsg':'Lade Vorschaubild',
-'WMSBrowserConnectButton':'Verbinden',
-'WMSBrowserConnectError':'Fehler während dem Verbindungsaufbau zum Web Map Service bitte URL überprüfen.',
-'infoTitle':'Information',
-'mf.print.mapTitle':'Titel',
-'mf.print.comment':'Kommentar',
-'mf.print.dpi':'Auflösung',
-'mf.print.scale':'Skalierung',
-'mf.print.rotation':'Winkel',
-'mf.print.resetPos':'Zurücksetzen',
-'mf.print.print':'Drucken',
-'mf.print.generatingPDF':'PDF wird erzeugt',
-'mf.print.unableToPrint':'Druckvorgang fehlgeschlagen bitte später nochmals probieren',
-'mf.error':'Fehler',
-'selectExtentTooltipTitle':'Ausdehnung wählen',
-'selectExtentTooltipText':'Ausdehnung für Katalogsuche wählen',
-'printTooltipTitle':'Drucken',
-'printTooltipText':'Aktuelle Karte drucken',
-'savewmcTooltipTitle':'Web-Map-Context speichern',
-'savewmcTooltipText':'Web-Map-Context der aktuellen Karten in eine Datei abspeichern.',
-'saveWMCFile.windowTitle':'Web-Map-Context speichern',
-'saveWMCFile.errorSaveWMC':'Web-Map-Context konnte nicht gespeichert werden',
-'loadwmcTooltipTitle':'Web-Map-Context laden',
-'loadwmcTooltipText':'Web-Map-Context von einer Datei in die aktuelle Karte laden.',
-'selectWMCFile.windowTitle':'Web-Map-Context laden',
-'selectWMCFile':'Web-Map-Context Datei auswählen',
-'selectWMCFile.waitLoadingWMC':'Laden Web-Map-Context',
-'selectWMCFile.loadButtonText':'Laden',
-'selectWMCFile.mergeButtonText':'Zusammenfassen',
-'selectWMCFile.errorLoadingWMC':'Web-Map-Context konnte nicht geladen werden',
-'opacityButtonText':'Deckkraft',
-'opacityWindowTitle':'Deckkraft',
-'metadataButtonText':'Metadaten',
-'removeButtonText':'Entfernen',
-'addWMSButtonText':'WMS hinzufügen',
-'addWMSWindowTitle':'WMS hinzufügen',
-'layerInfoPanel.windowTitle ':'Metadaten der Kartenebene',
-'layerInfoPanel.titleField ':'Titel',
-'layerInfoPanel.descriptionField ':'Beschreibung',
-'layerInfoPanel.queryableField ':'Abfragbar',
-'layerList ':'Kartenebenen',
-'baseLayerList':'Basis Kartenbene',
-'metadataResults.buttonText ':'Metadaten Ergebnisse',
-'metadataResults.tooltipTitle ':'Metadaten Ergebnisse',
-'metadataResults.tooltipText ':'Gehe zur Metadaten Ergebnis Seite',
-'metadataResults.alertTitle ':'Metadaten Ergebnisse',
-'metadataResults.alertText ':'Keine Metadaten Ergebnisse vorhanden',
-'featureInfoWindow.windowTitle':'Objekteigenschaften anzeigen',
-'mf.information':'Drucken',
-'mf.print.pdfReady':'PDF bereit',
-'loadLayer.loadingMessage':'Kartenebene Ladevorgang',
-'loadLayer.error.title':'Kartenebene Ladevorgang Fehlermeldung',
-'loadLayer.error.message':'Kartenebene konnte nicht geladen werden',
-'disclaimer.windowTitle':'Disclaimer',
-'disclaimer.loading':'Disclaimer Ladevorgang...',
-'disclaimer.buttonClose':'Schließen',
-'gazetteerAddressField1Label':'Postleitzahl',
-'gazetteerAddressField2Label':'Straße',
-'gazetteerAddressField3Label':'Ort',
-'gazetteerAddressField4Label':'Gemeinde',
-'gazetteerAddressField5Label':'Hausnummer',
-'searchOptionButton':'Suche',
-'GazetteerWindowTitle':'Adresssuche',
-'searchResults':'Suchergebnis',
-'errorTitle':'Fehler',
-'SearchOptionLoadFailureMsg':'Kein Ergebnis vorhanden.\n Service möglicherweise nicht erreichbar.\n',
-'gazetteerTooltipTitle':'Adresssuche',
-'gazetteerTooltipText':'Ort- Postleitzahl- Straßenname- Gemeinde- oder Ortssuche.',
-'SearchOptionNoResults':'Keine Ergebnisse gefunden',
-'zoomlayerTooltipTitle':'Kartenebne vergrößern',
-'zoomlayerTooltipText':'Verwenden Sie diese Taste um die ausgewählte Kartenebene in ihrer gesamten Ausdehnung zu sehen.',
-'zoomlayer.selectLayerTitle':'Kartenebene vergrößern',
-'zoomlayer.selectLayerText':'Keine Kartenebene ausgewählt',
-'layerStylesWindowTitle':'Stil der Kartenebene',
-'layerStylesPreviewTitle':'Vorschau Legende',
-'selectStyleButton':'Wähle Stil',
-'WMSTimeWindowTitle':'WMS Time',
-'WMSTimePositionTitle':'Wähle einen Zeitpunkt',
-'WMSTimeMovieTitle':'Animation abspielen',
-'wmsTimeUpdateButtonText':'Anwenden',
-'WMSTimeAnimationCheckbox':'Film abspielen mit den letzten ${steps} Zeitpunkten',
-'fullTextSearch':'Volltextsuche',
-'keyword':'Schlagwort',
-'org':'Organisation',
-'mapTypes':'Map types',
-'rsIdentifier':'Resource identifier',
-'inspireSearchOptions':'INSPIRE criteria',
-'inspireannex':'INSPIRE annex',
-'inspirerelated':'Bezug zu INSPIRE',
-'inspirerelatedtt':'INSPIRE Datensatz mit Bericht über die Konformität in Bezug auf die Daten Spezifikation',
-'inspiretheme':'INSPIRE Thema',
-'inspireClassificationDataServices':'INSPIRE Einstufung Datendienste',
-'serviceType':'Service-Typ',
-'serviceType_discovery':'Discovery Service (Discovery)',
-'serviceType_download': 'Download Service (download)',
-'serviceType_view':'View Service (Ansicht)',
-'serviceType_transformation':'Transformation Service (Transformation)',
-'serviceType_invoke':'Invoke Spatial Data Service (aufrufen)',
-'serviceType_other':'Sonstige Dienstleistungen (sonstige)',
-'similarity':'Suche Genauigkeit',
-'wkt':'WKT-Geometrie',
-'simpleViewMode':'Einfache Ansicht',
-'spatialSearch':'Räumliche Kriterien',
-'mdChangeDate':'Metadaten Änderungsdatum',
-'tempExtent':'Zeitlicher Umfang',
-'hitsPerPage':'Treffer pro Seite',
-'sortBy':'Sortieren nach',
-'relevance':'Relevanz',
-'options':'Optionen',
-'title':'Titel',
-'changeDate':'Datum ändern',
-'rating':'Bewertung',
-'popularity':'Popularität',
-'scaleDesc':'Maßstab (ab)',
-'scaleAsc':'Msßstab (auf)',
-'abstract':'Kurzbeschreibung',
-'catalogue':'Katalog',
-'group':'Gruppe',
-'chooseGroup':'Wählen Sie eine Gruppe',
-'md':'Metadaten',
-'tpl':'Vorlage',
-'category':'Kategorie',
-'advTextSearch':'Erweiterte Suchmöglichkeiten',
-'eitherWords':'Eines der Wörter',
-'exactPhrase':'Exakter Ausdruck',
-'allWords':'Alle Worte',
-'withoutWords':'Ohne diese Wörter',
-'precise':'Präzise',
-'imprecise':'Ungenau',
-'relationType':'Relation',
-'within':'innerhalb',
-'touches':'berühren',
-'crosses':'kreuzen',
-'fullyOutsideOf':'vollständig außerhalb',
-'encloses':'umschließen',
-'overlaps':'überschneiden',
-'intersection':'kreuzen',
-'nearYou':'In Ihrer Nähe',
-'from':'von',
-'to':'bis',
-'scaleNominator':'1',
-'scale':'Maßstab',
-'digital':'Digital',
-'hardCopy':'Hardcopy',
-'download':'Herunterladen',
-'downloadable':'Herunterlandbar',
-'interactive':'Interaktiv',
-'resourceType':'Ressourcentyp',
-'dataset':'Datensatz',
-'series':'Serie',
-'service':'Service',
-'spatialRepType':'Räumliche Darstellung',
-'video':'Video',
-'vector':'Vektor',
-'textTable':'Texttabelle',
-'tin':'Tin',
-'stereoModel':'Stereo-Modell',
-'grid':'Gitter',
-'kind':'Art',
-'enterGetCapURL':'Geben Sie eine URL GetCapabilities um einen neuen Dienst zu registrieren.',
-'edit':'Bearbeiten',
-'duplicate':'Duplizieren',
-'delete':'Löschen',
-'createChild':'Erstellen Sie untergeordnete',
-'privileges':'Rechte',
-'categories':'Kategorien',
-'otherActions':'Andere Aktionen',
-'view':'Anzeigen',
-'zoomTo':'Zoom auf',
-'saveXml':'Speichern als XML',
-'exportCsv':'Export (CSV)',
-'exportZip':'Export (ZIP)',
-'printSel':'Export (PDF)',
-'printTT':'Drucken. Öffnen Sie eine neue Seite zum Drucken.',
-'newOwner':'Neuer Eigentümer',
-'updateCategories':'Kategorien Aktualisieren',
-'updatePrivileges':'Rechte Aktualisieren',
-'noneSelected':'Nichts ausgewählt',
-'none':'keiner',
-'all':'alle',
-'allInPage':'auf einer Seite',
-'select':'Wählen',
-'username':'Benutzername',
-'password':'Kennwort',
-'login': 'Sign in',
-'logout': 'Sign out',
-'administration':'Verwaltung',
-'validationReport':'Validation Report',
-'status':'Status',
-'updateStatus': 'Update status',
-'currentStatus': ' (current status is ${status})',
-'enableWorkflow': 'Enable workflow',
-'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
-'enableWorkflowStart': 'Metadata status set to draft.',
-'addLayerSelection': 'Add layers of selection to the map',
-'items':'Artikel',
-'item':'Artikel',
-'thumbnails':'Thumbnails',
-'noimages':'Keine Bilder zum anzeigen',
-'add':'Hinzufügen',
-'small':'Klein',
-'large':'Groß',
-'selectImage':'Wählen Sie ein Bild',
-'selectFile':'Wählen Sie eine Datei',
-'image':'Bild',
-'uploading':'Hochladen von ...',
-'upload':'Laden',
-'success':'Erfolg',
-'failure':'Scheitern',
-'error':'Fehler',
-'save':'Speicher',
-'reset':'Zurücksetzen',
-'fileProcessedMsg':'Verarbeitete Datei $ {res} auf dem Server',
-'suggestion':'Vorschlag',
-'logoSelect':'Wählen Sie ein Logo',
-'relatedResources':'Verwandte Ressourcen',
-'add-thumbnail': 'Add thumbnail',
-'add-onlinesrc': 'Add online resource',
-'add-parent': 'Link to a parent',
-'add-service': 'Link to a service',
-'add-dataset': 'Link to a dataset',
-'add-sources': 'Link to a source dataset',
-'add-fcats': 'Link to a feature catalog',
-'add-sibling': 'Link to other resources',
-'fcats': 'Feature catalog',
-'thumbnail': 'Overviews',
-'children': 'Children',
-'parent': 'Parent metadata',
-'sibling': 'Other resources',
-'onlinesrc': 'Online resources',
-'sources': 'Source datasets',
-'remove': 'Remove',
-'linkADocument': 'A document',
-'linkAMetadata': ' Online resources from an existing record',
-'linkAResource-': 'Link a resource',
-'linkAResource-thumbnail': 'Add an overview to the current metadata',
-'linkAResource-fcats': 'Link a feature catalog to the current metadata',
-'linkAResource-parent': 'Link a parent metadata record to the current metadata',
-'linkAResource-dataset': 'Link a dataset to the current metadata',
-'linkAResource-service': 'Link a service to the current metadata',
-'linkAResource-sibling': 'Link a resource to the current metadata',
-'linkAResource-sources': 'Link a source dataset to the current metadata',
-'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
-'associationType': 'Association type',
-'initiativeType': 'Initiative type',
-'uploadAnImage': 'Upload an image',
-'UploadError': 'Failed to upload file',
-'setAThumbnailByURL': 'Link an image with a URL',
-'setAURL': 'Link a URL',
-'createLink':'Verknüpfungen erstellen ...',
-'featureCat':'Feature-Katalog',
-'serviceMd':'Service-Metadaten',
-'datasetMd':'Datansatz Metadaten',
-'parentMd':'Eltern-Metadaten',
-'updateChildren':'Kinder Aktualisieren',
-'records':'Aufzeichnungen',
-'record':'Aufzeichnung',
-'recordsFound': ' record(s) found',
-'help':'Hilfe',
-'publishError':'Veröffentlichung fehlgeschlagen.',
-'outOfMemoryError':'Nicht genügend Speicher verfügbar.',
-'publishErrorCode':'Fehlercode',
-'saveAndCheck':'Speichern und überprüfen',
-'saveAndClose':'Speichern und schließen',
-'cancel':'Abbrechen',
-'layout':'Layout',
-'collapseAll':'Alle Abschnitte ausblenden',
-'editAttributes':'Verwalten von Attributen',
-'chooseAType':'Wählen Sie einen Typ',
-'chooseAView':'Wählen Sie eine Ansicht',
-'viewMode':'Modus anzeigen',
-'errorAndStatusMsg':'Fehler. Status ${text}. Versuchen Sie es noch einmal.,',
-'mdEditor':'Metadaten-Editor',
-'minorEditTT':'Zeitstempel beim Speichern nicht aktualisieren',
-'editing':'Bearbeiten von $ {title} ($ {uuid})',
-'GetCapabilitiesDocumentError':'Fehler beim Laden Service GetCapabilities Dokument von URL',
-'maxResults':'Anzahl der Ergebnisse',
-'mdTitle':'Metadaten Titel',
-'keywords':'Schlagwörter',
-'createRelation':'Relation erstellen',
-'createIfNotExistButton':'Erstellen Sie einen neuen Metadatensatz',
-'getCapabilitiesLayer':'GetCapabilities Kartenebene',
-'layerName':'Namen der Kartenebene',
-'searching':'Suche ...',
-'perThesaurus':'pro Thesaurus',
-'anyThesaurus':'Jeder Thesaurus',
-'addFromThesaurus': 'Add from thesaurus ...',
-'selectedKeywords':'Ausgewählte Schlagwörter',
-'foundKeywords':'Verfügbare Schlagwörter',
-'clear':'Löschen',
-'publish':'Veröffentlichen',
-'publishTooltip':'Veröffentlichen Sie aktuelle Datenbestand auf Remote-Knoten. Wenn der Datensatz bereits auf diesem Knoten veröffentlicht wurde, wird er aktualisiert.',
-'publishSuccess':'Erfolgreiche Veröffentlichung.',
-'publishLayerAdded':'Kartenebene zur Kartenvorschau hinzugefügt.',
-'unpublish':'Veröffentlichung zurücknehmen',
-'unpublishTooltip':'Entfernen Sie die aktuellen Datensatz aus Remote-Knoten.',
-'unpublishSuccess':'Veröffentlichung erfolgreich zurückgenommen.',
-'unpublishError':'Veröffentlichung konnte nicht zürckgenommen werden.',
-'check':'Überprüfen',
-'errorDatasetNotFound':'Datensatz nicht gefunden.',
-'datasetFound':'Datensatz gefunden und zur Kartenvorschay hinzugefügt.',
-'checkFailure':'Datensatz auf Remote-Knoten kinnte nicht überprüft werden.',
-'addOnlineSourceTitle':'Link-Service für Metadaten',
-'addOnlineSource':'Links hinzufügen',
-'addOnlineSourceTT':'Fügen Sie dem aktuellen Metadaten-Datensatz einen onlinesource Abschnitt hinzu, der auf die WMS/WFS/WCS Dienste verweist. Wenn der Dienst ist ein WMS ist, kann die Kartenebene in der Karte dargestellt werden.',
-'statusInformation':'Statusinformationen.',
-'publishing':'Wird veröffentlich ...',
-'mapPreview':'Karten-Vorschau',
-'selectANode':'Wählen Sie einen Knoten ...',
-'geoPublisherWindowTitle':'Geo-Veröffentlichung',
-'keywordSelectionWindowTitle':'Schlagwörter wählen',
-'crsSelectionWindowTitle':'Koordinatenreferenzsystem wählen',
-'linkedMetadataSelectionWindowTitle':'Verwandte Metadaten wählen',
-'NotOwnerError':'Sie haben keine Berechtigung, um diese verwandten Datensatz zu aktualisieren.',
-'ServiceUpdateError':'Fehler bei der Service-Metadaten-Update',
-'associateService':'Link-Service-Metadaten',
-'associateDataset':'Link-Datensatz-Metadaten',
-'logoSelectionWindow':'Wählen Sie ein Logo',
-'fileUploadWindow':'Hochladen von Daten oder Dokumenten',
-'selectedCRS':'Ausgewählte Koordinatensysteme',
-'foundCRS':'Verfügbare Koordinatensysteme',
-'search':'Suche',
-'restrictSearchToMap':'Suche auf Ausdehnung der Karte begrenzen',
-'selected':'ausgewählt',
-'selectRegion':'Wählen Sie eine Region ...',
-'drawRectangle':'Rechteck zeichnen',
-'drawPolygon':'Polygon zeichenen',
-'drawPolygonTT':'Klicken Sie auf die Schaltfläche und zeichnen Sie jeden Punkt eines Polygons durch Klicken auf die Karte. Doppelklicken Sie um den letzten Punkt zu zeichnen.',
-'drawCircle':'Kreis zeichnen',
-'discovery':'Entdecken',
-'visualization':'Visualisierung',
-'when':'Wann?',
-'anyTime':'Jederzeit',
-'onSelection':'Nach Auswahl',
-'adminAction':'Andere',
-'newMetadata':'Neue Metadaten',
-'model': 'Feature catalogue',
-'newMetadataTitle': 'Create a metadata by choosing a template and selecting one group',
-'tplTitle': 'Template description',
-'metadatatype': 'Ressource type',
-'process':'Prozess',
-'suggestions':'Vorschläge',
-'applySelected':'Übernehme Ausgewähltes',
-'processParametersWindow':'Task-Parameter',
-'noSuggestion':'Kein Vorschlag.',
-'thumbnailUploadWindow':'Thumbnail hochladen',
-'addThumbnail':'Hinzufügen',
-'createSmall':'Neues Thumbnail erstellen',
-'scalingFactor':'Skalierungsfaktor',
-'smallScalingFactor':'Kleine Skalierungsfaktor',
-'type':'Datensatzart',
-'clickToClose':'Klicken um zu Schließen',
-'removeSelected':'Auswahl entfernen',
-'ownerName':'Metadatensatz Besitzer',
-'setPrivileges':'Rechte festlegen',
-'setBatchPrivileges': 'Overwrite privileges of selected records',
-'setCategories':'Kategorien festlegen',
-'massiveOp':'Batch-Betrieb',
-'prepareDownload':'Herunterladen von Dateien',
-'mdMenu':'Aktionen',
-'deleteRecord':'Löschen der Metadaten?',
-'deleteConfirm':'Sind Sie sicher, diese Metadaten Datensatz wirklich löschen?',
-'deleteRecordSuccess':'Metadaten gelöscht.',
-'deleteRecordFailure':'Fehler beim Löschen der Metadaten.',
-'advancedSearchOptions':'Erweiterte Kriterien',
-'relatedservices':'Related Service',
-'relatedsource': 'Source datasets',
-'relatedhassource': 'Is used in',
-'relatedchildren':'Kinder',
-'relatedsibling': 'Related records',
-'relatedassociated': 'Related records',
-'relatedfcats':'In Verbindung stehende Feature-Katalog',
-'relatedhasfeaturecat':'Datensätze',
-'relatedsources':'Quelldatensätze',
-'getMEF':'Export (ZIP)',
-'metadataCategories':'Metadaten-Kategorien',
-'validityInfo':'Validations-Status',
-'lastUpdate':'Letzte Aktualisierung',
-'importMetadata':'Import von Metadaten',
-'validationStatus':'Validation Status',
-'valid':'Gültig',
-'notValid':'Nicht gültig',
-'notDetermined':'Nicht bestimmt',
-'addToMap':'Zur Karte hinzufügen',
-'map': 'Map',
-'interactiveMap': 'Interactive map',
-'staticMap': 'Static map',
-'downloadLink':'Herunterladen',
-'webLink':'Weblink',
-'viewKml':'Mit GoogleEarth öffnen',
-'layerTree':'Kartenebenen-Manager',
-'mdResultsLayer':'Suchergebnisse',
-'printLayer':'Seite drucken',
-'relatedservices':'Zugehörige Dienste',
-'relatedparent':'Elternteil',
-'relatedsibling': 'Related records',
-'relateddatasets':'Ähnliche Datensätze',
-'relatedchildren':'Kinder',
-'relatedrelated':'Feature-Katalog / Datensatz Link',
-'delete19110Relation':'Entferne Feature-Katalog Relation',
-'newWindow':'Neues Fenster',
-'addAsXLink':'Als verknüpftes Element hinzufügen',
-'contactSelectionWindowTitle':'Kontakt Auswahl',
-'selectedContacts':'Ausgewählte Kontakte',
-'foundContacts':'Verfügbar',
-'contactRole':'Kontakt-Rolle',
-'mapNearYou':'Karten auf Ihren Standort zentrieren',
-'errorChangeProtocol':'Entfernen Sie die hochgeladene Datei vor dem Ändern des Protokolls einer Online-Ressource.',
-'resultBy':'Ergebnis(se) /',
-'subTemplateImport':'Directory-Eintrag Import',
-'xmlData':'XML',
-'minorEdit':'Kleine Änderung',
-'minorEditTT':'',
-
-// Shortcuts
-'runASearch':'Suchen ausführen.',
-'focusOnAny':'Volltextsuche Feld vorauswählen.',
-'hideSearchForm':'Suchformular ein-/ausblenden.',
-'switchMode':'Visualisierung Modus ein-/ausblenden.',
-'resetSearchForm':'Suchformular zurücksetzen.',
-'focusOnLogin':'Wähle Login-Formular aus um auf die Katalogverwaltung zuzugreifen oder melden Sie sich ab, wenn sie bereits angemeldet sind',
-'openAdmin':'Zur Verwaltung',
-'displayInfoPanel':'Informationspanel anzeigen.',
-'displayHelpPanel':'Hilfe anzeigen.',
-'SelectionWindowTitle':'Wählen Sie aus dem Verzeichnis',
-'found':'Einträge gefunden',
-'selected':'Ausgewählt',
-'create':'Erstellen',
-
- // Feedback
- 'feedbackcontactDetails' : 'Kontaktdaten',
- 'feedbacknameInitials' : 'Name, Initial(en)',
- 'feedbackmale' : 'männlich',
- 'feedbackfemale' : 'weiblich',
- 'feedbackposition' : 'Funktion',
- 'feedbackorganization' : 'Organisation',
- 'feedbackphone' : 'Telefon',
- 'feedbackemail' : 'E-mail',
- 'feedbackfeedback': 'Rückkopplung',
- 'feedbackfunction': 'Funktion',
- 'feedbackquestion': 'Frage',
- 'feedbackerror' : 'Fehler',
- 'feedbackremark' : 'Bemerkung',
- 'feedbackcontact' : 'Kontakt',
- 'feedbackcategory' : 'Kategorie',
- 'feedbackmetadataContent' : 'Metadaten-Inhalt',
- 'feedbackdataContent' : 'Dateninhalt',
- 'feedbackserviceContent' : 'Service Content',
- 'feedbacksupport' : 'Unterstützung',
- 'feedbackmapViewer' : 'Map Viewer',
- 'feedbacksearch' : 'Suchen',
- 'feedbackorganizations' : 'Organisationen',
- 'feedbackcontentManagement' : 'Content Management',
- 'feedbackmetadataImport' : 'Importieren von Metadaten',
- 'feedbackmetadataEdit' :'Metadaten bearbeiten',
- 'feedbackharvesting' : 'Ernte',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Sonst',
- 'feedbackremarks' : 'Aufzeichnungen',
- 'feedbackmetadataData' : 'Metadaten-Informationen',
- 'feedbacktitle' : 'Titel',
- 'feedbackPanelTitle' : 'Mit diesem Formular können Sie Feedback zu Metadaten, Daten und / oder Dienstleistungen.',
- 'feedbacksubmit' : 'Senden',
- 'feedbackerrorTitle' : 'Achtung',
- 'feedbackerrorMsg' : 'Ein Fehler beim Senden. Bitte versuchen Sie es später erneut.',
- 'feedbackcancel' : 'Kündigen',
- 'feedbackWindowTitle' : 'Rückkopplung',
-
-// Suggestion processing
-'add-extent-from-geokeywordsreplace':'Vorhandene Ausdehnung ersetzen',
-'add-info-from-wmssetExtent':'Ausdehnung festlegen',
-'add-info-from-wmssetAndReplaceExtent':'Vorhandene Ausdehnung ersetzen',
-'add-info-from-wmssetCRS':'Koordinatenreferenzsystem festlegen',
-'add-info-from-wmssetDynamicGraphicOverview':'Grafische Übersicht festelegen (mit GetMap Anfrage-URL)',
-'add-info-from-wmswmsServiceUrl':'Service-URL',
-'linked-data-checkerlinkUrl':'URL um zu entfernen',
-'related-metadata-checkeruuidToRemove':'Identifier um zu entfernen',
-'add-service-info-from-wxssetAndReplaceOperations':'Vorhandene Operationen ersetzen',
-'add-service-info-from-wxswxsServiceUrl':'Service-URL',
-
-// Admin
-'manageDirectories ':'Verwalten von Verzeichnissen',
-'directory':'Verzeichnis',
-'thesaurusManager':'Thesaurus-Manager',
-'Theme':'Thema',
-'thesaurusFilePath':'Thesaurus-Datei (. RDF)',
-'ThesaurusName':'Thesaurus-Namen',
-'createThesaurusFromURL':'von URL',
-'createThesaurusFromRepository':'von Thesaurus-Repository',
-'creationMode':'Erstellen',
-'thesaurusFromRepository':'Thesaurus',
-'externalThesaurusURL':'URL',
-'thesaurusCreation':'Thesaurus hinzufügen',
-'Type':'Typ',
-'Activated':'Aktiviert',
-'emptyThesaurus':'Neuer leerer Thesaurus',
-'thesaurusFromFile':'Von der lokaler Datei',
-'thesaurusFromURL':'Von Remote-Datei (URL)',
-'id':'Identifier',
-'mdIdentifier': 'Record internal identifier: ',
-'mdUUID': 'Record unique identifier: ',
-'label':'Beschriftung',
-'definition':'-',
-'xmin':'X min',
-'ymin':'Y min',
-'xmax':'X max',
-'ymax':'Y max',
-'newLabel':'Beschriftung',
-'newDefinition':'Definition',
-'selDirectoryTT':'Verzeichnisart auswählen. In einer Verzeichnis-Gruppe haben alle Elemente den gleichen Wurzel-Element-Namen (z.B. ist gmd:CI_ResponsibleParty ein Kontakt-Verzeichnis)',
-'privTplElTT':'Berechtigungen für die aktuelle Auswahl verwalten.',
-'addTplElTT':'Ein Element aus einer XML-Fragment in ein Verzeichnis einfügen. Das Zielverzeichnis basiert auf der Root-Element-Namen (z.B. gmd:CI_ResponsibleParty).',
-'copyTplElTT':'Erstellen Sie einen neuen Eintrag in das Verzeichnis aus der aktuellen Auswahl.',
-'delTplElTT': 'Ausgewählte Eintrag aus dem Verzeichnis entfernen.',
-'Home':'Home',
-'Map':'Karte',
-'Poweredby':'Bereitgestellt von',
-'About':'Uber',
-'org':'Organisation',
-'altTitle':'Alternative titel',
-'When':'Wenn',
-'Where':'Wo',
-'What':'Wass',
-'Searchforspatialdataon':'Suche nach Geodaten über',
-'Advanced':'Erweitert',
-'metadataPOC': 'metadata point of contact',
-'metadataPOCs': 'Metadata point of contact',
-'spatialRepresentationType': 'spatial type',
-'spatialRepresentationTypes': 'Spatial types',
-'createDateYear': 'year',
-'createDateYears': 'Years',
-'denominator': 'scale denominator',
-'denominators': 'Scale denominators',
-'orgName': 'organization',
-'orgNames': 'Organizations',
-'serviceTypes': 'Service types',
-'facetMore': '+ Show more',
-'facetLess': '- Show less',
-'List':'Liste',
-'extractorTitle': 'Download data from ',
-'defineExtractionArea': 'Define extraction area',
-'chooseALayer': 'Choose a layer',
-'outputFormat': 'Output format',
-'dataDownload': "Download data",
-'wfsVersion': 'Service version',
-'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
-'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
-'GML2': 'GML 2',
-'GML3': 'GML 3',
-'CSV': 'Text CSV',
-'SHAPE-ZIP': 'ESRI Shapefile',
-'xsd': 'ISO schema',
-'rules': 'rules',
-'rule': 'rule',
-'schematron-rules-geonetwork': 'GeoNetwork validation',
-'schematron-rules-iso': 'ISO validation',
-'schematron-rules-inspire': 'INSPIRE validation',
-'to-iso19139-keyword': 'Text mode',
-'to-iso19139-keyword-as-xlink': 'Linked mode',
-'to-iso19139-keyword-with-anchor': 'Anchor mode',
-'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
-'linklabel-application/vnd.ogc.wmc': 'Interactive map',
-'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
-'linklabel-application/pdf': 'PDF',
-'linklabel-OGC:WMS': 'Add to map',
-'linklabel-application/octet-stream': 'Download',
-'linklabel-OGC:WFS': 'WFS link',
-'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
-'linklabel-application/zip': 'Download',
-'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
-'linklabel-application/x-compressed': 'Download',
-'linklabel-text/html': 'Web link',
-'linklabel-text/plain': 'Web link',
-'linklabel-image/png': 'Image link',
-'linklabel-image/jpeg': 'Image link',
-'linklabel-': 'Link',
-'insertMode': 'Insert Mode',
-'fileUpload': 'File upload',
-'copyPaste': 'Copy/Paste',
-'fileType': 'File Type',
-'singleFile' :'Single File (XML, SLD, WMC...)',
-'mefFile': 'MEF file',
-'importActions': 'Import actions',
-'noActionOnImport': 'No action on import',
-'overwriteMD': 'Overwrite metadata with same UUID' ,
-'generateUuid': 'Generate UUID for inserted metadata',
-'styleSheet': 'StyleSheet',
-'validate': 'Validate',
-'assignCurCat': 'Assign to current catalog',
-'metadata': 'Metadata',
-'mdInsertResults': 'Results of metadata import',
-'mdInsertSuccess': 'Metadata inserted with',
-'mdInsertFailure': 'Error while inserting metadata : ',
-'mdRecordsProcessed': 'Total number of metadata records processed',
-'mdRecordsAdded': 'Total number of metadata records added',
-'chooseCategory': 'Choose a category',
-'massivereplace-title': 'Metadata massive replacements',
-'massivereplace-add-title': 'Add replacement',
-'massivereplace-add-msg': 'Fill all the replacement information',
-'massivereplace-noreplacements': 'No replacements defined',
-'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
-'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.de, GeoNetwork.Lang.de);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/en.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/en.js
deleted file mode 100644
index b3e1be6a087..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/en.js
+++ /dev/null
@@ -1,712 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.en = {
- 'unsupportedBrowser': 'Unsupported browser',
- 'editorBrowserRestriction': "You're using an old version of Internet Explorer which is not compatible with latest GeoNetwork functionnalities (metadata editing, admin console). Some features may not work correctly. Upgrade to a more modern browser.",
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'harvestingAdmin': 'Harvesting',
- 'checkAllOrNone': 'Check all/none',
- 'filterGroup': 'Filter group ...',
- 'updateUserInfo': 'Edit my profile',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Date type',
- 'creationDate': 'Creation date',
- 'modificationDate': 'Modification date',
- 'publicationDate': 'Publication date',
- 'previousPage': 'Move to previous page',
- 'nextPage': 'Move to next page',
- 'upInPage': 'Scroll up in the results',
- 'downInPage': 'Scroll down in the results',
- 'example': "Example:",
- 'noInfo': 'No information',
- 'helper': "Suggestion:",
- 'toggleLayerManager': 'Display map layer manager',
- 'tagName': 'Element name:',
- 'enableTooltip': 'Enable tooltips to get more information about each descriptors.',
- 'connectIssue': "Catalogue connection issue",
- 'connectIssueMsg': "Error 404. Can't connect to catalogue at url ",
- 'featureInfoTooltipTitle': "Feature info",
- 'featureInfoTooltipText': "Click in the map to get feature info from all visible layers.",
- 'zoomToMaxExtentTooltipTitle': "Full extent",
- 'zoomToMaxExtentTooltipText': "Use this button to go to the full extent of the map.",
- 'zoominTooltipTitle': "Zoom in",
- 'zoominTooltipText': "Draw a box in the map to zoom in. You can also click in the map and map will zoom in by a factor of 2.",
- 'zoomoutTooltipTitle': "Zoom out",
- 'zoomoutTooltipText': "Click in the map or draw a box to zoom out.",
- 'dragTooltipTitle': "Pan map",
- 'dragTooltipText': "Press the left mouse button to drag the map.",
- 'previousTooltipTitle': "Previous map extent",
- 'previosTooltipText': "Click this button to go back to the previous map extent",
- 'nextTooltipTitle': "Next map extent",
- 'nextTooltipText': "Click this button to go to the next map extent",
- 'featureInfoTitle': "Feature info",
- 'layerManagerTabTitle': "Layer management",
- 'legendTabTitle': "Legend",
- 'scaleTitle': "Scale",
- 'xTitle': "X",
- 'yTitle': "Y",
- 'projectionTitle': "Projection",
- 'FeatureInfoNotQueryable': "There is no queryable map layer",
- 'WMSBrowserTab1': "Select",
- 'WMSBrowserTab3': "External",
- 'WMSBrowserPreviewTitle': "Preview layer",
- 'WMSBrowserAddButton': "Add",
- 'WMSBrowserDuplicateMsg': "Layer is already in the map",
- 'WMSBrowserPreviewWaitMsg': "Retrieving preview image",
- 'WMSBrowserConnectButton': "Connect",
- 'WMSBrowserConnectError': "There was an error connecting to the Web Map Service, please check the URL.",
- 'infoTitle': "Information",
- 'mf.print.mapTitle': "Title",
- 'mf.print.comment': "Comment",
- 'mf.print.dpi': "Resolution",
- 'mf.print.scale': "Scale",
- 'mf.print.rotation': "Angle",
- 'mf.print.resetPos': "Reset",
- 'mf.print.print': "Print",
- 'mf.print.generatingPDF': "Generating PDF",
- 'mf.print.unableToPrint': "It was not possible to print, try later",
- 'mf.error': "Error",
- 'selectExtentTooltipTitle': "Select extent",
- 'selectExtentTooltipText': "Select extent for catalog searches",
- 'clearExtentTooltipTitle': "Remove extent",
- 'clearExtentTooltipText': "Remove extent (ie. no spatial criteria)",
- 'printTooltipTitle': "Print",
- 'printTooltipText': "Print the current map",
- 'savewmcTooltipTitle': "Save web map context",
- 'savewmcTooltipText': "Saves web map context for current map",
- 'saveWMCFile.windowTitle': "Save Web Map Context",
- 'saveWMCFile.errorSaveWMC': "Could not save Web Map Context",
- 'loadwmcTooltipTitle': "Load web map context",
- 'loadwmcTooltipText': "Loads web map context in current map",
- 'selectWMCFile.windowTitle': "Load Web Map Context",
- 'selectWMCFile': "Select Web Map Context file",
- 'selectWMCFile.waitLoadingWMC': "Loading Web Map Context",
- 'selectWMCFile.loadButtonText': "Load",
- 'selectWMCFile.mergeButtonText': "Merge",
- 'selectWMCFile.errorLoadingWMC': "Could not load Web Map Context",
- 'opacityButtonText': "Opacity",
- 'opacityWindowTitle': "Opacity",
- 'metadataButtonText': "Metadata",
- 'removeButtonText': "Remove",
- 'addWMSButtonText': "Add WMS",
- 'addWMSWindowTitle': "Add layer from a WMS service",
- 'layerInfoPanel.windowTitle': "Layer metadata",
- 'layerInfoPanel.titleField': "Title",
- 'layerInfoPanel.descriptionField': "Description",
- 'layerInfoPanel.queryableField': "Queryable",
- 'layerList': "Layer list",
- 'baseLayerList': "Base layers",
- 'overlaysList': "Overlays",
- 'metadataResults.buttonText': "Metadata results",
- 'metadataResults.tooltipTitle': "Metadata results",
- 'metadataResults.tooltipText': "Go to metadata results page",
- 'metadataResults.alertTitle': "Metadata results",
- 'metadataResults.alertText': "No metadata results to show",
- 'featureInfoWindow.windowTitle': "Feature info",
- 'mf.information': 'Print',
- 'mf.print.pdfReady': 'PDF ready',
- 'loadLayer.loadingMessage': "Loading layer",
- 'loadLayer.error.title': "Load layer",
- 'loadLayer.error.message': "The layer could not be loaded",
- 'disclaimer.windowTitle': "Disclaimer",
- 'disclaimer.loading': "Loading...",
- 'disclaimer.buttonClose': "Close",
- 'gazetteerAddressField1Label': "Postcode",
- 'gazetteerAddressField2Label': "Street",
- 'gazetteerAddressField3Label': "Place",
- 'gazetteerAddressField4Label': "Municipality",
- 'gazetteerAddressField5Label': "House number",
- 'searchOptionButton': "Search",
- 'resetSearchForm': "Reset search form values.",
- 'GazetteerWindowTitle': "Search for address",
- 'searchResults': "Search results",
- 'errorTitle': "Error",
- 'SearchOptionLoadFailureMsg': "No results available. \n The service may be unavailable. \n",
- 'gazetteerTooltipTitle': "Search based on an address",
- 'gazetteerTooltipText': "Search for a location, based on postcode, street name, municipality or place.",
- 'SearchOptionNoResults': "No results found",
- 'zoomlayerTooltipTitle': "Zoom to layer",
- 'zoomlayerTooltipText': "Use this button to go to the full extent of the selected layer.",
- 'zoomlayer.selectLayerTitle': "Zoom to layer",
- 'zoomlayer.selectLayerText': "No layer selected",
- 'layerStylesWindowTitle': "Layer styles",
- 'layerStylesPreviewTitle': "Preview legend",
- 'selectStyleButton': "Select style",
- 'WMSTimeWindowTitle': "WMS Time",
- 'WMSTimePositionTitle': "Pick a time position",
- 'WMSTimeMovieTitle': "Play animation",
- 'wmsTimeUpdateButtonText': "Apply",
- 'WMSTimeAnimationCheckbox': "Play a movie loop spanning the last ${steps} time positions",
- 'fullTextSearch': "Full text search",
- 'keyword': "Keyword",
- 'org': "Organisation",
- 'altTitle': "Alternate title",
- 'mapTypes': "Map types",
- 'rsIdentifier': "Resource identifier",
- 'inspireSearchOptions': 'INSPIRE criteria',
- 'inspireannex': 'INSPIRE annex',
- 'inspirerelated': 'Related to INSPIRE',
- 'inspirerelatedtt': 'INSPIRE dataset with report on the conformity regarding the data specification',
- 'inspiretheme': 'INSPIRE theme',
- 'inspireClassificationDataServices': 'INSPIRE classification data services',
- 'serviceType': 'Service type',
- 'serviceType_discovery': 'Discovery Service (discovery)',
- 'serviceType_view': 'View Service (view)',
- 'serviceType_download': 'Download Service (download)',
- 'serviceType_transformation': 'Transformation Service (transformation)',
- 'serviceType_invoke': 'Invoke Spatial Data Service (invoke)',
- 'serviceType_other': 'Other Services (other)',
- 'similarity': 'Search accuracy',
- 'wkt': 'WKT geometry',
- 'simpleViewMode': 'Simple view',
- 'spatialSearch': 'Spatial criteria',
- 'mdChangeDate': 'Metadata change date',
- 'tempExtent': 'Temporal extent',
- 'hitsPerPage': 'Hits per page',
- 'sortBy': 'Sort by',
- 'relevance': 'Relevance',
- 'options': 'Options',
- 'title': 'Title',
- 'changeDate': 'Change date',
- 'rating': 'Rating',
- 'popularity': 'Popularity',
- 'scaleDesc': 'Scale (desc)',
- 'scaleAsc': 'Scale (asc)',
- 'abstract': 'Abstract',
- 'catalogue': 'Catalogue',
- 'group': 'Group',
- 'chooseGroup': 'Select a group',
- 'md': 'Metadata',
- 'tpl': 'Template',
- 'category': 'Category',
- 'advTextSearch': 'Advanced text search options',
- 'eitherWords': 'Either of the words',
- 'exactPhrase': 'Exact phrase',
- 'allWords': 'All of the words',
- 'withoutWords': 'Without the words',
- 'precise': 'Precise',
- 'imprecise': 'Imprecise',
- 'relationType': 'Relation type',
- 'within': 'within',
- 'touches': 'touches',
- 'crosses': 'crosses',
- 'fullyOutsideOf': 'fullyOutsideOf',
- 'encloses': 'encloses',
- 'overlaps': 'overlaps',
- 'intersection': 'intersection',
- 'nearYou': 'Near you',
- 'from': 'From',
- 'to': 'To',
- 'scaleNominator': '1:',
- 'scale': 'Scale',
- 'digital': 'Digital',
- 'hardCopy': 'Hard copy',
- 'download': 'Download',
- 'downloadable': 'Download',
- 'interactive': 'Interactive',
- 'resourceType': 'Resource type',
- 'dataset': 'Dataset',
- 'series': 'Series',
- 'service': 'Service',
- 'model': 'Feature catalogue',
- 'spatialRepType': 'Spatial representation',
- 'video': 'Video',
- 'vector': 'Vector',
- 'textTable': 'Text, table',
- 'tin': 'Tin',
- 'stereoModel': 'Stereo model',
- 'grid': 'Grid',
- 'kind': 'Kind',
- 'enterGetCapURL': 'Enter a GetCapabilities URL to register a new service.',
- 'edit': 'Edit',
- 'duplicate': 'Duplicate',
- 'delete': 'Delete',
- 'createChild': 'Create child',
- 'privileges': 'Privileges',
- 'privilegesTT': 'Manage record privileges for Internet and all catalogue groups.',
- 'categories': 'Categories',
- 'otherActions': 'Other actions',
- 'permalinkInfo': 'Paste link in email or IM',
- 'view': 'View',
- 'zoomTo': 'Zoom to',
- 'saveXml': 'Save as XML',
- 'saveRdf': 'Save as RDF',
- 'exportCsv': 'Export (CSV)',
- 'exportZip': 'Export (ZIP)',
- 'printSel': 'Export (PDF)',
- 'printTT': 'Print. Open a new page for printing.',
- 'newOwner': 'New owner',
- 'updateCategories': 'Update categories',
- 'updatePrivileges': 'Update privileges',
- 'noneSelected': 'None selected',
- 'none': 'none',
- 'all': 'all',
- 'allInPage': 'all in page',
- 'select': 'Select ',
- 'username': 'User name',
- 'password': 'password',
- 'login': 'Sign in',
- 'logout': 'Sign out',
- 'administration': 'Administration',
- 'validationReport': 'Validation report',
- 'setStatus': 'Metadata status',
- 'status': 'Change status',
- 'updateStatus': 'Update status',
- 'currentStatus': ' (current status is ${status})',
- 'enableWorkflow': 'Enable workflow',
- 'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
- 'enableWorkflowStart': 'Metadata status set to draft.',
- 'updateVersion': 'Activate versioning',
- 'addLayerSelection': 'Add layers of selection to the map',
- 'statusTT': 'Change the status of a record according to its life cycle phase',
- 'setVersioning': 'Metadata versioning',
- 'versioning': 'Start versioning',
- 'versioningTT': 'Once activated, all changes in the metadata record will be recorded in SVN repository',
- 'items': 'items',
- 'item': 'item',
- 'thumbnails': 'Thumbnails',
- 'noimages': 'No images to display',
- 'add': 'Add',
- 'small': 'Small',
- 'large': 'Large',
- 'selectImage': 'Select an image',
- 'selectFile': 'Select a file',
- 'image': 'Image',
- 'uploading': 'Uploading ...',
- 'upload': 'Upload',
- 'success': 'Success',
- 'failure': 'Failure',
- 'error': 'Error',
- 'save': 'Save',
- 'reset': 'Reset',
- 'fileProcessedMsg': 'Processed file ${res} on the server',
- 'suggestion': 'Suggestion',
- 'logoSelect': 'Select a logo',
- 'relatedResources': 'Related resources',
- 'createLink': 'Create link',
- 'featureCat': 'Feature catalogue',
- 'serviceMd': 'Service metadata',
- 'datasetMd': 'Dataset metadata',
- 'parentMd': 'Parent metadata',
- 'updateChildren': 'Update children',
- 'records': 'records',
- 'record': 'record',
- 'recordsFound': ' record(s) found',
- 'help': 'Help',
- 'publishError': 'Publication failed.',
- 'outOfMemoryError': 'Out of memory error.',
- 'publishErrorCode': 'Error code:',
- 'saveAndCheck': 'Save and check',
- 'saveAndClose': 'Save and close',
- 'cancel': 'Cancel',
- 'layout': 'Layout',
- 'collapseAll': 'Collapse all sections',
- 'editAttributes': 'Manage attributes',
- 'chooseAType': 'Choose a type',
- 'chooseAView': 'Choose a view',
- 'viewMode': 'View mode',
- 'errorAndStatusMsg': 'Error. Status: ${status}, text: ${text}. Try again.',
- 'mdEditor': 'Metadata editor',
- 'minorEditTT': 'Do not update timestamp on save',
- 'editing': 'Editing ${title} (${uuid})',
- 'GetCapabilitiesDocumentError': "Error loading service GetCapabilities document from URL: ",
- 'maxResults': "Number of results",
- 'mdTitle': "Metadata title",
- 'keywords': "Keywords",
- 'createRelation': "Create relation",
- 'createIfNotExistButton': "Create a new metadata record",
- 'getCapabilitiesLayer': "GetCapabilities layer",
- 'layerName': "Layer name",
- 'searching': "Searching ...",
- 'perThesaurus': " per thesaurus",
- 'anyThesaurus': "Any thesaurus",
- 'addFromThesaurus': 'Add from thesaurus ...',
- 'selectedKeywords': "Selected keywords",
- 'foundKeywords': "Available keywords",
- 'clear': "Clear",
- 'publish': "Publish",
- 'publishTooltip': "Publish current dataset to remote node. If dataset is already publish in that node, it will be updated.",
- 'publishSuccess': "Successful publication.",
- 'publishLayerAdded': " Layer added to map preview.",
- 'unpublish': "Unpublish",
- 'unpublishTooltip': "Remove current dataset from remote node.",
- 'unpublishSuccess': "Successful unpublication.",
- 'unpublishError': "Unpublication failed. ",
- 'check': "Check",
- 'errorDatasetNotFound': "Dataset not found.",
- 'datasetFound': "Dataset found and added to the map preview.",
- 'checkFailure': "Failed to check dataset in remote node.",
- 'addOnlineSourceTitle': "Link service to metadata",
- 'addOnlineSource': 'Add links',
- 'addOnlineSourceTT': 'Add an onlinesource section to the current metadata record pointing to the WMS/WFS/WCS services. If the service is a WMS, the layer could be displayed in the map viewer.',
- 'statusInformation': "Status information.",
- 'publishing': "Publishing ...",
- 'mapPreview': "Map preview",
- 'selectANode': "Select a node ...",
- 'geoPublisherWindowTitle': "Geo-publication: ",
- 'keywordSelectionWindowTitle': "Keywords selection",
- 'crsSelectionWindowTitle': "Coordinate reference system selection",
- 'linkedMetadataSelectionWindowTitle': "Related metadata selection",
- 'NotOwnerError': "You don't have privileges to update this related record.",
- 'ServiceUpdateError': "Error during service metadata update",
- 'associateService': "Link service metadata",
- 'associateDataset': "Link dataset metadata",
- 'logoSelectionWindow': "Choose a logo",
- 'fileUploadWindow': 'Upload data or document',
- 'selectedCRS': "Selected coordinate systems",
- 'foundCRS': "Available coordinate systems",
- 'search': 'Search',
- 'restrictSearchToMap': 'Restrict search to map extent',
- 'selected': 'selected',
- 'selectRegion': 'Select a region ...',
- 'drawRectangle': "Draw rectangle",
- 'drawPolygon': "Draw polygon",
- 'drawPolygonTT': "Click the button and draw a polygon by clicking on the map for each points. Double click to create polygon last points.",
- 'drawCircle': 'Draw circle',
- 'discovery': 'Discovery',
- 'visualization': 'Visualization',
- 'when': 'When ?',
- 'anyTime': 'Anytime',
- 'onSelection': 'On selection',
- 'adminAction': 'Other',
- 'newMetadata': 'New metadata',
- 'newMetadataTitle': 'Create a metadata by choosing a template and selecting one group',
- 'tplTitle': 'Template description',
- 'metadatatype': 'Ressource type',
- 'process': 'Process',
- 'suggestions': 'Suggestions',
- 'applySelected': 'Apply selected task',
- 'processParametersWindow': 'Task parameters',
- 'noSuggestion': 'No suggestion.',
- 'thumbnailUploadWindow': 'Upload thumbnail',
- 'addThumbnail': 'Add',
- 'createSmall': 'Create small thumbnail',
- 'scalingFactor': 'Scaling factor',
- 'smallScalingFactor': 'Small scaling factor',
- 'type': 'Record type',
- 'clickToClose': 'Click to close',
- 'removeSelected': 'Remove selected',
- 'ownerName': 'Metadata record owner',
- 'setPrivileges': 'Set privileges',
- 'setBatchPrivileges': 'Overwrite privileges of selected records',
- 'setCategories': 'Set categories',
- 'massiveOp': 'Batch operation ',
- 'prepareDownload': 'Download files',
- 'mdMenu': 'Actions',
- 'deleteRecord': 'Delete metadata record ?',
- 'deleteConfirm': 'Are you sure to delete this metadata record?',
- 'deleteRecordSuccess': 'Metadata deleted.',
- 'deleteRecordFailure': 'Error when deleting metadata record.',
- 'advancedSearchOptions': 'Advanced Search Options',
- 'relatedservices': 'Related service',
- 'relatedchildren': 'Children',
- 'relatedfcats': 'Related feature catalogue',
- 'relatedhasfeaturecat': 'Datasets',
- 'relatedsources': 'Source datasets',
- 'add-thumbnail': 'Add thumbnail',
- 'add-onlinesrc': 'Add online resource',
- 'add-parent': 'Link to a parent',
- 'add-service': 'Link to a service',
- 'add-dataset': 'Link to a dataset',
- 'add-sources': 'Link to a source dataset',
- 'add-fcats': 'Link to a feature catalog',
- 'add-sibling': 'Link to other resources',
- 'fcats': 'Feature catalog',
- 'thumbnail': 'Overviews',
- 'children': 'Children',
- 'parent': 'Parent metadata',
- 'sibling': 'Other resources',
- 'onlinesrc': 'Online resources',
- 'sources': 'Source datasets',
- 'remove': 'Remove',
- 'linkADocument': 'A document',
- 'linkAMetadata': ' Online resources from an existing record',
- 'linkAResource-': 'Link a resource',
- 'linkAResource-thumbnail': 'Add an overview to the current metadata',
- 'linkAResource-fcats': 'Link a feature catalog to the current metadata',
- 'linkAResource-parent': 'Link a parent metadata record to the current metadata',
- 'linkAResource-dataset': 'Link a dataset to the current metadata',
- 'linkAResource-service': 'Link a service to the current metadata',
- 'linkAResource-sibling': 'Link a resource to the current metadata',
- 'linkAResource-sources': 'Link a source dataset to the current metadata',
- 'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
- 'associationType': 'Association type',
- 'initiativeType': 'Initiative type',
- 'uploadAnImage': 'Upload an image',
- 'UploadError': 'Failed to upload file',
- 'setAThumbnailByURL': 'Link an image with a URL',
- 'setAURL': 'Link a URL',
- 'getMEF': 'Export (ZIP)',
- 'metadataCategories': 'Metadata categories',
- 'validityInfo': 'Validation status: ',
- 'lastUpdate': 'Last update: ',
- 'importMetadata': 'Import metadata',
- 'import': 'Import',
- 'validationStatus': 'Validation status',
- 'valid': 'Valid',
- 'notValid': 'Not valid',
- 'notDetermined': 'Not determined',
- 'addToMap': 'Add to map: ',
- 'map': 'Map',
- 'interactiveMap': 'Interactive map',
- 'staticMap': 'Static map',
- 'downloadLink': 'Download: ',
- 'webLink': 'Web link: ',
- 'viewKml': 'Open in GoogleEarth: ',
- 'layerTree': 'Layer manager',
- 'mdResultsLayer': 'Search results',
- 'printLayer': 'Print page',
- 'relatedservices': 'Related services',
- 'relatedsource': 'Source datasets',
- 'relatedhassource': 'Is used in',
- 'relatedparent': 'Parent',
- 'relatedsibling': 'Related records',
- 'relatedassociated': 'Related records',
- 'relateddatasets': 'Related datasets',
- 'relatedchildren': 'Children',
- 'relatedrelated': 'Feature catalogue/dataset link',
- 'delete19110Relation': 'Remove feature catalogue relation',
- 'newWindow': 'New window',
- 'addAsXLink': 'Add as linked element',
- 'contactSelectionWindowTitle': 'Contact selection',
- 'selectedContacts': 'Selected contacts',
- 'foundContacts': 'Available',
- 'contactRole': 'Contact role',
- 'mapNearYou': 'Center map on your location',
- 'errorChangeProtocol': 'Remove uploaded file before changing protocol of an online resource.',
- 'resultBy': ' result(s) / ',
- 'subTemplateImport': 'Directory entry import',
- 'xmlData': 'XML',
- 'minorEdit': 'Minor edit',
- 'minorEditTT': '',
- // Shortcuts
- 'runASearch': 'Run a search.',
- 'focusOnAny': 'Move focus to the full text search field.',
- 'hideSearchForm': 'Hide or display search form.',
- 'switchMode': 'Switch visualization mode.',
- 'focusOnLogin': 'Focus on the login form to access catalogue administration or logout if already logged in.',
- 'openAdmin': 'Go to administration',
- 'displayInfoPanel': 'Display the information panel.',
- 'displayHelpPanel': 'Display this help.',
-
- 'SelectionWindowTitle': 'Select from directory',
- 'found': 'Records found',
- 'selected': 'Selected',
-
- 'create': 'Create',
-
- // Feedback
- 'feedbackcontactDetails' : 'Contact data',
- 'feedbacknameInitials' : 'Name, Initial(s)',
- 'feedbackmale' : 'male',
- 'feedbackfemale' : 'female',
- 'feedbackposition' : 'Position',
- 'feedbackorganization' : 'Organization',
- 'feedbackphone' : 'Phone',
- 'feedbackemail' : 'Email',
- 'feedbackfeedback': 'Feedback',
- 'feedbackfunction': 'Function',
- 'feedbackquestion': 'Question',
- 'feedbackerror' : 'Error',
- 'feedbackremark' : 'Remark',
- 'feedbackcontact' : 'Contact',
- 'feedbackcategory' : 'Category',
- 'feedbackmetadataContent' : 'Metadata contents',
- 'feedbackdataContent' : 'Data contents',
- 'feedbackserviceContent' : 'Service contents',
- 'feedbacksupport' : 'Support',
- 'feedbackmapViewer' : 'Map viewer',
- 'feedbacksearch' : 'Search',
- 'feedbackorganizations' : 'Organizations',
- 'feedbackcontentManagement' : 'Content management',
- 'feedbackmetadataImport' : 'Metadata import',
- 'feedbackmetadataEdit' :'Metadata editing',
- 'feedbackharvesting' : 'Harvesting',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Other',
- 'feedbackremarks' : 'Remarks',
- 'feedbackmetadataData' : 'Metadata data',
- 'feedbacktitle' : 'Title',
- 'feedbackPanelTitle' : 'With this form you can give feedback on metadata, data and/or services.',
- 'feedbacksubmit' : 'Send',
- 'feedbackerrorTitle' : 'Attention',
- 'feedbackerrorMsg' : 'An error has occurred when sending. Please try again later.',
- 'feedbackcancel' : 'Cancel',
- 'feedbackWindowTitle' : 'feedback',
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace': 'Replace existing extent',
- 'add-info-from-wmssetExtent': 'Set extent',
- 'add-info-from-wmssetAndReplaceExtent': 'Replace existing extent',
- 'add-info-from-wmssetCRS': 'Set coordinate reference system',
- 'add-info-from-wmssetDynamicGraphicOverview': 'Set graphic overview (using GetMap request URL)',
- 'add-info-from-wmswmsServiceUrl': 'Service URL',
- 'linked-data-checkerlinkUrl': 'URL to remove',
- 'related-metadata-checkeruuidToRemove': 'Identifier to remove',
- 'add-service-info-from-wxssetAndReplaceOperations': 'Replace existing operations',
- 'add-service-info-from-wxswxsServiceUrl': 'Service URL',
-
- // Admin
- 'manageDirectories' : 'Manage directories',
- 'directory': 'Directory',
- 'thesaurusManager': 'Thesaurus manager',
- 'Theme': 'Theme',
- 'thesaurusFilePath': 'Thesaurus file (.rdf)',
- 'ThesaurusTitle': 'Thesaurus title',
- 'ThesaurusId': 'Thesaurus identifier',
- 'ThesaurusNs': 'Thesaurus namespace',
- 'createThesaurusFromURL': 'from URL',
- 'createThesaurusFromRepository': 'from thesaurus repository',
- 'creationMode': 'Create',
- 'thesaurusFromRepository': 'Thesaurus',
- 'externalThesaurusURL': 'URL',
- 'thesaurusCreation': 'Add a thesaurus',
- 'Type': 'Type',
- 'Activated': 'Activated',
- 'emptyThesaurus': 'New empty thesaurus',
- 'thesaurusFromFile': 'From local file',
- 'thesaurusFromURL': 'From remote file (URL)',
- 'id': 'Identifier',
- 'mdIdentifier': 'Record internal identifier: ',
- 'mdUUID': 'Record unique identifier: ',
- 'label': 'Label',
- 'definition': '-',
- 'xmin': 'X min',
- 'ymin': 'Y min',
- 'xmax': 'X max',
- 'ymax': 'Y max',
- 'newLabel': 'Label',
- 'newDefinition': 'Definition',
- 'selDirectoryTT': 'Select a type of directory. A directory group all elements having the same root element name (eg. gmd:CI_ResponsibleParty is a contact directory)',
- 'privTplElTT': 'Manage privileges for the current selection.',
- 'addTplElTT': 'Add an element from an XML fragment to a directory. The destination directory is based on the root element name (eg. gmd:CI_ResponsibleParty).',
- 'copyTplElTT': 'Create a new entry in the directory from the current selection.',
- 'delTplElTT': 'Remove selected entry from the directory.',
- 'language': 'Language',
- 'removeFilter': 'Remove',
- 'metadataPOC': 'metadata point of contact',
- 'metadataPOCs': 'Metadata point of contact',
- 'spatialRepresentationType': 'spatial type',
- 'spatialRepresentationTypes': 'Spatial types',
- 'createDateYear': 'year',
- 'createDateYears': 'Years',
- 'denominator': 'scale denominator',
- 'denominators': 'Scale denominators',
- 'orgName': 'organization',
- 'orgNames': 'Organizations',
- 'types': 'Types',
- 'format': 'Format',
- 'formats': 'Formats',
- 'serviceTypes': 'Service types',
- //tabbed search
- 'Home': "Home",
- 'Map': "Map",
- 'Poweredby': "Powered by",
- 'About': "About",
- 'Searchforspatialdataon': "Search for spatial data on",
- 'Advanced': "Advanced",
- 'facetMore': '+ Show more',
- 'facetLess': '- Show less',
- 'List': "List",
- 'extractorTitle': 'Download data from ',
- 'defineExtractionArea': 'Define extraction area',
- 'chooseALayer': 'Choose a layer',
- 'outputFormat': 'Output format',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service version',
- 'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- 'xsd': 'ISO schema',
- 'rules': 'rules',
- 'rule': 'rule',
- 'schematron-rules-geonetwork': 'GeoNetwork validation',
- 'schematron-rules-iso': 'ISO validation',
- 'schematron-rules-inspire': 'INSPIRE validation',
- 'to-iso19139-keyword': 'Text mode',
- 'to-iso19139-keyword-as-xlink': 'Linked mode',
- 'to-iso19139-keyword-with-anchor': 'Anchor mode',
- 'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
- 'linklabel-application/vnd.ogc.wmc': 'Interactive map',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Add to map',
- 'linklabel-OGC:WFS': 'WFS link',
- 'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
- 'linklabel-application/zip': 'Download',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
- 'linklabel-application/x-compressed': 'Download',
- 'linklabel-application/octet-stream': 'Download',
- 'linklabel-text/html': 'Web link',
- 'linklabel-text/plain': 'Web link',
- 'linklabel-image/png': 'Image link',
- 'linklabel-image/jpeg': 'Image link',
- 'linklabel-website': 'Web link',
- 'linklabel-application/octet-stream': 'Link',
- 'linklabel-': 'Link',
- 'cookies.warning': 'This webpage uses cookies, which will save on your computer information about your usage and statistics.',
- 'insertMode': 'Insert Mode',
- 'fileUpload': 'File upload',
- 'copyPaste': 'Copy/Paste',
- 'fileType': 'File Type',
- 'singleFile' :'Single File (XML, SLD, WMC...)',
- 'mefFile': 'MEF file',
- 'importActions': 'Import actions',
- 'noActionOnImport': 'No action on import',
- 'overwriteMD': 'Overwrite metadata with same UUID' ,
- 'generateUuid': 'Generate UUID for inserted metadata',
- 'styleSheet': 'StyleSheet',
- 'validate': 'Validate',
- 'assignCurCat': 'Assign to current catalog',
- 'metadata': 'Metadata',
- 'mdInsertResults': 'Results of metadata import',
- 'mdInsertSuccess': 'Metadata inserted with',
- 'mdInsertFailure': 'Error while inserting metadata : ',
- 'mdRecordsProcessed': 'Total number of metadata records processed',
- 'mdRecordsAdded': 'Total number of metadata records added',
- 'chooseCategory': 'Choose a category',
- 'no-thumbnail': 'No thumbnail available',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.en, GeoNetwork.Lang.en);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/es.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/es.js
deleted file mode 100644
index 37852498e00..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/es.js
+++ /dev/null
@@ -1,682 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.es = {
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'updateUserInfo': 'Edit my profile',
- 'filterGroup': 'Filter group ...',
- 'checkAllOrNone': 'Check all/none',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Tipo de fecha',
- 'creationDate': 'Fecha de creación',
- 'modificationDate': 'Fecha de modificación',
- 'publicationDate': 'Fecha de publicación',
- 'previousPage':'Volver a la página anterior',
- 'nextPage':'Ir a la página siguiente',
- 'upInPage':'Desplazarse hacia arriba en los resultados',
- 'downInPage':'Desplácese hacia abajo en los resultados',
- 'example':'Ejemplo',
- 'helper':'Propuesta',
- 'toggleLayerManager':'Mostrar gestor de capas del mapa',
- 'tagName':'Nombre del elemento',
- 'enableTooltip':'Habilitar información sobre las herramientas para obtener información adicional.',
- 'connectIssue':'Problema en la conexión con el catálogo',
- 'connectIssueMsg':'Error 404. No se puede conectar con el catálogo de la URL',
- 'featureInfoTooltipTitle':'Propiedades de los objetos',
- 'featureInfoTooltipText':'Haga clic en el mapa para obtener información de todas las capas visibles en la actualidad de los datos a la consulta.',
- 'zoomToMaxExtentTooltipTitle':'Extensión total',
- 'zoomToMaxExtentTooltipText':'Utilice esta tecla para toda la extensión del mapa para ampliarlo.',
- 'zoominTooltipTitle':'Acercar',
- 'zoominTooltipText':'Arrastre un rectángulo en el mapa el mapa para acercar a esa zona. Un simple clic amplía la zona en un factor de 2',
- 'zoomoutTooltipTitle':'Reducir',
- 'zoomoutTooltipText':'Arrastre un rectángulo en el mapa el mapa para alejar a esta área.',
- 'dragTooltipTitle':'Mover el mapa',
- 'dragTooltipText':'Mover el mapa con el botón izquierdo del ratón.',
- 'previousTooltipTitle':'Vista previa',
- 'previosTooltipText':'Haga clic en este botón para volver a la vista anterior del mapa.',
- 'nextTooltipTitle':'Vista siguiente',
- 'nextTooltipText':'Haga clic en el botón para ver la vista siguiente del mapa.',
- 'featureInfoTitle':'Propiedades de los objetos',
- 'layerManagerTabTitle':'Gestionar las capas de datos',
- 'legendTabTitle':'Leyenda',
- 'scaleTitle':'Escala',
- 'xTitle':'X',
- 'yTitle':'Y',
- 'projectionTitle':'Proyección',
- 'FeatureInfoNotQueryable':'No hay datos disponibles de la capas consultables',
- 'WMSBrowserTab1':'Seleccionar',
- 'WMSBrowserTab3':'Externo',
- 'WMSBrowserPreviewTitle':'Vista previa de datos de capa',
- 'WMSBrowserAddButton':'Añadir',
- 'WMSBrowserDuplicateMsg':'La capa que ya existe en el mapa',
- 'WMSBrowserPreviewWaitMsg':'Previsualizando imagen previa',
- 'WMSBrowserConnectButton':'Conectar',
- 'WMSBrowserConnectError':'Error al conectar con el servicio de mapas web, por favor verifique el URL.',
- 'infoTitle':'Información',
- 'mf.print.mapTitle':'Título',
- 'mf.print.comment':'Comentario',
- 'mf.print.dpi':'Resolución',
- 'mf.print.scale':'Escala',
- 'mf.print.rotation':'Ángulo',
- 'mf.print.resetPos':'Limpiar',
- 'mf.print.print':'Imprimir',
- 'mf.print.generatingPDF':'Creando PDF',
- 'mf.print.unableToPrint':'No se pudo imprimir, por favor inténtelo más tarde',
- 'mf.error':'Error',
- 'selectExtentTooltipTitle':'Seleccionar extensión del mapa',
- 'selectExtentTooltipText':'Seleccionar la extensión del mapa para las búsquedas en el catálogo',
- 'printTooltipTitle':'Imprimir',
- 'printTooltipText':'Imprimir mapa actual',
- 'savewmcTooltipTitle':'Guardar el contexto de mapa web',
- 'savewmcTooltipText':'Guardar el contexto de mapa web en un archivo.',
- 'saveWMCFile.windowTitle':'Guardar el contexto de mapa web',
- 'saveWMCFile.errorSaveWMC':'No se pudo guardar el contexto de mapa web',
- 'loadwmcTooltipTitle':'Carga el contexto de mapa web',
- 'loadwmcTooltipText':'Carga el contexto de mapa web desde un archivo en el mapa actual.',
- 'selectWMCFile.windowTitle':'Contexto de mapa web',
- 'selectWMCFile':'Seleccionar archivo de contexto de mapa web ',
- 'selectWMCFile.waitLoadingWMC':'Web Map Context Laden',
- 'selectWMCFile.loadButtonText':'Tienda',
- 'selectWMCFile.mergeButtonText':'Resumir',
- 'selectWMCFile.errorLoadingWMC':'Web Map Context no se pudo cargar',
- 'opacityButtonText':'Opacidad',
- 'opacityWindowTitle':'Opacidad',
- 'metadataButtonText':'Metadatos',
- 'removeButtonText':'Quitar',
- 'addWMSButtonText':'Añadir WMS',
- 'addWMSWindowTitle':'Añadir WMS',
- 'layerInfoPanel.windowTitle ':'Los datos de metadatos capa de',
- 'layerInfoPanel.titleField ':'Título',
- 'layerInfoPanel.descriptionField ':'Descripción',
- 'layerInfoPanel.queryableField ':'Interrogable',
- 'layerList ':'Datos de la lista de capas',
- 'baseLayerList':'Las capas de datos básicos',
- 'metadataResults.buttonText ':'Resultados de metadatos',
- 'metadataResults.tooltipTitle ':'Resultados de metadatos',
- 'metadataResults.tooltipText ':'Ir a la página de resultados de los metadatos',
- 'metadataResults.alertTitle ':'Resultados de metadatos',
- 'metadataResults.alertText ':'No hay resultados disponibles de metadatos',
- 'featureInfoWindow.windowTitle':'Propiedades de los objetos',
- 'mf.information':'Imprimir',
- 'mf.print.pdfReady':'PDF disponible',
- 'loadLayer.loadingMessage':'Datos de la capa de carga',
- 'loadLayer.error.title':'La capa de datos de carga de error',
- 'loadLayer.error.message':'La capa de datos no se pudo cargar',
- 'disclaimer.windowTitle':'Negativa',
- 'disclaimer.loading':'Rechazo de carga ...',
- 'disclaimer.buttonClose':'Cerrar',
- 'gazetteerAddressField1Label':'Código postal',
- 'gazetteerAddressField2Label':'Carretera',
- 'gazetteerAddressField3Label':'Lugar',
- 'gazetteerAddressField4Label':'Comunidad',
- 'gazetteerAddressField5Label':'Número de la casa',
- 'searchOptionButton':'Buscar',
- 'GazetteerWindowTitle':'La dirección',
- 'searchResults':'Resultados de la búsqueda',
- 'errorTitle':'Error',
- 'SearchOptionLoadFailureMsg':'No hay resultados disponibles. \n Servicio de puede no estar disponible . \n',
- 'gazetteerTooltipTitle':'Búsqueda de dirección',
- 'gazetteerTooltipText':'Código Postal Nombre de la calle local municipal o de búsqueda de empleo.',
- 'SearchOptionNoResults':'No se encontraron resultados',
- 'zoomlayerTooltipTitle':'Ver extensión de la capa',
- 'zoomlayerTooltipText':'Utilice esta tecla para ver toda la extensión de la capa de datos seleccionada.',
- 'zoomlayer.selectLayerTitle':'Ver extensión de la capa',
- 'zoomlayer.selectLayerText':'Ninguna capa seleccionada',
- 'layerStylesWindowTitle':'Datos de estilo de capa',
- 'layerStylesPreviewTitle':'Leyenda Prevista',
- 'selectStyleButton':'Elegir el estilo',
- 'WMSTimeWindowTitle':'WMS Temporal',
- 'WMSTimePositionTitle':'Seleccione una fecha',
- 'WMSTimeMovieTitle':'Ver animación',
- 'wmsTimeUpdateButtonText':'Aplicar',
- 'WMSTimeAnimationCheckbox':'Reproducir la película con los últimos $ {} veces los pasos',
- 'fullTextSearch':'Búsqueda de texto completo',
- 'keyword':'Palabra clave',
- 'org':'Organización',
- 'altTitle': 'Título alternativo',
- 'mapTypes':'Tipos de mapas',
- 'rsIdentifier':'Identificador de recursos',
- 'inspireSearchOptions':'INSPIRE criterios',
- 'inspireannex':'Anexo INSPIRE',
- 'inspirerelated':'En cuanto a INSPIRE',
- 'inspirerelatedtt':'INSPIRE informe sobre el historial de cumplimiento con respecto a la especificación de datos',
- 'inspiretheme':'Tema INSPIRE',
- 'inspireClassificationDataServices':'INSPIRE servicios de datos de clasificación',
- 'serviceType':'Tipo de servicio',
- 'serviceType_discovery':'Servicio de Descubrimiento (Discovery)',
- 'serviceType_download': 'Download Service (download)',
- 'serviceType_view':'Servicio de visualización (ver)',
- 'serviceType_transformation':'Servicio de Transformación (transformación)',
- 'serviceType_invoke':' Servicio de invocación de datos espaciales (llamada)',
- 'serviceType_other':'Otros Servicios (otros)',
- 'similarity':'Buscar la precisión',
- 'wkt':'WKT la geometría',
- 'simpleViewMode':'Ver Mensaje Individual',
- 'spatialSearch':'Criterios espaciales',
- 'mdChangeDate':'Fecha de cambio de metadatos',
- 'tempExtent':'Medida temporal',
- 'hitsPerPage':'Resultados por página',
- 'sortBy':'Ordenar por',
- 'relevance':'Relevantes',
- 'options':'Opciones',
- 'title':'Título',
- 'changeDate':'Cambio de Fecha',
- 'rating':'Valoración',
- 'popularity':'Popularidad',
- 'scaleDesc':'Escala (de)',
- 'scaleAsc':'Escala (ASC)',
- 'abstract':'Resumen',
- 'catalogue':'Catálogo',
- 'group':'Grupo',
- 'chooseGroup':'Seleccione un grupo de',
- 'md':'Metadatos',
- 'tpl':'Plantilla',
- 'category':'Categoría',
- 'advTextSearch':'Opciones avanzadas de búsqueda',
- 'eitherWords':'Cualquiera de las palabras',
- 'exactPhrase':'Frase exacta',
- 'allWords':'Todas las palabras',
- 'withoutWords':'Sin las palabras',
- 'precise':'Preciso',
- 'imprecise':'Incorrecto',
- 'relationType':'Relación',
- 'within':'Dentro de',
- 'touches':'Toque',
- 'crosses':'Cruza',
- 'fullyOutsideOf':'Completamente fuera de',
- 'encloses':'Encierra',
- 'overlaps':'Superposición',
- 'intersection':'Intersección',
- 'nearYou':'En su área',
- 'from':'De',
- 'to':'A',
- 'scaleNominator':'A',
- 'scale':'Escala',
- 'digital':'Digital',
- 'hardCopy':'Hardcopy',
- 'download':'Descargar',
- 'downloadable':'Descargar',
- 'interactive':'Interactivo',
- 'resourceType':'Tipo de recurso',
- 'dataset':'Conjunto de datos',
- 'series':'Serie',
- 'service':'Servicio',
- 'spatialRepType':'La representación espacial',
- 'video':'Vídeo',
- 'vector':'Vector',
- 'textTable':'Texto de la tabla',
- 'tin':'Estado',
- 'stereoModel':'Modelo de estéreo',
- 'grid':'Red',
- 'kind':'Tipo',
- 'enterGetCapURL':'Introduzca una dirección URL para registrarse GetCapabilities a un nuevo servicio.',
- 'edit':'Editar',
- 'duplicate':'Duplicado',
- 'delete':'Borrar',
- 'createChild':'Crear infantil',
- 'privileges':'Privilegios',
- 'categories':'Categorías',
- 'otherActions':'Otras acciones',
- 'view':'Ver',
- 'zoomTo':'Ampliar',
- 'saveXml':'Guardar como XML',
- 'exportCsv':'Exportar (CSV)',
- 'exportZip':'Exportar (ZIP)',
- 'printSel':'Exportar (PDF)',
- 'printTT':'Imprimir. Abra una nueva página para la impresión.',
- 'newOwner':'El nuevo propietario',
- 'updateCategories':'Actualiza Categorías',
- 'updatePrivileges':'Actualización de los privilegios',
- 'noneSelected':'Ninguna seleccionada',
- 'none':'ninguno',
- 'all':'todo',
- 'allInPage':'todos en la página',
- 'select':'Seleccionar',
- 'username':'Nombre de usuario',
- 'password':'Contraseña',
- 'login':'Iniciar sesión',
- 'logout':'Cerrar sesión',
- 'administration':'Administración',
- 'validationReport':'Informe de validación',
- 'status':'Estado',
- 'updateStatus': 'Update status',
- 'currentStatus': ' (current status is ${status})',
- 'enableWorkflow': 'Enable workflow',
- 'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
- 'enableWorkflowStart': 'Metadata status set to draft.',
- 'addLayerSelection': 'Add layers of selection to the map',
- 'items':'Artículo',
- 'item':'Artículo',
- 'thumbnails':'Miniaturas',
- 'noimages':'No hay imágenes disponibles',
- 'add':'Añadir',
- 'small':'Pequeño',
- 'large':'Grande',
- 'selectImage':'Seleccione una imagen',
- 'selectFile':'Seleccione un archivo',
- 'image':'Imagen',
- 'uploading':'Subiendo ...',
- 'upload':'Subir',
- 'success':'Éxito',
- 'failure':'Fracaso',
- 'error':'Error',
- 'save':'Ahorrar',
- 'reset':'Espalda',
- 'fileProcessedMsg':'File ${res} procesado en el servidor.',
- 'suggestion':'Propuesta',
- 'logoSelect':'Seleccione un logotipo',
- 'relatedResources':'Recursos relacionados',
- 'add-thumbnail': 'Add thumbnail',
- 'add-onlinesrc': 'Add online resource',
- 'add-parent': 'Link to a parent',
- 'add-service': 'Link to a service',
- 'add-dataset': 'Link to a dataset',
- 'add-sources': 'Link to a source dataset',
- 'add-fcats': 'Link to a feature catalog',
- 'add-sibling': 'Link to other resources',
- 'fcats': 'Feature catalog',
- 'thumbnail': 'Overviews',
- 'children': 'Children',
- 'parent': 'Parent metadata',
- 'sibling': 'Other resources',
- 'onlinesrc': 'Online resources',
- 'sources': 'Source datasets',
- 'remove': 'Remove',
- 'linkADocument': 'A document',
- 'linkAMetadata': ' Online resources from an existing record',
- 'linkAResource-': 'Link a resource',
- 'linkAResource-thumbnail': 'Add an overview to the current metadata',
- 'linkAResource-fcats': 'Link a feature catalog to the current metadata',
- 'linkAResource-parent': 'Link a parent metadata record to the current metadata',
- 'linkAResource-dataset': 'Link a dataset to the current metadata',
- 'linkAResource-service': 'Link a service to the current metadata',
- 'linkAResource-sibling': 'Link a resource to the current metadata',
- 'linkAResource-sources': 'Link a source dataset to the current metadata',
- 'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
- 'associationType': 'Association type',
- 'initiativeType': 'Initiative type',
- 'uploadAnImage': 'Upload an image',
- 'UploadError': 'Failed to upload file',
- 'setAThumbnailByURL': 'Link an image with a URL',
- 'setAURL': 'Link a URL',
- 'createLink':'Creación de vínculos ...',
- 'featureCat':'Reportaje Catálogo',
- 'serviceMd':'Servicio de metadatos',
- 'datasetMd':'Conjunto de datos de metadatos',
- 'parentMd':'Padres de metadatos',
- 'updateChildren':'Actualizar hijo',
- 'records':'Archivos',
- 'record':'Registro',
- 'help':'Ayuda',
- 'publishError':'La publicación falló.',
- 'outOfMemoryError':'Error de memoria.',
- 'publishErrorCode':'Código de error',
- 'saveAndCheck':'Guardar y revisar',
- 'saveAndClose':'Guardar y cerrar',
- 'cancel':'Cancelar',
- 'layout':'Disposición',
- 'collapseAll':'Ocultar todas las secciones',
- 'editAttributes':'Atributos de Gestión de',
- 'chooseAType':'Seleccione un tipo de',
- 'chooseAView':'Seleccione una vista',
- 'viewMode':'Modo de visualización',
- 'errorAndStatusMsg':'Errores. Estado $ {texto}. Intñentelo de nuevo.,',
- 'mdEditor':'El Editor de Metadatos',
- 'minorEditTT':'No marca de tiempo de actualización en Guardar',
- 'editing':'Edición de ${title} (${uuid})',
- 'GetCapabilitiesDocumentError':'Error al cargar documento GetCapabilities del servicio de la URL',
- 'maxResults':'Número de resultados',
- 'mdTitle':'Metadatos Título',
- 'keywords':'Palabras clave',
- 'createRelation':'Crear la relación',
- 'createIfNotExistButton':'Crear un nuevo conjunto de metadatos',
- 'getCapabilitiesLayer':'Capa GetCapabilities',
- 'layerName':'Nombre de la capa',
- 'searching':'Buscar ...',
- 'perThesaurus':'Por Tesauro',
- 'anyThesaurus':'Cualquier Tesauro',
- 'addFromThesaurus': 'Add from thesaurus ...',
- 'selectedKeywords':'Palabras clave seleccionadas',
- 'foundKeywords':'Palabras clave disponibles',
- 'clear':'Borrar',
- 'publish':'Publicar',
- 'publishTooltip':'Publicar los datos actuales de inventario para el nodo remoto. Si los datos ya está publicada en este nodo se actualiza.',
- 'publishSuccess':'El éxito de la publicación.',
- 'publishLayerAdded':'Capas añadido para asignar sólo una vista previa.',
- 'unpublish':'No Publicar',
- 'unpublishTooltip':'Eliminar el registro actual del nodo remoto.',
- 'unpublishSuccess':'Éxito en la despublicación.',
- 'unpublishError':'Fallo en la despublicación.',
- 'check':'Comprobar',
- 'errorDatasetNotFound':'Anote que no se encuentra.',
- 'datasetFound':'Conjunto de datos encontrados se ha agregado a la vista previa del mapa.',
- 'checkFailure':'Fallo al revisar el conjunto de datos en el nodo remoto.',
- 'addOnlineSourceTitle':'Enlace de servicio para los metadatos',
- 'addOnlineSource':'Añadir enlaces',
- 'addOnlineSourceTT':'Agregar una fuente de la sección en línea de registro de metadatos actual que en los servicios WMS / WFS / WCS. Si el servicio es una capa WMS se puede mostrar en el Visualizador de Mapas.',
- 'statusInformation':'Información de estado.',
- 'publishing':'Publicando ...',
- 'mapPreview':'Mapa de vista previa',
- 'selectANode':'Seleccione un nodo ...',
- 'geoPublisherWindowTitle':'Geo-publicación',
- 'keywordSelectionWindowTitle':'Selección de palabras clave',
- 'crsSelectionWindowTitle':'Coordinar la selección de referencia del sistema',
- 'linkedMetadataSelectionWindowTitle':'Selección de los metadatos relacionados',
- 'NotOwnerError':'Usted no tiene permiso para actualizar el registro relacionado.',
- 'ServiceUpdateError':'Error en la actualización de los metadatos de servicio',
- 'associateService':'Enlace de metadatos de servicio',
- 'associateDataset':'Enlace registro de metadatos',
- 'logoSelectionWindow':'Seleccione un logotipo',
- 'fileUploadWindow':'Carga de datos o documentos',
- 'selectedCRS':'Selección de los sistemas de coordenadas',
- 'foundCRS':'Disponibles sistemas de coordenadas',
- 'search':'Buscar',
- 'restrictSearchToMap':'Limitar el alcance de la búsqueda para reflexionar',
- 'selected':'seleccionado',
- 'selectRegion':'Elige una región ...',
- 'drawRectangle':'Dibuja un rectángulo',
- 'drawPolygon':'Dibuja un polígono',
- 'drawPolygonTT':'Haga clic en el botón y dibujar un polígono haciendo clic en el mapa para cada punto. Haga doble clic en el último punto del polígono para hacer.',
- 'drawCircle':'Dibuja un círculo',
- 'discovery':'Descubrimiento',
- 'visualization':'Visualización',
- 'when':'¿Cuándo?',
- 'anyTime':'Cada vez',
- 'onSelection':'Después de la selección',
- 'adminAction':'Otro',
- 'newMetadata':'Metadatos Nuevo',
- 'chooseTemplate':'Seleccione una plantilla',
- 'process':'Proceso',
- 'suggestions':'Propuestas',
- 'applySelected':'Introduzca tarea seleccionada',
- 'processParametersWindow':'Parámetros de la tarea',
- 'noSuggestion':'Ninguna propuesta.',
- 'thumbnailUploadWindow':'Miniatura de la foto',
- 'addThumbnail':'Añadir',
- 'createSmall':'Vista previa pequeña Nueva',
- 'scalingFactor':'Factor de escala',
- 'smallScalingFactor':'Factor de escala pequeña',
- 'type':'Tipo de registro',
- 'clickToClose':'Haga clic para cerrar',
- 'removeSelected':'Eliminar la selección',
- 'ownerName':'Propietario del registro de metadatos',
- 'setPrivileges':'Establecer privilegios',
- 'setBatchPrivileges': 'Overwrite privileges of selected records',
- 'setCategories':'Establecer categorías',
- 'massiveOp':'Modo por lotes',
- 'prepareDownload':'Descarga de archivos',
- 'mdMenu':'Acciones',
- 'deleteRecord':'Eliminar los metadatos?',
- 'deleteConfirm':'¿Estás seguro de eliminar este registro de metadatos?',
- 'deleteRecordSuccess':'Los metadatos borrados.',
- 'deleteRecordFailure':'Error al eliminar los metadatos.',
- 'advancedSearchOptions':'Criterios avanzados',
- 'relatedservices':'Servicios relacionados con',
- 'relatedsource': 'Source datasets',
- 'relatedhassource': 'Is used in',
- 'relatedchildren':'Hijos',
- 'relatedsibling': 'Related records',
- 'relatedassociated': 'Related records',
- 'relatedfcats':'Catálogo de Funciones Relacionadas',
- 'relatedhasfeaturecat':'Conjuntos de datos',
- 'relatedsources':'Registros de origen',
- 'getMEF':'Exportaciones (ZIP)',
- 'metadataCategories':'El meta-categorías',
- 'validityInfo':'Estado de la validación',
- 'lastUpdate':'Última actualización',
- 'importMetadata':'Importar metadatos',
- 'validationStatus':'Estado de la validación',
- 'valid':'Válido',
- 'notValid':'No es válido',
- 'notDetermined':'No se ha determinado',
- 'addToMap':'Añadir al mapa',
- 'map': 'Map',
- 'interactiveMap': 'Interactive map',
- 'staticMap': 'Static map',
- 'downloadLink':'Descargar',
- 'webLink':'Weblink',
- 'viewKml':'Abrir en Google Earth',
- 'layerTree':'Gestor de capas',
- 'mdResultsLayer':'Resultados de la búsqueda',
- 'printLayer':'Imprimir esta página',
- 'relatedservices':'Servicios relacionados con',
- 'relatedparent':'Padre',
- 'relatedsibling': 'Related records',
- 'relateddatasets':'Registros similares',
- 'relatedchildren':'Hijos',
- 'relatedrelated':'Característica catalog / enlace de datos',
- 'delete19110Relation':'Retire relación del catálogo de rasgos',
- 'newWindow':'Nueva ventana',
- 'addAsXLink':'Añadir un elemento vinculado',
- 'contactSelectionWindowTitle':'Seleccionar contacto',
- 'selectedContacts':'Contactos seleccionados',
- 'foundContacts':'Disponible',
- 'contactRole':'Rol de contacto',
- 'mapNearYou':'Centrar mapa en su ubicación',
- 'errorChangeProtocol':'Elimine el fichero cargado antes de cambiar el protocolo de un recurso en línea.',
- 'resultBy':'Resultado (s) /',
- 'subTemplateImport':'Importación de entradas de directorio',
- 'xmlData':'XML',
- 'minorEdit':'Correcciones menores',
- 'minorEditTT':'',
-
- // Shortcuts
- 'runASearch':'Haga una búsqueda.',
- 'focusOnAny':'Mover el enfoque al campo de búsqueda de texto completo.',
- 'hideSearchForm':'Mostrar u ocultar el formulario de búsqueda.',
- 'switchMode':'Activar el modo de visualización.',
- 'resetSearchForm':'Restablecer el formulario de búsqueda.',
- 'focusOnLogin':'Centrarse en el acceso al formulario de acceso para administrar catálogo de la sesión o una cuenta',
- 'openAdmin':'Ir a administración',
- 'displayInfoPanel':'Muestra el panel de información.',
- 'displayHelpPanel':'Muestra la ayuda.',
-
- 'SelectionWindowTitle':'Elija de la lista',
- 'found':'Registros encontrados',
- 'selected':'Seleccionado',
-
- 'create':'Crear',
-
- // Feedback
- 'feedbackcontactDetails' : 'Los datos de contacto',
- 'feedbacknameInitials' : 'Nombre, Inicial (s)',
- 'feedbackmale' : 'Masculino',
- 'feedbackfemale' : 'Femenino',
- 'feedbackposition' : 'Posición',
- 'feedbackorganization' : 'Organización',
- 'feedbackphone' : 'Teléfono',
- 'feedbackemail' : 'Email',
- 'feedbackfeedback': 'Reacción',
- 'feedbackfunction': 'Función',
- 'feedbackquestion': 'Cuestión',
- 'feedbackerror' : 'Error',
- 'feedbackremark' : 'Observación',
- 'feedbackcontact' : 'Contacto',
- 'feedbackcategory' : 'Categoría',
- 'feedbackmetadataContent' : 'Contenido de metadatos',
- 'feedbackdataContent' : 'Contenido de dados',
- 'feedbackserviceContent' : 'Contenido de servicios',
- 'feedbacksupport' : 'Apoyo',
- 'feedbackmapViewer' : 'Map Viewer',
- 'feedbacksearch' : 'Buscar',
- 'feedbackorganizations' : 'Organizaciones',
- 'feedbackcontentManagement' : 'Content Management',
- 'feedbackmetadataImport' : 'Importación de metadatos',
- 'feedbackmetadataEdit' :'Edición de metadatos',
- 'feedbackharvesting' : 'Cosecha',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'De otra manera',
- 'feedbackremarks' : 'Notas',
- 'feedbackmetadataData' : 'Metadatos información',
- 'feedbacktitle' : 'Título',
- 'feedbackPanelTitle' : 'Con este formulario puede dar su opinión sobre metadatos, datos y / o servicios.',
- 'feedbacksubmit' : 'Enviar',
- 'feedbackerrorTitle' : 'Precaución',
- 'feedbackerrorMsg' : 'Se produjo un error durante el envío. Por favor, inténtelo de nuevo más tarde.',
- 'feedbackcancel' : 'Cancelar',
- 'feedbackWindowTitle' : 'Reacción',
-
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace':'Reemplazar la extensión existente',
- 'add-info-from-wmssetExtent':'Establecer extensión',
- 'add-info-from-wmssetAndReplaceExtent':'Reemplazar la extensión existente',
- 'add-info-from-wmssetCRS':'Establecer sistema de coordenadas de referencia',
- 'add-info-from-wmssetDynamicGraphicOverview':'Establecer gráfico (usando la URL de la petición GetMap )',
- 'add-info-from-wmswmsServiceUrl':'Servicio de URL',
- 'linked-data-checkerlinkUrl':'Eliminar URL',
- 'related-metadata-checkeruuidToRemove':'Retire los identificadores',
- 'add-service-info-from-wxssetAndReplaceOperations':'Reemplazar las operaciones existentes',
- 'add-service-info-from-wxswxsServiceUrl':'Servicio de URL',
-
- // Admin
- 'manageDirectories ':'Gestión de Directorios',
- 'directory':'Directorio',
- 'thesaurusManager':'Gestión de Tesauro',
- 'Theme':'Tema',
- 'thesaurusFilePath':'Archivo de tesauro (. RDF)',
- 'ThesaurusTitle':'Nombre de tesauro',
- 'ThesaurusId': 'Thesaurus identifier',
- 'ThesaurusNs': 'Thesaurus namespace',
- 'createThesaurusFromURL':'desde URL',
- 'createThesaurusFromRepository':'desde repositorio de tesauro',
- 'creationMode':'Crear',
- 'thesaurusFromRepository':'Tesauro',
- 'externalThesaurusURL':'URL',
- 'thesaurusCreation':'Añadir un Tesauro',
- 'Type':'Tipo',
- 'Activated':'Habilitado',
- 'emptyThesaurus':'Nuevo tesauro vacío',
- 'thesaurusFromFile':'Desde el archivo local',
- 'thesaurusFromURL':'Archivo remoto (URL)',
- 'id':'Identificador',
- 'mdIdentifier': 'Record internal identifier: ',
- 'mdUUID': 'Record unique identifier: ',
- 'label':'Etiqueta',
- 'definition':'-',
- 'xmin':'X min',
- 'ymin':'Y min',
- 'xmax':'X max',
- 'ymax':'Y max',
- 'newLabel':'Etiqueta',
- 'newDefinition':'Definición',
- 'selDirectoryTT':'Seleccione un directorio. Un grupo de Directorio de todos los elementos que tienen el nombre de la raíz mismo elemento (por ejemplo, GMD',
- 'privTplElTT':'Administración de permisos para la selección actual.',
- 'addTplElTT':'Añadir un elemento de un fragmento de XML en un directorio. El directorio de destino es el nombre del elemento raíz (por ejemplo, basada en GMD',
- 'copyTplElTT':'Crear una nueva entrada en el directorio de la selección actual.',
- 'delTplElTT':'Eliminar elemento seleccionado en la guía telefónica.',
-
- 'Home':'Inicio',
- 'Map':'Mapa',
- 'Poweredby':'Proporcionado por',
- 'About':'Acerca de',
- 'org':'Organización',
- 'keyword':'Palabra clave',
- 'When':'Cuando',
- 'Where':'Donde',
- 'What':'Qué',
- 'advancedSearchOptions':'Opciones avanzadas de búsqueda',
- 'hitsPerPage':'Resultados por página',
- 'Searchforspatialdataon':'Buscar los datos espaciales sobre',
- 'search':'Buscar',
- 'fullTextSearch':'búsqueda de texto completo',
- 'reset':'Limpiar',
- 'resetSearchForm':'Restablecer el formulario de búsqueda',
- 'Advanced':'Avanzado',
- 'newWindow':'Nueva ventana',
- 'mdEditor':'El Editor de Metadatos',
- 'facetMore': '+ Show more',
- 'facetLess': '- Show less',
-
- 'extractorTitle': 'Download data from ',
- 'defineExtractionArea': 'Define extraction area',
- 'chooseALayer': 'Choose a layer',
- 'outputFormat': 'Output format',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service version',
- 'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- 'List':'Lista',
- 'to-iso19139-keyword': 'Text mode',
- 'to-iso19139-keyword-as-xlink': 'Linked mode',
- 'to-iso19139-keyword-with-anchor': 'Anchor mode',
- 'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
- 'linklabel-application/vnd.ogc.wmc': 'Interactive map',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Add to map',
- 'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
- 'linklabel-application/zip': 'Download',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
- 'linklabel-application/x-compressed': 'Download',
- 'linklabel-application/octet-stream': 'Download',
- 'linklabel-text/html': 'Web link',
- 'linklabel-text/plain': 'Web link',
- 'linklabel-image/png': 'Image link',
- 'linklabel-image/jpeg': 'Image link',
- 'linklabel-': 'Link',
- 'insertMode': 'Insert Mode',
- 'fileUpload': 'File upload',
- 'copyPaste': 'Copy/Paste',
- 'fileType': 'File Type',
- 'singleFile' :'Single File (XML, SLD, WMC...)',
- 'mefFile': 'MEF file',
- 'importActions': 'Import actions',
- 'noActionOnImport': 'No action on import',
- 'overwriteMD': 'Overwrite metadata with same UUID' ,
- 'generateUuid': 'Generate UUID for inserted metadata',
- 'styleSheet': 'StyleSheet',
- 'validate': 'Validate',
- 'assignCurCat': 'Assign to current catalog',
- 'metadata': 'Metadata',
- 'mdInsertResults': 'Results of metadata import',
- 'mdInsertSuccess': 'Metadata inserted with',
- 'mdInsertFailure': 'Error while inserting metadata : ',
- 'mdRecordsProcessed': 'Total number of metadata records processed',
- 'mdRecordsAdded': 'Total number of metadata records added',
- 'chooseCategory': 'Choose a category',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.es, GeoNetwork.Lang.es);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/fr.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/fr.js
deleted file mode 100644
index 59290d75980..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/fr.js
+++ /dev/null
@@ -1,723 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.fr = {
- 'unsupportedBrowser': 'Navigateur non supporté',
- 'editorBrowserRestriction': "La version du navigateur Internet Explorer que vous utilisez n'est plus compatible avec certaines fonctionnalités les plus récentes (édition, administration). Le catalogue risque de ne pas fonctionner correctement, vous devez installer un navigateur récent.",
- 'metadataRecordPublishedTitle': 'Publication',
- 'metadataRecordPublished': '${title} est maintenant visible par tous.',
- 'metadataRecordUnPublished': '${title} n\'est plus visible par tous.',
- 'metadata-not-found': 'La métadonnée avec l\'identifiant ${uuid} n\'a pas été trouvée ou n\'est pas partagée avec vous.',
- 'Administrator': 'Administrateur',
- 'filterGroup': 'Filtrer les groupes ...',
- 'checkAllOrNone': 'Cocher tout/rien',
- 'Reviewer': 'Relecteur',
- 'RegisteredUser': 'Utilisateur inscrit',
- 'Editor': 'Éditeur',
- 'harvestingAdmin': 'Gestion du moissonnage',
- 'updateUserInfo': 'Afficher mon profil',
- 'updatePassword': 'Changer de mot de passe',
- 'myMetadata': 'Mes métadonnées',
- '_owner': 'Identifiant utilisateur',
- '_isHarvested': 'Fiches moissonnées',
- 'templates': 'Les modèles de saisie',
- 'myDraft': 'Mes brouillons',
- 'QuickSearch': 'Recherches rapides',
- 'LastSubmitted': 'Dernières soumissions',
- 'lastUpdates': 'Dernières mises à jour',
- '_indexingError': 'Erreur d\'indexation',
- 'RecordWithIndexingError': 'Métadonnées avec des erreurs d\'indexation',
- 'fromLocalCatalog': 'Métadonnées du catalogue local',
- 'fromHarvestedCatalog': 'Métadonnées moissonnées',
- 'dateType': 'Type de date',
- 'creationDate': 'Date de création',
- 'modificationDate': 'Date de modification',
- 'publicationDate': 'Date de publication',
- 'previousPage': 'Page précédente',
- 'nextPage': 'Page suivante',
- 'upInPage': 'Se déplacer vers le haut des résultats',
- 'downInPage': 'Se déplacer vers le bas des résultats',
- 'example': "Exemple :",
- 'noInfo': 'Aucune information',
- 'helper': "Suggestion :",
- 'toggleLayerManager': 'Afficher le gestionnaire de couches',
- 'tagName': "Nom de l'élément :",
- 'enableTooltip': 'Activer les info-bulles pour obtenir une description complète de chaque champs.',
- 'connectIssue': "Échec de connexion au catalogue",
- 'connectIssueMsg': "Erreur 404. Impossible de se connecter à l'URL ",
- 'featureInfoTooltipTitle': "caractéristique",
- 'featureInfoTooltipText': "Cliquer sur la carte pour obtenir des informations sur les données affichees.",
- 'zoomToMaxExtentTooltipTitle': "Zoom optimal",
- 'zoomToMaxExtentTooltipText': "Utiliser ce bouton pour tout afficher.",
- 'zoominTooltipTitle': "Zoomer",
- 'zoominTooltipText': "Dessiner un rectangle sur la carte pour zoomer. En cliquant sur la carte, le facteur de zoom est 2.",
- 'zoomoutTooltipTitle': "Dézoomer",
- 'zoomoutTooltipText': "Cliquer sur la carte ou dessiner un rectangle pour dézoomer.",
- 'dragTooltipTitle': "Main",
- 'dragTooltipText': "Appuyer sur le bouton gauche de la souris pour déplacer la carte.",
- 'previousTooltipTitle': "Revenir au zoom précédant",
- 'previosTooltipText': "Cliquer ici pour revenir au zoom précédant",
- 'nextTooltipTitle': "Zoom suivant",
- 'nextTooltipText': "Cliquer ici pour avancer au zoom suivant",
- 'featureInfoTitle': "Caractéristique",
- 'layerManagerTabTitle': "Gérer les couches",
- 'legendTabTitle': "Légende",
- 'scaleTitle': "Echelle",
- 'xTitle': "X",
- 'yTitle': "Y",
- 'projectionTitle': "Projection",
- 'FeatureInfoNotQueryable': "Il n'existe pas de carte correspondant à la requête",
- 'WMSBrowserTab1': "Sélectionner",
- 'WMSBrowserTab3': "Externe",
- 'WMSBrowserPreviewTitle': "Aperçu de la couche",
- 'WMSBrowserAddButton': "Ajouter",
- 'WMSBrowserDuplicateMsg': "La couche est déjà affichée",
- 'WMSBrowserPreviewWaitMsg': "Récupérer l'image precedente",
- 'WMSBrowserConnectButton': "Connexion",
- 'WMSBrowserConnectError': "Erreur de connexion au service Web, merci de vérifier l'URL.",
- 'infoTitle': "Information",
- 'mf.print.mapTitle': "Titre",
- 'mf.print.comment': "Commentaire",
- 'mf.print.dpi': "Résolution",
- 'mf.print.scale': "Échelle",
- 'mf.print.rotation': "Angle",
- 'mf.print.resetPos': "Reset",
- 'mf.print.print': "Imprimer",
- 'mf.print.generatingPDF': "Générer PDF",
- 'mf.print.unableToPrint': "Impression impossible, essayer plus tard",
- 'mf.error': "Erreur",
- 'selectExtentTooltipTitle': "Définir une emprise",
- 'selectExtentTooltipText': "Dessiner une emprise à utiliser comme critère géographique",
- 'clearExtentTooltipTitle': "Supprimer l'emprise",
- 'clearExtentTooltipText': "Supprimer l'emprise (ie. aucun critère géographique)",
- 'printTooltipTitle': "Imprimer",
- 'printTooltipText': "Imprimer la carte actuelle",
- 'savewmcTooltipTitle': "Sauvegarder environnement (vue, paramètres,etc.)",
- 'savewmcTooltipText': "Sauvegarder environnement pour la carte actuelle",
- 'saveWMCFile.windowTitle': "Sauvegarder l'environnement",
- 'saveWMCFile.errorSaveWMC': "Sauvegarde de l'environnement impossible",
- 'loadwmcTooltipTitle': "Restaurer l'environnement",
- 'loadwmcTooltipText': "Restaurer l'environnement dans la carte actuelle",
- 'selectWMCFile.windowTitle': "Restaurer l'environnement",
- 'selectWMCFile': "Ouvrir un environnement",
- 'selectWMCFile.waitLoadingWMC': "Restauration de l'environnement en cours...",
- 'selectWMCFile.loadButtonText': "Charger",
- 'selectWMCFile.mergeButtonText': "Fusionner",
- 'selectWMCFile.errorLoadingWMC': "Chargement de l'environnement impossible",
- 'opacityButtonText': "Transparence",
- 'opacityWindowTitle': "Transparence",
- 'metadataButtonText': "Metadonnées",
- 'removeButtonText': "Supprimer",
- 'addWMSButtonText': "Ajouter WMS",
- 'addWMSWindowTitle': "Ajouter WMS",
- 'layerInfoPanel.windowTitle': "Couche metadata",
- 'layerInfoPanel.titleField': "Titre",
- 'layerInfoPanel.descriptionField': "Description",
- 'layerInfoPanel.queryableField': "Requête",
- 'layerList': "Liste des couches",
- 'baseLayerList': "Fond de carte",
- 'overlaysList': "Calques",
- 'metadataResults.buttonText': "Résultats Metadata",
- 'metadataResults.tooltipTitle': "résultats Metadata",
- 'metadataResults.tooltipText': "Aller a la page des résultats Metadata",
- 'metadataResults.alertTitle': "Résultats Metadata",
- 'metadataResults.alertText': "Pas de résultats Metadata",
- 'mf.information': 'Imprimer',
- 'mf.print.pdfReady': 'PDF prêt',
- 'loadLayer.loadingMessage': "Chargement de la couche",
- 'loadLayer.error.title': "Charger la couche",
- 'loadLayer.error.message': "La couche ne peut être chargée",
- 'disclaimer.windowTitle': "Disclaimer",
- 'disclaimer.loading': "Chargement...",
- 'disclaimer.buttonClose': "Fermer",
- 'gazetteerAddressField1Label': "Code postal",
- 'gazetteerAddressField2Label': "Street",
- 'gazetteerAddressField3Label': "Place",
- 'gazetteerAddressField4Label': "Municipalité",
- 'gazetteerAddressField5Label': "Numéro",
- 'searchOptionButton': "Recherche",
- 'GazetteerWindowTitle': "Résultat pour l'adresse",
- 'searchResults': "Recherche les résultats",
- 'resetSearchForm': "Réinitialiser le formulaire de recherche.",
- 'errorTitle': "Erreur",
- 'SearchOptionLoadFailureMsg': "Pas de résultats trouvés. \n Le serveur peut être indisponible. \n",
- 'gazetteerTooltipTitle': "Recherche basée sur l'adresse",
- 'gazetteerTooltipText': "Recherche du lieu, basé sur le code postal, la rue, la municipalité ou place.",
- 'SearchOptionNoResults': "Pas de résultats trouvés.",
- 'zoomlayerTooltipTitle': "Zoom sur une couche",
- 'zoomlayerTooltipText': "Utilisez ce bouton pour accéder à la pleine mesure de le calque sélectionné.",
- 'zoomlayer.selectLayerTitle': "Zoom sur une couche",
- 'zoomlayer.selectLayerText': "No de calque sélectionné",
- 'layerStylesWindowTitle': "Layer styles",
- 'layerStylesPreviewTitle': "Preview legend",
- 'selectStyleButton': "Select style",
- 'WMSTimeWindowTitle': "WMS Time",
- 'WMSTimePositionTitle': "Time position",
- 'WMSTimeMovieTitle': "Animation",
- 'wmsTimeUpdateButtonText': "Apply",
- 'WMSTimeAnimationCheckbox': "Play a movie loop spanning the last ${steps} time positions",
- 'fullTextSearch': "Rechercher ...",
- 'keyword': "Mots-clés",
- 'org': "Organisation",
- 'altTitle': "Titre alternatif",
- 'mapTypes': "Type de données",
- 'rsIdentifier': "Identifiant de la ressource",
- 'inspireSearchOptions': 'INSPIRE',
- 'inspireannex': 'Annexe',
- 'inspirerelated': 'Ressources concernées par INSPIRE',
- 'inspirerelatedtt': 'Données décrivant un rapport sur la conformité vis-à-vis des spécifications sur les données INSPIRE.',
- 'inspiretheme': 'Thème',
- 'inspireClassificationDataServices': 'Classification des services',
- 'serviceType': 'Type de service',
- 'serviceType_discovery': 'Service de découverte (discovery)',
- 'serviceType_download': 'Service de téléchargement (download)',
- 'serviceType_view': 'Service de visualisation (view)',
- 'serviceType_transformation': 'Service de transformation (transformation)',
- 'serviceType_invoke': 'Service d\'invocation (invoke)',
- 'serviceType_other': 'Autres services (other)',
- 'similarity': 'Précision',
- 'wkt': 'Geométrie WKT',
- 'spatialSearch': 'Critères géographiques',
- 'mdChangeDate': 'Date de mise à jour des métadonnées',
- 'tempExtent': 'Étendue temporelle',
- 'hitsPerPage': 'Nombre par page',
- 'sortBy': 'Trier par',
- 'options': 'Options',
- 'relevance': 'Pertinence',
- 'title': 'Titre',
- 'changeDate': 'Date de mise à jour',
- 'rating': 'Note',
- 'popularity': 'Popularité',
- 'scaleDesc': 'Échelle (desc)',
- 'scaleAsc': 'Échelle (asc)',
- 'abstract': 'Résumé',
- 'catalogue': 'Catalogue',
- 'group': 'Groupe',
- 'md': 'Métadonnée',
- 'tpl': 'Modèle',
- 'category': 'Catégorie',
- 'advTextSearch': 'Options avancées',
- 'eitherWords': 'Tous - au moins un des mots suivants',
- 'exactPhrase': 'Cette expression exacte',
- 'allWords': 'Tous les mots suivants',
- 'withoutWords': 'Aucun des mots suivants',
- 'precise': 'Précis',
- 'imprecise': 'Flou',
- 'relationType': 'Type de relation',
- 'within': "À l'intérieur",
- 'touches': 'Touche',
- 'crosses': 'Travers',
- 'fullyOutsideOf': 'En dehors',
- 'encloses': 'Contient',
- 'overlaps': 'Chevauche',
- 'intersection': 'Intersecte',
- 'nearYou': 'À proximité',
- 'from': 'du',
- 'to': 'au',
- 'scaleNominator': '1/',
- 'scale': 'Échelle',
- 'digital': 'Numérique',
- 'hardCopy': 'Copie papier',
- 'download': 'Télécharger',
- 'downloadable': 'Téléchargeable',
- 'interactive': 'Interactive',
- 'resourceType': 'Type de ressource',
-// 'dataset': 'Série de données',
-// 'series': 'Ensemble de séries de données',
- 'model': 'Catalogue d\'attributs',
- 'dataset': 'Jeu de données',
- 'series': 'Séries',
- 'service': 'Service',
- 'spatialRepType': 'Représentation spatiale',
- 'video': 'Vidéo',
- 'vector': 'Vecteur',
- 'textTable': 'Tableau, Texte',
- 'tin': 'Tin',
- 'stereoModel': 'Vue 3D',
- 'grid': 'Raster',
- 'kind': 'Type',
- 'enterGetCapURL': "Saisir l'URL d'un GetCapabilities pour enregistrer un nouveau service",
- 'edit': 'Éditer',
- 'duplicate': 'Dupliquer',
- 'delete': 'Supprimer',
- 'createChild': 'Créer un enfant',
- 'privileges': 'Privilèges',
- 'privilegesTT': 'Gérer les privilèges pour l\'accès public et les divers groupes du catalogue.',
- 'categories': 'Catégories',
- 'otherActions': 'Autres actions',
- 'permalinkInfo': 'Collez le lien suivant dans un e-mail ou dans un message instantané',
- 'view': 'Consulter',
- 'zoomTo': 'Zoomer vers',
- 'saveXml': 'Export (XML)',
- 'saveRdf': 'Export (RDF)',
- 'exportCsv': 'Export (CSV)',
- 'exportZip': 'Export (ZIP)',
- 'printSel': 'Export (PDF)',
- 'printTT': 'Imprimer. Ouvre une nouvelle page adaptée à l\'impression.',
- 'newOwner': 'Associer un autre auteur',
- 'updateCategories': 'Mettre à jour les catégories',
- 'updatePrivileges': 'Mettre à jour les privilèges',
- 'noneSelected': 'Sélection vide',
- 'none': 'aucun',
- 'all': 'tous',
- 'allInPage': 'tous dans la page',
- 'select': 'Selectionner ',
- 'username': "Identifiant",
- 'password': 'Mot de passe',
- 'login': 'Connexion',
- 'logout': 'Déconnexion',
- 'administration': 'Administration',
- 'validationReport': 'Rapport de validation',
- 'setStatus': 'État de la métadonnée',
- 'status': 'Changer l\'état',
- 'updateStatus': 'Mettre à jour l\'état',
- 'currentStatus': ' (état de la fiche : ${status})',
- 'enableWorkflow': 'Activer la gestion de l\'état de la fiche',
- 'enableWorkflowStart': 'La fiche est maintenant à l\'état brouillon.',
- 'updateVersion': 'Activer le suivi des versions',
- 'addLayerSelection': 'Ajouter les couches de la sélection à la carte',
- 'statusTT': 'Modifier l\'état d\'une métadonnée (eg. brouillon, validé, rejeté).',
- 'setVersioning': 'Suivi des versions',
- 'versioning': 'Activer le suivi des versions',
- 'versioningTT': 'Une fois activé, tous les changements réalisés sur la fiche seront sauvegardés dans le dépôt SVN pour le suivi des versions.',
- 'items': 'éléments',
- 'item': 'élément',
- 'thumbnails': 'Aperçus',
- 'noimages': 'Aucun aperçu disponible',
- 'add': 'Ajouter',
- 'small': 'Petit',
- 'large': 'Grand',
- 'selectImage': 'Sélectionner une image',
- 'selectFile': 'Sélectionner un fichier',
- 'image': 'Image',
- 'uploading': 'Transfert en cours ...',
- 'upload': 'Transférer',
- 'success': 'Succès',
- 'failure': 'Échec',
- 'error': 'Erreur',
- 'save': 'Sauver',
- 'reset': 'Réinitialiser',
- 'fileProcessedMsg': 'Traitement du fichier ${res} réalisé sur le serveur',
- 'suggestion': 'Suggestion',
- 'logoSelect': 'Sélectionner un logo',
- 'relatedResources': 'Ressources associées',
- 'add-thumbnail': 'Associer un aperçu',
- 'add-onlinesrc': 'Associer une ressource en ligne',
- 'add-parent': 'Associer une fiche parent',
- 'add-service': 'Associer un service',
- 'add-dataset': 'Associer un jeux de données',
- 'add-sources': 'Associer une donnée source',
- 'add-fcats': 'Associer un catalogue d\'attributs',
- 'add-sibling': 'Associer une ressource',
- 'fcats': 'Catalogue d\'attributs',
- 'thumbnail': 'Aperçus',
- 'children': 'Enfants',
- 'parent': 'Fiche parent',
- 'sibling': 'Autres ressources',
- 'onlinesrc': 'Ressources en ligne',
- 'sources': 'Données sources',
- 'remove': 'Supprimer',
- 'linkADocument': 'Un document',
- 'linkAMetadata': 'Ressource en ligne à partir d\'une fiche existante',
- 'linkAResource-': 'Associer une ressource ',
- 'linkAResource-thumbnail': 'Associer un aperçu à la métadonnées',
- 'linkAResource-fcats': 'Associer un catalogue d\'attributs à la métadonnées',
- 'linkAResource-parent': 'Associer une fiche de métadonnées parent à la métadonnées',
- 'linkAResource-dataset': 'Associer un jeux de données à la métadonnées',
- 'linkAResource-service': 'Associer un service à la métadonnées',
- 'linkAResource-sibling': 'Associer une ressource à la métadonnées',
- 'linkAResource-sources': 'Associer un jeux de données source à la métadonnées',
- 'linkAResource-onlinesrc': 'Associer une ressource en ligne à la métadonnées',
- 'associationType': 'Type d\'association',
- 'initiativeType': 'Type d\'initiative',
- 'uploadAnImage': 'Transférer une image',
- 'UploadError': 'Échec du transfert',
- 'setAThumbnailByURL': 'Associer une image par URL',
- 'setAURL': 'URL de la ressource',
- 'File': 'Fichier',
- 'Overwrite': 'Remplacer',
- 'Name': 'Libellé',
- 'createLink': 'Associer',
- 'featureCat': "Catalogue d'attributs",
- 'serviceMd': 'Métadonnées de service',
- 'datasetMd': 'Métadonnées de données',
- 'parentMd': 'Parent',
- 'updateChildren': 'Mettre à jour les enfants',
- 'records': 'enregistrements',
- 'record': 'enregistrement',
- 'recordsFound': ' fiche(s)',
- 'help': 'Aide',
- 'publishError': 'Échec lors de la publication.',
- 'outOfMemoryError': 'Érreur de dépassement de mémoire.',
- 'publishErrorCode': 'Code érreur :',
- 'saveAndCheck': 'Sauver et valider',
- 'saveAndClose': 'Sauver et fermer',
- 'cancel': 'Annuler',
- 'layout': 'Mise en page',
- 'Resolution': 'Résolution',
- 'collapseAll': 'Réduire les sections',
- 'editAttributes': 'Gérer les attributs',
- 'chooseAType': 'Choisir un type',
- 'chooseAView': 'Choisir une vue',
- 'viewMode': "Affichage",
- 'errorAndStatusMsg': 'Érreur. Status : ${status}, description : ${text}. Essayer à nouveau.',
- 'mdEditor': 'Editeur de métadonnée',
- 'editing': "${title} (${uuid}) en cours d'édition",
- 'GetCapabilitiesDocumentError': "Erreur lors de la tentative de récupération des informations du service (ie. GetCapabilities) avec l'adresse: ",
- 'maxResults': "Nombre de résultats",
- 'mdTitle': "Titre de la métadonnée",
- 'keywords': "Mots-clés",
- 'createRelation': "Créer la relation",
- 'createIfNotExistButton': "Créer une nouvelle métadonnée",
- 'getCapabilitiesLayer': "Couches du GetCapabilities",
- 'layerName': "Nom de la couche",
- 'searching': "Recherche en cours ...",
- 'perThesaurus': " par thesaurus",
- 'anyThesaurus': "Tous les thésaurus",
- 'addFromThesaurus': 'Ajouter à partir du thesaurus ...',
- 'selectedKeywords': "Mots clés sélectionnés",
- 'foundKeywords': "Mots clés trouvés",
- 'clear': "Effacer",
- 'publish': "Publier",
- 'publishTooltip': "Publier le jeu de données en cours dans le nœud distant. Si le jeu de données est présent, il est mis à jour.",
- 'publishSuccess': "Publication effectuée.",
- 'publishLayerAdded': " Couche ajoutée à la carte.",
- 'unpublish': "Dépublier",
- 'unpublishTooltip': "Supprimer le jeu de données en cours dans le nœud distant.",
- 'unpublishSuccess': "Dépublication effectuée.",
- 'unpublishError': "Echec de la dépublication. ",
- 'check': "Vérifier",
- 'errorDatasetNotFound': "Jeu de données non trouvé.",
- 'datasetFound': "Jeu de données trouvé et ajouté à la carte.",
- 'checkFailure': "Echec de la vérification de la présence du jeu de données dans le nœud distant.",
- 'addOnlineSourceTitle': "Lier le service à la fiche",
- 'addOnlineSource': "Ajouter les liens",
- 'addOnlineSourceTT': 'Ajouter les informations pour faire la liaison avec la couche dans le service WMS/WFS/WCS.',
- 'statusInformation': "Status.",
- 'publishing': "Publication en cours ...",
- 'mapPreview': "Carte",
- 'selectANode': "Choisir un nœud ...",
- 'geoPublisherWindowTitle': "Géo-publication : ",
- 'keywordSelectionWindowTitle': "Sélection de mots clés",
- 'crsSelectionWindowTitle': "Sélection des systèmes de coordonnées",
- 'linkedMetadataSelectionWindowTitle': "Sélection des métadonnées associées",
- 'NotOwnerError': "Vous n'avez pas les privilèges pour mettre à jour la métadonnée associée.",
- 'ServiceUpdateError': "Erreur lors de la mise à jour de la métadonnée.",
- 'associateService': "Associer une métadonnée de service",
- 'associateDataset': "Associer une métadonnée de données",
- 'logoSelectionWindow': "Sélectionner un logo",
- 'fileUploadWindow': 'Ajouter des données ou des documents',
- 'selectedCRS': "Systèmes sélectionnés",
- 'foundCRS': "Systèmes disponibles",
- 'search': 'Rechercher',
- 'restrictSearchToMap': 'Restreindre la recherche à la carte',
- 'selected': 'sélectionné(s)',
- 'selectRegion': 'Choisir une région ...',
- 'drawRectangle': "Créer un rectangle",
- 'drawPolygon': "Créer un polygone",
- 'drawCircle': 'Créer un cercle',
- 'discovery': 'Découverte',
- 'visualization': 'Visualisation',
- 'when': 'Critères temporels',
- 'anyTime': "N'importe quand",
- 'onSelection': 'Sur la sélection',
- 'adminAction': 'Autres',
- 'newMetadata': 'Nouvelle métadonnée',
- 'metadatatype': 'Type de ressource',
- 'newMetadataTitle': 'Pour créer une métadonnée, choisir un modèle de saisie puis sélectionner un groupe',
- 'tplTitle': 'Modèle de saisie',
- 'chooseGroup': 'Sélectionner un groupe',
- 'chooseTemplate': 'Sélectionner un modèle',
- 'process': 'Traiter',
- 'suggestions': 'Suggestions',
- 'applySelected': 'Appliquer le traitement sélectionné',
- 'processParametersWindow': 'Paramètres du traitement',
- 'noSuggestion': 'Aucune suggestion.',
- 'thumbnailUploadWindow': 'Ajouter un aperçu',
- 'addThumbnail': 'Ajouter',
- 'createSmall': 'Créer un petit aperçu',
- 'scalingFactor': "Facteur d'échelle",
- 'smallScalingFactor': "Facteur d'échelle",
- 'type': 'Type de fiche',
- 'clickToClose': 'Cliquer pour fermer',
- 'removeSelected': 'Supprimer la sélection',
- 'metadata.update.new': 'Chargement en cours ...',
- 'metadata.update.forget.new': 'Ré-initialisation en cours ...',
- 'ownerName': 'Rédacteur de la métadonnée',
- 'setPrivileges': 'Définir les privilèges',
- 'setBatchPrivileges': 'Modifier tous les privilèges des fiches sélectionnées',
- 'setCategories': 'Choisir les catégories',
- 'massiveOp': 'Opération sur la sélection',
- 'prepareDownload': 'Télécharger les fichiers',
- 'mdMenu': 'Actions',
- 'simpleViewMode': 'Vue simplifiée',
- 'deleteRecord': 'Supprimer la métadonnée ?',
- 'deleteConfirm': 'Confirmez-vous la suppression de la métadonnée ?',
- 'deleteRecordSuccess': 'Metadonnée supprimée',
- 'deleteRecordFailure': 'Échec lors de la suppression de la métadonnée',
- 'advancedSearchOptions': 'Critères avancés',
- 'getMEF': 'Export (ZIP)',
- 'metadataCategories': 'Catégories',
- 'validityInfo': 'Information sur la validation',
- 'lastUpdate': 'Dernières mises à jour : ',
- 'importMetadata': 'Import de métadonnées',
- 'import': 'Importer',
- 'validationStatus': 'Validation ',
- 'valid': 'Valide',
- 'notValid': 'Non valide',
- 'notDetermined': 'Non déterminé',
- 'addToMap': 'Ajouter à la carte : ',
- 'map': 'Carte',
- 'interactiveMap': 'Carte interactive',
- 'staticMap': 'Carte statique',
- 'downloadLink': 'Télécharger : ',
- 'webLink': 'Site web : ',
- 'viewKml': 'Visualiser avec GoogleEarth : ',
- 'layerTree': 'Gestion des couches',
- 'mdResultsLayer': 'Résultats de la recherche',
- 'printLayer': 'Page de l\'impression',
- 'relatedservices': 'Services associés',
- 'relatedsource': 'Données sources',
- 'relatedhassource': 'Utilisé par',
- 'relatedparent': 'Métadonnée parent',
- 'relatedsibling': 'Ressources associées',
- 'relatedassociated': 'Ressources associées',
- 'relateddatasets': 'Métadonnées associées',
- 'relatedchildren': 'Enfants',
- 'relatedrelated': 'Relation catalogue d\'attributs/données',
- 'relatedfcats': 'Relation catalogue d\'attributs/données',
- 'relatedhasfeaturecat': 'Donnée',
- 'relatedsources': 'Données sources',
- 'delete19110Relation': 'Supprimer le lien cat. d\'attributs',
- 'newWindow': 'Nouvelle fenêtre',
- 'addAsXLink': 'Ajout d\'un élément lié',
- 'contactSelectionWindowTitle': 'Sélection des contacts',
- 'selectedContacts': 'Contacts sélectionnés',
- 'foundContacts': 'Contacts disponibles',
- 'contactRole': 'Rôle du contact',
- 'mapNearYou': 'Centrer la carte sur votre position',
- 'create': 'Créer',
- 'errorChangeProtocol': 'Impossible de changer le protocol lorsqu\'un fichier est attaché. Supprimer le fichier.',
- 'resultBy': ' resultat(s) / ',
- 'subTemplateImport': 'Importer un élément dans un annuaire',
- 'xmlData': 'XML',
- 'minorEdit': 'Modif. mineure',
- 'minorEditTT': 'Lorsque cette option est activée, la date de mise à jour des métadonnées n\'est pas changée. Lors de l\'utilisation des suggestions, ou de la mise à jour d\'une imagette, cette option est sans effet, la date est mise à jour.',
- // Shortcuts
- 'runSearch': 'Lancer la recherche.',
- 'focusOnAny': 'Déplacer le curseur sur le critère plein texte.',
- 'hideSearchForm': 'Afficher ou cacher le formulaire de recherche.',
- 'switchMode': 'Changer de mode de visualisation.',
- 'focusOnLogin': 'Déplacer le curseur sur le formulaire de connexion ou déconnexion si vous êtes connecté.',
- 'openAdmin': 'Administrer le catalogue',
- 'displayInfoPanel': 'Afficher la page d\'information.',
- 'displayHelpPanel': 'Afficher cette page d\'aide.',
-
- 'SelectionWindowTitle': 'Rechercher dans l\'annuaire',
- 'found': 'Enregistrements trouvés',
-
- // Feedback
- 'feedbackcontactDetails' : 'Coordonnées',
- 'feedbacknameInitials' : 'Nom, Initiale (s)',
- 'feedbackmale' : 'Masculin',
- 'feedbackfemale' : 'Féminin',
- 'feedbackposition' : 'Position',
- 'feedbackorganization' : 'Organisation',
- 'feedbackphone' : 'Téléphone',
- 'feedbackemail' : 'E-mail',
- 'feedbackfeedback': 'Réaction',
- 'feedbackfunction': 'Fonction',
- 'feedbackquestion': 'Question',
- 'feedbackerror' : 'Erreur',
- 'feedbackremark' : 'Remarque',
- 'feedbackcontact' : 'Contacter',
- 'feedbackcategory' : 'Catégorie',
- 'feedbackmetadataContent' : 'Contenu des metadonnées',
- 'feedbackdataContent' : 'Contenu des données',
- 'feedbackserviceContent' : 'Contenu des services',
- 'feedbacksupport' : 'Soutenir',
- 'feedbackmapViewer' : 'Map Viewer',
- 'feedbacksearch' : 'Rechercher',
- 'feedbackorganizations' : 'Organisations',
- 'feedbackcontentManagement' : 'Gestion de contenu',
- 'feedbackmetadataImport' : 'Importation de métadonnées',
- 'feedbackmetadataEdit' :'Modification des métadonnées',
- 'feedbackharvesting' : 'Moissonnage',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Autrement',
- 'feedbackremarks' : 'Remarques',
- 'feedbackmetadataData' : 'Les informations de métadonnées',
- 'feedbacktitle' : 'Titre',
- 'feedbackPanelTitle' : 'Avec ce formulaire, vous pouvez améliorer les informations sur les métadonnées, les données et / ou des services.',
- 'feedbacksubmit' : 'Envoyer',
- 'feedbackerrorTitle' : 'Attention',
- 'feedbackerrorMsg' : 'Une erreur s\'est produite lors de l\'envoi. S\'il vous plaît réessayer plus tard.',
- 'feedbackcancel' : 'Annuler',
- 'feedbackWindowTitle' : 'réaction',
-
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace': 'Remplacer les étendues géographiques existantes',
- 'add-info-from-wmssetExtent': 'Définir l\'étendue',
- 'add-info-from-wmssetAndReplaceExtent': 'Remplacer les étendues existantes',
- 'add-info-from-wmssetCRS': 'Ajouter les systèmes de coordonnées',
- 'add-info-from-wmssetDynamicGraphicOverview': 'Définir l\'aperçu (en ajoutant une URL vers une requête GetMap)',
- 'add-info-from-wmswmsServiceUrl': 'URL du service',
- 'linked-data-checkerlinkUrl': 'Lien à supprimer',
- 'related-metadata-checkeruuidToRemove': 'Identifiant à supprimer',
- 'add-service-info-from-wxssetAndReplaceOperations': 'Remplacer les opérations existantes',
- 'add-service-info-from-wxswxsServiceUrl': 'URL du service',
-
- // Admin
- 'manageDirectories' : 'Gestion des annuaires',
- 'directory': 'Annuaire',
- 'thesaurusManager': 'Gestion des thésaurus',
- 'Theme': 'Thème',
- 'thesaurusFilePath': 'Fichier (.rdf)',
- 'ThesaurusTitle': 'Nom du thésaurus',
- 'ThesaurusId': 'Identifiant du thésaurus',
- 'ThesaurusNs': 'Espace de nommage du thésaurus',
- 'createThesaurusFromURL': 'A partir d\'une URL',
- 'createThesaurusFromRepository': 'A partir du dépôt partagé',
- 'creationMode': 'Créer',
- 'thesaurusFromRepository': 'Thésaurus',
- 'externalThesaurusURL': 'URL',
- 'thesaurusCreation': 'Ajout d\'un thésaurus',
- 'Type': 'Type',
- 'Activated': 'Activé',
- 'emptyThesaurus': 'Nouveau thésaurus vide',
- 'thesaurusFromFile': 'A partir d\'un fichier local',
- 'thesaurusFromURL': 'A partir d\'un fichier distant (URL)',
- 'id': 'Identifiant',
- 'mdIdentifier': 'Identifiant interne de la fiche : ',
- 'mdUUID': 'Identifiant unique : ',
- 'label': 'Libellé',
- 'definition': '-',
- 'xmin': 'X min',
- 'ymin': 'Y min',
- 'xmax': 'X max',
- 'ymax': 'Y max',
- 'newLabel': 'Libellé',
- 'newDefinition': 'Définition',
- 'selDirectoryTT': "Choisir un type d'annuaire. Un annuaire est constitué d'éléments ayant la même balise racine (eg. les éléments gmd:CI_ResponsibleParty font partie de l'annuaire de contact)",
- 'privTplElTT': 'Gérer les privilèges sur la sélection.',
- 'addTplElTT': "Ajouter un élément à partir d'un fragment d'XML. L'annuaire cible est basé sur le nom de la balise racine (eg. gmd:CI_ResponsibleParty).",
- 'copyTplElTT': "Créer un nouvel élément dans l'annuaire à partir de l'élément sélectionné.",
- 'delTplElTT': 'Supprimer la sélection.',
- 'removeFilter': 'Supprimer',
- 'language': 'Langue',
- //tabbed search
- 'Home': "Accueil",
- 'Map': "Carte",
- 'Poweredby': "Propulsé par",
- 'About': "Sur",
- 'When': "Quand",
- 'Where': "Où",
- 'What': "Quoi",
- 'BROWSE': 'Rechercher',
- 'SEARCH RESULTS': 'Résultats',
- 'Social Share': 'Partager',
- 'Preview': 'Aperçu',
- 'cookies.warning': 'Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l\'utilisation des cookies.',
- 'Online data': 'Données en ligne',
- 'Data for download': 'Données à télécharger',
- 'No direct download': 'Données hors-ligne',
- 'Searchforspatialdataon': "Rechercher des données spatiales sur les",
- 'Advanced': "Avancées",
- 'metadataPOC': 'point de contact',
- 'metadataPOCs': 'Points de contact',
- 'spatialRepresentationType': 'Type de données',
- 'spatialRepresentationTypes': 'Types de données',
- 'createDateYear': 'année',
- 'createDateYears': 'Années',
- 'denominator': 'Niveau d\'échelle',
- 'denominators': 'Niveaux d\'échelle',
- 'orgName': 'l\'organisation',
- 'orgNames': 'Contact pour la ressource',
- 'serviceTypes': 'Type de service',
- 'types': 'Type de ressource',
- 'format': 'Format',
- 'formats': 'Formats',
- 'facetMore': '+ Voir tous les filtres',
- 'facetLess': '- Voir moins de filtres',
- 'List': "Liste",
- 'extractorTitle': 'Téléchargement à partir de ',
- 'defineExtractionArea': 'Dessiner la zone d\'extraction',
- 'chooseALayer': 'Sélectionner une couche',
- 'outputFormat': 'Format des données',
- 'dataDownload': "Télécharger les données",
- 'wfsVersion': 'Version',
- 'wxs-extract-service-not-found': 'Erreur lors de la connexion au service ${url}.',
- 'wxs-extract-layer-not-found': 'La couche ${layer} n\'a pas été trouvée dans le service (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Fichier texte CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- 'xsd': 'Modèle ISO',
- 'rules': 'règles',
- 'rule': 'règle',
- 'schematron-rules-geonetwork': 'Validation GeoNetwork',
- 'schematron-rules-iso': 'Validation ISO',
- 'schematron-rules-inspire': 'Validation INSPIRE',
- 'to-iso19139-keyword': 'Mode texte',
- 'to-iso19139-keyword-as-xlink': 'Mode XLink',
- 'to-iso19139-keyword-with-anchor': 'Mode Anchor',
- 'linklabel-application/vnd.ogc.wms_xml': 'Visualiser',
- 'linklabel-application/vnd.ogc.wmc': 'Visualiser',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Télécharger le Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Visualiser',
- 'linklabel-application/vnd.google-earth.kml+xml': 'KML',
- 'linklabel-application/zip': 'Télécharger',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Télécharger',
- 'linklabel-application/x-compressed': 'Télécharger',
- 'linklabel-application/octet-stream': 'Télécharger',
- 'linklabel-text/html': 'Liens',
- 'linklabel-text/plain': 'Liens',
- 'linklabel-image/png': 'Images',
- 'linklabel-image/jpeg': 'Images',
- 'linklabel-': 'Liens',
- 'insertMode': 'Mode d\'insertion',
- 'fileUpload': 'Import de fichiers',
- 'copyPaste': 'Copier/Coller',
- 'fileType': 'Type de fichier',
- 'singleFile' :'Fichier simple (XML, SLD, WMC...)',
- 'mefFile': 'Fichier MEF',
- 'importActions': 'Actions à l\'import',
- 'noActionOnImport': 'Aucune action à l\'import',
- 'overwriteMD': 'Ecraser les métadonnées de même identifiant' ,
- 'generateUuid': 'Générer un nouvel identifiant pour les métadonnées insérées',
- 'styleSheet': 'Feuille de style',
- 'validate': 'Valider',
- 'assignCurCat': 'Affecter à ce catalogue',
- 'metadata': 'Métadonnée',
- 'mdInsertResults': 'Résultat de l\'import de métadonnées :',
- 'mdInsertSuccess': 'Métadonnée insérée avec :',
- 'mdInsertFailure': 'Erreur lors de l\'insertion de la métadonnée : ',
- 'mdRecordsProcessed': 'Nombre total de métadonnées traitées',
- 'mdRecordsAdded': 'Nombre total de métadonnées ajoutées',
- 'chooseCategory': 'Choisissez une catégorie',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-OpenLayers.Util.extend(OpenLayers.Lang.fr, GeoNetwork.Lang.fr);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/nl.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/nl.js
deleted file mode 100644
index 0c8dc9b35fd..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/nl.js
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.nl = {
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'harvestingAdmin': 'Harvesting',
- 'filterGroup': 'Filter group ...',
- 'checkAllOrNone': 'Check all/none',
- 'updateUserInfo': 'Edit my profile',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Datum type',
- 'creationDate': 'Creatiedatum',
- 'modificationDate': 'Modificatiedatum',
- 'publicationDate': 'Publicatiedatum',
- 'previousPage': "Ga naar vorige pagina",
- 'nextPage': "Ga naar volgende pagina",
- 'upInPage': "Scroll naar boven in de resultaten",
- 'downInPage': "Scroll naar beneden in de resultaten",
- 'example': "Voorbeeld:",
- 'helper': "Suggestie:",
- 'toggleLayerManager': "Toon lagenbeheer",
- 'tagName': "Element naam:",
- 'enableTooltip': "Activeer tooltips om informatie te krijgen over elke parameter.",
- 'connectIssue': "Catalogus connectie probleem",
- 'connectIssueMsg': "Fout 404. Kan geen connectie maken met de catalogus via de url",
- 'featureInfoTooltipTitle': "Attribuut-informatie",
- 'featureInfoTooltipText': "Klik in de kaart om attribuut-informatie op te vragen van alle zichtbare lagen.",
- 'zoomToMaxExtentTooltipTitle': "Volledig kaartbeeld",
- 'zoomToMaxExtentTooltipText': "Klik op deze knop om naar het volledig kaartbeeld te zoomen.",
- 'zoominTooltipTitle': "Zoom in",
- 'zoominTooltipText': "Trek een kader in kaart om in te zoomen. Ook kan er geklikt worden in de kaart waarna er met een factor 2 ingezoomd wordt.",
- 'zoomoutTooltipTitle': "Zoom uit",
- 'zoomoutTooltipText': "Klik in de kaart om gecentreerd op dit punt met een factor 2 uit te zoomen. Ook kan er een kader in de kaart getrokken worden, hoe kleiner dit kader hoe verder er uitgezoomd zal worden.",
- 'dragTooltipTitle': "Verschuif kaart",
- 'dragTooltipText': "Houd de linker muisknop ingedrukt en versleep de kaart.",
- 'previousTooltipTitle': "Vorige kaartbegrenzing",
- 'previosTooltipText': "Klik op deze knop om terug te gaan naar de vorige kaartbegrenzing",
- 'nextTooltipTitle': "Volgende kaartbegrenzing",
- 'nextTooltipText': "Klik op deze knop om verder te gaan naar de volgende kaartbegrenzing",
- 'featureInfoTitle': "Attribuut-informatie",
- 'layerManagerTabTitle': "Kaartlagenbeheer",
- 'legendTabTitle': "Legenda",
- 'scaleTitle': "Schaal",
- 'xTitle': "X",
- 'yTitle': "Y",
- 'projectionTitle': "Projectie",
- 'FeatureInfoNotQueryable': "Er is geen bevraagbare kaartlaag",
- 'WMSBrowserTab1': "Selecteren",
- 'WMSBrowserTab3': "Extern",
- 'WMSBrowserPreviewTitle': "Voorbeeld kaartlaag",
- 'WMSBrowserAddButton': "Voeg toe",
- 'WMSBrowserDuplicateMsg': "Kaartlaag is reeds aanwezig.",
- 'WMSBrowserPreviewWaitMsg': "Voorbeeld afbeelding ophalen",
- 'WMSBrowserConnectButton': "Maak verbinding",
- 'WMSBrowserConnectError': "Er is een fout opgetreden bij het maken van de verbinding, controleer de URL.",
- 'infoTitle': "Informatie",
- 'mf.print.mapTitle': "Titel",
- 'mf.print.comment': "Opmerkingen",
- 'mf.print.dpi': "Resolutie",
- 'mf.print.scale': "Schaal",
- 'mf.print.rotation': "Rotatie",
- 'mf.print.resetPos': "Terug naar begininstellingen",
- 'mf.print.print': "Print",
- 'mf.print.generatingPDF': "Aanmaken PDF",
- 'mf.print.unableToPrint': "Het printen is niet gelukt, probeer het later nogmaals.",
- 'mf.error': "Fout",
- 'selectExtentTooltipTitle': "Begrens zoekgebied",
- 'selectExtentTooltipText': "Begrens het zoekgebied door in de kaart een kader te trekken.",
- 'clearExtentTooltipTitle': "Verwijder begrenzing",
- 'clearExtentTooltipText': "Verwijder begrenzing (ie. geen ruimtelijke criteria).",
- 'printTooltipTitle': "Print",
- 'printTooltipText': "Print de huidige kaart",
- 'savewmcTooltipTitle': "Opslaan WMC",
- 'savewmcTooltipText': "Sla een Web Map Context document op",
- 'saveWMCFile.windowTitle': "Opslaan Web Map Context",
- 'saveWMCFile.errorSaveWMC': "Kon het WMC bestand niet opslaan",
- 'loadwmcTooltipTitle': "Open WMC",
- 'loadwmcTooltipText': "Opent een bestaand Web Map Context document in de kaart viewer",
- 'selectWMCFile.windowTitle': "Openen Web Map Context",
- 'selectWMCFile': "Select WMC bestand",
- 'selectWMCFile.waitLoadingWMC': "Laden Web Map Context",
- 'selectWMCFile.loadButtonText': "Openen",
- 'selectWMCFile.mergeButtonText': "Samenvoegen",
- 'selectWMCFile.errorLoadingWMC': "Kon het Web Map Context bestand niet openen",
- 'opacityButtonText': "Transparantie",
- 'opacityWindowTitle': "Transparantie",
- 'metadataButtonText': "Metadata",
- 'removeButtonText': "Verwijderen",
- 'addWMSButtonText': "Voeg WMS toe",
- 'addWMSWindowTitle': "Voeg WMS toe",
- 'layerInfoPanel.windowTitle' : "Metadata van de kaartlaag",
- 'layerInfoPanel.titleField' : "Titel",
- 'layerInfoPanel.descriptionField' : "Samenvatting",
- 'layerInfoPanel.queryableField' : "Bevraagbaar",
- 'layerList' : "Kaartlagen",
- 'baseLayerList': "Ondergrond",
- 'metadataResults.buttonText' : "Metadata resultaten",
- 'metadataResults.tooltipTitle' : "Metadata resultaten",
- 'metadataResults.tooltipText' : "Ga naar de metadata resultaatpagina",
- 'metadataResults.alertTitle' : "Metadata resultaten",
- 'metadataResults.alertText' : "Geen metadata resultaten om te tonen",
- 'featureInfoWindow.windowTitle': "Attribuut-informatie",
- 'mf.information': "Print",
- 'mf.print.pdfReady': "PDF klaar",
- 'loadLayer.loadingMessage': "Ophalen kaartlaag",
- 'loadLayer.error.title': "Ophalen kaartlaag",
- 'loadLayer.error.message': "De kaartlaag kon niet worden geladen",
- 'disclaimer.windowTitle': "Disclaimer",
- 'disclaimer.loading': "Laden...",
- 'disclaimer.buttonClose': "Sluiten" ,
- 'gazetteerAddressField1Label': "Postcode",
- 'gazetteerAddressField2Label': "Straat",
- 'gazetteerAddressField3Label': "Plaats",
- 'gazetteerAddressField4Label': "Gemeente",
- 'gazetteerAddressField5Label': "Huisnummer",
- 'searchOptionButton': "Zoek",
- 'GazetteerWindowTitle': "Zoek adres",
- 'searchResults': "Zoekresultaten",
- 'errorTitle': "Fout",
- 'SearchOptionLoadFailureMsg': "Het is niet gelukt resultaten op te halen.\nMogelijk is de service tijdelijk niet beschikbaar.\n",
- 'gazetteerTooltipTitle': "Zoek op basis van een adres",
- 'gazetteerTooltipText': "Zoek een locatie op basis van een postcode, straatnaam, gemeente en/of plaats.",
- 'SearchOptionNoResults': "Geen resultaten gevonden",
- 'zoomlayerTooltipTitle': "Zoom naar laag",
- 'zoomlayerTooltipText': "Gebruik deze knop om naar de volledige begrenzing van de geselecteerde laag te zoomen.",
- 'zoomlayer.selectLayerTitle': "Zoom naar laag",
- 'zoomlayer.selectLayerText': "Geen laag geselecteerd",
- 'layerStylesWindowTitle': "Kaartlaag stijlen",
- 'layerStylesPreviewTitle': "Maak een voorbeeld van de legenda",
- 'selectStyleButton': "Selecteer kaartstijl",
- 'WMSTimeWindowTitle': "WMS Tijd",
- 'WMSTimePositionTitle': "Kies een tijdstip",
- 'WMSTimeMovieTitle': "Speel een animatie af",
- 'wmsTimeUpdateButtonText': "Doorvoeren",
- 'WMSTimeAnimationCheckbox': "Speel laatste ${steps} tijdstippen af",
- 'fullTextSearch': "Volledige tekst zoeken",
- 'keyword': "zoekterm",
- 'org': "Organisatie",
- 'altTitle': 'Alternatieve titel',
- 'mapTypes': "Kaarttypes",
- 'rsIdentifier': "Bronidentificator",
- 'inspireSearchOptions': "INSPIRE criteria",
- 'inspireannex': "INSPIRE annex",
- 'inspirerelated': "Gerelateerd aan INSPIRE",
- 'inspirerelatedtt': "INSPIRE dataset met rapport over de conformiteit volgens de data specificaties",
- 'inspiretheme': "INSPIRE thema",
- 'inspireClassificationDataServices': "INSPIRE classificatie data services",
- 'serviceType': "Service type",
- 'serviceType_discovery': "Discovery Service (ontdekken)",
- 'serviceType_download': 'Download Service (download)',
- 'serviceType_view': "View Service (bekijken)",
- 'serviceType_transformation': "Transformation Service (transformatie)",
- 'serviceType_invoke': "Invoke Spatial Data Service (aanroepen)",
- 'serviceType_other': "Andere Services (ander)",
- 'similarity': "Zoek nauwkeurigheid",
- 'wkt': "WKT geometrie",
- 'simpleViewMode': "Eenvoudige voorstelling",
- 'spatialSearch': "Ruimtelijke criteria",
- 'mdChangeDate': "Metadata wijzigingsdatum",
- 'tempExtent': "Temporele begrenzing",
- 'hitsPerPage': "Aantal per pagina",
- 'sortBy': "Sorteer volgens",
- 'relevance': "Relevantie",
- 'title': "Titel",
- 'options': 'Opties',
- 'changeDate': "Wijzigingsdatum",
- 'rating': "Score",
- 'popularity': "Populariteit",
- 'scaleDesc': "Schaal (aflopend)",
- 'scaleAsc': "Schaal (oplopend)",
- 'abstract': "Samenvatting",
- 'catalogue': "Catalogus",
- 'group': "Groep",
- 'chooseGroup': "Selecteer een groep",
- 'md': "Metadata",
- 'tpl': "Template",
- 'category': "Categorie",
- 'advTextSearch': "Geavanceerde tekst zoekmogelijkheden",
- 'eitherWords': "Elk van de woorden",
- 'exactPhrase': "Exacte zin",
- 'allWords': "Alle woorden",
- 'withoutWords': "Zonder de woorden",
- 'precise': "Exact",
- 'imprecise': "Niet exact",
- 'relationType': "Relatie type",
- 'within': "binnen in",
- 'touches': "raakt aan",
- 'crosses': "kruist",
- 'fullyOutsideOf': "volledig buiten",
- 'encloses': "omvat",
- 'overlaps': "overlapt",
- 'intersection': "doorsnijdt",
- 'nearYou': "nabij",
- 'from': "Van",
- 'to': "Tot",
- 'scaleNominator': "1:",
- 'scale': "Schaal",
- 'digital': "Digitaal",
- 'hardCopy': "Harde kopie",
- 'download': "Download",
- 'downloadable': "Download",
- 'interactive': "Interactief",
- 'resourceType': "Type",
- 'dataset': "Dataset",
- 'series': "Datasetserie",
- 'service': "Service",
- 'spatialRepType': "Ruimtelijke voorstelling",
- 'video': "Video",
- 'vector': "Vector",
- 'textTable': "Tekst, tabel",
- 'tin': "Tin",
- 'stereoModel': "Stereo model",
- 'grid': "Grid",
- 'kind': "Soort",
- 'enterGetCapURL': "Geef een GetCapabilities URL voor het registreren van een nieuwe service.",
- 'edit': "Editeer",
- 'duplicate': "Dupliceer",
- 'delete': "Verwijder",
- 'createChild': "Creëer kind",
- 'privileges': "Rechten",
- 'categories': "Categorieën",
- 'otherActions': "Andere acties",
- 'view': "Bekijk",
- 'zoomTo': "Zoom naar",
- 'saveXml': "Bewaar als XML",
- 'saveRdf': 'Save as RDF',
- 'exportCsv': "Exporteer (CSV)",
- 'exportZip': "Exporteer (ZIP)",
- 'printSel': "Exporteer (PDF)",
- 'printTT': "Print. Open een nieuwe pagina voor het printen.",
- 'newOwner': "Nieuwe eigenaar",
- 'updateCategories': "Wijzig categorieën",
- 'updatePrivileges': "Wijzig rechten",
- 'noneSelected': "Niets geselecteerd",
- 'none': "geen enkele",
- 'all': "allemaal",
- 'allInPage': "alles in de pagina",
- 'select': "Selecteer",
- 'username': "Gebruikersnaam",
- 'password': "Paswoord",
- 'login': "Inloggen",
- 'logout': "Uitloggen",
- 'administration': "Beheer",
- 'validationReport': "Validatierapport",
- 'status': "Status",
- 'updateStatus': 'Update status',
- 'currentStatus': ' (current status is ${status})',
- 'enableWorkflow': 'Enable workflow',
- 'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
- 'enableWorkflowStart': 'Metadata status set to draft.',
- 'addLayerSelection': 'Add layers of selection to the map',
- 'items': "onderdelen",
- 'item': "onderdeel",
- 'thumbnails': "Thumbnails",
- 'noimages': "Geen afbeeldingen om te tonen",
- 'add': "Voeg toe",
- 'small': "Klein",
- 'large': "Groot",
- 'selectImage': "Selecteer een afbeelding",
- 'selectFile': "Selecteer een bestand",
- 'image': "Beeld",
- 'uploading': "Opladen...",
- 'upload': "Opladen",
- 'success': "Succesvol",
- 'failure': "Gefaald",
- 'error': "Fout",
- 'save': "Bewaar",
- 'reset': "Herstel",
- 'fileProcessedMsg': "Behandelde bestanden ${res} op de server",
- 'suggestion': "Suggestie",
- 'logoSelect': "Selecteer een logo",
- 'relatedResources': "Gerelateerde metadatarecords",
- 'add-thumbnail': 'Add thumbnail',
- 'add-onlinesrc': 'Add online resource',
- 'add-parent': 'Link to a parent',
- 'add-service': 'Link to a service',
- 'add-dataset': 'Link to a dataset',
- 'add-sources': 'Link to a source dataset',
- 'add-fcats': 'Link to a feature catalog',
- 'add-sibling': 'Link to other resources',
- 'fcats': 'Feature catalog',
- 'thumbnail': 'Overviews',
- 'children': 'Children',
- 'parent': 'Parent metadata',
- 'sibling': 'Other resources',
- 'onlinesrc': 'Online resources',
- 'sources': 'Source datasets',
- 'remove': 'Remove',
- 'linkADocument': 'A document',
- 'linkAMetadata': ' Online resources from an existing record',
- 'linkAResource-': 'Link a resource',
- 'linkAResource-thumbnail': 'Add an overview to the current metadata',
- 'linkAResource-fcats': 'Link a feature catalog to the current metadata',
- 'linkAResource-parent': 'Link a parent metadata record to the current metadata',
- 'linkAResource-dataset': 'Link a dataset to the current metadata',
- 'linkAResource-service': 'Link a service to the current metadata',
- 'linkAResource-sibling': 'Link a resource to the current metadata',
- 'linkAResource-sources': 'Link a source dataset to the current metadata',
- 'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
- 'associationType': 'Association type',
- 'initiativeType': 'Initiative type',
- 'uploadAnImage': 'Upload an image',
- 'UploadError': 'Failed to upload file',
- 'setAThumbnailByURL': 'Link an image with a URL',
- 'setAURL': 'Link a URL',
- 'createLink': "Creëren links ...",
- 'featureCat': "objectencatalogus",
- 'serviceMd': "Service metadata",
- 'datasetMd': "Dataset metadata",
- 'parentMd': "Ouder metadata",
- 'updateChildren': "Wijzigen kinderen",
- 'records': "records",
- 'record': "record",
- 'recordsFound': ' record(s) found',
- 'help': "Help",
- 'publishError': "Publicatie gefaald.",
- 'outOfMemoryError': "Out of memory fout.",
- 'publishErrorCode': "foutcode:",
- 'saveAndCheck': "Bewaar en check",
- 'saveAndClose': "Bewaar en sluit",
- 'cancel': "Annuleer",
- 'layout': "Layout",
- 'collapseAll': "Klap alle secties in",
- 'editAttributes': "Beheer attributen",
- 'chooseAType': "Kies een type",
- 'chooseAView': "Kies een voorstelling",
- 'viewMode': "Voorstellingswijze",
- 'errorAndStatusMsg': "Fout. Status: ${status}, tekst: ${text}. Probeer opnieuw.",
- 'mdEditor': "Metadata editor",
- 'minorEditTT': "Wijzig de timestamp niet bij bewaren",
- 'editing': "Bewerken ${title} (${uuid})",
- 'GetCapabilitiesDocumentError': "Fout laden service GetCapabilities document van URL: ",
- 'maxResults': "Aantal resultaten",
- 'mdTitle': "Metadata titel",
- 'keywords': "Trefwoorden",
- 'createRelation': "Creëer relatie",
- 'createIfNotExistButton': "Maak een nieuw metadata record",
- 'getCapabilitiesLayer': "GetCapabilities laag",
- 'layerName': "Laagnaam",
- 'searching': "Zoeken...",
- 'perThesaurus': " per thesaurus",
- 'anyThesaurus': "Elke thesaurus",
- 'addFromThesaurus': 'Add from thesaurus ...',
- 'selectedKeywords': "Geselecteerde trefwoorden",
- 'foundKeywords': "Gevonden trefwoorden",
- 'clear': "Wis",
- 'publish': "Publiceer",
- 'publishTooltip': "Publiceer de huidige dataset naar een externe node. Indien de dataset reeds bestaat in de node, wordt deze bijgewerkt.",
- 'publishSuccess': "Publicatie geslaagd.",
- 'publishLayerAdded': " Laag toegevoegd aan het kaartvoorbeeld.",
- 'unpublish': "Maak publicatie ongedaan",
- 'unpublishTooltip': "Verwijder huidige dataset van de externe node.",
- 'unpublishSuccess': "Publicatie ongedaan maken geslaagd.",
- 'unpublishError': "Publicatie ongedaan maken is mislukt. ",
- 'check': "Check",
- 'errorDatasetNotFound': "Dataset niet gevonden.",
- 'datasetFound': "Dataset gevonden en toegevoegd aan het kaartvoorbeeld.",
- 'checkFailure': "Check dataset in externe node is mislukt.",
- 'addOnlineSourceTitle': "Link service aan metadata",
- 'addOnlineSource': "Toevoegen links",
- 'addOnlineSourceTT': "Voeg een online bronsectie toe aan het huidige metadata record verwijzend naar de WMS/WFS/WCS services. Indien de service een WMS is, kan de laag getoond worden in de kaartviewer.",
- 'statusInformation': "Status informatie.",
- 'publishing': "Publiceren ...",
- 'mapPreview': "Kaartvoorbeeld",
- 'selectANode': "Selecteer een node ...",
- 'geoPublisherWindowTitle': "Geo-publicatie: ",
- 'keywordSelectionWindowTitle': "Trefwoord selectie",
- 'crsSelectionWindowTitle': "Coördinaten referentie systeem selectie",
- 'linkedMetadataSelectionWindowTitle': "Gerelateerde metadata selectie",
- 'NotOwnerError': "U heeft geen rechten om dit gerelateerde record te wijzigen.",
- 'ServiceUpdateError': "Fout tijdens wijziging service metadata",
- 'associateService': "Link service metadata",
- 'associateDataset': "Link dataset metadata",
- 'logoSelectionWindow': "Kies een logo",
- 'fileUploadWindow': "Opladen data of document",
- 'selectedCRS': "Geselecteerde coördinaatsystemen",
- 'foundCRS': "Beschikbare coördinaatsystemen",
- 'search': "Zoeken",
- 'restrictSearchToMap': "Beperk zoekactie tot kaartbegrenzing",
- 'selected': "geselecteerd",
- 'selectRegion': "Selecteer in een gebied...",
- 'drawRectangle': "Teken rechthoek",
- 'drawPolygon': "Teken polygoon",
- 'drawPolygonTT': "Klik op de knop en teken een polygoon door het aanklikken van punten op de kaart. Dubbelklik voor het laatste punt om de polygoon af te sluiten.",
- 'drawCircle': "Teken cirkel",
- 'discovery': "Ontdekken",
- 'visualization': "Visualisatie",
- 'when': "Wanneer?",
- 'anyTime': "Altijd",
- 'onSelection': "Op selectie",
- 'adminAction': "Ander",
- 'newMetadata': "Nieuwe metadata",
- 'model': 'Feature catalogue',
- 'newMetadataTitle': 'Create a metadata by choosing a template and selecting one group',
- 'tplTitle': 'Template description',
- 'metadatatype': 'Ressource type',
- 'process': "Behandeling",
- 'suggestions': "Suggesties",
- 'applySelected': "Pas geselecteerde taak toe",
- 'processParametersWindow': "Taak parameters",
- 'noSuggestion': "Geen suggestie.",
- 'thumbnailUploadWindow': "Opladen thumbnail",
- 'addThumbnail': "Voeg toe",
- 'createSmall': "Maak kleine thumbnail",
- 'scalingFactor': "Schaalfactor",
- 'smallScalingFactor': "Kleine schaalfactor",
- 'type': "Recordtype",
- 'clickToClose': "Klik om te sluiten",
- 'removeSelected': "Verwijder selectie",
- 'ownerName': "Metadata record eigenaar",
- 'setPrivileges': "Stel rechten in",
- 'setBatchPrivileges': 'Overwrite privileges of selected records',
- 'setCategories': "Stel categorieën in",
- 'massiveOp': "Bulk operatie",
- 'prepareDownload': "Download bestanden",
- 'mdMenu': "Acties",
- 'deleteRecord': "Verwijder metadatarecord?",
- 'deleteConfirm': "Bent u zeker dat u dit metadatarecord wil verwijderen?",
- 'deleteRecordSuccess': "Metadata verwijderd.",
- 'deleteRecordFailure': "Fout bij het verwijderen van het metadatarecord.",
- 'advancedSearchOptions': "Geavanceerde zoek opties",
- 'relatedservices': "Gerelateerde service",
- 'relatedsource': 'Source datasets',
- 'relatedhassource': 'Is used in',
- 'relatedchildren': "Kinderen",
- 'relatedsibling': 'Related records',
- 'relatedassociated': 'Related records',
- 'relatedfcats': "Gerelateerde objectencatalogus",
- 'relatedhasfeaturecat': "Datasets",
- 'relatedsources': "Bron datasets",
- 'getMEF': "Exporteer (ZIP)",
- 'metadataCategories': "Metadata categorieën",
- 'validityInfo': "Validatiestatus: ",
- 'lastUpdate': "Laatste wijziging: ",
- 'importMetadata': "Importeer metadata",
- 'validationStatus': "Validatiestatus",
- 'valid': "Geldig",
- 'notValid': "Niet geldig",
- 'notDetermined': "Onbepaald",
- 'addToMap': "Voeg toe aan kaart: ",
- 'map': 'Map',
- 'interactiveMap': 'Interactive map',
- 'staticMap': 'Static map',
- 'downloadLink': "Download: ",
- 'webLink': "Web link: ",
- 'viewKml': "Open in GoogleEarth: ",
- 'layerTree': "Lagenbeheer",
- 'mdResultsLayer': "Zoekresultaten",
- 'printLayer': "Print pagina",
- 'relatedservices': "Gerelateerde services",
- 'relatedparent': "Ouder",
- 'relatedsibling': 'Related records',
- 'relateddatasets': "Gerelateerde datasets",
- 'relatedchildren': "Kinderen",
- 'relatedrelated': "objectencatalogus/dataset link",
- 'delete19110Relation': "Verwijder relatie met objectencatalogus",
- 'newWindow': "Nieuw venster",
- 'addAsXLink': "Voeg toe als gelinkt element",
- 'contactSelectionWindowTitle': "Contact selectie",
- 'selectedContacts': "Geselecteerder contacten",
- 'foundContacts': "Beschikbare",
- 'contactRole': "Contact rol",
- 'mapNearYou': "Centreer de kaart op uw locatie",
- 'errorChangeProtocol': "Verwijder geüploade bestand voor het wijzigen van het protocol van de online bron.",
- 'resultBy': " resultaat(en) / ",
- 'subTemplateImport': "Folder entry import",
- 'xmlData': "XML",
- 'minorEdit': "Kleine wijziging",
- 'minorEditTT': "",
-
- 'create': 'Aanmaken',
-
- // Shortcuts
- 'runASearch': "Voer zoekopdracht uit",
- 'focusOnAny': "Verplaats focus naar het volledige tekst zoekveld",
- 'hideSearchForm': "Verberg of toon zoekformulier",
- 'switchMode': "Verander voorstellingswijze",
- 'resetSearchForm': "Herstel zoekformulier",
- 'focusOnLogin': "Focus op het aanmeldformulier voor toegang tot het catalogusbeheer of meld af indien reeds aangemeld",
- 'openAdmin': "Ga naar de beheeromgeving",
- 'displayInfoPanel': "Toon het informatiepaneel",
- 'displayHelpPanel': "Toon de help",
-
- 'SelectionWindowTitle': "Selecteer uit folder",
- 'found': "Gevonden records",
- 'selected': "Geselecteerd",
-
- // Feedback
- 'feedbackcontactDetails' : 'Contact gegevens',
- 'feedbacknameInitials' : 'Naam, Voorletter(s)',
- 'feedbackmale' : 'M',
- 'feedbackfemale' : 'V',
- 'feedbackposition' : 'Functie',
- 'feedbackorganization' : 'Organisatie',
- 'feedbackphone' : 'Telefoon',
- 'feedbackemail' : 'E-mail',
- 'feedbackfeedback' : 'Feedback',
- 'feedbackfunction' : 'Functie',
- 'feedbackquestion' : 'Vraag',
- 'feedbackerror' : 'Fout',
- 'feedbackremark' : 'Opmerking',
- 'feedbackcontact' : 'Contact',
- 'feedbackcategory' : 'Categorie',
- 'feedbackmetadataContent' : 'Metadata inhoud',
- 'feedbackdataContent' : 'Data inhoud',
- 'feedbackserviceContent' : 'Service inhoud',
- 'feedbacksupport' : 'Support',
- 'feedbackmapViewer' : 'Kaartviewer',
- 'feedbacksearch' : 'Zoeken',
- 'feedbackorganizations' : 'Organisaties',
- 'feedbackcontentManagement' : 'Contentbeheer',
- 'feedbackmetadataImport' : 'Metadata importeren',
- 'feedbackmetadataEdit' : 'Metadata bewerken',
- 'feedbackharvesting' : 'Harvesting',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Anders',
- 'feedbackremarks' : 'Opmerkingen',
- 'feedbackmetadataData' : 'Metadata gegevens',
- 'feedbacktitle' : 'Titel',
- 'feedbackPanelTitle' : 'Met dit formulier kunt u feedback geven op metadata, data en/of services.',
- 'feedbacksubmit' : 'Verzenden',
- 'feedbackerrorTitle' : 'Opgelet',
- 'feedbackerrorMsg' : 'Er is een fout opgetreden bij het verzenden. Probeert u het later nog eens.',
- 'feedbackcancel' : 'Annuleren',
- 'feedbackWindowTitle' : 'feedback',
-
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace': "Vervang bestaande begrenzing",
- 'add-info-from-wmssetExtent': "Stel begrenzing in",
- 'add-info-from-wmssetAndReplaceExtent': "Vervang bestaande begrenzing",
- 'add-info-from-wmssetCRS': "Stel het coördinaatreferentie systeem in",
- 'add-info-from-wmssetDynamicGraphicOverview': "Stel het grafisch overzicht in (gebruik makend van de GetMap request URL)",
- 'add-info-from-wmswmsServiceUrl': "Service URL",
- 'linked-data-checkerlinkUrl': "URL om te verwijderen",
- 'related-metadata-checkeruuidToRemove': "Identificator om te verwijderen",
- 'add-service-info-from-wxssetAndReplaceOperations': "Vervang bestaande bewerkingen",
- 'add-service-info-from-wxswxsServiceUrl': "Service URL",
-
- // Admin
- 'manageDirectories' : "Beheer folders",
- 'directory': "Folder",
- 'thesaurusManager': "Beheer Thesaurus",
- 'Theme': "Thema",
- 'thesaurusFilePath': "Thesaurus bestand (.rdf)",
- 'ThesaurusTitle': "Thesaurus naam",
- 'ThesaurusId': 'Thesaurus identifier',
- 'ThesaurusNs': 'Thesaurus namespace',
- 'createThesaurusFromURL': "van URL",
- 'createThesaurusFromRepository': "van thesaurus repository",
- 'creationMode': "Maak",
- 'thesaurusFromRepository': "Thesaurus",
- 'externalThesaurusURL': "URL",
- 'thesaurusCreation': "Voeg een thesaurus toe",
- 'Type': "Type",
- 'Activated': "Geactiveerd",
- 'emptyThesaurus': "Nieuwe lege thesaurus",
- 'thesaurusFromFile': "Van lokaal bestand",
- 'thesaurusFromURL': "Van extern bestand (URL)",
- 'id': "Identificator",
- 'mdIdentifier': 'Record internal identifier: ',
- 'mdUUID': 'Record unique identifier: ',
- 'label': "Label",
- 'definition': "-",
- 'xmin': "X min",
- 'ymin': "Y min",
- 'xmax': "X max",
- 'ymax': "Y max",
- 'newLabel': "Label",
- 'newDefinition': "Definitie",
- 'selDirectoryTT': "Selecteer een foldertype. Een folder groepeert alle elementen met dezelfde naam voor het root element (eg. gmd:CI_ResponsibleParty is een contact folder)",
- 'privTplElTT': "Beheer rechten voor de huidige selectie.",
- 'addTplElTT': "Voeg een element toe van een XML fragment aan een folder. De doelfolder is gebaseerd op de naam van het root element (eg. gmd:CI_ResponsibleParty).",
- 'copyTplElTT': "Maak een nieuw element in de folder voor de huidige selectie.",
- 'delTplElTT': 'Verwijder geselecteerd element uit de folder.',
- 'metadataPOC': 'metadata point of contact',
- 'metadataPOCs': 'Metadata point of contact',
- 'spatialRepresentationType': 'spatial type',
- 'spatialRepresentationTypes': 'Spatial types',
- 'createDateYear': 'year',
- 'createDateYears': 'Years',
- 'denominator': 'scale denominator',
- 'denominators': 'Scale denominators',
- 'orgName': 'organization',
- 'orgNames': 'Organizations',
- 'serviceTypes': 'Service types',
- 'facetMore': '+ Toon meer',
- 'facetLess': '- Toon minder',
-
- 'extractorTitle': 'Download data from ',
- 'defineExtractionArea': 'Define extraction area',
- 'chooseALayer': 'Choose a layer',
- 'outputFormat': 'Output format',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service version',
- 'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- //tabbed search
- 'Home': "Home",
- 'Map': "Kaart",
- 'Poweredby': "Door",
- 'About': "Over",
- 'org': "Organisatie",
- 'When': "Wanneer",
- 'Where': "Waar",
- 'What': "Wat",
- 'Searchforspatialdataon': "Zoek ruimtelijke data over",
- 'Advanced': "Geavanceerd",
- 'List': "Lijst",
- 'extractorTitle': 'Download data van ',
- 'defineExtractionArea': 'Definieer extractie gebied',
- 'chooseALayer': 'Kies een kaartlaag',
- 'outputFormat': 'Output formaat',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service versie',
- 'wxs-extract-service-not-found': 'Fout bij het verbinden met de service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Kaartlaag ${layer} niet gevonden in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- 'xsd': 'ISO schema',
- 'rules': 'rules',
- 'rule': 'rule',
- 'schematron-rules-geonetwork': 'GeoNetwork validation',
- 'schematron-rules-iso': 'ISO validation',
- 'schematron-rules-inspire': 'INSPIRE validation',
- 'to-iso19139-keyword': 'Text mode',
- 'to-iso19139-keyword-as-xlink': 'Linked mode',
- 'to-iso19139-keyword-with-anchor': 'Anchor mode',
- 'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
- 'linklabel-application/vnd.ogc.wmc': 'Interactive map',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Add to map',
- 'linklabel-OGC:WFS': 'WFS link',
- 'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
- 'linklabel-application/zip': 'Download',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
- 'linklabel-application/x-compressed': 'Download',
- 'linklabel-application/octet-stream': 'Download',
- 'linklabel-text/html': 'Web link',
- 'linklabel-text/plain': 'Web link',
- 'linklabel-image/png': 'Image link',
- 'linklabel-image/jpeg': 'Image link',
- 'linklabel-': 'Link',
- 'insertMode': 'Insert Mode',
- 'fileUpload': 'File upload',
- 'copyPaste': 'Copy/Paste',
- 'fileType': 'File Type',
- 'singleFile' :'Single File (XML, SLD, WMC...)',
- 'mefFile': 'MEF file',
- 'importActions': 'Import actions',
- 'noActionOnImport': 'No action on import',
- 'overwriteMD': 'Overwrite metadata with same UUID' ,
- 'generateUuid': 'Generate UUID for inserted metadata',
- 'styleSheet': 'StyleSheet',
- 'validate': 'Validate',
- 'assignCurCat': 'Assign to current catalog',
- 'metadata': 'Metadata',
- 'mdInsertResults': 'Results of metadata import',
- 'mdInsertSuccess': 'Metadata inserted with',
- 'mdInsertFailure': 'Error while inserting metadata : ',
- 'mdRecordsProcessed': 'Total number of metadata records processed',
- 'mdRecordsAdded': 'Total number of metadata records added',
- 'chooseCategory': 'Choose a category',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.nl, GeoNetwork.Lang.nl);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/pl.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/pl.js
deleted file mode 100644
index a80c6f0a790..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/lang/pl.js
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-Ext.namespace('GeoNetwork', 'GeoNetwork.Lang');
-
-GeoNetwork.Lang.pl = {
- 'metadataRecordPublishedTitle': 'Metadata publication',
- 'metadataRecordPublished': '${title} is now visible to everyone.',
- 'metadataRecordUnPublished': '${title} is not published to everyone anymore.',
- 'metadata-not-found': 'Metadata with UUID ${uuid} not found or not shared with you.',
- 'harvestingAdmin': 'Harvesting',
- 'filterGroup': 'Filter group ...',
- 'checkAllOrNone': 'Check all/none',
- 'updateUserInfo': 'Edit my profile',
- 'updatePassword': 'Change my password',
- 'myMetadata': 'My metadata',
- '_owner': 'User identifier',
- '_isHarvested': 'Harvested records',
- 'templates': 'Metadata templates',
- 'myDraft': 'My draft metadata',
- 'QuickSearch': 'Quick search',
- 'LastSubmitted': 'Last submitted',
- 'lastUpdates': 'Last update',
- '_indexingError': 'Indexing error',
- 'RecordWithIndexingError': 'Records with indexing error',
- 'fromLocalCatalog': 'Metadata from local catalog',
- 'fromHarvestedCatalog': 'Metadata from harvested catalogs',
- 'dateType': 'Typ Data',
- 'creationDate': 'Data utworzenia',
- 'modificationDate': 'Data modyfikacji',
- 'publicationDate': 'Data publikacji',
- 'previousPage': 'Przejdź do poprzedniej strony',
- 'nextPage': 'Przejdź do następnej strony',
- 'upInPage': 'Przewiń w górę w wynikach',
- 'downInPage': 'Przewiń w dół w wynikach',
- 'example': "Przykład:",
- 'noInfo': 'Brak informacji',
- 'helper': "Sugestia:",
- 'toggleLayerManager': 'Wyświetl menagera warstw',
- 'tagName': 'Nazwa elementu:',
- 'enableTooltip': 'Włącz podpowiedzi, aby uzyskać więcej informacji.',
- 'connectIssue': "Problem z połączeniem do katalogu",
- 'connectIssueMsg': "Błąd 404. Nie można połączyć się z URL katalogu ",
- 'featureInfoTooltipTitle': "Informacje o obiekcie",
- 'featureInfoTooltipText': "Kliknij w oknie mapy, aby uzyskać informacje o obiektach z wszystkich widocznych warstw.",
- 'zoomToMaxExtentTooltipTitle': "Pełny zasięg",
- 'zoomToMaxExtentTooltipText': "Użyj tego przycisku, aby wyświetlić pełny zasięg.",
- 'zoominTooltipTitle': "Zbliż",
- 'zoominTooltipText': "Kliknij na mapie lub narysuj prostokąt, aby zbliżyć.",
- 'zoomoutTooltipTitle': "Oddal",
- 'zoomoutTooltipText': "Kliknij na mapie lub narysuj prostokąt, aby oddalić.",
- 'dragTooltipTitle': "Przesuń",
- 'dragTooltipText': "Wciśnij lewy przycisk myszy, aby przesunąc mapę.",
- 'previousTooltipTitle': "Poprzedni zakres mapy",
- 'previosTooltipText': "Kliknij ten przycisk, aby przejść do poprzedniego zakresu mapy",
- 'nextTooltipTitle': "Następny zakres mapy",
- 'nextTooltipText': "Kliknij ten przycisk, aby przejść do następnego zakresu mapy",
- 'featureInfoTitle': "Informacje o obiekcie",
- 'layerManagerTabTitle': "Manager warstw",
- 'legendTabTitle': "Legenda",
- 'scaleTitle': "Skala",
- 'xTitle': "X",
- 'yTitle': "Y",
- 'projectionTitle': "Odwzorowanie",
- 'FeatureInfoNotQueryable': "Brak warstw z informacjami o obiektach",
- 'WMSBrowserTab1': "Wybierz",
- 'WMSBrowserTab3': "Zdalny",
- 'WMSBrowserPreviewTitle': "Podgląd",
- 'WMSBrowserAddButton': "Dodaj",
- 'WMSBrowserDuplicateMsg': "Warstwa jest już na mapie",
- 'WMSBrowserPreviewWaitMsg': "Pobieranie miniaturki",
- 'WMSBrowserConnectButton': "Połącz",
- 'WMSBrowserConnectError': "Wystąpił problem podczas łączenia z usługą WMS. Sprawdź URL.",
- 'infoTitle': "Informacje",
- 'mf.print.mapTitle': "Tytuł",
- 'mf.print.comment': "Komentarz",
- 'mf.print.dpi': "Rozdzielczość",
- 'mf.print.scale': "Skala",
- 'mf.print.rotation': "Kąt",
- 'mf.print.resetPos': "Resetuj",
- 'mf.print.print': "Drukuj",
- 'mf.print.generatingPDF': "Generowanie PDF",
- 'mf.print.unableToPrint': "Drukowanie nie powiodło się, spróbuj ponownie później",
- 'mf.error': "Błąd",
- 'selectExtentTooltipTitle': "Wskaż zakres",
- 'selectExtentTooltipText': "Wskaż zakres dla wyszukiwania",
- 'clearExtentTooltipTitle': "Usuń zakres",
- 'clearExtentTooltipText': "Usuń zakres (np. brak warunków wyszukiwania przestrzennego)",
- 'printTooltipTitle': "Drukuj",
- 'printTooltipText': "Drukuj widoczną mapę",
- 'savewmcTooltipTitle': "Zapisz widok mapy",
- 'savewmcTooltipText': "Zapisuje aktualny widok mapy",
- 'saveWMCFile.windowTitle': "Zapisz widok mapy",
- 'saveWMCFile.errorSaveWMC': "Nie udało się zapisać mapy",
- 'loadwmcTooltipTitle': "Wczytaj widok mapy",
- 'loadwmcTooltipText': "Wczytuje widok mapy",
- 'selectWMCFile.windowTitle': "Wczytaj widok mapy",
- 'selectWMCFile': "Wskaż plik widoku mapy",
- 'selectWMCFile.waitLoadingWMC': "Wczytywanie widoku mapy",
- 'selectWMCFile.loadButtonText': "Wczytaj",
- 'selectWMCFile.mergeButtonText': "Połącz",
- 'selectWMCFile.errorLoadingWMC': "Nie udało się wczytać widoku mapy",
- 'opacityButtonText': "Przezroczystość",
- 'opacityWindowTitle': "Przezroczystość",
- 'metadataButtonText': "Metadane",
- 'removeButtonText': "Usuń",
- 'addWMSButtonText': "Dodaj WMS",
- 'addWMSWindowTitle': "Dodaj warstwę z WMS",
- 'layerInfoPanel.windowTitle': "Informacje o warstwie",
- 'layerInfoPanel.titleField': "Tytuł",
- 'layerInfoPanel.descriptionField': "Opis",
- 'layerInfoPanel.queryableField': "Przeszukiwalna",
- 'layerList': "Lista warstw",
- 'baseLayerList': "Warstwy podstawowe",
- 'overlaysList': "Warstwy tematyczne",
- 'metadataResults.buttonText': "Wyniki wyszukiwania",
- 'metadataResults.tooltipTitle': "Wyniki wyszukiwania",
- 'metadataResults.tooltipText': "Przejdź do strony wyników wyszukiwania",
- 'metadataResults.alertTitle': "Wyniki wyszukiwania",
- 'metadataResults.alertText': "Brak wyników do wyświewtlenia",
- 'featureInfoWindow.windowTitle': "Informacje o obiekcie",
- 'mf.information': 'Drukuj',
- 'mf.print.pdfReady': 'PDF gotowy',
- 'loadLayer.loadingMessage': "Ładowanie warstwy",
- 'loadLayer.error.title': "Wczytaj warstwę",
- 'loadLayer.error.message': "Nie udało się wczytać warstwy",
- 'disclaimer.windowTitle': "Oświadczenie",
- 'disclaimer.loading': "Wczytywanie...",
- 'disclaimer.buttonClose': "Zamknij",
- 'gazetteerAddressField1Label': "Kod potowy",
- 'gazetteerAddressField2Label': "Ulica",
- 'gazetteerAddressField3Label': "Miejsce",
- 'gazetteerAddressField4Label': "'Miasto'",
- 'gazetteerAddressField5Label': "Numer budynku",
- 'searchOptionButton': "Szukaj",
- 'resetSearchForm': "Wyczyśc formularz wyszukiwania.",
- 'GazetteerWindowTitle': "Znajdź adres",
- 'searchResults': "Wyniki wyszukiwania",
- 'errorTitle': "Błąd",
- 'SearchOptionLoadFailureMsg': "Brak wyników. \n Usługa może nie być dostępna. \n",
- 'gazetteerTooltipTitle': "Wyszukiwanie na podstawie adresu",
- 'gazetteerTooltipText': "Wyszukiwanie położeniana podstaie kodu pocztowego, ulicy, miasta lub miejsca",
- 'SearchOptionNoResults': "Nie znaleziono wyników",
- 'zoomlayerTooltipTitle': "Zbliż do zasięgu warstwy",
- 'zoomlayerTooltipText': "Uzyj tego przycisku, aby wyświetlić pełny zakres warstwy.",
- 'zoomlayer.selectLayerTitle': "Zbliż do warstwy",
- 'zoomlayer.selectLayerText': "NNie wybrano żadnej warstwy",
- 'layerStylesWindowTitle': "Style",
- 'layerStylesPreviewTitle': "Podgląd legendy",
- 'selectStyleButton': "Wybierz styl",
- 'WMSTimeWindowTitle': "Czas WMS",
- 'WMSTimePositionTitle': "Wybierz położenie czasowe",
- 'WMSTimeMovieTitle': "Pokaż animację",
- 'wmsTimeUpdateButtonText': "Zastosuj",
- 'WMSTimeAnimationCheckbox': "Odtwórz w pętli film obejmujący ostatnie $ {kroki}",
- 'fullTextSearch': "Wyszukiwanie w całym tekście",
- 'keyword': "Słowo kluczowe",
- 'org': "Organizacja",
- 'altTitle': "Tytuł alternatywny",
- 'mapTypes': "Typ mapy",
- 'rsIdentifier': "Identyfikator zasobu",
- 'inspireSearchOptions': 'Kryteria INSPIRE',
- 'inspireannex': 'Aneks INSPIRE',
- 'inspirerelated': 'Powiązane z INSPIRE',
- 'inspirerelatedtt': 'Zbiór danych zawierający raport zgodności',
- 'inspiretheme': 'Temat danych INSPIRE',
- 'inspireClassificationDataServices': 'Klasyfikacja ułsug danych INSPIRE',
- 'serviceType': 'Typ usługi',
- 'serviceType_discovery': 'Usługa wyszukiwania (discovery)',
- 'serviceType_download': 'Download Service (download)',
- 'serviceType_view': 'Usługa wyświetlania (view)',
- 'serviceType_transformation': ' Usługa transformacji (transformation)',
- 'serviceType_invoke': 'Usługa uruchamiania usług (invoke)',
- 'serviceType_other': 'Inna usługa (other)',
- 'similarity': 'Precyzja wyszukiwania',
- 'wkt': 'Geometria WKT',
- 'simpleViewMode': 'Widok podstawowy',
- 'spatialSearch': 'Kryteria przestrzenne',
- 'mdChangeDate': 'Data modyfikacji metadanych',
- 'tempExtent': 'Zakres czasowy',
- 'hitsPerPage': 'Liczba wyników na stronie',
- 'sortBy': 'Sortuj wg',
- 'relevance': 'Trafność',
- 'options': 'Opcje',
- 'title': 'Tytuł',
- 'changeDate': 'Data modyfikacji',
- 'rating': 'Ocena',
- 'popularity': 'Popularność',
- 'scaleDesc': 'Skala (malejąco)',
- 'scaleAsc': 'Skala (rosnąco)',
- 'abstract': 'Streszczenie',
- 'catalogue': 'Katalog',
- 'group': 'Grupa',
- 'chooseGroup': 'Wybierz grupę',
- 'md': 'Metadane',
- 'tpl': 'Wzorzec',
- 'category': 'Kategoria',
- 'advTextSearch': 'Opcje zaawansowanego wyszukiwania',
- 'eitherWords': 'Jedno ze słów',
- 'exactPhrase': 'Dokładne fraza',
- 'allWords': 'Wszystkie słowa',
- 'withoutWords': 'Bez tych słów',
- 'precise': 'Precyzyjne',
- 'imprecise': 'Nieprecyzyjne',
- 'relationType': 'Typ relacji',
- 'within': 'wewnątrz',
- 'touches': 'dotyka',
- 'crosses': 'przecina',
- 'fullyOutsideOf': 'całkowicie poza',
- 'encloses': 'zawiera',
- 'overlaps': 'nakłada się',
- 'intersection': 'przecięcie',
- 'nearYou': 'Blisko Ciebie',
- 'from': 'od',
- 'to': 'do',
- 'scaleNominator': '1:',
- 'scale': 'Skala',
- 'digital': 'Cyfrowy',
- 'hardCopy': 'Twarda kopia',
- 'download': 'Pobierz',
- 'downloadable': 'Pobieralny',
- 'interactive': 'Interaktywny',
- 'resourceType': 'Typ zasobu',
- 'dataset': 'Zbiór danych',
- 'series': 'Seria',
- 'service': 'Usługa',
- 'model': 'Feature catalogue',
- 'spatialRepType': 'Reprezentacja przestrzenna',
- 'video': 'Wideo',
- 'vector': 'Wektor',
- 'textTable': 'tekst, tabela',
- 'tin': 'Tin',
- 'stereoModel': 'Model stereo',
- 'grid': 'Raster',
- 'kind': 'Rodzaj',
- 'enterGetCapURL': 'Wprowadź URL GetCapabilities aby zarejestrować nową usługę.',
- 'edit': 'Edycja',
- 'duplicate': 'Powiel',
- 'delete': 'Usuń',
- 'createChild': 'Utwórz dziecko',
- 'privileges': 'Uprawnienia',
- 'privilegesTT': 'Zarządzaj uprawnieniami dla Internetu i grup w katalogu.',
- 'categories': 'Kategorie',
- 'otherActions': 'Inne akcje',
- 'permalinkInfo': 'Wklej link do e-maila lub komunikatora',
- 'view': 'Wyświetl',
- 'zoomTo': 'Zbliż do',
- 'saveXml': 'Zapisz jako XML',
- 'exportCsv': 'Export (CSV)',
- 'exportZip': 'Export (ZIP)',
- 'printSel': 'Export (PDF)',
- 'printTT': 'Drukuj. Otwórz nową strone wydruku.',
- 'newOwner': 'Nowy właściciel',
- 'updateCategories': 'Aktualizuj kategorię',
- 'updatePrivileges': 'Aktualizuj uprawnienia',
- 'noneSelected': 'Nic nie wybrano',
- 'none': 'Żadne',
- 'all': 'Wszystkie',
- 'allInPage': 'Wszystkie na stronie',
- 'select': 'Wybierz ',
- 'username': 'Nazwa użytkownika',
- 'password': 'Hasło',
- 'login': 'Logowanie',
- 'logout': 'Wylogowanie',
- 'administration': 'Administracja',
- 'validationReport': 'Raport walidacji',
- 'setStatus': 'Status metadanych',
- 'status': 'Status',
- 'updateStatus': 'Zaktualizuj status',
- 'currentStatus': ' (current status is ${status})',
- 'enableWorkflow': 'Enable workflow',
- 'enableWorkflowTT': 'Set metadata status to draft and enable workflow',
- 'enableWorkflowStart': 'Metadata status set to draft.',
- 'updateVersion': 'Aktywuj wersjonowanie',
- 'statusTT': 'Zmień status rekordu, zgodnie z jego fazą cyklu życia',
- 'setVersioning': 'Wersjonowanie metadanych',
- 'versioning': 'Rozpocznij wersjonowanie',
- 'versioningTT': 'Uruchomienie wersjonowania pliku spowoduje zapis wszystkich zmian w pliku w repozytorium SVN',
- 'addLayerSelection': 'Add layers of selection to the map',
- 'items': 'Elementy',
- 'item': 'Element',
- 'thumbnails': 'Miniaturki',
- 'noimages': 'Brak obrazów do wyświetlenia',
- 'add': 'Dodaj',
- 'small': 'Mały',
- 'large': 'Duży',
- 'selectImage': 'Wskaż obraz',
- 'selectFile': 'Wskaż plik',
- 'image': 'Obraz',
- 'uploading': 'Wysyłanie ...',
- 'upload': 'Wyślij',
- 'success': 'Powodzenie',
- 'failure': 'Porażka',
- 'error': 'Błąd',
- 'save': 'Zapisz',
- 'reset': 'Resetuj',
- 'fileProcessedMsg': 'Przetwarzanie pliku ${res} na serwerze',
- 'suggestion': 'Sugestia',
- 'logoSelect': 'Sybierz logo',
- 'relatedResources': 'Powiązanie zasoby',
- 'add-thumbnail': 'Add thumbnail',
- 'add-onlinesrc': 'Add online resource',
- 'add-parent': 'Link to a parent',
- 'add-service': 'Link to a service',
- 'add-dataset': 'Link to a dataset',
- 'add-sources': 'Link to a source dataset',
- 'add-fcats': 'Link to a feature catalog',
- 'add-sibling': 'Link to other resources',
- 'fcats': 'Feature catalog',
- 'thumbnail': 'Overviews',
- 'children': 'Children',
- 'parent': 'Parent metadata',
- 'sibling': 'Other resources',
- 'onlinesrc': 'Online resources',
- 'sources': 'Source datasets',
- 'remove': 'Remove',
- 'linkADocument': 'A document',
- 'linkAMetadata': ' Online resources from an existing record',
- 'linkAResource-': 'Link a resource',
- 'linkAResource-thumbnail': 'Add an overview to the current metadata',
- 'linkAResource-fcats': 'Link a feature catalog to the current metadata',
- 'linkAResource-parent': 'Link a parent metadata record to the current metadata',
- 'linkAResource-dataset': 'Link a dataset to the current metadata',
- 'linkAResource-service': 'Link a service to the current metadata',
- 'linkAResource-sibling': 'Link a resource to the current metadata',
- 'linkAResource-sources': 'Link a source dataset to the current metadata',
- 'linkAResource-onlinesrc': 'Link a online resource to the current metadata',
- 'associationType': 'Association type',
- 'initiativeType': 'Initiative type',
- 'uploadAnImage': 'Upload an image',
- 'UploadError': 'Failed to upload file',
- 'setAThumbnailByURL': 'Link an image with a URL',
- 'setAURL': 'Link a URL',
- 'createLink': 'Utrzóż łącza ...',
- 'featureCat': 'Katalog obiektów',
- 'serviceMd': 'Metadane usługi',
- 'datasetMd': 'Metadane zbioru danych',
- 'parentMd': 'Metadane rodzica',
- 'updateChildren': 'Aktualizuj dzieci',
- 'records': 'Rekordy',
- 'record': 'Rekord',
- 'help': 'Pomoc',
- 'publishError': 'Publikacja nieudana.',
- 'outOfMemoryError': 'Brak pamięci.',
- 'publishErrorCode': 'Kod błedu:',
- 'saveAndCheck': 'Zapisz i sprawdź',
- 'saveAndClose': 'Zapisz i zamknij',
- 'cancel': 'Anuluj',
- 'layout': 'Rozmieszczenie',
- 'collapseAll': 'Zwiń wszystkie sekcje',
- 'editAttributes': 'Zarządzaj atrybutani',
- 'chooseAType': 'Wybierz typ',
- 'chooseAView': 'Wybierz widok',
- 'viewMode': 'Tryb widoku',
- 'errorAndStatusMsg': 'Błąd. Status: ${status}, tekst: ${text}. Spróbuj ponownie.',
- 'mdEditor': 'Edytor metadanych',
- 'minorEditTT': 'Nie aktualizuj stempla czasowego podczas zapisu',
- 'editing': 'Edycja ${title} (${uuid})',
- 'GetCapabilitiesDocumentError': "Błąd ładowania dokumentu GetCapabilities usługi z URL: ",
- 'maxResults': "Ilość wyników",
- 'mdTitle': "Tytuł metadanych",
- 'keywords': "Słowa kluczowe",
- 'createRelation': "Dodaj relację",
- 'createIfNotExistButton': "Create a new metadata recordUtwórz nowy plik metadanych",
- 'getCapabilitiesLayer': "GetCapabilities warstwy",
- 'layerName': "Nazwa warstwy",
- 'searching': "Wyszukiwanie ...",
- 'perThesaurus': " tezaurus",
- 'anyThesaurus': "Dowolny tezaurus",
- 'addFromThesaurus': 'Add from thesaurus ...',
- 'selectedKeywords': "Wybierz słowa kluczowe",
- 'foundKeywords': "Dostępne słowa kluczowe",
- 'clear': "Wyczyść",
- 'publish': "Publikuj",
- 'publishTooltip': "Publikuj zbiór na zdalnej usłudze. Jeśli zbiór został już opublikowany, zostanie zaktualizowany.",
- 'publishSuccess': "Publikacja zakończona powodzeniem.",
- 'publishLayerAdded': " Warstwa dodana do podglądu.",
- 'unpublish': "Cofnij publikację",
- 'unpublishTooltip': "Usuń zbiór ze zdalnej usługi.",
- 'unpublishSuccess': "Cofnięcie publikacji zakończone powodzeniem.",
- 'unpublishError': "Cofnięcie publikacji nieudane. ",
- 'check': "Sprawdź",
- 'errorDatasetNotFound': "Zbiór danych nie został znaleziony.",
- 'datasetFound': "Odnaleziono zbiór danych i dodano do podglądu.",
- 'checkFailure': "Nieudana kontrola zbioru w zdalnej usłudze.",
- 'addOnlineSourceTitle': "Powiąż metadane usługi",
- 'addOnlineSource': 'Dodaj łącza',
- 'addOnlineSourceTT': 'Dodaj sekcję źródła w bieżącym rekordzie metadanych wskazując na usługę WMS/WFS/WCS services..',
- 'statusInformation': "Informacje o statusie.",
- 'publishing': "Publikowanie ...",
- 'mapPreview': "Podgląd mapy",
- 'selectANode': "Wskaż węzeł ...",
- 'geoPublisherWindowTitle': "Geo-publikacja: ",
- 'keywordSelectionWindowTitle': "Sekcja słów kluczowych",
- 'crsSelectionWindowTitle': "Sekcja układów odniesienia",
- 'linkedMetadataSelectionWindowTitle': "Sekcja powiązanych metadanych",
- 'NotOwnerError': "Nie masz uprawnień do edycji powiązanego rekordu.",
- 'ServiceUpdateError': "Błąd podczas aktualizacji metadanych usługi",
- 'associateService': "Połącz metadane usługi",
- 'associateDataset': "Połąćz metadane zbiorów",
- 'logoSelectionWindow': "Wybierz logo",
- 'fileUploadWindow': 'Wyślij dane lub metadane',
- 'selectedCRS': "Wybierz układ odniesienia",
- 'foundCRS': "Dostępne układy odniesienia",
- 'search': 'Szukaj',
- 'restrictSearchToMap': 'Ogranicz wyszukiwanie do zasięgu mapy',
- 'selected': 'Wybrane',
- 'selectRegion': 'Wybierz region ...',
- 'drawRectangle': "Narysuj prostokąt",
- 'drawPolygon': "Narysuj wielokąt",
- 'drawPolygonTT': "Kliknij ma napie aby dodać wierzchołek. Podwójne kliknięcie kończy rysowanie wieloboku.",
- 'drawCircle': 'Narysuj okrąd',
- 'discovery': 'Wyszukiwanie',
- 'visualization': 'Wizualizacja',
- 'when': 'Kiedy ?',
- 'anyTime': 'Kiedykolwiek',
- 'onSelection': 'Przy wyborze',
- 'adminAction': 'Inne',
- 'newMetadata': 'Nowe metadane',
- 'chooseTemplate': 'Wybierz wzorzec',
- 'newMetadataTitle': 'Create a metadata by choosing a template and selecting one group',
- 'tplTitle': 'Template description',
- 'metadatatype': 'Ressource type',
- 'process': 'Przetwórz',
- 'suggestions': 'Sugestie',
- 'applySelected': 'Zastosuj wybrane zadanie',
- 'processParametersWindow': 'Parametry zadania',
- 'noSuggestion': 'Brak sugestii.',
- 'thumbnailUploadWindow': 'Wyślij miniaturkę',
- 'addThumbnail': 'Dodaj',
- 'createSmall': 'Utwórz małą miniaturkę',
- 'scalingFactor': 'Współczynnik skali',
- 'smallScalingFactor': 'Mały współczynnik skali',
- 'type': 'typ elementu',
- 'clickToClose': 'Kliknij aby zamknąć',
- 'removeSelected': 'Usuń zaznaczone',
- 'ownerName': 'Właściciel metadanych',
- 'setPrivileges': 'Ustaw uprawnienia',
- 'setBatchPrivileges': 'Overwrite privileges of selected records',
- 'setCategories': 'Ustaw kategorie',
- 'massiveOp': 'Masowa operacja ',
- 'prepareDownload': 'Pobierz pliki',
- 'mdMenu': 'Akcje',
- 'deleteRecord': 'Usunać plik metadanych ?',
- 'deleteConfirm': 'Jesteś pewny, że chcesz usunąć wybrane metadane?',
- 'deleteRecordSuccess': 'Usunięto metadane.',
- 'deleteRecordFailure': 'Błąd podczas usuwania metadanych.',
- 'advancedSearchOptions': 'Kryteria zaawansowane',
- 'relatedservices': 'Powiązane usługi',
- 'relatedsource': 'Source datasets',
- 'relatedhassource': 'Is used in',
- 'relatedchildren': 'Dzieci',
- 'relatedsibling': 'Related records',
- 'relatedassociated': 'Related records',
- 'relatedfcats': 'Powiązany katalog obiektów',
- 'relatedhasfeaturecat': 'Zbiory danych',
- 'relatedsources': 'Źródłowe zbiory danych',
- 'getMEF': 'Export (ZIP)',
- 'metadataCategories': 'Kategorie metadanych',
- 'validityInfo': 'Status walidacji: ',
- 'lastUpdate': 'Ostatnia aktualizacja: ',
- 'importMetadata': 'Importuj metadane',
- 'validationStatus': 'Status walidacji',
- 'valid': 'Poprawny',
- 'notValid': 'Niepoprawny',
- 'notDetermined': 'Nieokreślony',
- 'addToMap': 'Dodaj do mapy: ',
- 'map': 'Map',
- 'interactiveMap': 'Interactive map',
- 'staticMap': 'Static map',
- 'downloadLink': 'Pobierz: ',
- 'webLink': 'Link: ',
- 'viewKml': 'Otwórz w GoogleEarth: ',
- 'layerTree': 'Menager warstw',
- 'mdResultsLayer': 'Wyniki wyszukiwania',
- 'printLayer': 'Drukuj stronę',
- 'relatedservices': 'Powiązane usługi',
- 'relatedparent': 'Rodzic',
- 'relateddatasets': 'Powiązane zbiory danych',
- 'relatedchildren': 'Dzieci',
- 'relatedrelated': 'Link do zbioru/katalogu obiektów',
- 'delete19110Relation': 'Usuń relację z katalogiem obiektów',
- 'newWindow': 'Nowe okno',
- 'addAsXLink': 'Dodaj jako powiązany element',
- 'contactSelectionWindowTitle': 'Sekacja informacji kontaktowych',
- 'selectedContacts': 'Wybrane kontakty',
- 'foundContacts': 'Dostępne',
- 'contactRole': 'Rola',
- 'mapNearYou': 'Wyśrodkuj mapę na swoim położeniu',
- 'errorChangeProtocol': 'Usuń wysłany plik przed zmianą protokołu.',
- 'resultBy': ' Wynik(i) / ',
- 'subTemplateImport': 'Import wpisu',
- 'xmlData': 'XML',
- 'minorEdit': 'Drobna edycja',
- 'minorEditTT': '',
- // Shortcuts
- 'runASearch': 'Wyszukaj.',
- 'focusOnAny': 'Przenieś zaznaczenie do pola wyszukiwania w pełnym tekście.',
- 'hideSearchForm': 'Ukryj/pokaż formularz wyszukiwania.',
- 'switchMode': 'Przełącz widok.',
- 'resetSearchForm': 'Wyczyść formularz wyszukiwania.',
- 'focusOnLogin': 'Przenieś zaznaczenie do formularza logowania, aby uzyskać dostęp do narzędzi administracyjnych, lub wyloguj, jeśli jesteś zalogowany.',
- 'openAdmin': 'Przejdź do panelu administracyjnego',
- 'displayInfoPanel': 'Pokarz panel informacji.',
- 'displayHelpPanel': 'Pokaż pomoc.',
-
- 'SelectionWindowTitle': 'Wybierz z katalogu',
- 'found': 'Odnalezione rekordy',
- 'selected': 'Zaznaczone',
-
- 'create': 'Utwórz',
-
- // Feedback
- 'feedbackcontactDetails' : 'Dane teleadresowe',
- 'feedbacknameInitials' : 'Imię i nazwisko, inicjał (-y)',
- 'feedbackmale' : 'Mężczyzna',
- 'feedbackfemale' : 'Kobieta',
- 'feedbackposition' : 'Stanowisko',
- 'feedbackorganization' : 'Organizacja',
- 'feedbackphone' : 'Telefon',
- 'feedbackemail' : 'Email',
- 'feedbackfeedback': 'Sprzężenie zwrotne',
- 'feedbackfunction': 'Funkcja',
- 'feedbackquestion': 'Pytanie',
- 'feedbackerror' : 'Błąd',
- 'feedbackremark' : 'Uwaga',
- 'feedbackcontact' : 'Kontakt',
- 'feedbackcategory' : 'Kategoria',
- 'feedbackmetadataContent' : 'Content Metadata',
- 'feedbackdataContent' : 'Zawartość danych',
- 'feedbackserviceContent' : 'Zawartość usługi',
- 'feedbacksupport' : 'Wsparcie',
- 'feedbackmapViewer' : 'Map Viewer',
- 'feedbacksearch' : 'Szukaj',
- 'feedbackorganizations' : 'Organizacje',
- 'feedbackcontentManagement' : 'Content Management',
- 'feedbackmetadataImport' : 'Importowanie metadanych',
- 'feedbackmetadataEdit' :'Edycja metadanych',
- 'feedbackharvesting' : 'Zbioru',
- 'feedbackvalidator' : 'Validator',
- 'feedbackother' : 'Inaczej',
- 'feedbackremarks' : 'Uwagi',
- 'feedbackmetadataData' : 'Metadanych',
- 'feedbacktitle' : 'Tytuł',
- 'feedbackPanelTitle' : 'Za pomocą tego formularza możesz dać komentarz na metadanych, danych i / lub usług.',
- 'feedbacksubmit' : 'Wysłać',
- 'feedbackerrorTitle' : 'Zwracać uwagę',
- 'feedbackerrorMsg' : 'Wystąpił błąd podczas wysyłania. Prosimy spróbować ponownie później.',
- 'feedbackcancel' : 'Anulować',
- 'feedbackWindowTitle' : 'sprzężenie zwrotne',
-
- // Suggestion processing
- 'add-extent-from-geokeywordsreplace': 'Zastąp bierzący zakres',
- 'add-info-from-wmssetExtent': 'Ustal zakres',
- 'add-info-from-wmssetAndReplaceExtent': 'Zastąp istniejący zakres',
- 'add-info-from-wmssetCRS': 'Ustaw układ odniesienia',
- 'add-info-from-wmssetDynamicGraphicOverview': 'Ustaw opis graficzny (na podstawie zapytania GetMap)',
- 'add-info-from-wmswmsServiceUrl': 'URL Usługi',
- 'linked-data-checkerlinkUrl': 'URL do usunięcia',
- 'related-metadata-checkeruuidToRemove': 'Identyfikator do usunięcia',
- 'add-service-info-from-wxssetAndReplaceOperations': 'Zastąp istniejące operacje',
- 'add-service-info-from-wxswxsServiceUrl': 'URL usługi',
-
- // Admin
- 'manageDirectories' : 'Zarządzaj katalogami',
- 'directory': 'Katalog',
- 'thesaurusManager': 'Zarządzaj tezaurusami',
- 'Theme': 'Temat',
- 'thesaurusFilePath': 'Plik tezaurusa (.rdf)',
- 'ThesaurusTitle': 'Nazwa tezaurusa',
- 'ThesaurusId': 'Thesaurus identifier',
- 'ThesaurusNs': 'Thesaurus namespace',
- 'createThesaurusFromURL': 'z URL',
- 'createThesaurusFromRepository': 'z repozytorium tezaurusa',
- 'creationMode': 'Utwórz',
- 'thesaurusFromRepository': 'Tezaurus',
- 'externalThesaurusURL': 'URL',
- 'thesaurusCreation': 'Dodaj tezaurus',
- 'Type': 'Typ',
- 'Activated': 'Aktywowany',
- 'emptyThesaurus': 'Nowy, pusty tezaurus',
- 'thesaurusFromFile': 'Z lokalnego pliku',
- 'thesaurusFromURL': 'Ze zdalnedo pliku (URL)',
- 'id': 'Identyfikator',
- 'mdIdentifier': 'Record internal identifier: ',
- 'mdUUID': 'Record unique identifier: ',
- 'label': 'Etykieta',
- 'definition': '-',
- 'xmin': 'X min',
- 'ymin': 'Y min',
- 'xmax': 'X max',
- 'ymax': 'Y max',
- 'newLabel': 'Etykieta',
- 'newDefinition': 'Definicja',
- 'selDirectoryTT': 'Wybierz typ katalogu. Katalog grupuje wszystkie elementy posiadające wspólnego rodzica (np. gmd:CI_ResponsibleParty jest katalogiem dla informacji kontaktowych)',
- 'privTplElTT': 'Zarządzaj uprawnieniami dla zaznaczenia.',
- 'addTplElTT': 'Dodaj fragment z XML. Katalog docelowy wybierany jest na podstawie głównego elementu (np. gmd:CI_ResponsibleParty).',
- 'copyTplElTT': 'Utórz nowy wpis na podstawie zaznaczenia.',
- 'delTplElTT': 'Usuń wpis z katalogu.',
- 'language': 'Język',
- 'metadataPOC': 'metadata point of contact',
- 'metadataPOCs': 'Metadata point of contact',
- 'spatialRepresentationType': 'spatial type',
- 'spatialRepresentationTypes': 'Spatial types',
- 'createDateYear': 'year',
- 'createDateYears': 'Years',
- 'denominator': 'scale denominator',
- 'denominators': 'Scale denominators',
- 'orgName': 'organization',
- 'orgNames': 'Organizations',
- 'serviceTypes': 'Service types',
- 'facetMore': '+ Show more filters',
- 'facetLess': '- Show less filters',
-
- 'extractorTitle': 'Download data from ',
- 'defineExtractionArea': 'Define extraction area',
- 'chooseALayer': 'Choose a layer',
- 'outputFormat': 'Output format',
- 'dataDownload': "Download data",
- 'wfsVersion': 'Service version',
- 'wxs-extract-service-not-found': 'Error connecting to the service ${url}. ${misc}.',
- 'wxs-extract-layer-not-found': 'Layer ${layer} not found in WFS (${url}).',
- 'GML2': 'GML 2',
- 'GML3': 'GML 3',
- 'CSV': 'Text CSV',
- 'SHAPE-ZIP': 'ESRI Shapefile',
- //tabbed search
- 'Home': "Strona startowa",
- 'Map': "Mapa",
- 'Poweredby': "Powered by",
- 'About': "O...",
- 'org': "Organizacja",
- 'keyword': "słowo kluczowe",
- 'when': "kiedy?",
- 'advancedSearchOptions': "Zaawansowane opcje wyszukiwania",
- 'hitsPerPage': "Liczba wyników na stronie",
- 'Searchforspatialdataon': "Wyszukaj dane przestrzenne dla",
- 'search': "szukaj",
- 'fullTextSearch': "Wyszukiwanie w pełnym tekście",
- 'reset': "czyść",
- 'resetSearchForm': "Czyść formularz wyszukiwania",
- 'Advanced': "Zaawansowane",
- 'newWindow': "Nowe okno",
- 'mdEditor': "Edytor metadanych",
- 'List': "Lista",
- 'to-iso19139-keyword': 'Text mode',
- 'to-iso19139-keyword-as-xlink': 'Linked mode',
- 'to-iso19139-keyword-with-anchor': 'Anchor mode',
- 'linklabel-application/vnd.ogc.wms_xml': 'Add to map',
- 'linklabel-application/vnd.ogc.wmc': 'Interactive map',
- 'linklabel-OGC:WMC-1.1.0-http-get-capabilities': 'Download Web Map Context',
- 'linklabel-application/pdf': 'PDF',
- 'linklabel-OGC:WMS': 'Add to map',
- 'linklabel-application/vnd.google-earth.kml+xml': 'View in Google Earth',
- 'linklabel-application/zip': 'Download',
- 'linklabel-WWW:DOWNLOAD-1.0-http--download': 'Download',
- 'linklabel-application/x-compressed': 'Download',
- 'linklabel-application/octet-stream': 'Download',
- 'linklabel-text/html': 'Web link',
- 'linklabel-text/plain': 'Web link',
- 'linklabel-image/png': 'Image link',
- 'linklabel-image/jpeg': 'Image link',
- 'linklabel-': 'Link',
- 'insertMode': 'Insert Mode',
- 'fileUpload': 'File upload',
- 'copyPaste': 'Copy/Paste',
- 'fileType': 'File Type',
- 'singleFile' :'Single File (XML, SLD, WMC...)',
- 'mefFile': 'MEF file',
- 'importActions': 'Import actions',
- 'noActionOnImport': 'No action on import',
- 'overwriteMD': 'Overwrite metadata with same UUID' ,
- 'generateUuid': 'Generate UUID for inserted metadata',
- 'styleSheet': 'StyleSheet',
- 'validate': 'Validate',
- 'assignCurCat': 'Assign to current catalog',
- 'metadata': 'Metadata',
- 'mdInsertResults': 'Results of metadata import',
- 'mdInsertSuccess': 'Metadata inserted with',
- 'mdInsertFailure': 'Error while inserting metadata : ',
- 'mdRecordsProcessed': 'Total number of metadata records processed',
- 'mdRecordsAdded': 'Total number of metadata records added',
- 'chooseCategory': 'Choose a category',
- 'massivereplace-title': 'Metadata massive replacements',
- 'massivereplace-add-title': 'Add replacement',
- 'massivereplace-add-msg': 'Fill all the replacement information',
- 'massivereplace-noreplacements': 'No replacements defined',
- 'massivereplace-test': 'The process is going to test the replacements to the selected metadata. Do you want to proceed?',
- 'massivereplace-execute': 'The process is going to apply the replacements to the selected metadata. Do you want to proceed?'
-};
-
-OpenLayers.Util.extend(OpenLayers.Lang.pl, GeoNetwork.Lang.pl);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/CursorPos.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/CursorPos.js
deleted file mode 100644
index aa13ac025a4..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/CursorPos.js
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Control) {
- GeoNetwork.Control = {};
-}
-
-/**
- * Class: GeoNetwork.Control.CursorPos
- * Displays the cursor position X and Y coordinate in 2 ExtJS elements
- *
- * Inherits from:
- * -
- */
-GeoNetwork.Control.CursorPos = OpenLayers.Class(OpenLayers.Control.MousePosition, {
-
- /**
- * Property: xelement
- * {Ext.Element} Element in which the X-coordinate should display
- */
- xelement: null,
-
- /**
- * Property: yelement
- * {Ext.Element} Element in which the Y-coordinate should display
- */
- yelement: null,
-
- /**
- * Property: numdigits
- * {Ext.Element} Number of decimal digits to format the coordinates
- */
- numdigits: 2,
-
- /**
- * Constructor: GeoNetwork.Control.CursorPos
- * Create a new cursor position control
- *
- * Parameters:
- * options - {Object} Options for control.
- */
- initialize: function(options) {
- OpenLayers.Control.MousePosition.prototype.initialize.apply(this, arguments);
- },
-
- /**
- * Method: draw
- * Draws the control
- */
- draw: function() {
- OpenLayers.Control.prototype.draw.apply(this, arguments);
- this.redraw();
- },
-
- /**
- * Method: redraw
- * Redraws the control
- *
- * Parameters:
- * evt - {Event} The event object (mouse move)
- */
- redraw: function(evt) {
-
- var lonLat;
-
- if (evt == null) {
- lonLat = new OpenLayers.LonLat(0, 0);
- } else {
- if (this.lastXy == null ||
- Math.abs(evt.xy.x - this.lastXy.x) > this.granularity ||
- Math.abs(evt.xy.y - this.lastXy.y) > this.granularity)
- {
- this.lastXy = evt.xy;
- return;
- }
-
- lonLat = this.map.getLonLatFromPixel(evt.xy);
- if (!lonLat) {
- // map has not yet been properly initialized
- return;
- }
- this.lastXy = evt.xy;
-
- }
- if (this.xelement) {
- this.xelement.dom.value = lonLat.lon.toFixed(this.numdigits);
- }
- if (this.yelement) {
- this.yelement.dom.value = lonLat.lat.toFixed(this.numdigits);
- }
- },
-
- CLASS_NAME: "GeoNetwork.Control.CursorPos"
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ExtentBox.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ExtentBox.js
deleted file mode 100644
index 44907e63796..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ExtentBox.js
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Control) {
- GeoNetwork.Control = {};
-}
-
-/**
- * Class: GeoNetwork.Control.ExtentBox
- * The ExtentBox control enables the user to define an extent
- * which is to be used in GeoNetwork searches, by drawing a box on the map.
- *
- * Inherits from:
- * -
- */
-GeoNetwork.Control.ExtentBox = OpenLayers.Class(OpenLayers.Control, {
-
- /**
- * Property: type
- * {OpenLayers.Control.TYPE}
- */
- type: OpenLayers.Control.TYPE_TOOL,
-
- /**
- * Property: wktelement
- * {Ext.Element} Element in search form for WKT geometry
- */
- wktelement: null,
-
- /**
- * Property: minxelement
- * {Ext.Element} Element in search form for minX-coordinate
- */
- minxelement: null,
-
- /**
- * Property: minyelement
- * {Ext.Element} Element in search form for minY-coordinate
- */
- minyelement: null,
-
- /**
- * Property: maxxelement
- * {Ext.Element} Element in search form for maxX-coordinate
- */
- maxxelement: null,
-
- /**
- * Property: maxyelement
- * {Ext.Element} Element in search form for maxY-coordinate
- */
- maxyelement: null,
-
- /**
- * Constant: EVENT_TYPES
- *
- * Supported event types:
- * finishBox - Triggered when a the extent box is finished
- */
- EVENT_TYPES: ["finishBox"],
-
- /**
- * Constructor: GeoNetwork.Control.ExtentBox
- * Create a new extent box control
- *
- * Parameters:
- * options - {Object} An optional object whose properties will be set on
- * the control
- */
- initialize: function(options) {
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- GeoNetwork.Control.ExtentBox.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
- OpenLayers.Control.prototype.initialize.apply(this, arguments);
- this.handler = new OpenLayers.Handler.RegularPolygon(this,
- {create: this.startBox, done: this.endBox},
- {
- irregular: true,
- // fix for misplaced drawn feature:
- down: function(evt) {
- this.map.events.clearMouseCache();
- evt.xy = this.map.events.getMousePosition(evt);
- return OpenLayers.Handler.RegularPolygon.prototype.down.call(this, evt);
- }
- }
- );
- },
-
- /**
- * Method: setMap
- * Attach a map object to this control.
- *
- * Parameters:
- * map - {} The map object
- */
- setMap: function(map) {
- OpenLayers.Control.prototype.setMap.apply(this, arguments);
- },
-
- /**
- * Method: startBox
- * Event handler for OpenLayers.Handler.RegularPolygon.create
- */
- startBox: function() {
- this.getOrCreateLayer();
- this.vectorLayer.destroyFeatures();
- },
-
- /**
- * Method: endBox
- * Event handler for OpenLayers.Handler.RegularPolygon.done
- */
- endBox: function() {
- var bounds = this.handler.feature.geometry.getBounds();
- this.updateFields(bounds);
- this.events.triggerEvent("finishBox", null);
- },
- updateFieldsWKT: function(wkt) {
- // Reproject WGS extent to map projection
- // Before adding to the map
- var geom = OpenLayers.Geometry.fromWKT(wkt);
- var mapProj = this.map.getProjectionObject();
- var wgs84 = new OpenLayers.Projection("WGS84");
- geom = geom.transform(wgs84, mapProj)
- this.updateFields(geom.getBounds());
- },
- updateFields: function(bounds) {
- var polFeature = new OpenLayers.Feature.Vector(
- bounds.toGeometry(), null, this.vectorLayerStyle);
- this.vectorLayer.addFeatures([polFeature]);
- this.vectorLayer.refresh();
-
- var mapProj = this.map.getProjectionObject();
- var wgs84 = new OpenLayers.Projection("WGS84");
-
- var minxy = new OpenLayers.LonLat(bounds.left, bounds.bottom).transform(mapProj, wgs84);
- var maxxy = new OpenLayers.LonLat(bounds.right, bounds.top).transform(mapProj, wgs84);
-
- var minx = minxy.lon.toFixed(4), miny = minxy.lat.toFixed(4),
- maxx = maxxy.lon.toFixed(4), maxy = maxxy.lat.toFixed(4);
- // Update form elements
- if (this.wktelement) {
- this.wktelement.setValue('POLYGON((' + minx + ' ' + miny + ','
- + minx + ' ' + maxy + ',' + maxx + ' '
- + maxy + ',' + maxx + ' ' + miny + ','
- + minx + ' ' + miny + '))');
- } else {
- if (this.minxelement) {
- this.minxelement.dom.value = minx;
- }
- if (this.maxxelement) {
- this.maxxelement.dom.value = maxx;
- }
- if (this.minyelement) {
- this.minyelement.dom.value = miny;
- }
- if (this.maxyelement) {
- this.maxyelement.dom.value = maxy;
- }
- }
- },
- /**
- * APIMethod: updateMap
- * Update the extent box when the form fields are changed
- */
- updateMap: function() {
- if ((!this.minxelement) || (!this.maxxelement) ||
- (!this.minyelement) || (!this.maxyelement)) {
- return;
- }
-
- this.getOrCreateLayer();
-
- var mapProj = this.map.getProjectionObject();
- var wgs84 = new OpenLayers.Projection("WGS84");
-
- var minMapxy = new OpenLayers.LonLat(this.map.getExtent().left,
- this.map.getExtent().bottom).transform(mapProj, wgs84);
- var maxMapxy = new OpenLayers.LonLat(this.map.getExtent().right,
- this.map.getExtent().top).transform(mapProj, wgs84);
-
- // Validate extent values
- var aux = parseFloat(this.minxelement.dom.value);
- if (isNaN(aux)) {
- this.minxelement.dom.value = minMapxy.lon;
- }
- /*if (this.minxelement.dom.value < minMapxy.lon) {
- this.minxelement.dom.value = minMapxy.lon;
- }*/
-
- aux = parseFloat(this.maxxelement.dom.value);
- if (isNaN(aux)) {
- this.maxxelement.dom.value = maxMapxy.lon;
- }
- /*if (this.maxxelement.dom.value > maxMapxy.lon) {
- this.maxxelement.dom.value = maxMapxy.lon;
- }
- if (this.maxxelement.dom.value < this.minxelement.dom.value) {
- this.maxxelement.dom.value = maxMapxy.lon;
- }*/
-
- aux = parseFloat(this.minyelement.dom.value);
- if (isNaN(aux)) {
- this.minyelement.dom.value = minMapxy.lat;
- }
- /*if (this.minyelement.dom.value < minMapxy.lat) {
- this.minyelement.dom.value = minMapxy.lat;
- }*/
-
- aux = parseFloat(this.maxyelement.dom.value);
- if (isNaN(aux)) {
- this.maxyelement.dom.value = maxMapxy.lat;
- }
- /*if (this.maxyelement.dom.value < maxMapxy.lat) {
- this.maxyelement.dom.value = maxMapxy.lat;
- }
- if (this.maxyelement.dom.value < this.minyelement.dom.value) {
- this.maxyelement.dom.value = maxMapxy.lat;
- }*/
-
- // Format numbers
- this.minxelement.dom.value = parseFloat(this.minxelement.dom.value).toFixed(4);
- this.maxxelement.dom.value = parseFloat(this.maxxelement.dom.value).toFixed(4);
- this.minyelement.dom.value = parseFloat(this.minyelement.dom.value).toFixed(4);
- this.maxyelement.dom.value = parseFloat(this.maxyelement.dom.value).toFixed(4);
-
- this.vectorLayer.destroyFeatures();
-
- // Create new bounding box
- var minxy = new OpenLayers.LonLat(this.minxelement.dom.value,
- this.minyelement.dom.value).transform(wgs84, mapProj);
- var maxxy = new OpenLayers.LonLat(this.maxxelement.dom.value,
- this.maxyelement.dom.value).transform(wgs84, mapProj);
-
- var bounds = new OpenLayers.Bounds();
- bounds.extend(minxy);
- bounds.extend(maxxy);
-
- var polFeature = new OpenLayers.Feature.Vector(
- bounds.toGeometry(), null, this.vectorLayerStyle);
-
- this.vectorLayer.addFeatures([polFeature]);
-
- this.vectorLayer.refresh();
- },
-
- /**
- * Function: getOrCreateLayer
- * Returns the layer for extent box. It is created if null.
- * The layer is not created in setMap to prevent a problem in IE
- * that fails renderer assignment if page is not fully loaded
- * (VML.js: supported method fails)
- *
- * Returns:
- * {} The vector layer used for drawing.
- */
- getOrCreateLayer: function() {
- if (!this.vectorLayer) {
- this.vectorLayer = this.vectorLayer || new OpenLayers.Layer.Vector(
- "ExtentBox", {
- style: this.vectorLayerStyle
- });
- this.map.addLayer(this.vectorLayer);
- }
- this.map.setLayerIndex(this.vectorLayer, this.map.getNumLayers());
- return this.vectorLayer;
- },
-
- /**
- * Method: clear
- * Clears the vector layer containing the extent box.
- */
- clear: function() {
- if (this.vectorLayer) {
- this.vectorLayer.destroyFeatures();
- }
- },
-
- zoomTo: function() {
- var mapProj = this.map.getProjectionObject();
- var wgs84 = new OpenLayers.Projection("WGS84");
-
- // Create new bounding box
- var minxy = new OpenLayers.LonLat(this.minxelement.dom.value,
- this.minyelement.dom.value).transform(wgs84, mapProj);
- var maxxy = new OpenLayers.LonLat(this.maxxelement.dom.value,
- this.maxyelement.dom.value).transform(wgs84, mapProj);
-
- var bounds = new OpenLayers.Bounds();
- bounds.extend(minxy);
- bounds.extend(maxxy);
-
- this.map.zoomToExtent(bounds);
- },
-
- CLASS_NAME: "GeoNetwork.Control.ExtentBox"
-});
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/WMSGetFeatureInfo.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/WMSGetFeatureInfo.js
deleted file mode 100644
index ac8c54a9a58..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/WMSGetFeatureInfo.js
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Control) {
- GeoNetwork.Control = {};
-}
-
-/**
- * Class: GeoNetwork.Control.WMSGetFeatureInfo
- * The WMS GetFeatureInfo control can be used to retrieve attribute information
- * for several WMS layers in a map.
- * It will query all visible and queryable WMS layers in the map.
- * In the future this class could be replaced by the default
- * OpenLayers.Control.WMSGetFeatureInfo, but then ticket:2091 needs to be
- * resolved first [http://trac.openlayers.org/ticket/2091].
- *
- * Inherits:
- * -
- */
-GeoNetwork.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
-
- /**
- * APIProperty: showMarker
- * {Boolean} Should we show a marker where the user clicked in the map?
- * There will only be one marker at a time. Default is true.
- */
- showMarker: true,
-
- /**
- * APIProperty: markerIcon
- * {} the icon to use for the featureinfo marker
- */
- markerIcon: OpenLayers.Marker.defaultIcon(),
-
- /**
- * Constant: EVENT_TYPES
- *
- * Supported event types:
- * - *featureinfostart* Triggered when the user clicks in the map
- * - *featureinfoend* Triggered when all WMS GetFeatureInfo responses are in
- */
- EVENT_TYPES: ['featureinfostart', 'featureinfoend'],
-
- /**
- * Property: callbacks
- * {Object} The functions that are sent to the click handler for callback
- */
- callbacks: null,
-
- /**
- * Property: markerLayer
- * {} The marker layer in which the feature info
- * marker will be drawn.
- */
- markerLayer: null,
-
- /**
- * Property: location
- * {} The real-world location where the user clicked
- */
- location: null,
-
- /**
- * Property: feature
- * {} The feature from which the popup is created
- */
- feature: null,
-
- /**
- * Property; counter
- * {Integer} Counter is used to see how many of the WMS GetFeatureInfo
- * responses have been retrieved
- */
- counter: null,
-
- /**
- * Property; format
- * {} The XML parser for GetFeatureInfo responses
- */
- format: new OpenLayers.Format.WMSGetFeatureInfo(),
-
- /**
- * Constructor: GeoNetwork.Control.WMSGetFeatureInfo
- * Create a new feature info control
- *
- * Parameters:
- * options - {Object} An optional object whose properties will be set on
- * the control
- */
- initialize: function(options) {
- this.EVENT_TYPES =
- GeoNetwork.Control.WMSGetFeatureInfo.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES);
-
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
-
- this.handler = new OpenLayers.Handler.Click(this,
- OpenLayers.Util.extend({click: this.click}, this.callbacks));
- },
-
- /**
- * Function: destroy
- * Destroy control.
- */
- destroy: function() {
- if (this.markerLayer) {
- this.markerLayer.destroy();
- this.markerLayer = null;
- if (this.feature) {
- this.feature.destroy();
- }
- }
- OpenLayers.Control.prototype.destroy.apply(this, arguments);
- },
-
- /**
- * Method: performRequest
- * Build up the url for the WMS GetFeatureInfo request and retrieve it.
- *
- * Parameters:
- * url - {String} the url of the service
- * queryLayers - {String} the comma separated list of wms layers to query
- * evt - {Event} The event object from the click event.
- */
- performRequest: function(url, queryLayers, evt) {
- var params = {
- REQUEST: 'GetFeatureInfo',
- EXCEPTIONS: 'application/vnd.ogc.se_xml',
- BBOX: this.map.getExtent().toBBOX(),
- X: evt.xy.x,
- Y: evt.xy.y,
- INFO_FORMAT: 'application/vnd.ogc.gml',
- QUERY_LAYERS: queryLayers,
- LAYERS: queryLayers,
- WIDTH: this.map.size.w,
- HEIGHT: this.map.size.h,
- VERSION: '1.1.1',
- SERVICE: 'WMS',
- SRS: this.map.getProjection()
- };
- url = GeoNetwork.OGCUtil.ensureProperUrlEnd(url) + OpenLayers.Util.getParameterString(params);
- OpenLayers.Request.GET({
- url: url,
- success: this.returnResponse,
- scope: this
- });
- },
-
- /**
- * Method: click
- * Capture the click event
- *
- * Parameters:
- * evt - {Event} The event object from the click event.
- */
- click: function (evt) {
- this.events.triggerEvent('featureinfostart');
- var layer;
- this.counter = 0;
- this.start();
- this.location = this.map.getLonLatFromPixel(evt.xy);
- for (var i=0, len=this.map.layers.length;i} The layer to be added.
- */
- addToRequestQueue: function(layer) {
- var arr = layer.params.LAYERS.split(",");
- var i, len;
- for (i=0, len=arr.length; i} The map object
- */
- setMap: function(map) {
- OpenLayers.Control.prototype.setMap.apply(this, arguments);
- if (this.showMarker) {
- this.markerLayer = new OpenLayers.Layer.Markers('featureinfo',
- {displayInLayerSwitcher: false});
- this.map.addLayer(this.markerLayer);
- }
- },
-
- /**
- * Function: deactivate
- * Deactivate the control
- *
- * Returns: {Boolean} True if the control was effectively deactivated or
- * false if the control was already inactive.
- */
- deactivate: function() {
- if (this.markerLayer) {
- this.markerLayer.clearMarkers();
- }
- return OpenLayers.Control.prototype.deactivate.apply(this,arguments);
- },
-
- CLASS_NAME: "GeoNetwork.Control.WMSGetFeatureInfo"
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ZoomWheel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ZoomWheel.js
deleted file mode 100644
index ad5e979f224..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Control/ZoomWheel.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Control) {
- GeoNetwork.Control = {};
-}
-
-/**
- * Class: GeoNetwork.Control.ZoomWheel
- * A control which uses a wheelhandler to navigate the map (zoom in/out).
- * This control differs from OpenLayers.Control.Navigation wrt not having a
- * zoombox and dragpan.
- *
- * Inherits:
- * -
- */
-GeoNetwork.Control.ZoomWheel = OpenLayers.Class(OpenLayers.Control, {
-
- wheelChange: OpenLayers.Control.Navigation.prototype.wheelChange,
-
- /**
- * Method: draw
- */
- draw: function() {
- this.handler = new OpenLayers.Handler.MouseWheel( this,
- {'up': OpenLayers.Control.Navigation.prototype.wheelUp,
- 'down': OpenLayers.Control.Navigation.prototype.wheelDown });
- this.activate();
- },
-
- CLASS_NAME: "GeoNetwork.Control.ZoomWheel"
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/ExtentMap.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/ExtentMap.js
deleted file mode 100644
index 3169638d84c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/ExtentMap.js
+++ /dev/null
@@ -1,908 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork.map');
-
-/** api: (define)
- * module = GeoNetwork.map
- * class = ExtentMap
- */
-/** api: constructor
- * .. class:: ExtentMap()
- *
- * ExtentMap is a utility class used for map initialization in metadata view and edit mode.
- *
- * Search for all maps defined in the current page and create a map
- * with bounding box in view mode and add editing tools when needed.
- *
- * Editing tools could be draw rectangle, draw polygon and draw circle.
- *
- */
-/**
- * @include GeoExt/widgets/MapPanel.js
- * @include GeoExt/widgets/Action.js
- * @include OpenLayers/Control/DrawFeature.js
- * @include OpenLayers/Control/Navigation.js
- * @include OpenLayers/Geometry.js
- * @include OpenLayers/Feature/Vector.js
- * @include OpenLayers/Handler/RegularPolygon.js
- * @include OpenLayers/Handler/Polygon.js
- * @include OpenLayers/Control/DrawFeature.js
- * @include OpenLayers/Projection.js
- * @include OpenLayers/Format/GML.js
- * @include OpenLayers/Format/XML.js
- * @include OpenLayers/Map.js
- * @include OpenLayers/Control/PanZoom.js
- * @include OpenLayers/Control/MousePosition.js
- * @include OpenLayers/Layer/WMS.js
- * @include OpenLayers/Layer/Vector.js
- * @include OpenLayers/BaseTypes/Bounds.js
- * @include OpenLayers/Format.js
- */
-GeoNetwork.map.ExtentMap = function(){
- var maps = [];
- var vectorLayers = [];
- var vectorLayerStyle = OpenLayers.Feature.Vector.style['default'];
- var targetPolygon = null;
- var watchedBbox = null;
- var mode = null;
- var edit = null;
- var eltRef = null;
- var digits = 5; // FIXME : how many decimals is fine ? This should be define according to the projection ?
- /**
- * A class for a geometry referenced by its ID
- */
- var MultiPolygonReference = OpenLayers.Class(OpenLayers.Geometry, {
- id: null,
-
- initialize: function(id){
- this.id = id;
- },
-
- CLASS_NAME: "GeoNetwork.map.ExtentMap.MultiPolygonReference"
- });
-
- /**
- * Define the map projection. Bounding box are stored in WGS84 in metadata records
- * and polygon also.
- */
- var mainProjCode = GeoNetwork.map.PROJECTION || "EPSG:4326";
- var wgsProjCode = "EPSG:4326";
- var wgsProj = new OpenLayers.Projection(wgsProjCode);
- var mainProj = null;
- var units = 'm'; //degrees
- var alternateProj = null;
-
-
-
- /**
- * Convert a feature to a GML geometry.
- */
- function convertToGml(feature, proj){
- var mainProj = new OpenLayers.Projection(proj);
- var writer = (mainProj === wgsProj ? new OpenLayers.Format.GML.v3() : new OpenLayers.Format.GML.v3({
- externalProjection: wgsProj,
- internalProjection: mainProj
- }));
- var child = writer.writeNode("feature:_geometry", feature.geometry);
- // FIXME : Here we should add the gml:id and srsName attribute
- // to avoid invalid document.
- return OpenLayers.Format.XML.prototype.write.call(writer, child.firstChild);
- }
- /**
- * Create default map with one vector layer for drawing.
- *
- */
- function createMap(){
- // OpenLayers.ImgPath = "../../scripts/openlayers/img/";
- var i,
- options = {
- units: units,
- projection: mainProjCode,
- resolutions: GeoNetwork.map.RESOLUTIONS,
- restrictedExtent: GeoNetwork.map.MAXEXTENT,
- maxExtent: GeoNetwork.map.MAXEXTENT,
- theme: null
- }, map;
-
- if (GeoNetwork.map.CONTEXT) {
- // Load map context
- var request = OpenLayers.Request.GET({
- url: GeoNetwork.map.CONTEXT,
- async: false
- });
- if (request.responseText) {
-
- var text = request.responseText;
- var format = new OpenLayers.Format.WMC();
- map = format.read(text, {map:options});
- }
- }
- else if (GeoNetwork.map.OWS) {
- // Load map context
- var request = OpenLayers.Request.GET({
- url: GeoNetwork.map.OWS,
- async: false
- });
- if (request.responseText) {
- var parser = new OpenLayers.Format.OWSContext();
- var text = request.responseText;
- map = parser.read(text, {map: options});
- }
- }
- else {
- map = new OpenLayers.Map(options);
-
- // Add layers.
- for (i = 0; i < GeoNetwork.map.BACKGROUND_LAYERS.length; i++) {
- map.addLayer(GeoNetwork.map.BACKGROUND_LAYERS[i].clone());
- }
- }
-
-
- // Disable mouse wheel and navigation toolbar in view mode.
- // User can still pan the map.
- if (!edit) {
- var navigationControl = map.getControlsByClass('OpenLayers.Control.Navigation')[0];
- navigationControl.disableZoomWheel();
-// map.removeControl(map.getControlsByClass('OpenLayers.Control.PanZoom')[0]);
- }
-
- // Add mouse position control to display coordintate.
- map.addControl(new OpenLayers.Control.MousePosition());
-
-
-
- // Add vector layer to draw features (ie. bbox or polygon)
- var vectorLayer = new OpenLayers.Layer.Vector("VectorLayer", { //displayOutsideMaxExtent: true,
- //alwaysInRange: true,
- //displayInLayerSwitcher: false,
- //tyle: GeoNetwork.map.ExtentMap.vectorLayerStyle, // TODO add as option
- });
- map.addLayer(vectorLayer);
-
-
- // Clean existing features before drawing
- vectorLayer.events.on({
- "sketchstarted": function(){
- this.destroyFeatures();
- },
- scope: vectorLayer
- });
-
- maps[eltRef] = map;
- vectorLayers[eltRef] = vectorLayer;
- return map;
- }
-
- /**
- * Change bbox when bounding box input text fields are updated.
- * Coordinates input are composed of:
- * * one hidden field with metadata coordinates (id starts with "_")
- * * one field with the coordinates reprojected according to radio projection selector.
- *
- */
- function watchBbox(vectorLayer, watchedBbox, eltRef, map){
- var wsen = watchedBbox.split(','),
- i;
-
- for (i = 0; i < wsen.length; ++i) {
- if (Ext.get(wsen[i])) {
- // register a "change" listen on each input text element
- Ext.get(wsen[i]).on('change', function(){
- // update the value of the corresponding input hidden elements
- // and update the box drawn on the map
- updateBbox(map, watchedBbox, eltRef, false);
- });
-
- // register a "change" listen on each input text element
- Ext.get("_" + wsen[i]).on('change', function(){
- updateBbox(map, watchedBbox, eltRef, true);
- });
- }
- }
- }
-
- /**
- * mainProj: indicates if coordinate are read from the display coordinate field or from the hidden fields.
- */
- function updateBbox(map, targetBbox, eltRef, mainProj){
- var vectorLayer = map.getLayersByName("VectorLayer")[0]; // That supposed that only one vector layer is on the map
- var bounds, values, boundsForMap;
- var wsen = targetBbox.split(',');
- values = [];
-
- // Update bbox from main projection information (from hidden fields which are always in WGS84)
- if (mainProj) {
- values[0] = Ext.get("_" + wsen[0]).getValue();
- values[1] = Ext.get("_" + wsen[1]).getValue();
- values[2] = Ext.get("_" + wsen[2]).getValue();
- values[3] = Ext.get("_" + wsen[3]).getValue();
-
- bounds = OpenLayers.Bounds.fromArray(values);
- boundsForMap = bounds.clone();
-
- // reproject if another projection is used
- if (mainProjCode !== wgsProj) {
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var p = new OpenLayers.Projection(mainProjCode);
- if (p.projCode == "EPSG:900913") p.proj = null;
-
- boundsForMap.transform(new OpenLayers.Projection(wgsProjCode), p);
- }
- } else {
- // Update bounding box from input fields which
- // may be in different projection.
- values[0] = Ext.get(wsen[0]).getValue();
- values[1] = Ext.get(wsen[1]).getValue();
- values[2] = Ext.get(wsen[2]).getValue();
- values[3] = Ext.get(wsen[3]).getValue();
- bounds = OpenLayers.Bounds.fromArray(values);
- boundsForMap = bounds.clone();
-
- // Loop for projection selectors value
- var toProj = null;
- var radio = document.getElementsByName("proj_" + eltRef);
- for (i = 0; i < radio.length; i++) {
- if (radio[i].checked === true) {
- toProj = radio[i].value;
- }
- }
-
- // Reproject bounds to map projection if needed
- if (toProj !== mainProjCode) {
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var pOrig = new OpenLayers.Projection(toProj);
- if (pOrig.projCode == "EPSG:900913") pOrig.proj = null;
-
- var pDest = new OpenLayers.Projection(mainProjCode);
- if (pDest.projCode == "EPSG:900913") pDest.proj = null;
-
- boundsForMap.transform(pOrig, pDest);
- }
-
- // Reproject coordinates to WGS84 to set lat long in coordinates hidden inputs
- if (toProj !== wgsProjCode) {
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var p = new OpenLayers.Projection(toProj);
- if (p.projCode == "EPSG:900913") p.proj = null;
-
- bounds.transform(new OpenLayers.Projection(p), new OpenLayers.Projection(wgsProjCode));
- }
- // Set main projection coordinates
- Ext.get("_" + wsen[0]).dom.value = bounds.left;
- Ext.get("_" + wsen[1]).dom.value = bounds.bottom;
- Ext.get("_" + wsen[2]).dom.value = bounds.right;
- Ext.get("_" + wsen[3]).dom.value = bounds.top;
-
- }
-
- // Validate fields content
- Ext.get(wsen[0]).dom.onkeyup();
- Ext.get(wsen[1]).dom.onkeyup();
- Ext.get(wsen[2]).dom.onkeyup();
- Ext.get(wsen[3]).dom.onkeyup();
-
- // Draw new bounds
- var feature = new OpenLayers.Feature.Vector(boundsForMap.toGeometry());
- vectorLayer.destroyFeatures();
- vectorLayer.addFeatures(feature);
-
- zoomToFeatures(maps[eltRef], vectorLayers[eltRef]);
-
- // Update all inputs
- watchRadios(targetBbox, eltRef);
-
- }
-
- /**
- * Change projection when radio button change
- */
- function watchRadios(watchedBbox, eltRef){
- function updateInputTextFields(watchedBbox, toProj, digits){
- var wsen = watchedBbox.split(',');
-
- // Don't try to update field if not exist
- if (Ext.get("_" + wsen[0]) &&
- Ext.get("_" + wsen[1]) &&
- Ext.get("_" + wsen[2]) &&
- Ext.get("_" + wsen[3])) {
- // Get WGS84 values
- var w = Ext.get("_" + wsen[0]).getValue();
- var s = Ext.get("_" + wsen[1]).getValue();
- var e = Ext.get("_" + wsen[2]).getValue();
- var n = Ext.get("_" + wsen[3]).getValue();
-
- var l = w !== "" ? w : "0";
- var b = s !== "" ? s : "0";
- var r = e !== "" ? e : "0";
- var t = n !== "" ? n : "0";
-
- var bounds = OpenLayers.Bounds.fromString(l + "," + b + "," + r + "," + t);
-
- if (!toProj.equals(wgsProj)) {
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var p = toProj;
- if (p.projCode == "EPSG:900913") p.proj = null;
-
- bounds.transform(wgsProj, p);
- }
- if (w !== "") {
- w = bounds.left.toFixed(digits) + "";
- }
- Ext.get(wsen[0]).dom.value = w;
- if (s !== "") {
- s = bounds.bottom.toFixed(digits) + "";
- }
- Ext.get(wsen[1]).dom.value = s;
- if (e !== "") {
- e = bounds.right.toFixed(digits) + "";
- }
- Ext.get(wsen[2]).dom.value = e;
- if (n !== "") {
- n = bounds.top.toFixed(digits) + "";
- }
- Ext.get(wsen[3]).dom.value = n;
- }
- }
-
- // Register onclick event for radio related to current map
- var inputs = Ext.DomQuery.select('input.proj'), idx;
- for (idx = 0; idx < inputs.length; ++idx) {
- var input = inputs[idx];
- if (input.id.indexOf(eltRef) !== -1) {
- // According to current selection, update coordinates
- if (input.checked) {
- updateInputTextFields(watchedBbox, new OpenLayers.Projection(input.value), digits);
- }
- var e = Ext.get(input.id);
- e.on('click', function(){
- updateInputTextFields(watchedBbox, new OpenLayers.Projection(this.value), digits);
- }, e.dom);
- }
- }
- }
-
- /**
- * Returns a string representing the feature geometry
- *
- * @param options parameters describing how to format the geoemtry
- * options.from the current projection of the feature (either both 'from' and 'to' are defined or neither)
- * options.to the projection to reproject the feature
- * options.format the format to write the geometry in 'WKT', 'GML', etc... Default is WKT
- */
- function writeFeature(options){
- var format = 'WKT';
- var from, to;
- if (options !== null) {
- format = options.format || 'WKT';
- from = options.from;
- to = options.to;
- }
-
- var writer = new OpenLayers.Format[format]();
- if (from !== null && to !== null) {
- writer.internalProjection = from;
- writer.externalProjection = to;
- }
- if (!this.vectorLayer.features.length) {
- return null;
- }
-
- // Gets the last drawn feature
- var feature = this.vectorLayer.features[this.vectorLayer.features.length - 1];
- return writer.write(feature);
- }
-
- /**
- * @param string string containing the feature data
- * @param option parameters describing how to format the geoemtry
- * option.from the current projection of the feature (either both 'from' and 'to' are defined or neither)
- * option.to the projection to reproject the feature
- * option.format the format to write the geometry in 'WKT', 'GML', etc... Default is WKT
- * option.zoomToFeatures boolean, if true, zooms to feature(s) extent
- */
- function readFeature(string, options, vectorLayer, map){
- // An empty geometry.
- if (string === '') {
- return false;
- }
-
- var format = 'WKT';
- var from, to;
- if (options !== null) {
- format = options.format || 'WKT';
- from = options.from;
- to = options.to;
- }
- var reader = new OpenLayers.Format[format]();
-
- if (from !== null && to !== null) {
- reader.externalProjection = from;
- reader.internalProjection = to;
- }
-
- // FIXME : When creating WKT, cariage return are added to the string.
- string = string.replace(/\n/g, '');
-
- var feature = reader.read(string);
-
- // reader is subject to returning an object or an array depending on the format
- if (!feature) {
- return false;
- }
-
- if (feature.length) {
- feature = feature[0];
- }
-
- // Draw a point if north=south and west=east
- var bounds = feature.geometry.getBounds();
- if (bounds.left === bounds.right && bounds.top === bounds.bottom) {
- var pointfeature = new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.Point(bounds.left, bounds.top));
- vectorLayer.addFeatures(pointfeature);
- } else {
- vectorLayer.addFeatures(feature);
- }
-
-
- // optionally, zoom on the layer features extent
- if (options.zoomToFeatures) {
- zoomToFeatures(map, vectorLayer);
- }
- return true;
- }
-
- // Regions extents are in WGS84
- function updateBboxForRegion(map, targetBbox, eltRef){
- var vectorLayer = map.getLayersByName("VectorLayer")[0]; // That supposed that only one vector layer is on the map
- // In map projection
- var bounds;
- var wsen = targetBbox.split(',');
-
- // Update bbox from main projection information (values from regions extents in WGS84)
- var values = [];
- values[0] = Ext.get("_" + wsen[0]).getValue();
- values[1] = Ext.get("_" + wsen[1]).getValue();
- values[2] = Ext.get("_" + wsen[2]).getValue();
- values[3] = Ext.get("_" + wsen[3]).getValue();
- bounds = OpenLayers.Bounds.fromArray(values);
-
- // Bounds in map projection to draw rectangle
- bounds.transform(wgsProj, mainProj);
-
- // Validate fields content
- Ext.get(wsen[0]).dom.onkeyup();
- Ext.get(wsen[1]).dom.onkeyup();
- Ext.get(wsen[2]).dom.onkeyup();
- Ext.get(wsen[3]).dom.onkeyup();
-
- // Draw new bounds
- var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
- vectorLayer.destroyFeatures();
- vectorLayer.addFeatures(feature);
-
- zoomToFeatures(map, vectorLayer);
-
- // Update all inputs
- watchRadios(targetBbox, eltRef);
-
- }
-
-
- function createRegionMenu(cb){
- var store = GeoNetwork.data.RegionStore(catalogue.services.getRegions); // FIXME : global var
- var combo = new Ext.form.ComboBox({
- store: store,
- //displayField: "labels['en']",
- tpl: '
',// TODO if language code does not exist in labels field store
- typeAhead: true,
- mode: 'local',
- triggerAction: 'all',
- emptyText: OpenLayers.i18n('selectRegion'),
- selectOnFocus: true,
- width: 135,
- listeners: {
- focus: {
- fn: function(el){
- el.getStore().load();
- }
- },
- select: {
- fn: cb
- }
- },
- iconCls: 'no-icon'
- });
- //store.load();
- return combo;
- }
-
- function zoomToFeatures(map, vectorLayer){
- var extent = vectorLayer.getDataExtent();
- if (extent && !isNaN(extent.left)) {
- var width = extent.getWidth() / 2;
- var height = extent.getHeight() / 2;
- extent.left -= width;
- extent.right += width;
- extent.bottom -= height;
- extent.top += height;
- map.zoomToExtent(extent);
- } else {
- map.zoomToMaxExtent();
- }
- }
-
- return {
- init: function(){
- },
- /** api: method[initMapDiv]
- *
- * Take all the DIVs of class extentViewer and places a map within. If it
- * contains a single div, look in it content for a geometry in WKT format
- * and add it in the map.
- *
- * The DIV can have some attributes:
- * - edit: if 'true', add edition tools
- * - target_polygon: the id of the input that must be updated with the GML
- * content of the polygon being edited
- * - watched_bbox: the coma separated 4 ids of the input field (east, south,
- * west, north) to listen for modifications
- */
- initMapDiv: function(){
- var viewers,
- idFunc,
- idx,
- descRef,
- i;
- mainProj = new OpenLayers.Projection(mainProjCode);
- alternateProj = mainProj;
-
-
- viewers = Ext.DomQuery.select('.extentViewer');
- idFunc = Ext.id;
-
- for (idx = 0; idx < viewers.length; ++idx) {
- var viewer = viewers[idx];
- targetPolygon = viewer.getAttribute("target_polygon");
- watchedBbox = viewer.getAttribute("watched_bbox");
- edit = viewer.getAttribute("edit") === 'true';
- eltRef = viewer.getAttribute("elt_ref");
- descRef = viewer.getAttribute("desc_ref");
- mode = viewer.getAttribute("mode");
-
- var children = viewer.childNodes;
- var tmp = [];
-
- for (i = 0; i < children.length; i++) {
- if (children[i].nodeType === 1) {
- tmp.push(children[i]);
- }
- }
-
- children = tmp;
-
- // If already initialized
- if (children.length > 1) {
- continue;
- }
-
- // Creates map component
- var id;
- id = Ext.id(viewer);
-
- var map = createMap();
-
- // Create toolbar with:
- // * polygon control
- // * bbox control
- // * choose existing polygon
- // * clear
- // * rollback
- if (edit) {
- var tbarItems = [];
-
-
- // Bbox drawing control
- if (mode === 'bbox') {
- var control = new OpenLayers.Control.DrawFeature(vectorLayers[eltRef], OpenLayers.Handler.RegularPolygon, {
- handlerOptions: {
- irregular: true,
- sides: 4,
- // fix for misplaced drawn feature:
- down: function(evt) {
- this.map.events.clearMouseCache();
- evt.xy = this.map.events.getMousePosition(evt);
- return OpenLayers.Handler.RegularPolygon.prototype.down.call(this, evt);
- }
- },
- featureAdded: function(feature){
- // a box was drawn, update the input text and input
- // hidden fields
- var bounds = feature.geometry.getBounds(), boundsReproj;
- // If current map projection is not WGS84, reproject bounds
- // coordinate to store WGS84 in metadata record.
-
- if (mainProj !== wgsProj) {
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var p = mainProj;
- if (p.projCode == "EPSG:900913") p.proj = null;
-
- boundsReproj = bounds.clone().transform(p, wgsProj);
- } else {
- boundsReproj = bounds;
- }
-
- var wsen = this.watchedBbox.split(','); // Here we don't round coordinates to store full value
- Ext.get("_" + wsen[0]).dom.value = boundsReproj.left;
- Ext.get("_" + wsen[1]).dom.value = boundsReproj.bottom;
- Ext.get("_" + wsen[2]).dom.value = boundsReproj.right;
- Ext.get("_" + wsen[3]).dom.value = boundsReproj.top;
-
- // Refresh all inputs
- watchRadios(this.watchedBbox, this.eltRef);
-
- }.bind({
- watchedBbox: watchedBbox,
- eltRef: eltRef
- })
- });
- tbarItems.push(new GeoExt.Action({
- map: maps[eltRef],
- control: control,
- text: OpenLayers.i18n('drawRectangle'),
- pressed: false,
- allowDepress: true,
- toggleGroup: "tool",
- iconCls: "drawRectangle"
- }));
-
-
- tbarItems.push(createRegionMenu(function(c, r, idx){
- var wsen = this.watchedBbox.split(','); // Here we don't round coordinates to store full value
- Ext.get("_" + wsen[0]).dom.value = r.data.west;
- Ext.get("_" + wsen[1]).dom.value = r.data.south;
- Ext.get("_" + wsen[2]).dom.value = r.data.east;
- Ext.get("_" + wsen[3]).dom.value = r.data.north;
- updateBboxForRegion(maps[eltRef], watchedBbox, eltRef, true); // Region are in WGS84
- if (Ext.get("_" + this.descRef) !== null) {
- Ext.get("_" + this.descRef).dom.value = r.data.label[GeoNetwork.Util.getCatalogueLang(OpenLayers.Lang.getCode())];
- }
- }.bind({
- extentMap: this,
- map: maps[eltRef],
- watchedBbox: watchedBbox,
- eltRef: eltRef,
- descRef: descRef
- })));
- }
- // Polygon drawing control
- else if (mode === 'polygon') {
- var polyControl = new OpenLayers.Control.DrawFeature(vectorLayers[eltRef], OpenLayers.Handler.Polygon, {
- handlerOptions: {
- // fix for misplaced drawn feature:
- down: function(evt) {
- this.map.events.clearMouseCache();
- evt.xy = this.map.events.getMousePosition(evt);
- return OpenLayers.Handler.Polygon.prototype.down.call(this, evt);
- }
- },
- featureAdded: function(feature){
- // Update form input
- document.getElementById('_X' + this).value = convertToGml(feature, mainProjCode);
- polyControl.deactivate();
- }.bind(targetPolygon)
- });
-
- tbarItems.push(new GeoExt.Action({
- map: maps[eltRef],
- control: polyControl,
- text: OpenLayers.i18n('drawPolygon'),
- tooltip: OpenLayers.i18n('drawPolygonTT'),
- pressed: false,
- allowDepress: true,
- toggleGroup: "tool",
- iconCls: "drawPolygon"
- }));
- control = new OpenLayers.Control.DrawFeature(vectorLayers[eltRef], OpenLayers.Handler.RegularPolygon, {
- handlerOptions: {
- irregular: true,
- sides: 60,
- // fix for misplaced drawn feature:
- down: function(evt) {
- this.map.events.clearMouseCache();
- evt.xy = this.map.events.getMousePosition(evt);
- return OpenLayers.Handler.RegularPolygon.prototype.down.call(this, evt);
- }
- },
- featureAdded: function(feature){
- // Update form input
- document.getElementById('_X' + this).value = convertToGml(feature, mainProjCode);
- control.deactivate();
- }.bind(targetPolygon)
- });
-
- tbarItems.push(new GeoExt.Action({
- map: maps[eltRef],
- control: control,
- text: OpenLayers.i18n('drawCircle'),
- pressed: false,
- allowDepress: true,
- toggleGroup: "tool",
- iconCls: "drawCircle"
- }));
-
-
- // TODO : this button define a popup which allow to select a geographic
- // feature from a WFS service (defined by serviceUrl parameter). This popup
- // needs to add a dependcy to MapFish in order to work. The list of layers
- // served by the WFS will be listed (using GetCapabilities info). Then clicking
- // on the map select one feature to be used as bounding polygon.
- // More test needed.
- //
- // tbarItems.push({
- // text: "Choose a geographic feature", // TODO : i18n
- // tooltip: "",
- // handler: function() {
- //
- // var featureSelectionPanel = new app.FeatureSelectionPanel({
- // serviceUrl: "/geoserver/wfs",
- // width: 700,
- // height: 350
- // });
- //
- // var fsWin = new Ext.Window({
- // title: 'featureSelection',//translate('featureSelection'),
- // layout: 'fit',
- // modal: true,
- // items: featureSelectionPanel
- // });
- // fsWin.show();
- //
- // featureSelectionPanel.on('featureselected', function(panel, feature) {
- // fsWin.close();
- //
- // if (this.selectionFeature) {
- // this.vectorLayer.destroyFeatures(this.selectionFeature);
- // }
- // this.selectionFeature = new OpenLayers.Feature.Vector(feature.geometry, {}, this.selectionStyle);
- // this.vectorLayer.addFeatures(this.selectionFeature);
- //
- // document.getElementById('_X' + this.targetPolygon).value = GeoNetwork.map.ExtentMap.convertToGml(feature, GeoNetwork.map.ExtentMap.mainProjCode);
- // //this.map.zoomToExtent(this.selectionFeature.geometry.getBounds());
- // }, this);
- // },
- // scope: {
- // targetPolygon: GeoNetwork.map.ExtentMap.targetPolygon,
- // vectorLayer: GeoNetwork.map.ExtentMap.vectorLayer
- // }
- // });
- }
-
-
-
-
- // Clear button
- tbarItems.push({
- text: OpenLayers.i18n('clear'),
- iconCls: "clearPolygon",
- handler: function(){
- // Destroy geometry
- this.vectorLayer.destroyFeatures();
-
- // Clean form inputs
- var targetPolygonInput = document.getElementById('_X' + this.targetPolygon);
- if (targetPolygonInput !== null) {
- targetPolygonInput.value = '';
- }
-
- if (this.targetBbox !== '') {
- var wsen = this.targetBbox.split(',');
-
- // update the input fields
- Ext.get(wsen[0]).dom.value = '';
- Ext.get(wsen[1]).dom.value = '';
- Ext.get(wsen[2]).dom.value = '';
- Ext.get(wsen[3]).dom.value = '';
- Ext.get("_" + wsen[0]).dom.value = '';
- Ext.get("_" + wsen[1]).dom.value = '';
- Ext.get("_" + wsen[2]).dom.value = '';
- Ext.get("_" + wsen[3]).dom.value = '';
-
- // Validate fields content
- $(wsen[0]).onkeyup();
- $(wsen[1]).onkeyup();
- $(wsen[2]).onkeyup();
- $(wsen[3]).onkeyup();
- }
- },
- scope: {
- vectorLayer: vectorLayers[eltRef],
- targetPolygon: targetPolygon,
- targetBbox: watchedBbox,
- eltRef: eltRef
- }
- });
- }
-
- var mapPanel = new GeoExt.MapPanel({
- renderTo: id,
- height: 300, // TODO : make config file see with ELE.
- width: 400,
- map: maps[eltRef],
- tbar: (edit ? tbarItems : null)
- });
-
- if (children.length > 0) {
-
- // proj4j definition of EPSG:900913, fails for 90, -90 latitudes cause it cannot compute near the pole.
- // Disable proj4j computation and use OL one's even if proj4j projection is defined
- var p = mainProj;
- if (p.projCode == "EPSG:900913") p.proj = null;
-
- readFeature(children[0].innerHTML, {
- format: 'WKT',
- zoomToFeatures: true,
- from: wgsProj, // Always reproject LatLounBoundingBox
- to: p
- }, vectorLayers[eltRef], maps[eltRef]);
- }
- // FIXME : GML parsing sounds not trivial. Using WKT parser instead for now.
- // if (GeoNetwork.map.ExtentMap.targetPolygon != '') {
- // var gml = document.getElementById('_X' + GeoNetwork.map.ExtentMap.targetPolygon).value;
- // GeoNetwork.map.ExtentMap.readFeature(gml, {
- // format: 'GML',
- // zoomToFeatures: true,
- // from: GeoNetwork.map.ExtentMap.wgsProj,
- // to: GeoNetwork.map.ExtentMap.mainProj
- // });
- // }
-
- if (watchedBbox !== '') {
- // watch the input text fields, i.e. update the input
- // hidden fields when the input text fields are changed
- watchRadios(watchedBbox, eltRef);
- watchBbox(vectorLayers[eltRef], watchedBbox, eltRef, maps[eltRef]);
- }
- }
- }
- };
-};
-
-GeoNetwork.map.ExtentMap.prev_geometry = OpenLayers.Format.GML.Base.prototype.writers.feature._geometry;
-OpenLayers.Format.GML.Base.prototype.writers.feature._geometry = function(geometry){
- if (geometry.CLASS_NAME === "GeoNetwork.map.ExtentMap.MultiPolygonReference") {
- var gml = this.createElementNS(this.namespaces.gml, "gml:MultiPolygon");
- var gmlNode = this.createElementNS(this.namespaces.gml, "gml:MultiPolygon");
- gmlNode.setAttribute("gml:id", geometry.id);
- gml.appendChild(gmlNode);
- return gml;
- } else {
- return GeoNetwork.map.ExtentMap.prev_geometry.apply(this, arguments);
- }
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSAddress.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSAddress.js
deleted file mode 100644
index 7aaa50f52cf..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSAddress.js
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Format) {
- GeoNetwork.Format = {};
-}
-
-/**
- * Class: GeoNetwork.Format.XLSAddress
- * Represent an XLS (OGC Open Location Service) Address.
- * Either a freeFormAddress, or a structured address with street, building,
- * place and postalCode.
- */
-GeoNetwork.Format.XLSAddress = OpenLayers.Class({
-
- addressee: null,
-
- /**
- * Property: countryCode
- * {String} two-letter ISO 3166 countrycode for the address.
- */
- countryCode: null,
-
- /**
- * Property: freeFormAddress
- * {String} address in free format.
- */
- freeFormAddress: null,
-
- /**
- * Property: street
- * {Array} List of street addresses. Each is either a simple string, or an
- * object with attributes: directionalPrefix, typePrefix,
- * officialName, typeSuffix, directionalSuffix, muniOctant.
- */
- street: null,
-
- /**
- * Property: Building
- * {Object} An object with attributes: number, subdivision, and buildingName.
- */
- building: null,
-
- place: null,
-
- postalCode: null,
-
- /**
- * Constructor: GeoNetwork.Format.XLSAddress.
- *
- * Parameters:
- * countryCode - 2-letter ISO 3166 countrycode for this address.
- * options - {Object} An optional object whose properties will be set on
- * this instance.
- */
- initialize: function(countryCode, options) {
- this.street = [];
- this.place = {
- CountrySubdivision: null,
- CountrySecondarySubdivision: null,
- Municipality: null,
- MunicipalitySubdivision:null
- };
- OpenLayers.Util.extend(this, options);
- this.countryCode = countryCode;
- },
-
- /**
- * Function: format
- * Get the address as a single string. This method could be overridden
- * in subclasses to provide application specific formatting.
- * The class accepts the option
- * "addressClass" with the application specific XLSAddress subclass
- * to be used when reading XLS XML documents.
- *
- * Returns: {String}
- */
- format: function() {
- if (this.freeFormAddress) {
- return this.freeFormAddress;
- } else {
- return this.getStreetText() + ' ' + this.getBuildingText() +
- ' ' + this.getPostalCodeText() + ' ' + this.getPlaceText();
- }
- },
-
- /**
- * Function: getStreetText
- * Get the street(s) as a single string. Useful when using the
- * OpenLayers String.format with a template. The template should
- * use this function name, and pass the address object (since
- * the format function calls the function without a this).
- *
- * Parameters:
- * address - {}. The address, if not
- * specified, works on "this".
- *
- * Returns: {String}
- */
- getStreetText: function(address) {
- if (!address) { address = this; }
- var text = '';
- for (var si = 0; si < address.street.length; si++) {
- if (text !== '') { text += ' '; }
- text += address.formatObject(address.street[si],
- GeoNetwork.Format.XLSAddress.formattedStreetProperties);
- }
- return text;
- },
-
- /**
- * Function: getBuildingText
- * Get the building as a single string. Useful when using the
- * OpenLayers String.format with a template. The template should
- * use this function name, and pass the address object (since
- * the format function calls the function without a this).
- *
- * Parameters:
- * address - {}. The address, if not
- * specified, works on "this".
- *
- * Returns: {String}
- */
- getBuildingText: function(address) {
- if (!address) { address = this; }
- return address.formatObject(address.building, GeoNetwork.Format.XLSAddress.formattedBuildingProperties);
- },
-
- /**
- * Function: getPostalCodeText
- * Get the postalCode as a string, an empty string if null. Useful when using the
- * OpenLayers String.format with a template. The template should
- * use this function name, and pass the address object (since
- * the format function calls the function without a this).
- *
- * Parameters:
- * address - {}. The address, if not
- * specified, works on "this".
- *
- * Returns: {String}
- */
- getPostalCodeText: function(address) {
- if (!address) { address = this; }
- return !address.postalCode ? '' : address.postalCode;
- },
-
- /**
- * Function: getPlaceText
- * Get the place as a single string. Useful when using the
- * OpenLayers.String.format with a template. The template should
- * use this function name, and pass the address object (since
- * the format function calls the function without a this).
- *
- * Parameters:
- * address - {}. The address, if not
- * specified, works on "this".
- *
- * Returns: {String}
- */
- getPlaceText: function(address) {
- if (!address) { address = this; }
- return address.formatObject(address.place,
- GeoNetwork.Format.XLSAddress.formattedPlaceProperties);
- },
-
- /**
- * Function: formatObject
- * Private function to format an object as a string.
- *
- * Parameters:
- *
- * obj - {Object} the object to format.
- * props - {Array} array of property names from obj to put in the result.
- *
- * Returns: {String}
- */
- formatObject: function(obj, props) {
- if (!obj) { return ''; }
- var text = '';
- if (typeof obj == 'string') {
- text = obj;
- } else if (props instanceof Array) {
- for (var pi = 0; pi < props.length; pi++) {
- if (obj[props[pi]]) {
- if (text !== '') { text += ' '; }
- text += obj[props[pi]];
- }
- }
- }
- return text;
- },
-
- CLASS_NAME: "GeoNetwork.Format.XLSAddress"
-});
-
-/**
- * Place properties to use for formatting an address as a string,
- * defining also the order of the place properties.
- */
-GeoNetwork.Format.XLSAddress.formattedPlaceProperties = [
- 'Municipality', 'MunicipalitySubdivision',
- 'CountrySecondarySubdivision', 'CountrySubdivision'];
-
-/**
- * Street properties to use for formatting an address as a string,
- * defining also the order of the street properties.
- * This applies only to streets using the structured attributes from OpenLS.
- */
-GeoNetwork.Format.XLSAddress.formattedStreetProperties = [
- 'directionalPrefix', 'typePrefix', 'officialName',
- 'typeSuffix', 'directionalSuffix', 'muniOctant' ];
-
-/**
- * Building properties to use for formatting an address as a string,
- * defining also the order of the building properties.
- */
-GeoNetwork.Format.XLSAddress.formattedBuildingProperties = [
- 'number', 'subdivision', 'buildingName' ];
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSLUS.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSLUS.js
deleted file mode 100644
index b2c63ebfea0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/Format/XLSLUS.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-if (!window.GeoNetwork) {
- window.GeoNetwork = {};
-}
-if (!GeoNetwork.Format) {
- GeoNetwork.Format = {};
-}
-
-/**
- * Class: GeoNetwork.Format.XLSLUS
- * Read/Wite XLS Location Utility Service (geocode/reverse geocode).
- * Create a new instance with the
- * constructor.
- *
- * Inherits from:
- * -
- */
-GeoNetwork.Format.XLSLUS = OpenLayers.Class(OpenLayers.Format.XML, {
-
- /**
- * APIProperty: defaultVersion
- * {String} Version number to assume if none found. Default is "1.1.0".
- */
- defaultVersion: "1.1.0",
-
- /**
- * APIProperty: version
- * {String} Specify a version string if one is known.
- */
- version: null,
-
- /**
- * Property: parser
- * {Object} Instance of the versioned parser. Cached for multiple read and
- * write calls of the same version.
- */
- parser: null,
-
- /**
- * Constructor: GeoNetwork.Format.XLSLUS
- * Create a new parser for XLSLUS.
- *
- * Parameters:
- * options - {Object} An optional object whose properties will be set on
- * this instance.
- */
- initialize: function(options) {
- OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
- },
-
- /**
- * APIMethod: writeGeocodeRequest
- * Write a GeocodeRequest document.
- *
- * Parameters:
- * address - {XLSAddress} An object representing the address.
- * options - {Object} Optional configuration object.
- *
- * Returns:
- * {String} An XLSLUS document string.
- */
- writeGeocodeRequest: function(address, options) {
- var version = (options && options.version) ||
- this.version || this.defaultVersion;
- if(!this.parser || this.parser.VERSION != version) {
- var format = GeoNetwork.Format.XLSLUS[
- "v" + version.replace(/\./g, "_")
- ];
- if(!format) {
- throw "Can't find a XLSLUS parser for version " +
- version;
- }
- this.parser = new format(options);
- }
- var root = this.parser.writeGeocodeRequest(address);
- return OpenLayers.Format.XML.prototype.write.apply(this, [root]);
- },
-
- /**
- * APIMethod: writeReverseGeocodeRequest
- * Write a ReverseGeocodeRequest document.
- *
- * Parameters:
- * position - {OpenLayers.Geometry.Point} An object representing the location.
- * Also more complicated positions are allowed.
- * options - {Object} Optional configuration object.
- *
- * Returns:
- * {String} An XLSLUS document string.
- */
- writeReverseGeocodeRequest: function(position, options) {
- var version = (options && options.version) ||
- this.version || this.defaultVersion;
- if(!this.parser || this.parser.VERSION != version) {
- var format = GeoNetwork.Format.XLSLUS[
- "v" + version.replace(/\./g, "_")
- ];
- if(!format) {
- throw "Can't find a XLSLUS parser for version " +
- version;
- }
- this.parser = new format(options);
- }
- var root = this.parser.writeReverseGeocodeRequest(position);
- return OpenLayers.Format.XML.prototype.write.apply(this, [root]);
- },
-
- /**
- * APIMethod: read
- * Read and XLSLUS doc and return an object representing the XLSLUS.
- * The document could be a GeocodeResponse or a ReverseGeocodeResponse.
- *
- * Parameters:
- * data - {String | DOMElement} Data to read.
- *
- * Returns:
- * {Object} An object representing the XLSLUS.
- * For a GeocodeResponse, an array (representing the
- * "geocodeResponseList") of objects. Each object has a
- * property named "features", being an array of
- * . Each feature has a geometry
- * and in the attributes an attribute named "address", being
- * an .
- * For a ReverseGeocodeResponse, an array (representing the
- * reverseGeocodedLocation) of features (each feature as above).
- */
- read: function(data, options) {
- if(typeof data == "string") {
- data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
- }
- var root = data.documentElement;
- var version = this.version;
- if(!version) {
- version = root.getAttribute("version");
- if(!version) {
- version = this.defaultVersion;
- }
- }
- if(!this.parser || this.parser.VERSION != version) {
- var format = GeoNetwork.Format.XLSLUS[
- "v" + version.replace(/\./g, "_")
- ];
- if(!format) {
- throw "Can't find a XLSLUS parser for version " +
- version;
- }
- this.parser = new format(options);
- }
- var xlslus = this.parser.read(data);
- return xlslus;
- },
-
- CLASS_NAME: "GeoNetwork.Format.XLSLUS"
-});
-
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/CatalogueInterface.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/CatalogueInterface.js
deleted file mode 100644
index 5daed12f7a5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/CatalogueInterface.js
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.CatalogueInterface');
-
-/**
- * Class: GeoNetwork.CatalogueInterface
- * Used to add layers to the map through the WMS GetCapabilities
- * interface of the layers. It will show a loading mask whilst processing.
- */
-GeoNetwork.CatalogueInterface = function() {
-
- // private
- var map;
-
- var layerLoadingMask;
-
- var layers;
-
- var setMap = function(mapC) {
- map = mapC;
- };
-
- /**
- * Function: getLayer
- * Recursive function to process a layer and their childLayers in the
- * capabilities document, searching for the requested layer
- *
- * Parameters:
- * caps - {Object} capabilities from the WMSCapabilities parser
- * caplayers - {Object} list of layer objects from the WMSCapabilities parser
- * layer - {Object} layer to return from capabilities document
- *
- * Returns:
- * {Object} The layer if found, otherwise null
- */
- var getLayer = function(caps, caplayers, layer) {
- var findedLayer = null;
-
- for (var i = 0, len = caplayers.length; i < len; ++i) {
- var lr = caplayers[i];
-
- try {
- var layerName = lr.name.split(",");
-
- if (layerName.indexOf(layer.params.LAYERS) != -1) {
- findedLayer = lr;
- break;
- }
- } catch(e) {
- }
-
- if (typeof(lr.nestedLayers) != "undefined") {
- findedLayer = getLayer(caps, lr.nestedLayers, layer);
- if (findedLayer !== null) {
- break;
- }
- }
-
- }
-
- return findedLayer;
- };
-
- /**
- * Method: processLayersSuccess
- * Called when the GetCapabilities response is in.
- *
- * Parameters:
- * response - {Object} The response object
- */
- var processLayersSuccess = function(response) {
- layerLoadingMask.hide();
-
- var parser = new OpenLayers.Format.WMSCapabilities();
- var caps = parser.read(response.responseXML || response.responseText);
- if (caps.capability) {
- // GetCapabilities disclaimer
- var accessContraints = caps.service.accessContraints;
-
- if ((accessContraints) && (accessContraints.toLowerCase() != "none") &&
- (accessContraints != "-")) {
- var disclaimerWindow = new GeoNetwork.DisclaimerWindow({
- disclaimer: accessContraints
- });
- disclaimerWindow.show();
- disclaimerWindow = null;
- }
-
- if (map) {
- for(var i = 0, len=layers.length; i < len; i++) {
- var name = layers[i][0];
- var url = layers[i][1];
- var layer = layers[i][2];
- var metadata_id = layers[i][3];
-
- var ol_layer = new OpenLayers.Layer.WMS(name, url,
- {layers: layer, format: 'image/png', transparent: 'TRUE', version: caps.version, language: GeoNetwork.OGCUtil.getLanguage()},
- {queryable: true, singleTile: true, ratio: 1, buffer: 0, transitionEffect: 'resize', metadata_id: metadata_id} );
-
- if (!GeoNetwork.OGCUtil.layerExistsInMap(ol_layer, map)) {
- // TODO: these events are never removed?
- ol_layer.events.on({"loadstart": function() {
- this.isLoading = true;
- }});
-
- ol_layer.events.on({"loadend": function() {
- this.isLoading = false;
- }});
-
- var layerCap = getLayer(caps, caps.capability.layers, ol_layer);
-
- if (layerCap) {
- ol_layer.queryable = layerCap.queryable;
- ol_layer.name = layerCap.title || ol_layer.name;
- ol_layer.llbbox = layerCap.llbbox;
- ol_layer.styles = layerCap.styles;
- ol_layer.dimensions = layerCap.dimensions;
- }
-
- map.addLayer(ol_layer);
- }
- }
-
- }
- }
- };
-
- /**
- * Method: processLayersFailure
- * Called when the GetCapabilities response is in and failed.
- *
- * Parameters:
- * response - {Object} The response object
- */
- var processLayersFailure = function(response) {
- layerLoadingMask.hide();
-
- Ext.MessageBox.alert(OpenLayers.i18n("loadLayer.error.title"),
- OpenLayers.i18n("loadLayer.error.message"));
- };
-
- // public
- return {
- /**
- * APIMethod: init
- * Inits the catalogue interface
- *
- * Parameters:
- * (map - {Object} Openlayers map
- */
- init: function(map) {
- setMap(map);
- },
-
- /**
- * APIMethod: addLayers
- * Add a list of layers to the map, using the GetCapabilities
- * to get the properties for a layer.
- *
- * Parameters:
- * layerList - {Array} One or more layers belonging to the same WMS
- */
- addLayers: function(layerList) {
- if (layerList.length === 0) {
- return;
- }
-
- var onlineResource = layerList[0][1];
-
- /* if null layer name, open the WMS Browser panel */
- if (layerList[0][2]==='') {
- GeoNetwork.WindowManager.showWindow("addwms");
- var panel = Ext.getCmp(GeoNetwork.WindowManager.getWindow("addwms").browserPanel.id);
- panel.setURL(onlineResource);
- return;
- }
-
- layerLoadingMask = new Ext.LoadMask(map.div, {
- msg: OpenLayers.Lang.translate('loadLayer.loadingMessage')});
- layerLoadingMask.show();
-
- layers = layerList;
-
- var params = {'service': 'WMS', 'request': 'GetCapabilities',
- 'version': GeoNetwork.OGCUtil.getProtocolVersion(), language: GeoNetwork.OGCUtil.getLanguage()};
- var paramString = OpenLayers.Util.getParameterString(params);
- var separator = (onlineResource.indexOf('?') > -1) ? '&' : '?';
- onlineResource += separator + paramString;
-
- var req = Ext.Ajax.request({
- url: onlineResource,
- method: 'GET',
- //params: {url: onlineResource},
- success: processLayersSuccess,
- failure: processLayersFailure,
- timeout: 10000
- });
- }
-
- };
-};
-
-GeoNetwork.CatalogueInterface = new GeoNetwork.CatalogueInterface();
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/MapStateManager.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/MapStateManager.js
deleted file mode 100644
index 562d9d92a2d..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/MapStateManager.js
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.MapStateManager');
-
-GeoNetwork.MapStateManager = function() {
- // private
- var LAYER_SEP = "@";
- var DATA_FIELD_SEP = "|";
-
- var COOKIE_MAPLAYERS = "maplayers";
- var COOKIE_MAPEXTENT = "mapextent";
-
- var mapLayers = "";
- var mapExtent = "";
-
- var getCookieValue = function(cookiename) {
- var cookietext = "";
- var cookieStart = document.cookie.indexOf(cookiename+"=");
- if (cookieStart!=-1) {
- cookieStart += cookiename.length+1;
- var cookieEnd=document.cookie.indexOf(";",cookieStart);
- if (cookieEnd==-1) {
- cookieEnd=document.cookie.length;
- }
- cookietext = document.cookie.substring(cookieStart,cookieEnd);
- }
-
- return cookietext;
- };
-
- var storeCookieValue = function(cookiename, value) {
- var cookietext = cookiename+"="+value;
-
- var exdate=new Date();
- exdate.setDate(exdate.getDate()+1);
- cookietext += ";expires="+exdate.toGMTString();
-
- // == write the cookie ==
- document.cookie=cookietext;
- };
-
-
- var processValue = function(value, defaultValue) {
- if (typeof(value)!="undefined") {
- return value;
- } else {
- if (typeof(defaultValue)!="undefined") {
- return defaultValue;
- } else {
- return '';
- }
- }
- };
-
- // public
- return {
- /**
- * APIMethod: storeMapLayersState
- * Stores map layers state in cookies
- *
- * Parameters:
- * map - {}
- */
- storeMapLayersState: function(map) {
- var layers = map.layers;
-
- var cookietext = '';
-
- for(var i = 0; i < layers.length; i++) {
- if ((!layers[i].isBaseLayer) && (layers[i].displayInLayerSwitcher)) {
- var params = Object.toJSON(layers[i].params);
- var options = Object.toJSON(layers[i].options);
- var opacity = processValue(layers[i].opacity, 1);
- var li = layers[i].name +
- DATA_FIELD_SEP + layers[i].url +
- DATA_FIELD_SEP + params +
- DATA_FIELD_SEP + options +
- DATA_FIELD_SEP + opacity;
-
- if (cookietext.length > 0) {
- cookietext = cookietext + LAYER_SEP;
- }
- cookietext = cookietext + li;
- }
- }
-
- storeCookieValue(COOKIE_MAPLAYERS, cookietext);
- },
-
- stoteMapExtextState: function(map) {
- // Map properties
- var mapExtent = map.getExtent();
- var cookietext = mapExtent.left+DATA_FIELD_SEP+mapExtent.bottom+DATA_FIELD_SEP+mapExtent.right+DATA_FIELD_SEP+mapExtent.top;
- storeCookieValue(COOKIE_MAPEXTENT, cookietext);
- },
-
- /**
- * APIMethod: loadMapState
- * Load map state from cookies
- *
- * Parameters:
- * map - {}
- * xml - {String} The Web Map Context XML string
- */
- loadMapState: function() {
- // Get layers from cookie
- var cookietext = getCookieValue(COOKIE_MAPLAYERS);
- if (cookietext != '') {
- mapLayers = cookietext;
- }
-
- // Map properties
- cookietext = getCookieValue(COOKIE_MAPEXTENT);
- if (cookietext != '') {
- mapExtent = cookietext;
- }
- },
-
- /**
- * APIMethod: applyMapState
- * Apply map state from cookies
- *
- * Parameters:
- * map - {}
- * xml - {String} The Web Map Context XML string
- */
- applyMapState: function(map) {
- // Map extent
- if (mapLayers != "") {
- var layerCookieList = mapLayers.split(LAYER_SEP);
-
- for(var i = 0; i < layerCookieList.length; i++) {
- var layerInfo = layerCookieList[i].split(DATA_FIELD_SEP);
-
- if (layerInfo.length == 5) {
- var name = layerInfo[0];
- var url = layerInfo[1];
- var params = layerInfo[2].evalJSON(true);
- var options = layerInfo[3].evalJSON(true);
- var opacity = layerInfo[4];
-
- var ol_layer = new OpenLayers.Layer.WMS(name, url,
- params, options);
-
- if (!GeoNetwork.OGCUtil.layerExistsInMap(ol_layer, map)) {
- if (opacity) ol_layer.setOpacity(parseFloat(opacity));
- map.addLayer(ol_layer);
- }
- }
- }
- }
-
- // Map properties
- if (mapExtent) {
- var mapExtentValues = mapExtent.split(DATA_FIELD_SEP);
- if (mapExtentValues.length == 4) {
- var mapExtentOL = new OpenLayers.Bounds(mapExtentValues[0], mapExtentValues[1], mapExtentValues[2], mapExtentValues[3]);
- map.zoomToExtent(mapExtentOL);
- }
- }
- }
- };
-};
-
-GeoNetwork.MapStateManager = new GeoNetwork.MapStateManager();
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/OGCUtil.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/OGCUtil.js
deleted file mode 100644
index febf0e027d6..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/core/OGCUtil.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.OGCUtil');
-
-GeoNetwork.OGCUtil.getProtocolVersion = function() {
- return "1.3.0";
-};
-
-GeoNetwork.OGCUtil.getLanguage = function() {
- return catalogue.lang; // FIXME : global
-};
-/**
- * APIFunction: GeoNetwork.OGCUtil.ensureProperUrlEnd
- * Function to make sure that the last char of the URL is either a ?
- * or a &, to make adding of parameters safe
- *
- * Parameters:
- * url - {String} the url to make safe
- *
- * Returns:
- * {String} the url made safe
-*/
-GeoNetwork.OGCUtil.ensureProperUrlEnd = function (url) {
- if (url.indexOf("?") == -1) {
- url += "?";
- }
- else {
- // url can be like http://.../...?var=value, make sure that it will
- // end correctly
- var lastChar = url.substring(url.length-1);
- if (lastChar != "&" && lastChar !="?") {
- url+="&";
- }
- }
- return url;
-};
-
-/**
- * APIMethod: GeoNetwork.OGCUtil.reprojectMap
- * Reproject a map and all its layers
- *
- * Parameters:
- * map - {} the map object to reproject
- * newProjection - {} the projection to transform to
- * noZoom - {Boolean} if true do not zoom the map
-*/
-GeoNetwork.OGCUtil.reprojectMap = function(map, newProjection, noZoom) {
- // check if the projection has actually changed
- if (map.projection != newProjection.projCode) {
- map.baseLayer.options.scales = map.scales;
- var oldProjection = map.getProjectionObject();
- map.projection = newProjection.projCode;
- if (newProjection.getUnits() === null) {
- map.units = 'degrees';
- } else {
- map.units = newProjection.getUnits();
- }
- // make sure the cursor pos control shows coordinates with the
- // right precision
- var cursorPos = null;
- if (map.getControlsByClass('GeoNetwork.Control.CursorPos').length > 0) {
- cursorPos = map.getControlsByClass('GeoNetwork.Control.CursorPos')[0];
- }
- if (map.units == 'm' && cursorPos !== null) {
- cursorPos.numdigits = 0;
- } else if (map.units == 'degrees' && cursorPos !== null) {
- cursorPos.numdigits = 4;
- }
-
- map.maxExtent = map.maxExtent.transform(oldProjection,
- newProjection);
- map.baseLayer.extent = map.maxExtent;
-
- var bounds = map.getExtent().transform(oldProjection,
- newProjection);
-
- for (var i=0; i< map.layers.length; i++) {
- var layer = map.layers[i];
- layer.units = map.units;
- layer.projection = newProjection;
- layer.maxExtent = map.maxExtent;
-
- if (layer.isBaseLayer) {
- layer.initResolutions();
- } else {
- // just copy it from the baselayer
- layer.resolutions = map.baseLayer.resolutions;
- layer.minResolution = map.baseLayer.minResolution;
- layer.maxResolution = map.baseLayer.maxResolution;
- }
- if (layer instanceof OpenLayers.Layer.Vector) {
- for (var j=0; j < layer.features.length; j++) {
- var feature = layer.features[j];
- if (feature.geometry.projection != map.projection) {
- feature.geometry.transform(
- new OpenLayers.Projection(
- feature.geometry.projection),
- map.getProjectionObject() );
- feature.geometry.projection = map.projection;
- }
- }
- }
- }
- if (!noZoom) {
- map.zoomToExtent(bounds);
- }
- }
-};
-
-/**
- * APIFunction: GeoNetwork.OGCUtil.layerExistsInMap
- * Check if the layer already exists in the map, using the SERVICE,
- * LAYERS params and url
- *
- * Parameters:
- * layer - {} the layer to be checked
- * map - {} the map object
- *
- * Returns:
- * {Boolean} false if the layer does not exist
- * {} the layer which has been found
-*/
-GeoNetwork.OGCUtil.layerExistsInMap = function (layer, map) {
- var layerExists = false;
- for (var i=0, len=map.layers.length; i.
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.WMC');
-
-GeoNetwork.WMC = function() {
-
- // public
- return {
- /**
- * APIMethod: loadWmc
- * Load in a Web Map Context document into the map.
- *
- * Parameters:
- * map - {}
- * xml - {String} The Web Map Context XML string
- */
- loadWmc: function(map, xml) {
- try {
- var layers = map.layers;
- // remove all previous layers
- for(var i = layers.length-1; i > 0; i--) {
- if (!layers[i].isBaseLayer) {
- map.removeLayer(layers[i]);
- }
- }
- Ext.getCmp('toctree').getSelectionModel().clearSelections();
-
- var format = new OpenLayers.Format.WMC({'layerOptions': {buffer: 0}});
- map = format.read(xml, {map: map});
- } catch(err) {
- Ext.MessageBox.alert(OpenLayers.i18n("selectWMCFile.errorLoadingWMC"));
- }
- },
-
- /**
- * APIMethod: mergeWmc
- * Load in a Web Map Context document into the map and merge it
- * with existing layers.
- *
- * Parameters:
- * map - {}
- * xml - {String} The Web Map Context XML string
- */
- mergeWmc: function(map, xml) {
- try {
- var format = new OpenLayers.Format.WMC({'layerOptions': {buffer: 0}});
- map = format.read(xml, {map: map});
- } catch(err) {
- Ext.MessageBox.alert(OpenLayers.i18n("selectWMCFile.errorLoadingWMC"));
- }
- },
-
- /**
- * APIMethod: saveContext
- * Save the map as a Web Map Context document (uses server-side Java)
- *
- * Parameters:
- * map - {}
- */
- saveContext: function(map) {
- var wmc = new OpenLayers.Format.WMC();
-
- OpenLayers.Request.POST({
- // TODO: there were problems with relative
- // urls, should we change this?
- url: "../../wmc/create.wmc",
- data: wmc.write(map),
- success: this.onSaveContextSuccess,
- failure: this.onSaveContextFailure
- });
- },
-
- /**
- * Method: onSaveContextSuccess
- * Success AJAX handler for saving WMC.
- *
- * Parameters:
- * response - {Object} The response object
- */
- onSaveContextSuccess: function(response) {
- var json = response.responseText;
- var o = Ext.decode(json);
- if (o.success) {
- window.location = o.url;
- } else {
- this.onSaveContextFailure();
- }
- },
-
- /**
- * Method: onSaveContextFailure
- * Failure AJAX handler for saving WMC.
- *
- * Parameters:
- * response - {Object} The response object
- */
- onSaveContextFailure: function(form, action) {
- Ext.MessageBox.show({icon: Ext.MessageBox.ERROR,
- title: OpenLayers.i18n("saveWMCFile.windowTitle"), msg:
- OpenLayers.i18n("saveWMCFile.errorSaveWMC"),
- buttons: Ext.MessageBox.OK});
- }
-
- };
-};
-
-GeoNetwork.WMCManager = new GeoNetwork.WMC();
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/FeatureInfoPanel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/FeatureInfoPanel.js
deleted file mode 100644
index da93b62928e..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/FeatureInfoPanel.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.FeatureInfoPanel
- * FeatureInfoPanel is an Ext.Panel that displays a listview for all
- * the results returned by the FeatureInfo control. When the user clicks
- * on an item the attributes and values will be shown.
- *
- * Inherits from:
- * - {Ext.Panel}
- */
-
-/**
- * Constructor: GeoNetwork.FeatureInfoPanel
- * Create an instance of GeoNetwork.FeatureInfoPanel
- *
- * Parameters:
- * config - {Object} A config object used to set the featureinfo
- * panel's properties.
- */
-GeoNetwork.FeatureInfoPanel = function(config){
- Ext.apply(this, config);
- GeoNetwork.FeatureInfoPanel.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.FeatureInfoPanel, Ext.Panel, {
-
- /**
- * APIProperty: features
- * Array({}) the features
- * returned from a GetFeatureInfo response.
- */
- features: null,
-
- /**
- * APIProperty: treePanel
- * {} shows a list of layers
- */
- treePanel: null,
-
- /**
- * APIProperty: infoPanel
- * {} the panel used from showing the attributes of a feature
- */
- infoPanel: null,
-
- /**
- * Method: initComponent
- * Initialize this component.
- */
- initComponent: function() {
-
- GeoNetwork.FeatureInfoPanel.superclass.initComponent.call(this);
-
- this.layout = 'border';
-
- this.treePanel = new Ext.tree.TreePanel({rootVisible: true,
- autoScroll: true});
-
- var root = new Ext.tree.TreeNode({text: OpenLayers.i18n("featureInfoTitle"),
- draggable:false, expanded: true, cls: 'folder'});
- this.treePanel.setRootNode(root);
-
- var center = {region: 'center', items: [this.treePanel], split: true,
- minWidth: 100};
-
- this.infoPanel = new Ext.Panel();
- this.infoPanel.on('render', function() {
- if (this.features) {
- this.showFeatures(this.features);
- }
- }, this);
-
- var east = {region: 'east', items: [this.infoPanel], split: true,
- plain: true, cls: 'popup-variant1', width: 400,
- autoScroll: true};
-
- this.add(center);
- this.add(east);
-
- this.doLayout();
- },
-
- /**
- * APIMethod: setMap
- * Set a reference to the {} object
- */
- setMap: function(map) {
- this.map = map;
- },
-
- /**
- * Method: featureToHTML
- * Create the HTML structure for 1 feature and show this in the infoPanel
- *
- * Parameters:
- * feature - {}
- */
- featureToHTML: function(feature) {
- var tplstring = '
';
- for (var attr in feature.attributes) {
- if (attr) {
- tplstring += '
' +
- '
' + attr +
- '
' +
- feature.attributes[attr] + '
';
- }
- }
- tplstring += '
';
- var tpl = new Ext.XTemplate(tplstring);
- tpl.overwrite(this.infoPanel.body, feature);
- },
-
- /**
- * Method: click
- * When a tree node is clicked, show the attributes of the associated
- * feature.
- *
- * Parameters:
- * node - {} the node which was clicked
- */
- click: function(node) {
- if (node.attributes.features.length === 0) {
- var html = '
';
- html += '
' +
- OpenLayers.i18n("FeatureInfoNoInfo") +
- '
';
- html += '
';
- Ext.DomHelper.overwrite(this.infoPanel.body, html);
- }
- for (var i=0, len = node.attributes.features.length; i} the features
- * returned from a GetFeatureInfo response.
- */
- showFeatures: function(features) {
- this.clearInfoPanel();
- var root = this.treePanel.getRootNode();
- while(root.firstChild){
- root.removeChild(root.firstChild);
- }
- // group based on feature.type
- var i, len, featureList = [];
- for (i=0, len=features.length; i.
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.LegendPanel
- * Override the default GeoExt LegendPanel so that LegendURLs from the
- * GetCapabilities interface get used. The current GeoNetwork js code
- * already sets a property on the OL Layer object called legendURL, which
- * we can use, and we can set this on the layer store record so that it
- * gets used.
- *
- * Inherits from:
- * - {GeoExt.LegendPanel}
- */
-GeoNetwork.LegendPanel = Ext.extend(GeoExt.LegendPanel, {
-
- initComponent: function() {
- GeoNetwork.LegendPanel.superclass.initComponent.call(this);
- },
-
- onStoreAdd: function(store, records, index) {
- GeoNetwork.LegendPanel.superclass.onStoreAdd.apply(this, arguments);
- for (var i=0, len=records.length; i.
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Function: GeoNetwork.OpacitySlider
- * Constructor
- *
- * Parameters:
- * config - {Object}
- */
-GeoNetwork.OpacitySlider = function(config){
- Ext.apply(this, config);
- GeoNetwork.OpacitySlider.superclass.constructor.call(this);
-};
-
-/**
- * Class: GeoNetwork.OpacitySlider
- * Extends Ext.Slider.
- * A slider to change the opacity of a Layer.
- * Xtype is 'gn_opacityslider'.
- */
-Ext.extend(GeoNetwork.OpacitySlider, Ext.Slider, {
-
- /**
- * APIProperty: layer
- * {}
- */
- layer: null,
-
- /**
- * Method: initComponent
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.OpacitySlider.superclass.initComponent.call(this);
- this.minValue = 0;
- this.maxValue = 100;
- this.value = this.getInitialValue();
- this.on('change', this.setOpacity, this);
- if (this.selModel) {
- this.selModel.on('selectionchange', this.handleSelectionChange, this);
- }
- },
-
- /**
- * Method: onDestroy
- * Called when this component is destroyed, unset events
- */
- onDestroy: function() {
- this.un('change', this.setOpacity, this);
- this.selModel.un('selectionchange', this.handleSelectionChange, this);
- GeoNetwork.OpacitySlider.superclass.onDestroy.call(this);
- },
-
- /**
- * Method: handleSelectionChange
- * If the selection in the TOC changes, attach another layer to the slider.
- */
- handleSelectionChange: function(selmodel, node) {
- if ((node) && (node.attributes.layer)) {
- this.setLayer(node.attributes.layer);
- }
- },
-
- /**
- * Function: getInitialValue
- * Get the initial opacity value to start the slider with
- *
- * Returns:
- * {Float}
- */
- getInitialValue: function() {
- if (this.layer === null) {
- return 100;
- }
- var opacity = (typeof this.layer.opacity == "number") ? this.layer.opacity * 100 : 100;
- return opacity;
- },
-
- /**
- * Method: setOpacity
- * Sets the opacity on the layer object
- *
- * Parameters:
- * el - {Object} The slider itself
- * value - {Float} The slider value
- */
- setOpacity: function(el, value) {
- var opacity = value / 100;
- if (this.layer) {
- this.layer.setOpacity(opacity);
- }
- },
-
- /**
- * APIMethod: setLayer
- * Attach a layer to the slider
- *
- * Parameters:
- * {}
- */
- setLayer: function(layer) {
- this.layer = layer;
- if (this.rendered) {
- this.setValue(this.getInitialValue());
- this.syncThumb();
- }
- },
-
- /**
- * Method: afterRender
- * After render set the initial value for the opacity on the slider.
- */
- afterRender: function() {
- if (this.layer) {
- this.setValue(this.getInitialValue());
- }
- }
-
-});
-
-Ext.reg('gn_opacityslider', GeoNetwork.OpacitySlider);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/PrintAction.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/PrintAction.js
deleted file mode 100644
index f89b4facdff..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/PrintAction.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('Geonetwork', 'Geonetwork.print');
-
-/**
- * Class: Geonetwork.print.PrintAction
- * An Ext.Action that generates a PDF based on the Map's extent
- *
- * Inherits from:
- * - {Ext.Action}
- * - {}
- */
-
-/**
- * Constructor: Geonetwork.print.PrintAction
- *
- * Parameters:
- * config - {Object} Config object
- */
-Geonetwork.print.PrintAction = function(config) {
- var actionParams = OpenLayers.Util.extend({
- iconCls: 'mf-print-action',
- text: OpenLayers.Lang.translate('mf.print.print'),
- tooltip: OpenLayers.Lang.translate('mf.print.print-tooltip'),
- handler: this.handler,
- scope: this
- }, config);
- Geonetwork.print.PrintAction.superclass.constructor.call(this, actionParams);
- OpenLayers.Util.extend(this, config);
-
- this.mask = new Ext.LoadMask(this.map.div, {
- msg: OpenLayers.Lang.translate('mf.print.loadingConfig')
- });
- this.initPrint();
-};
-
-Ext.extend(Geonetwork.print.PrintAction, Ext.Action, {
-
- /**
- * APIMethod: handler
- * Called when the action is executed (button pressed or menu entry selected).
- */
- handler: function() {
- if (!this.printing) {
- // The mask is created when going to print to get the correct map size
- this.mask = null;
-
- this.mask = new Ext.LoadMask(this.map.div, {
- msg: OpenLayers.Lang.translate('mf.print.loadingConfig')
- });
- this.print();
- }
- },
-
- /**
- * APIMethod: fillSpec
- * Add the page definitions and set the other parameters.
- *
- * Parameters:
- * printCommand - {} The print definition to fill.
- */
- fillSpec: function(printCommand) {
- var singlePage = {
- bbox: this.map.getExtent().toArray()
- };
- var params = printCommand.spec;
- params.pages.push(singlePage);
- params.layout = this.getCurLayout();
- },
-
- /**
- * APIFunction: getCurDpi
- *
- * Returns:
- * the first DPI.
- */
- getCurDpi: function() {
- return this.config.dpis[0].value;
- },
-
- /**
- * APIMethod: getCurLayout
- *
- * Returns:
- * the first Layout.
- */
- getCurLayout: function() {
- return this.config.layouts[0].name;
- }
-});
-
-OpenLayers.Util.applyDefaults(Geonetwork.print.PrintAction.prototype, mapfish.widgets.print.Base);
-
-Ext.reg('gn_printaction', Geonetwork.print.PrintAction);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ProjectionSelector.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ProjectionSelector.js
deleted file mode 100644
index 5b182dfc849..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ProjectionSelector.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Function: GeoNetwork.ProjectionSelector
- * Constructor
- *
- * Parameters:
- * config - {Object}
- */
-GeoNetwork.ProjectionSelector = function(config){
- Ext.apply(this, config);
- GeoNetwork.ProjectionSelector.superclass.constructor.call(this);
-};
-
-/**
- * Class: GeoNetwork.ProjectionSelector
- * Extends Ext.form.ComboBox.
- * A combo box to select a SRS (Spatial Reference System) on the map
- * Xtype is 'gn_projectionselector'.
- */
-Ext.extend(GeoNetwork.ProjectionSelector, Ext.form.ComboBox, {
-
- /**
- * APIProperty: projections
- * {Array} array of projections to use
- */
- projections: null,
-
- /**
- * Method: initComponent
- * Constructor of the projection selector
- */
- initComponent : function() {
- GeoNetwork.ProjectionSelector.superclass.initComponent.call(this);
- this.on('select', this.reproject, this);
- this.valueField = 'value';
- this.autoWidth = true;
- this.autoHeight = true;
- this.displayField = 'text';
- this.triggerAction = 'all';
- this.mode = 'local';
-
- this.store = new Ext.data.Store({
- reader: new Ext.data.ArrayReader({}, [
- {name: 'value'},
- {name: 'text'}
- ]),
- data: this.projections
- });
- this.value = this.map.getProjection();
-
- },
-
- /**
- * Method: reproject
- * Reproject the map
- *
- * Parameters:
- * combo - {} the combo box
- * record - {} the active record
- */
- reproject: function(combo, record) {
- GeoNetwork.OGCUtil.reprojectMap(this.map,
- new OpenLayers.Projection(record.get('value')), false);
- }
-
-});
-Ext.reg('gn_projectionselector', GeoNetwork.ProjectionSelector);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ScaleField.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ScaleField.js
deleted file mode 100644
index 095fb07a880..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/ScaleField.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Function: GeoNetwork.ScaleField
- * Constructor
- *
- * Parameters:
- * config - {Object}
- */
-GeoNetwork.ScaleField = function(config) {
- Ext.apply(this, config);
- GeoNetwork.ScaleField.superclass.constructor.call(this);
-};
-
-/**
- * Class: GeoNetwork.ScaleField
- * Extends Ext.form.Field.
- * A form field which displays the current map scale, and gives the user
- * the opportunity to change the map scale (ENTER key).
- * Xtype is 'gn_scalefield'.
- */
-Ext.extend(GeoNetwork.ScaleField, Ext.form.Field, {
-
- /**
- * APIProperty: map
- * {}
- */
- map: null,
-
- /**
- * Method: initComponent
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.ScaleField.superclass.initComponent.call(this);
- this.setValue(this.map.getScale().toFixed(0));
- this.map.events.register( 'moveend', this, this.updateScale);
- var handlers = {
- specialkey: function(f, e){
- if(e.getKey()==e.ENTER) {
- this.map.zoomToScale(this.getValue(), true);
- }
- }
- };
- this.on(handlers);
- },
-
- /**
- * Method: updateScale
- * Update the value in the text field with the scale from the map
- */
- updateScale: function() {
- var scale = this.map.getScale();
- this.setValue(scale.toFixed(0));
- },
-
- /**
- * Method: onDestroy
- * Clean up events when destroying.
- */
- onDestroy: function() {
- this.map.events.unregister("moveend", this, this.updateScale);
- GeoNetwork.ScaleField.superclass.onDestroy.call(this);
- }
-
-});
-
-Ext.reg('gn_scalefield', GeoNetwork.ScaleField);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/TimeSelector.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/TimeSelector.js
deleted file mode 100644
index 1497db103ad..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/TimeSelector.js
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Function: GeoNetwork.TimeSelector
- * Constructor. A form panel to let the user change the date time for
- * a time-aware WMS layer.
- *
- * Parameters:
- * config - {Object}
- */
-GeoNetwork.TimeSelector = function(config){
- Ext.apply(this, config);
- GeoNetwork.TimeSelector.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.TimeSelector, Ext.form.FormPanel, {
-
- /**
- * APIProperty: layer
- * {}
- */
- layer: null,
-
- /**
- * APIProperty: numberOfSteps
- * {Integer} The number of steps to use in the movie loop.
- */
- numberOfSteps: 12,
-
- border: false,
-
- /**
- * Property: originalFormat
- * {String} Original mime type of the layer
- */
- originalFormat: null,
-
- /**
- * Method: initComponent
- * Initialize this component
- */
- initComponent: function() {
- this.buttons = [new Ext.Button({text: OpenLayers.i18n('wmsTimeUpdateButtonText'),
- handler: this.updateValue, scope: this})];
- GeoNetwork.TimeSelector.superclass.initComponent.call(this);
- },
-
- /**
- * Method: beforeDestroy
- * Before the component is destroyed, unset the animated GIF
- */
- beforeDestroy: function() {
- // make sure the animated GIF is removed
- this.updateValue();
- GeoNetwork.TimeSelector.superclass.beforeDestroy.call(this);
- },
-
- /**
- * APIMethod: setLayer
- * Attach a WMS layer to this widget
- *
- * Parameters:
- * layer - {}
- */
- setLayer: function(layer) {
- this.layer = layer;
- // store original image format if we want to play a movie in between
- this.originalFormat = this.layer.params.FORMAT || this.layer.params.format;
- if (this.layer.dimensions && this.layer.dimensions.time) {
- this.add(new Ext.form.Label({text: OpenLayers.i18n('WMSTimePositionTitle')}));
- this.add(new Ext.BoxComponent({height: 10}));
- this.add(this.createDateTimeField());
- // check if we can play movies (animated gifs for instance)
- if (this.layer.dimensions.time.multipleVal) {
- this.add(new Ext.BoxComponent({height: 25}));
- this.add(new Ext.form.Label({text: OpenLayers.i18n('WMSTimeMovieTitle')}));
- this.add(new Ext.BoxComponent({height: 10}));
- this.add({xtype: 'checkbox',
- listeners: {check: {fn: this.playMovie, scope: this}},
- hideLabel: true,
- boxLabel: OpenLayers.i18n('WMSTimeAnimationCheckbox', {steps: this.numberOfSteps})});
- }
- this.doLayout();
- }
- },
-
- /**
- * Function: getInterval
- * Gets the interval (assumption here is that it is a minute based interval)
- *
- * Parameters:
- * interval - {String} The interval string which has a form of PTXM
- *
- * Returns:
- * {Integer} The time interval
- */
- getInterval: function(interval) {
- return parseInt(interval.substring(interval.indexOf("PT")+2, interval.indexOf("M")));
- },
-
- /**
- * Method: playMovie
- * This gets called when somebody (un)checks the movie loop checkbox.
- *
- * Parameters:
- * a - {}
- * checked - {Boolean}
- */
- playMovie: function(a, checked) {
- if (checked) {
- var max, interval, timeRange;
- if (this.layer.dimensions.time.values && this.layer.dimensions.time.values.length > 0) {
- var values = this.layer.dimensions.time.values[0].split("/");
- max = values[1];
- interval = this.getInterval(values[2]);
- var start = Date.parseDate(max, "c");
- start = start - (1000*60*interval*this.numberOfSteps);
- start = new Date(start);
- timeRange = this.formatTimeAsUTC(start) + '/' + max;
- }
- this.layer.mergeNewParams({'TIME': timeRange, 'FORMAT': 'image/gif'});
- } else {
- this.updateValue();
- }
- },
-
- /**
- * Function: formatTimeAsUTC
- * Change the timezone of the string back to UTC
- *
- * Parameters:
- * dateObj - {Date}
- *
- * Returns:
- * {String} The date time formatted according to ISO8601 and UTC timezone
- */
- formatTimeAsUTC: function(dateObj) {
- // we always need to send times in UTC!
- // TODO: there should be a better way to change the timezone, but I can't find it
- // dateFormat with format 'c' gives back the date in the browser timezone and not UTC.
- var dt = dateObj.dateFormat("c");
- // concatenate with an empty string so it gets to be a string
- var utcHours = '' + dateObj.getUTCHours();
- if (utcHours.length < 2) {
- utcHours = '0'+utcHours;
- }
- dt = dt.replace(dt.substring(dt.indexOf('T'), dt.indexOf('T')+3), 'T'+utcHours);
- // replace timezone part with Z
- dt = dt.replace(dt.substring(dt.indexOf('+'), dt.indexOf('+')+6), 'Z');
- return dt;
- },
-
- /**
- * Method: updateValue
- * Update the value of the TIME parameter for the WMS layer
- */
- updateValue: function() {
- this.layer.mergeNewParams({
- 'TIME': this.formatTimeAsUTC(this.getForm().findField('current').getValue()),
- 'FORMAT': this.originalFormat
- }
- );
- },
-
- /**
- * Function: createDateTimeField
- * Create a date time field which is initialized with the default
- * time value of the WMS layer.
- *
- * Returns:
- * {}
- */
- createDateTimeField: function() {
- var min, max, interval;
- if (this.layer.dimensions.time.values && this.layer.dimensions.time.values.length > 0) {
- var values = this.layer.dimensions.time.values[0].split("/");
- min = values[0];
- max = values[1];
- interval = this.getInterval(values[2]);
- }
- return new Ext.ux.form.DateTime({
- hiddenFormat: "c",
- /* use null so it will default to the locale */
- dateFormat: null,
- hideLabel: true,
- name: 'current',
- dateConfig: {minValue: Date.parseDate(min, "c"), maxValue: Date.parseDate(max, "c")},
- timeConfig: {increment: interval},
- value: (this.layer.params.TIME) ? this.layer.params.TIME : this.layer.dimensions.time["default"],
- width: 340});
- }
-
-});
-
-Ext.reg('gn_timeselector', GeoNetwork.TimeSelector);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/WxSExtractor.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/WxSExtractor.js
deleted file mode 100644
index c1e27cd6f6e..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/WxSExtractor.js
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * Copyright (C) 2001-2012 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace('GeoNetwork');
-
-/** api: (define)
- * module = GeoNetwork
- * class = WxSExtractor
- * base_link = `Ext.FormPanel `_
- */
-/** api: constructor
- * .. class:: WxSExtractor(config)
- *
- * WxSExtractor panel provide a simple form to define an area of interest,
- * projection and output format in order to call an OGC service (ie. WFS)
- * to retrieve features for this AOI.
- *
- * TODO : support WCS
- */
-GeoNetwork.WxSExtractor = Ext.extend(Ext.form.FormPanel, {
- defaultConfig: {
- border: false,
- layout: 'form',
- /** api: config[west]
- * Default west bound coordinate.
- */
- west: -180,
- /** api: config[south]
- * Default south bound coordinate.
- */
- south: -90,
- /** api: config[east]
- * Default east bound coordinate.
- */
- east: 180,
- /** api: config[north]
- * Default north bound coordinate.
- */
- north: 90,
- /** api: config[hideCoordinates]
- * Display bounds coordinates in the form or not. It may be not necessary if a map is attached.
- */
- hideCoordinates: false,
- /** api: config[projection]
- * Default projection to use
- */
- projection: 'EPSG:4326',
- /** api: config[projection]
- * Default projection to use
- */
- /** api: config[projectionList]
- * An array of projections with their labels. The projection must be supported by the server.
- */
- projectionList: [['EPSG:4326', 'WGS84']],
- /** api: config[version]
- * Default version to use
- */
- version: '1.1.0',
- /** api: config[versionList]
- * An array of projections with their labels. The projection must be supported by the server.
- */
- versionList: [['1.0.0'], ['1.1.0']],
- /** api: config[outputFormat]
- * Default output format to use. It must be in the list of format provided in the GetCapabilities
- * document of the service
- */
- outputFormat: 'GML2',
- /** api: config[preferredOutputFormat]
- * List of preferred output format in order of preference.
- */
- preferredOutputFormat: ['SHAPE-ZIP', 'GML2'],
- /** api: config[downloadCb]
- * A custom callback to use when the user click the download button. Callback parameters are
- * the GetFeature url and the panel object.
- */
- downloadCb: function (url, panel) {
- window.open(url);
- },
- /** api: config[updateExtentCb]
- * Callback to do some more things when extent is updated.
- * Parameters are west, south, east, north
- *
- * TODO : unused
- */
- updateExtentCb: null,
- /** api: config[map]
- * Define a map use to set the AOI.
- * The AOI could be define using the map extent (if mapExtentMode set to true) or
- * using a vector layer and drawing a rectangle on the map.
- */
- map: null,
- /** api: config[mapExtentMode]
- * true to use the map extent as extraction area
- */
- mapExtentMode: false
- },
- url: null,
- layer: null,
- outputFormatStore: null,
- projectionStore: null,
- featureTypeStore: null,
- versionStore: null,
- getCapabilitiesUrl: null,
- layerSelector: null,
- outputFormatSelector: null,
- coordinateCtrl: {},
- boxLayer: null,
- /**
- * Retrieve GetCapabilities document
- */
- getCapabilities: function (url, layer, type, version) {
- var panel = this;
- // Empty current records
- this.outputFormatStore.removeAll();
- this.featureTypeStore.removeAll();
-
- // Set values or use currents
- this.layer = layer || this.layer;
- this.type = type || "WFS";
- this.version = version || this.version;
- this.url = url || this.url;
- this.getCapabilitiesUrl = this.url.indexOf('GetCapabilities') !== -1 ?
- this.url :
- this.url + "?REQUEST=GetCapabilities&SERVICE=" + this.type + "&VERSION=" + this.version;
-
- // Load capabilities
- OpenLayers.Request.GET({
- url: this.getCapabilitiesUrl,
- success: function (result) {
- var wfsCapabilitiesFormat = new OpenLayers.Format.WFSCapabilities();
- var capabilities = wfsCapabilitiesFormat.read(result.responseText);
-
- // Get capability output formats
- var outputFormats = [];
- if (capabilities.operationsMetadata) {
- for (var format in capabilities.operationsMetadata.GetFeature.parameters.outputFormat) {
- if (capabilities.operationsMetadata.GetFeature.parameters.outputFormat.hasOwnProperty(format)) {
- outputFormats.push([format, OpenLayers.i18n(format)]);
- }
- }
- } else {
- Ext.each(capabilities.capability.request.getfeature.formats, function (format) {
- outputFormats.push([format, OpenLayers.i18n(format)]);
- }
- );
- }
-
- panel.outputFormatStore.loadData(outputFormats);
- panel.featureTypeStore.loadData(capabilities.featureTypeList.featureTypes);
- },
- failure: function (response) {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('error'),
- msg: OpenLayers.i18n('wxs-extract-service-not-found'),
- tokens: {
- misc: response.status,
- url: panel.url
- },
- status: 'warning',
- target: panel.getId()
- });
- }
- });
- },
- /**
- * Create form with:
- * * layer selection (current layer selected)
- * * projection selection
- * * extent selection
- */
- getItems: function () {
- var items = [];
-
- // List of layers
- this.layerSelector = new Ext.form.ComboBox({
- mode: 'local',
- allowBlank: false,
- triggerAction: 'all',
- fieldLabel: OpenLayers.i18n('chooseALayer'),
- store: this.featureTypeStore,
- valueField: 'name',
- displayField: 'title',
- listeners: {
- change: function (f, newValue, oldValue) {
- this.layer = newValue;
- this.updateFeatureTypeInfo(this.layer);
- },
- scope: this
- }
- });
- items.push(this.layerSelector);
-
- // Projection
- items.push(new Ext.form.ComboBox({
- mode: 'local',
- allowBlank: false,
- triggerAction: 'all',
- fieldLabel: OpenLayers.i18n('projectionTitle'),
- store: this.projectionStore,
- valueField: 'id',
- displayField: 'name',
- value: this.projection,
- listeners: {
- change: function (f, newValue, oldValue) {
- this.projection = newValue;
- },
- scope: this
- }
- }));
-
- // Version
- items.push(new Ext.form.ComboBox({
- mode: 'local',
- allowBlank: false,
- triggerAction: 'all',
- fieldLabel: OpenLayers.i18n('wfsVersion'),
- store: this.versionStore,
- valueField: 'id',
- displayField: 'id',
- value: this.version,
- listeners: {
- change: function (f, newValue, oldValue) {
- this.version = newValue;
- // Refresh getCapabilities
- this.getCapabilities();
- },
- scope: this
- }
- }));
-
- // OutputFormat
- this.outputFormatSelector = new Ext.form.ComboBox({
- mode: 'local',
- allowBlank: false,
- triggerAction: 'all',
- fieldLabel: OpenLayers.i18n('outputFormat'),
- store: this.outputFormatStore,
- valueField: 'id',
- displayField: 'name',
- value: this.outputFormat,
- listeners: {
- change: function (f, newValue, oldValue) {
- this.outputFormat = newValue;
- },
- scope: this
- }
- });
- items.push(this.outputFormatSelector);
-
- // TODO add MAXFEATURES, TIME
-
- // Extraction area
- var coords = ['west', 'south', 'east', 'north'];
- Ext.each(coords, function (item) {
- this.coordinateCtrl[item] = new Ext.form.TextField({
- fieldLabel: OpenLayers.i18n(item),
- hidden: this.hideCoordinates,
- listeners: {
- change: function (f, newValue, oldValue) {
- this.updateMapExtent(item, newValue);
- },
- scope: this
- }
- });
- items.push(this.coordinateCtrl[item]);
- }, this);
-
- return items;
- },
- download: function (extent) {
- var url = this.url + (this.url.indexOf('?') === -1 ? '?' : '');
- if (url.indexOf('GetCapabilities') !== -1) {
- url = url.replace(new RegExp("GetCapabilities", "g"), 'GetFeature');
- } else {
- url += "&REQUEST=GetFeature";
- }
- var downloadUrl = url + "&SERVICE=" + this.type + "&VERSION=" + this.version +
- "&TYPENAME=" + this.layer +
- "&BBOX=" + this.coordinateCtrl['west'].getValue() + "," + this.coordinateCtrl['south'].getValue() +
- "," + this.coordinateCtrl['east'].getValue() + "," + this.coordinateCtrl['north'].getValue() +
- "&SRSNAME=" + this.projection +
- "&OUTPUTFORMAT=" + this.outputFormat;
- this.downloadCb(downloadUrl, this);
- },
- updateExtent: function (newBounds) {
- var bounds = newBounds || this.map.getExtent();
- bounds.transform(this.map.getProjection(), new OpenLayers.Projection(this.projection));
- var boundsArr = bounds.toArray();
- this.updateExtentCoordinates(boundsArr[0], boundsArr[1], boundsArr[2], boundsArr[3]);
- },
- /**
- * Update form values from map information
- */
- updateExtentCoordinates: function (west, south, east, north) {
- // Update form values
- this.coordinateCtrl.west.setValue(west);
- this.coordinateCtrl.south.setValue(south);
- this.coordinateCtrl.east.setValue(east);
- this.coordinateCtrl.north.setValue(north);
- },
- /**
- * Update map bbox from form value
- */
- updateMapExtent: function (coord, value) {
- if (this.map) {
- var bounds = new OpenLayers.Bounds(this.coordinateCtrl.west.getValue(),
- this.coordinateCtrl.south.getValue(),
- this.coordinateCtrl.east.getValue(),
- this.coordinateCtrl.north.getValue());
- bounds.transform(new OpenLayers.Projection(this.projection), this.map.getProjection());
- if (this.mapExtentMode) {
- this.map.zoomToExtent(bounds);
- } else {
- var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
- this.boxLayer.destroyFeatures();
- this.boxLayer.addFeatures(feature);
- }
- }
- },
- updateFeatureTypeInfo: function (featureTypeName) {
- var record = this.featureTypeStore.query('name', featureTypeName, true, false);
- var layer = record.items[0];
- if (record.length === 1) {
- this.layerSelector.setValue(layer.get('name'));
-
- var bounds = layer.get('bounds');
- if (bounds) {
- this.updateExtentCoordinates(bounds.left, bounds.bottom, bounds.right, bounds.top);
- }
- } else {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('warning'),
- msg: OpenLayers.i18n('wxs-extract-layer-not-found'),
- tokens: {
- layer: this.layer,
- url: this.url
- },
- status: 'warning',
- target: this.getId()
- });
- }
- },
- initComponent: function () {
- Ext.applyIf(this, this.defaultConfig);
-
- this.outputFormatStore = new Ext.data.ArrayStore({
- id: 0,
- fields: ['id', 'name'],
- listeners: {
- load: function (store, formats) {
- for (var i = 0; i < this.preferredOutputFormat.length; i ++) {
- var preferredFormat = this.preferredOutputFormat[i];
- var theFormat = store.query('id', preferredFormat);
- if (theFormat.length === 1) {
- this.outputFormatSelector.setValue(preferredFormat);
- this.outputFormatSelector.fireEvent('change', null, preferredFormat);
- break;
- }
- }
- },
- scope: this
- }
- });
-
- this.featureTypeStore = new Ext.data.JsonStore({
- id: 0,
- fields: ['name', 'title', 'abstract', 'keywords', 'bounds', 'srs'],
- listeners: {
- load: function (store, records) {
- this.updateFeatureTypeInfo(this.layer.split(':').pop());
- },
- scope: this
- }
- });
-
- this.projectionStore = new Ext.data.ArrayStore({
- id: 0,
- fields: ['id', 'name'],
- data: this.projectionList
- });
- this.versionStore = new Ext.data.ArrayStore({
- id: 0,
- fields: ['id'],
- data: this.versionList
- });
- this.items = this.getItems();
-
- GeoNetwork.WxSExtractor.superclass.initComponent.call(this);
-
- this.addButton(new Ext.Button({
- text: OpenLayers.i18n('dataDownload'),
- iconCls: 'WFSDownloadIcon',
- listeners: {
- click: this.download,
- scope: this
- }
- }));
-
-
- if (this.north) {
- this.updateExtentCoordinates(this.west, this.south, this.east, this.north);
- }
- if (this.url) {
- this.getCapabilities(this.url, this.layer, this.type, this.version);
- }
-
- if (this.map) {
- if (this.mapExtentMode) {
- this.map.events.register('moveend', this, this.updateExtent);
- } else {
- var panel = this;
- this.boxLayer = new OpenLayers.Layer.Vector("Data extraction area");
- // Remove all features before adding a new one.
- this.boxLayer.events.register('beforefeatureadded', this, function () {
- this.boxLayer.removeAllFeatures();
- });
- this.map.addLayer(this.boxLayer);
-
- var control = new OpenLayers.Control.DrawFeature(this.boxLayer,
- OpenLayers.Handler.RegularPolygon, {
- handlerOptions: {
- sides: 4,
- citeCompliant: true,
- irregular: true
- },
- featureAdded: function (feature) {
- panel.updateExtent(feature.geometry.getBounds());
- }
- });
- this.map.addControl(control);
- control.activate();
- this.add(new Ext.Button({
- text: OpenLayers.i18n('defineExtractionArea'),
- pressed: true,
- allowDepress: true,
- toggleGroup: 'drawCtr',
- listeners: {
- toggle: function (bt, pressed) {
- if (pressed) {
- this.boxLayer.removeAllFeatures();
- control.activate();
- } else {
- control.deactivate();
- }
- },
- scope: this
- }
- }));
-
- // The map layer and control must be removed from the map when the panel is destroyed
- this.on('beforedestroy', function () {
- this.map.removeControl(control);
- this.map.removeLayer(this.boxLayer);
- });
- }
- }
- }
-});
-
-/** api: xtype = gn_wxsextractor */
-Ext.reg('gn_wxsextractor', GeoNetwork.WxSExtractor);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSListGenerator.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSListGenerator.js
deleted file mode 100644
index eabfa062cee..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSListGenerator.js
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.tree');
-
-/**
- * Class: GeoNetwork.tree.WMSListGenerator
- * WMSListGenerator generates an Ext.tree.TreeNode representing multiple
- * Web Mapping Services and their layer lists.
- */
-
-/**
- * Constructor: GeoNetwork.tree.WMSListGenerator
- * Create an instance of GeoNetwork.tree.WMSListGenerator
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.tree.WMSListGenerator = function(config){
- Ext.apply(this, config);
- if (this.node && this.wmsStore) {
- this.createWMSList();
- }
-};
-
-GeoNetwork.tree.WMSListGenerator.prototype = {
-
- /**
- * APIProperty: node
- * {} the node to which the WMS list will be appended
- */
- node: null,
-
- /**
- * APIProperty: wmsStore
- * {} a store of WMS services, which have a title and a
- * url property
- */
- wmsStore: null,
-
- /**
- * APIProperty: click
- * {Function} click function to use when clicked on the child nodes
- */
- click: null,
-
- /**
- * APIProperty: scope
- * {Object} scope to use for the click function
- */
- scope: null,
-
- /**
- * APIMethod: createWMSList
- * create a tree node per WMS and on click of that node load the layers
- * thorugh the loadWMS API method.
- */
- createWMSList: function() {
- this.wmsStore.each(this.appendRecord, this);
- },
-
- /**
- * Method: appendRecord
- * Append an Ext.data.Record from the wmsStore to the treeview
- *
- * Parameters:
- * record - {} a record with a url and title property
- */
- appendRecord: function(record) {
- var wmsNode = new Ext.tree.TreeNode({url: record.get('url'),
- text: record.get('title'), cls: 'folder', leaf: false});
- // append a dummy child so that it will appear as a directory
- wmsNode.appendChild(new Ext.tree.TreeNode({text: '', dummy: true}));
- wmsNode.addListener("beforeexpand", this.addNodesFromWMS, this);
- this.node.appendChild(wmsNode);
- },
-
- /**
- * Method: replaceNode
- * Replace the node with the WMS title with the one extracted from the
- * GetCapabilities response
- *
- * Parameters:
- * node - {} the node extracted from the GetCapabilities
- */
- replaceNode: function(node) {
- this.currentNode.parentNode.replaceChild(node, this.currentNode);
- node.ui.afterLoad();
- node.expand();
- },
-
- /**
- * Method: addNodesFromWMS
- * Before the node is expanded, load a new TreeNode from the
- * GetCapabilities and when it is done replace the current node
- * with the newly created one.
- *
- * Parameters:
- * node - {} the WMS node with only a title and url
- */
- addNodesFromWMS: function(node) {
- // first remove the dummy child
- if (node.firstChild && node.firstChild.attributes.dummy) {
- node.removeChild(node.firstChild);
- node.ui.beforeLoad();
- this.scope.currentNode = node;
- // start loading the actual layer tree, when done replace
- var treeGenerator = new GeoNetwork.tree.WMSTreeGenerator(
- {click: this.click, callback: this.replaceNode,
- scope: this.scope});
- treeGenerator.loadWMS(node.attributes.url);
- }
- }
-
-};
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSTreeGenerator.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSTreeGenerator.js
deleted file mode 100644
index 395160cb541..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMSTreeGenerator.js
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.tree');
-
-/**
- * Class: GeoNetwork.tree.WMSTreeGenerator
- * WMSTreeGenerator generates an Ext.tree.TreeNode representing the layer
- * list of a OGC:WMS Web Mapping Service.
- */
-
-/**
- * Constructor: GeoNetwork.tree.WMSTreeGenerator
- * Create an instance of GeoNetwork.tree.WMSTreeGenerator
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.tree.WMSTreeGenerator = function(config){
- Ext.apply(this, config);
-};
-
-GeoNetwork.tree.WMSTreeGenerator.prototype = {
-
- /**
- * APIProperty: layerParams
- * {Object} - a set of URL parameters to use on the OpenLayers.Layer.WMS
- * layers
- */
- layerParams: {format:'image/png', transparent:'TRUE'},
-
- /**
- * APIProperty: layerOptions
- * {Object} - a set of options to use on the OpenLayers.Layer.WMS
- * layers
- */
- layerOptions: {ratio:1, singleTile: true, isBaseLayer: false},
-
- /**
- * APIProperty: click
- * {Function} click function to use when clicked on the child nodes
- */
- click: null,
-
- /**
- * APIProperty: callback
- * {Function} callback function to use when the TreeNode is ready
- */
- callback: null,
-
- /**
- * APIProperty: scope
- * {Object} scope to use for the click and the callback function
- */
- scope: null,
-
- /**
- * APIMethod: loadWMS
- * load a WMS layer list and return a TreeNode through a callback
- * function
- *
- * Parameters:
- * onlineResource - {String} the online resource / base url of the WMS
- */
- loadWMS: function(onlineResource) {
- var containsVersion = (onlineResource.indexOf('version=') > -1);
-
- var onlineResourceCheck = onlineResource.toLowerCase();
-
- var containsVersion = (onlineResourceCheck.indexOf('version=') > -1);
- var containsService = (onlineResourceCheck.indexOf('service=wms') > -1);
- var containsRequest = (onlineResourceCheck.indexOf('request=getcapabilities') > -1);
- var containsLanguage = (onlineResourceCheck.indexOf('language=') > -1);
-
- var params = {};
-
- if (!containsVersion) {
- params['version'] = GeoNetwork.OGCUtil.getProtocolVersion();
- }
-
- if (!containsService) {
- params['service'] = 'WMS';
- }
-
- if (!containsRequest) {
- params['request'] = 'GetCapabilities';
- }
-
- if (!containsLanguage) {
- params['language'] = GeoNetwork.OGCUtil.getLanguage();
- }
-
- var paramString = OpenLayers.Util.getParameterString(params);
- var separator = (onlineResource.indexOf('?') > -1) ? '&' : '?';
- onlineResource += separator + paramString;
- var req = Ext.Ajax.request({
- url: onlineResource,
- method: 'GET',
- failure: this.processFailure,
- success: this.processSuccess,
- disableCaching: false,
- scope: this
- });
- },
-
- /**
- * Method: processSuccess
- * Process the WMS GetCapabilities response
- *
- * Parameters:
- * response - {Object} The XHR object which contains the parsed XML doc
- */
- processSuccess: function(response) {
- if (!this.parser) {
- this.parser = new OpenLayers.Format.WMSCapabilities();
- }
- var caps = this.parser.read(response.responseXML || response.responseText);
- this.layerParams.VERSION = caps.version;
- var node;
- if (caps.capability) {
- for(var i=0, len = caps.capability.nestedLayers.length; i} the layer created
- */
- createWMSLayer: function(layer, url) {
- return new OpenLayers.Layer.WMS( layer.title, url,
- OpenLayers.Util.extend({layers: layer.name, language: GeoNetwork.OGCUtil.getLanguage()}, this.layerParams),
- OpenLayers.Util.extend({minScale: layer.minScale,
- queryable: layer.queryable, maxScale: layer.maxScale,
- metadataURL: layer.metadataURL,
- dimensions: layer.dimensions,
- styles: layer.styles,
- llbbox: layer.llbbox},
- this.layerOptions));
- },
-
- /**
- * Method: addLayer
- * Add a layer to the TreeNode
- *
- * Parameters:
- * layer - {Object} layer object from the WMSCapabilities parser
- * url - {String} the OnlineResource of the WMS
- * parentNode - {} if there is a parentNode, the newly
- * created node will be appended to the parentNode
- *
- * Returns: {}
- */
- addLayer: function(layer, url, parentNode) {
- var wmsLayer = null;
- if (layer.name) {
- wmsLayer = this.createWMSLayer(layer, url);
- if (layer.styles && layer.styles.length > 0) {
- var style = layer.styles[0];
- if (style.legend && style.legend.href) {
- wmsLayer.legendURL = style.legend.href;
- }
- }
- }
- var node = new Ext.tree.TreeNode({wmsLayer: wmsLayer, text:
- layer.title});
- node.addListener("click", this.click, this.scope);
- if (parentNode) {
- parentNode.appendChild(node);
- }
- return node;
- },
-
- /**
- * Method: processLayer
- * Recursive function to process a layer and their childLayers
- *
- * Parameters:
- * layer - {Object} layer object from the WMSCapabilities parser
- * url - {String} the OnlineResource of the WMS
- * node - {}
- */
- processLayer: function(layer, url, node) {
- Ext.each(layer.nestedLayers, function(el) {
- var node2 = this.addLayer(el, url, node);
- if (el.nestedLayers) {
- this.processLayer(el, url, node2);
- }
- }, this);
- }
-
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMTSTreeGenerator.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMTSTreeGenerator.js
deleted file mode 100644
index fc407a55f6c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/tree/WMTSTreeGenerator.js
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright (C) 2012 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.tree');
-
-/**
- * Class: GeoNetwork.tree.WMTSTreeGenerator WMSTreeGenerator generates an
- * Ext.tree.TreeNode representing the layer list of a OGC:WMTS Web Mapping
- * Service.
- */
-
-/**
- * Constructor: GeoNetwork.tree.WMTSTreeGenerator Create an instance of
- * GeoNetwork.tree.WMTSTreeGenerator
- *
- * Parameters: config - {Object} A config object used to set the properties
- */
-GeoNetwork.tree.WMTSTreeGenerator = function(config) {
- Ext.apply(this, config);
-};
-
-GeoNetwork.tree.WMTSTreeGenerator.prototype = {
-
- /**
- * APIProperty: layerParams {Object} - a set of URL parameters to use on the
- * OpenLayers.Layer.WMS layers
- */
- layerParams : {
- format : 'image/png',
- transparent : 'TRUE'
- },
-
- /**
- * APIProperty: layerOptions {Object} - a set of options to use on the
- * OpenLayers.Layer.WMS layers
- */
- layerOptions : {
- ratio : 1,
- singleTile : true,
- isBaseLayer : false
- },
-
- /**
- * APIProperty: click {Function} click function to use when clicked on the
- * child nodes
- */
- click : null,
-
- /**
- * APIProperty: callback {Function} callback function to use when the
- * TreeNode is ready
- */
- callback : null,
-
- /**
- * APIProperty: scope {Object} scope to use for the click and the callback
- * function
- */
- scope : null,
-
- /**
- * APIMethod: loadWMS load a WMS layer list and return a TreeNode through a
- * callback function
- *
- * Parameters: onlineResource - {String} the online resource / base url of
- * the WMS
- */
- loadWMS : function(onlineResource) {
- var containsVersion = (onlineResource.indexOf('version=') > -1);
-
- var onlineResourceCheck = onlineResource.toLowerCase();
-
- var containsVersion = (onlineResourceCheck.indexOf('version=') > -1);
- var containsService = (onlineResourceCheck.indexOf('service=wmts') > -1);
- var containsRequest = (onlineResourceCheck
- .indexOf('request=getcapabilities') > -1);
- var containsLanguage = (onlineResourceCheck.indexOf('language=') > -1);
-
- var params = {};
-
- if (!containsVersion) {
- params['version'] = GeoNetwork.OGCUtil.getProtocolVersion();
- }
-
- if (!containsService) {
- params['service'] = 'WMTS';
- }
-
- if (!containsRequest) {
- params['request'] = 'GetCapabilities';
- }
-
- if (!containsLanguage) {
- params['language'] = GeoNetwork.OGCUtil.getLanguage();
- }
-
- var paramString = OpenLayers.Util.getParameterString(params);
- var separator = (onlineResource.indexOf('?') > -1) ? '&' : '?';
- onlineResource += separator + paramString;
- var req = Ext.Ajax.request({
- url : onlineResource,
- method : 'GET',
- failure : this.processFailure,
- success : this.processSuccess,
- disableCaching : false,
- scope : this
- });
- },
-
- /**
- * Method: processSuccess Process the WMS GetCapabilities response
- *
- * Parameters: response - {Object} The XHR object which contains the parsed
- * XML doc
- */
- processSuccess : function(response) {
- if (!this.parser) {
- this.parser = new OpenLayers.Format.WMTSCapabilities();
- }
- var caps = this.parser.read(response.responseXML
- || response.responseText);
-
- if (!caps.service) {
- caps.service = {};
- }
- if (!caps.service.accessConstraints) {
- caps.service.accessContraints = '';
- }
-
- this.layerParams.VERSION = caps.version;
- var parentNode = new Ext.tree.TreeNode({
- text : caps.serviceIdentification.title
- });
- if (caps.contents) {
- for ( var i = 0, len = caps.contents.layers.length; i < len; ++i) {
- var layer = caps.contents.layers[i];
-
- var node = this
- .addLayer(layer, caps.serviceMetadataUrl, parentNode, caps);
- this.processLayer(layer, caps.serviceMetadataUrl, node, caps);
- }
- }
- // return the newly created TreeNode through a callback function
- Ext.callback(this.callback, this.scope, [ parentNode, caps ]);
- },
-
- /**
- * Method: processFailure Process the WMS GetCapabilities response when
- * failed
- *
- * Parameters: response - {Object} The XHR object which contains the parsed
- * XML doc
- */
- processFailure : function(response) {
- Ext.callback(this.callback, this.scope, null);
- },
-
- /**
- * APIMethod: createWMSLayer create a OpenLayers.Layer.WMS from parameters
- *
- * Parameters: layer - {Object} an object with the layer's properties url -
- * {String} the url at which the layer is available
- *
- * Returns: {} the layer created
- */
- createWMSLayer : function(layer, url, capabilities) {
- var layermatrixSet = app.mapApp.getMap().projection;
- var projection = app.mapApp.getMap().projection;
-
- var tileMS = capabilities.contents.tileMatrixSets;
- for (key in tileMS) {
- if (key.toUpperCase().indexOf(projection) >= 0
- || tileMS[key].supportedCRS.toUpperCase().indexOf(
- projection) >= 0
- || tileMS[key].identifier.toUpperCase().indexOf(projection) >= 0) {
- layermatrixSet = key;
- }
- }
-
- return this.parser.createLayer(capabilities, {
- name : layer.title,
- layer : layer.identifier,
- matrixSet : layermatrixSet,
- isBaseLayer : false,
- format: layer.formats[0]
- });
- },
-
- /**
- * Method: addLayer Add a layer to the TreeNode
- *
- * Parameters: layer - {Object} layer object from the WMSCapabilities parser
- * url - {String} the OnlineResource of the WMS parentNode - {}
- * if there is a parentNode, the newly created node will be appended to the
- * parentNode
- *
- * Returns: {}
- */
- addLayer : function(layer, url, parentNode, caps) {
- var wmsLayer = null;
- if (layer.identifier ) {
- wmsLayer = this.createWMSLayer(layer, caps, caps);
- if (layer.styles && layer.styles.length > 0) {
- var style = layer.styles[0];
- if (style.legend && style.legend.href) {
- wmsLayer.legendURL = style.legend.href;
- }
- }
- }
- var node = new Ext.tree.TreeNode({
- wmsLayer : wmsLayer,
- text : layer.title
- });
- node.addListener("click", this.click, this.scope);
- if (parentNode) {
- parentNode.appendChild(node);
- }
- return node;
- },
-
- /**
- * Method: processLayer Recursive function to process a layer and their
- * childLayers
- *
- * Parameters: layer - {Object} layer object from the WMSCapabilities parser
- * url - {String} the OnlineResource of the WMS node - {}
- */
- processLayer : function(layer, url, node, caps) {
- Ext.each(layer.layers, function(el) {
- var node2 = this.addLayer(el, url, node, caps);
- if (el.nestedLayers) {
- this.processLayer(el, url, node2, caps);
- }
- }, this);
- }
-
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/BrowserPanel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/BrowserPanel.js
deleted file mode 100644
index 818181ca717..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/BrowserPanel.js
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/widgets/wms/PreviewPanel.js
-*/
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.wms');
-
-/**
- * Class: GeoNetwork.wms.BrowserPanel
- * WMSBrowserPanel groups together a TreePanel and a WMSPreviewPanel
- * as well as the button to add layers to the map.
- */
-
-/**
- * Constructor: GeoNetwork.wms.BrowserPanel
- * Create an instance of GeoNetwork.wms.BrowserPanel
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.wms.BrowserPanel = function(config){
- Ext.apply(this, config);
- GeoNetwork.wms.BrowserPanel.superclass.constructor.call(this);
-};
-
-GeoNetwork.wms.BrowserPanel.ADDWMS = 0;
-GeoNetwork.wms.BrowserPanel.WMSLIST = 1;
-
-Ext.extend(GeoNetwork.wms.BrowserPanel, Ext.Panel, {
-
- /**
- * APIProperty: previewPanel
- * {} the panel used for previewing
- * WMS layers
- */
- previewPanel: null,
-
- /**
- * APIProperty: treePanel
- * {} the panel used for the treeview
- */
- treePanel: null,
-
- /**
- * APIProperty: map
- * {} the map object
- */
- map: null,
-
- /**
- * APIProperty: previewCenterPoint
- * {} it preview can be centered on this point,
- * but defaults to the map center
- */
- previewCenterPoint: null,
-
- /**
- * APIProperty: mode
- * {Integer} what mode should the wms browser panel operate in?
- * One of: ADDWMS or WMSLIST. Default is WMSLIST
- */
- mode: GeoNetwork.wms.BrowserPanel.WMSLIST,
-
- /**
- * APIProperty: wmsStore
- * {} a store of wms servers, which have a title and a
- * url property. Only needed for mode = WMSLIST
- */
- wmsStore: null,
-
- /**
- * APIProperty: urlField
- * {} a field to add a WMS server by URL
- */
- urlField: null,
- searchResultsGrid: null,
- searchField: null,
- parseBt: null,
- typeRadio: null,
- defaultConfig: {
- border: false,
- frame: false,
- layout: 'border'
- },
- /**
- * initComponent
- * Initialize this component
- */
- initComponent: function(config) {
- Ext.apply(this, config);
- Ext.applyIf(this, this.defaultConfig);
-
- GeoNetwork.wms.BrowserPanel.superclass.initComponent.call(this);
-
- this.previewPanel = new GeoNetwork.wms.PreviewPanel(
- {map: this.map, previewCenterPoint: this.previewCenterPoint});
-
- var root;
- this.treePanel = new Ext.tree.TreePanel({
- rootVisible : false,
- autoScroll : true,
- autoHeight : true
- });
- root = new Ext.tree.TreeNode({text: '', draggable:false,
- cls: 'folder'});
- this.treePanel.setRootNode(root);
-
- var centerItems = [];
- if (this.mode == GeoNetwork.wms.BrowserPanel.ADDWMS) {
- this.createForm();
-
- centerItems.push(this.form);
- }
-
-
- centerItems.push(this.treePanel);
-
- var center = {autoScroll: true, region: 'center', items: centerItems,
- split: true, width: 300, minWidth: 300, border: false};
-
- var east = {region: 'east', border: false, items: [this.previewPanel], split: true,
- plain: true, cls: 'popup-variant1', width:250, maxSize: 250,
- minSize: 250};
-
- this.add(center);
- this.add(east);
-
- if (this.mode == GeoNetwork.wms.BrowserPanel.WMSLIST) {
- this.treeGen = new GeoNetwork.tree.WMSListGenerator(
- {click: this.nodeClick, scope: this,
- node: this.treePanel.getRootNode(), wmsStore: this.wmsStore});
- } else if (this.mode == GeoNetwork.wms.BrowserPanel.ADDWMS) {
-
- new GeoNetwork.tree.WMSListGenerator(
- {click: this.nodeClick, scope: this,
- node: this.treePanel.getRootNode(), wmsStore: this.wmsStore});
-
- this.treeGen = new GeoNetwork.tree.WMSTreeGenerator(
- {click: this.nodeClick, callback: this.showTree, scope: this});
- }
-
- this.addButton(
- {
- text : OpenLayers.i18n("WMSBrowserAddButton"),
- iconCls : 'addLayerIcon',
- width : 150
- },
- this.addLayerToMap,
- this);
-
- this.doLayout();
- },
- /**
- * Method: createForm
- * Create form panel to search for services or add one
- * using URL.
- */
- createForm: function() {
- this.form = new Ext.form.FormPanel({
- labelWidth: 15,
- id : 'serviceSearchForm'
- });
-
- this.typeRadio = new Ext.form.RadioGroup({
- items : [ {
- name : 'addWmsType',
- fieldLabel : 'Search WMS', // TODO : translate
- labelSeparator: '',
- inputValue : 0,
- checked : true
- }, {
- name : 'addWmsType',
- labelSeparator: '',
- fieldLabel : ' or add by URL', // TODO : translate
- inputValue : 1
- }],
- listeners : {
- change : function (rg, checked) {
- var search = (checked.getGroupValue() == '0');
- this.urlField.setVisible(!search);
- this.searchField.setVisible(search);
- this.searchResultsGrid.setVisible(search);
- },
- scope : this
- }
- });
-
- this.form.add(this.typeRadio);
-
- this.urlField = new Ext.form.TextField({
- name: 'wmsurl',
- hideLabel : true,
- hidden : true,
- emptyText : 'WMS server URL ...', // TODO translate
- width: 250, autoHeight: true
- });
- this.form.add(this.urlField);
-
- var mdStore = GeoNetwork.data.MetadataResultsStore();
- var sStore = GeoNetwork.data.MetadataSummaryStore();
- this.searchField = new GeoNetwork.form.SearchField({
- name : 'E_any',
- hideLabel : true,
- width : 250,
- minWidth : 250,
- store : mdStore,
- triggerAction: function (scope) {
- scope.search('serviceSearchForm', null, null, 1, true, mdStore, sStore);
- },
- scope: catalogue
- });
- var checkboxSM = new Ext.grid.CheckboxSelectionModel({
- singleSelect: this.singleSelect,
- header: ''
- });
- this.searchResultsGrid = new Ext.grid.GridPanel({
- layout: 'fit',
- height: 80,
- border: false,
- store: mdStore,
- columns: [
- checkboxSM,
- {id: 'title', header: 'Title', dataIndex: 'title'}
- ],
- sm: checkboxSM,
- autoExpandColumn: 'title',
- listeners: {
- rowclick: function(grid, rowIndex, e) {
- var data = grid.getStore().getAt(rowIndex).data;
- this.setValue(data.links[0].href);
- },
- scope : this.urlField
- }
- });
-
- var wmsServiceField = new Ext.form.TextField({
- inputType : 'hidden',
- name : 'E_serviceType',
- value : 'OGC:WMS'
- });
-
- this.form.add(this.searchField, wmsServiceField, this.searchResultsGrid);
-
- this.parseBt = new Ext.Button({
- id: 'parse',
- text: OpenLayers.i18n("WMSBrowserConnectButton"),
- iconCls: 'connectIcon',
- width : 150
- });
- this.form.addButton(
- this.parseBt,
- this.getWMSCaps,
- this
- );
-
- },
- /**
- * Method: showTree
- * Show the treeview of 1 WMS when the layer structure has been loaded
- *
- * Parameters:
- * node - {} the newly created node
- */
- showTree: function(node, capability) {
- if (!node) {
- Ext.MessageBox.alert(OpenLayers.i18n("errorTitle"),
- OpenLayers.i18n("WMSBrowserConnectError"));
- this.body.dom.style.cursor = 'default';
- }
-
- var accessContraints = capability.service.accessContraints;
-
- if ((accessContraints) && (accessContraints.toLowerCase() != "none") &&
- (accessContraints != "-")) {
- var disclaimerWindow = new GeoNetwork.DisclaimerWindow({
- disclaimer: accessContraints
- });
- disclaimerWindow.show();
- disclaimerWindow = null;
- }
-
- var root = this.treePanel.getRootNode();
- // remove previous WMS node
- /*while(root.firstChild){
- root.removeChild(root.firstChild);
- }*/
- if (node) {
- this.treePanel.getRootNode().appendChild(node);
- }
- this.treePanel.show();
- this.body.dom.style.cursor = 'default';
- },
-
- /**
- * Method: getWMSCaps
- * Load the WMS Capabilities through the tree generator
- *
- * Parameters:
- * btn - {} the button pressed
- */
- getWMSCaps: function(btn) {
- var url = this.urlField.getValue();
- // trim the string
- url = url.replace(/^\s+|\s+$/g, '');
- if (url != '') {
- this.body.dom.style.cursor = 'wait';
- this.treeGen.loadWMS(url);
- }
- },
- /**
- * Method: setURL
- * Set URL of the WMS server and trigger the GetCapabilities
- *
- * Parameters:
- * url - {} the WMS server URL
- */
- setURL: function(url) {
- var url = this.urlField.setValue(url);
- this.typeRadio.setValue(1);
- this.getWMSCaps(this.parseBt);
- },
-
- /**
- * Method: nodeClick
- * When a node is clicked on, its preview needs to be shown
- *
- * Parameters:
- * node - {} the node clicked on
- */
- nodeClick: function(node) {
- this.previewPanel.showPreview(node.attributes.wmsLayer);
- },
-
- /**
- * Method: addLayerToMap
- * Add the WMS layer to the main map
- */
- addLayerToMap: function () {
- if (this.previewPanel.currentLayer) {
- var layerExists = GeoNetwork.OGCUtil.layerExistsInMap(
- this.previewPanel.currentLayer, this.map);
- if (!layerExists) {
- this.previewPanel.currentLayer.events.on({"loadstart": function() {
- this.isLoading = true;
- }});
-
- this.previewPanel.currentLayer.events.on({"loadend": function() {
- this.isLoading = false;
- }});
-
- this.map.addLayers([this.previewPanel.currentLayer]);
- } else {
- Ext.MessageBox.alert(OpenLayers.i18n("infoTitle"),
- OpenLayers.i18n("WMSBrowserDuplicateMsg"));
- }
- }
- }
-
-});
-
-Ext.reg('gn_wmsbrowserpanel', GeoNetwork.wms.BrowserPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerInfoPanel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerInfoPanel.js
deleted file mode 100644
index 94b732a7221..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerInfoPanel.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/widgets/wms/PreviewPanel.js
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.wms');
-
-/**
- * Class: GeoNetwork.wms.LayerInfoPanel
- * LayerInfoPanel groups together a infoPanel and a WMSPreviewPanel
- * to show WMS layer information.
- */
-
-/**
- * Constructor: GeoNetwork.wms.InfoLayerPanel
- * Create an instance of GeoNetwork.wms.InfoLayerPanel
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.wms.LayerInfoPanel = function (config) {
- Ext.apply(this, config);
- GeoNetwork.wms.LayerInfoPanel.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.wms.LayerInfoPanel, Ext.Panel, {
- /**
- * APIProperty: previewPanel
- * {} the panel used for previewing
- * WMS layers
- */
- previewPanel: null,
-
- /**
- * APIProperty: map
- * {} the map object
- */
- map: null,
-
- /**
- * APIProperty: previewCenterPoint
- * {} it preview can be centered on this point,
- * but defaults to the map center
- */
- previewCenterPoint: null,
-
- /**
- * APIProperty: onlineresource
- * {} onlineresource for GetCapabilities
- */
- onlineresource: null,
-
- /**
- * APIProperty: layer
- * {} layer to get WMS information
- */
- layer: null,
-
- /**
- * APIProperty: metadataId
- * {} catalogue metadata identifier
- */
- metadataId: null,
- /**
- * APIProperty: tpl
- * {} template to display capability information about the layer
- */
- tpl: null,
-
- /**
- * initComponent
- * Initialize this component
- */
- initComponent: function () {
- GeoNetwork.wms.LayerInfoPanel.superclass.initComponent.call(this);
-
- this.tpl = new Ext.XTemplate(
- '
'
- );
- this.layout = 'border';
- this.border = false;
-
- this.previewPanel = new GeoNetwork.wms.PreviewPanel(
- {map: this.map, previewCenterPoint: this.previewCenterPoint});
-
- this.infoPanel = new Ext.Panel();
- this.layerInfo = new GeoNetwork.wms.WMSLayerInfo(
- {callback: this._showLayerInfo, scope: this});
-
- var center = {region: 'center', layout: 'fit', items: [this.infoPanel],
- split: true, width: 300, minWidth: 300};
-
- var east = {region: 'east', items: [this.previewPanel], split: true,
- plain: true, cls: 'popup-variant1', width: 250, maxSize: 250,
- minSize: 250};
-
- this.add(center);
- this.add(east);
-
- this.doLayout();
- },
- showLayerInfo: function () {
- this.previewPanel.showPreview(this.layer);
- this.layerInfo.loadWMS(this.onlineresource, this.layer);
- },
- /**
- * Method: showLayerInfo
- * Show the layer information in the infoPanel when has been loaded
- *
- * Parameters:
- * layer - {} the newly created layer
- */
- _showLayerInfo: function (layer) {
- if (!layer) {
- GeoNetwork.Message().msg({
- title: OpenLayers.i18n('error'),
- msg: OpenLayers.i18n("WMSBrowserConnectError"),
- status: 'error',
- target: this.getId()
- });
- } else {
- layer.metadataId = this.metadataId || '';
- this.infoPanel.update(this.tpl.apply(layer));
- }
- this.body.dom.style.cursor = 'default';
- }
-});
-
-Ext.reg('gn_infolayerpanel', GeoNetwork.wms.LayerInfoPanel);
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerStylesPanel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerStylesPanel.js
deleted file mode 100644
index eeb26e5b86c..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/LayerStylesPanel.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/widgets/wms/PreviewPanel.js
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.wms');
-
-/**
- * Class: GeoNetwork.wms.LayerStylesPanel
- * LayerStylesPanel groups together a GridPanel and a WMSPreviewPanel
- * to show WMS layer styles information.
- */
-
-/**
- * Constructor: GeoNetwork.wms.LayerStylesPanel
- * Create an instance of GeoNetwork.wms.LayerStylesPanel
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.wms.LayerStylesPanel = function(config) {
- Ext.apply(this, config);
- GeoNetwork.wms.LayerStylesPanel.superclass.constructor.call(this);
-};
-
-
-Ext.extend(GeoNetwork.wms.LayerStylesPanel, Ext.Panel, {
-
- /**
- * APIProperty: previewPanel
- * {} the panel used for previewing
- * WMS layers
- */
- previewPanel: null,
-
- /**
- * APIProperty: map
- * {} the map object
- */
- map: null,
-
- /**
- * APIProperty: layer
- * {} layer to get WMS information
- */
- layer: null,
-
- /**
- * APIProperty: selectedStyle
- * {} selected style by user
- */
- selectedStyle: null,
-
- /**
- * APIProperty: selectedStyleLegendUrl
- * {} legend url for selected style by user
- */
-
- /**
- * initComponent
- * Initialize this component
- */
- initComponent: function() {
- GeoNetwork.wms.LayerStylesPanel.superclass.initComponent.call(this);
-
- this.layout = 'border';
- this.border = false;
-
- this.previewPanel = new GeoNetwork.wms.PreviewPanel(
- {map: this.map, title: OpenLayers.i18n("layerStylesPreviewTitle")});
-
- this.store = new Ext.data.SimpleStore({
- reader: new Ext.data.ArrayReader({}, [
- {name: 'name', type: 'string'},
- {name: 'title', type: 'string'},
- {name: 'legendUrl', type: 'string'}
- ]),
- fields: ['name', 'title', 'legendUrl']
- });
-
- // Grid to show layer WMS info
- this.gridPanel = new Ext.grid.GridPanel({
- title: "",
- border: false,
- autoScroll: true,
- store: this.store,
- hideHeaders: false,
- columns:
- [{header: "Style", width: 120, dataIndex: 'name', sortable: false},
- {id: 'description', header: "Description", width: 180, dataIndex: 'title', sortable: false}],
- autoExpandColumn: 'description'
- });
-
- this.gridPanel.on('rowclick', this._selectStyle, this);
-
- var center = {region: 'center', layout: 'fit', items: [this.gridPanel],
- split: true, width: 300, minWidth: 300};
-
- var east = {region: 'east', items: [this.previewPanel], split: true,
- plain: true, cls: 'popup-variant1', width:250, maxSize: 250,
- minSize: 250};
-
- this.add(center);
- this.add(east);
-
- this.doLayout();
-
- },
-
- showLayerStyles: function(layer) {
- var info = [];
-
- for(var i = 0; i < layer.styles.length; i++) {
- var legendUrl = '';
- if (layer.styles[i].legend) legendUrl = layer.styles[i].legend.href;
-
- var style = [layer.styles[i].name, layer.styles[i].title, legendUrl];
- info.push(style);
- }
-
- /*this.gridPanel.reconfigure(this.store, new Ext.grid.ColumnModel([
- {dataIndex: "name", sortable: true},
- {dataIndex: "title", sortable: true}
- ]));*/
-
- this.gridPanel.getStore().loadData(info);
- },
-
- _selectStyle: function(grid, rowIndex, e) {
- var rec = grid.store.getAt(rowIndex);
- this.selectedStyle = rec.get('name');
-
-
- grid.getView().focusEl.focus();
-
- var legendUrl = rec.get('legendUrl');
- if (legendUrl == '') return;
-
- legendUrl =unescape(legendUrl);
- this.selectedStyleLegendUrl = legendUrl;
- var legendUrlStyle = rec.get('legendUrl') + '&style=' + this.selectedStyle;
- this.previewPanel.showPreviewLegend(unescape(legendUrlStyle));
- }
-
-
-});
-
-Ext.reg('gn_layerstylespanel', GeoNetwork.wms.LayerStylesPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/PreviewPanel.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/PreviewPanel.js
deleted file mode 100644
index 09c148357fa..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/PreviewPanel.js
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/lang/nl.js
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.wms');
-
-/**
- * Class: GeoNetwork.wms.PreviewPanel
- * A panel to show a preview image of a WMS layer before it gets added to
- * the map. It uses a BoxComponent for the image itself.
- *
- * Inherits from:
- * - {Ext.Panel}
- */
-
-/**
- * Constructor: GeoNetwork.wms.PreviewPanel
- * Create an instance of GeoNetwork.wms.PreviewPanel
- *
- * Parameters:
- * config - {Object} A config object used to set the WMS preview
- * panel's properties.
- */
-GeoNetwork.wms.PreviewPanel = function(config){
- Ext.apply(this, config);
- GeoNetwork.wms.PreviewPanel.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.wms.PreviewPanel, Ext.Panel, {
-
- /**
- * APIProperty: title
- * {String} The title to use in the header of the preview panel
- */
- title: OpenLayers.i18n("WMSBrowserPreviewTitle"),
-
- /**
- * APIProperty: baseCls
- * {String} The base CSS class to apply to this panel's element
- * (defaults to 'x-plain').
- */
- baseCls: 'x-plain',
-
- /**
- * APIProperty: cls
- * {String} An optional extra CSS class that will be added to this
- * component's Element (defaults to 'x-panel-title-variant1').
- */
- cls: 'x-panel-title-variant1',
-
- /**
- * APIProperty: imgCls
- * {String} css class to put on the (defaults to 'preview-image')
- */
- imgCls: 'preview-image',
-
- /**
- * APIProperty: width
- * {Integer} the width of this panel (defaults to 250)
- */
- width: 250,
-
- /**
- * APIProperty: height
- * {Integer} the height of this panel (defaults to 250)
- */
- height: 250,
-
- /**
- * APIProperty: currentLayer
- * {} the current layer being previewed
- */
- currentLayer: null,
-
- /**
- * Method: initComponent
- * Initializes this component
- */
- initComponent: function() {
- GeoNetwork.wms.PreviewPanel.superclass.initComponent.call(this);
- this.image = new Ext.BoxComponent({autoEl: {tag: 'img',
- 'class': this.imgCls, src: Ext.BLANK_IMAGE_URL,
- width: this.width, height: this.height}});
- this.add(this.image);
- },
-
- /**
- * Method: hideMask
- * Hides the Ext.LoadMask
- */
- hideMask: function() {
- if (this.mask) {
- this.mask.hide();
- }
- },
-
- /**
- * Method: showMask
- * Shows the Ext.LoadMask
- */
- showMask: function() {
- if (!this.mask) {
- this.mask = new Ext.LoadMask(this.getEl(), {
- msg: OpenLayers.i18n("WMSBrowserPreviewWaitMsg")});
- Ext.EventManager.addListener(this.image.getEl(), 'load',
- this.hideMask, this);
- Ext.EventManager.addListener(this.image.getEl(), 'error',
- this.hideMask, this);
- }
- this.mask.show();
- },
-
- /**
- * Method: calculateBBOX
- * Calculate the BBOX to use for the preview, based on scales etc.
- *
- * Parameters:
- * layer - {}
- *
- * Returns:
- * {String} the BBOX parameter as a string
- */
- calculateBBOX: function(layer) {
- var bbox;
- var reverseAxisOrder = (parseFloat(layer.params.VERSION)>=1.3);
-
- if (layer.llbbox) {
- if (this.map.getProjection() !== 'EPSG:4326') {
- // reproject the latlon boundingbox to the map projection
- var llbounds = OpenLayers.Bounds.fromArray(layer.llbbox);
- llbounds = llbounds.transform(new OpenLayers.Projection('EPSG:4326'),
- this.map.getProjectionObject() );
- bbox = llbounds.toArray(reverseAxisOrder);
- } else {
- var llbounds = OpenLayers.Bounds.fromArray(layer.llbbox);
- bbox = llbounds.toArray(reverseAxisOrder);
- }
- } else {
- bbox = this.map.maxExtent.toArray(reverseAxisOrder);
- }
- var center = OpenLayers.Bounds.fromArray(bbox).getCenterLonLat();
- // change the bbox so that the WMS returns an image that is inside
- // the scale-range of the layer
- if (layer.minScale > 0) {
- var midScale;
- if (layer.maxScale > 0) {
- midScale = (parseFloat(layer.maxScale) + parseFloat(layer.minScale)) / 2;
- }
- else {
- // take less than 100%, because of small differences in
- // calculating WMS scales
- midScale = 0.9 * parseFloat(layer.minScale);
- }
- // determine the new bbox based on the center
- // and scale range of the WMS Layer
- var res = OpenLayers.Util.getResolutionFromScale(midScale,
- this.map.units);
- var dX = Math.round(res * this.width);
- var dY = Math.round(res * this.height);
- var cX = center.lon;
- var cY = center.lat;
- if (dX !== 0 && dY !== 0) {
- if (reverseAxisOrder) {
- bbox = [cY - 0.5*dY, cX - 0.5*dX, cY + 0.5*dY, cX + 0.5*dX];
- } else {
- bbox = [cX - 0.5*dX, cY - 0.5*dY, cX + 0.5*dX, cY + 0.5*dY];
- }
- }
- }
- return bbox.join(",");
- },
-
- /**
- * APIMethod: showPreview
- * Shows a preview image of the WMS layer
- *
- * Parameters:
- * layer - {}
- */
- showPreview : function (layer){
- if (!layer) {
- return;
- }
- this.showMask();
-
- // if the layer has not been added to the map yet, we need to set its
- // map property otherwise getFullRequestString will not work.
- var previousMap = layer.map;
- if (previousMap === null) {
- layer.map = this.map;
- }
-
- var url = layer.getFullRequestString({
- BBOX: this.calculateBBOX(layer),
- WIDTH: this.width,
- HEIGHT: this.height
- });
-
- if (previousMap === null) {
- layer.map = previousMap;
- }
-
- this.currentLayer = layer;
- this.image.getEl().dom.src = url;
- },
-
- showPreviewLegend : function (urlLegend) {
- this.remove(this.image);
- this.image = null;
-
- this.image = new Ext.BoxComponent({autoEl: {tag: 'img',
- 'class': this.imgCls, src: urlLegend}});
- this.add(this.image);
-
- this.doLayout();
- }
-});
-
-Ext.reg('gn_wmspreview', GeoNetwork.wms.PreviewPanel);
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/WMSLayerInfo.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/WMSLayerInfo.js
deleted file mode 100644
index 5b44aff71c2..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/widgets/wms/WMSLayerInfo.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork', 'GeoNetwork.wms');
-
-/**
- * Class: GeoNetwork.wms.WMSLayerInfo
- * Gets an OpenLayers.Layer.WMS with WMS information related
- *
- */
-
-/**
- * Constructor: GeoNetwork.wms.WMSLayerInfo
- * Create an instance of GeoNetwork.wms.WMSLayerInfo
- *
- * Parameters:
- * config - {Object} A config object used to set the properties
- */
-GeoNetwork.wms.WMSLayerInfo = function(config) {
- Ext.apply(this, config);
-};
-
-GeoNetwork.wms.WMSLayerInfo.prototype = {
-
- /**
- * APIProperty: layerParams
- * {Object} - a set of URL parameters to use on the OpenLayers.Layer.WMS
- * layers
- */
- layerParams: {format:'image/png', transparent:'TRUE'},
-
- /**
- * APIProperty: layerOptions
- * {Object} - a set of options to use on the OpenLayers.Layer.WMS
- * layers
- */
- layerOptions: {ratio:1, singleTile: true, isBaseLayer: false},
-
- /**
- * APIProperty: callback
- * {Function} callback function to use when the Layer is ready
- */
- callback: null,
-
- /**
- * APIProperty: scope
- * {Object} scope to use for the click and the callback function
- */
- scope: null,
-
- /**
- * APIProperty: layer
- * {Object} layer to get information from WMS Capabilities
- */
- layer: null,
-
- /**
- * APIMethod: loadWMS
- * load a WMS layer list and return the WMS layer requested through a callback
- * function
- *
- * Parameters:
- * onlineResource - {String} the online resource / base url of the WMS
- */
- loadWMS: function(onlineResource, layer) {
- this.layer = layer;
-
- var onlineResourceCheck = onlineResource.toLowerCase();
-
- var containsVersion = (onlineResourceCheck.indexOf('version=') > -1);
- var containsService = (onlineResourceCheck.indexOf('service=wms') > -1);
- var containsRequest = (onlineResourceCheck.indexOf('request=getcapabilities') > -1);
- var containsLanguage = (onlineResourceCheck.indexOf('language=') > -1);
-
- var params = {};
-
- if (!containsVersion) {
- params['version'] = GeoNetwork.OGCUtil.getProtocolVersion();
- }
-
- if (!containsService) {
- params['service'] = 'WMS';
- }
-
- if (!containsRequest) {
- params['request'] = 'GetCapabilities';
- }
-
- if (!containsLanguage) {
- params['language'] = GeoNetwork.OGCUtil.getLanguage();
- }
-
- var paramString = OpenLayers.Util.getParameterString(params);
- var separator = (onlineResource.indexOf('?') > -1) ? '&' : '?';
- onlineResource += separator + paramString;
- var req = Ext.Ajax.request({
- url: onlineResource,
- method: 'GET',
- failure: this.processFailure,
- success: this.processSuccess,
- timeout: 10000,
- //disableCaching: false,
- scope: this
- });
- },
-
- /**
- * Method: processSuccess
- * Process the WMS GetCapabilities response
- *
- * Parameters:
- * response - {Object} The XHR object which contains the parsed XML doc
- */
- processSuccess: function(response) {
- if (!this.parser) {
- this.parser = new OpenLayers.Format.WMSCapabilities();
- }
- var caps = this.parser.read(response.responseXML || response.responseText);
- var node;
- if (caps.capability) {
- node = this.processLayers(caps, caps.capability.nestedLayers);
- }
- // return the newly created Layer through a callback function
- Ext.callback(this.callback, this.scope, [node, this.layer]);
- },
-
- /**
- * Method: processFailure
- * Process the WMS GetCapabilities response when failed
- *
- * Parameters:
- * response - {Object} The XHR object which contains the parsed XML doc
- */
- processFailure: function(response) {
- Ext.callback(this.callback, this.scope, [null, this.layer]);
- },
-
- /**
- * APIMethod: createWMSLayer
- * create a OpenLayers.Layer.WMS from parameters
- *
- * Parameters:
- * layer - {Object} an object with the layer's properties
- * url - {String} the url at which the layer is available
- *
- * Returns: {} the layer created
- */
- createWMSLayer: function(layer, url) {
- return new OpenLayers.Layer.WMS(layer.title, url,
- OpenLayers.Util.extend({layers: layer.name}, this.layerParams),
- OpenLayers.Util.extend({minScale: layer.minScale,
- queryable: layer.queryable, maxScale: layer.maxScale,
- description: layer["abstract"],
- keywords: layer.keywords,
- metadataURLs: layer.metadataURLs,
- metadataURL: layer.metadataURL,
- llbbox: layer.llbbox},
- this.layerOptions));
- },
-
- /**
- * Method: processLayer
- * Recursive function to process a layer and their childLayers in the
- * capabilities doc, searching for requested layer
- *
- * Parameters:
- * caps - {Object} capabilities from the WMSCapabilities parser
- * layers - {Object} list of layers objects from the WMSCapabilities parser
- */
- processLayers: function(caps, layers) {
- var findedLayer = null;
-
- for (var i = 0, len = layers.length; i < len; ++i) {
- var lr = layers[i];
-
- try {
- var layerName = lr.name.split(",");
- if (layerName.indexOf(this.layer.params.LAYERS) != -1) {
- findedLayer = this.createWMSLayer(lr, caps.service.href);
- break;
- }
- } catch(e) {
- }
-
- if (typeof(lr.nestedLayers) != "undefined") {
- findedLayer = this.processLayers(caps, lr.nestedLayers);
- if (findedLayer != null) break;
- }
-
- } // for
-
- return findedLayer;
- }
-};
\ No newline at end of file
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMS.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMS.js
deleted file mode 100644
index 916cbb733d5..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMS.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.AddWmsWindow Window to load WMS layers in map application
- *
- * Inherits from: - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.AddWmsWindow Create an instance of
- * GeoNetwork.AddWmsWindow
- *
- * Parameters: config - {Object} A config object used to set the addwmslayer
- * window's properties.
- */
-GeoNetwork.AddWmsLayerWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.AddWmsLayerWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.AddWmsLayerWindow, GeoNetwork.BaseWindow, {
-
- iconCls: 'addLayerIcon',
- browserPanel : null,
- /**
- * Method: init Initialize this component.
- */
- initComponent : function() {
-
- GeoNetwork.AddWmsLayerWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("addWMSWindowTitle");
-
- this.width = 600;
- this.height = 500;
-
- var ds = new Ext.data.Store( {
- data : GeoNetwork.WMSList,
- reader : new Ext.data.ArrayReader( {}, [ {
- name : 'title'
- }, {
- name : 'url'
- } ])
- });
-
- this.browserPanel = {
- id : this.id + 'wmsbrowserpanel',
- xtype : 'gn_wmsbrowserpanel',
- mode : GeoNetwork.wms.BrowserPanel.ADDWMS,
- wmsStore : ds,
- map : this.map
- };
-
- var tabs = new Ext.Panel( {
- border : false,
- deferredRender : false,
- layout : 'fit',
- items : [
- /*
- * {xtype: 'gn_wmsbrowserpanel', title:
- * OpenLayers.i18n("WMSBrowserTab1"), wmsStore: ds, map: map},
- */
- /*
- * {title: OpenLayers.i18n("WMSBrowserTab3"), xtype:
- * 'gn_wmsbrowserpanel', mode: GeoNetwork.wms.BrowserPanel.ADDWMS,
- * map: this.map}
- */
- this.browserPanel
- ]
- });
-
- this.add(tabs);
-
- this.doLayout();
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMTS.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMTS.js
deleted file mode 100644
index 1f35bc97587..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/AddWMTS.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2012 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.AddWmtsWindow Window to load WMTS layers in map application
- *
- * Inherits from: - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.AddWmsWindow Create an instance of
- * GeoNetwork.AddWmtsWindow
- *
- * Parameters: config - {Object} A config object used to set the addwmtslayer
- * window's properties.
- */
-GeoNetwork.AddWmtsLayerWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.AddWmtsLayerWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.AddWmtsLayerWindow, GeoNetwork.BaseWindow, {
-
- iconCls: 'addLayerWindow',
- browserPanel : null,
- /**
- * Method: init Initialize this component.
- */
- initComponent : function() {
-
- GeoNetwork.AddWmsLayerWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("addWMSWindowTitle");
-
- this.width = 600;
- this.height = 500;
-
- var ds = new Ext.data.Store( {
- data : GeoNetwork.WMSList,
- reader : new Ext.data.ArrayReader( {}, [ {
- name : 'title'
- }, {
- name : 'url'
- } ])
- });
-
- this.browserPanel = {
- id : this.id + 'wmtsbrowserpanel',
- xtype : 'gn_wmsbrowserpanel',
- mode : GeoNetwork.wms.BrowserPanel.ADDWMTS,
- wmsStore : ds,
- map : this.map
- };
-
-
- var tabs = new Ext.Panel( {
- border : false,
- deferredRender : false,
- layout : 'fit',
- items : [
- this.browserPanel
- ]
- });
-
- this.add(tabs);
-
- this.doLayout();
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/BaseWindow.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/BaseWindow.js
deleted file mode 100644
index fa40ae0d0af..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/BaseWindow.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.BaseWindow
- * Base window to set custom properties of application windows.
- * All application windows must inherit from this class
- *
- * Inherits from:
- * - {Ext.Window}
- */
-
-/**
- * Constructor: GeoNetwork.BaseWindow
- * Create an instance of GeoNetwork.BaseWindow
- *
- * Parameters:
- * config - {Object} A config object used to set
- * window's properties.
- */
-GeoNetwork.BaseWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.BaseWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.BaseWindow, Ext.Window, {
-
- /**
- * APIProperty: map
- * {}
- */
- map: null,
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.BaseWindow.superclass.initComponent.call(this);
-
- this.constrainHeader = true;
- this.collapsible = true;
- this.layout = 'fit';
- this.plain = true;
- this.stateful = false;
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Disclaimer.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Disclaimer.js
deleted file mode 100644
index acada3048d1..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Disclaimer.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.DisclaimerWindow
- * Window to show the disclaimer of a WMS Capabilities.
- *
- * Inherits from:
- * - {Ext.Window}
- */
-
-/**
- * Constructor: GeoNetwork.DisclaimerWindow
- * Create an instance of GeoNetwork.DisclaimerWindow
- *
- * Parameters:
- * config - {Object} A config object used to set
- * window's properties.
- */
-GeoNetwork.DisclaimerWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.DisclaimerWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.DisclaimerWindow, Ext.Window, {
-
- /**
- * APIProperty: disclaimer to show
- * {}
- */
- disclaimer: null,
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.BaseWindow.superclass.initComponent.call(this);
-
- this.id = "disclaimerwindow";
- this.constrainHeader = true;
- this.layout = 'fit';
- this.plain = true;
- this.stateful = false;
- this.title = OpenLayers.i18n("disclaimer.windowTitle");
- this.minWidth = 440;
- this.minHeight = 280;
- this.width = 440;
- this.height = 280;
- this.autoScroll = true;
- this.modal = true;
-
- this.addButton(OpenLayers.i18n("disclaimer.buttonClose"),
- function(){
- this.close();
- }, this);
-
- if (OpenLayers.String.startsWith(this.disclaimer, "http://")) {
- this.on("show", this.showDisclaimerUrl);
-
- } else {
- var textArea = new Ext.form.TextArea({
- hideLabel: true,
- name: 'msg',
- value: this.disclaimer,
- anchor: '100% -53', // anchor width by percentage and height by raw adjustment
- enableKeyEvents: true,
- listeners: {'keydown': function(field, event)
- {
- // We let copy text
- if (!(event.getKey() == 67 && event.ctrlKey)){
- event.stopEvent();
- }
- }
- }
-
- });
-
- this.add(textArea);
- }
-
- this.doLayout();
- },
-
- /**
- * Method: init
- * Loads the disclaimer url in the window
- */
- showDisclaimerUrl: function() {
- this.load({
- url: OpenLayers.ProxyHost + this.disclaimer,
- text: OpenLayers.i18n("disclaimer.loading"),
- timeout: 30,
- scripts: false});
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/FeatureInfo.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/FeatureInfo.js
deleted file mode 100644
index ae94fb878d0..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/FeatureInfo.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.LoadWmcWindow
- * Window to load WMS layers in map application
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.FeatureInfoWindow
- * Create an instance of GeoNetwork.FeatureInfoWindow
- *
- * Parameters:
- * config - {Object} A config object used to set the addwmslayer
- * window's properties.
- */
-GeoNetwork.FeatureInfoWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.FeatureInfoWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.FeatureInfoWindow, GeoNetwork.BaseWindow, {
-
- control: null,
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.FeatureInfoWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("featureInfoWindow.windowTitle");
-
- this.width = 600;
- this.height = 250;
-
- this.cls = 'popup-variant1';
-
- var fp = new GeoNetwork.FeatureInfoPanel();
-
- this.add(fp);
-
- this.doLayout();
- },
-
- setFeatures: function(featureList) {
- this.items.items[0].showFeatures(featureList);
- },
-
- setMap: function(map) {
- this.items.items[0].setMap(map);
- }
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LayerStyles.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LayerStyles.js
deleted file mode 100644
index d24d08b88d1..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LayerStyles.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.LayerStylesWindow
- * Window to let the user select a named layer style
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.LayerStylesWindow
- * Create an instance of GeoNetwork.LayerStylesWindow
- *
- * Parameters:
- * config - {Object} A config object used to set the addwmslayer
- * window's properties.
- */
-GeoNetwork.LayerStylesWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.LayerStylesWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.LayerStylesWindow, GeoNetwork.BaseWindow, {
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.LayerStylesWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("layerStylesWindowTitle");
-
- this.width = 575;
- this.height = 300;
-
- this.layerStylesPanel = new GeoNetwork.wms.LayerStylesPanel({
- map: this.map
- });
-
- this.add(this.layerStylesPanel);
-
- this.addButton(OpenLayers.i18n("selectStyleButton"),
- this._selectStyle, this);
-
- this.doLayout();
- },
-
- showLayerStyles: function(layer) {
- this.layer = layer;
- this.layerStylesPanel.showLayerStyles(layer);
- },
-
- _selectStyle: function() {
- this.layer.mergeNewParams({styles: this.layerStylesPanel.selectedStyle});
- this.layer.legendURL = this.layerStylesPanel.selectedStyleLegendUrl;
-
- }
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LoadWmc.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LoadWmc.js
deleted file mode 100644
index 9d618c5f2c4..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/LoadWmc.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.LoadWmcWindow
- * Window to load WMS layers in map application
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.LoadWmcWindow
- * Create an instance of GeoNetwork.LoadWmcWindow
- *
- * Parameters:
- * config - {Object} A config object used to set the addwmslayer
- * window's properties.
- */
-GeoNetwork.LoadWmcWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.LoadWmcWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.LoadWmcWindow, GeoNetwork.BaseWindow, {
-
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.LoadWmcWindow.superclass.initComponent.call(this);
-
- //Ext.QuickTips.init();
- this.width = 480;
-
- this.title = this.title || OpenLayers.i18n("selectWMCFile.windowTitle");
-
- this.resizable = false;
-
- this.charset = "UTF-8";
-
- var fp = new Ext.FormPanel({
- //renderTo: 'form_wmc',
- fileUpload: true,
- //width: 420,
- height: 100,
- bodyStyle: 'padding: 10px 10px 0 10px;',
- labelWidth: 0,
- plain: true,
- frame: true,
- border: false,
- defaults: {
- anchor: '90%',
- msgTarget: 'side',
- allowBlank: false
- },
- items: [
- {
- xtype: 'fileuploadfield',
- id: 'form-file',
- width: 120,
- emptyText: OpenLayers.i18n("selectWMCFile"),
- hideLabel : true,
- buttonText: '',
- name: 'Fileconten',
- buttonCfg: {
- text: '',
- iconCls: 'selectfile'
- }
- }
- ],
- buttons: [{
- text: OpenLayers.i18n("selectWMCFile.loadButtonText"),
- scope: this,
- handler: function() {
- if (fp.getForm().isValid()) {
- fp.getForm().submit({
- url: '../../wmc/load.wmc',
- success: this.onSuccessLoad,
- failure: this.onFailure,
- scope: this
- });
- }
- }
- },{
- text: OpenLayers.i18n("selectWMCFile.mergeButtonText"),
- scope: this,
- handler: function() {
- if (fp.getForm().isValid()) {
- fp.getForm().submit({
- url: '../../wmc/load.wmc',
- success: this.onSuccessMerge,
- failure: this.onFailure,
- scope: this
- });
- }
- }
- }]
- });
-
- this.add(fp);
-
- this.doLayout();
- },
-
- onSuccessLoad: function(form, action) {
- var json = action.response.responseText;
- var o = Ext.decode(json);
- if (o.success) {
- var cb = OpenLayers.Function.bind(this.parseWMCLoad, this);
- OpenLayers.Request.GET({
- url: o.url,
- scope: this,
- callback: cb
- });
- } else {
- this.onAjaxFailure();
- }
- },
-
- onSuccessMerge: function(form, action) {
- var json = action.response.responseText;
- var o = Ext.decode(json);
- if (o.success) {
- var cb = OpenLayers.Function.bind(this.parseWMCMerge, this);
- OpenLayers.loadURL(o.url, null, null, cb);
- } else {
- this.onAjaxFailure();
- }
- },
-
- onFailure: function(form, action) {
- Ext.MessageBox.show({icon: Ext.MessageBox.ERROR,
- title: OpenLayers.i18n("errorTitle"), msg:
- OpenLayers.i18n("InvalidWMC"),
- buttons: Ext.MessageBox.OK});
- },
-
- /**
- * parseWMCLoad
- * Load the WMC and close the dialog
- *
- * Parameters:
- * response - {}
- */
- parseWMCLoad: function(response)
- {
- GeoNetwork.WMCManager.loadWmc(this.map, response.responseText);
- Ext.WindowMgr.getActive().close();
- },
-
- /**
- * parseWMCMerge
- * Merge the WMC and close the dialog
- *
- * Parameters:
- * response - {}
- */
- parseWMCMerge: function(response)
- {
- GeoNetwork.WMCManager.mergeWmc(this.map, response.responseText);
- Ext.WindowMgr.getActive().close();
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Opacity.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Opacity.js
deleted file mode 100644
index b17c927f78b..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/Opacity.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.OpacityWindow
- * Window to show a slider to select opacity for layers
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.OpacityWindow
- * Create an instance of GeoNetwork.OpacityWindow
- *
- * Parameters:
- * config - {Object} A config object used to set the opacity
- * window's properties.
- */
-GeoNetwork.OpacityWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.OpacityWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.OpacityWindow, GeoNetwork.BaseWindow, {
-
- /**
- * APIProperty: layer
- * {}
- */
- layer: null,
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.OpacityWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("opacityWindowTitle");
- this.width = 200;
- this.height = 100;
-
- this.opacitySlider = new GeoNetwork.OpacitySlider({layer: this.layer, selModel: this.selMode});
-
- this.add(this.opacitySlider);
-
- this.doLayout();
- },
-
- setLayer: function(layer) {
- this.opacitySlider.setLayer(layer);
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/SingletonWindowManager.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/SingletonWindowManager.js
deleted file mode 100644
index 55606b10cae..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/SingletonWindowManager.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.SingletonWindowManager
- * Singleton window manager for windows
- *
- */
-GeoNetwork.SingletonWindowManager = function() {
- // private
- var windowsList = new Object(); // Associative array
- var hiddenWindows = new Array();
-
- // public
- return {
- registerWindow: function(id, classz, configz) {
- var window1 = new classz(configz);
-
- windowsList[id] = {windowz: window1, classz: classz, configz: configz};
- },
-
- getWindow: function(id) {
- if (windowsList[id]) {
- return windowsList[id].windowz;
- } else {
- return null;
- }
- },
-
- showWindow: function(id) {
- if (windowsList[id]) {
- if (Ext.isEmpty(Ext.getCmp(id))) {
- var w = windowsList[id];
-
- var ww = new w.classz(w.configz);
-
- windowsList[id] = {windowz: ww, classz: w.classz, configz: w.configz};
- }
- windowsList[id].windowz.show();
- return true;
- } else {
- return false;
- }
- },
-
- hideAllWindows: function() {
- for(key in windowsList) {
- if (windowsList[key].windowz.isVisible()) {
- windowsList[key].windowz.setVisible(false);
- hiddenWindows[hiddenWindows.length] = key;
- }
- }
- },
-
- restoreHiddenWindows: function() {
- for (var index = 0, len = hiddenWindows.length; index < len; ++index) {
- windowsList[hiddenWindows[index]].windowz.setVisible(true);
- }
- hiddenWindows = new Array();
- }
-
-
- };
-};
-
-GeoNetwork.WindowManager = new GeoNetwork.SingletonWindowManager();
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WMSTime.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WMSTime.js
deleted file mode 100644
index dfbb6fcb7f2..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WMSTime.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.WMSTimeWindow
- * Windows to show the time selector for time-aware WMS layers
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.WMSTimeWindow
- * Create an instance of GeoNetwork.WMSTimeWindow
- *
- * Parameters:
- * config - {Object}
- */
-GeoNetwork.WMSTimeWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.WMSTimeWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.WMSTimeWindow, GeoNetwork.BaseWindow, {
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.WMSTimeWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("WMSTimeWindowTitle");
-
- this.width = 450;
- this.height = 300;
-
- this.timeSelector = new GeoNetwork.TimeSelector({bodyStyle: 'padding: 10px 10px 0 10px;'});
- this.add(this.timeSelector);
-
- this.doLayout();
- },
-
- /**
- * APIMethod: setLayer
- * Attach a layer to the components of this window
- *
- * Parameters:
- * layer - {}
- */
- setLayer: function(layer) {
- this.timeSelector.setLayer(layer);
- }
-
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WmsLayerMetadata.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WmsLayerMetadata.js
deleted file mode 100644
index dfc12e86490..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/map/windows/WmsLayerMetadata.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2009 GeoNetwork
- *
- * This file is part of GeoNetwork
- *
- * GeoNetwork is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GeoNetwork is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GeoNetwork. If not, see .
- */
-
-/**
- * @requires GeoNetwork/windows/BaseWindow.js
- */
-
-Ext.namespace('GeoNetwork');
-
-/**
- * Class: GeoNetwork.AddWmsWindow
- * Window to load WMS layers in map application
- *
- * Inherits from:
- * - {GeoNetwork.BaseWindow}
- */
-
-/**
- * Constructor: GeoNetwork.AddWmsWindow
- * Create an instance of GeoNetwork.AddWmsWindow
- *
- * Parameters:
- * config - {Object} A config object used to set the addwmslayer
- * window's properties.
- */
-GeoNetwork.WmsLayerMetadataWindow = function(config) {
- Ext.apply(this, config);
- GeoNetwork.WmsLayerMetadataWindow.superclass.constructor.call(this);
-};
-
-Ext.extend(GeoNetwork.WmsLayerMetadataWindow, GeoNetwork.BaseWindow, {
-
- /**
- * APIProperty: layer
- * {}
- */
- layer: null,
-
- /**
- * Method: init
- * Initialize this component.
- */
- initComponent: function() {
- GeoNetwork.WmsLayerMetadataWindow.superclass.initComponent.call(this);
-
- this.title = this.title || OpenLayers.i18n("layerInfoPanel.windowTitle");
-
- this.width = 575;
- this.height = 300;
-
- this.infoLayerPanel = new GeoNetwork.wms.LayerInfoPanel({
- map: this.map /*,
- layer: this.layer,
- onlineresource: this.layer.url */
- });
-
- this.add(this.infoLayerPanel);
-
- this.doLayout();
- },
-
- showLayerInfo: function(layer) {
- this.infoLayerPanel.layer = layer;
- this.infoLayerPanel.metadataId = layer.options.metadata_id;
- this.infoLayerPanel.onlineresource = layer.url;
- this.infoLayerPanel.showLayerInfo();
- }
-});
diff --git a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/util/CSWSearchTools.js b/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/util/CSWSearchTools.js
deleted file mode 100644
index 5cf823532e6..00000000000
--- a/web-client/src/main/resources/apps/js/GeoNetwork/lib/GeoNetwork/util/CSWSearchTools.js
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Copyright (C) 2001-2011 Food and Agriculture Organization of the
- * United Nations (FAO-UN), United Nations World Food Programme (WFP)
- * and United Nations Environment Programme (UNEP)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,
- * Rome - Italy. email: geonetwork@osgeo.org
- */
-Ext.namespace("GeoNetwork.util");
-
-
-/** api: (define)
- * module = GeoNetwork.util
- * class = CSWSearchTools
- */
-/** api: example
- * CSWSearchTools is used to build CSW queries from an Ext form
- * and send GET or POST queries to a CSW server.
- *
- * Results could be:
- *
- * * processed using OpenLayers.Format.CSWGetRecords using a onSucess function
- * * or automatically loaded into the catalogue results store
- *
- * .. code-block:: javascript
- *
- * GeoNetwork.util.CSWSearchTools.doCSWQueryFromForm(this.formId, this.catalogue, 1, this.showResults, null, Ext.emptyFn);
- * ...
- * showResults: function(response) {
- * var getRecordsFormat = new OpenLayers.Format.CSWGetRecords.v2_0_2();
- * var r = getRecordsFormat.read(response.responseText);
- * var values = r.records;
- * ...
- * }
- *
- */
-GeoNetwork.util.CSWSearchTools = {
- /**
- * Default method used.
- */
- cswMethod: 'POST',
-
- /**
- * Define results mode. "results_with_summary" is used
- * to have GeoNetwork specific result mode.
- */
- //resultsMode: 'results',
- resultsMode: 'results_with_summary',
- sortBy: '',
- maxRecords: '50',
-
- /** api:method[doCSWQueryFromForm]
- *
- * :param formId: ``String`` Form identifier
- * :param cat: ``GeoNetwork.Catalogue`` Catalogue to query
- * :param recordNum: ``Number`` Optional start record number
- * :param onSuccess: ``Function`` Optional function to trigger in case of success
- * :param onFailure: ``Function`` Optional function to trigger in case of failure
- * :param addFilters: ``Function`` Not really used ?
- *
- *
- * Send a GET or POST query to CSW server url. A form is composed of one
- * or more fields which are processed by buildCSWQueryFromForm.
- *
- */
- doCSWQueryFromForm: function(formId, cat, recordNum, onSuccess, onFailure, addFilters){
- var url = cat.services.csw;
- var query = GeoNetwork.util.CSWSearchTools.buildCSWQueryFromForm(GeoNetwork.util.CSWSearchTools.cswMethod, Ext.getCmp(formId), recordNum, GeoNetwork.util.CSWSearchTools.sortBy, addFilters);
-
- if (GeoNetwork.util.CSWSearchTools.cswMethod === 'POST') {
- var getQuery = GeoNetwork.util.CSWSearchTools.buildCSWQueryFromForm('GET', Ext.getCmp(formId), recordNum, GeoNetwork.util.CSWSearchTools.sortBy, addFilters);
- OpenLayers.Request.POST({
- url: url,
- data: query,
- success: function(result){
- // TODO : improve
- var getRecordsFormat = new OpenLayers.Format.CSWGetRecords.v2_0_2();
- cat.currentRecords = getRecordsFormat.read(result.responseText);
-
- var values = cat.currentRecords.records;
- if (values.length > 0) {
- cat.metadataCSWStore.loadData(cat.currentRecords);
- }
-
- if (onSuccess) {
- onSuccess(result, getQuery);
- }
- },
- failure: onFailure
- });
- } else {
- OpenLayers.Request.GET({
- url: url,
- params: query,
- success: function(result){
- onSuccess(result, query);
- },
- failure: onFailure
- });
- }
- },
-
-
- /** api:method[buildCSWQueryFromForm]
- * :param method: GET or POST method
- * :param formId: ``String`` Form identifier
- * :param startRecord: ``Number`` Optional start record number
- * :param sortBy: ``String`` Optional sort by option
- * :param addFilters: ``Function`` Not really used ?
- *
- *
- * Build a CSW query.
- *
- * It's assumed the field name follow a convention. It starts with a letter,
- * followed by an underscore. The letters are:
- *
- * * S: Starts with
- * * C: Contains
- * * B: Booleancon
- * * E: Equals
- * * T: Equals with words separated by spaces that must be all present
- * * E##: Equals with a specified similarity
- * * G: Geometry by ID
- * * V: field name specified in the value, separated by a '/' with the value
- * * >=: bigger or equal
- * * <=: smaller or equal
- *
- * If it starts with '[', it means its a list of values separated by ',' (ORed)
- *
- */
- buildCSWQueryFromForm: function(method, form, startRecord, sortBy, addFilters){
- var values = GeoNetwork.util.CSWSearchTools.getFormValues(form);
- var filters = [];
-
- GeoNetwork.util.CSWSearchTools.addFiltersFromPropertyMap(values, filters);
-
- addFilters(values, filters);
- if (filters.length === 0) {
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.LIKE,
- property: "anyText",
- value: ".*"
- }));
- }
-
- var and = new OpenLayers.Filter.Logical({
- type: OpenLayers.Filter.Logical.AND,
- filters: filters
- });
-
- if (method === 'POST') {
- return GeoNetwork.util.CSWSearchTools.buildCSWQueryPOST(and, startRecord, sortBy);
- } else {
- return GeoNetwork.util.CSWSearchTools.buildCSWQueryGET(and, startRecord, sortBy);
- }
- },
-
- /** private: method[addFiltersFromPropertyMap]
- * Add property in an OGC filter
- */
- addFiltersFromPropertyMap: function(values, filters){
-
- // TODO : we should probably extend Filter and add similarity as an attribute
- // to CSW clause (like the matchCase attribute).
- var defaultSimilarity = ".8",
- similarity = values.E_similarity,
- key;
- if (similarity !== null && similarity !== undefined) {
- defaultSimilarity = values.E_similarity;
- GeoNetwork.util.CSWSearchTools.addFilter(filters, 'E_similarity', defaultSimilarity, defaultSimilarity);
- }
-
- for (key in values) {
- if (values.hasOwnProperty(key)) {
- var value = values[key];
- if (value !== "" && key !== 'E_similarity') {
- GeoNetwork.util.CSWSearchTools.addFilter(filters, key, value, defaultSimilarity);
- }
- }
- }
- },
- /** private: method[addFilter]
- *
- */
- addFilter: function(filters, key, value, defaultSimilarity){
- var field = key.match("^(\\[?)([^_]+)_(.*)$"),
- or = [],
- i;
-
- if (field) {
- if (field[1] === '[') {
- var values = value.split(",");
- for (i = 0; i < values.length; ++i) {
- GeoNetwork.util.CSWSearchTools.addFilterImpl(values.length > 1 ? or : filters, field[2], field[3], values[i], defaultSimilarity);
- }
- if (values.length > 1) {
- filters.push(new OpenLayers.Filter.Logical({
- type: OpenLayers.Filter.Logical.OR,
- filters: or
- }));
- }
- } else {
- GeoNetwork.util.CSWSearchTools.addFilterImpl(filters, field[2], field[3], value, defaultSimilarity);
- }
- }
- },
-
- /** private: method[addFilterImpl]
- * Build filter according to type name define by form fields name.
- */
- addFilterImpl: function(filters, type, name, value, defaultSimilarity){
- var i;
-
- if (type === 'S') { //starts with
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.LIKE,
- property: name,
- value: value + ".*"
- }));
- } else if (type === 'C') { //contains
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.LIKE,
- property: name,
- value: ".*" + value + ".*"
- }));
- } else if (type.charAt(0) === 'E') { //equals
- if (type.length > 1) {
- // this means that we want to specificy the similarity
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: "similarity",
- value: type.substring(1)
- }));
- }
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: name,
- value: value
- }));
- if (type.length > 1) {
- //restore to the previous similarity
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: "similarity",
- value: defaultSimilarity
- }));
- }
- } else if (type === '>=') { //bigger or equal
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
- property: name,
- value: value
- }));
- } else if (type === '<=') { //smaller or equal
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
- property: name,
- value: value
- }));
- } else if (type === 'T') { //equals with words separated by spaces that must be all present
- var splitted = value.split(" ");
- for (i = 0; i < splitted.length; ++i) {
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: name,
- value: splitted[i]
- }));
- }
- } else if (type === 'B') { //boolean
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: name,
- value: value ? 1 : 0
- }));
- } else if (type === 'V') { //field name specified in the value, separated by a '/' with the value
- var subField = value.match("^([^/]+)/(.*)$");
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: "similarity",
- value: "1.0"
- }));
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: subField[1],
- value: subField[2]
- }));
- filters.push(new OpenLayers.Filter.Comparison({
- type: OpenLayers.Filter.Comparison.EQUAL_TO,
- property: "similarity",
- value: defaultSimilarity
- }));
- } else {
- alert("Cannot parse " + type);
- }
- },
-
- /** private: method[sortByMappings]
- * Define default sort order to use for each kind of sort field.
- */
- sortByMappings: {
- relevance: {
- name: 'relevance',
- order: 'D'
- },
- rating: {
- name: 'rating',
- order: 'D'
- },
- popularity: {
- name: 'popularity',
- order: 'D'
- },
- date: {
- name: 'date',
- order: 'D'
- },
- title: {
- name: 'title',
- order: 'A'
- }
- },
-
- /** private: method[buildCSWQueryPOST]
- * Create a query to POST based on an OGC filter.
- */
- buildCSWQueryPOST: function(filter, startRecord, sortBy){
-
- var result = '\n' +
- '