diff --git a/src/doc/index.rst b/src/doc/index.rst index 80986d3b..7cb7c46d 100644 --- a/src/doc/index.rst +++ b/src/doc/index.rst @@ -1,18 +1,15 @@ .. _api-reference: -OpenGeo SDK Client API Reference -================================ +Boundless SDK API reference - ``gxp`` template +============================================== -The gxp components and data utility classes extend map related functionality to -equivalent classes in Ext. The API reference here documents the properties, -methods, and events that are extensions or modifications to the Ext parent -classes. Documentation for each class contains links to the Ext parent class, -and for a full picture of the API, it is essential to have a copy of the -`Ext API Documentation`_ at hand. +This document describes the API for using the ``gxp`` template of the Boundless SDK. Other templates, such as ``ol3-view`` and ``ol3-edit``, do not use this API, instead relying on the standard OpenLayers 3 API. -gxp classes are typically configured with OpenLayers or GeoExt objects. For -detail on methods and properties provided by these objects, see the -`OpenLayers API Documentation`_ and `GeoExt API Documentation`_. +The ``gxp`` components and data utility classes extend map related functionality to equivalent classes in Ext. This API reference here documents the properties, methods, and events that are extensions or modifications to the Ext parent classes. Documentation for each class contains links to the Ext parent class, and for a full picture of the API, it is essential to have a copy of the `Ext API Documentation`_ at hand. + +The ``gxp`` classes are typically configured with OpenLayers or GeoExt objects. For detail on methods and properties provided by these objects, see the `OpenLayers API Documentation`_ and `GeoExt API Documentation`_. + +For more information about how to use the Boundless SDK, please see the :guilabel:`Building complete web applications` section of the OpenGeo Suite User Manual. This can be found in your local installation or at our `online documentation `_. .. _`Ext API Documentation`: http://extjs.com/deploy/dev/docs/ .. _`OpenLayers API Documentation`: http://dev.openlayers.org/apidocs @@ -27,6 +24,7 @@ detail on methods and properties provided by these objects, see the .. toctree:: :maxdepth: 1 + self lib/util lib/util/style lib/util/color diff --git a/src/script/locale/it.js b/src/script/locale/it.js new file mode 100644 index 00000000..adfb37d4 --- /dev/null +++ b/src/script/locale/it.js @@ -0,0 +1,432 @@ +/** + * @requires GeoExt/Lang.js + */ + +GeoExt.Lang.add("it", { + + "gxp.menu.LayerMenu.prototype": { + layerText: "Layer" + }, + + "gxp.plugins.AddLayers.prototype": { + addActionMenuText: "Aggiungi dei layer", + addActionTip: "Aggiungi dei layer", + addServerText: "Aggiungi Nuovo Server", + addButtonText: "Aggiungi layer", + untitledText: "Senza titolo", + addLayerSourceErrorText: "Errore nel recupero delle WMS capabilities ({msg}).\nPer favore verificate la url e riprovare.", + availableLayersText: "Layer disponibili", + expanderTemplateText: "

In sintesi: {abstract}

", + panelTitleText: "Titolo", + layerSelectionText: "Visualizza i dati disponibili da:", + doneText: "Fatto", + uploadText: "Upload dei layer", + addFeedActionMenuText: "Aggiungi feed", + searchText: "Ricerca dei layer" + }, + + "gxp.plugins.BingSource.prototype": { + title: "Layer di Bing", + roadTitle: "Bing Stradale", + aerialTitle: "Bing Aereo", + labeledAerialTitle: "Bing Aereo con Etichette" + }, + + "gxp.plugins.FeatureEditor.prototype": { + splitButtonText: "Modifica", + createFeatureActionText: "Crea", + editFeatureActionText: "Modifica", + createFeatureActionTip: "Crea una nuova feature", + editFeatureActionTip: "Modifica una feature esistente", + commitTitle: "Messaggio di completamento", + commitText: "Per favore inserire un messaggio di completamento per questa modifica:" + }, + + "gxp.plugins.FeatureGrid.prototype": { + displayFeatureText: "Visualizza sulla mappa", + firstPageTip: "Prima pagina", + previousPageTip: "Pagina precedente", + zoomPageExtentTip: "Zoom all'estensione della pagina", + nextPageTip: "Prossima pagina", + lastPageTip: "Ultima pagina", + totalMsg: "Le Feature da {1} a {2} di {0}" + }, + + "gxp.plugins.GoogleEarth.prototype": { + menuText: "Visualizzatore 3D", + tooltip: "Passa al Visualizzatore 3D" + }, + + "gxp.plugins.GoogleSource.prototype": { + title: "Layer di Google", + roadmapAbstract: "Mostra mappa stradale", + satelliteAbstract: "Mostra immagine satellitare", + hybridAbstract: "Mostra immagine con nomi stradali", + terrainAbstract: "Mostra mappa stradale con vista terreno" + }, + + "gxp.plugins.LayerProperties.prototype": { + menuText: "Proprietà Layer", + toolTip: "Proprietà Layer" + }, + + "gxp.plugins.LayerTree.prototype": { + shortTitle: "Layer", + rootNodeText: "Layer", + overlayNodeText: "Sovrapposizioni", + baseNodeText: "Layer di base" + }, + + "gxp.plugins.LayerManager.prototype": { + baseNodeText: "Mappe di base" + }, + + "gxp.plugins.Legend.prototype": { + menuText: "Mostra legenda", + tooltip: "Mostra legenda" + }, + + "gxp.plugins.LoadingIndicator.prototype": { + loadingMapMessage: "Mappa in caricamento..." + }, + + "gxp.plugins.MapBoxSource.prototype": { + title: "Layer di MapBox", + blueMarbleTopoBathyJanTitle: "Topografia & Batimetria (Gennaio) di Blue Marble", + blueMarbleTopoBathyJulTitle: "Topografia & Batimetria (Luglio) di Blue Marble", + blueMarbleTopoJanTitle: "Topografia (Gennaio) di Blue Marble", + blueMarbleTopoJulTitle: "Topografia (Luglio) di Blue Marble", + controlRoomTitle: "Punto di Controllo", + geographyClassTitle: "Classe geografica", + naturalEarthHypsoTitle: "Ipsometria Natural Earth", + naturalEarthHypsoBathyTitle: "Ipsometria e Batimetria Natural Earth", + naturalEarth1Title: "Natural Earth I", + naturalEarth2Title: "Natural Earth II", + worldDarkTitle: "World Dark", + worldLightTitle: "World Light", + worldPrintTitle: "World Print" + }, + + "gxp.plugins.Measure.prototype": { + buttonText: "Misura", + lengthMenuText: "Lunghezza", + areaMenuText: "Area", + lengthTooltip: "Misura lunghezza", + areaTooltip: "Misura area", + measureTooltip: "Misura" + }, + + "gxp.plugins.Navigation.prototype": { + menuText: "Sposta mappa", + tooltip: "Sposta mappa" + }, + + "gxp.plugins.NavigationHistory.prototype": { + previousMenuText: "Zoom alla precedente estensione", + nextMenuText: "Zoom alla successiva estensione", + previousTooltip: "Zoom alla precedente estensione", + nextTooltip: "Zoom alla successiva estensione" + }, + + "gxp.plugins.OSMSource.prototype": { + title: "Layer di OpenStreetMap", + mapnikAttribution: "&Copyright; OpenStreetMap di attribuzione", + osmarenderAttribution: "Dati rilasciati con licenza CC-By-SA da OpenStreetMap" + }, + + "gxp.plugins.Print.prototype": { + buttonText: "Stampa", + menuText: "Stampa mappa", + tooltip: "Stampa mappa", + previewText: "Stampa Anteprima", + notAllNotPrintableText: "Non tutti i layer possono essere stampati", + nonePrintableText: "Nessuno dei tuoi attuali layer può essere stampato" + }, + + "gxp.plugins.MapQuestSource.prototype": { + title: "Layer di MapQuest", + osmAttribution: "Tile a cura di MapQuest ", + osmTitle: "OpenStreetMap di MapQuest", + naipAttribution: "Tile a cura di MapQuest ", + naipTitle: "Immagini MapQuest" + }, + + "gxp.plugins.QueryForm.prototype": { + queryActionText: "Ricerca", + queryMenuText: "Interroga layer", + queryActionTip: "Interroga il layer selezionato", + queryByLocationText: "Interroga in base all'estensione corrente", + queryByAttributesText: "Interroga in base agli attributi", + queryMsg: "Ricerca in corso...", + cancelButtonText: "Cancella", + noFeaturesTitle: "Nessun risultato", + noFeaturesMessage: "Non è stato trovato alcun risultato." + }, + + "gxp.plugins.RemoveLayer.prototype": { + removeMenuText: "Rimuovi layer", + removeActionTip: "Rimuovi layer" + }, + + "gxp.plugins.Styler.prototype": { + menuText: "Stili dei layer", + tooltip: "Stili dei layer" + + }, + + "gxp.plugins.WMSGetFeatureInfo.prototype": { + buttonText: "Identifica", + infoActionTip: "Ottieni Informazioni sulla feature", + popupTitle: "Informazioni feature" + }, + + "gxp.plugins.Zoom.prototype": { + zoomMenuText: "Zoom rettangolare", + zoomInMenuText: "Zoom avanti", + zoomOutMenuText: "Zoom indietro", + zoomTooltip: "Zoom da estensione rettangolare", + zoomInTooltip: "Zoom avanti", + zoomOutTooltip: "Zoom indietro" + }, + + "gxp.plugins.ZoomToExtent.prototype": { + menuText: "Zoom alla massima estensione", + tooltip: "Zoom alla massima estensione" + }, + + "gxp.plugins.ZoomToDataExtent.prototype": { + menuText: "Zoom all'estensione del layer", + tooltip: "Zoom all'estensione del layer" + }, + + "gxp.plugins.ZoomToLayerExtent.prototype": { + menuText: "Zoom all'estensione del layer", + tooltip: "Zoom all'estensione del layer" + }, + + "gxp.plugins.ZoomToSelectedFeatures.prototype": { + menuText: "Zoom alle feature selezionate", + tooltip: "Zoom alle feature selezionate" + }, + + "gxp.FeatureEditPopup.prototype": { + closeMsgTitle: "Vuoi salvare le modifiche alla feature?", + closeMsg: "Questa feature ha modifiche non salvate. Vorresti salvarle?", + deleteMsgTitle: "Vuoi cancellare la feature?", + deleteMsg: "Sei sicuro di voler cancellare questa feature?", + editButtonText: "Modifica", + editButtonTooltip: "Rendi questa feature modificabile", + deleteButtonText: "Elimina", + deleteButtonTooltip: "Elimina questa feature", + cancelButtonText: "Annulla", + cancelButtonTooltip: "Blocca e annulla le modifiche", + saveButtonText: "Salva", + saveButtonTooltip: "Salva le modifiche" + }, + + "gxp.FillSymbolizer.prototype": { + fillText: "Riempimento", + colorText: "Colore", + opacityText: "Opacità" + }, + + "gxp.FilterBuilder.prototype": { + builderTypeNames: ["qualsiasi", "tutte", "nessuna", "non tutte"], + preComboText: "Corrispondenza", + postComboText: "del seguente:", + addConditionText: "aggiungi condizione", + addGroupText: "aggiungi gruppo", + removeConditionText: "elimina condizione" + }, + + "gxp.grid.CapabilitiesGrid.prototype": { + nameHeaderText: "Nome", + titleHeaderText: "Titolo", + queryableHeaderText: "Interrogabile", + layerSelectionLabel: "Visualizza i dati disponibili da:", + layerAdditionLabel: "o aggiungi nuovo server.", + expanderTemplateText: "

In sintesi: {abstract}

" + }, + + "gxp.PointSymbolizer.prototype": { + graphicCircleText: "cerchio", + graphicSquareText: "quadrato", + graphicTriangleText: "triangolo", + graphicStarText: "stella", + graphicCrossText: "attraversamento", + graphicXText: "x", + graphicExternalText: "esterno", + urlText: "URL", + opacityText: "opacità", + symbolText: "Simbolo", + sizeText: "Grandezza", + rotationText: "Rotazione" + }, + + "gxp.QueryPanel.prototype": { + queryByLocationText: "Interroga in base alla posizione", + currentTextText: "Estensione Currente", + queryByAttributesText: "Interroga in base agli attributi", + layerText: "Layer" + }, + + "gxp.RulePanel.prototype": { + scaleSliderTemplate: "{scaleType} Scala 1:{scale}", + labelFeaturesText: "Etichetta Feature", + labelsText: "Etichette", + basicText: "Base", + advancedText: "Avanzate", + limitByScaleText: "Limita in base alla scala", + limitByConditionText: "Limita in base alla condizione", + symbolText: "Simbolo", + nameText: "Nome" + }, + + "gxp.ScaleLimitPanel.prototype": { + scaleSliderTemplate: "{scaleType} Scala 1:{scale}", + minScaleLimitText: "Limite scala Min", + maxScaleLimitText: "Limite scala Max" + }, + + "gxp.StrokeSymbolizer.prototype": { + solidStrokeName: "continua", + dashStrokeName: "tratteggiata", + dotStrokeName: "puntiforme", + titleText: "Linea", + styleText: "Stile", + colorText: "Colore", + widthText: "Larghezza", + opacityText: "Opacità" + }, + + "gxp.StylePropertiesDialog.prototype": { + titleText: "Generale", + nameFieldText: "Nome", + titleFieldText: "Titolo", + abstractFieldText: "In sintesi" + }, + + "gxp.TextSymbolizer.prototype": { + labelValuesText: "Valori etichetta", + haloText: "Halo", + sizeText: "Grandezza" + }, + + "gxp.WMSLayerPanel.prototype": { + attributionText: "Attribuzione", + aboutText: "Informazioni", + titleText: "Titolo", + nameText: "Nome", + descriptionText: "Descrizione", + displayText: "Visualizzazione", + opacityText: "Opacità", + formatText: "Formato", + transparentText: "Transparente", + cacheText: "Cache", + cacheFieldText: "Usa versione in cache", + stylesText: "Stili disponibili", + infoFormatText: "Formato informazioni", + infoFormatEmptyText: "Seleziona un formato", + displayOptionsText: "Visualizza opzioni", + queryText: "Limitazione con filtri", + scaleText: "Limitazione in base alla scala", + minScaleText: "Scala Min", + maxScaleText: "Scala Max", + switchToFilterBuilderText: "Ritorna al compositore di filtri", + cqlPrefixText: "o ", + cqlText: "usa piuttosto un filtro CQL", + singleTileText: "Tile singolo", + singleTileFieldText: "Usa un singolo tile" + }, + + "gxp.EmbedMapDialog.prototype": { + publishMessage: "La vostra mappa è pronta ad essere pubblicata sul Web! Copia semplicemente il seguente HTML per inserire la mappa all'interno del tuo sito web:", + heightLabel: 'Altezza', + widthLabel: 'Larghezza', + mapSizeLabel: 'Grandezza mappa', + miniSizeLabel: 'Minima', + smallSizeLabel: 'Piccola', + premiumSizeLabel: 'Gigante', + largeSizeLabel: 'Larga' + }, + + "gxp.WMSStylesDialog.prototype": { + addStyleText: "Aggiungi", + addStyleTip: "Aggiungi un nuovo stile", + chooseStyleText: "Scegli stile", + deleteStyleText: "Elimina", + deleteStyleTip: "Elimina lo stile selezionato", + editStyleText: "Modifica", + editStyleTip: "Modifica lo stile selezionato", + duplicateStyleText: "Duplica", + duplicateStyleTip: "Duplica lo stile selezionato", + addRuleText: "Aggiungi", + addRuleTip: "Aggiungi una nuova regola", + newRuleText: "Nuova Regola", + deleteRuleText: "Elimina", + deleteRuleTip: "Elimina la regola selezionata", + editRuleText: "Modifica", + editRuleTip: "Modifica la regola selezionata", + duplicateRuleText: "Duplica", + duplicateRuleTip: "Duplica la regola selezionata", + cancelText: "Cancella", + saveText: "Salva", + styleWindowTitle: "Stile Utente: {0}", + ruleWindowTitle: "Regola dello stile: {0}", + stylesFieldsetTitle: "Stili", + rulesFieldsetTitle: "Regole" + }, + + "gxp.LayerUploadPanel.prototype": { + titleLabel: "Titolo", + titleEmptyText: "Titolo Layer", + abstractLabel: "Descrizione", + abstractEmptyText: "descrizione Layer", + fileLabel: "Dati", + fieldEmptyText: "Consulta l'archivio dati...", + uploadText: "Upload", + uploadFailedText: "Upload fallito", + processingUploadText: "Sto effettuando l'upload...", + waitMsgText: "Sto effettuando l'upload dei tuoi dati...", + invalidFileExtensionText: "L'estensione del file deve essere una tra: ", + optionsText: "Opzioni", + workspaceLabel: "Workspace", + workspaceEmptyText: "Workspace di base", + dataStoreLabel: "Store", + dataStoreEmptyText: "Scegli uno store", + dataStoreNewText: "Crea nuovo store", + crsLabel: "CRS", + crsEmptyText: "ID del Sistema di Riferimento delle Coordinate", + invalidCrsText: "L'identificativo CRS dovrebbe essere un codice EPSG (Es.: EPSG:4326)" + }, + + "gxp.NewSourceDialog.prototype": { + title: "Aggiungi nuovo server...", + cancelText: "Cancella", + addServerText: "Aggiungi Server", + invalidURLText: "Inserisci una URL valida di un servizio WMS (Es.: http://example.com/geoserver/wms)", + contactingServerText: "Collegamento al server..." + }, + + "gxp.ScaleOverlay.prototype": { + zoomLevelText: "Livello di Zoom" + }, + + "gxp.Viewer.prototype": { + saveErrorText: "Problemi nel salvataggio: " + }, + + "gxp.FeedSourceDialog.prototype": { + feedTypeText: "Sorgente", + addPicasaText: "Foto Picasa", + addYouTubeText: "Video YouTube", + addRSSText: "Altri Feed GeoRSS", + addFeedText: "Aggiungi alla Mappa", + addTitleText: "Titolo", + keywordText: "Parole chiave", + doneText: "Fatto", + titleText: "Aggiungi Feed", + maxResultsText: "Numero Max risultati" + } + +}); \ No newline at end of file diff --git a/src/script/locale/ru.js b/src/script/locale/ru.js new file mode 100644 index 00000000..0c847eaa --- /dev/null +++ b/src/script/locale/ru.js @@ -0,0 +1,432 @@ +/** + * @requires GeoExt/Lang.js + */ + +GeoExt.Lang.add("ru", { + + "gxp.menu.LayerMenu.prototype": { + layerText: "Слой" + }, + + "gxp.plugins.AddLayers.prototype": { + addActionMenuText: "Добавить слои", + addActionTip: "Добавить слои", + addServerText: "Добавить новый сервер", + addButtonText: "Добавить слои", + untitledText: "Без названия", + addLayerSourceErrorText: "Не удалось подключиться к WMS ({msg}).\nПроверьте ссылку и попробуйте снова.", + availableLayersText: "Доступные слои", + expanderTemplateText: "

Аннотация: {abstract}

", + panelTitleText: "Заголовок", + layerSelectionText: "Просмотр доступных данных из:", + doneText: "Готово", + uploadText: "Загрузить слои", + addFeedActionMenuText: "Добавить каналы (feeds)", + searchText: "Поиск слоёв" + }, + + "gxp.plugins.BingSource.prototype": { + title: "Bing", + roadTitle: "Bing схема", + aerialTitle: "Bing спутник", + labeledAerialTitle: "Bing спутник с метками" + }, + + "gxp.plugins.FeatureEditor.prototype": { + splitButtonText: "Редактировать", + createFeatureActionText: "Создать", + editFeatureActionText: "Изменить", + createFeatureActionTip: "Создать новую запись таблицы атрибутов", + editFeatureActionTip: "Редактировать существующую запись таблицы атрибутов", + commitTitle: "Описание для подтверждения изменений", + commitText: "Введите описание этого изменения:" + }, + + "gxp.plugins.FeatureGrid.prototype": { + displayFeatureText: "Показать на карте", + firstPageTip: "Первая страница", + previousPageTip: "Предыдущая страница", + zoomPageExtentTip: "Увеличить до области страницы", + nextPageTip: "Следующая страница", + lastPageTip: "Последняя страница", + totalMsg: "Записи с {1} по {2} из {0}" + }, + + "gxp.plugins.GoogleEarth.prototype": { + menuText: "3D-просмотр", + tooltip: "Включить 3D-просмотр" + }, + + "gxp.plugins.GoogleSource.prototype": { + title: "Google", + roadmapAbstract: "Google схема", + satelliteAbstract: "Google спутник", + hybridAbstract: "Google спутник с метками", + terrainAbstract: "Google ландшафт" + }, + + "gxp.plugins.LayerProperties.prototype": { + menuText: "Свойства слоя", + toolTip: "Свойства слоя" + }, + + "gxp.plugins.LayerTree.prototype": { + shortTitle: "Слои", + rootNodeText: "Слои", + overlayNodeText: "Тематические слои", + baseNodeText: "Базовая карта" + }, + + "gxp.plugins.LayerManager.prototype": { + baseNodeText: "Базовая карта" + }, + + "gxp.plugins.Legend.prototype": { + menuText: "Легенда", + tooltip: "Показать легенду" + }, + + "gxp.plugins.LoadingIndicator.prototype": { + loadingMapMessage: "Загрузка карты..." + }, + + "gxp.plugins.MapBoxSource.prototype": { + title: "MapBox Layers", + blueMarbleTopoBathyJanTitle: "Blue Marble Topography & Bathymetry (January)", + blueMarbleTopoBathyJulTitle: "Blue Marble Topography & Bathymetry (July)", + blueMarbleTopoJanTitle: "Blue Marble Topography (January)", + blueMarbleTopoJulTitle: "Blue Marble Topography (July)", + controlRoomTitle: "Control Room", + geographyClassTitle: "Geography Class", + naturalEarthHypsoTitle: "Natural Earth Hypsometric", + naturalEarthHypsoBathyTitle: "Natural Earth Hypsometric & Bathymetry", + naturalEarth1Title: "Natural Earth I", + naturalEarth2Title: "Natural Earth II", + worldDarkTitle: "World Dark", + worldLightTitle: "World Light", + worldPrintTitle: "World Print" + }, + + "gxp.plugins.Measure.prototype": { + buttonText: "Измерения", + lengthMenuText: "Длина", + areaMenuText: "Площадь", + lengthTooltip: "Измерение длины", + areaTooltip: "Измерение площади", + measureTooltip: "Измерение" + }, + + "gxp.plugins.Navigation.prototype": { + menuText: "Сдвиг", + tooltip: "Сдвинуть карту" + }, + + "gxp.plugins.NavigationHistory.prototype": { + previousMenuText: "Предыдущая область", + nextMenuText: "Следующая область", + previousTooltip: "Показать предыдущую область", + nextTooltip: "Показать следующую область" + }, + + "gxp.plugins.OSMSource.prototype": { + title: "OpenStreetMap", + mapnikAttribution: "© OpenStreetMap авторы", + osmarenderAttribution: "Данные CC-By-SA by OpenStreetMap" + }, + + "gxp.plugins.Print.prototype": { + buttonText:"Печать", + menuText: "Печать", + tooltip: "Печать карты", + previewText: "Предварительный просмотр", + notAllNotPrintableText: "Не все слои могут быть напечатаны", + nonePrintableText: "Ни один из текующих слоев карты не может быть напечатан" + }, + + "gxp.plugins.MapQuestSource.prototype": { + title: "MapQuest", + osmAttribution: "Предоставлено MapQuest ", + osmTitle: "MapQuest OpenStreetMap", + naipAttribution: "Предоставлено MapQuest ", + naipTitle: "MapQuest спутник" + }, + + "gxp.plugins.QueryForm.prototype": { + queryActionText: "Запрос", + queryMenuText: "Выполнить запрос в слое", + queryActionTip: "Выполнить запрос в текущем слое", + queryByLocationText: "Запрос по текущей области карты", + queryByAttributesText: "Запрос по атрибутам", + queryMsg: "Выполнение запроса...", + cancelButtonText: "Отмена", + noFeaturesTitle: "Не найдено", + noFeaturesMessage: "Ваш запрос не дал результатов." + }, + + "gxp.plugins.RemoveLayer.prototype": { + removeMenuText: "Удалить слой", + removeActionTip: "Удалить слой" + }, + + "gxp.plugins.Styler.prototype": { + menuText: "Стили", + tooltip: "Стили слоя" + + }, + + "gxp.plugins.WMSGetFeatureInfo.prototype": { + buttonText:"Информация", + infoActionTip: "Получить атрибутивную информацию по объектам карты", + popupTitle: "Атрибутивная информация объекта" + }, + + "gxp.plugins.Zoom.prototype": { + zoomMenuText: "Изменение масштаба путем выделения области", + zoomInMenuText: "Увеличить масштаб", + zoomOutMenuText: "Уменьшить масштаб", + zoomTooltip: "Изменение масштаба путем выделения области", + zoomInTooltip: "Увеличить масштаб", + zoomOutTooltip: "Уменьшить масштаб" + }, + + "gxp.plugins.ZoomToExtent.prototype": { + menuText: "Показать всю карту", + tooltip: "Увеличить до максимальной области карты" + }, + + "gxp.plugins.ZoomToDataExtent.prototype": { + menuText: "Показать весь слой", + tooltip: "Увеличить до максимальной области слоя" + }, + + "gxp.plugins.ZoomToLayerExtent.prototype": { + menuText: "Показать весь слой", + tooltip: "Увеличить до максимальной области слоя" + }, + + "gxp.plugins.ZoomToSelectedFeatures.prototype": { + menuText: "Показать выбранные объекты", + tooltip: "Увеличить до выбранных объектов" + }, + + "gxp.FeatureEditPopup.prototype": { + closeMsgTitle: "Сохранить изменения?", + closeMsg: "Этот объект имеет несохраненные изменения. Сохранить изменения?", + deleteMsgTitle: "Удалить объект?", + deleteMsg: "Вы действительно хотите удалить этот объект?", + editButtonText: "Редактировать", + editButtonTooltip: "Сделать этот объект редактируемым", + deleteButtonText: "Удалить", + deleteButtonTooltip: "Удалить этот объект", + cancelButtonText: "Отмена", + cancelButtonTooltip: "Завершить редактирование и отменить изменения", + saveButtonText: "Сохранить", + saveButtonTooltip: "Сохранить изменения" + }, + + "gxp.FillSymbolizer.prototype": { + fillText: "Заливка", + colorText: "Цвет", + opacityText: "Прозрачн." + }, + + "gxp.FilterBuilder.prototype": { + builderTypeNames: ["любой", "все", "ни один", "не все"], + preComboText: "Совпадает", + postComboText: "со следующим:", + addConditionText: "добавить условие", + addGroupText: "добавить группу", + removeConditionText: "удалить условие" + }, + + "gxp.grid.CapabilitiesGrid.prototype": { + nameHeaderText : "Наименование", + titleHeaderText : "Заголовок", + queryableHeaderText : "Доступный для выполнения запросов", + layerSelectionLabel: "Посмотреть доступные данные из:", + layerAdditionLabel: "или добавить новый сервер.", + expanderTemplateText: "

Аннотация: {abstract}

" + }, + + "gxp.PointSymbolizer.prototype": { + graphicCircleText: "окружность", + graphicSquareText: "квадрат", + graphicTriangleText: "треугольник", + graphicStarText: "звезда", + graphicCrossText: "крест", + graphicXText: "икс", + graphicExternalText: "внешний", + urlText: "Ссылка", + opacityText: "прозрачн.", + symbolText: "символ", + sizeText: "Размер", + rotationText: "Поворот" + }, + + "gxp.QueryPanel.prototype": { + queryByLocationText: "Запрос по местонахождению", + currentTextText: "Текущая область", + queryByAttributesText: "Запрос по атрибутам", + layerText: "Слой" + }, + + "gxp.RulePanel.prototype": { + scaleSliderTemplate: "{scaleType} Масштаб 1:{scale}", + labelFeaturesText: "Подписывать объекты", + labelsText: "Подписи", + basicText: "Базовый", + advancedText: "Расширенный", + limitByScaleText: "Ограничить по масштабу", + limitByConditionText: "Ограничить по условию", + symbolText: "Символ", + nameText: "Наименование" + }, + + "gxp.ScaleLimitPanel.prototype": { + scaleSliderTemplate: "{scaleType} Масштаб 1:{scale}", + minScaleLimitText: "Масштаб от", + maxScaleLimitText: "Масштаб до" + }, + + "gxp.StrokeSymbolizer.prototype": { + solidStrokeName: "сплошная", + dashStrokeName: "пунктирная", + dotStrokeName: "точечная", + titleText: "Контур", + styleText: "Стиль", + colorText: "Цвет", + widthText: "Ширина", + opacityText: "Прозрачн." + }, + + "gxp.StylePropertiesDialog.prototype": { + titleText: "Основные", + nameFieldText: "Название", + titleFieldText: "Заголовок", + abstractFieldText: "Абстракт" + }, + + "gxp.TextSymbolizer.prototype": { + labelValuesText: "Поле для надписей", + haloText: "Контур", + sizeText: "Размер" + }, + + "gxp.WMSLayerPanel.prototype": { + attributionText: "Опред-ие", + aboutText: "О слое", + titleText: "Заголовок", + nameText: "Название", + descriptionText: "Описание", + displayText: "Отображание", + opacityText: "Непрозрачн.", + formatText: "Формат", + transparentText: "Прозрачность", + cacheText: "Кэш", + cacheFieldText: "Использовать кэшированную версию", + stylesText: "Доступные стили", + infoFormatText: "Формат", + infoFormatEmptyText: "Выбрать формат", + displayOptionsText: "Параметры отображения", + queryText: "Ограничение по запросу", + scaleText: "Ограничение по масштабу", + minScaleText: "Мин. масштаб", + maxScaleText: "Макс. масштаб", + switchToFilterBuilderText: "Переключиться к построителю фильтров", + cqlPrefixText: "или ", + cqlText: "использовать CQL-фильтр", + singleTileText: "Одиночный тайл", + singleTileFieldText: "Использовать одиночный тайл" + }, + + "gxp.EmbedMapDialog.prototype": { + publishMessage: "Ваша карта готова к публикации в веб! Скопируйте следующий HTML-код, чтобы встроить карту в ваш сайт:", + heightLabel: 'Высота', + widthLabel: 'Ширина', + mapSizeLabel: 'Размер карты', + miniSizeLabel: 'Минимальный', + smallSizeLabel: 'Маленький', + premiumSizeLabel: 'Премиум', + largeSizeLabel: 'Большой' + }, + + "gxp.WMSStylesDialog.prototype": { + addStyleText: "Добавить", + addStyleTip: "Добавить новый стиль", + chooseStyleText: "Выбрать стиль", + deleteStyleText: "Удалить", + deleteStyleTip: "Удалить выбранный стиль", + editStyleText: "Редакт.", + editStyleTip: "Редактировать выбранный стиль", + duplicateStyleText: "Дубл.", + duplicateStyleTip: "Дублировать выбранный стиль", + addRuleText: "Добавить", + addRuleTip: "Добавить новое правило", + newRuleText: "Новое правило", + deleteRuleText: "Удалить", + deleteRuleTip: "Удалить выбранное правило", + editRuleText: "Редакт.", + editRuleTip: "Редактировать выбранное правило", + duplicateRuleText: "Дубл.", + duplicateRuleTip: "Дублировать выбранное правило", + cancelText: "Отмена", + saveText: "Сохранить", + styleWindowTitle: "Пользовательский стиль: {0}", + ruleWindowTitle: "Правило стиля: {0}", + stylesFieldsetTitle: "Стили", + rulesFieldsetTitle: "Правила" + }, + + "gxp.LayerUploadPanel.prototype": { + titleLabel: "Заголовок", + titleEmptyText: "Заголовок слоя", + abstractLabel: "Описание", + abstractEmptyText: "Описание слоя", + fileLabel: "Данные", + fieldEmptyText: "Выбрать архив с данными...", + uploadText: "Загрузить", + uploadFailedText: "Не удалось загрузить", + processingUploadText: "Загрузка...", + waitMsgText: "Загрузка ваших данных...", + invalidFileExtensionText: "Расширение файла должно быть одним из: ", + optionsText: "Параметры", + workspaceLabel: "Рабочая область", + workspaceEmptyText: "Рабочая область по умолчанию", + dataStoreLabel: "Хранилище", + dataStoreEmptyText: "Выбрать хранилище", + dataStoreNewText: "Создать новое хранилище", + crsLabel: "Система координат", + crsEmptyText: "ID системы координат", + invalidCrsText: "Идентификатор должен быть кодом EPSG (например EPSG:4326)" + }, + + "gxp.NewSourceDialog.prototype": { + title: "Добавить новый сервер...", + cancelText: "Отмена", + addServerText: "Добавить сервер", + invalidURLText: "Введите правильный адрес сервера WMS (например http://example.com/geoserver/wms)", + contactingServerText: "Подключение к серверу..." + }, + + "gxp.ScaleOverlay.prototype": { + zoomLevelText: "Масштабный уровень" + }, + + "gxp.Viewer.prototype": { + saveErrorText: "Сбой сохранения: " + }, + + "gxp.FeedSourceDialog.prototype": { + feedTypeText: "Источник потоковых данных", + addPicasaText: "Фото Picasa", + addYouTubeText: "Видео YouTube", + addRSSText: "GeoRSS канал", + addFeedText: "Добавить на карту", + addTitleText: "Заголовок", + keywordText: "Ключевое слово", + doneText: "Готово", + titleText: "Добавить каналы", + maxResultsText: "Максимальное количество элементов" + } + +}); diff --git a/src/script/plugins/AddLayers.js b/src/script/plugins/AddLayers.js index 85c56e9e..905b476e 100644 --- a/src/script/plugins/AddLayers.js +++ b/src/script/plugins/AddLayers.js @@ -278,9 +278,11 @@ gxp.plugins.AddLayers = Ext.extend(gxp.plugins.Tool, { url: this.target.sources[this.initialConfig.search.selectedSource].url, callback: function(options, success, response) { if (success === false) { + this.target.layerSources[this.initialConfig.search.selectedSource].disable(); search.hide(); } - } + }, + scope: this }); } if (this.initialConfig.feeds) { diff --git a/src/script/plugins/CSWCatalogueSource.js b/src/script/plugins/CSWCatalogueSource.js index f5b3da4a..e6a5a7b5 100644 --- a/src/script/plugins/CSWCatalogueSource.js +++ b/src/script/plugins/CSWCatalogueSource.js @@ -142,6 +142,11 @@ gxp.plugins.CSWCatalogueSource = Ext.extend(gxp.plugins.CatalogueSource, { } Ext.apply(this.store.baseParams, data); this.store.load(); + }, + + createLayerRecord: function(layerConfig) { + layerConfig.queryable = true; + return gxp.plugins.CSWCatalogueSource.superclass.createLayerRecord.apply(this, arguments); } }); diff --git a/src/script/plugins/FeatureEditor.js b/src/script/plugins/FeatureEditor.js index 2683f742..35dd64ce 100644 --- a/src/script/plugins/FeatureEditor.js +++ b/src/script/plugins/FeatureEditor.js @@ -156,6 +156,12 @@ gxp.plugins.FeatureEditor = Ext.extend(gxp.plugins.ClickableFeatures, { * modify tool, i.e. there is no option to add new features. */ modifyOnly: false, + + /** api: config[createOnly] + * ``Boolean`` Set to true to use the FeatureEditor merely as a feature + * creation tool, i.e. there is no option to modify existing features. + */ + createOnly: false, /** api: config[showSelectedOnly] * ``Boolean`` If set to true, only selected features will be displayed @@ -726,6 +732,7 @@ gxp.plugins.FeatureEditor = Ext.extend(gxp.plugins.ClickableFeatures, { //TODO Tool.js sets group, but this doesn't work for GeoExt.Action group: toggleGroup, groupClass: null, + hidden: this.createOnly, enableToggle: true, allowDepress: true, control: this.selectControl, diff --git a/src/script/plugins/FeatureManager.js b/src/script/plugins/FeatureManager.js index 68130810..09d3c24f 100644 --- a/src/script/plugins/FeatureManager.js +++ b/src/script/plugins/FeatureManager.js @@ -470,9 +470,10 @@ gxp.plugins.FeatureManager = Ext.extend(gxp.plugins.Tool, { var change = this.fireEvent("beforelayerchange", this, layerRecord); if (change !== false) { if (layerRecord) { - // do not use getProjection here since we never want to use the - // map's projection on the feature layer - this.featureLayer.projection = layerRecord.getLayer().projection; + // do not use getProjection here + var layerProj = layerRecord.getLayer().projection; + this.featureLayer.projection = (layerProj !== null) ? layerProj : + this.target.mapPanel.map.getProjectionObject(); } if (layerRecord !== this.layerRecord) { this.clearFeatureStore(); diff --git a/src/script/plugins/GoogleSource.js b/src/script/plugins/GoogleSource.js index e746693c..62c0407e 100644 --- a/src/script/plugins/GoogleSource.js +++ b/src/script/plugins/GoogleSource.js @@ -322,7 +322,7 @@ gxp.plugins.GoogleSource.loader = new (Ext.extend(Ext.util.Observable, { }; var script = document.createElement("script"); - script.src = "http://www.google.com/jsapi?" + Ext.urlEncode(params); + script.src = "//www.google.com/jsapi?" + Ext.urlEncode(params); // cancel loading if monitor is not ready within timeout var errback = options.errback || Ext.emptyFn; diff --git a/src/script/plugins/MapBoxSource.js b/src/script/plugins/MapBoxSource.js index 53d89354..7a8f3206 100644 --- a/src/script/plugins/MapBoxSource.js +++ b/src/script/plugins/MapBoxSource.js @@ -143,10 +143,10 @@ gxp.plugins.MapBoxSource = Ext.extend(gxp.plugins.LayerSource, { layers[i] = new OpenLayers.Layer.TMS( this[OpenLayers.String.camelize(config.name) + "Title"], [ - "http://a.tiles.mapbox.com/mapbox/", - "http://b.tiles.mapbox.com/mapbox/", - "http://c.tiles.mapbox.com/mapbox/", - "http://d.tiles.mapbox.com/mapbox/" + "//a.tiles.mapbox.com/mapbox/", + "//b.tiles.mapbox.com/mapbox/", + "//c.tiles.mapbox.com/mapbox/", + "//d.tiles.mapbox.com/mapbox/" ], OpenLayers.Util.applyDefaults({ attribution: /^world/.test(name) ? diff --git a/src/script/plugins/OLSource.js b/src/script/plugins/OLSource.js index 4beb56a0..0487ca5e 100644 --- a/src/script/plugins/OLSource.js +++ b/src/script/plugins/OLSource.js @@ -104,7 +104,8 @@ gxp.plugins.OLSource = Ext.extend(gxp.plugins.LayerSource, { {name: "fixed", type: "boolean"}, {name: "selected", type: "boolean"}, {name: "type", type: "string"}, - {name: "args"} + {name: "args"}, + {name: "queryable", type: "boolean"} ]); var data = { layer: layer, @@ -114,6 +115,7 @@ gxp.plugins.OLSource = Ext.extend(gxp.plugins.LayerSource, { group: config.group, fixed: ("fixed" in config) ? config.fixed : false, selected: ("selected" in config) ? config.selected : false, + queryable: ("queryable" in config) ? config.queryable : false, type: config.type, args: config.args, properties: ("properties" in config) ? config.properties : undefined diff --git a/src/script/plugins/OSMSource.js b/src/script/plugins/OSMSource.js index 1cb73f34..78c315e6 100644 --- a/src/script/plugins/OSMSource.js +++ b/src/script/plugins/OSMSource.js @@ -100,9 +100,9 @@ gxp.plugins.OSMSource = Ext.extend(gxp.plugins.LayerSource, { new OpenLayers.Layer.OSM( "OpenStreetMap", [ - "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png", - "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png", - "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png" + "//a.tile.openstreetmap.org/${z}/${x}/${y}.png", + "//b.tile.openstreetmap.org/${z}/${x}/${y}.png", + "//c.tile.openstreetmap.org/${z}/${x}/${y}.png" ], OpenLayers.Util.applyDefaults({ attribution: this.mapnikAttribution, diff --git a/src/script/plugins/Tool.js b/src/script/plugins/Tool.js index 25546e6a..07d33468 100644 --- a/src/script/plugins/Tool.js +++ b/src/script/plugins/Tool.js @@ -269,7 +269,8 @@ gxp.plugins.Tool = Ext.extend(Ext.util.Observable, { actions = actions || this.actions; if (!actions || this.actionTarget === null) { // add output immediately if we have no actions to trigger it - this.addOutput(); + this.removeOutput(); + this.addOutput(this.outputConfig); return; } diff --git a/src/script/plugins/WMSGetFeatureInfo.js b/src/script/plugins/WMSGetFeatureInfo.js index f17c1730..8c565a59 100644 --- a/src/script/plugins/WMSGetFeatureInfo.js +++ b/src/script/plugins/WMSGetFeatureInfo.js @@ -11,6 +11,7 @@ * @requires plugins/FeatureEditorGrid.js * @requires GeoExt/widgets/Popup.js * @requires OpenLayers/Control/WMSGetFeatureInfo.js + * @requires OpenLayers/Format/GeoJSON.js * @requires OpenLayers/Format/WMSGetFeatureInfo.js */ @@ -95,6 +96,13 @@ gxp.plugins.WMSGetFeatureInfo = Ext.extend(gxp.plugins.Tool, { * html: text, // responseText from server - only for "html" format */ + /** private: method[constructor] + */ + constructor: function(config) { + this.geoJSONFormat = new OpenLayers.Format.GeoJSON(); + gxp.plugins.WMSGetFeatureInfo.superclass.constructor.apply(this, arguments); + }, + /** api: method[addActions] */ addActions: function() { @@ -167,6 +175,11 @@ gxp.plugins.WMSGetFeatureInfo = Ext.extend(gxp.plugins.Tool, { this.displayPopup(evt, title, '
' + evt.text + '
'); } else if (evt.features && evt.features.length > 0) { this.displayPopup(evt, title, null, x.get("getFeatureInfo")); + } else if (infoFormat === 'application/json' && evt.text) { + evt.features = this.geoJSONFormat.read(evt.text); + if (evt.features && evt.features.length > 0) { + this.displayPopup(evt, title, null, x.get("getFeatureInfo")); + } } }, scope: this diff --git a/src/script/plugins/WMSSource.js b/src/script/plugins/WMSSource.js index 92df32f1..cbb7f10f 100644 --- a/src/script/plugins/WMSSource.js +++ b/src/script/plugins/WMSSource.js @@ -216,7 +216,7 @@ gxp.plugins.WMSSource = Ext.extend(gxp.plugins.LayerSource, { * Reload the store when the authorization changes. */ onAuthorizationChange: function() { - if (this.store && this.url.charAt(0) === "/") { + if (this.disabled !== true && this.store && this.url.charAt(0) === "/") { var lastOptions = this.store.lastOptions || {params: {}}; Ext.apply(lastOptions.params, { '_dc': Math.random() @@ -887,6 +887,10 @@ gxp.plugins.WMSSource = Ext.extend(gxp.plugins.LayerSource, { attribution: layer.attribution }); }, + + disable: function() { + this.disabled = true; + }, /** private: method[getState] */ getState: function() { diff --git a/src/script/widgets/LayerUploadPanel.js b/src/script/widgets/LayerUploadPanel.js index e7f9e112..bd7c1782 100644 --- a/src/script/widgets/LayerUploadPanel.js +++ b/src/script/widgets/LayerUploadPanel.js @@ -511,8 +511,11 @@ gxp.LayerUploadPanel = Ext.extend(Ext.FormPanel, { } this.getForm().reset(); var details = Ext.decode(response.responseText); - this.fireEvent("uploadcomplete", this, details); - delete this._import; + // wait 250 ms for GeoServer to settle after the upload + window.setTimeout(function() { + this.fireEvent("uploadcomplete", this, details); + delete this._import; + }.bind(this), 250); }, scope: this }); diff --git a/src/script/widgets/Viewer.js b/src/script/widgets/Viewer.js index dcd9396a..92481974 100644 --- a/src/script/widgets/Viewer.js +++ b/src/script/widgets/Viewer.js @@ -459,6 +459,8 @@ gxp.Viewer = Ext.extend(Ext.util.Observable, { var mapConfig = {}; var baseLayerConfig = { wrapDateLine: config.wrapDateLine !== undefined ? config.wrapDateLine : true, + minZoomLevel: config.minZoomLevel, + maxZoomLevel: config.maxZoomLevel, maxResolution: config.maxResolution, numZoomLevels: config.numZoomLevels, displayInLayerSwitcher: false