Merge pull request #583 from umap-project/prepare-1.0

[WIP] Prepare 1.0
This commit is contained in:
Yohan Boniface 2018-07-07 09:06:22 +02:00 committed by GitHub
commit 9dd9581990
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
227 changed files with 47824 additions and 977 deletions

3
.gitignore vendored
View file

@ -5,6 +5,8 @@ docs/_build
umap/remote_static
.idea
tmp/*
node_modules/*
umap/static/umap/vendors
### Python ###
# Byte-compiled / optimized / DLL files
@ -53,6 +55,7 @@ nosetests.xml
coverage.xml
*,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo

View file

@ -1,7 +1,6 @@
sudo: false
language: python
python:
- "2.7"
- "3.4"
- "3.5"
- "3.6"

View file

@ -1,10 +1,16 @@
[main]
host = https://www.transifex.com
[umap.project]
[umap.backend]
file_filter = umap/locale/<lang>/LC_MESSAGES/django.po
source_file = umap/locale/en/LC_MESSAGES/django.po
source_lang = en
type = PO
[umap.frontend]
file_filter = umap/static/umap/locale/<lang>.json
source_file = umap/static/umap/locale/en.json
source_lang = en
type = KEYVALUEJSON

View file

@ -3,3 +3,4 @@ include requirements.txt
recursive-include umap/static *
recursive-include umap/templates *
recursive-include umap/locale *
recursive-include ui *

View file

@ -1,2 +1,55 @@
test:
py.test
py.test -xv umap/tests/
develop:
python setup.py develop
release: test makemessages
python setup.py sdist bdist_wheel
test_publish:
twine upload -r testpypi dist/*
publish:
twine upload dist/*
make clean
clean:
rm -f dist/*
rm -rf build/*
compilemessages:
django-admin.py compilemessages
node node_modules/leaflet-i18n/bin/i18n.js --dir_path=umap/static/umap/js/ --dir_path=umap/static/umap/vendors/measurable/ --locale_dir_path=umap/static/umap/locale/ --locale_codes=en --mode=json --clean --default_values
makemessages:
django-admin.py makemessages -a
umap generate_js_locale
ui:
mkdir -p umap/static/umap/vendors/leaflet/ && cp -r node_modules/leaflet/dist/** umap/static/umap/vendors/leaflet/
mkdir -p umap/static/umap/vendors/editable/ && cp -r node_modules/leaflet-editable/src/*.js umap/static/umap/vendors/editable/
mkdir -p umap/static/umap/vendors/editable/ && cp -r node_modules/leaflet.path.drag/src/*.js umap/static/umap/vendors/editable/
mkdir -p umap/static/umap/vendors/hash/ && cp -r node_modules/leaflet-hash/*.js umap/static/umap/vendors/hash/
mkdir -p umap/static/umap/vendors/i18n/ && cp -r node_modules/leaflet-i18n/*.js umap/static/umap/vendors/i18n/
mkdir -p umap/static/umap/vendors/editinosm/ && cp -r node_modules/leaflet-editinosm/Leaflet.EditInOSM.* umap/static/umap/vendors/editinosm/
mkdir -p umap/static/umap/vendors/minimap/ && cp -r node_modules/leaflet-minimap/src/** umap/static/umap/vendors/minimap/
mkdir -p umap/static/umap/vendors/loading/ && cp -r node_modules/leaflet-loading/src/** umap/static/umap/vendors/loading/
mkdir -p umap/static/umap/vendors/markercluster/ && cp -r node_modules/leaflet.markercluster/dist/** umap/static/umap/vendors/markercluster/
mkdir -p umap/static/umap/vendors/contextmenu/ && cp -r node_modules/leaflet-contextmenu/dist/** umap/static/umap/vendors/contextmenu/
mkdir -p umap/static/umap/vendors/heat/ && cp -r node_modules/leaflet.heat/dist/** umap/static/umap/vendors/heat/
mkdir -p umap/static/umap/vendors/fullscreen/ && cp -r node_modules/leaflet-fullscreen/dist/** umap/static/umap/vendors/fullscreen/
mkdir -p umap/static/umap/vendors/toolbar/ && cp -r node_modules/leaflet-toolbar/dist/** umap/static/umap/vendors/toolbar/
mkdir -p umap/static/umap/vendors/formbuilder/ && cp -r node_modules/leaflet-formbuilder/*.js umap/static/umap/vendors/formbuilder/
mkdir -p umap/static/umap/vendors/measurable/ && cp -r node_modules/leaflet-measurable/Leaflet.Measurable.* umap/static/umap/vendors/measurable/
mkdir -p umap/static/umap/vendors/photon/ && cp -r node_modules/leaflet.photon/*.js umap/static/umap/vendors/photon/
mkdir -p umap/static/umap/vendors/csv2geojson/ && cp -r node_modules/csv2geojson/*.js umap/static/umap/vendors/csv2geojson/
mkdir -p umap/static/umap/vendors/togeojson/ && cp -r node_modules/togeojson/*.js umap/static/umap/vendors/togeojson/
mkdir -p umap/static/umap/vendors/osmtogeojson/ && cp -r node_modules/osmtogeojson/osmtogeojson.js umap/static/umap/vendors/osmtogeojson/
mkdir -p umap/static/umap/vendors/georsstogeojson/ && cp -r node_modules/georsstogeojson/GeoRSSToGeoJSON.js umap/static/umap/vendors/georsstogeojson/
mkdir -p umap/static/umap/vendors/togpx/ && cp -r node_modules/togpx/togpx.js umap/static/umap/vendors/togpx/
mkdir -p umap/static/umap/vendors/tokml && cp -r node_modules/tokml/tokml.js umap/static/umap/vendors/tokml
installjs:
npm install
testjsfx:
firefox umap/static/umap/test/index.html
testjs: node_modules
@./node_modules/mocha-phantomjs/bin/mocha-phantomjs --view 1024x768 umap/static/umap/test/index.html
tx_push:
tx push -s
tx_pull:
tx pull
.PHONY: ui

255
docs/changelog.md Normal file
View file

@ -0,0 +1,255 @@
# Changelog
## Upgrading to 1.0
- because of the merge of django-leaflet-storage inside umap, the migrations
has been reset, so a bit of SQL needs to be ran by hand:
```sql
BEGIN;
DELETE FROM django_migrations WHERE app = 'leaflet_storage';
DELETE FROM django_migrations WHERE app = 'umap';
ALTER TABLE leaflet_storage_datalayer RENAME TO umap_datalayer;
ALTER TABLE leaflet_storage_datalayer_id_seq RENAME TO umap_datalayer_id_seq;
ALTER TABLE leaflet_storage_licence RENAME TO umap_licence;
ALTER TABLE leaflet_storage_licence_id_seq RENAME TO umap_licence_id_seq;
ALTER TABLE leaflet_storage_map RENAME TO umap_map;
ALTER TABLE leaflet_storage_map_editors RENAME TO umap_map_editors;
ALTER TABLE leaflet_storage_map_editors_id_seq RENAME TO umap_map_editors_id_seq;
ALTER TABLE leaflet_storage_map_id_seq RENAME TO umap_map_id_seq;
ALTER TABLE leaflet_storage_pictogram RENAME TO umap_pictogram;
ALTER TABLE leaflet_storage_pictogram_id_seq RENAME TO umap_pictogram_id_seq;
ALTER TABLE leaflet_storage_tilelayer RENAME TO umap_tilelayer;
ALTER TABLE leaflet_storage_tilelayer_id_seq RENAME TO umap_tilelayer_id_seq;
COMMIT;
```
- Then fake initial migrations:
umap migrate --fake-initial
- Then run the new migrations:
umap migrate
- If you have customized some templates, change any `leaflet_storage/` path
to `umap/`
- If you have customized some static, change any `storage/` path
to `umap/`
- Each `LEAFLET_STORAGE_XXX` setting should be renamed in `UMAP_XXX` (but we
still support them for now)
## 1.0.0.rc-1
- BREAKING: support of python 2 is removed per upgrading to Django 2.0
- WARNING: merge Leaflet-Storage and django-leaflet-storage inside umap to ease
maintenance and contribution; See [Upgrading to 1.0](#upgrading-to-1.0)
- permissions management forms are now built in JS directly
- upgrade all dependencies
- added a language switcher in the home page footer
- added UMAP_CUSTOM_TEMPLATES and UMAP_CUSTOM_STATICS settings to make
customization easier
- added empty `umap/theme.css` to ease customization
- add download link in the map and datalayers edit panel
- fixed some touch related CSS issues
- removed support for old URL (changed in version `0.3.0`)
- added languages: hr (Croatian), pl (Polish), hu (Hungarian), sl (Slovenian),
el (Greek), gl (Galician)
- JS locales are now bundled, no need to generate them while installing
- local settings are now loaded from `/etc/umap/umap.conf` if available
- fixed an issue where it was not possible to change the tilelayer if the
tilelayer control was not added to the map (#587)
- `showLabel` is now a ternary value (instead of having this plus `labelHover`)
(#553)
- fixed resetting a select to undefined for inheritable fields (#551)
- fixed labelKey not being saved (#595)
- filtering in data browser now is also reflected in the displayed features
(#550)
## 0.8.0
- allow colon in properties to be consumed in popupTemplate
- added am_ET, pl and sk_SK locales
- fixed default licence being created in every available languages
- switch to pytest for unit tests
- Django 1.10 compatibility
- add DataLayer.rank
- Expose DataLayer versions
- python3 support
- add nofollow meta when map is not public
## 0.7.5
- upgrade osmtogeojson to 2.1.0
- localize and proxy dataUrl parameter
## 0.7.4
- fix anonymous not able to edit map anymore
## 0.7.3
- add tooltip when drawing
- import multiple files at a time
- added Chinese (Taiwan) locale
- fixed right-click on path vertex not working propertly when editing
## 0.7.1
- upgrade Leaflet.Editable to 0.2.0
- fixed some bugs after Leaflet.Editable switch
## 0.7.0
- introduce panel popup mode
- upgraded leaflet.loading to 0.1.10
- make the cluster text color dynamic
- fix missing icons for transorm to polygon/polyline actions
- add a slideshow mode
- make possible to set cluster color by hand
- make possible to manage showLabel from layer and map
- basic kml/gpx download support
- MultiLineString are merged at import
- catch setMaxBounds errors (when using useless bounds)
- first version of a table editor
- it's now possible to cancel every mouse action of a polygon
(useful when using them as background)
- simple custom popup templates
- more control over map data attribution (custom inputs added)
- basic HTTP optimistic concurrency control
- add "empty" button in limit bounds fieldset
- make possible to decide which properties the data browser will filter on
- add "datalayers" query string parameter to override shown datalayers on map load
- add edit fieldset for changing marker latlng by hand
- moved from Leaflet.Draw to Leaflet.Editable
- added Vietnamese
- by default, allow_edit is now false
- added Chinese (Taiwan) locale
## 0.6.x
- add TMS option to custom tilelayer
- allow to define default properties at map level
- support iframe in text formatting
- fix bug where polygon export were adding a point
- make that only visible elements are downloaded
- iframe export helper
- add Leaflet.label (for marker only atm)
- GeoRSS support
- heatmap support, thanks to https://github.com/Leaflet/Leaflet.heat
- added optional caption bar
- added new "large" popup template
- added a button to empty a layer without deleting it
- added a button to clone a datalayer
- added dataUrl and dataFormat on map creation page
- basic support for GeometryCollection import
- removed submodules and switched to grunt for assets management
- upgrade to django 1.6
- sesql replaced by django-pgindex
- support for gzip for datalayer geojson
- support for X-Senfile/Accel-Redirect
- more translations
- fix anonymous map owner not able to delete their map
- fix missing vendors assets
- reset South migrations (some were bugged); to be back again with django 1.7
- added russian locale
- http optimistic concurrency control
- longer anonymous cookie max_age (one month instead of session only)
- add possibility to override default zoom with LEAFLET_ZOOM setting
- fix bug where anonymous map wasn't editable by logged in users even if
edit status was ANONYMOUS
## 0.5.x
- datalayers are now sent to backend as geojson
- there is now a global "save" button, and also a "cancel changes"
- added a contextmenu, thanks to https://github.com/aratcliffe/Leaflet.contextmenu
- added a loader, thanks to https://github.com/ebrelsford/Leaflet.loading
- import are processed client side, thanks to https://github.com/mapbox/csv2geojson
and https://github.com/mapbox/togeojson
- download is handled client side
- option "outlink" as been added, to open external URL on polygon click
- edit shortcuts has been added (Ctrl-E to toggle edit status, Ctrl-S to save, etc.)
- links in popup now open in a now window
- possibility to add custom icon symbols
- new option to clusterize markers, thanks to https://github.com/Leaflet/Leaflet.markercluster
- remote data option added to datalayer: this will fetch data from a given URL
instead of from the local database
- popup window can now display a table with all features properties
- support of OSM XML format, thanks to https://github.com/tyrasd/osmtogeojson
- added a measure control, thanks to https://github.com/makinacorpus/Leaflet.MeasureControl
- added Transifex config
- simple help boxes
- it's now possible to set background layer with manual settings
- add an edit button in the data browser (when in edit mode)
- add icon URL formatting with feature properties
- add "Transform to Polygon/Polyline" action
- new link on contextmenu to open external routing service from clicked point
- fix bug where features were duplicated when datalayer was deleted then reverted
- add layer action to databrowser
- add optional default CSS
- allow to close panel by ctrl-Enter when editing in textarea
- add management for map max bounds
- add Ctrl-Z for canceling changes
- internal storage structure totally reviewed: datalayers are stored as geojson files,
instead of being split in features stored in PostGIS
- upload and download moved to client side (see Leaflet.Storage)
- cloned map name is now prefixed by "Clone of "
- added Transifex config
- workaround for non asciiable map names
- add a share_status fielf in Map model
## 0.4.x
- add a data browser
- add a popup footer with navigation between features
- some work on IE compat
- new tilelayer visual switcher
- Spanish translation, thanks to @ikks
- renamed internally category in datalayer
- add a rank column to tilelayer to control their order in the tilelayer edit box
- fix description that was not exported in the GeoJSON export
- return proper 403 if bad signature on anonymous_edit_url access
- refactored tilelayer management
- smarter encoding management at import
- smarter errors management at import
- handle other delimiters than just comma for CSV import
- Spanish translation, thanks to @ikks
- map clone possibility
## 0.3.x
- add a setting to display map caption on map load (cf #50)
- add nl translation
- update to Leaflet 0.6-dev and Leaflet.Draw 0.2
- handle anonymous map creation
- Fix color no more displayed in map info box (cf #70)
- portuguese translation (thanks @FranciscoDS)
- fix bug when the map title was too long (making the slug too long, and so over the
database limit for this field)
- add a setting to display map caption on map load (cf Leaflet.Storage#50)
- update to django 1.5
- first version of a CSV import
- add a Textarea in import form
- first version of data export (GeoJSON only for now)
## 0.2.0
- handle auth from popup
- add a control for map settings management
- move to Leaflet 0.5
- move to Leaflet.draw 0.1.6
- default tooltip has now a fixed position
- make just drown polys editable
- handle path styling option (https://github.com/yohanboniface/Leaflet.Storage/issues/26)
- add an UI to manage icon style and picto (https://github.com/yohanboniface/django-leaflet-storage/issues/22)
- icon style and picto are now manageable also on Markers (https://github.com/yohanboniface/django-leaflet-storage/issues/21)
- add Leaflet.EditInOSM plugin in options
- add a scale control (optional)
- add an optional minimap (with Leaflet.MiniMap plugin)
- handle map settings management from front-end
- handle path styling options (https://github.com/yohanboniface/Leaflet.Storage/issues/26)
- remove Category.rank (https://github.com/yohanboniface/django-leaflet-storage/issues/46)
- Marker has now icon_class and pictogram fields (https://github.com/yohanboniface/django-leaflet-storage/issues/21)
- handle scale control
- basic short URL management
- fixed a bug where imports were failing if the category had a custom marker image
## 0.1.0
- first packaged version

83
docs/custom.md Normal file
View file

@ -0,0 +1,83 @@
# Customize your uMap installation
When running your own uMap, you may want to changed its appearance, for example
you want your own logo on the home page, or you want to apply some design, or
you want to add some tracking (but anonymous!) script…
This is done by overriding templates, CSS and images and telling uMap about
that.
So basically you'll have your own templates and/or statics directories where
you will put the templates or statics you want to control (and only those).
Inside thore directory, you need to respect the exact relative path of the
templates or statics you are adding, relatively to the
[templates](https://github.com/umap-project/umap/tree/master/umap/templates)
and
[static](https://github.com/umap-project/umap/tree/master/umap/static)
roots in the uMap structure.
For example, if you want to control the logo, you will add your own static with
the relative path `umap/img/logo.svg`.
The same apply to any file inside `umap/templates` and `umap/statics`.
## Settings
- `UMAP_CUSTOM_TEMPLATES` (`path`): points to the directory where the custom
templates are stored
- `UMAP_CUSTOM_STATICS` (`path`): points to the directory where the custom
templates are stored
## Example
Let's say we want to customize the home page, with a custom header, a custom
logo, and some CSS adjustments.
For this we need to control at least two files:
- `umap/navigation.html`
- `umap/theme.css`
Let's create one templates directory:
mkdir -p /srv/umap/custom/templates/
And one static directory:
mkdir -p /srv/umap/custom/static/
Now let's create our custom navigation file:
vim /srv/umap/custom/templates/umap/navigation.html
We certainly want to copy-paste the
[original one](https://github.com/umap-project/umap/blob/master/umap/templates/umap/navigation.html)
to adapt it.
Now let's add our custom logo, with whatever path inside the static dir, given
we'll customize also the CSS:
mv mylogo.png /srv/umap/custom/static/umap/mylogo.png
And then let's add some custom rules, for example the one to load our logo:
```css
.umap-nav h1 a {
background-image: url("./img/mylogo.png");
}
```
And we want the header to be red:
```css
.umap-nav {
background-color: red;
}
```
And so on!
See also
[https://github.com/etalab/cartes.data.gouv.fr](https://github.com/etalab/cartes.data.gouv.fr)
for an example of customization.

View file

@ -82,10 +82,6 @@ you will need to run again this last line.*
umap collectstatic
## Create languages files
umap storagei18n
## Create a superuser
umap createsuperuser

View file

@ -5,4 +5,6 @@ pages:
- Contributing: contributing.md
- how-tos:
- Ubuntu from scratch: ubuntu.md
- Customize your uMap style: custom.md
- Changelog: changelog.md
theme: readthedocs

2465
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

63
package.json Normal file
View file

@ -0,0 +1,63 @@
{
"name": "umap",
"version": "1.0.0-alpha.1",
"description": "Manage map and features with Leaflet and expose them for backend storage through an API.",
"directories": {
"test": "test"
},
"devDependencies": {
"chai": "^3.3.0",
"grunt": "^0.4.4",
"grunt-cli": "^1.2.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-copy": "^0.5.0",
"happen": "~0.1.3",
"mocha": "^2.3.3",
"mocha-phantomjs": "^4.0.1",
"optimist": "~0.4.0",
"phantomjs": "^1.9.18",
"sinon": "^1.10.3",
"uglify-js": "~2.2.3"
},
"scripts": {
"test": "firefox test/index.html",
"build": "grunt"
},
"repository": {
"type": "git",
"url": "git://github.com/umap-project/Leaflet.Storage.git"
},
"keywords": [
"leaflet"
],
"author": "Yohan Boniface",
"license": "WTFPL",
"bugs": {
"url": "https://github.com/umap-project/Leaflet.Storage/issues"
},
"homepage": "http://wiki.openstreetmap.org/wiki/UMap",
"dependencies": {
"csv2geojson": "5.0.2",
"georsstogeojson": "^0.1.0",
"leaflet": "1.3.1",
"leaflet-contextmenu": "^1.4.0",
"leaflet-editable": "^1.1.0",
"leaflet-editinosm": "0.2.3",
"leaflet-formbuilder": "0.2.3",
"leaflet-fullscreen": "1.0.2",
"leaflet-hash": "0.2.1",
"leaflet-i18n": "0.3.1",
"leaflet-loading": "0.1.24",
"leaflet-measurable": "0.0.5",
"leaflet-minimap": "^3.6.1",
"leaflet-toolbar": "umap-project/Leaflet.toolbar",
"leaflet.heat": "0.2.0",
"leaflet.markercluster": "^1.3.0",
"leaflet.path.drag": "0.0.6",
"leaflet.photon": "0.7.3",
"osmtogeojson": "^3.0.0-beta.3",
"togeojson": "0.16.0",
"togpx": "^0.5.4",
"tokml": "0.4.0"
}
}

View file

@ -1,2 +1,2 @@
[pytest]
DJANGO_SETTINGS_MODULE=umap.settings
DJANGO_SETTINGS_MODULE=umap.tests.settings

View file

@ -1,3 +1,4 @@
factory-boy==2.11.1
pytest==3.0.7
pytest-django==3.1.2
mkdocs==0.16.3

View file

@ -1,8 +1,8 @@
Django==1.11
Django==2.0.5
django-agnocomplete==0.12.2
django-compressor==2.1.1
django-leaflet-storage==0.8.2
Pillow==4.1.0
psycopg2==2.7.1
requests==2.13.0
social-auth-app-django==1.1.0
Pillow==5.1.0
psycopg2==2.7.4
requests==2.18.4
social-auth-app-django==2.1.0
social-auth-core==1.7.0

View file

@ -23,20 +23,26 @@ setup(
author=umap.__author__,
author_email=umap.__contact__,
description=umap.__doc__,
keywords="django leaflet geodjango openstreetmap",
keywords="django leaflet geodjango openstreetmap map",
url=umap.__homepage__,
packages=find_packages(),
include_package_data=True,
platforms=["any"],
zip_safe=True,
long_description=long_description,
long_description_content_type='text/markdown',
install_requires=install_requires,
classifiers=[
"Development Status :: 3 - Alpha",
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Topic :: Software Development :: Libraries :: Python Modules",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
],
entry_points={
'console_scripts': ['umap=umap.bin:main'],

13
umap/admin.py Normal file
View file

@ -0,0 +1,13 @@
from django.contrib.gis import admin
from .models import Map, DataLayer, Pictogram, TileLayer, Licence
class TileLayerAdmin(admin.ModelAdmin):
list_display = ('name', 'rank', )
list_editable = ('rank', )
admin.site.register(Map, admin.OSMGeoAdmin)
admin.site.register(DataLayer)
admin.site.register(Pictogram)
admin.site.register(TileLayer, TileLayerAdmin)
admin.site.register(Licence)

19
umap/autocomplete.py Normal file
View file

@ -0,0 +1,19 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse
from agnocomplete.register import register
from agnocomplete.core import AgnocompleteModel
@register
class AutocompleteUser(AgnocompleteModel):
model = get_user_model()
fields = ['^username']
def item(self, current_item):
data = super().item(current_item)
data['url'] = reverse(settings.USER_MAPS_URL,
args=(current_item.get_username(), ))
return data

View file

@ -15,4 +15,3 @@ def version(request):
return {
'UMAP_VERSION': __version__
}

57
umap/decorators.py Normal file
View file

@ -0,0 +1,57 @@
from functools import wraps
from django.urls import reverse_lazy
from django.shortcuts import get_object_or_404
from django.http import HttpResponseForbidden
from django.conf import settings
from .views import simple_json_response
from .models import Map
LOGIN_URL = getattr(settings, "LOGIN_URL", "login")
LOGIN_URL = (reverse_lazy(LOGIN_URL) if not LOGIN_URL.startswith("/")
else LOGIN_URL)
def login_required_if_not_anonymous_allowed(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
if (not getattr(settings, "UMAP_ALLOW_ANONYMOUS", False)
and not request.user.is_authenticated):
return simple_json_response(login_required=str(LOGIN_URL))
return view_func(request, *args, **kwargs)
return wrapper
def map_permissions_check(view_func):
"""
Used for URLs dealing with the map.
"""
@wraps(view_func)
def wrapper(request, *args, **kwargs):
map_inst = get_object_or_404(Map, pk=kwargs['map_id'])
user = request.user
kwargs['map_inst'] = map_inst # Avoid rerequesting the map in the view
if map_inst.edit_status >= map_inst.EDITORS:
can_edit = map_inst.can_edit(user=user, request=request)
if not can_edit:
if map_inst.owner and not user.is_authenticated:
return simple_json_response(login_required=str(LOGIN_URL))
else:
return HttpResponseForbidden('Action not allowed for user.')
return view_func(request, *args, **kwargs)
return wrapper
def jsonize_view(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
response = view_func(request, *args, **kwargs)
response_kwargs = {}
if hasattr(response, 'rendered_content'):
response_kwargs['html'] = response.rendered_content
if response.has_header('location'):
response_kwargs['redirect'] = response['location']
return simple_json_response(**response_kwargs)
return wrapper

33
umap/fields.py Normal file
View file

@ -0,0 +1,33 @@
import json
from django.utils import six
from django.db import models
from django.utils.encoding import smart_text
class DictField(models.TextField):
"""
A very simple field to store JSON in db.
"""
def get_prep_value(self, value):
if not value:
value = {}
if not isinstance(value, six.string_types):
value = json.dumps(value)
return value
def from_db_value(self, value, expression, connection, context):
return self.to_python(value)
def to_python(self, value):
if not value:
value = {}
if isinstance(value, six.string_types):
return json.loads(value)
else:
return value
def value_to_string(self, obj):
"""Return value from object converted to string properly"""
return smart_text(self.get_prep_value(self.value_from_object(obj)))

87
umap/forms.py Normal file
View file

@ -0,0 +1,87 @@
from django import forms
from django.contrib.gis.geos import Point
from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _
from django.template.defaultfilters import slugify
from django.conf import settings
from django.forms.utils import ErrorList
from .models import Map, DataLayer
DEFAULT_LATITUDE = settings.LEAFLET_LATITUDE if hasattr(settings, "LEAFLET_LATITUDE") else 51
DEFAULT_LONGITUDE = settings.LEAFLET_LONGITUDE if hasattr(settings, "LEAFLET_LONGITUDE") else 2
DEFAULT_CENTER = Point(DEFAULT_LONGITUDE, DEFAULT_LATITUDE)
User = get_user_model()
class FlatErrorList(ErrorList):
def __unicode__(self):
return self.flat()
def flat(self):
if not self:
return u''
return u''.join([e for e in self])
class UpdateMapPermissionsForm(forms.ModelForm):
class Meta:
model = Map
fields = ('edit_status', 'editors', 'share_status', 'owner')
class AnonymousMapPermissionsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AnonymousMapPermissionsForm, self).__init__(*args, **kwargs)
full_secret_link = "%s%s" % (settings.SITE_URL, self.instance.get_anonymous_edit_url())
help_text = _('Secret edit link is %s') % full_secret_link
self.fields['edit_status'].help_text = _(help_text)
STATUS = (
(Map.ANONYMOUS, _('Everyone can edit')),
(Map.OWNER, _('Only editable with secret edit link'))
)
edit_status = forms.ChoiceField(choices=STATUS)
class Meta:
model = Map
fields = ('edit_status', )
class DataLayerForm(forms.ModelForm):
class Meta:
model = DataLayer
fields = ('geojson', 'name', 'display_on_load', 'rank')
class MapSettingsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MapSettingsForm, self).__init__(*args, **kwargs)
self.fields["slug"].required = False
def clean_slug(self):
slug = self.cleaned_data.get('slug', None)
name = self.cleaned_data.get('name', None)
if not slug and name:
# If name is empty, don't do nothing, validation will raise
# later on the process because name is required
self.cleaned_data['slug'] = slugify(name) or "map"
return self.cleaned_data['slug'][:50]
else:
return ""
def clean_center(self):
if not self.cleaned_data['center']:
point = DEFAULT_CENTER
self.cleaned_data['center'] = point
return self.cleaned_data['center']
class Meta:
fields = ('settings', 'name', 'center', 'slug')
model = Map

View file

@ -9,14 +9,13 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2015-11-15 14:24+0000\n"
"Last-Translator: Alazar Tekle <al3may3hu@gmail.com>\n"
"Language-Team: Amharic (Ethiopia) (http://www.transifex.com/yohanboniface/"
"umap/language/am_ET/)\n"
"Language: am_ET\n"
"PO-Revision-Date: 2017-09-22 17:21+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Amharic (Ethiopia) (http://www.transifex.com/yohanboniface/umap/language/am_ET/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: am_ET\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
@ -33,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "የአራሚዎችን ኒክ በመፃፍ ጨምር"
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "የአራሚዎችን ኒክ በመፃፍ ጨምር"
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -71,9 +68,7 @@ msgstr "እባክዎ አቅራቢ ይምረጡ"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"ዩማፕ በ <a href=\"%(osm_url)s\" />ኦፕን ስትሪት ማፕ</a> ሌየሮች ካርታዎችን በደቂቃ ውስጥ ሰርተን "
"በገፃችን ማካተት እንድንችል ያደርገናል"
msgstr "ዩማፕ በ <a href=\"%(osm_url)s\" />ኦፕን ስትሪት ማፕ</a> ሌየሮች ካርታዎችን በደቂቃ ውስጥ ሰርተን በገፃችን ማካተት እንድንችል ያደርገናል"
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -120,13 +115,10 @@ msgstr "በማሳያው ተለማመድ"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"ይህ ለሙከራ እና ፕሪ-ሮሊግ ሪሊዞች የሚያገለግል ማሳያ ነው። ቋሚ የሆነ ማሳያ ከፈለጉ እባክዎ <a href="
"\"%(stable_url)s\">%(stable_url)s</a> ይጠቀሙ። እንዲሁም የራስዎን ማስቀመጥ ይችላሉ፣ <a href="
"\"%(repo_url)s\">ነፃ እና ክፍት</a> ነው!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "ይህ ለሙከራ እና ፕሪ-ሮሊግ ሪሊዞች የሚያገለግል ማሳያ ነው። ቋሚ የሆነ ማሳያ ከፈለጉ እባክዎ <a href=\"%(stable_url)s\">%(stable_url)s</a> ይጠቀሙ። እንዲሁም የራስዎን ማስቀመጥ ይችላሉ፣ <a href=\"%(repo_url)s\">ነፃ እና ክፍት</a> ነው!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -214,5 +206,182 @@ msgstr "ፈልግ"
msgid "View the map"
msgstr "ካርታውን አሳይ"
#~ msgid "Map settings"
#~ msgstr "የካርታዎች ሁኔታ"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "የሚስጥር የማረሚያ መስመሩ %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "ሁሉም ማረም ይችላል"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "በሚስጥር የመረሚያ መስመሩ ብቻ የሚታረም"
#: models.py:20
msgid "name"
msgstr "ስም"
#: models.py:42
msgid "No licence set"
msgstr "ምንም ፈቃድ አልተሰጠም"
#: models.py:51
msgid "details"
msgstr "ዝርዝሮች"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "ፈቃዱ በዝርዝር ከተቀመጠ ገፅ ጛር አገናኝ"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "የድረ-ገፅ አድራሻ ተምሳሌ በኦ.ኤስ.ኤም. የታይል ፎርማት"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "በማረሚያ ሳጥኑ ውስጥ የታይል ሌየሮቹ ቅደም ተከተል"
#: models.py:114
msgid "Only editors can edit"
msgstr "አራሚዎች ብቻ ማረም ይችላሉ"
#: models.py:115
msgid "Only owner can edit"
msgstr "ባለቤት ብቻ ማረም ይችላል"
#: models.py:118
msgid "everyone (public)"
msgstr "ሁሉም (የህዝብ)"
#: models.py:119
msgid "anyone with link"
msgstr "አድራሻው ያለው ሁሉ"
#: models.py:120
msgid "editors only"
msgstr "አራሚዎች ብቻ"
#: models.py:123 models.py:257
msgid "description"
msgstr "መገለጫ"
#: models.py:124
msgid "center"
msgstr "መሀከል"
#: models.py:125
msgid "zoom"
msgstr "ዙም"
#: models.py:126
msgid "locate"
msgstr "ጠቁም"
#: models.py:126
msgid "Locate user on load?"
msgstr "በመጫን ላይ ያለውን ተጠቃሚ ጠቁም?"
#: models.py:129
msgid "Choose the map licence."
msgstr "የካርታውን ፈቃድ ከልስ"
#: models.py:130
msgid "licence"
msgstr "ፈቃድ"
#: models.py:135
msgid "background"
msgstr "ጀርባ"
#: models.py:136
msgid "owner"
msgstr "ባለቤት"
#: models.py:137
msgid "editors"
msgstr "አራሚዎች"
#: models.py:138
msgid "edit status"
msgstr "ያለበትን ሁኔታ አርም"
#: models.py:139
msgid "share status"
msgstr "ያለበትን ሁኔታ አጋራ"
#: models.py:140
msgid "settings"
msgstr "ሁኔታዎች"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "በግልፅ ያልተቀመጠው ካርታዎ ከ %s አካውንትዎ ጋር ተያይዟል"
#: models.py:211
msgid "Clone of"
msgstr "ድቃይ"
#: models.py:262
msgid "display on load"
msgstr "በመጫን ላይ አሳይ"
#: models.py:263
msgid "Display this layer on load."
msgstr "ሌየሩ በመጫን ላይ አሳይ"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "ገብተዋል። በመቀጠል ላይ ..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "የካርታ ፍቃዶች"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "እባክዎ ለመቀጠል ይግቡ"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "የተገልጋይ ስምዎ እና የይለፍ ቃልዎ አልተዛመደም። እባክዎ እንደገና ይሞክሩ።"
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "ካርታዎ ተፈጥሯል! ይህንን ካርታ ከሌላ ኮምፒውተር ላይ ሆነው ለማረም ከፈለጉ የሚከተለውን አድራሻ ይጠቀሙ %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "እንኳን ደስ አለዎ ካርታዎ ተፈጥሯል!"
#: views.py:264
msgid "Map has been updated!"
msgstr "ካርታው ታድሷል!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "የካርታ አራሚዎች በትክክል ታድሰዋል!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "ካርታውን የሚሰርዘው ባለቤቱ ብቻ ነው።"
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "ካርታዎ ተዳቅሏል! ይህንን ካርታ ከሌላ ኮምፒውተር ላይ ሆነው ለማረም ከፈለጉ የሚከተለውን አድራሻ ይጠቀሙ %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "እንኳን ደስ አለዎ ካርታዎ ተዳቅሏል!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "ሌየሩ በትክክል ተሰርዟ"

Binary file not shown.

View file

@ -10,14 +10,13 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-07-20 14:03+0000\n"
"PO-Revision-Date: 2017-09-23 19:25+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/umap/language/"
"bg/)\n"
"Language: bg\n"
"Language-Team: Bulgarian (http://www.transifex.com/yohanboniface/umap/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
@ -70,10 +69,7 @@ msgstr "Моля изберете провайдер"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap ви позволява да създавате карти базирани върху слоевете на <a href="
"\"%(osm_url)s\" /> OpenStreetMap </ A> само за минути и да ги вградите в "
"сайта си."
msgstr "uMap ви позволява да създавате карти базирани върху слоевете на <a href=\"%(osm_url)s\" /> OpenStreetMap </ A> само за минути и да ги вградите в сайта си."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -89,9 +85,7 @@ msgstr "Промени POIs цветове и икони"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Играй с опциите на картата: покажи миникарта, локализирай потребителя при "
"зареждане ..."
msgstr "Играй с опциите на картата: покажи миникарта, локализирай потребителя при зареждане ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -122,14 +116,10 @@ msgstr "Играй си с демото"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Това е само демо пример, използван за тестове и предварителни издания. Ако "
"имате нужда от стабилна версия, моля използвайте <a href=\"%(stable_url)s\">"
"%(stable_url)s</ A>. Можете също така да бъде хост на вашата собствена "
"версия, това е <a href=\"%(repo_url)s\"> отворен код </ A>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Това е само демо пример, използван за тестове и предварителни издания. Ако имате нужда от стабилна версия, моля използвайте <a href=\"%(stable_url)s\">%(stable_url)s</ A>. Можете също така да бъде хост на вашата собствена версия, това е <a href=\"%(repo_url)s\"> отворен код </ A>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -217,5 +207,182 @@ msgstr "Търсене"
msgid "View the map"
msgstr "Виж картата"
#~ msgid "Map settings"
#~ msgstr "Настройки на картата"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Тайно редактиране на линк е %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Всеки може да редактира"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Само може да се редактира с тайно редактиран линк"
#: models.py:20
msgid "name"
msgstr "име"
#: models.py:42
msgid "No licence set"
msgstr "Няма избран лиценз"
#: models.py:51
msgid "details"
msgstr "детайли"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Линк към страницата с подробно описание за лиценза."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "URL шаблон, използван формат OSM плочи"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Поръчка на tilelayers в полето за редактиране"
#: models.py:114
msgid "Only editors can edit"
msgstr "Само редактори могат да редактират"
#: models.py:115
msgid "Only owner can edit"
msgstr "Само притежателят може да редактира"
#: models.py:118
msgid "everyone (public)"
msgstr "всеки (публично)"
#: models.py:119
msgid "anyone with link"
msgstr "всеки които има линк"
#: models.py:120
msgid "editors only"
msgstr "само редакторите"
#: models.py:123 models.py:257
msgid "description"
msgstr "описание"
#: models.py:124
msgid "center"
msgstr "център"
#: models.py:125
msgid "zoom"
msgstr "мащаб"
#: models.py:126
msgid "locate"
msgstr "локализирай"
#: models.py:126
msgid "Locate user on load?"
msgstr "Локализирай потребител при зареждане?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Избери лиценз за картата."
#: models.py:130
msgid "licence"
msgstr "лиценз"
#: models.py:135
msgid "background"
msgstr "фон"
#: models.py:136
msgid "owner"
msgstr "притежател"
#: models.py:137
msgid "editors"
msgstr "редактори"
#: models.py:138
msgid "edit status"
msgstr "статус на редактиране"
#: models.py:139
msgid "share status"
msgstr "сподели статус"
#: models.py:140
msgid "settings"
msgstr "настройки"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Вашата анонимна карта е прикрепена към вашия акаунт %s"
#: models.py:211
msgid "Clone of"
msgstr "Клониране на"
#: models.py:262
msgid "display on load"
msgstr "покажи при зареждане"
#: models.py:263
msgid "Display this layer on load."
msgstr "Покажи този слой при зареждане"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "В процес на включване. Продължение..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Разрешения за картата"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Моля, включете се за да осъществите тази процедура"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Вашето потребителско име и парола не съвпадат. Моля, опитайте отново."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Вашата карта е създадена! Ако искате да редактирате тази карта от друг компютър, моля използвайте този линк : %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Поздравления, вашата карта е създадена!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Карта е актуализирана!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Редакторите на картата актуализират с успех!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Само собственикът може да изтрие картата."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Вашата карта е клонирана! Ако искате да редактирате тази карта от друг компютър, моля използвайте този линк: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Поздравления, вашата карта е клонирана!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Слоят е изтрит успешно."

Binary file not shown.

View file

@ -3,20 +3,19 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# jmontane <joan@montane.cat>, 2014
# jmontane, 2014
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-04-23 18:50+0000\n"
"Last-Translator: jmontane <joan@montane.cat>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/umap/language/"
"ca/)\n"
"Language: ca\n"
"PO-Revision-Date: 2017-09-23 19:45+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Catalan (http://www.transifex.com/yohanboniface/umap/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
@ -33,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "Escriviu els sobrenoms dels editors a afegir..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Escriviu els sobrenoms dels editors a afegir..."
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -71,9 +68,7 @@ msgstr "Trieu un proveïdor"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"El uMap us permet crear mapes amb capes de l'<a href=\"%(osm_url)s\" /"
">OpenStreetMap</a> en un minut i incrustar-los al vostre lloc web."
msgstr "El uMap us permet crear mapes amb capes de l'<a href=\"%(osm_url)s\" />OpenStreetMap</a> en un minut i incrustar-los al vostre lloc web."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -89,9 +84,7 @@ msgstr "Gestioneu els colors i les icones dels PDI"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Gestioneu les opcions del mapa: mostreu un minimapa, ubiqueu l'usuari en "
"carregar..."
msgstr "Gestioneu les opcions del mapa: mostreu un minimapa, ubiqueu l'usuari en carregar..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -122,14 +115,10 @@ msgstr "Jugueu amb la demostració"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Aquesta és una versió de demostració, usada per a fer proves i desplegar "
"versions. Si us cal un versió estable, useu <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. També podeu hostatjar la vostra pròpia còpia, és <a href="
"\"%(repo_url)s\">codi lliure</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Aquesta és una versió de demostració, usada per a fer proves i desplegar versions. Si us cal un versió estable, useu <a href=\"%(stable_url)s\">%(stable_url)s</a>. També podeu hostatjar la vostra pròpia còpia, és <a href=\"%(repo_url)s\">codi lliure</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -217,5 +206,182 @@ msgstr "Cerca"
msgid "View the map"
msgstr "Mostra el mapa"
#~ msgid "Map settings"
#~ msgstr "Paràmetres del mapa"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "L'enllaç d'edició secret és %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Tothom pot editar"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Només es pot editar amb l'enllaç d'edició secret"
#: models.py:20
msgid "name"
msgstr "nom"
#: models.py:42
msgid "No licence set"
msgstr "No s'ha indicat llicència"
#: models.py:51
msgid "details"
msgstr "detalls"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Enllaç a una pàgina on es detalla la llicència."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "La plantilla de l'URL usa el format de tesel·les de l'OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Ordre de les capes de tessel·les al quadre d'edició"
#: models.py:114
msgid "Only editors can edit"
msgstr "Només els editors poden editar"
#: models.py:115
msgid "Only owner can edit"
msgstr "Només el propietari pot editar"
#: models.py:118
msgid "everyone (public)"
msgstr "tothom (públic)"
#: models.py:119
msgid "anyone with link"
msgstr "qualsevol amb l'enllaç"
#: models.py:120
msgid "editors only"
msgstr "només els editors"
#: models.py:123 models.py:257
msgid "description"
msgstr "descripció"
#: models.py:124
msgid "center"
msgstr "centre"
#: models.py:125
msgid "zoom"
msgstr "escala"
#: models.py:126
msgid "locate"
msgstr "ubica"
#: models.py:126
msgid "Locate user on load?"
msgstr "Voleu ubicar l'usuari en carregar?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Trieu la llicència del mapa."
#: models.py:130
msgid "licence"
msgstr "llicència"
#: models.py:135
msgid "background"
msgstr "fons"
#: models.py:136
msgid "owner"
msgstr "propietari"
#: models.py:137
msgid "editors"
msgstr "editors"
#: models.py:138
msgid "edit status"
msgstr "edita l'estat"
#: models.py:139
msgid "share status"
msgstr "comparteix l'estat"
#: models.py:140
msgid "settings"
msgstr "paràmetres"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "El vostre mapa anònim s'ha enllaçat al compte %s"
#: models.py:211
msgid "Clone of"
msgstr "Clon de"
#: models.py:262
msgid "display on load"
msgstr "mostra en carregar"
#: models.py:263
msgid "Display this layer on load."
msgstr "Mostra aquesta capa en carregar."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Heu iniciat sessió. S'està continuant..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permisos del mapa"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Inicieu sessió per a procedir"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "L'usuari i contrasenya no coincideixen. Torneu-ho a intentar."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "S'ha creat el vostre mapa! Si voleu editar aquest mapa en un altre ordinador, useu aquest enllaç: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Enhorabona, s'ha creat el vostre mapa!"
#: views.py:264
msgid "Map has been updated!"
msgstr "S'ha actualitzat el mapa!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "S'han actualitzat els editors del mapa correctament!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Només el propietari pot suprimir el mapa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "S'ha clonat el vostre mapa! Si voleu editar aquest mapa en un altre ordinador, useu aquest enllaç: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Enhorabona, s'ha clonat el vostre mapa!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "S'ha suprimit la capa correctament."

View file

@ -9,15 +9,14 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2015-10-16 10:19+0000\n"
"Last-Translator: Jakub A. Tesinsky\n"
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/"
"yohanboniface/umap/language/cs_CZ/)\n"
"Language: cs_CZ\n"
"PO-Revision-Date: 2017-09-19 23:03+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/yohanboniface/umap/language/cs_CZ/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"Language: cs_CZ\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: templates/404.html:7
msgid "Take me to the home page"
@ -33,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "Vložte přezdívku přispěvovatele k přidání"
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Vložte přezdívku přispěvovatele k přidání"
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -71,9 +68,7 @@ msgstr "Vyberte poskytovatele mapy"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"Vytvářejte a sdílejte vlastní <a href=\"%(osm_url)s\" />OpenStreet</a> mapy "
"a během pár minut je použijte na svém webu."
msgstr "Vytvářejte a sdílejte vlastní <a href=\"%(osm_url)s\" />OpenStreet</a> mapy a během pár minut je použijte na svém webu."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -93,8 +88,7 @@ msgstr "Nastavte další možnosti - minimapu, lokalizaci uživatele, ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr ""
"Import existujících geodat v mnoha formátech (geojson, gpx, kml, osm...)"
msgstr "Import existujících geodat v mnoha formátech (geojson, gpx, kml, osm...)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
@ -121,14 +115,10 @@ msgstr "Vyzkoušejte si to hned"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Toto je ukázková verze, používaná na testování nových vydání uMap. Pokud "
"potřebujete stabilní verzi, použijte <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. Můžete si taky stáhnout celý projekt a nainstalovat na "
"svém serveru, je to <a href=\"%(repo_url)s\">open source</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Toto je ukázková verze, používaná na testování nových vydání uMap. Pokud potřebujete stabilní verzi, použijte <a href=\"%(stable_url)s\">%(stable_url)s</a>. Můžete si taky stáhnout celý projekt a nainstalovat na svém serveru, je to <a href=\"%(repo_url)s\">open source</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -216,5 +206,182 @@ msgstr "Hledej"
msgid "View the map"
msgstr "Prohlídnout si tuto mapu"
#~ msgid "Map settings"
#~ msgstr "Nastavení mapy"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Tajný odkaz umožňující úpravu mapy je %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Kdokoli může editovat"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Lze upravovat jen pomocí tajného odkazu"
#: models.py:20
msgid "name"
msgstr "název"
#: models.py:42
msgid "No licence set"
msgstr "Licence nenastavena."
#: models.py:51
msgid "details"
msgstr "podrobnosti"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Odkaz na stránku s podrobnějším popisem licence."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Vzor URL ve formátu pro dlaždice OSM "
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Pořadí vrstev při editaci"
#: models.py:114
msgid "Only editors can edit"
msgstr "Jen přispěvovatelé mohou editovat"
#: models.py:115
msgid "Only owner can edit"
msgstr "Jen vlastník může editovat"
#: models.py:118
msgid "everyone (public)"
msgstr "kdokoli (veřejná)"
#: models.py:119
msgid "anyone with link"
msgstr "kdokoli kdo má odkaz"
#: models.py:120
msgid "editors only"
msgstr "jen připěvovatelé"
#: models.py:123 models.py:257
msgid "description"
msgstr "popis"
#: models.py:124
msgid "center"
msgstr "střed"
#: models.py:125
msgid "zoom"
msgstr "přiblížení"
#: models.py:126
msgid "locate"
msgstr "lokalizuj"
#: models.py:126
msgid "Locate user on load?"
msgstr "Najdi poluhu uživatele na startu?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Vyberte si licenci mapy."
#: models.py:130
msgid "licence"
msgstr "licence"
#: models.py:135
msgid "background"
msgstr "pozadí"
#: models.py:136
msgid "owner"
msgstr "vlastník"
#: models.py:137
msgid "editors"
msgstr "přispěvovatelé"
#: models.py:138
msgid "edit status"
msgstr "kdo může provádět úpravy"
#: models.py:139
msgid "share status"
msgstr "nastavení sdílení"
#: models.py:140
msgid "settings"
msgstr "nastavení"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Vaše anonymní mapa byla připojena k vašemů účtu %s"
#: models.py:211
msgid "Clone of"
msgstr "Kopie"
#: models.py:262
msgid "display on load"
msgstr "zbraz na startu"
#: models.py:263
msgid "Display this layer on load."
msgstr "Zobrazit tuto vrstvu na startu."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Jste přihlášeni. Jedeme dál ..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Přístupová oprávnění"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Pro pokračování se musíte přihlásit"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Jméno či heslo nesouhlasí. Zkuste to prosím znovu."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Vaše mapa byla vytvořena! Pokud chcete upravovat tuto mapu z jiného počítače, použijte tento odkaz: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Gratulujeme, vaše mapa byla vytvořena!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Mapa byla aktualizována!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Seznam přispěvovatelů byl úspěšně upraven!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Jen vlastník může vymzat tuto mapu."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Byla vytvořena kopie mapy! Pokud chcete upravovat tuto mapu z jiného počítače, použijte tento odkaz: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Gratulujeme, byla vytvořena kopie mapy!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Vrstva úspěšně vymazána."

Binary file not shown.

View file

@ -9,14 +9,13 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-06-02 15:12+0000\n"
"Last-Translator: Neogeografen <soren.johannessen@gmail.com>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/umap/language/"
"da/)\n"
"Language: da\n"
"PO-Revision-Date: 2017-09-19 22:28+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Danish (http://www.transifex.com/yohanboniface/umap/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
@ -33,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "Indtast redaktørernes nickname for tilføjelse..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Indtast redaktørernes nickname for tilføjelse..."
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -71,9 +68,7 @@ msgstr "Vælg en udbyder"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"Med uMap kan du lave kort med <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"lag og på et minuts arbejde kan du indlejre disse på dit eget websted."
msgstr "Med uMap kan du lave kort med <a href=\"%(osm_url)s\" />OpenStreetMap</a> lag og på et minuts arbejde kan du indlejre disse på dit eget websted."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -89,9 +84,7 @@ msgstr "Håndterer POIs farver og ikoner"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Håndterer kortindstillinger: vis et miniaturekort, lokaliser brugeren ved "
"indlæsning..."
msgstr "Håndterer kortindstillinger: vis et miniaturekort, lokaliser brugeren ved indlæsning..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -122,14 +115,10 @@ msgstr "Leg med demoen"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Dette er en demo som bruges til test og forhåndstesting. Hvis du har brug "
"for en stabil testdemo, så brug <a href=\"%(stable_url)s\">%(stable_url)s</"
"a>. Du kan webhoste din egen testdemo. det er <a href=\"%(repo_url)s\">open "
"source</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Dette er en demo som bruges til test og forhåndstesting. Hvis du har brug for en stabil testdemo, så brug <a href=\"%(stable_url)s\">%(stable_url)s</a>. Du kan webhoste din egen testdemo. det er <a href=\"%(repo_url)s\">open source</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -217,5 +206,182 @@ msgstr "Søg"
msgid "View the map"
msgstr "Vis kortet"
#~ msgid "Map settings"
#~ msgstr "Kortindstillinger"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Hemmeligt redigeringslink er %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Alle kan redigere"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Er kun redigerbart med et hemmeligt link"
#: models.py:20
msgid "name"
msgstr "navn"
#: models.py:42
msgid "No licence set"
msgstr "Ingen licens angivet"
#: models.py:51
msgid "details"
msgstr "detaljer"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Link til siden hvor der er flere detaljer om licensen."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "URL skabelon bruger OSMs tile format"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Rækkefølge af tile-lag i redigeringsboksen"
#: models.py:114
msgid "Only editors can edit"
msgstr "Kun redaktører kan redigere"
#: models.py:115
msgid "Only owner can edit"
msgstr "Kun ejeren kan redigere"
#: models.py:118
msgid "everyone (public)"
msgstr "alle (fuldt offentlig)"
#: models.py:119
msgid "anyone with link"
msgstr "alle med et link"
#: models.py:120
msgid "editors only"
msgstr "kun redaktører "
#: models.py:123 models.py:257
msgid "description"
msgstr "beskrivelse"
#: models.py:124
msgid "center"
msgstr "center"
#: models.py:125
msgid "zoom"
msgstr "zoom"
#: models.py:126
msgid "locate"
msgstr "lokalisere"
#: models.py:126
msgid "Locate user on load?"
msgstr "Lokaliserer brugeren ved indlæsning?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Vælg kortlicensen."
#: models.py:130
msgid "licence"
msgstr "licens"
#: models.py:135
msgid "background"
msgstr "baggrund"
#: models.py:136
msgid "owner"
msgstr "ejer"
#: models.py:137
msgid "editors"
msgstr "redaktører"
#: models.py:138
msgid "edit status"
msgstr "ret status"
#: models.py:139
msgid "share status"
msgstr "Delestatus"
#: models.py:140
msgid "settings"
msgstr "indstillinger"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Dit anonyme kort er blevet tilføjet til din konto %s"
#: models.py:211
msgid "Clone of"
msgstr "Klonet kopi af"
#: models.py:262
msgid "display on load"
msgstr "vis ved indlæsning"
#: models.py:263
msgid "Display this layer on load."
msgstr "Vis dette lag ved indlæsning"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Du er logget ind. Fortsætter..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Kortindstillinger"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Login ind for at fortsætte"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Dit brugernavn og adgangskode passer ikke. Prøv igen."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Dit kort er blevet lavet! Hvis du ønsker at rette dette kort fra en anden computer, så brug dette link: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Tillykke dit kort er nu blevet lavet!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Kortet er blevet opdateret!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Kortredaktører blev opdateret med succes!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Kun ejer kan slettet kortet."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Dit kort er blevet klonet! Hvis du ønsker at rette dette kort fra en anden computer, så brug dette link: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Tillykke dit kort er blevet klonet!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Lag blev slettet med succes."

Binary file not shown.

View file

@ -3,25 +3,26 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Klumbumbus <simson.gertrud@gmail.com>, 2013-2014
# Ettore Atalan <atalanttore@googlemail.com>, 2016
# Jannis Leidel <jannis@leidel.info>, 2016
# Klumbumbus, 2013-2014,2016
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-03-01 23:34+0000\n"
"Last-Translator: Klumbumbus <simson.gertrud@gmail.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/umap/language/"
"de/)\n"
"Language: de\n"
"PO-Revision-Date: 2017-09-19 22:04+0000\n"
"Last-Translator: Klumbumbus\n"
"Language-Team: German (http://www.transifex.com/yohanboniface/umap/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr ""
msgstr "Zur Startseite zurückkehren"
#: templates/auth/user_detail.html:7
#, python-format
@ -33,10 +34,8 @@ msgid "Type editors nick to add…"
msgstr "Zum Hinzufügen von Bearbeitern, Benutzernamen hier eingeben..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Zum Hinzufügen von Bearbeitern, Benutzernamen hier eingeben..."
msgstr "Benutzernamen des neuen Besitzers eingeben..."
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -48,19 +47,19 @@ msgstr "Mehr"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
msgstr "Bitte melden Sie sich mit Ihrem Konto an"
#: templates/registration/login.html:18
msgid "Username"
msgstr ""
msgstr "Benutzername"
#: templates/registration/login.html:20
msgid "Password"
msgstr ""
msgstr "Passwort"
#: templates/registration/login.html:21
msgid "Login"
msgstr ""
msgstr "Anmeldung"
#: templates/registration/login.html:27
msgid "Please choose a provider"
@ -71,10 +70,7 @@ msgstr "Bitte wähle einen Anbieter"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"Mit uMap kannst du in einer Minute Karten mit <a href=\"%(osm_url)s\" /"
">OpenStreetMap</a>-Hintergrund erstellen und sie in deine eigene "
"Internetseite einbinden."
msgstr "Mit uMap kannst du in einer Minute Karten mit <a href=\"%(osm_url)s\" />OpenStreetMap</a>-Hintergrund erstellen und sie in deine eigene Internetseite einbinden."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -90,15 +86,11 @@ msgstr "Verwalte Farben und Icons der POIs"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Verwalte Karteneinstellungen: eine Übersichtskarte anzeigen, den Nutzer beim "
"Seitenaufruf lokalisieren,..."
msgstr "Verwalte Karteneinstellungen: eine Übersichtskarte anzeigen, den Nutzer beim Seitenaufruf lokalisieren,..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr ""
"Stapelverarbeitung beim Importieren von geotechnischen Daten (geojson, gpx, "
"kml, osm...)"
msgstr "Stapelverarbeitung beim Importieren von geotechnischen Daten (geojson, gpx, kml, osm...)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
@ -111,7 +103,7 @@ msgstr "Teile und binde deine Karte ein"
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Und es ist <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Und es ist <a href=\"%(repo_url)s\">Open Source</a>!"
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
@ -125,18 +117,14 @@ msgstr "Spiele mit der Demo"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Dies ist eine Demo-Instanz und wird benutzt für Tests und "
"Vorveröffentlichungen. Wenn du eine stabile Instanz benötigst, benutze bitte "
"<a href=\"%(stable_url)s\">%(stable_url)s</a>. Du kannst auch deine eigene "
"Instanz hosten, es ist <a href=\"%(repo_url)s\">open source</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Dies ist eine Demo-Instanz und wird für Tests und Vorveröffentlichungen benutzt. Wenn du eine stabile Instanz benötigst, benutze bitte <a href=\"%(stable_url)s\">%(stable_url)s</a>. Du kannst auch deine eigene Instanz hosten, uMap ist <a href=\"%(repo_url)s\">Open Source</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr "Karte aller \"uMap\"-Karten"
msgstr "Karte aller „uMap“-Karten"
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
@ -164,7 +152,7 @@ msgstr "Feedback"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr ""
msgstr "Passwort ändern"
#: templates/umap/navigation.html:22
msgid "Log out"
@ -172,37 +160,37 @@ msgstr "Ausloggen"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
msgstr "Passwortänderung"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
msgstr "Bitte gib aus Sicherheitsgründen dein altes Passwort ein und dann zweimal dein neues, um sicherzustellen, dass du es korrekt eingegeben hast."
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
msgstr "Altes Passwort"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
msgstr "Neues Passwort"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
msgstr "Neues Passwort bestätigen"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
msgstr "Mein Passwort ändern"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
msgstr "Passwortänderung erfolgreich"
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
msgstr "Ihr Passwort wurde geändert."
#: templates/umap/search.html:13
msgid "Not map found."
@ -220,5 +208,182 @@ msgstr "Suchen"
msgid "View the map"
msgstr "Diese Karte anzeigen"
#~ msgid "Map settings"
#~ msgstr "Karteneinstellungen"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Geheimer Bearbeitungslink ist %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Jeder kann bearbeiten"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Nur mit geheimen Bearbeitungslink zu bearbeiten"
#: models.py:20
msgid "name"
msgstr "Name"
#: models.py:42
msgid "No licence set"
msgstr "Keine Lizenz ausgewählt"
#: models.py:51
msgid "details"
msgstr "Details"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Verlinke auf eine Seite mit der Lizenz."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Das URL-Template nutzt das OSM Tile Format"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Reihenfolge der Karten-Ebenen in der Bearbeiten-Box"
#: models.py:114
msgid "Only editors can edit"
msgstr "Nur Bearbeiter können bearbeiten"
#: models.py:115
msgid "Only owner can edit"
msgstr "Nur der Ersteller kann bearbeiten"
#: models.py:118
msgid "everyone (public)"
msgstr "Jeder (Öffentlich)"
#: models.py:119
msgid "anyone with link"
msgstr "Jeder mit Link"
#: models.py:120
msgid "editors only"
msgstr "Nur Bearbeiter "
#: models.py:123 models.py:257
msgid "description"
msgstr "Beschreibung"
#: models.py:124
msgid "center"
msgstr "Mittelpunkt"
#: models.py:125
msgid "zoom"
msgstr "Zoom"
#: models.py:126
msgid "locate"
msgstr "lokalisiere"
#: models.py:126
msgid "Locate user on load?"
msgstr "Standort des Benutzers beim Seitenaufruf bestimmen?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Kartenlizenz auswählen"
#: models.py:130
msgid "licence"
msgstr "Lizenz"
#: models.py:135
msgid "background"
msgstr "Hintergrund"
#: models.py:136
msgid "owner"
msgstr "Ersteller"
#: models.py:137
msgid "editors"
msgstr "Bearbeiter"
#: models.py:138
msgid "edit status"
msgstr "Bearbeitungsstatus"
#: models.py:139
msgid "share status"
msgstr "Teilen-Status"
#: models.py:140
msgid "settings"
msgstr "Einstellungen"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Deine anonyme Karte wurde deinem Account %s zugeordnet."
#: models.py:211
msgid "Clone of"
msgstr "Duplicat von"
#: models.py:262
msgid "display on load"
msgstr "Beim Seitenaufruf einblenden"
#: models.py:263
msgid "Display this layer on load."
msgstr "Diese Ebene beim Seitenaufruf einblenden."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Du bist eingeloggt. Weiterleitung..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Kartenberechtigungen"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Bitte logge dich ein, um fortzufahren."
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Dein Benutzername und Password stimmen nicht überein. Bitte versuche es noch einmal."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Deine Karte wurde erstellt! Wenn du diese Karte von einem anderen Computer aus bearbeiten möchtest, benutze bitte diesen Link: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Glückwunsch, deine Karte wurde erstellt!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Karte wurde aktualisiert!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Bearbeiter erfolgreich geändert"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Nur der Ersteller kann die Karte löschen."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Deine Karte wurde kopiert! Wenn du diese Karte von einem anderen Computer aus bearbeiten möchtest, benutze bitte diesen Link: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Glückwunsch, deine Karte wurde kopiert!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Ebene erfolgreich gelöscht."

View file

@ -0,0 +1,389 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Emmanuel Verigos <emverigos@teemail.gr>, 2018
# Emmanuel Verigos <emverigos@teemail.gr>, 2017
# prendi <prendi@openmailbox.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2018-06-02 14:14+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Greek (http://www.transifex.com/yohanboniface/umap/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr "Επιστροφή στην Αρχική "
#: templates/auth/user_detail.html:7
#, python-format
msgid "Browse %(current_user)s's maps"
msgstr ""
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr "Πρόσθεσε παρατσούκλι..."
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr ""
#: templates/leaflet_storage/map_list.html:11
msgid "More"
msgstr "περισσότερα "
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
#: templates/registration/login.html:18
msgid "Username"
msgstr "Όνομα Χρήστη "
#: templates/registration/login.html:20
msgid "Password"
msgstr "Κωδικός πρόσβασης"
#: templates/registration/login.html:21
msgid "Login"
msgstr "Σύνδεση "
#: templates/registration/login.html:27
msgid "Please choose a provider"
msgstr ""
#: templates/umap/about_summary.html:6
#, python-format
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr "Διάλεξε το χαρτογραφικό επίπεδο "
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr ""
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
msgstr ""
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr ""
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
msgstr "Διάλεξε άδεια χρήσης των δεδομένων "
#: templates/umap/about_summary.html:17
msgid "Embed and share your map"
msgstr " Ενσωμάτωσε και μοιράσου τον χάρτη "
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr ""
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
msgstr ""
#: templates/umap/about_summary.html:34
msgid "Play with the demo"
msgstr ""
#: templates/umap/home.html:10
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr ""
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr ""
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr ""
#: templates/umap/navigation.html:12
msgid "My maps"
msgstr "Οι χάρτες μου"
#: templates/umap/navigation.html:14
msgid "Log in"
msgstr "Σύνδεση"
#: templates/umap/navigation.html:14
msgid "Sign in"
msgstr "Εγγραφή"
#: templates/umap/navigation.html:16
msgid "About"
msgstr "Σχετικά"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr ""
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr "Αλλαγή κωδικού"
#: templates/umap/navigation.html:22
msgid "Log out"
msgstr "Αποσύνδεση"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
#: templates/umap/search.html:13
msgid "Not map found."
msgstr ""
#: templates/umap/search_bar.html:6
msgid "Search maps"
msgstr "Ψάξε χάρτες "
#: templates/umap/search_bar.html:9
msgid "Search"
msgstr "Ψάξε "
#: views.py:190
msgid "View the map"
msgstr ""
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr ""
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr ""
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr ""
#: models.py:20
msgid "name"
msgstr "όνομα"
#: models.py:42
msgid "No licence set"
msgstr "Χωρίς Άδεια Χρήσης"
#: models.py:51
msgid "details"
msgstr "Λεπτομέρειες "
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Σύνδεσμος σελίδας Αναλυτικής Άδειας Χρήσης "
#: models.py:66
msgid "URL template using OSM tile format"
msgstr ""
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr ""
#: models.py:114
msgid "Only editors can edit"
msgstr ""
#: models.py:115
msgid "Only owner can edit"
msgstr ""
#: models.py:118
msgid "everyone (public)"
msgstr ""
#: models.py:119
msgid "anyone with link"
msgstr ""
#: models.py:120
msgid "editors only"
msgstr ""
#: models.py:123 models.py:257
msgid "description"
msgstr "περιγραφή"
#: models.py:124
msgid "center"
msgstr ""
#: models.py:125
msgid "zoom"
msgstr ""
#: models.py:126
msgid "locate"
msgstr ""
#: models.py:126
msgid "Locate user on load?"
msgstr ""
#: models.py:129
msgid "Choose the map licence."
msgstr ""
#: models.py:130
msgid "licence"
msgstr "άδεια"
#: models.py:135
msgid "background"
msgstr ""
#: models.py:136
msgid "owner"
msgstr ""
#: models.py:137
msgid "editors"
msgstr ""
#: models.py:138
msgid "edit status"
msgstr ""
#: models.py:139
msgid "share status"
msgstr ""
#: models.py:140
msgid "settings"
msgstr "ρυθμίσεις"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr ""
#: models.py:211
msgid "Clone of"
msgstr ""
#: models.py:262
msgid "display on load"
msgstr ""
#: models.py:263
msgid "Display this layer on load."
msgstr ""
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr ""
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr ""
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr ""
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr ""
#: views.py:264
msgid "Map has been updated!"
msgstr ""
#: views.py:291
msgid "Map editors updated with success!"
msgstr ""
#: views.py:306
msgid "Only its owner can delete the map."
msgstr ""
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr ""
#: views.py:526
msgid "Layer successfully deleted."
msgstr ""

View file

@ -204,3 +204,183 @@ msgstr ""
#: views.py:190
msgid "View the map"
msgstr ""
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr ""
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr ""
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr ""
#: models.py:20
msgid "name"
msgstr ""
#: models.py:42
msgid "No licence set"
msgstr ""
#: models.py:51
msgid "details"
msgstr ""
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr ""
#: models.py:66
msgid "URL template using OSM tile format"
msgstr ""
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr ""
#: models.py:114
msgid "Only editors can edit"
msgstr ""
#: models.py:115
msgid "Only owner can edit"
msgstr ""
#: models.py:118
msgid "everyone (public)"
msgstr ""
#: models.py:119
msgid "anyone with link"
msgstr ""
#: models.py:120
msgid "editors only"
msgstr ""
#: models.py:123 models.py:257
msgid "description"
msgstr ""
#: models.py:124
msgid "center"
msgstr ""
#: models.py:125
msgid "zoom"
msgstr ""
#: models.py:126
msgid "locate"
msgstr ""
#: models.py:126
msgid "Locate user on load?"
msgstr ""
#: models.py:129
msgid "Choose the map licence."
msgstr ""
#: models.py:130
msgid "licence"
msgstr ""
#: models.py:135
msgid "background"
msgstr ""
#: models.py:136
msgid "owner"
msgstr ""
#: models.py:137
msgid "editors"
msgstr ""
#: models.py:138
msgid "edit status"
msgstr ""
#: models.py:139
msgid "share status"
msgstr ""
#: models.py:140
msgid "settings"
msgstr ""
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr ""
#: models.py:211
msgid "Clone of"
msgstr ""
#: models.py:262
msgid "display on load"
msgstr ""
#: models.py:263
msgid "Display this layer on load."
msgstr ""
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr ""
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr ""
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr ""
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr ""
#: views.py:264
msgid "Map has been updated!"
msgstr ""
#: views.py:291
msgid "Map editors updated with success!"
msgstr ""
#: views.py:306
msgid "Only its owner can delete the map."
msgstr ""
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr ""
#: views.py:526
msgid "Layer successfully deleted."
msgstr ""

Binary file not shown.

View file

@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-09-28 03:51+0000\n"
"PO-Revision-Date: 2017-09-19 22:04+0000\n"
"Last-Translator: Marco Antonio <marcoantoniofrias@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/yohanboniface/umap/language/es/)\n"
"MIME-Version: 1.0\n"
@ -208,3 +208,183 @@ msgstr "Buscar"
#: views.py:190
msgid "View the map"
msgstr "Ver el mapa"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "El enlace secreto de edición es %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Todos pueden editar"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Sólo puede editarse con el enlace secreto de edición"
#: models.py:20
msgid "name"
msgstr "nombre"
#: models.py:42
msgid "No licence set"
msgstr "Sin conjunto de licencias"
#: models.py:51
msgid "details"
msgstr "detalles"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Enlace a una página donde se detalla la licencia."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Plantilla URL usando el formato de teselas OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Orden de las capas de teselas en la caja de edición"
#: models.py:114
msgid "Only editors can edit"
msgstr "Solo los editores pueden editar"
#: models.py:115
msgid "Only owner can edit"
msgstr "Solo el propietario puede editar"
#: models.py:118
msgid "everyone (public)"
msgstr "todo el mundo (público)"
#: models.py:119
msgid "anyone with link"
msgstr "cualquiera que tenga el enlace"
#: models.py:120
msgid "editors only"
msgstr "sólo editores"
#: models.py:123 models.py:257
msgid "description"
msgstr "descripción"
#: models.py:124
msgid "center"
msgstr "centrar"
#: models.py:125
msgid "zoom"
msgstr "acercar/alejar"
#: models.py:126
msgid "locate"
msgstr "localizar"
#: models.py:126
msgid "Locate user on load?"
msgstr "¿Al cargar localizar el usuario?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Elija la licencia del mapa."
#: models.py:130
msgid "licence"
msgstr "licencia"
#: models.py:135
msgid "background"
msgstr "fondo"
#: models.py:136
msgid "owner"
msgstr "propietario"
#: models.py:137
msgid "editors"
msgstr "editores"
#: models.py:138
msgid "edit status"
msgstr "estado de la edición"
#: models.py:139
msgid "share status"
msgstr "compartir estado"
#: models.py:140
msgid "settings"
msgstr "ajustes"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Tu mapa anónimo se ha adjuntado a tu cuenta %s"
#: models.py:211
msgid "Clone of"
msgstr "Clon de"
#: models.py:262
msgid "display on load"
msgstr "mostrar al cargar"
#: models.py:263
msgid "Display this layer on load."
msgstr "Mostrar esta capa al cargar."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Has iniciado sesión. Continuando..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permisos del mapa"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Inicia sesión para poder continuar"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Tu nombre de usuario y contraseña no coinciden. Inténtalo de nuevo."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "¡Tu mapa ha sido creado! Si deseas editarlo desde otro ordenador, por favor usa este enlace: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "¡Enhorabuena! ¡Tu mapa ha sido creado!"
#: views.py:264
msgid "Map has been updated!"
msgstr "¡El mapa ha sido actualizado!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "¡Los editores del mapas han sido actualizados con éxito!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Sólo el propietario puede borrar el mapa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "¡Tu mapa ha sido clonado! Si quieres editar este mapa desde otro ordenador, usa este enlace: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "¡Enhorabuena! ¡Tu mapa ha sido clonado!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Se eliminó la capa con éxito."

Binary file not shown.

View file

@ -3,22 +3,21 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# acastren, 2014
# jaakkoh <jaakko@helleranta.com>, 2013
# jaakkoh <jaakko@helleranta.com>, 2013
# Antti Castrén, 2014
# Jaakko Helleranta <jaakko@helleranta.com>, 2013
# Jaakko Helleranta <jaakko@helleranta.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-03-04 21:50+0000\n"
"Last-Translator: acastren\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/umap/language/"
"fi/)\n"
"Language: fi\n"
"PO-Revision-Date: 2017-09-23 19:23+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Finnish (http://www.transifex.com/yohanboniface/umap/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
@ -35,10 +34,8 @@ msgid "Type editors nick to add…"
msgstr "Kirjoita muokkaajan nimi lisätäksesi..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Kirjoita muokkaajan nimi lisätäksesi..."
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -73,10 +70,7 @@ msgstr "Valitse mieleisesi palveluntarjoaja"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap mahdollistaa <a href=\"%(osm_url)s\" />OpenStreetMap</a>-pohjaisten "
"räätälöityjen karttojen luomisen ja liittämisen verkkosivuusi muutamassa "
"minuutissa."
msgstr "uMap mahdollistaa <a href=\"%(osm_url)s\" />OpenStreetMap</a>-pohjaisten räätälöityjen karttojen luomisen ja liittämisen verkkosivuusi muutamassa minuutissa."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -92,9 +86,7 @@ msgstr "Valitse ja hallinnoi POI-merkintöjen värit ja karttakuvakkeet"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Hallitse kartta-optiot: näytä mini-kartta, paikanna käyttäjä sivun "
"latauksessa, ..."
msgstr "Hallitse kartta-optiot: näytä mini-kartta, paikanna käyttäjä sivun latauksessa, ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -125,14 +117,10 @@ msgstr "Tongi demoa sielusi kyllyydestä!"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Tämä on uMapin demo-instanssi, jota käytetään testaamiseen ja "
"väliversioille. Jos tarvitset vakaan version, niin käytäthän <a href="
"\"%(stable_url)s\">%(stable_url)s</a> :a. Voit myös tarjota oman instanssin "
"- <a href=\"%(repo_url)s\">avoin lähdekoodi</a> rulettaa!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Tämä on uMapin demo-instanssi, jota käytetään testaamiseen ja väliversioille. Jos tarvitset vakaan version, niin käytäthän <a href=\"%(stable_url)s\">%(stable_url)s</a> :a. Voit myös tarjota oman instanssin - <a href=\"%(repo_url)s\">avoin lähdekoodi</a> rulettaa!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -220,5 +208,182 @@ msgstr "Etsi"
msgid "View the map"
msgstr "Katso karttaa"
#~ msgid "Map settings"
#~ msgstr "Kartan asetukset"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Salainen muokkauslinkki on %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Kuka tahansa saa muokata"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Muokattavissa vain salaisella muokkauslinkillä"
#: models.py:20
msgid "name"
msgstr "nimi"
#: models.py:42
msgid "No licence set"
msgstr "Määrittämätön lisenssi"
#: models.py:51
msgid "details"
msgstr "tarkemmat tiedot"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Linkki sivulle, jossa lisenssi on määritetty yksityiskohtaisesti."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "OSM-karttatiiliformaattia mukaileva URL-sapluuna"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Taustakarttojen järjestys muokkauslaatikossa"
#: models.py:114
msgid "Only editors can edit"
msgstr "Vain julkaisijat saavat muokata"
#: models.py:115
msgid "Only owner can edit"
msgstr "Vain omistaja saa muokata"
#: models.py:118
msgid "everyone (public)"
msgstr "kaikille (julkinen)"
#: models.py:119
msgid "anyone with link"
msgstr "linkinhaltijoille"
#: models.py:120
msgid "editors only"
msgstr "vain muokkaajille"
#: models.py:123 models.py:257
msgid "description"
msgstr "kuvaus"
#: models.py:124
msgid "center"
msgstr "keskitä"
#: models.py:125
msgid "zoom"
msgstr "zoomaa"
#: models.py:126
msgid "locate"
msgstr "paikanna"
#: models.py:126
msgid "Locate user on load?"
msgstr "Paikanna käyttäjä sivua ladattaessa?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Valitse kartan lisenssi"
#: models.py:130
msgid "licence"
msgstr "lisenssi"
#: models.py:135
msgid "background"
msgstr "tausta"
#: models.py:136
msgid "owner"
msgstr "omistaja"
#: models.py:137
msgid "editors"
msgstr "julkaisija"
#: models.py:138
msgid "edit status"
msgstr "muokkaa tilaa"
#: models.py:139
msgid "share status"
msgstr "jaa status"
#: models.py:140
msgid "settings"
msgstr "asetukset"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Anonyymi karttasi on liitetty tiliisi %s"
#: models.py:211
msgid "Clone of"
msgstr "Kloonattu kartasta"
#: models.py:262
msgid "display on load"
msgstr "näytä ladattaessa"
#: models.py:263
msgid "Display this layer on load."
msgstr "Näytä tämä kerros ladattaessa."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Sisäänkirjautumisesi onnistui. Jatketahan..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Kartan oikeudet"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Rekisteröidythän jatkaaksesi, jooko?"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Käyttäjätunnuksesi ja salasanasi eivät täsmänneet. Yritä uudestaan ole hyvä."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Karttasi on luotu! Jos haluat muokata tätä karttaa joltain muulta tietokoneelta, käytä tätä linkkiä: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Onneksi olkoon! Uusi karttasi on luotu!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Kartta on päivitetty!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Kartan toimittajat päivitetty onnistuneesti!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Vain kartan omistaja voi poistaa kartan."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Karttasi on kloonattu! Jos haluat muokata tätä karttaa joltain muulta tietokoneelta, käytä tätä linkkiä: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Onneksi olkoon! Karttasi on kloonattu!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Kerros onnistuneesti poistettu. Pysyvästi."

Binary file not shown.

View file

@ -5,6 +5,7 @@
# Translators:
# Buggi, 2013
# Buggi, 2013
# Philippe Verdy, 2017
# yohanboniface <yohanboniface@free.fr>, 2014,2016
# YOHAN BONIFACE <yb@enix.org>, 2012
msgid ""
@ -12,8 +13,8 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-09-09 19:41+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"PO-Revision-Date: 2017-09-19 22:04+0000\n"
"Last-Translator: Philippe Verdy\n"
"Language-Team: French (http://www.transifex.com/yohanboniface/umap/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -32,11 +33,11 @@ msgstr "Consulter les cartes de %(current_user)s"
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr "Taper le nom d'un éditeur…"
msgstr "Entrez le nom d'un modificateur…"
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr "Nouveau du nouveau propriétaire…"
msgstr "Entrez le nom du nouveau propriétaire…"
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -75,11 +76,11 @@ msgstr "uMap permet de créer des cartes personnalisées sur des fonds <a href=\
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr "Choisir les fonds de carte"
msgstr "Choisir les fonds pour votre carte"
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr "Ajouter des POI: marqueurs, lignes, polygones..."
msgstr "Ajouter des points d'intérêt : marqueurs, lignes, polygones..."
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
@ -149,7 +150,7 @@ msgstr "À propos"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr "Feedback"
msgstr "Donner votre avis"
#: templates/umap/navigation.html:20
msgid "Change password"
@ -208,3 +209,183 @@ msgstr "Chercher"
#: views.py:190
msgid "View the map"
msgstr "Voir la carte"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Lien de modification secret : %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Tout le monde peut modifier"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Modifiable seulement avec le lien de modification secret"
#: models.py:20
msgid "name"
msgstr "nom"
#: models.py:42
msgid "No licence set"
msgstr "Aucune licence"
#: models.py:51
msgid "details"
msgstr "détails"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Lien vers une page détaillant la licence."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Modèle d'URL au format des tuiles OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Ordre des calques de tuiles dans le panneau de modification"
#: models.py:114
msgid "Only editors can edit"
msgstr "Seuls les modificateurs peuvent modifier"
#: models.py:115
msgid "Only owner can edit"
msgstr "Seul le créateur peut modifier"
#: models.py:118
msgid "everyone (public)"
msgstr "tout le monde (public)"
#: models.py:119
msgid "anyone with link"
msgstr "quiconque a le lien"
#: models.py:120
msgid "editors only"
msgstr "seulement les modificateurs"
#: models.py:123 models.py:257
msgid "description"
msgstr "description"
#: models.py:124
msgid "center"
msgstr "centre"
#: models.py:125
msgid "zoom"
msgstr "zoom"
#: models.py:126
msgid "locate"
msgstr "géolocaliser"
#: models.py:126
msgid "Locate user on load?"
msgstr "Géolocaliser l'utilisateur au chargement?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Choisir une licence pour la carte"
#: models.py:130
msgid "licence"
msgstr "licence"
#: models.py:135
msgid "background"
msgstr "fond de carte"
#: models.py:136
msgid "owner"
msgstr "créateur"
#: models.py:137
msgid "editors"
msgstr "modificateurs"
#: models.py:138
msgid "edit status"
msgstr "statut de modification"
#: models.py:139
msgid "share status"
msgstr "qui a accès"
#: models.py:140
msgid "settings"
msgstr "réglages"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "La carte a été associée à votre compte %s"
#: models.py:211
msgid "Clone of"
msgstr "Clone de"
#: models.py:262
msgid "display on load"
msgstr "afficher au chargement."
#: models.py:263
msgid "Display this layer on load."
msgstr "Afficher ce calque au chargement."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Vous êtes maintenant identifié. Merci de patienter..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permissions de la carte"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Merci de vous identifier pour continuer"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Nom d'utilisateur ou mot de passe incorrect. Merci de corriger."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Votre carte a été créée ! Si vous souhaitez la modifier depuis un autre ordinateur, veuillez utiliser ce lien : %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Félicitations, votre carte a bien été créée !"
#: views.py:264
msgid "Map has been updated!"
msgstr "La carte a été mise à jour !"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Modificateurs de la carte mis à jour !"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Seul le créateur de la carte peut la supprimer."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Votre carte a été dupliquée ! Si vous souhaitez la modifier depuis un autre ordinateur, veuillez utiliser ce lien : %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Votre carte a été dupliquée !"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Calque supprimé."

View file

@ -0,0 +1,388 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Nemigo Galiza <lescamposines@gmail.com>, 2017
# Rafael Ávila Coya <ravilacoya@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2018-06-02 14:15+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Galician (http://www.transifex.com/yohanboniface/umap/language/gl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: gl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr "Lévame á páxina de inicio"
#: templates/auth/user_detail.html:7
#, python-format
msgid "Browse %(current_user)s's maps"
msgstr "Navegador %(current_user)s dos mapas"
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr "Tipo de editores engadir alcume..."
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr "Tipo de novo propietario de alcume..."
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr "por"
#: templates/leaflet_storage/map_list.html:11
msgid "More"
msgstr "Máis"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr "Fai o favor de loguearte ca túa conta"
#: templates/registration/login.html:18
msgid "Username"
msgstr "Nome de usuario"
#: templates/registration/login.html:20
msgid "Password"
msgstr "Contrasinal"
#: templates/registration/login.html:21
msgid "Login"
msgstr "Logueado"
#: templates/registration/login.html:27
msgid "Please choose a provider"
msgstr "Por favor escolle provedor"
#: templates/umap/about_summary.html:6
#, python-format
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr " permítelle crear mapas con <a href=\"%(osm_url)s\" />OpenStreetMap</a> capas nun minuto e incorpóralas no seu sitio."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr "Elixir capas do teu mapa"
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr "Engadir POIs: marcas, liñas, polígonos..."
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
msgstr "Xestionar colores de POIs e iconas"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr "Xestionar as opcións do mapa: amosar un minimapa, localizar o usuario na carga ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr "Importación por feixes de datos xeostructurados (geojson, gpx, kml, osm...)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
msgstr "Elixe licenza para a túa información"
#: templates/umap/about_summary.html:17
msgid "Embed and share your map"
msgstr "Inserir e compartir o teu mapa"
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "e isto é <a href=\"%(repo_url)s\">fonte libre</a>!"
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
msgstr "Crear un mapa"
#: templates/umap/about_summary.html:34
msgid "Play with the demo"
msgstr "Xogar ca demo"
#: templates/umap/home.html:10
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Esta é unha instancia de demostración, usada para probas e lanzamentos previos. Se precisa unha instancia estable, use <a href=\"%(stable_url)s\">%(stable_url)s</a>. Tamén pode albergar a súa propia instancia, é <a href=\"%(repo_url)s\">código aberto</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr "Mapa de uMaps"
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr "Inspírese e busque mapas"
#: templates/umap/navigation.html:12
msgid "My maps"
msgstr "Os meus mapas"
#: templates/umap/navigation.html:14
msgid "Log in"
msgstr "Loguear"
#: templates/umap/navigation.html:14
msgid "Sign in"
msgstr "Asinar"
#: templates/umap/navigation.html:16
msgid "About"
msgstr "Acerca de"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr "Auto mellora"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr "Trocar contrasinal"
#: templates/umap/navigation.html:22
msgid "Log out"
msgstr "Saír"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr "Trocar contrasinal"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr "Insira o seu contrasinal anterior, por razóns de seguridade e, a continuación, introduza o seu novo contrasinal dúas veces para que poidamos comprobar que o escribiu correctamente."
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr "Contrasinal vello"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr "Novo contrasinal"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr "Confirmar nova contrasinal"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr "Trocar meu contrasinal"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr "O contrasinal foi trocado ben"
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr "Teu contrasinal foi trocado"
#: templates/umap/search.html:13
msgid "Not map found."
msgstr "Non atopado no mapa"
#: templates/umap/search_bar.html:6
msgid "Search maps"
msgstr "Atopar mapas"
#: templates/umap/search_bar.html:9
msgid "Search"
msgstr "Atopar"
#: views.py:190
msgid "View the map"
msgstr "Ver no mapa"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "A ligazón de edición secreta é %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Calquera pode editar"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Só é editable coa ligazón de edición secreta"
#: models.py:20
msgid "name"
msgstr "nome"
#: models.py:42
msgid "No licence set"
msgstr "No se escolleu ningunha licenza"
#: models.py:51
msgid "details"
msgstr "detalles"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Ligazón a unha páxina web onde se detalla a licenza."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Modelo de URL que usa o formato de teselas de OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Orde das capas base na caixa de edición"
#: models.py:114
msgid "Only editors can edit"
msgstr "Só os editores poden editar"
#: models.py:115
msgid "Only owner can edit"
msgstr "Só o proprietario pode editar"
#: models.py:118
msgid "everyone (public)"
msgstr "calquera (público)"
#: models.py:119
msgid "anyone with link"
msgstr "calquera que teña a ligazón"
#: models.py:120
msgid "editors only"
msgstr "Só editores"
#: models.py:123 models.py:257
msgid "description"
msgstr "descrición"
#: models.py:124
msgid "center"
msgstr "centrar"
#: models.py:125
msgid "zoom"
msgstr "achegar/alonxar"
#: models.py:126
msgid "locate"
msgstr "localizar"
#: models.py:126
msgid "Locate user on load?"
msgstr "Localizar o usuario na carga?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Escolle a licenza do mapa."
#: models.py:130
msgid "licence"
msgstr "licenza"
#: models.py:135
msgid "background"
msgstr "fondo"
#: models.py:136
msgid "owner"
msgstr "propietario"
#: models.py:137
msgid "editors"
msgstr "editores"
#: models.py:138
msgid "edit status"
msgstr "estado da edición"
#: models.py:139
msgid "share status"
msgstr "compartir o estado"
#: models.py:140
msgid "settings"
msgstr "configuración"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "O teu mapa anónimo foi ligado á túa conta %s"
#: models.py:211
msgid "Clone of"
msgstr "Clon de"
#: models.py:262
msgid "display on load"
msgstr "amosar na carga"
#: models.py:263
msgid "Display this layer on load."
msgstr "Amosar esta capa na carga."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Xa iniciaches sesión. Continuando..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permisos do mapa"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Por favor: inicia sesión para continuar"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "O teu nome de usuario e contrasinal non casan. Por favor, téntao de novo."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "O teu mapa foi creado! Se queres editar este mapa dende outra computadora, usa esta ligazón: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Parabéns! O teu mapa foi creado!"
#: views.py:264
msgid "Map has been updated!"
msgstr "O mapa foi actualizado!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "O editores de mapa foron actualizados con éxito!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Só o seu proprietario pode eliminar o mapa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "O teu mapa foi clonado! Se queres editar este mapa dende outra computadora, usa esta ligazón: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Parabéns! O teu mapa foi clonado!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "A capa foi eliminada con éxito."

View file

@ -0,0 +1,388 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Janjko <janjko@gmail.com>, 2013
# Janjko <janjko@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2018-06-02 14:15+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Croatian (http://www.transifex.com/yohanboniface/umap/language/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr ""
#: templates/auth/user_detail.html:7
#, python-format
msgid "Browse %(current_user)s's maps"
msgstr ""
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr ""
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr ""
#: templates/leaflet_storage/map_list.html:11
msgid "More"
msgstr "Više"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
#: templates/registration/login.html:18
msgid "Username"
msgstr ""
#: templates/registration/login.html:20
msgid "Password"
msgstr ""
#: templates/registration/login.html:21
msgid "Login"
msgstr ""
#: templates/registration/login.html:27
msgid "Please choose a provider"
msgstr ""
#: templates/umap/about_summary.html:6
#, python-format
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr ""
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr ""
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
msgstr ""
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr ""
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
msgstr ""
#: templates/umap/about_summary.html:17
msgid "Embed and share your map"
msgstr ""
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr ""
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
msgstr "Stvori kartu"
#: templates/umap/about_summary.html:34
msgid "Play with the demo"
msgstr ""
#: templates/umap/home.html:10
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr ""
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr ""
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr ""
#: templates/umap/navigation.html:12
msgid "My maps"
msgstr "Moje karte"
#: templates/umap/navigation.html:14
msgid "Log in"
msgstr "Prijava"
#: templates/umap/navigation.html:14
msgid "Sign in"
msgstr "Registracija"
#: templates/umap/navigation.html:16
msgid "About"
msgstr "Više o"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr "Povratna informacija"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr ""
#: templates/umap/navigation.html:22
msgid "Log out"
msgstr "Odjava"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
#: templates/umap/search.html:13
msgid "Not map found."
msgstr "Karta nije nađena"
#: templates/umap/search_bar.html:6
msgid "Search maps"
msgstr "Pretraži karte"
#: templates/umap/search_bar.html:9
msgid "Search"
msgstr "Pretraživanje"
#: views.py:190
msgid "View the map"
msgstr ""
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr ""
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Svi mogu uređivati"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr ""
#: models.py:20
msgid "name"
msgstr "ime"
#: models.py:42
msgid "No licence set"
msgstr ""
#: models.py:51
msgid "details"
msgstr "detalji"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr ""
#: models.py:66
msgid "URL template using OSM tile format"
msgstr ""
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr ""
#: models.py:114
msgid "Only editors can edit"
msgstr "Samo urednici mogu uređivati"
#: models.py:115
msgid "Only owner can edit"
msgstr "Samo vlasnik može uređivati"
#: models.py:118
msgid "everyone (public)"
msgstr ""
#: models.py:119
msgid "anyone with link"
msgstr ""
#: models.py:120
msgid "editors only"
msgstr ""
#: models.py:123 models.py:257
msgid "description"
msgstr "opis"
#: models.py:124
msgid "center"
msgstr "centar"
#: models.py:125
msgid "zoom"
msgstr "uvećanje"
#: models.py:126
msgid "locate"
msgstr ""
#: models.py:126
msgid "Locate user on load?"
msgstr ""
#: models.py:129
msgid "Choose the map licence."
msgstr ""
#: models.py:130
msgid "licence"
msgstr "licenca"
#: models.py:135
msgid "background"
msgstr "pozadina"
#: models.py:136
msgid "owner"
msgstr "vlasnik"
#: models.py:137
msgid "editors"
msgstr "urednici"
#: models.py:138
msgid "edit status"
msgstr "status uređivanja"
#: models.py:139
msgid "share status"
msgstr ""
#: models.py:140
msgid "settings"
msgstr "postavke"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr ""
#: models.py:211
msgid "Clone of"
msgstr "Duplikat od"
#: models.py:262
msgid "display on load"
msgstr ""
#: models.py:263
msgid "Display this layer on load."
msgstr ""
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr ""
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr ""
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Prijavite se za nastavak"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Vaše korisničko ime i lozinka se ne podudaraju. Molim pokušajte ponovo."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr ""
#: views.py:264
msgid "Map has been updated!"
msgstr ""
#: views.py:291
msgid "Map editors updated with success!"
msgstr ""
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Samo vlasnik karte ju može obrisati."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Karta je duplicirana."
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Sloj obrisan."

View file

@ -0,0 +1,207 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Gábor Babos <gabor.babos@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2017-10-29 20:37+0000\n"
"Last-Translator: Gábor Babos <gabor.babos@gmail.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/yohanboniface/umap/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr "Vissza a kezdőlapra"
#: templates/auth/user_detail.html:7
#, python-format
msgid "Browse %(current_user)s's maps"
msgstr "%(current_user)s térképeinek böngészése"
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr "Add meg a szerkesztő felhasználónevét a hozzáadáshoz…"
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr "Add meg az új tulajdonos felhasználónevét…"
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr " készítette:"
#: templates/leaflet_storage/map_list.html:11
msgid "More"
msgstr "Még több"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr "Kérlek, jelentkezz be"
#: templates/registration/login.html:18
msgid "Username"
msgstr "Felhasználónév"
#: templates/registration/login.html:20
msgid "Password"
msgstr "Jelszó"
#: templates/registration/login.html:21
msgid "Login"
msgstr "Belépés"
#: templates/registration/login.html:27
msgid "Please choose a provider"
msgstr "Kérlek, válassz egy szolgáltatót"
#: templates/umap/about_summary.html:6
#, python-format
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr "A uMap segítségével <a href=\"%(osm_url)s\" />OpenStreetMap</a>-alapú térképrétegeket hozhatsz létre percek alatt, amelyeket be is ágyazhatsz a weboldaladba."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr "Válaszd ki a térképed rétegeit"
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr "Érdekes helyek hozzáadása: pontok, vonalak, sokszögek…"
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
msgstr "Érdekes helyek (POI-k) színeinek és ikonjainak kezelése"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr "Szabd testre a térkép viselkedését: áttekintő térkép használatával, a felhasználó pozíciójának lekérdezésével…"
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr "Geoinformatikai adatfájlok tömeges importjának támogatása (geojson, gpx, kml, osm…)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
msgstr "Válassz licenszet adataid számára!"
#: templates/umap/about_summary.html:17
msgid "Embed and share your map"
msgstr "Ágyazd be és oszd meg a térképedet!"
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "És mindez <a href=\"%(repo_url)s\">nyílt forráskódú</a>!"
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
msgstr "Készíts egy térképet!"
#: templates/umap/about_summary.html:34
msgid "Play with the demo"
msgstr "Próbáld ki a bemutatót!"
#: templates/umap/home.html:10
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Ez egy tesztelési célra használt szerver. Amennyiben egy üzemszerűen használható szerverre van szükséged, kérlek használd ezt a címet: <a href=\"%(stable_url)s\">%(stable_url)s</a>. A uMap-et a saját szerveredre is feltelepítheded, hiszen <a href=\"%(repo_url)s\">nyílt forráskódú</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr "uMap-térképek térképe"
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr "Szerezz inspirációt, böngéssz a térképek között!"
#: templates/umap/navigation.html:12
msgid "My maps"
msgstr "Térképeim"
#: templates/umap/navigation.html:14
msgid "Log in"
msgstr "Bejelentkezés"
#: templates/umap/navigation.html:14
msgid "Sign in"
msgstr "Regisztráció"
#: templates/umap/navigation.html:16
msgid "About"
msgstr "Névjegy"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr "Segítség és hibabejelentés"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr "Jelszó változtatása"
#: templates/umap/navigation.html:22
msgid "Log out"
msgstr "Kijelentkezés"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr "Jelszó változtatása"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr "Kérlek, biztonsági okokból írd be a régi jelszavad, majd add meg kétszer a kívánt új jelszót!"
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr "Régi jelszó"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr "Új jelszó"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr "Új jelszó ismét"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr "Jelszó változtatása"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr "A jelszóváltoztatás sikeres volt."
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr "A jelszavad megváltozott."
#: templates/umap/search.html:13
msgid "Not map found."
msgstr "Ilyen térkép nem található."
#: templates/umap/search_bar.html:6
msgid "Search maps"
msgstr "Térképek keresése"
#: templates/umap/search_bar.html:9
msgid "Search"
msgstr "Keresés"
#: views.py:190
msgid "View the map"
msgstr "Térkép megtekintése"

Binary file not shown.

View file

@ -3,7 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Maurizio Napolitano <maurizio.napolitano@okfn.org>, 2013-2015
# idetao <marcxosm@gmail.com>, 2017
# Maurizio Napolitano <maurizio.napolitano@okfn.org>, 2013-2015,2018
# claudiamocci <moccicm@gmail.com>, 2013
# YOHAN BONIFACE <yb@enix.org>, 2012
msgid ""
@ -11,19 +12,18 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2015-11-02 09:15+0000\n"
"PO-Revision-Date: 2018-02-22 11:08+0000\n"
"Last-Translator: Maurizio Napolitano <maurizio.napolitano@okfn.org>\n"
"Language-Team: Italian (http://www.transifex.com/yohanboniface/umap/language/"
"it/)\n"
"Language: it\n"
"Language-Team: Italian (http://www.transifex.com/yohanboniface/umap/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr ""
msgstr "Vai alla pagina principale"
#: templates/auth/user_detail.html:7
#, python-format
@ -35,10 +35,8 @@ msgid "Type editors nick to add…"
msgstr "Inserire nick degli editor d'aggiungere..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Inserire nick degli editor d'aggiungere..."
msgstr "Inserisci il nome del nuovo proprietario..."
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -50,19 +48,19 @@ msgstr "Altre mappe"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
msgstr "Accedi con il tuo account"
#: templates/registration/login.html:18
msgid "Username"
msgstr ""
msgstr "Nome utente"
#: templates/registration/login.html:20
msgid "Password"
msgstr ""
msgstr "Password"
#: templates/registration/login.html:21
msgid "Login"
msgstr ""
msgstr "Login"
#: templates/registration/login.html:27
msgid "Please choose a provider"
@ -73,9 +71,7 @@ msgstr "Seleziona un fornitore"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap permette di creare mappe, che fanno uso di <a href=\"%(osm_url)s\" /"
">OpenStreetMap</a> come sfondo, da inserire nel proprio sito in un minuto."
msgstr "uMap permette di creare mappe, che fanno uso di <a href=\"%(osm_url)s\" />OpenStreetMap</a> come sfondo, da inserire nel proprio sito in un minuto."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -91,9 +87,7 @@ msgstr "Scegli colori ed icone dei POI"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Aggiungi opzioni alla mappa: mappa panoramica, geolocalizzazione di un "
"utente al caricamento ..."
msgstr "Aggiungi opzioni alla mappa: mappa panoramica, geolocalizzazione di un utente al caricamento ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -124,14 +118,10 @@ msgstr "Gioca con la demo"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Questa è una demo da utilizzare solo per test e prototipi. Qualora sia "
"necessaria una versione stabile si deve utilizzare l'indirizzo a href="
"\"%(stable_url)s\">%(stable_url)s</a>. Chiunque inoltre può crearsi una "
"propria istanza, uMap è <a href=\"%(repo_url)s\">software libero</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Questa è una demo da utilizzare solo per test e prototipi. Qualora sia necessaria una versione stabile si deve utilizzare l'indirizzo a href=\"%(stable_url)s\">%(stable_url)s</a>. Chiunque inoltre può crearsi una propria istanza, uMap è <a href=\"%(repo_url)s\">software libero</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -163,7 +153,7 @@ msgstr "Feedback"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr ""
msgstr "Cambia password"
#: templates/umap/navigation.html:22
msgid "Log out"
@ -171,37 +161,37 @@ msgstr "Esci"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
msgstr "Cambia password"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
msgstr "Per motivi di sicurezza inserire la vecchia password, poi inserire quella nuova due volte così da verificare che sia stata scritta correttamente"
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
msgstr "Password vecchia"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
msgstr "Nuova password"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
msgstr "Conferma della nuova password"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
msgstr "Cambia la mia password"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
msgstr "Cambio della password effettuato con successo!"
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
msgstr "La tua password è stata cambiata."
#: templates/umap/search.html:13
msgid "Not map found."
@ -219,5 +209,182 @@ msgstr "Cerca"
msgid "View the map"
msgstr "Visualizza la mappa"
#~ msgid "Map settings"
#~ msgstr "Impostazioni mappa"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Il link segreto per la modifica %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Chiunque può modificare"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Modificabile solo con il link segreto"
#: models.py:20
msgid "name"
msgstr "nome"
#: models.py:42
msgid "No licence set"
msgstr "Nessuna licenza definita"
#: models.py:51
msgid "details"
msgstr "dettagli"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Link alla pagina con i dettagli della licenza"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Modello dell'URL usando il formato delle tile OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Ordine degli sfondi (tilelayers) nel box di modifica"
#: models.py:114
msgid "Only editors can edit"
msgstr "Solo gli editor possono fare modifiche"
#: models.py:115
msgid "Only owner can edit"
msgstr "Solo il proprietario può effettuare modifiche"
#: models.py:118
msgid "everyone (public)"
msgstr "chiunque (pubblico)"
#: models.py:119
msgid "anyone with link"
msgstr "chiunque abbia il ilnk"
#: models.py:120
msgid "editors only"
msgstr "solo autori"
#: models.py:123 models.py:257
msgid "description"
msgstr "descrizione"
#: models.py:124
msgid "center"
msgstr "centra"
#: models.py:125
msgid "zoom"
msgstr "zoom"
#: models.py:126
msgid "locate"
msgstr "localizza"
#: models.py:126
msgid "Locate user on load?"
msgstr "Geolocalizzare l'utente al caricamento?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Scegliere una licenza per la mappa."
#: models.py:130
msgid "licence"
msgstr "licenza"
#: models.py:135
msgid "background"
msgstr "sfondo"
#: models.py:136
msgid "owner"
msgstr "proprietario"
#: models.py:137
msgid "editors"
msgstr "editor"
#: models.py:138
msgid "edit status"
msgstr "stato della modifica"
#: models.py:139
msgid "share status"
msgstr "stato condivisione"
#: models.py:140
msgid "settings"
msgstr "impostazioni"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "La mappa anonima è stata associata all'account %s"
#: models.py:211
msgid "Clone of"
msgstr "Duplicata da "
#: models.py:262
msgid "display on load"
msgstr "mostra al caricamento"
#: models.py:263
msgid "Display this layer on load."
msgstr "Visualizza questo layer al caricamento."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Utente loggato. Continuare..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permessi della mappa"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Effettuare il login per continuare"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Username e password non corrispondono. Riprovare."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "La mappa è stata creata! Per modificarla da un altro computer, si deve utilizzare questo link: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Congratulazioni, la mappa è stata creata!"
#: views.py:264
msgid "Map has been updated!"
msgstr "La mappa è stata aggiornata!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Aggiornato l'elenco degli editor abilitati alla modifica della mappa!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Solo il proprietario può eliminare la mappa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "La mappa è stata clonata! Per modificarla usando un altro computer, si deve utilizzare questo link: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Perfetto, la tua mappa è stata clonata!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Layer eliminato correttamente"

Binary file not shown.

View file

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-10-02 07:23+0000\n"
"PO-Revision-Date: 2017-09-19 22:33+0000\n"
"Last-Translator: tomoya muramoto <muramototomoya@gmail.com>\n"
"Language-Team: Japanese (http://www.transifex.com/yohanboniface/umap/language/ja/)\n"
"MIME-Version: 1.0\n"
@ -206,3 +206,183 @@ msgstr "検索"
#: views.py:190
msgid "View the map"
msgstr "マップ表示"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "非公開の編集用リンク %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "だれでも編集可能"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "非公開の編集リンクからのみ編集可能"
#: models.py:20
msgid "name"
msgstr "名称"
#: models.py:42
msgid "No licence set"
msgstr "ライセンス未設定"
#: models.py:51
msgid "details"
msgstr "詳細"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "ライセンス詳細ページへのリンク"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "OSMタイルフォーマットを利用したURLテンプレート"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "編集ボックス内のタイルレイヤ並び順"
#: models.py:114
msgid "Only editors can edit"
msgstr "指定ユーザのみ編集可能"
#: models.py:115
msgid "Only owner can edit"
msgstr "所有者のみ編集可能"
#: models.py:118
msgid "everyone (public)"
msgstr "制限なし (公開)"
#: models.py:119
msgid "anyone with link"
msgstr "リンクを知っている人全員"
#: models.py:120
msgid "editors only"
msgstr "編集者のみ"
#: models.py:123 models.py:257
msgid "description"
msgstr "概要"
#: models.py:124
msgid "center"
msgstr "中心点"
#: models.py:125
msgid "zoom"
msgstr "ズーム"
#: models.py:126
msgid "locate"
msgstr "現在地"
#: models.py:126
msgid "Locate user on load?"
msgstr "読み込み時に現在地を表示?"
#: models.py:129
msgid "Choose the map licence."
msgstr "マップのライセンスを選択"
#: models.py:130
msgid "licence"
msgstr "ライセンス"
#: models.py:135
msgid "background"
msgstr "背景地図"
#: models.py:136
msgid "owner"
msgstr "所有者"
#: models.py:137
msgid "editors"
msgstr "編集者"
#: models.py:138
msgid "edit status"
msgstr "編集ステータス"
#: models.py:139
msgid "share status"
msgstr "共有状況"
#: models.py:140
msgid "settings"
msgstr "設定"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "所有者不明のマップがアカウント %s と関連付けられました"
#: models.py:211
msgid "Clone of"
msgstr "複製元"
#: models.py:262
msgid "display on load"
msgstr "読み込み時に表示"
#: models.py:263
msgid "Display this layer on load."
msgstr "読み込み時にこのレイヤを表示"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "ログインしました"
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "マップ編集許可"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "ログインが必要です"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "ユーザ名とパスワードが不一致です。もう一度入力してください。"
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "マップの作成が完了しました! このマップを他の端末から編集する場合、いかのリンクを使用してください: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "マップ作成完了です!"
#: views.py:264
msgid "Map has been updated!"
msgstr "マップが更新されました!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "マップ編集者の更新が完了しました!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "マップを削除できるのは所有者だけです"
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "マップの複製が完了しました! このマップを他の端末から編集する場合、以下のリンクを使用してください: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "マップの複製が完了しました!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "レイヤ削除完了"

Binary file not shown.

View file

@ -3,26 +3,25 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# ramunasd <ieskok@ramuno.lt>, 2014
# Ramūnas D. <ieskok@ramuno.lt>, 2014
# Ugne Urbelyte <ugneurbel@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-03-01 00:29+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Lithuanian (http://www.transifex.com/projects/p/umap/language/"
"lt/)\n"
"Language: lt\n"
"PO-Revision-Date: 2017-09-19 23:05+0000\n"
"Last-Translator: Ugne Urbelyte <ugneurbel@gmail.com>\n"
"Language-Team: Lithuanian (http://www.transifex.com/yohanboniface/umap/language/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n"
"Language: lt\n"
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr ""
msgstr "Grįžti į pagrindinį puslapį"
#: templates/auth/user_detail.html:7
#, python-format
@ -31,15 +30,15 @@ msgstr "Peržiūrėti %(current_user)s žemėlapius"
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr ""
msgstr "Įveskite redaguotojų pseudonimus, kad pridėtu..."
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr ""
msgstr "Įveskite naują vartotojo vardą"
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr ""
msgstr "pagal"
#: templates/leaflet_storage/map_list.html:11
msgid "More"
@ -47,19 +46,19 @@ msgstr "Daugiau"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
msgstr "Prisijungti prie savo paskyros"
#: templates/registration/login.html:18
msgid "Username"
msgstr ""
msgstr "Vartotojo vardas"
#: templates/registration/login.html:20
msgid "Password"
msgstr ""
msgstr "Slaptažodis"
#: templates/registration/login.html:21
msgid "Login"
msgstr ""
msgstr "Prisijungti"
#: templates/registration/login.html:27
msgid "Please choose a provider"
@ -70,9 +69,7 @@ msgstr "Pasirinkite teikėją"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap leidžia susikurti savo žemėlapį naudojant <a href=\"%(osm_url)s\" /"
">OpenStreetMap</a> sluoksnius vos per minutę ir įterpti jį į savo puslapį."
msgstr "uMap leidžia susikurti savo žemėlapį naudojant <a href=\"%(osm_url)s\" />OpenStreetMap</a> sluoksnius vos per minutę ir įterpti jį į savo puslapį."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -88,13 +85,11 @@ msgstr "Valdyti POI spalvas ir ikonėles"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Valdyti žemėlapio nustatymus: rodyti mini žemėlapį, automatiškai nustatyti "
"padėtį.."
msgstr "Valdyti žemėlapio nustatymus: rodyti mini žemėlapį, automatiškai nustatyti padėtį.."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr ""
msgstr "Masiškai importuoti geografinius duomenis (geojson, gpx, kml, osm...)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
@ -121,22 +116,18 @@ msgstr "Išbandyti demo"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Tai demonstracinė versija, naudojama testavimui ir naujų versijų "
"demonstravimui. Jei Jums reikia stabilios versijos, tada geriau naudokitės "
"<a href=\"%(stable_url)s\">%(stable_url)s</a>. Jūs taip pat gali pasileisti "
"savo puslapį, juk tai <a href=\"%(repo_url)s\">atviras kodas</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Tai demonstracinė versija, naudojama testavimui ir naujų versijų demonstravimui. Jei Jums reikia stabilios versijos, tada geriau naudokitės <a href=\"%(stable_url)s\">%(stable_url)s</a>. Jūs taip pat gali pasileisti savo puslapį, juk tai <a href=\"%(repo_url)s\">atviras kodas</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr ""
msgstr "uMap žemėlapis"
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr ""
msgstr "Peržiūrėkite žemėlapius, raskite įkvėpimą"
#: templates/umap/navigation.html:12
msgid "My maps"
@ -160,7 +151,7 @@ msgstr "Atsiliepimai"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr ""
msgstr "Keisti slaptažodį"
#: templates/umap/navigation.html:22
msgid "Log out"
@ -168,37 +159,37 @@ msgstr "Atsijungti"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
msgstr "Slaptažodžio keitimas"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
msgstr "Saugumo sumetimais, įveskite savo dabartinį slaptažodį. Tuomet įveskite naują slaptažodį du kartus."
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
msgstr "Senas slaptažodis"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
msgstr "Naujas slaptažodis"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
msgstr "Naujo slaptažodžio patvirtinimas"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
msgstr "Keisti mano slaptažodį"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
msgstr "Slaptažodžio pakeitimas sėkmingas."
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
msgstr "Jūsų slaptažodis buvo pakeistas."
#: templates/umap/search.html:13
msgid "Not map found."
@ -214,7 +205,184 @@ msgstr "Ieškoti"
#: views.py:190
msgid "View the map"
msgstr ""
msgstr "Peržiūrėti žemėlapį"
#~ msgid "Map settings"
#~ msgstr "Žemėlapio nustatymai"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Slapta redagavimo nuoroda %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Visi gali redaguoti"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Redaguojamas tik su slapta nuoroda"
#: models.py:20
msgid "name"
msgstr "vardas"
#: models.py:42
msgid "No licence set"
msgstr "Nenustatyta licenzija"
#: models.py:51
msgid "details"
msgstr "išsamiau"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Licenzijos aprašymo nuoroda."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "URL šablonas OSM kaladėlių formatui"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Žemėlapio sluoksnių tvarka redagavimo lange"
#: models.py:114
msgid "Only editors can edit"
msgstr "Tik redaktoriai gali keisti"
#: models.py:115
msgid "Only owner can edit"
msgstr "Tik savininkas gali keisti"
#: models.py:118
msgid "everyone (public)"
msgstr "visi (viešai)"
#: models.py:119
msgid "anyone with link"
msgstr "visi su nuoroda"
#: models.py:120
msgid "editors only"
msgstr "tik keitėjai"
#: models.py:123 models.py:257
msgid "description"
msgstr "aprašymas"
#: models.py:124
msgid "center"
msgstr "centras"
#: models.py:125
msgid "zoom"
msgstr "mastelis"
#: models.py:126
msgid "locate"
msgstr "nustatyti padėtį"
#: models.py:126
msgid "Locate user on load?"
msgstr "Nustatyti padėti užsikrovus?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Pasirinkite žemėlapio licenziją."
#: models.py:130
msgid "licence"
msgstr "licenzija"
#: models.py:135
msgid "background"
msgstr "fonas"
#: models.py:136
msgid "owner"
msgstr "savininkas"
#: models.py:137
msgid "editors"
msgstr "redaktoriai"
#: models.py:138
msgid "edit status"
msgstr "keisti būseną"
#: models.py:139
msgid "share status"
msgstr "pasidalinti būsena"
#: models.py:140
msgid "settings"
msgstr "nustatymai"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Jūsų anoniminis žemėlapis prijungtas prie Jūsų paskyros %s"
#: models.py:211
msgid "Clone of"
msgstr "Kopija"
#: models.py:262
msgid "display on load"
msgstr "rodyti pasikrovus"
#: models.py:263
msgid "Display this layer on load."
msgstr "Rodyti šį sluoksnį pasrikrovus."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Sėkmingai prisijungėte. Kraunasi..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Žemėlapio leidimai"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Prisijunkite, kad tęsti"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Jūsų vardas ir slaptažodis yra neteisingi. Prašom pabandyti iš naujo."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Jūsų žemėlapis sėkmingai sukurtas! Jei norite redaguoti jį iš kito kompiuterio, pasinaudokite šia nuoroda: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Sveikinam, Jūsų žemėlapis sukurtas!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Žemėlapis atnaujintas!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Žemėlapio keitėjai atnaujinti!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Tik savininkas gali ištrinti žemėlapį."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Jūsų žemėlapis nukopijuotas! Jei norite redaguoti jį iš kito kompiuterio, pasinaudokite šia nuoroda: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Sveikinam, Jūsų žemėlapis buvo nukopijuotas!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Sluoksnis sėkmingai ištrintas."

Binary file not shown.

View file

@ -205,3 +205,183 @@ msgstr ""
#: views.py:190
msgid "View the map"
msgstr ""
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr ""
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr ""
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr ""
#: models.py:20
msgid "name"
msgstr "naam"
#: models.py:42
msgid "No licence set"
msgstr ""
#: models.py:51
msgid "details"
msgstr ""
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr ""
#: models.py:66
msgid "URL template using OSM tile format"
msgstr ""
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr ""
#: models.py:114
msgid "Only editors can edit"
msgstr ""
#: models.py:115
msgid "Only owner can edit"
msgstr ""
#: models.py:118
msgid "everyone (public)"
msgstr ""
#: models.py:119
msgid "anyone with link"
msgstr ""
#: models.py:120
msgid "editors only"
msgstr ""
#: models.py:123 models.py:257
msgid "description"
msgstr ""
#: models.py:124
msgid "center"
msgstr ""
#: models.py:125
msgid "zoom"
msgstr ""
#: models.py:126
msgid "locate"
msgstr ""
#: models.py:126
msgid "Locate user on load?"
msgstr ""
#: models.py:129
msgid "Choose the map licence."
msgstr ""
#: models.py:130
msgid "licence"
msgstr ""
#: models.py:135
msgid "background"
msgstr ""
#: models.py:136
msgid "owner"
msgstr ""
#: models.py:137
msgid "editors"
msgstr ""
#: models.py:138
msgid "edit status"
msgstr ""
#: models.py:139
msgid "share status"
msgstr ""
#: models.py:140
msgid "settings"
msgstr ""
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr ""
#: models.py:211
msgid "Clone of"
msgstr ""
#: models.py:262
msgid "display on load"
msgstr ""
#: models.py:263
msgid "Display this layer on load."
msgstr ""
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr ""
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr ""
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr ""
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr ""
#: views.py:264
msgid "Map has been updated!"
msgstr ""
#: views.py:291
msgid "Map editors updated with success!"
msgstr ""
#: views.py:306
msgid "Only its owner can delete the map."
msgstr ""
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr ""
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr ""
#: views.py:526
msgid "Layer successfully deleted."
msgstr ""

View file

@ -4,21 +4,23 @@
#
# Translators:
# Daniel Koć <daniel@xn--ko-wla.pl>, 2015
# endro, 2016
# endro, 2015
# Teiron <mmok444@gmail.com>, 2016
# Maciej Kowalik <m.kowalik.79@gmail.com>, 2016
# Teiron, 2016
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-09-16 17:30+0000\n"
"Last-Translator: Teiron <mmok444@gmail.com>\n"
"PO-Revision-Date: 2018-06-02 14:15+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Polish (http://www.transifex.com/yohanboniface/umap/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: templates/404.html:7
msgid "Take me to the home page"
@ -207,3 +209,183 @@ msgstr "Szukaj"
#: views.py:190
msgid "View the map"
msgstr "Zobacz mapę"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Sekretnym odnośnikiem do edycji jest %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Wszyscy mogą edytować"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Edycja możliwa tylko z sekretnym odnośnikiem"
#: models.py:20
msgid "name"
msgstr "nazwa"
#: models.py:42
msgid "No licence set"
msgstr "Brak ustawionej licencji"
#: models.py:51
msgid "details"
msgstr "szczegóły"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Odnośnik do strony ze szczegółowym opisem licencji."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Szablon URL używający formatu kafelków OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Kolejność podkładów w oknie edycji"
#: models.py:114
msgid "Only editors can edit"
msgstr "Tylko edytorzy mogą edytować"
#: models.py:115
msgid "Only owner can edit"
msgstr "Tylko właściciel może edytować"
#: models.py:118
msgid "everyone (public)"
msgstr "wszyscy (publiczne)"
#: models.py:119
msgid "anyone with link"
msgstr "każdy z linkiem"
#: models.py:120
msgid "editors only"
msgstr "tylko edytorzy"
#: models.py:123 models.py:257
msgid "description"
msgstr "opis"
#: models.py:124
msgid "center"
msgstr "środek"
#: models.py:125
msgid "zoom"
msgstr "przybliżenie"
#: models.py:126
msgid "locate"
msgstr "lokalizuj"
#: models.py:126
msgid "Locate user on load?"
msgstr "Lokalizować użytkownika po załadowaniu?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Wybierz licencję mapy."
#: models.py:130
msgid "licence"
msgstr "licencja"
#: models.py:135
msgid "background"
msgstr "tło"
#: models.py:136
msgid "owner"
msgstr "właściciel"
#: models.py:137
msgid "editors"
msgstr "edytorzy"
#: models.py:138
msgid "edit status"
msgstr "status edycji"
#: models.py:139
msgid "share status"
msgstr "udostępnij status"
#: models.py:140
msgid "settings"
msgstr "ustawienia"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Twoja anonimowa mapa została dołączona do twojego konta %s"
#: models.py:211
msgid "Clone of"
msgstr "Kopia"
#: models.py:262
msgid "display on load"
msgstr "wyświetl po załadowaniu"
#: models.py:263
msgid "Display this layer on load."
msgstr "Wyświetl tę warstwę po załadowaniu."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Jesteś zalogowany. Kontynuowanie..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Uprawnienia mapy"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Proszę się zalogować by kontynuować"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Twoja nazwa użytkownika i hasło nie pasują. Proszę spróbować ponownie."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Twoja mapa została utworzona! Jeśli chcesz edytować ją z innego komputera, użyj odnośnika: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Gratulacje, twoja mapa została utworzona!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Mapa została zaktualizowana!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Edytorzy mapy zaktualizowani pomyślnie!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Tylko właściciel może usunąć mapę."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Twoja mapa została skopiowana! Jeśli chcesz edytować ją z innego komputera, użyj odnośnika: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Gratulacje, twoja mapa została skopiowana!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Warstwa usunięta pomyślnie."

Binary file not shown.

View file

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-12-22 10:03+0000\n"
"PO-Revision-Date: 2017-09-19 22:04+0000\n"
"Last-Translator: Rui <xymarior@yandex.com>\n"
"Language-Team: Portuguese (http://www.transifex.com/yohanboniface/umap/language/pt/)\n"
"MIME-Version: 1.0\n"
@ -206,3 +206,183 @@ msgstr "Procurar"
#: views.py:190
msgid "View the map"
msgstr "Ver o mapa"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Link secreto para edição é %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Todos podem editar"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Unicamente editável através de link secreto"
#: models.py:20
msgid "name"
msgstr "nome"
#: models.py:42
msgid "No licence set"
msgstr "Nenhuma licença definida"
#: models.py:51
msgid "details"
msgstr "detalhes"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Link para uma página detalhando a licença."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Modelo de URL no formato de telas OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Ordem das camadas na caixa de edição"
#: models.py:114
msgid "Only editors can edit"
msgstr "Só editores podem editar"
#: models.py:115
msgid "Only owner can edit"
msgstr "Só o proprietário pode editar"
#: models.py:118
msgid "everyone (public)"
msgstr "todos (público)"
#: models.py:119
msgid "anyone with link"
msgstr "qualquer um com o link"
#: models.py:120
msgid "editors only"
msgstr "só editores"
#: models.py:123 models.py:257
msgid "description"
msgstr "descrição"
#: models.py:124
msgid "center"
msgstr "centro"
#: models.py:125
msgid "zoom"
msgstr "zoom"
#: models.py:126
msgid "locate"
msgstr "localizar"
#: models.py:126
msgid "Locate user on load?"
msgstr "Localizar usuário no início?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Escolha uma licença para o mapa."
#: models.py:130
msgid "licence"
msgstr "licença"
#: models.py:135
msgid "background"
msgstr "fundo"
#: models.py:136
msgid "owner"
msgstr "proprietário"
#: models.py:137
msgid "editors"
msgstr "editores"
#: models.py:138
msgid "edit status"
msgstr "editar estado"
#: models.py:139
msgid "share status"
msgstr "partilhar estado"
#: models.py:140
msgid "settings"
msgstr "parâmetros"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "O seu mapa anónimo foi anexado à sua conta %s"
#: models.py:211
msgid "Clone of"
msgstr "Clone de"
#: models.py:262
msgid "display on load"
msgstr "mostrar no início"
#: models.py:263
msgid "Display this layer on load."
msgstr "Apresentar esta camada ao carregar."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Sucesso na identificação. Continuando..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Permissões do mapa"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Por favor entre na sua conta para continuar"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "O nome de usuário e senha não correspondem. Tente novamente."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "O seu mapa foi criado! Se quiser editar este mapa noutro computador, por favor utilize este link: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Parabéns, o seu mapa foi criado!"
#: views.py:264
msgid "Map has been updated!"
msgstr "O mapa foi atualizado!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Os editores do mapa foram atualizados com sucesso!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Só o proprietário pode eliminar o mapa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "O seu mapa foi clonado! Se quiser editar este mapa noutro computador, por favor utilize este link: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Parabéns, o seu mapa foi clonado!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Camada eliminada com sucesso."

Binary file not shown.

View file

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-10-20 07:57+0000\n"
"PO-Revision-Date: 2017-09-20 07:08+0000\n"
"Last-Translator: Кругликов Илья <ilis@inbox.ru>\n"
"Language-Team: Russian (http://www.transifex.com/yohanboniface/umap/language/ru/)\n"
"MIME-Version: 1.0\n"
@ -206,3 +206,183 @@ msgstr "Найти"
#: views.py:190
msgid "View the map"
msgstr "Посмотреть карту"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Секретная ссылка для редактирования: %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Все могут редактировать"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Редактирование возможно только при наличии секретной ссылки"
#: models.py:20
msgid "name"
msgstr "название"
#: models.py:42
msgid "No licence set"
msgstr "Лицензия не задана"
#: models.py:51
msgid "details"
msgstr "подробности"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Ссылка на страницу с описанием лицензии"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "шаблон ссылки использует формат слоя OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Расположите слои карт в окне редактирования"
#: models.py:114
msgid "Only editors can edit"
msgstr "Только редакторы могут редактировать"
#: models.py:115
msgid "Only owner can edit"
msgstr "Только владелец может редактировать"
#: models.py:118
msgid "everyone (public)"
msgstr "все (без ограничений)"
#: models.py:119
msgid "anyone with link"
msgstr "все, у кого есть ссылка"
#: models.py:120
msgid "editors only"
msgstr "только редакторы"
#: models.py:123 models.py:257
msgid "description"
msgstr "описание"
#: models.py:124
msgid "center"
msgstr "центр"
#: models.py:125
msgid "zoom"
msgstr "масштаб"
#: models.py:126
msgid "locate"
msgstr "геолокация"
#: models.py:126
msgid "Locate user on load?"
msgstr "Использовать геолокацию при загрузке?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Выберите лицензию для карты."
#: models.py:130
msgid "licence"
msgstr "лицензия"
#: models.py:135
msgid "background"
msgstr "фоновый слой"
#: models.py:136
msgid "owner"
msgstr "владелец"
#: models.py:137
msgid "editors"
msgstr "редакторы"
#: models.py:138
msgid "edit status"
msgstr "статус редактирования"
#: models.py:139
msgid "share status"
msgstr "статус совместного использования"
#: models.py:140
msgid "settings"
msgstr "настройки"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Ваша анонимная карта была присоединена к вашей учётной записи %s"
#: models.py:211
msgid "Clone of"
msgstr "Копия"
#: models.py:262
msgid "display on load"
msgstr "показывать при загрузке"
#: models.py:263
msgid "Display this layer on load."
msgstr "Показать этот слой при загрузке."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Вы вошли. Продолжим..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Разрешения для карты"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Чтобы продолжить, выполните вход"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Имя пользователя или пароль неверные. Попробуйте ещё раз."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Ваша карта готова! Если вы хотите редактировать её на другом компьютере, используйте эту ссылку:: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Поздравляем, ваша карта готова!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Карта обновлена!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Редакторы карты успешно обновлены!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Только владелец карты может удалить её."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Карта была скопирована. Если вы хотите редактировать её на другом компьютере, используйте эту ссылку: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Поздравляем, ваша карта скопирована!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Слой удалён."

View file

@ -11,14 +11,14 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-10-09 11:19+0000\n"
"PO-Revision-Date: 2017-09-21 14:34+0000\n"
"Last-Translator: Martin <martin@droid.sk>\n"
"Language-Team: Slovak (Slovakia) (http://www.transifex.com/yohanboniface/umap/language/sk_SK/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sk_SK\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
#: templates/404.html:7
msgid "Take me to the home page"
@ -207,3 +207,183 @@ msgstr "Hľadať"
#: views.py:190
msgid "View the map"
msgstr "Prezrieť si túto mapu"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Tajný odkaz umožňujúci úpravu mapy je %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Hocikto môže upravovať"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Možné upravovať iba pomocou tajného odkazu"
#: models.py:20
msgid "name"
msgstr "názov"
#: models.py:42
msgid "No licence set"
msgstr "Žiadná licencia nie je nastavená"
#: models.py:51
msgid "details"
msgstr "podrobnosti"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Odkaz na stránku s podrobnejším popisom licencie."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Vzor URL vo formáte pre dlaždice OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Poradie vrstiev pri úprave"
#: models.py:114
msgid "Only editors can edit"
msgstr "Upravovať môžu iba prispievatelia"
#: models.py:115
msgid "Only owner can edit"
msgstr "Upravovať môže iba vlastník"
#: models.py:118
msgid "everyone (public)"
msgstr "hocikto (verejná)"
#: models.py:119
msgid "anyone with link"
msgstr "hocikto pomocou odkazu"
#: models.py:120
msgid "editors only"
msgstr "iba prispievatelia"
#: models.py:123 models.py:257
msgid "description"
msgstr "popis"
#: models.py:124
msgid "center"
msgstr "stred"
#: models.py:125
msgid "zoom"
msgstr "priblíženie"
#: models.py:126
msgid "locate"
msgstr "lokalizovať"
#: models.py:126
msgid "Locate user on load?"
msgstr "Nájsť polohu používateľa pri štarte?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Vyberte si licenciu mapy."
#: models.py:130
msgid "licence"
msgstr "licencia"
#: models.py:135
msgid "background"
msgstr "pozadie"
#: models.py:136
msgid "owner"
msgstr "vlastník"
#: models.py:137
msgid "editors"
msgstr "prispievatelia"
#: models.py:138
msgid "edit status"
msgstr "kto môže vykonávať úpravy"
#: models.py:139
msgid "share status"
msgstr "nastavenie zdieľania"
#: models.py:140
msgid "settings"
msgstr "nastavenia"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Vaša anonymná mapa bola pripojená k vašemu účtu %s"
#: models.py:211
msgid "Clone of"
msgstr "Kópia"
#: models.py:262
msgid "display on load"
msgstr "zobraziť pri štarte"
#: models.py:263
msgid "Display this layer on load."
msgstr "Zobraziť túto vrstvu pri štarte."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Ste prihláseni. Pokračujeme ďalej…"
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Prístupové práva"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Pre pokračovanie sa musíte prihlásiť"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Používateľské meno a heslo sa nezhodujú. Prosím, skúste to znova."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Vaša mapa bola vytvorená! Ak chcete upravovať túto mapu z iného počítača, použite tento odkaz: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Gratulujeme, vaša mapa bola vytvorená!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Mapa bola aktualizována!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Zoznam prispievovateľov bol úspešne upravený!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Iba vlastník môže vymazať túto mapu."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Bola vytvorená kópia mapy! Ak chcete upravovať túto mapu z iného počítača, použite tento odkaz: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Gratulujeme, bola vytvorená kópia mapy!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Vrstva bola úspešne vymazaná."

View file

@ -0,0 +1,387 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Matej Urbančič <>, 2018
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2018-06-02 14:15+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Slovenian (http://www.transifex.com/yohanboniface/umap/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr "Nazaj na začetno stran"
#: templates/auth/user_detail.html:7
#, python-format
msgid "Browse %(current_user)s's maps"
msgstr "Prebrskaj zemljevide (%(current_user)s)"
#: templates/leaflet_storage/map_detail.html:24
msgid "Type editors nick to add…"
msgstr "Vpišite vzdevek urednika ..."
#: templates/leaflet_storage/map_detail.html:27
msgid "Type new owner nick…"
msgstr "Vpišite nov vzdevek lastnika ..."
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
msgstr ""
#: templates/leaflet_storage/map_list.html:11
msgid "More"
msgstr "Več"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr "Prijavite se z računom"
#: templates/registration/login.html:18
msgid "Username"
msgstr "Uporabniško ime"
#: templates/registration/login.html:20
msgid "Password"
msgstr "Geslo"
#: templates/registration/login.html:21
msgid "Login"
msgstr "Prijava"
#: templates/registration/login.html:27
msgid "Please choose a provider"
msgstr "Izbor ponudnika"
#: templates/umap/about_summary.html:6
#, python-format
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr "Okolje uMap omogoča hitro ustvarjanje plasti zemljevidov <a href=\"%(osm_url)s\" />OpenStreetMap</a> in vstavljanje povezav na spletno stran."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
msgstr "Izbor plasti na zemljevidu"
#: templates/umap/about_summary.html:12
msgid "Add POIs: markers, lines, polygons..."
msgstr "Dodajanje točk POI: označbe, črte, polja ..."
#: templates/umap/about_summary.html:13
msgid "Manage POIs colours and icons"
msgstr "Prilagajanje ikon in barv točk POI"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr "Upravljanje možnosti zemljevidov: določanje uporabnikov, vrst prikaza ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
msgstr "Paketno uvažanje geografskih podatkov (geojson, gpx, kml, osm ...)"
#: templates/umap/about_summary.html:16
msgid "Choose the license for your data"
msgstr "Izbor dovoljenja za vpisane podatke"
#: templates/umap/about_summary.html:17
msgid "Embed and share your map"
msgstr "Vstavljanje in objavljanje zemljevida"
#: templates/umap/about_summary.html:23
#, python-format
msgid "And it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Povrh vsega pa je projekt še <a href=\"%(repo_url)s\">odprtokoden</a>!"
#: templates/umap/about_summary.html:32 templates/umap/navigation.html:31
msgid "Create a map"
msgstr "Ustvari zemljevid"
#: templates/umap/about_summary.html:34
msgid "Play with the demo"
msgstr "Pokaži preizkusne strani"
#: templates/umap/home.html:10
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Preizkusna različica je na voljo za pregled in spoznavanje funkcionalnosti. Če potrebujete stabilno različico, uporabite <a href=\"%(stable_url)s\">%(stable_url)s</a>. Seveda lahko vzpostavite svoj strežnik, saj je orodje <a href=\"%(repo_url)s\">odprtokodno</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
msgstr "Zemljevid spletišča uMaps"
#: templates/umap/home.html:24
msgid "Get inspired, browse maps"
msgstr "Poiščite zamisli, prebrskajte zemljevide"
#: templates/umap/navigation.html:12
msgid "My maps"
msgstr "Moji zemljevidi"
#: templates/umap/navigation.html:14
msgid "Log in"
msgstr "Prijava"
#: templates/umap/navigation.html:14
msgid "Sign in"
msgstr "Vpis"
#: templates/umap/navigation.html:16
msgid "About"
msgstr "O projektu"
#: templates/umap/navigation.html:17
msgid "Feedback"
msgstr "Odziv"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr "Zamenjaj geslo"
#: templates/umap/navigation.html:22
msgid "Log out"
msgstr "Odjava"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr "Spremeni geslo"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr "Iz varnostnih razlogov morate vpisati staro geslo in nato še dvakrat vpisati novo, da se prepričate v pravilnost vpisa."
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr "Staro geslo"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr "Novo geslo"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr "Potrditev novega gesla"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr "Spremeni geslo"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr "Geslo je uspešno spremenjeno."
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr "Geslo je spremenjeno."
#: templates/umap/search.html:13
msgid "Not map found."
msgstr "Zemljevida ni mogoče najti."
#: templates/umap/search_bar.html:6
msgid "Search maps"
msgstr "Poišči zemljevide"
#: templates/umap/search_bar.html:9
msgid "Search"
msgstr "Poišči"
#: views.py:190
msgid "View the map"
msgstr "Pogled zemljevida"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Skrivna povezava za urejanje je %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Vsakdo lahko ureja"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Urejanje je mogoče le prek posebne skrivne povezave"
#: models.py:20
msgid "name"
msgstr "ime"
#: models.py:42
msgid "No licence set"
msgstr "Ni določenega dovoljenja uporabe"
#: models.py:51
msgid "details"
msgstr "podrobnosti"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Povezava do strani, kjer je objavljeno dovoljenje."
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Predloga naslova URL z uporabo zapisa OSM."
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Vrstni red plasti v urejevalniku"
#: models.py:114
msgid "Only editors can edit"
msgstr "Urejajo lahko le uredniki"
#: models.py:115
msgid "Only owner can edit"
msgstr "Ureja lahko le lastnik"
#: models.py:118
msgid "everyone (public)"
msgstr "kdorkoli (javno)"
#: models.py:119
msgid "anyone with link"
msgstr "kdorkoli s povezavo"
#: models.py:120
msgid "editors only"
msgstr "le uredniki"
#: models.py:123 models.py:257
msgid "description"
msgstr "opis"
#: models.py:124
msgid "center"
msgstr "središče"
#: models.py:125
msgid "zoom"
msgstr "približaj"
#: models.py:126
msgid "locate"
msgstr "določi mesto"
#: models.py:126
msgid "Locate user on load?"
msgstr "Al naj se ob zagonu določi trenutno mesto uporabnika?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Izbor dovoljenja za zemljevid."
#: models.py:130
msgid "licence"
msgstr "dovoljenje"
#: models.py:135
msgid "background"
msgstr "ozadje"
#: models.py:136
msgid "owner"
msgstr "lastnik"
#: models.py:137
msgid "editors"
msgstr "uredniki"
#: models.py:138
msgid "edit status"
msgstr "stanje urejanja"
#: models.py:139
msgid "share status"
msgstr "stanje souporabe"
#: models.py:140
msgid "settings"
msgstr "nastavitve"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Anonimni zemljevid je povezan z računom %s"
#: models.py:211
msgid "Clone of"
msgstr "Klon zemljevida"
#: models.py:262
msgid "display on load"
msgstr "pokaži ob zagonu"
#: models.py:263
msgid "Display this layer on load."
msgstr "Pokaži to plast med nalaganjem."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Prijava je uspešno končana. Poteka nalaganje vsebine ..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Dovoljenja za urejanje"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Pred nadaljevanjem se je treba prijaviti."
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Uporabniško ime in geslo nista skladna. Poskusite znova."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Zemljevid je ustvarjen! Za urejanje z drugega računalnika uporabite povezavo: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Zemljevid je uspešno ustvarjen!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Zemljevid je posodobljen!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "seznam urednikov je posodobljen!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Zemljevid lahko izbriše le lastnik."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Zemljevid je kloniran! Za urejanje z drugega računalnika uporabite povezavo: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Zemljevid je uspešno kloniran!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Plast je uspešno izbrisana."

View file

@ -3,26 +3,24 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Сергій Дубик <dubyk@ukr.net>, 2014
# Сергій Дубик <dubyk@ukr.net>, 2014,2017
msgid ""
msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-09-15 16:05+0000\n"
"PO-Revision-Date: 2017-09-20 04:50+0000\n"
"Last-Translator: Сергій Дубик <dubyk@ukr.net>\n"
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/umap/"
"language/uk_UA/)\n"
"Language: uk_UA\n"
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/yohanboniface/umap/language/uk_UA/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Language: uk_UA\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
#: templates/404.html:7
msgid "Take me to the home page"
msgstr ""
msgstr "Перемістіть мене на головну сторінку"
#: templates/auth/user_detail.html:7
#, python-format
@ -34,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "Введіть ім’я редактора, щоб додати…"
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Введіть ім’я редактора, щоб додати…"
msgstr "Введіть нік нового власника..."
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -49,19 +45,19 @@ msgstr "Ще"
#: templates/registration/login.html:4
msgid "Please log in with your account"
msgstr ""
msgstr "Будь ласка, увійдіть за обліковим записом"
#: templates/registration/login.html:18
msgid "Username"
msgstr ""
msgstr "Ім’я користувача"
#: templates/registration/login.html:20
msgid "Password"
msgstr ""
msgstr "Пароль"
#: templates/registration/login.html:21
msgid "Login"
msgstr ""
msgstr "Логін"
#: templates/registration/login.html:27
msgid "Please choose a provider"
@ -72,9 +68,7 @@ msgstr "Виберіть провайдера автентифікації"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap дає Вам можливість за лічені хвилини створювати мапи на основі даних <a "
"href=\"%(osm_url)s\" />OpenStreetMap</a> та публікувати їх на своєму сайті."
msgstr "uMap дає Вам можливість за лічені хвилини створювати мапи на основі даних <a href=\"%(osm_url)s\" />OpenStreetMap</a> та публікувати їх на своєму сайті."
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -90,9 +84,7 @@ msgstr "Вибирайте потрібні кольори та значки д
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Змінюйте параметри мапи: відображення мінімапи, встановлення місця "
"користувача при завантаженні …"
msgstr "Змінюйте параметри мапи: відображення мінімапи, встановлення місця користувача при завантаженні …"
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -123,14 +115,10 @@ msgstr "Погратися з демо-версією"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Це демонстраційний сайт, що використовується для тестів та підготовки "
"стабільних випусків. Якщо Вам потрібна стабільна версія, перейдіть на <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. Ви також можете створити свою "
"інсталяцію, оскільки це <a href=\"%(repo_url)s\">відкрите ПЗ</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Це демонстраційний сайт, що використовується для тестів та підготовки стабільних випусків. Якщо Вам потрібна стабільна версія, перейдіть на <a href=\"%(stable_url)s\">%(stable_url)s</a>. Ви також можете створити свою інсталяцію, оскільки це <a href=\"%(repo_url)s\">відкрите ПЗ</a>!"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -162,7 +150,7 @@ msgstr "Зворотній зв’язок"
#: templates/umap/navigation.html:20
msgid "Change password"
msgstr ""
msgstr "Зміна паролю"
#: templates/umap/navigation.html:22
msgid "Log out"
@ -170,37 +158,37 @@ msgstr "Вийти"
#: templates/umap/password_change.html:6
msgid "Password change"
msgstr ""
msgstr "Зміна паролю"
#: templates/umap/password_change.html:7
msgid ""
"Please enter your old password, for security's sake, and then enter your new"
" password twice so we can verify you typed it in correctly."
msgstr ""
msgstr "Будь ласка, введіть свій старий пароль, для надійності, а потім введіть новий пароль двічі, щоб ми могли переконатися, що Ви ввели його правильно."
#: templates/umap/password_change.html:12
msgid "Old password"
msgstr ""
msgstr "Старий пароль"
#: templates/umap/password_change.html:14
msgid "New password"
msgstr ""
msgstr "Новий пароль"
#: templates/umap/password_change.html:16
msgid "New password confirmation"
msgstr ""
msgstr "Підтвердження для нового паролю"
#: templates/umap/password_change.html:18
msgid "Change my password"
msgstr ""
msgstr "Змінити мій пароль"
#: templates/umap/password_change_done.html:6
msgid "Password change successful"
msgstr ""
msgstr "Зміна паролю успішна."
#: templates/umap/password_change_done.html:7
msgid "Your password was changed."
msgstr ""
msgstr "Ваш пароль змінено."
#: templates/umap/search.html:13
msgid "Not map found."
@ -218,5 +206,182 @@ msgstr "Шукати"
msgid "View the map"
msgstr "Переглянути мапу"
#~ msgid "Map settings"
#~ msgstr "Налаштування мапи"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Секретне посилання для редагування: %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Кожен може редагувати"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Редагування можливе лише за наявності секретного посилання"
#: models.py:20
msgid "name"
msgstr "назва"
#: models.py:42
msgid "No licence set"
msgstr "Ліцензія не задана"
#: models.py:51
msgid "details"
msgstr "подробиці"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Посилання на сторінку з описом ліцензії"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "шаблон посилання використовує формат шару OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Розташуйте шари мап у вікні редагування"
#: models.py:114
msgid "Only editors can edit"
msgstr "Лише редактори можуть редагувати"
#: models.py:115
msgid "Only owner can edit"
msgstr "Лише власник може редагувати"
#: models.py:118
msgid "everyone (public)"
msgstr "усі (відкритий доступ)"
#: models.py:119
msgid "anyone with link"
msgstr "усі, у кого є посилання"
#: models.py:120
msgid "editors only"
msgstr "лише редактори"
#: models.py:123 models.py:257
msgid "description"
msgstr "опис"
#: models.py:124
msgid "center"
msgstr "центр"
#: models.py:125
msgid "zoom"
msgstr "масштаб"
#: models.py:126
msgid "locate"
msgstr "геолокація"
#: models.py:126
msgid "Locate user on load?"
msgstr "Використовувати геолокацію при завантаженні?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Виберіть ліцензію для мапи."
#: models.py:130
msgid "licence"
msgstr "ліцензія"
#: models.py:135
msgid "background"
msgstr "фоновий шар"
#: models.py:136
msgid "owner"
msgstr "власник"
#: models.py:137
msgid "editors"
msgstr "редактори"
#: models.py:138
msgid "edit status"
msgstr "статус редагування"
#: models.py:139
msgid "share status"
msgstr "статус спільного використання"
#: models.py:140
msgid "settings"
msgstr "налаштування"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Ваша анонімна мапа була приєднана до Вашого облікового запису %s"
#: models.py:211
msgid "Clone of"
msgstr "Копія "
#: models.py:262
msgid "display on load"
msgstr "показувати при завантаженні"
#: models.py:263
msgid "Display this layer on load."
msgstr "Показати цей шар при завантаженні."
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Ви увійшли. Продовжимо …"
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Дозволи для мапи"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Щоб продовжити, виконайте вхід"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Ім’я користувача або пароль невірні. Спробуйте ще раз."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Ваша мапа готова! Якщо Ви хочете редагувати її на іншому комп’ютері, використовуйте це посилання: %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Вітаємо, Ваша мапа готова!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Мапа оновлена!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Редактори мапи успішно оновлені!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Лише власник мапи може вилучити її."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Карта була скопійована. Якщо Ви хочете редагувати її на іншому комп’ютері, використовуйте це посилання: %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Вітаємо, Ваша мапа скопійована!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Шар вилучено."

Binary file not shown.

View file

@ -9,14 +9,13 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-08-11 00:35+0000\n"
"Last-Translator: Thanh Le Viet <lethanhx2k@gmail.com>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/umap/language/"
"vi/)\n"
"Language: vi\n"
"PO-Revision-Date: 2017-09-20 09:39+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Vietnamese (http://www.transifex.com/yohanboniface/umap/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: templates/404.html:7
@ -33,10 +32,8 @@ msgid "Type editors nick to add…"
msgstr "Nhập nick thành viên để thêm vào..."
#: templates/leaflet_storage/map_detail.html:27
#, fuzzy
#| msgid "Type editors nick to add…"
msgid "Type new owner nick…"
msgstr "Nhập nick thành viên để thêm vào..."
msgstr ""
#: templates/leaflet_storage/map_list.html:7 views.py:184
msgid "by"
@ -71,9 +68,7 @@ msgstr "Hãy chọn một nhà cung cấp"
msgid ""
"uMap let you create maps with <a href=\"%(osm_url)s\" />OpenStreetMap</a> "
"layers in a minute and embed them in your site."
msgstr ""
"uMap cho phép bạn tạo bản đồ với các layer của <a href=\"%(osm_url)s\" /"
">OpenStreetMap</a> trong vài phút và chèn nó vào trong website của bạn"
msgstr "uMap cho phép bạn tạo bản đồ với các layer của <a href=\"%(osm_url)s\" />OpenStreetMap</a> trong vài phút và chèn nó vào trong website của bạn"
#: templates/umap/about_summary.html:11
msgid "Choose the layers of your map"
@ -89,9 +84,7 @@ msgstr "Quản lý màu và biểu tượng POI"
#: templates/umap/about_summary.html:14
msgid "Manage map options: display a minimap, locate user on load…"
msgstr ""
"Quản lý thiết lập bản đồ: hiển thị bản đồ con, xác định vị trí người dùng "
"khi tải bản đồ..."
msgstr "Quản lý thiết lập bản đồ: hiển thị bản đồ con, xác định vị trí người dùng khi tải bản đồ..."
#: templates/umap/about_summary.html:15
msgid "Batch import geostructured data (geojson, gpx, kml, osm...)"
@ -122,14 +115,10 @@ msgstr "Xem thử demo"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
msgstr ""
"Đây là một bản demo được dùng để kiểm tra và xuất bản thử. Nếu bạn cần một "
"bản ổ định, hãy sử dụng <a href=\"%(stable_url)s\">%(stable_url)s</a>. Bạn "
"cũng có thể chạy nó trên máy tính của mình vì nó là phần mềm <a href="
"\"%(repo_url)s\">nguồn mở</a>"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr "Đây là một bản demo được dùng để kiểm tra và xuất bản thử. Nếu bạn cần một bản ổ định, hãy sử dụng <a href=\"%(stable_url)s\">%(stable_url)s</a>. Bạn cũng có thể chạy nó trên máy tính của mình vì nó là phần mềm <a href=\"%(repo_url)s\">nguồn mở</a>"
#: templates/umap/home.html:17
msgid "Map of the uMaps"
@ -217,5 +206,182 @@ msgstr "Tìm"
msgid "View the map"
msgstr "Xem bản đồ"
#~ msgid "Map settings"
#~ msgstr "Thiết lập bản đồ"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "Link chỉnh sửa bí mật là %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "Ai cũng có thể chỉnh sửa"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "Chỉ có thể sửa với liên kết chỉnh sửa bí mật"
#: models.py:20
msgid "name"
msgstr "tên"
#: models.py:42
msgid "No licence set"
msgstr "Bản quyền không được đặt"
#: models.py:51
msgid "details"
msgstr "chi tiết"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "Liên kết đến trang có chi tiết về bản quyền"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "Mẫu URL sử dụng định dạng tile của OSM"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "Thứ tự các titlelayer trong hộp chỉnh sửa"
#: models.py:114
msgid "Only editors can edit"
msgstr "Chỉ chỉnh sửa bởi người có quyền"
#: models.py:115
msgid "Only owner can edit"
msgstr "Chỉ người sở hữu có thể chỉnh sửa"
#: models.py:118
msgid "everyone (public)"
msgstr "mọi người"
#: models.py:119
msgid "anyone with link"
msgstr "bất kì ai với liên kết"
#: models.py:120
msgid "editors only"
msgstr "chỉ người có quyền"
#: models.py:123 models.py:257
msgid "description"
msgstr "mô tả"
#: models.py:124
msgid "center"
msgstr "trung tâm"
#: models.py:125
msgid "zoom"
msgstr "thu phóng"
#: models.py:126
msgid "locate"
msgstr "xác định"
#: models.py:126
msgid "Locate user on load?"
msgstr "Xác định người dùng khi tải trang?"
#: models.py:129
msgid "Choose the map licence."
msgstr "Chọn bản quyền cho bản đồ"
#: models.py:130
msgid "licence"
msgstr "bản quyền"
#: models.py:135
msgid "background"
msgstr "nền"
#: models.py:136
msgid "owner"
msgstr "chủ nhân"
#: models.py:137
msgid "editors"
msgstr "người chỉnh sửa"
#: models.py:138
msgid "edit status"
msgstr "trạng thái chỉnh sửa"
#: models.py:139
msgid "share status"
msgstr "chia sẻ trạng thái"
#: models.py:140
msgid "settings"
msgstr "thiết lập"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "Bản đồ chưa đặt tên của bản đã được đính kèm vào tài khoản của bạn %s"
#: models.py:211
msgid "Clone of"
msgstr "Sao chép của"
#: models.py:262
msgid "display on load"
msgstr "hiển thị khi tải trang"
#: models.py:263
msgid "Display this layer on load."
msgstr "Hiển thị layer này khi tải trang"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "Bạn đã đăng nhập, Đang tiếp tục..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "Quyền hạn"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "Vui lòng đăng nhập để thực thi"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "Tên truy cập hoặc mật khẩu không đúng. Vui lòng thử lại."
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Bản đồ của bạn đã được tạo! Nếu bạn muốn chỉnh sửa bản đồ từ máy tính khác, vui lòng sử dụng liên kết này %(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "Chúc mừng, bản đồ của bạn đã được tạo!"
#: views.py:264
msgid "Map has been updated!"
msgstr "Bản đồ đã được cập nhật!"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "Bản đồ được cập nhật thành công!"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "Chỉ chủ nhân của bản đồ mới có quyền xóa."
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "Bản đồ của bạn đã được sao chép. Nếu bạn muốn chỉnh sửa bản đồ từ máy tính khác, vui lòng sử dụng liên kết này %(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "Chúc mừng, bản đồ của bạn đã được sao chép!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "Đã xóa layer"

Binary file not shown.

View file

@ -9,14 +9,13 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2014-06-23 01:07+0000\n"
"Last-Translator: sun wei <sunwei.r@gmail.com>\n"
"Language-Team: Chinese (http://www.transifex.com/projects/p/umap/language/"
"zh/)\n"
"Language: zh\n"
"PO-Revision-Date: 2017-09-20 05:52+0000\n"
"Last-Translator: yohanboniface <yohanboniface@free.fr>\n"
"Language-Team: Chinese (http://www.transifex.com/yohanboniface/umap/language/zh/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: templates/404.html:7
@ -116,9 +115,9 @@ msgstr "试用示例"
#, python-format
msgid ""
"This is a demo instance, used for tests and pre-rolling releases. If you "
"need a stable instance, please use <a href=\"%(stable_url)s\">"
"%(stable_url)s</a>. You can also host your own instance, it's <a href="
"\"%(repo_url)s\">open source</a>!"
"need a stable instance, please use <a "
"href=\"%(stable_url)s\">%(stable_url)s</a>. You can also host your own "
"instance, it's <a href=\"%(repo_url)s\">open source</a>!"
msgstr ""
#: templates/umap/home.html:17
@ -206,6 +205,3 @@ msgstr "搜索"
#: views.py:190
msgid "View the map"
msgstr "浏览地图"
#~ msgid "Map settings"
#~ msgstr "地图设置"

View file

@ -4,7 +4,7 @@
#
# Translators:
# Supaplex <bejokeup@gmail.com>, 2014
# Hsin-lin Cheng <lancetw@gmail.com>, 2014
# Hsin-lin Cheng (lancetw) <lancetw@gmail.com>, 2014
# Sean Young <assanges@icloud.com>, 2016
# Yuan CHAO <yuanchao@gmail.com>, 2014
msgid ""
@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: uMap\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-09 21:37+0200\n"
"PO-Revision-Date: 2016-12-04 11:18+0000\n"
"PO-Revision-Date: 2017-09-23 20:04+0000\n"
"Last-Translator: Sean Young <assanges@icloud.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/yohanboniface/umap/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
@ -208,3 +208,183 @@ msgstr "搜尋"
#: views.py:190
msgid "View the map"
msgstr "檢視地圖"
#: forms.py:43
#, python-format
msgid "Secret edit link is %s"
msgstr "不公開的私密編輯連結 %s"
#: forms.py:47 models.py:113
msgid "Everyone can edit"
msgstr "所有人皆可編輯"
#: forms.py:48
msgid "Only editable with secret edit link"
msgstr "僅能由私密連結編輯"
#: models.py:20
msgid "name"
msgstr "名稱"
#: models.py:42
msgid "No licence set"
msgstr "未指定授權條款"
#: models.py:51
msgid "details"
msgstr "詳情"
#: models.py:52
msgid "Link to a page where the licence is detailed."
msgstr "連結至授權條款說明網址"
#: models.py:66
msgid "URL template using OSM tile format"
msgstr "URL 樣板,使用 OSM 地圖磚格式"
#: models.py:74
msgid "Order of the tilelayers in the edit box"
msgstr "編輯方塊中地圖磚的圖層順序"
#: models.py:114
msgid "Only editors can edit"
msgstr "僅編輯群可編輯"
#: models.py:115
msgid "Only owner can edit"
msgstr "僅擁有者可編輯"
#: models.py:118
msgid "everyone (public)"
msgstr "所有人(公開)"
#: models.py:119
msgid "anyone with link"
msgstr "任何有連結的人"
#: models.py:120
msgid "editors only"
msgstr "只有編輯者允許"
#: models.py:123 models.py:257
msgid "description"
msgstr "描述"
#: models.py:124
msgid "center"
msgstr "中心"
#: models.py:125
msgid "zoom"
msgstr "縮放"
#: models.py:126
msgid "locate"
msgstr "定位"
#: models.py:126
msgid "Locate user on load?"
msgstr "載入時使用定位功能?"
#: models.py:129
msgid "Choose the map licence."
msgstr "選擇地圖授權"
#: models.py:130
msgid "licence"
msgstr "授權"
#: models.py:135
msgid "background"
msgstr "地圖背景"
#: models.py:136
msgid "owner"
msgstr "擁有者"
#: models.py:137
msgid "editors"
msgstr "編輯者"
#: models.py:138
msgid "edit status"
msgstr "編輯狀態"
#: models.py:139
msgid "share status"
msgstr "分享狀態"
#: models.py:140
msgid "settings"
msgstr "設定"
#: models.py:178
#, python-format
msgid "Your anonymous map has been attached to your account %s"
msgstr "你的匿名地圖已經加入你的帳號 %s "
#: models.py:211
msgid "Clone of"
msgstr "複製"
#: models.py:262
msgid "display on load"
msgstr "載入時顯示"
#: models.py:263
msgid "Display this layer on load."
msgstr "載入此圖層時顯示"
#: templates/leaflet_storage/login_popup_end.html:2
msgid "You are logged in. Continuing..."
msgstr "您已登入,繼續中..."
#: templates/leaflet_storage/map_update_permissions.html:2
msgid "Map permissions"
msgstr "地圖權限"
#: templates/registration/login.html:2
msgid "Please log in to proceed"
msgstr "請先登入"
#: templates/registration/login.html:4
msgid "Your username and password didn't match. Please try again."
msgstr "使用者代號或密碼不正確,請重新輸入。"
#: views.py:232
#, python-format
msgid ""
"Your map has been created! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "您的地圖已建立完成!如果您想在不同的機器編輯這個地圖,請使用這個連結:%(anonymous_url)s"
#: views.py:237
msgid "Congratulations, your map has been created!"
msgstr "恭喜您的地圖已經新增完成"
#: views.py:264
msgid "Map has been updated!"
msgstr "地圖已經更新"
#: views.py:291
msgid "Map editors updated with success!"
msgstr "地圖編輯者更新完成"
#: views.py:306
msgid "Only its owner can delete the map."
msgstr "只有擁有者可以刪除此地圖"
#: views.py:335
#, python-format
msgid ""
"Your map has been cloned! If you want to edit this map from another "
"computer, please use this link: %(anonymous_url)s"
msgstr "您的地圖已複製完成!如果您想在不同的機器編輯這個地圖,請使用這個連結:%(anonymous_url)s"
#: views.py:340
msgid "Congratulations, your map has been cloned!"
msgstr "恭喜,您的地圖已被複製!"
#: views.py:526
msgid "Layer successfully deleted."
msgstr "圖層已刪除"

View file

@ -0,0 +1,28 @@
import sys
from django.core.management.base import BaseCommand
from django.conf import settings
from umap.models import Map
class Command(BaseCommand):
help = ('Retrieve anonymous edit url of a map. '
'Eg.: python manage.py anonymous_edit_url 1234')
def add_arguments(self, parser):
parser.add_argument('pk', help='PK of the map to retrieve.')
def abort(self, msg):
self.stderr.write(msg)
sys.exit(1)
def handle(self, *args, **options):
pk = options['pk']
try:
map_ = Map.objects.get(pk=pk)
except Map.DoesNotExist:
self.abort('Map with pk {} not found'.format(pk))
if map_.owner:
self.abort('Map is not anonymous (owner: {})'.format(map_.owner))
print(settings.SITE_URL + map_.get_anonymous_edit_url())

View file

@ -0,0 +1,40 @@
import io
import os
from pathlib import Path
from django.core.management.base import BaseCommand
from django.conf import settings
from django.contrib.staticfiles import finders
from django.template.loader import render_to_string
from django.utils.translation import to_locale
ROOT = Path(settings.PROJECT_DIR) / 'static/umap/locale/'
class Command(BaseCommand):
def handle(self, *args, **options):
self.verbosity = options['verbosity']
for code, name in settings.LANGUAGES:
code = to_locale(code)
if self.verbosity > 0:
print("Processing", name)
path = ROOT / '{code}.json'.format(code=code)
if not path.exists():
print(path, 'doest not exist', 'Skipping')
else:
with path.open(encoding="utf-8") as f:
if self.verbosity > 1:
print("Found file", path)
self.render(code, f.read())
def render(self, code, json):
path = ROOT / '{code}.js'.format(code=code)
with path.open("w", encoding="utf-8") as f:
content = render_to_string('umap/locale.js', {
"locale": json,
"locale_code": code
})
if self.verbosity > 1:
print("Exporting to", path)
f.write(content)

View file

@ -3,7 +3,7 @@ import os
from django.core.files import File
from django.core.management.base import BaseCommand
from leaflet_storage.models import Pictogram
from umap.models import Pictogram
class Command(BaseCommand):

8
umap/managers.py Normal file
View file

@ -0,0 +1,8 @@
from django.db.models import Manager
class PublicManager(Manager):
def get_queryset(self):
return super(PublicManager, self).get_queryset().filter(
share_status=self.model.PUBLIC)

View file

@ -1,29 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2016-11-26 16:02
from __future__ import unicode_literals
from django.db import migrations
def add_tilelayer(apps, *args):
TileLayer = apps.get_model('leaflet_storage', 'TileLayer')
if TileLayer.objects.count():
return
TileLayer(
name='Positron',
url_template=('https://cartodb-basemaps-{s}.global.ssl.fastly.net/'
'light_all/{z}/{x}/{y}.png'),
attribution=('&copy; [[http://www.openstreetmap.org/copyright|'
'OpenStreetMap]] contributors, &copy; '
'[[https://carto.com/attributions|CARTO]]')).save()
class Migration(migrations.Migration):
dependencies = [
('leaflet_storage', '0001_initial'),
]
operations = [
migrations.RunPython(add_tilelayer),
]

View file

@ -0,0 +1,107 @@
# Generated by Django 2.0.5 on 2018-05-19 09:27
from django.conf import settings
import django.contrib.gis.db.models.fields
from django.db import migrations, models
import django.db.models.deletion
import umap.fields
import umap.models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='DataLayer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='name')),
('description', models.TextField(blank=True, null=True, verbose_name='description')),
('geojson', models.FileField(blank=True, null=True, upload_to=umap.models.upload_to)),
('display_on_load', models.BooleanField(default=False, help_text='Display this layer on load.', verbose_name='display on load')),
('rank', models.SmallIntegerField(default=0)),
],
options={
'ordering': ('rank',),
},
),
migrations.CreateModel(
name='Licence',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='name')),
('details', models.URLField(help_text='Link to a page where the licence is detailed.', verbose_name='details')),
],
options={
'ordering': ('name',),
'abstract': False,
},
),
migrations.CreateModel(
name='Map',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='name')),
('slug', models.SlugField()),
('description', models.TextField(blank=True, null=True, verbose_name='description')),
('center', django.contrib.gis.db.models.fields.PointField(geography=True, srid=4326, verbose_name='center')),
('zoom', models.IntegerField(default=7, verbose_name='zoom')),
('locate', models.BooleanField(default=False, help_text='Locate user on load?', verbose_name='locate')),
('modified_at', models.DateTimeField(auto_now=True)),
('edit_status', models.SmallIntegerField(choices=[(1, 'Everyone can edit'), (2, 'Only editors can edit'), (3, 'Only owner can edit')], default=3, verbose_name='edit status')),
('share_status', models.SmallIntegerField(choices=[(1, 'everyone (public)'), (2, 'anyone with link'), (3, 'editors only')], default=1, verbose_name='share status')),
('settings', umap.fields.DictField(blank=True, null=True, verbose_name='settings')),
('editors', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL, verbose_name='editors')),
('licence', models.ForeignKey(default=umap.models.get_default_licence, help_text='Choose the map licence.', on_delete=django.db.models.deletion.SET_DEFAULT, to='umap.Licence', verbose_name='licence')),
('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='owned_maps', to=settings.AUTH_USER_MODEL, verbose_name='owner')),
],
options={
'ordering': ('name',),
'abstract': False,
},
),
migrations.CreateModel(
name='Pictogram',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='name')),
('attribution', models.CharField(max_length=300)),
('pictogram', models.ImageField(upload_to='pictogram')),
],
options={
'ordering': ('name',),
'abstract': False,
},
),
migrations.CreateModel(
name='TileLayer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='name')),
('url_template', models.CharField(help_text='URL template using OSM tile format', max_length=200)),
('minZoom', models.IntegerField(default=0)),
('maxZoom', models.IntegerField(default=18)),
('attribution', models.CharField(max_length=300)),
('rank', models.SmallIntegerField(blank=True, help_text='Order of the tilelayers in the edit box', null=True)),
],
options={
'ordering': ('rank', 'name'),
},
),
migrations.AddField(
model_name='map',
name='tilelayer',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='maps', to='umap.TileLayer', verbose_name='background'),
),
migrations.AddField(
model_name='datalayer',
name='map',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='umap.Map'),
),
]

View file

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2016-11-26 16:11
from __future__ import unicode_literals
from django.db import migrations
def add_licence(apps, *args):
Licence = apps.get_model('leaflet_storage', 'Licence')
if Licence.objects.count():
return
Licence(
name='ODbL',
details='http://opendatacommons.org/licenses/odbl/').save()
class Migration(migrations.Migration):
dependencies = [
('umap', '0001_add_tilelayer'),
]
operations = [
migrations.RunPython(add_licence),
]

View file

@ -0,0 +1,18 @@
# Generated by Django 2.0.5 on 2018-05-19 09:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('umap', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='tilelayer',
name='tms',
field=models.BooleanField(default=False),
),
]

356
umap/models.py Normal file
View file

@ -0,0 +1,356 @@
import os
import time
from django.contrib.gis.db import models
from django.conf import settings
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.core.signing import Signer
from django.contrib import messages
from django.template.defaultfilters import slugify
from django.core.files.base import File
from .fields import DictField
from .managers import PublicManager
class NamedModel(models.Model):
name = models.CharField(max_length=200, verbose_name=_("name"))
class Meta:
abstract = True
ordering = ('name', )
def __unicode__(self):
return self.name
def __str__(self):
return self.name
def get_default_licence():
"""
Returns a default Licence, creates it if it doesn't exist.
Needed to prevent a licence deletion from deleting all the linked
maps.
"""
return Licence.objects.get_or_create(
# can't use ugettext_lazy for database storage, see #13965
name=getattr(settings, "UMAP_DEFAULT_LICENCE_NAME",
'No licence set')
)[0]
class Licence(NamedModel):
"""
The licence one map is published on.
"""
details = models.URLField(
verbose_name=_('details'),
help_text=_('Link to a page where the licence is detailed.')
)
@property
def json(self):
return {
'name': self.name,
'url': self.details
}
class TileLayer(NamedModel):
url_template = models.CharField(
max_length=200,
help_text=_("URL template using OSM tile format")
)
minZoom = models.IntegerField(default=0)
maxZoom = models.IntegerField(default=18)
attribution = models.CharField(max_length=300)
rank = models.SmallIntegerField(
blank=True,
null=True,
help_text=_('Order of the tilelayers in the edit box')
)
# See https://wiki.openstreetmap.org/wiki/TMS#The_Y_coordinate
tms = models.BooleanField(default=False)
@property
def json(self):
return dict((field.name, getattr(self, field.name))
for field in self._meta.fields)
@classmethod
def get_default(cls):
"""
Returns the default tile layer (used for a map when no layer is set).
"""
return cls.objects.order_by('rank')[0] # FIXME, make it administrable
@classmethod
def get_list(cls, selected=None):
l = []
for t in cls.objects.all():
fields = t.json
if selected and selected.pk == t.pk:
fields['selected'] = True
l.append(fields)
return l
class Meta:
ordering = ('rank', 'name', )
class Map(NamedModel):
"""
A single thematical map.
"""
ANONYMOUS = 1
EDITORS = 2
OWNER = 3
PUBLIC = 1
OPEN = 2
PRIVATE = 3
EDIT_STATUS = (
(ANONYMOUS, _('Everyone can edit')),
(EDITORS, _('Only editors can edit')),
(OWNER, _('Only owner can edit')),
)
SHARE_STATUS = (
(PUBLIC, _('everyone (public)')),
(OPEN, _('anyone with link')),
(PRIVATE, _('editors only')),
)
slug = models.SlugField(db_index=True)
description = models.TextField(blank=True, null=True, verbose_name=_("description"))
center = models.PointField(geography=True, verbose_name=_("center"))
zoom = models.IntegerField(default=7, verbose_name=_("zoom"))
locate = models.BooleanField(default=False, verbose_name=_("locate"), help_text=_("Locate user on load?"))
licence = models.ForeignKey(
Licence,
help_text=_("Choose the map licence."),
verbose_name=_('licence'),
on_delete=models.SET_DEFAULT,
default=get_default_licence
)
modified_at = models.DateTimeField(auto_now=True)
tilelayer = models.ForeignKey(TileLayer, blank=True, null=True, related_name="maps", verbose_name=_("background"), on_delete=models.PROTECT)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="owned_maps", verbose_name=_("owner"), on_delete=models.PROTECT)
editors = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, verbose_name=_("editors"))
edit_status = models.SmallIntegerField(choices=EDIT_STATUS, default=OWNER, verbose_name=_("edit status"))
share_status = models.SmallIntegerField(choices=SHARE_STATUS, default=PUBLIC, verbose_name=_("share status"))
settings = DictField(blank=True, null=True, verbose_name=_("settings"))
objects = models.Manager()
public = PublicManager()
def get_absolute_url(self):
return reverse("map", kwargs={'slug': self.slug or "map", 'pk': self.pk})
def get_anonymous_edit_url(self):
signer = Signer()
signature = signer.sign(self.pk)
return reverse('map_anonymous_edit_url', kwargs={'signature': signature})
def is_anonymous_owner(self, request):
if self.owner:
# edit cookies are only valid while map hasn't owner
return False
key, value = self.signed_cookie_elements
try:
has_anonymous_cookie = int(request.get_signed_cookie(key, False)) == value
except ValueError:
has_anonymous_cookie = False
return has_anonymous_cookie
def can_edit(self, user=None, request=None):
"""
Define if a user can edit or not the instance, according to his account
or the request.
"""
can = False
if request and not self.owner:
if (getattr(settings, "UMAP_ALLOW_ANONYMOUS", False)
and self.is_anonymous_owner(request)):
can = True
if user and user.is_authenticated:
# TODO: only when using the anonymous-edit URL with an
# authenticated user
# if user is authenticated, attach as owner
self.owner = user
self.save()
msg = _("Your anonymous map has been attached to your account %s" % user)
messages.info(request, msg)
if self.edit_status == self.ANONYMOUS:
can = True
elif not user.is_authenticated:
pass
elif user == self.owner:
can = True
elif self.edit_status == self.EDITORS and user in self.editors.all():
can = True
return can
def can_view(self, request):
if self.owner is None:
can = True
elif self.share_status in [self.PUBLIC, self.OPEN]:
can = True
elif request.user == self.owner:
can = True
else:
can = not (self.share_status == self.PRIVATE and request.user not in self.editors.all())
return can
@property
def signed_cookie_elements(self):
return ('anonymous_owner|%s' % self.pk, self.pk)
def get_tilelayer(self):
return self.tilelayer or TileLayer.get_default()
def clone(self, **kwargs):
new = self.__class__.objects.get(pk=self.pk)
new.pk = None
new.name = u"%s %s" % (_("Clone of"), self.name)
if "owner" in kwargs:
# can be None in case of anonymous cloning
new.owner = kwargs["owner"]
new.save()
for editor in self.editors.all():
new.editors.add(editor)
for datalayer in self.datalayer_set.all():
datalayer.clone(map_inst=new)
return new
class Pictogram(NamedModel):
"""
An image added to an icon of the map.
"""
attribution = models.CharField(max_length=300)
pictogram = models.ImageField(upload_to="pictogram")
@property
def json(self):
return {
"id": self.pk,
"attribution": self.attribution,
"name": self.name,
"src": self.pictogram.url
}
# Must be out of Datalayer for Django migration to run, because of python 2
# serialize limitations.
def upload_to(instance, filename):
if instance.pk:
return instance.upload_to()
name = "%s.geojson" % slugify(instance.name)[:50] or "untitled"
return os.path.join(instance.storage_root(), name)
class DataLayer(NamedModel):
"""
Layer to store Features in.
"""
map = models.ForeignKey(Map, on_delete=models.CASCADE)
description = models.TextField(
blank=True,
null=True,
verbose_name=_("description")
)
geojson = models.FileField(upload_to=upload_to, blank=True, null=True)
display_on_load = models.BooleanField(
default=False,
verbose_name=_("display on load"),
help_text=_("Display this layer on load.")
)
rank = models.SmallIntegerField(default=0)
class Meta:
ordering = ('rank',)
def save(self, force_insert=False, force_update=False, **kwargs):
is_new = not bool(self.pk)
super(DataLayer, self).save(force_insert, force_update, **kwargs)
if is_new:
force_insert, force_update = False, True
filename = self.upload_to()
old_name = self.geojson.name
new_name = self.geojson.storage.save(filename, self.geojson)
self.geojson.storage.delete(old_name)
self.geojson.name = new_name
super(DataLayer, self).save(force_insert, force_update, **kwargs)
self.purge_old_versions()
def upload_to(self):
root = self.storage_root()
name = '%s_%s.geojson' % (self.pk, int(time.time() * 1000))
return os.path.join(root, name)
def storage_root(self):
path = ["datalayer", str(self.map.pk)[-1]]
if len(str(self.map.pk)) > 1:
path.append(str(self.map.pk)[-2])
path.append(str(self.map.pk))
return os.path.join(*path)
@property
def metadata(self):
return {
"name": self.name,
"id": self.pk,
"displayOnLoad": self.display_on_load
}
def clone(self, map_inst=None):
new = self.__class__.objects.get(pk=self.pk)
new.pk = None
if map_inst:
new.map = map_inst
new.geojson = File(new.geojson.file.file)
new.save()
return new
def is_valid_version(self, name):
return name.startswith('%s_' % self.pk) and name.endswith('.geojson')
def version_metadata(self, name):
els = name.split('.')[0].split('_')
return {
"name": name,
"at": els[1],
"size": self.geojson.storage.size(self.get_version_path(name))
}
def get_versions(self):
root = self.storage_root()
names = self.geojson.storage.listdir(root)[1]
names = [name for name in names if self.is_valid_version(name)]
names.sort(reverse=True) # Recent first.
return names
@property
def versions(self):
names = self.get_versions()
return [self.version_metadata(name) for name in names]
def get_version(self, name):
path = self.get_version_path(name)
with self.geojson.storage.open(path, 'r') as f:
return f.read()
def get_version_path(self, name):
return '{root}/{name}'.format(root=self.storage_root(), name=name)
def purge_old_versions(self):
root = self.storage_root()
names = self.get_versions()[settings.UMAP_KEEP_VERSIONS:]
for name in names:
for ext in ['', '.gz']:
path = os.path.join(root, name + ext)
try:
self.geojson.storage.delete(path)
except FileNotFoundError:
pass

View file

@ -35,4 +35,14 @@ else:
print('Loaded local config from', path)
for key in dir(d):
if key.isupper():
globals()[key] = getattr(d, key)
value = getattr(d, key)
if key.startswith('LEAFLET_STORAGE'):
# Retrocompat pre 1.0, remove me in 1.1.
globals()['UMAP' + key[15:]] = value
elif key == 'UMAP_CUSTOM_TEMPLATES':
globals()['TEMPLATES'][0]['DIRS'].insert(0, value)
elif key == 'UMAP_CUSTOM_STATICS':
globals()['STATICFILES_DIRS'].insert(0, value)
print(globals()['STATICFILES_DIRS'])
else:
globals()[key] = value

View file

@ -1,17 +1,31 @@
# -*- coding:utf-8 -*-
"""Base settings shared by all environments"""
# Import global settings to make it easier to extend settings.
from django.conf.global_settings import * # pylint: disable=W0614,W0401
from django.template.defaultfilters import slugify
from django.conf.locale import LANG_INFO
#==============================================================================
# =============================================================================
# Generic Django project settings
#==============================================================================
# =============================================================================
DEBUG = True
SITE_ID = 1
# Add languages we're missing from Django
LANG_INFO.update({
'am-et': {
'bidi': False,
'name': 'Amharic',
'code': 'am-et',
'name_local': 'አማርኛ'
},
'zh': {
'bidi': False,
'code': 'zh',
'name': 'Chinese',
'name_local': '简体中文',
},
})
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
TIME_ZONE = 'UTC'
@ -20,27 +34,32 @@ USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = 'en'
LANGUAGES = (
('am-et', 'Amharic'),
('bg', 'Bulgarian'),
('ca', 'Catalan'),
('cs-cz', 'Czech'),
('da', 'Danish'),
('de', 'Deutsch'),
('el', 'Greek'),
('en', 'English'),
('fr', u'Francais'),
('it', u'Italiano'),
('pt', u'Portuguese'),
('nl', u'Dutch'),
('es', u'Español'),
('fi', u'Finnish'),
('de', u'Deutsch'),
('da', u'Danish'),
('ja', u'Japanese'),
('lt', u'Lithuanian'),
('cs-cz', u'Czech'),
('ca', u'Catalan'),
('zh', u'Chinese'),
('zh-tw', u'Chinese'),
('ru', u'Russian'),
('bg', u'Bulgarian'),
('vi', u'Vietnamese'),
('uk-ua', u'Ukrainian'),
('am-et', u'Amharic'),
('es', 'Español'),
('fi', 'Finnish'),
('fr', 'Francais'),
('hr', 'Croatian'),
('hu', 'Hungarian'),
('it', 'Italiano'),
('ja', 'Japanese'),
('lt', 'Lithuanian'),
('nl', 'Dutch'),
('pl', 'Polish'),
('pt', 'Portuguese'),
('ru', 'Russian'),
('sk-sk', 'Slovak'),
('sl', 'Slovenian'),
('uk-ua', 'Ukrainian'),
('vi', 'Vietnamese'),
('zh', 'Chinese'),
('zh-tw', 'Chinese'),
)
# Make this unique, and don't share it with anybody.
@ -56,10 +75,10 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.gis',
'leaflet_storage',
'umap',
'compressor',
'social_django',
'agnocomplete',
)
# =============================================================================
@ -88,14 +107,8 @@ MEDIA_URL = '/uploads/'
STATIC_ROOT = os.path.join('static')
MEDIA_ROOT = os.path.join('uploads')
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'static'),
)
STATICFILES_FINDERS = [
'compressor.finders.CompressorFinder',
# 'npm.finders.NpmFinder',
] + STATICFILES_FINDERS
# =============================================================================
@ -132,7 +145,7 @@ TEMPLATES = [
# Middleware
# =============================================================================
MIDDLEWARE_CLASSES = (
MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
@ -141,30 +154,28 @@ MIDDLEWARE_CLASSES = (
'django.contrib.messages.middleware.MessageMiddleware',
)
# =============================================================================
# Auth / security
# =============================================================================
ENABLE_ACCOUNT_LOGIN = False
AUTHENTICATION_BACKENDS += (
)
# =============================================================================
# Miscellaneous project settings
# =============================================================================
LEAFLET_STORAGE_ALLOW_ANONYMOUS = False
LEAFLET_STORAGE_EXTRA_URLS = {
UMAP_ALLOW_ANONYMOUS = False
UMAP_EXTRA_URLS = {
'routing': 'http://www.openstreetmap.org/directions?engine=osrm_car&route={lat},{lng}&locale={locale}#map={zoom}/{lat}/{lng}', # noqa
'ajax_proxy': '/ajax-proxy/?url={url}'
}
LEAFLET_STORAGE_KEEP_VERSIONS = 10
UMAP_KEEP_VERSIONS = 10
SITE_URL = "http://umap.org"
SITE_NAME = 'uMap'
UMAP_DEMO_SITE = False
UMAP_EXCLUDE_DEFAULT_MAPS = False
UMAP_MAPS_PER_PAGE = 5
UMAP_MAPS_PER_PAGE_OWNER = 10
MAP_SHORT_URL_NAME = "umap_short_url"
UMAP_USE_UNACCENT = False
UMAP_FEEDBACK_LINK = "https://wiki.openstreetmap.org/wiki/UMap#Feedback_and_help" # noqa
USER_MAPS_URL = 'user_maps'

View file

@ -69,7 +69,7 @@ SOCIAL_AUTH_BACKEND_ERROR_URL = "/"
UMAP_DEMO_SITE = True
# Whether to allow non authenticated people to create maps.
LEAFLET_STORAGE_ALLOW_ANONYMOUS = True
UMAP_ALLOW_ANONYMOUS = True
# This setting will exclude empty maps (in fact, it will exclude all maps where
# the default center has not been updated)
@ -110,4 +110,4 @@ LEAFLET_LATITUDE = 51
LEAFLET_ZOOM = 6
# Number of old version to keep per datalayer.
LEAFLET_STORAGE_KEEP_VERSIONS = 10
UMAP_KEEP_VERSIONS = 10

813
umap/static/umap/base.css Normal file
View file

@ -0,0 +1,813 @@
/*
* Generic
*/
body, div, ul, ol, li, a, section, nav,
h1, h2, h3, h4, h5, h6, label,
hr, input, textarea {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: "fira_sans", -apple-system, BlinkMacSystemFont,
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
"Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
}
body, div, ul, ol, li, a, section, nav,
h1, h2, h3, h4, h5, h6, label, hr {
padding: 0;
}
a {
text-decoration: none;
color: SeaGreen;
}
hr {
clear: both;
width: 100%;
height: 0;
max-width: 980px;
margin: 28px auto;
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
border-color: #ddd;
border-image: none;
border-style: solid;
border-width: 1px 0 0;
}
h1, h2 {
margin-bottom: 28px;
}
h3, h4, h5 {
margin-bottom: 14px;
}
p {
line-height: 21px;
margin-top: 14px;
margin-bottom: 14px;
}
/*
* List
*/
ul {
list-style-image:none;
list-style-position:inside;
list-style-type:none;
}
/* ************************************************* */
/* *********************** GRID ******************** */
/* ************************************************* */
.wrapper {
width: 100%;
clear: both;
}
.wrapper:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.row {
width: 100%;
max-width: 1200px;
clear: both;
margin-left: auto;
margin-right: auto;
margin-top: 0;
margin-bottom: 2rem;
}
.col {
float: left;
}
.right {
float: right;
}
.col + .col {
padding-left: 20px;
}
.half {
width: 50%;
}
.third {
width: 33.33%;
}
.two-third {
width: 66.66%
}
.quarter {
width: 25%;
}
.wide {
width: 100%;
}
.col + .wide {
padding-left: inherit;
}
.mshow, .tshow {
display: none;
}
.center {
margin-left: auto;
margin-right: auto;
float: none;
}
/* *********** */
/* forms */
/* *********** */
input[type="text"], input[type="password"], input[type="date"],
input[type="datetime"], input[type="email"], input[type="number"],
input[type="search"], input[type="tel"], input[type="time"],
input[type="url"], textarea {
background-color: white;
border: 1px solid #CCCCCC;
border-radius: 2px 2px 2px 2px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
color: rgba(0, 0, 0, 0.75);
display: block;
font-family: inherit;
font-size: 14px;
height: 32px;
margin: 0 0 14px;
padding: 7px;
width: 100%;
}
input[type="range"] {
margin-top: 10px;
margin-bottom: 5px;
width: 100%;
}
input[type="checkbox"] {
margin: 0 5px;
vertical-align: middle;
}
textarea {
height: inherit;
padding: 7px;
}
select {
width: 100%;
height: 28px;
line-height: 28px;
color: #efefef;
border: 1px solid #222;
background-color: #393F3F;
margin-top: 5px;
}
select[multiple="multiple"] {
height: auto;
}
.button, input[type="submit"] {
display: block;
margin-bottom: 14px;
text-align: center;
border-radius: 2px;
font-weight: normal;
cursor: pointer;
padding: 7px;
width: 100%;
min-height: 32px;
line-height: 32px;
border: none;
text-decoration: none;
}
.dark .button {
background-color: #2a2e30;
color: #eeeeec;
border: 1px solid #1b1f20;
}
.dark .button:hover, .dark input[type="submit"]:hover {
background-color: #2e3436;
}
.help-text, .helptext {
display: block;
padding: 7px 7px;
margin-bottom: 14px;
background: #393F3F;
color: #ddd;
font-size: 10px;
border-radius: 0 2px;
}
input + .help-text {
margin-top: -14px;
}
.formbox {
min-height: 36px;
line-height: 28px;
margin-bottom: 14px;
}
.formbox.with-switch {
padding-top: 2px;
}
.formbox select {
width: calc(100% - 14px);
}
label {
display: block;
font-size: 12px;
line-height: 21px;
width: 100%;
}
input[type="checkbox"] + label {
display: inline;
padding: 0 14px;
}
select + .error,
input + .error {
display: block;
padding: 7px 7px;
margin-top: -14px;
margin-bottom: 14px;
background: #ddd;
color: #fff;
background-color: #cc0000;
font-size: 11px;
border-radius: 0 2px;
}
input[type="file"] + .error {
margin-top: 0;
}
.fieldset {
border: 1px solid #222;
margin-bottom: 5px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.fieldset .fields {
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s linear;
height: 0;
overflow: hidden;
}
.fieldset.toggle.on .fields {
visibility: visible;
opacity: 1;
height: initial;
padding: 10px;
}
.fieldset.toggle .legend {
text-align: center;
display: block;
cursor: pointer;
background-color: #232729;
height: 30px;
line-height: 30px;
color: #fff;
margin: 0;
font-family: fira_sans;
font-weight: normal;
font-size: 1.2em;
padding: 0 5px;
}
/* Switch */
input.switch:empty {
display: none;
}
input.switch:empty ~ label {
white-space: nowrap;
position: relative;
float: left;
line-height: 2em;
height: 2em;
text-indent: 6em;
margin: 0.2em 0;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.1);
width: 80px;
}
input.switch:empty ~ label:before,
input.switch:empty ~ label:after {
position: absolute;
display: block;
top: 0;
bottom: 0;
left: 0;
content: ' ';
width: 6em;
-webkit-transition: all 100ms ease-in;
transition: all 100ms ease-in;
color: #c9c9c7;
font-weight: bold;
background-color: #ededed;
}
.dark input.switch:empty ~ label:before,
.dark input.switch:empty ~ label:after {
background-color: #272c2e;
}
input.switch:empty ~ label:after {
width: 3em;
margin-left: 0.1em;
background-color: #ededed;
content: "OFF";
text-indent: 3.5em;
border: 1px solid #374E75;
font-weight: bold;
}
.dark input.switch:empty ~ label:after {
border: 1px solid #202425;
background-color: #2c3233;
}
input.switch:checked:empty ~ label:after {
content: ' ';
}
.dark input.switch:checked ~ label:before,
input.switch:checked ~ label:before {
background-color: #215d9c;
content: "ON";
text-indent: 0.7em;
text-align: left;
font-weight: bold;
}
input.switch:checked ~ label:after {
margin-left: 3em;
}
.button-bar {
margin-top: 5px;
text-align: center;
display: grid;
grid-gap: 7px;
width: 100%
}
.button-bar.half {
grid-template-columns: 1fr 1fr;
}
.button-bar.third {
grid-template-columns: 1fr 1fr 1fr;
}
.button-bar .button {
display: inline-block;
}
.umap-multiplechoice input[type='radio'] {
display: none;
}
.umap-multiplechoice label {
border: 1px solid #374E75;
cursor: pointer;
background-color: #c9c9c7;
height: 30px;
line-height: 30px;
text-align: center;
width: calc(100% / 3);
display: inline-block;
}
.umap-multiplechoice.by4 label {
width: calc(100% / 4);
}
.dark .umap-multiplechoice label {
border: 1px solid black;
background-color: #2c3233;
}
.umap-multiplechoice input[type='radio']:checked + label {
background-color: #215d9c;
box-shadow: inset 0 0 6px 0px #2c3233;
color: #ededed;
}
.inheritable .header,
.inheritable {
clear: both;
overflow: hidden;
}
.inheritable .header {
margin-bottom: 5px;
}
.inheritable .header label {
padding-top: 6px;
}
.inheritable + .inheritable {
border-top: 1px solid #222;
padding-top: 5px;
margin-top: 5px;
}
.inheritable .define,
.inheritable .undefine {
float: right;
width: initial;
min-height: 18px;
line-height: 18px;
margin-bottom: 0;
}
.inheritable .quick-actions {
float: right;
}
.inheritable .quick-actions .formbox {
margin-bottom: 0;
}
.inheritable .quick-actions input {
width: 100px;
margin-right: 5px;
}
.inheritable .define,
.inheritable.undefined .undefine,
.inheritable.undefined .show-on-defined {
display: none;
}
.inheritable.undefined .define {
display: block;
}
i.info {
background-repeat: no-repeat;
background-image: url('./img/16.png');
background-position: -170px -50px;
display: inline-block;
margin-left: 5px;
vertical-align: middle;
width: 16px;
height: 18px;
}
.dark i.info {
background-image: url('./img/16-white.png');
}
.with-transition {
/*transition: top .7s, right .7s, left .7s, width .7s, visibility .7s;*/
transition: all .7s;
}
.umap-delete:before, .umap-empty:before, .umap-to-polygon:before,
.umap-clone:before, .umap-edit:before, .umap-download:before,
.umap-to-polyline:before {
background-repeat: no-repeat;
text-indent: 38px;
height: 24px;
line-height: 24px;
display: inline-block;
background-image: url('./img/24.png');
vertical-align: bottom;
content: " ";
}
.dark .umap-delete:before, .dark .umap-empty:before,
.dark .umap-to-polygon:before,
.dark .umap-clone:before,
.dark .umap-edit:before, .dark .umap-download:before,
.dark .umap-to-polyline:before {
background-image: url('./img/24-white.png');
vertical-align: middle;
}
.umap-to-polygon:before {
background-position: -80px -48px;
}
.umap-to-polyline:before {
background-position: -120px -48px;
}
.umap-clone:before {
background-position: -160px -88px;
}
.umap-delete:before {
background-position: -40px -8px;
}
.umap-edit:before {
background-position: -6px -6px;
}
.umap-empty:before {
background-position: -160px -126px;
}
.umap-download:before {
background-position: -88px -168px;
}
.umap-edit-actions {
padding-top: 5px;
clear: both;
}
.umap-edit-actions li {
height: 36px;
line-height: 36px;
cursor: pointer;
margin-bottom: 5px;
border-radius: 2px;
border: 1px solid #222;
}
.umap-edit-actions li i {
background-image: url('./img/24-white.png');
background-repeat: no-repeat;
display: table-cell;
width: 36px;
height: 36px;
}
.umap-edit-actions li span {
display: table-cell;
vertical-align: middle;
}
.umap-edit-actions li:hover {
background-color: #353c3e;
}
.umap-form-iconfield {
position: relative;
overflow: hidden;
padding-bottom: 5px;
padding-top: 5px;
line-height: 30px;
}
.umap-icon-list, .umap-pictogram-list {
clear: both;
}
.umap-icon-choice {
display: block;
float: left;
width: 30px;
height: 30px;
line-height: 30px;
position: relative;
cursor: pointer;
background-image: url('./img/icon-bg.png');
text-align: center;
box-shadow: 0 0 4px 0 black inset;
margin-bottom: 5px;
margin-right: 5px;
}
.umap-icon-choice img {
vertical-align: middle;
max-width: 24px;
}
.umap-icon-choice:hover,
.umap-icon-choice.selected,
.umap-color-picker span:hover {
box-shadow: 0 0 4px 0 black;
}
.umap-icon-choice .leaflet-marker-icon {
bottom: 0;
left: 30px;
position: absolute;
}
.umap-color-picker {
clear: both;
margin-bottom: 20px;
overflow: hidden;
display: none;
}
.umap-color-picker span {
width: 20px;
height: 20px;
display: block;
padding: 0;
margin: 0;
cursor: pointer;
float: left;
}
/* *********** */
/* Panel */
/* *********** */
.leaflet-ui-container {
overflow-x: hidden;
}
#umap-ui-container {
width: 400px;
position: fixed;
top: 0;
bottom: 0;
right: -400px;
padding: 0 20px 40px 20px;
border-left: 1px solid #ddd;
overflow-x: auto;
z-index: 1010;
background-color: #fff;
opacity: 0.98;
cursor: initial;
}
#umap-ui-container.dark {
border-left: 1px solid #222;
background-color: #323737;
color: #efefef;
}
#umap-ui-container.fullwidth {
width: 100%;
z-index: 10000;
padding-left: 0;
padding-right: 0;
transition: all .7s;
}
.umap-edit-enabled #umap-ui-container {
top: 46px;
}
.umap-caption-bar-enabled #umap-ui-container {
bottom: 46px;
}
.umap-ui #umap-ui-container {
right: 0;
}
.leaflet-top,
.leaflet-right {
transition: all .7s;
}
.umap-ui .leaflet-right {
right: 400px;
}
#umap-ui-container,
#umap-alert-container,
#umap-tooltip-container {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing: border-box;
}
#umap-ui-container .umap-popup-content img {
/* See https://github.com/Leaflet/Leaflet/commit/61d746818b99d362108545c151a27f09d60960ee#commitcomment-6061847 */
max-width: 99% !important;
}
#umap-ui-container .umap-popup-content {
max-height: inherit;
}
#umap-ui-container .body {
clear: both;
height: calc(100% - 46px); /* Minus size of toolbox */
}
#umap-ui-container .toolbox {
padding: 5px 0;
overflow: hidden;
}
#umap-ui-container .toolbox li {
color: #2e3436;
line-height: 32px;
cursor: pointer;
float: right;
display: inline;
padding: 0 7px;
border: 1px solid #b6b6b3;
border-radius: 2px;
}
#umap-ui-container.dark .toolbox li {
color: #d3dfeb;
border: 1px solid #202425;
}
#umap-ui-container .toolbox li:hover {
color: #2e3436;
background-color: #d4d4d2;
}
#umap-ui-container.dark .toolbox li:hover {
color: #eeeeec;
background-color: #353c3e;
}
#umap-ui-container .toolbox li + li {
margin-right: 5px;
margin-left: 5px;
}
.dark input, .dark textarea {
background-color: #232729;
border-color: #1b1f20;
/*box-shadow: inset 0 0 0 1px #215d9c;*/
color: #efefef;
}
/* *********** */
/* Alerts */
/* *********** */
#umap-alert-container {
min-height: 46px;
line-height: 46px;
padding-left: 10px;
width: calc(100% - 500px);
position: absolute;
top: -46px;
left: 250px; /* Keep save/cancel button accessible. */
right: 250px;
box-shadow: 0 1px 7px #999999;
visibility: hidden;
background: none repeat scroll 0 0 rgba(20, 22, 23, 0.8);
font-weight: bold;
color: #fff;
font-size: 0.8em;
z-index: 1002;
border-radius: 2px;
}
#umap-alert-container.error {
background-color: #c60f13;
}
.umap-alert #umap-alert-container {
visibility: visible;
top: 23px;
}
.umap-alert .umap-action {
margin-left: 10px;
background-color: #fff;
color: #999;
padding: 5px;
border-radius: 4px;
}
.umap-alert .umap-action:hover {
color: #000;
}
.umap-alert .error .umap-action {
background-color: #666;
color: #eee;
}
.umap-alert .error .umap-action:hover {
color: #fff;
}
/* *********** */
/* Tooltip */
/* *********** */
#umap-tooltip-container {
line-height: 20px;
padding: 5px 10px;
width: auto;
position: absolute;
box-shadow: 0 1px 7px #999999;
display: none;
background-color: rgba(40, 40, 40, 0.8);
color: #eeeeec;
font-size: 0.8em;
border-radius: 2px;
z-index: 1004;
font-weight: normal;
max-width: 300px;
}
.umap-tooltip #umap-tooltip-container {
display: block;
}
#umap-tooltip-container.tooltip-top:after {
top: 100%;
left: calc(50% - 11px);
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-top-color: rgba(30, 30, 30, 0.8);
border-width: 11px;
margin-left: calc(-50% + 21px);
}
#umap-tooltip-container.tooltip.tooltip-left:after {
left: 100%;
top: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(136, 183, 213, 0);
border-left-color: #333;
border-width: 11px;
margin-top: -10px;
}
/* *********** */
/* Close link */
/* *********** */
.umap-close-icon {
background-repeat: no-repeat;
background-image: url('./img/16.png');
background-position: -52px -13px;
display: inline;
padding: 0 10px;
vertical-align: middle;
}
.dark .umap-close-icon {
background-image: url('./img/16-white.png');
}
.dark .umap-close-link {
border: 1px solid #202425;
color: #eeeeec;
padding: 0 7px;
line-height: 32px;
background-color: #323737;
}
.dark .umap-close-link:hover {
background-color: #2e3436;
}
.umap-alert .umap-close-link {
color: #fff;
float: right;
padding-right: 10px;
}
.umap-alert .umap-close-icon {
background-position: -128px -90px;
}
/* *********** */
/* Mobile */
/* *********** */
@media all and (orientation:portrait) {
.umap-ui #umap-ui-container {
height: 50%;
max-height: 400px;
width: 100%;
top: inherit!important;
bottom: 0;
right: 0;
left: 0;
}
.umap-ui .leaflet-right {
right: 0;
}
#umap-alert-container {
width: 100%;
left: 0;
right: 0;
}
}

View file

@ -1,164 +1,6 @@
/* ************************************************* */
/* *********************** FONT ******************** */
/* ************************************************* */
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-Light.woff2') format('woff2'),
url('./font/FiraSans-Light.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-SemiBold.woff2') format('woff2'),
url('./font/FiraSans-SemiBold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-LightItalic.woff2') format('woff2'),
url('./font/FiraSans-LightItalic.woff') format('woff');
font-weight: normal;
font-style: italic;
}
/*
* Generic
*/
body, div, ul, ol, li, a, section, nav,
h1, h2, h3, h4, h5, h6, label,
hr, input, textarea {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing: border-box;
margin: 0;
font-family: "fira_sans", -apple-system, BlinkMacSystemFont,
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
"Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
}
body, div, ul, ol, li, a, section, nav,
h1, h2, h3, h4, h5, h6, label, hr {
padding: 0;
}
a {
text-decoration: none;
color: SeaGreen;
}
hr {
clear: both;
width: 100%;
height: 0;
max-width: 980px;
margin: 28px auto;
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
border-color: #ddd;
border-image: none;
border-style: solid;
border-width: 1px 0 0;
}
h1, h2 {
margin-bottom: 28px;
}
h3, h4, h5 {
margin-bottom: 14px;
}
p {
line-height: 21px;
margin-top: 14px;
margin-bottom: 14px;
}
/*
* List
*/
ul {
list-style-image:none;
list-style-position:inside;
list-style-type:none;
}
/* ************************************************* */
/* *********************** GRID ******************** */
/* ************************************************* */
.wrapper {
width: 100%;
clear: both;
}
.wrapper:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.row {
width: 100%;
max-width: 1200px;
clear: both;
margin-left: auto;
margin-right: auto;
margin-top: 0;
margin-bottom: 2rem;
}
.col {
float: left;
}
.right {
float: right;
}
.col + .col {
padding-left: 20px;
}
.half {
width: 50%;
}
.third {
width: 33.33%;
}
.two-third {
width: 66.66%
}
.quarter {
width: 25%;
}
.wide {
width: 100%;
}
.col + .wide {
padding-left: inherit;
}
.mshow, .tshow {
display: none;
}
.center {
margin-left: auto;
margin-right: auto;
float: none;
}
/*
* Content
*/
.tintbox, .tintbox a {
font-family: serif;
}
.tintbox {
background-color: #f2f2f2;
padding: 28px;
}
.tintbox p {
color: #6f6f6f;
}
body.content {
width: 100%;
height: 100%;
@ -166,23 +8,6 @@ body.content {
}
/*
Foundation use a position:relative; on body, which break the 100% rule
on #map
*/
body.map_detail {
width: 100%;
height: 100%;
position: inherit;
}
/* Global alert */
.alert-box.global {
z-index: 1001;
margin-right: auto;
margin-left: auto;
}
/* Search form */
input::-webkit-input-placeholder, ::-webkit-input-placeholder {
color: #a5a5a5;
@ -192,19 +17,19 @@ input:-moz-placeholder, :-moz-placeholder {
color: #a5a5a5;
}
#storage-ui-container textarea {
#umap-ui-container textarea {
height: 100px;
margin-bottom: 14px;
}
#storage-ui-container select {
#umap-ui-container select {
margin-bottom: 10px;
}
#storage-ui-container.warning .button {
#umap-ui-container.warning .button {
background-color: #c60f13;
border: 1px solid #7f0a0c;
}
#storage-ui-container.warning .button:hover {
#umap-ui-container.warning .button:hover {
background-color: #970b0e;
}
@ -241,34 +66,6 @@ input:-moz-placeholder, :-moz-placeholder {
background-image: url("./openstreetmap.png");
}
/*
* Navigation
*/
header {
margin: 14px 0;
}
footer {
height: 140px;
margin-top: 40px;
background-color: #2E3641;
text-align: center;
line-height: 140px;
color: #8F96A3;
}
footer a.branding {
background-image: url("./img/logo_filigree.png");
background-position: left center;
background-repeat: no-repeat;
background-size: 60px auto;
font-size: 30px;
font-weight: bold;
height: 140px;
padding-left: 70px;
color: #8F96A3;
display: inline-block;
}
/* **************************** */
/* home */
@ -346,21 +143,6 @@ h2.section {
display: inline-block;
height: 128px;
}
.button-bar {
text-align: center;
}
.button-bar .button {
display: inline-block;
}
.button-bar .button + .button {
margin-left: 14px;
}
.button-bar .button.half {
width: calc(50% - 7px);
}
.button-bar .button.third {
width: calc(100% / 3 - 10px);
}
.demo-instance-warning {
background-color: #c0392b;
color: #efefef;
@ -374,6 +156,9 @@ h2.section {
color: #efefef;
text-decoration: underline;
}
body.content #umap-ui-container {
background-color: #fff;
}
/* **************************** */
@ -479,21 +264,9 @@ ul.umap-autocomplete {
/* **************************** */
/* Override Leaflet.Storage */
/* **************************** */
body.content #storage-ui-container {
/* width: 100%;
top: 0;
right: 0;
left: 0;
bottom: inherit;
height: 30%;*/
background-color: #fff;
}
#id_editors + br + span.helptext {
display: none;
}
.storage-loader {
background-color: #79c1c0 !important;
}
.leaflet-container a.button {
color: #eeeeec;
}

30
umap/static/umap/font.css Normal file
View file

@ -0,0 +1,30 @@
/* ************************************************* */
/* *********************** FONT ******************** */
/* ************************************************* */
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-Light.woff2') format('woff2'),
url('./font/FiraSans-Light.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-SemiBold.woff2') format('woff2'),
url('./font/FiraSans-SemiBold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'fira_sans';
src: url('./font/FiraSans-LightItalic.woff2') format('woff2'),
url('./font/FiraSans-LightItalic.woff') format('woff');
font-weight: normal;
font-style: italic;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,718 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="16-white.svg"
inkscape:export-filename="/home/ybon/Code/js/Leaflet.Storage/src/img/16-white.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.839192"
inkscape:cx="167.09394"
inkscape:cy="38.63729"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="3840"
inkscape:window-height="2031"
inkscape:window-x="0"
inkscape:window-y="55"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-grids="true"
inkscape:snap-to-guides="true">
<inkscape:grid
type="xygrid"
id="grid3004"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="1,0"
position="40,40"
id="guide3084" />
<sodipodi:guide
orientation="0,1"
position="120,120"
id="guide3086" />
<sodipodi:guide
orientation="1,0"
position="80,80"
id="guide3088" />
<sodipodi:guide
orientation="0,1"
position="80,80"
id="guide3090" />
<sodipodi:guide
orientation="1,0"
position="120,120"
id="guide14621" />
<sodipodi:guide
orientation="0,1"
position="40,40"
id="guide17864" />
<sodipodi:guide
orientation="0,1"
position="160,160"
id="guide3026" />
<sodipodi:guide
orientation="1,0"
position="160,160"
id="guide3028" />
<sodipodi:guide
position="200,168"
orientation="1,0"
id="guide4869"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
<sodipodi:guide
position="-60,200"
orientation="0,1"
id="guide5766" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-812.36218)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="13.786797"
y="953.80786"
id="text4457"
sodipodi:linespacing="125%"><tspan
y="953.80786"
x="13.786797"
sodipodi:role="line"
id="tspan4459" /></text>
<g
id="g3001"
transform="translate(-15.255701,-111.38651)">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 35.255701,935.74851 c -4.412356,0 -8.00014,3.58778 -8.00014,8.00014 0,4.41235 3.587784,8.00014 8.00014,8.00014 4.412356,0 8.00014,-3.58779 8.00014,-8.00014 0,-4.41236 -3.587784,-8.00014 -8.00014,-8.00014 z m 0,1.00028 c 3.871916,0 6.99986,3.12794 6.99986,6.99986 0,3.87191 -3.127944,6.99986 -6.99986,6.99986 -3.871916,0 -6.999861,-3.12795 -6.999861,-6.99986 0,-3.87192 3.127945,-6.99986 6.999861,-6.99986 z"
id="path3014"
inkscape:connector-curvature="0" />
<g
id="text3784"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
transform="translate(27.255701,-100.61365)">
<path
inkscape:connector-curvature="0"
id="path3789"
style="font-weight:bold;font-size:12px;-inkscape-font-specification:'Sans Bold';fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 9,1046.0464 -2.3698034,0 0,-0.3223 c 0,-0.3596 0.072207,-0.6775 0.2166302,-0.9539 0.1444174,-0.2807 0.4485749,-0.636 0.9124728,-1.0658 l 0.4201314,-0.3816 c 0.249449,-0.228 0.4310681,-0.4429 0.5448577,-0.6446 0.1181576,-0.2019 0.1772384,-0.4036 0.177243,-0.6053 -4.6e-6,-0.3071 -0.1050376,-0.5462 -0.3150985,-0.7171 -0.2100697,-0.1756 -0.5032861,-0.2632 -0.87965,-0.2632 -0.3544889,0 -0.7374207,0.075 -1.1487968,0.2237 -0.4113804,0.1446 -0.840264,0.3618 -1.2866522,0.6513 l 0,-2.0659 c 0.5295391,-0.184 1.0131273,-0.32 1.4507661,-0.4077 0.437634,-0.088 0.8599531,-0.1317 1.2669587,-0.1317 1.0678292,0 1.8818328,0.2194 2.442012,0.6579 0.560169,0.4341 0.840256,1.0702 0.840263,1.9078 -7e-6,0.4298 -0.08535,0.8159 -0.256017,1.158 -0.170685,0.3377 -0.461713,0.7017 -0.873085,1.092 l -0.4201313,0.375 c -0.297598,0.272 -0.4923463,0.4913 -0.5842451,0.658 -0.091909,0.1622 -0.1378603,0.342 -0.1378556,0.5394 l 0,0.296 m -2.3698034,0.9739 2.3698034,0 0,2.342 -2.3698034,0 0,-2.342"
sodipodi:nodetypes="ccsccccccsccccsccccccccccccc" />
</g>
</g>
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 99.999997,867.86202 c -3,0 -5,1.5 -8,4.5 3,3 5,4.5 8,4.5 3.000003,0 5.000003,-1.5 8.000003,-4.5 -3,-3 -5,-4.5 -8.000003,-4.5 z m 0,2.5 c 1.104563,0 1.999993,0.8954 1.999993,2 0,1.1046 -0.89543,2 -1.999993,2 -1.104569,0 -2,-0.8954 -2,-2 0,-1.1046 0.895431,-2 2,-2 z"
id="path2990-6"
inkscape:label="eye-on"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/eye-on.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<g
id="eye-off"
style="fill:#b3b3b3"
inkscape:label="eye-off"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/eye-off.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
transform="translate(131,-171.00018)">
<path
id="path2990"
transform="translate(0,1034.3622)"
d="M 9,4.5 C 6.0000002,4.4999664 4.0000001,6 1,9 c 3.0000001,2.999999 5.0000002,4.500033 8,4.5 3,-3.3e-5 5,-1.500001 8,-4.5 C 14,6 12,4.5000336 9,4.5 Z M 9,7 c 1.104569,0 2,0.8954305 2,2 0,1.104569 -0.895431,2 -2,2 C 7.8954305,11 7,10.104569 7,9 7,7.8954305 7.8954305,7 9,7 Z"
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="rect3787"
d="m 2,1047.8622 13,-10 1,1 -13,10 z"
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 134,827.36214 0,2 12,0 0,-2 -12,0 z m 0,3 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z"
id="table"
inkscape:connector-curvature="0"
inkscape:label="table"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 59,867.36202 0,4 -4,0 0,2 4,0 0,4 2,0 0,-4 4,0 0,-2 -4,0 0,-4 z"
id="rect5280"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/add-layer-grey-18.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 21.517525,906.362 c -2.466762,0 -4.48249,2.0158 -4.48249,4.4826 0,0.8297 0.233748,1.5964 0.63035,2.26462 l -3.66537,3.66532 1.587549,1.5876 3.66537,-3.66542 c 0.668139,0.3966 1.434831,0.6303 2.264591,0.6303 2.466762,0 4.48249,-2.0157 4.48249,-4.48242 0,-2.4668 -2.015728,-4.4826 -4.48249,-4.4826 z m 0,1.4943 c 1.659256,0 2.988326,1.329 2.988326,2.9883 0,1.6592 -1.32907,2.98832 -2.988326,2.98832 -1.659256,0 -2.988326,-1.32912 -2.988326,-2.98832 0,-1.6593 1.32907,-2.9883 2.988326,-2.9883 z m 0,1.4941 c -0.816354,0 -1.494163,0.6779 -1.494163,1.4942 0,0.8163 0.677809,1.4942 1.494163,1.4942 0.816354,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677809,-1.4942 -1.494163,-1.4942 z"
id="path4354"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
inkscape:connector-curvature="0" />
<path
id="path4392"
d="m 61.51751,906.36205 c -2.466762,0 -4.482491,2.0157 -4.482491,4.4825 0,0.8298 0.233749,1.5964 0.630351,2.2645 L 54,916.77459 l 1.587549,1.5875 3.665369,-3.66544 c 0.668139,0.39662 1.434831,0.63042 2.264592,0.63042 2.466762,0 4.48249,-2.01572 4.48249,-4.48252 0,-2.4668 -2.015728,-4.4825 -4.48249,-4.4825 z m 0,1.4942 c 1.659256,0 2.988327,1.329 2.988327,2.9883 0,1.6593 -1.329071,2.9883 -2.988327,2.9883 -1.659256,0 -2.988327,-1.329 -2.988327,-2.9883 0,-1.6593 1.329071,-2.9883 2.988327,-2.9883 z m 0,1.4941 c -0.816355,0 -1.494164,0.6779 -1.494164,1.4942 0,0.8163 0.677809,1.4942 1.494164,1.4942 0.816355,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677808,-1.4942 -1.494163,-1.4942 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to-off.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
d="m 60,945.36215 c -3.865993,0 -7,3.134 -7,7 0,3.86602 3.134007,7.00005 7,7.00005 3.865993,0 7,-3.13404 7,-7.00005 0,-3.866 -3.134007,-7 -7,-7 z m -0.15625,2.9687 a 1.0001,1.0001 0 0 1 0.09375,0 1.0001,1.0001 0 0 1 0.65625,1.8125 l -1.625,1.2188 5.03125,0 a 1.0001,1.0001 0 1 1 0,2 l -5,0 1.59375,1.1875 a 1.0001,1.0001 0 1 1 -1.1875,1.59372 l -3.71875,-2.78122 a 1.0043849,1.0043849 0 0 1 -0.15625,-1.9063 l 3.875,-2.9062 a 1.0001,1.0001 0 0 1 0.4375,-0.2188 z"
id="path5321"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/arrow-left-16.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
inkscape:export-ydpi="89.996864"
inkscape:export-xdpi="89.996864"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/arrow-right-16.png"
id="path5338"
d="m 20.000015,959.36218 c 3.865993,0 7,-3.134 7,-7.00002 0,-3.866 -3.134007,-7 -7,-7 -3.865993,0 -7,3.134 -7,7 0,3.86602 3.134007,7.00002 7,7.00002 z m 0.15625,-2.9687 a 1.0001,1.0001 0 0 1 -0.09375,0 1.0001,1.0001 0 0 1 -0.65625,-1.81252 l 1.625,-1.2188 -5.03125,0 a 1.0001,1.0001 0 1 1 0,-2 l 5,0 -1.59375,-1.1875 a 1.0001,1.0001 0 1 1 1.1875,-1.5937 l 3.71875,2.7812 a 1.0043849,1.0043849 0 0 1 0.15625,1.9063 l -3.875,2.90622 a 1.0001,1.0001 0 0 1 -0.4375,0.2188 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
d="m 20.000015,985.3621 c -3.865993,0 -7,3.134 -7,7 0,3.8661 3.134007,7.0001 7,7.0001 3.865993,0 7,-3.134 7,-7.0001 0,-3.866 -3.134007,-7 -7,-7 z m -0.15625,1.7187 a 1.250125,1.250125 0 0 1 0.125,0 1.250125,1.250125 0 0 1 1.28125,1.2813 l 0,2.75 2.75,0 a 1.250125,1.250125 0 1 1 0,2.5 l -2.75,0 0,2.7501 a 1.250125,1.250125 0 1 1 -2.5,0 l 0,-2.7501 -2.75,0 a 1.2515615,1.2515615 0 0 1 -0.125,-2.5 1.250125,1.250125 0 0 1 0.125,0 l 2.75,0 0,-2.75 a 1.250125,1.250125 0 0 1 1.09375,-1.2813 z"
id="path5340"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom-grey-16.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 94,827.36214 0,2 12,0 0,-2 -12,0 z m 0,3 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z"
id="table-5"
inkscape:connector-curvature="0"
inkscape:label="table"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<g
transform="translate(32,-48.000118)"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="text3784-6" />
<g
id="text4356"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
transform="translate(20,-164.00004)">
<path
inkscape:connector-curvature="0"
id="path4384"
style="font-variant:normal;font-stretch:normal;font-size:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 35.742187,999.43835 3.076172,-3.07617 -3.066406,-3.0664 1.191406,-1.19141 3.066407,3.06641 3.05664,-3.05664 1.171875,1.18164 -3.046875,3.05664 3.066406,3.0664 -1.191406,1.19138 L 40,997.54382 36.923828,1000.62 35.742187,999.43835" />
</g>
<path
inkscape:connector-curvature="0"
d="m 19.192256,877.3618 2e-6,-4.19993 -4.192255,10e-6 -3e-6,-1.62667 4.192263,0 0,-4.17331 1.608812,0.007 0.0067,4.16664 4.192255,0 -3.9e-5,1.62662 -4.19222,4e-5 -1.5e-5,4.19994 -1.615475,0"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="path4384-3" />
<path
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 103.71429,906.36213 -1.14285,1.14286 2.28571,2.28572 L 106,908.64785 Z M 102,908.07641 l -6.285714,6.28574 2.285715,2.2857 6.285719,-6.28572 z M 95.714286,914.36215 94,918.36214 l 4.000001,-1.71429 z"
id="path3684"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:30.4761982px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="81.647079"
y="988.79706"
id="text4457-6"
sodipodi:linespacing="125%"><tspan
y="988.79706"
x="81.647079"
sodipodi:role="line"
id="tspan4459-6" /></text>
<g
id="text4356-2"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="translate(100,-84.00004)">
<path
inkscape:connector-curvature="0"
id="path4384-2"
style="font-variant:normal;font-stretch:normal;font-size:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#f2f2f2;fill-opacity:1"
d="m 35.742187,999.43835 3.076172,-3.07617 -3.066406,-3.0664 1.191406,-1.19141 3.066407,3.06641 3.05664,-3.05664 1.171875,1.18164 -3.046875,3.05664 3.066406,3.0664 -1.191406,1.19138 L 40,997.54382 36.923828,1000.62 35.742187,999.43835" />
</g>
<path
style="fill:#b3b3b3;fill-opacity:1;stroke:none"
d="m 103.71429,946.36216 -1.14285,1.1428 2.28571,2.2858 L 106,948.64786 Z M 102,948.07646 95.714286,954.36218 98,956.64788 l 6.28572,-6.2857 z m -6.285714,6.28572 -1.714286,4 4,-1.7143 z"
id="path3684-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<path
id="table-5-8-8-6"
style="fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 54,986.3622 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="table-5-8-8-6-1"
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 94,986.3622 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z" />
<circle
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3764"
cx="180"
cy="868.36218"
r="1.5" />
<path
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 179,871.36218 2,0 0,6 -2,0 z"
id="rect4274"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<g
id="g4717"
transform="translate(1.210815,-42.477)">
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 141.26953,173.42383 -6.75586,2.67969 0.95313,6.3457 5.87109,3.12695 4.14844,-7.87305 -4.2168,-4.27929 z m -1.44726,2.48828 2.99023,1.60156 -0.5918,2.43164 -3.35742,1.50391 -1.73828,-3.81055 2.69727,-1.72656 z"
transform="translate(-1.210815,854.83918)"
id="path3862"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 219,905.36213 0,1 c -1.42857,0 -3.28571,0.59991 -4,2 l 0,1 10,0 0,-1 c -0.71429,-1.40009 -2.57143,-2 -4,-2 l 0,-1 z m -4,5 2,9 6,0 2,-9 z"
id="delete-30"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
<g
id="g4797"
transform="translate(1.7400753,-40.674381)">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 180.94531,986.19141 -1.46679,13.33593 1.98828,0.21875 1.46679,-13.33593 -1.98828,-0.21875 z"
id="path4349-2-2-9-3-8"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 174.01172,986.32617 -1.9668,0.36719 2.46289,13.1875 1.96485,-0.36719 -2.46094,-13.1875 z"
id="path4349-2-2-3-3"
inkscape:connector-curvature="0" />
<g
id="g4621">
<g
id="g4400-8-39-2-3-1"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g4400-8-39-2-3"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</g>
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8-3"
d="m 183.28778,905.517 -1.46679,13.33593 1.98828,0.21875 1.46679,-13.33593 -1.98828,-0.21875 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path4349-2-2-3-3-8"
d="m 176.35419,905.65176 -1.9668,0.36719 2.46289,13.1875 1.96485,-0.36719 -2.46094,-13.1875 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 179.62695,985.084 -1.46679,13.3359 1.98828,0.2188 1.46679,-13.336 -1.98828,-0.2187 z"
id="path4349-2-2-9-3-8-7"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="rect4918"
d="m 214.53906,984.2997 -1.32226,1.1269 4.66601,5.4766 0,2.7305 -3.44726,4.8613 1.30859,0.9297 3.75195,-5.293 2.38672,0 0,-4 -2.375,0 -4.96875,-5.832 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g4621-0-6"
transform="translate(42.310073,1.98329)"
style="fill:#4d4d4d;fill-opacity:1">
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
id="g4400-8-39-2-3-1-1-8">
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 175.80573,948.24562 8.38854,8.34969"
id="path4353-1-6-1-3-6-5-5"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 176,956.36218 8.15542,-8.19427"
id="path4355-9-7-1-7-3-31-4"
inkscape:connector-curvature="0" />
</g>
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
id="g4400-8-39-2-3-3-7">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9"
transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)"
d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 -1.58203,-1.58008 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 182.41602,823.62195 0,4 4,0 0,-4 -4,0 z m 0.5371,4.54882 -1.29296,2.41797 1.21093,0.64649 1.29102,-2.41992 -1.20899,-0.64454 z m -1.93945,3.62891 -0.28711,0.53906 -2.51758,0 0,2.34571 -4.24609,4.24804 1.41406,1.41407 4.00782,-4.00782 2.82421,0 0,-3.86328 0.0156,-0.0293 -0.0156,-0.008 0,-0.0996 -0.18554,0 -1.00977,-0.53906 z"
id="path4873"
inkscape:connector-curvature="0" />
<g
id="g4244"
transform="matrix(0.51357238,-0.54309229,0.54309229,0.51357238,-430.0199,562.22551)">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 220.49219,133.52344 c -0.33017,0.01 -0.66239,0.0456 -0.99414,0.10742 -2.22487,0.41425 -4.02666,1.95747 -4.83203,4.00976 l -0.87696,-1.8164 a 0.50004998,0.50004998 0 0 0 -0.83398,-0.11328 0.50004998,0.50004998 0 0 0 -0.0664,0.54883 l 1.45899,3.01953 a 0.50004998,0.50004998 0 0 0 0.60742,0.25586 l 2.84375,-0.94532 a 0.50028339,0.50028339 0 1 0 -0.31641,-0.94922 l -2.00195,0.66797 c 0.61312,-1.89015 2.20733,-3.32407 4.20117,-3.69531 2.24744,-0.41845 4.51458,0.59912 5.69531,2.55664 1.18073,1.95754 1.02202,4.43774 -0.39648,6.23047 -1.41851,1.79275 -3.79606,2.51535 -5.97266,1.81641 a 0.50004998,0.50004998 0 1 0 -0.30469,0.95117 c 2.57038,0.82539 5.38736,-0.0294 7.0625,-2.14649 0.4188,-0.52924 0.74532,-1.11137 0.97657,-1.7207 0.69373,-1.828 0.53599,-3.91467 -0.50977,-5.64844 -1.22005,-2.02271 -3.42908,-3.19767 -5.74023,-3.1289 z"
transform="matrix(0.91921787,0.9720541,-0.9720541,0.91921787,152.1356,647.93271)"
id="path4240"
inkscape:connector-curvature="0" />
</g>
<g
id="g4140"
transform="translate(0,-40)">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 227.55273,53.105469 -6.05468,3.027343 -3.44141,0 0,3.517579 -2.95117,5.902343 1.78906,0.894532 3.15625,-6.314454 2.00586,0 0,-2.042968 6.39063,-3.195313 -0.89454,-1.789062 z"
transform="translate(0,852.36218)"
id="path4349-2-2-9-3-8-3-5"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#ffffff;stroke-width:2.48200011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217,907.36218 6,6"
id="path4353-1-6-1-3-5-1-9"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#4d4d4d;stroke-width:1.48223662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217,907.36218 6,6"
id="path4353-1-6-1-3-5-1"
inkscape:connector-curvature="0" />
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 223.11523,825.44531 -1.46875,13.33594 1.98829,0.21875 1.46679,-13.33594 -1.98633,-0.21875 z"
id="path4349-2-2-9-3-8-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217.65868,838.95182 -2.4614,-13.1887"
id="path4349-2-2-3-3-3"
inkscape:connector-curvature="0" />
<g
id="g4621-0-6-2"
transform="translate(-1.3846587,-0.287334)"
style="fill:#4d4d4d;fill-opacity:1">
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
id="g4400-8-39-2-3-1-1-8-9">
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 175.80573,948.24562 8.38854,8.34969"
id="path4353-1-6-1-3-6-5-5-7"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 176,956.36218 8.15542,-8.19427"
id="path4355-9-7-1-7-3-31-4-6"
inkscape:connector-curvature="0" />
</g>
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
id="g4400-8-39-2-3-3-7-9">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9-1"
transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)"
d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 -1.58203,-1.58008 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</g>
<g
id="g4621-0-6-9"
transform="translate(1.6890431,-40.40456)"
style="fill:#4d4d4d;fill-opacity:1">
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
id="g4400-8-39-2-3-1-1-8-0">
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 175.80573,948.24562 8.38854,8.34969"
id="path4353-1-6-1-3-6-5-5-4"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 176,956.36218 8.15542,-8.19427"
id="path4355-9-7-1-7-3-31-4-9"
inkscape:connector-curvature="0" />
</g>
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
id="g4400-8-39-2-3-3-7-8">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9-4"
transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)"
d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 -1.58203,-1.58008 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</g>
<g
id="g4621-0-6-0"
transform="translate(2.4363388,-80.091107)"
style="fill:#4d4d4d;fill-opacity:1">
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
id="g4400-8-39-2-3-1-1-8-2">
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 175.80573,948.24562 8.38854,8.34969"
id="path4353-1-6-1-3-6-5-5-5"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 176,956.36218 8.15542,-8.19427"
id="path4355-9-7-1-7-3-31-4-69"
inkscape:connector-curvature="0" />
</g>
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
id="g4400-8-39-2-3-3-7-2">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9-8"
transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)"
d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 -1.58203,-1.58008 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</g>
<g
id="g4621-0-6-5"
transform="translate(-4.5930092,-80.174546)"
style="fill:#4d4d4d;fill-opacity:1">
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
id="g4400-8-39-2-3-1-1-8-6">
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 175.80573,948.24562 8.38854,8.34969"
id="path4353-1-6-1-3-6-5-5-2"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 176,956.36218 8.15542,-8.19427"
id="path4355-9-7-1-7-3-31-4-0"
inkscape:connector-curvature="0" />
</g>
<g
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
id="g4400-8-39-2-3-3-7-0">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9-6"
transform="matrix(1.9000195,0,0,1.9000195,-245.02393,606.04174)"
d="m 222.11328,179.64258 -1.04883,1.04883 1.58203,1.58007 -1.58203,1.58204 1.04883,1.04687 1.58203,-1.58008 1.58008,1.58008 1.04883,-1.04687 -1.58203,-1.58204 1.58203,-1.58007 -1.04883,-1.04883 -1.58008,1.58008 -1.58203,-1.58008 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 180,864.36204 c -4.41236,0 -8.00014,3.58778 -8.00014,8.00014 0,4.41235 3.58778,8.00014 8.00014,8.00014 4.41236,0 8.00014,-3.58779 8.00014,-8.00014 0,-4.41236 -3.58778,-8.00014 -8.00014,-8.00014 z m 0,1.00028 c 3.87192,0 6.99986,3.12794 6.99986,6.99986 0,3.87191 -3.12794,6.99986 -6.99986,6.99986 -3.87192,0 -6.99986,-3.12795 -6.99986,-6.99986 0,-3.87192 3.12794,-6.99986 6.99986,-6.99986 z"
id="path3014-4"
inkscape:connector-curvature="0" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4237"
width="2"
height="2"
x="133"
y="945.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4239"
width="2"
height="2"
x="137"
y="945.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4241"
width="2"
height="2"
x="141"
y="945.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4243"
width="2"
height="2"
x="145"
y="945.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4237-6"
width="2"
height="2"
x="133"
y="949.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4239-3"
width="2"
height="2"
x="137"
y="949.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4241-8"
width="2"
height="2"
x="141"
y="949.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4243-2"
width="2"
height="2"
x="145"
y="949.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4237-1"
width="2"
height="2"
x="133"
y="953.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4239-5"
width="2"
height="2"
x="137"
y="953.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4241-82"
width="2"
height="2"
x="141"
y="953.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4243-5"
width="2"
height="2"
x="145"
y="953.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4237-6-6"
width="2"
height="2"
x="133"
y="957.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4239-3-7"
width="2"
height="2"
x="137"
y="957.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4241-8-2"
width="2"
height="2"
x="141"
y="957.36218" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4243-2-5"
width="2"
height="2"
x="145"
y="957.36218" />
<path
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 219,1025.3621 0,1 c -1.42857,0 -3.28571,0.5999 -4,2 l 0,1 10,0 0,-1 c -0.71429,-1.4001 -2.57143,-2 -4,-2 l 0,-1 z m -4,5 2,9 6,0 2,-9 z"
id="delete-30-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:evenodd;stroke:#999999;stroke-width:0.1772268;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 179.96039,1032.4893 -7.74718,7.7842 15.49436,0 z"
id="path4407"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 55 KiB

BIN
umap/static/umap/img/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

681
umap/static/umap/img/16.svg Normal file
View file

@ -0,0 +1,681 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="240"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="16.svg"
inkscape:export-filename="/home/ybon/Code/js/Leaflet.Storage/src/img/16.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="145.59281"
inkscape:cy="90.138309"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="3840"
inkscape:window-height="2031"
inkscape:window-x="0"
inkscape:window-y="55"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-grids="true"
inkscape:snap-to-guides="true">
<inkscape:grid
type="xygrid"
id="grid3004"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="1,0"
position="40,40"
id="guide3084" />
<sodipodi:guide
orientation="0,1"
position="120,120"
id="guide3086" />
<sodipodi:guide
orientation="1,0"
position="80,80"
id="guide3088" />
<sodipodi:guide
orientation="0,1"
position="80,80"
id="guide3090" />
<sodipodi:guide
orientation="1,0"
position="120,120"
id="guide14621" />
<sodipodi:guide
orientation="0,1"
position="40,40"
id="guide17864" />
<sodipodi:guide
orientation="0,1"
position="160,160"
id="guide3026" />
<sodipodi:guide
orientation="1,0"
position="160,160"
id="guide3028" />
<sodipodi:guide
position="200,168"
orientation="1,0"
id="guide4869"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-812.36218)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="13.786797"
y="953.80786"
id="text4457"
sodipodi:linespacing="125%"><tspan
y="953.80786"
x="13.786797"
sodipodi:role="line"
id="tspan4459" /></text>
<g
id="g3001"
transform="translate(-15.255701,-111.38651)">
<circle
transform="matrix(1.0714286,0,0,1.0714286,26.684272,934.10579)"
id="path3014"
style="fill:none;stroke:#4d4d4d;stroke-width:0.93333334;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
cx="8"
cy="9"
r="7" />
<g
id="text3784"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
transform="translate(27.255701,-100.61365)">
<path
inkscape:connector-curvature="0"
id="path3789"
style="font-weight:bold;font-size:12px;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d"
d="m 9,1046.0464 -2.3698034,0 0,-0.3223 c 0,-0.3596 0.072207,-0.6775 0.2166302,-0.9539 0.1444174,-0.2807 0.4485749,-0.636 0.9124728,-1.0658 l 0.4201314,-0.3816 c 0.249449,-0.228 0.4310681,-0.4429 0.5448577,-0.6446 0.1181576,-0.2019 0.1772384,-0.4036 0.177243,-0.6053 -4.6e-6,-0.3071 -0.1050376,-0.5462 -0.3150985,-0.7171 -0.2100697,-0.1756 -0.5032861,-0.2632 -0.87965,-0.2632 -0.3544889,0 -0.7374207,0.075 -1.1487968,0.2237 -0.4113804,0.1446 -0.840264,0.3618 -1.2866522,0.6513 l 0,-2.0659 c 0.5295391,-0.184 1.0131273,-0.32 1.4507661,-0.4077 0.437634,-0.088 0.8599531,-0.1317 1.2669587,-0.1317 1.0678292,0 1.8818328,0.2194 2.442012,0.6579 0.560169,0.4341 0.840256,1.0702 0.840263,1.9078 -7e-6,0.4298 -0.08535,0.8159 -0.256017,1.158 -0.170685,0.3377 -0.461713,0.7017 -0.873085,1.092 l -0.4201313,0.375 c -0.297598,0.272 -0.4923463,0.4913 -0.5842451,0.658 -0.091909,0.1622 -0.1378603,0.342 -0.1378556,0.5394 l 0,0.296 m -2.3698034,0.9739 2.3698034,0 0,2.342 -2.3698034,0 0,-2.342"
sodipodi:nodetypes="ccsccccccsccccsccccccccccccc" />
</g>
</g>
<path
inkscape:connector-curvature="0"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 99.999997,867.86202 c -3,0 -5,1.5 -8,4.5 3,3 5,4.5 8,4.5 3.000003,0 5.000003,-1.5 8.000003,-4.5 -3,-3 -5,-4.5 -8.000003,-4.5 z m 0,2.5 c 1.104563,0 1.999993,0.8954 1.999993,2 0,1.1046 -0.89543,2 -1.999993,2 -1.104569,0 -2,-0.8954 -2,-2 0,-1.1046 0.895431,-2 2,-2 z"
id="path2990-6"
inkscape:label="eye-on"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/eye-on.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<g
id="eye-off"
style="fill:#b3b3b3"
inkscape:label="eye-off"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/eye-off.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
transform="translate(131,-171.00018)">
<path
id="path2990"
transform="translate(0,1034.3622)"
d="M 9,4.5 C 6.0000002,4.4999664 4.0000001,6 1,9 c 3.0000001,2.999999 5.0000002,4.500033 8,4.5 3,-3.3e-5 5,-1.500001 8,-4.5 C 14,6 12,4.5000336 9,4.5 Z M 9,7 c 1.104569,0 2,0.8954305 2,2 0,1.104569 -0.895431,2 -2,2 C 7.8954305,11 7,10.104569 7,9 7,7.8954305 7.8954305,7 9,7 Z"
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="rect3787"
d="m 2,1047.8622 13,-10 1,1 -13,10 z"
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 134,827.36214 0,2 12,0 0,-2 -12,0 z m 0,3 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z"
id="table"
inkscape:connector-curvature="0"
inkscape:label="table"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 59,867.36202 0,4 -4,0 0,2 4,0 0,4 2,0 0,-4 4,0 0,-2 -4,0 0,-4 z"
id="rect5280"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/add-layer-grey-18.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
d="m 21.517525,906.362 c -2.466762,0 -4.48249,2.0158 -4.48249,4.4826 0,0.8297 0.233748,1.5964 0.63035,2.26462 l -3.66537,3.66532 1.587549,1.5876 3.66537,-3.66542 c 0.668139,0.3966 1.434831,0.6303 2.264591,0.6303 2.466762,0 4.48249,-2.0157 4.48249,-4.48242 0,-2.4668 -2.015728,-4.4826 -4.48249,-4.4826 z m 0,1.4943 c 1.659256,0 2.988326,1.329 2.988326,2.9883 0,1.6592 -1.32907,2.98832 -2.988326,2.98832 -1.659256,0 -2.988326,-1.32912 -2.988326,-2.98832 0,-1.6593 1.32907,-2.9883 2.988326,-2.9883 z m 0,1.4941 c -0.816354,0 -1.494163,0.6779 -1.494163,1.4942 0,0.8163 0.677809,1.4942 1.494163,1.4942 0.816354,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677809,-1.4942 -1.494163,-1.4942 z"
id="path4354"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864"
inkscape:connector-curvature="0" />
<path
id="path4392"
d="m 61.51751,906.36205 c -2.466762,0 -4.482491,2.0157 -4.482491,4.4825 0,0.8298 0.233749,1.5964 0.630351,2.2645 L 54,916.77459 l 1.587549,1.5875 3.665369,-3.66544 c 0.668139,0.39662 1.434831,0.63042 2.264592,0.63042 2.466762,0 4.48249,-2.01572 4.48249,-4.48252 0,-2.4668 -2.015728,-4.4825 -4.48249,-4.4825 z m 0,1.4942 c 1.659256,0 2.988327,1.329 2.988327,2.9883 0,1.6593 -1.329071,2.9883 -2.988327,2.9883 -1.659256,0 -2.988327,-1.329 -2.988327,-2.9883 0,-1.6593 1.329071,-2.9883 2.988327,-2.9883 z m 0,1.4941 c -0.816355,0 -1.494164,0.6779 -1.494164,1.4942 0,0.8163 0.677809,1.4942 1.494164,1.4942 0.816355,0 1.494163,-0.6779 1.494163,-1.4942 0,-0.8163 -0.677808,-1.4942 -1.494163,-1.4942 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
inkscape:connector-curvature="0"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom_to-off.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
d="m 60,945.36215 c -3.865993,0 -7,3.134 -7,7 0,3.86602 3.134007,7.00005 7,7.00005 3.865993,0 7,-3.13404 7,-7.00005 0,-3.866 -3.134007,-7 -7,-7 z m -0.15625,2.9687 a 1.0001,1.0001 0 0 1 0.09375,0 1.0001,1.0001 0 0 1 0.65625,1.8125 l -1.625,1.2188 5.03125,0 a 1.0001,1.0001 0 1 1 0,2 l -5,0 1.59375,1.1875 a 1.0001,1.0001 0 1 1 -1.1875,1.59372 l -3.71875,-2.78122 a 1.0043849,1.0043849 0 0 1 -0.15625,-1.9063 l 3.875,-2.9062 a 1.0001,1.0001 0 0 1 0.4375,-0.2188 z"
id="path5321"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/arrow-left-16.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
inkscape:export-ydpi="89.996864"
inkscape:export-xdpi="89.996864"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/arrow-right-16.png"
id="path5338"
d="m 20.000015,959.36218 c 3.865993,0 7,-3.134 7,-7.00002 0,-3.866 -3.134007,-7 -7,-7 -3.865993,0 -7,3.134 -7,7 0,3.86602 3.134007,7.00002 7,7.00002 z m 0.15625,-2.9687 a 1.0001,1.0001 0 0 1 -0.09375,0 1.0001,1.0001 0 0 1 -0.65625,-1.81252 l 1.625,-1.2188 -5.03125,0 a 1.0001,1.0001 0 1 1 0,-2 l 5,0 -1.59375,-1.1875 a 1.0001,1.0001 0 1 1 1.1875,-1.5937 l 3.71875,2.7812 a 1.0043849,1.0043849 0 0 1 0.15625,1.9063 l -3.875,2.90622 a 1.0001,1.0001 0 0 1 -0.4375,0.2188 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
d="m 20.000015,985.3621 c -3.865993,0 -7,3.134 -7,7 0,3.8661 3.134007,7.0001 7,7.0001 3.865993,0 7,-3.134 7,-7.0001 0,-3.866 -3.134007,-7 -7,-7 z m -0.15625,1.7187 a 1.250125,1.250125 0 0 1 0.125,0 1.250125,1.250125 0 0 1 1.28125,1.2813 l 0,2.75 2.75,0 a 1.250125,1.250125 0 1 1 0,2.5 l -2.75,0 0,2.7501 a 1.250125,1.250125 0 1 1 -2.5,0 l 0,-2.7501 -2.75,0 a 1.2515615,1.2515615 0 0 1 -0.125,-2.5 1.250125,1.250125 0 0 1 0.125,0 l 2.75,0 0,-2.75 a 1.250125,1.250125 0 0 1 1.09375,-1.2813 z"
id="path5340"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/zoom-grey-16.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
style="fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 94,827.36214 0,2 12,0 0,-2 -12,0 z m 0,3 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z"
id="table-5"
inkscape:connector-curvature="0"
inkscape:label="table"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<g
transform="translate(32,-48.000118)"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="text3784-6" />
<g
id="text4356"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
transform="translate(20,-164.00004)">
<path
inkscape:connector-curvature="0"
id="path4384"
style="font-variant:normal;font-stretch:normal;font-size:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#4d4d4d"
d="m 35.742187,999.43835 3.076172,-3.07617 -3.066406,-3.0664 1.191406,-1.19141 3.066407,3.06641 3.05664,-3.05664 1.171875,1.18164 -3.046875,3.05664 3.066406,3.0664 -1.191406,1.19138 L 40,997.54382 36.923828,1000.62 35.742187,999.43835" />
</g>
<path
inkscape:connector-curvature="0"
d="m 19.192256,877.3618 2e-6,-4.19993 -4.192255,10e-6 -3e-6,-1.62667 4.192263,0 0,-4.17331 1.608812,0.007 0.0067,4.16664 4.192255,0 -3.9e-5,1.62662 -4.19222,4e-5 -1.5e-5,4.19994 -1.615475,0"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
id="path4384-3" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="m 103.71429,906.36213 -1.14285,1.14286 2.28571,2.28572 L 106,908.64785 Z M 102,908.07641 l -6.285714,6.28574 2.285715,2.2857 6.285719,-6.28572 z M 95.714286,914.36215 94,918.36214 l 4.000001,-1.71429 z"
id="path3684"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:30.4761982px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="81.647079"
y="988.79706"
id="text4457-6"
sodipodi:linespacing="125%"><tspan
y="988.79706"
x="81.647079"
sodipodi:role="line"
id="tspan4459-6" /></text>
<g
id="text4356-2"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="translate(100,-84.00004)">
<path
inkscape:connector-curvature="0"
id="path4384-2"
style="font-variant:normal;font-stretch:normal;font-size:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#ffffff"
d="m 35.742187,999.43835 3.076172,-3.07617 -3.066406,-3.0664 1.191406,-1.19141 3.066407,3.06641 3.05664,-3.05664 1.171875,1.18164 -3.046875,3.05664 3.066406,3.0664 -1.191406,1.19138 L 40,997.54382 36.923828,1000.62 35.742187,999.43835" />
</g>
<path
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 134,947.36216 0,2 12,0 0,-2 -12,0 z m 0,3.00002 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z m -5,2 0,1 4,0 0,-1 -4,0 z m 5,0 0,1 7,0 0,-1 -7,0 z"
id="table-0"
inkscape:connector-curvature="0"
inkscape:label="table"
inkscape:export-filename="/home/ybon/Code/js/leaflet-storage/src/img/browse-data.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864" />
<path
style="fill:#b3b3b3;fill-opacity:1;stroke:none"
d="m 103.71429,946.36216 -1.14285,1.1428 2.28571,2.2858 L 106,948.64786 Z M 102,948.07646 95.714286,954.36218 98,956.64788 l 6.28572,-6.2857 z m -6.285714,6.28572 -1.714286,4 4,-1.7143 z"
id="path3684-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<path
id="table-5-8-8-6"
style="fill:#464646;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 54,986.3622 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="table-5-8-8-6-1"
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 94,986.3622 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z m -2,2 0,1 1,0 0,-1 z m 2,0 0,1 10,0 0,-1 z" />
<circle
style="fill:#464646;fill-opacity:1;stroke:none"
id="path3762"
cx="180"
cy="872.36218"
r="8" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:none"
id="path3764"
cx="180"
cy="868.36218"
r="1.5" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 179,871.36218 2,0 0,6 -2,0 z"
id="rect4274"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<g
id="g4717"
transform="translate(1.210815,-42.477)">
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path3862"
d="m 140.0582,1028.2632 4.21686,4.2783 -4.14879,7.8737 -5.87101,-3.1269 -0.95195,-6.3455 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3864"
d="m 135.91434,1032.4783 1.7373,3.8107 3.35847,-1.5041 0.59077,-2.4329 -2.98985,-1.6008"
style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 219,905.36213 0,1 c -1.42857,0 -3.28571,0.59991 -4,2 l 0,1 10,0 0,-1 c -0.71429,-1.40009 -2.57143,-2 -4,-2 l 0,-1 z m -4,5 2,9 6,0 2,-9 z"
id="delete-30"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
<g
id="g4797"
transform="translate(1.7400753,-40.674381)">
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8"
d="m 180.4719,999.63731 1.46774,-13.3359"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4349-2-2-3-3"
d="m 175.49003,999.69763 -2.4614,-13.1887"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g4621">
<g
id="g4400-8-39-2-3-1"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-6"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-3"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4400-8-39-2-3"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</g>
<g
id="g4779"
transform="translate(2.3424661,-37.674411)">
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8-3"
d="m 180.4719,956.63731 1.46774,-13.3359"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4349-2-2-3-3-8"
d="m 175.49003,956.69763 -2.4614,-13.1887"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g4621-7"
transform="translate(0,-43)">
<g
id="g4400-8-39-2-3-1-3"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-6-1"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-3-3"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4400-8-39-2-3-6"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-5"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-0"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g4621-7-8"
transform="translate(-7.3214314,-41.982144)">
<g
id="g4400-8-39-2-3-1-3-3"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-6-1-4"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-3-3-1"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4400-8-39-2-3-6-1"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-5-9"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-0-1"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</g>
<g
id="g4859"
transform="translate(-2.300712,-40.87945)">
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8-7"
d="m 181.45436,1039.4096 1.46774,-13.3359"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(0.9824624,39.77233)"
id="g4621-0">
<g
id="g4400-8-39-2-3-1-1"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-6-5"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-3-31"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4400-8-39-2-3-3"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3"
d="m 176,948.36218 8,8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-8"
d="m 176,956.36218 8,-8"
style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</g>
<g
id="g4976"
transform="translate(1.4371075,-38.784271)">
<rect
y="1028.9158"
x="216.44643"
height="4"
width="4"
id="rect4918"
style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8-7-0-0"
d="m 218.99033,1031.3352 -6.55062,-7.6872"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.73726761;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:transform-center-x="-3.7509278"
inkscape:transform-center-y="-0.64197712" />
<path
inkscape:connector-curvature="0"
id="path4349-2-2-9-3-8-7-0"
d="m 213.65253,1037.7441 5.63872,-7.9526"
style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.60523391;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="fill:#4d4d4d;fill-opacity:1"
transform="translate(40.872965,40.767561)"
id="g4621-0-6">
<g
id="g4400-8-39-2-3-1-1-8"
transform="matrix(0.57449139,0,0,0.57449139,77.909804,445.56677)"
style="fill:#4d4d4d;fill-opacity:1;stroke:#ffffff;stroke-width:4.22441769;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-6-5-5"
d="m 176,948.36218 8,8"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-3-31-4"
d="m 176,956.36218 8,-8"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.22441769;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4400-8-39-2-3-3-7"
transform="matrix(0.52631038,0,0,0.52631038,86.648567,491.41283)"
style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:2.81627846;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
id="path4353-1-6-1-3-3-9"
d="m 176,948.36218 8,8"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4355-9-7-1-7-8-7"
d="m 176,956.36218 8,-8"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:2.81627846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</g>
<path
style="fill:none;fill-rule:evenodd;stroke:#464646;stroke-width:1.37150156;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.74300319, 1.3715016;stroke-dashoffset:0;stroke-opacity:1"
d="m 185.49562,824.86263 -4.65031,8.70807"
id="path4873"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
id="rect4918-7"
width="4"
height="4"
x="182.41608"
y="823.62122" />
<path
style="fill:none;fill-rule:evenodd;stroke:#464646;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 181.02836,833.2798 -6.35851,6.35851"
id="path4873-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
id="g4244"
transform="matrix(0.51357238,-0.54309229,0.54309229,0.51357238,-430.0199,562.22551)">
<path
transform="matrix(-0.90185488,0.43203909,-0.43203909,-0.90185488,0,0)"
sodipodi:open="true"
d="m 231.87666,-980.51414 a 8,8 0 0 1 -8.12623,-4.12713 8,8 0 0 1 1.012,-9.05786 8,8 0 0 1 8.83671,-2.23192 8,8 0 0 1 5.1918,7.49093"
sodipodi:end="0"
sodipodi:start="1.4346606"
sodipodi:ry="8"
sodipodi:rx="8"
sodipodi:cy="-988.44012"
sodipodi:cx="230.79094"
sodipodi:type="arc"
id="path4240"
style="fill:none;fill-opacity:1;stroke:#464646;stroke-width:1.33785295;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4242"
d="m 216,980.36218 -1.59512,4.19351 3.53553,1.89404"
style="fill:none;fill-rule:evenodd;stroke:#464646;stroke-width:1.33785295;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<rect
style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
id="rect4918-7-3"
width="4"
height="4"
x="178.20859"
y="832.3382" />
<g
id="g4140"
transform="translate(0,-40)">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 216,918.36218 4,-8"
id="path4349-2-2-9-3-8-3-5"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 220,910.36218 8,-4"
id="path4349-2-2-9-3-8-3-8"
inkscape:connector-curvature="0" />
<rect
style="fill:#808080;fill-opacity:1;stroke:none"
id="rect4918-1"
width="4"
height="4"
x="218.05635"
y="908.49438" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#ffffff;stroke-width:2.48200011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217,907.36218 6,6"
id="path4353-1-6-1-3-5-1-9"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#4d4d4d;stroke-width:1.48223662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217,907.36218 6,6"
id="path4353-1-6-1-3-5-1"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:none;stroke:#464646;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 222.64055,838.8915 1.46774,-13.3359"
id="path4349-2-2-9-3-8-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 217.65868,838.95182 -2.4614,-13.1887"
id="path4349-2-2-3-3-3"
inkscape:connector-curvature="0" />
<path
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 219,1025.3621 0,1 c -1.42857,0 -3.28571,0.5999 -4,2 l 0,1 10,0 0,-1 c -0.71429,-1.4001 -2.57143,-2 -4,-2 l 0,-1 z m -4,5 2,9 6,0 2,-9 z"
id="delete-30-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,475 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="200"
height="200"
id="svg2"
version="1.1"
inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="24-white.svg"
inkscape:export-filename="/home/ybon/Code/py/umap/umap/static/umap/img/24-white.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.4"
inkscape:cx="124.98783"
inkscape:cy="45.00337"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="3840"
inkscape:window-height="2031"
inkscape:window-x="0"
inkscape:window-y="55"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid3004"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="1,0"
position="80,112"
id="guide3084"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,40"
id="guide3086"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="40,104"
id="guide3088"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,80"
id="guide3090"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="120,84"
id="guide3512"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="160,84"
id="guide3872"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,120"
id="guide25561"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="-12,160"
id="guide25563"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-852.36218)">
<path
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
d="m 26,861.36218 -2,2 4,4 2,-2 z m -3,3 -11,11 4,4 11,-11 z m -11,11 -3,7 7,-3 z"
id="path3684"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="13.786797"
y="953.80786"
id="text4457"><tspan
y="953.80786"
x="13.786797"
sodipodi:role="line"
id="tspan4459"
style="font-size:40px;line-height:1.25;font-family:sans-serif"> </tspan></text>
<path
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
d="m 58,862.36216 0,2 c -2,0 -4,0 -5,2 l 0,1 14,0 0,-1 c -1,-2 -3,-2 -5,-2 l 0,-2 z m -5,6 3,14.00002 8,0 3,-14.00002 z"
id="delete-30"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
<g
id="g3505"
transform="translate(-41.170559,-15.03125)">
<path
sodipodi:nodetypes="ccccccccccccccccccccccccccccc"
inkscape:connector-curvature="0"
id="rect4452"
d="m 47.999998,965.36218 3.000002,0 0,8 2,0 0,-8 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,8 2,0 0,-8 3,0 0,11 -24,0 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<text
id="text4455"
y="964.36218"
x="49.170559"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
style="font-weight:bold;font-size:8px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;fill-opacity:1"
y="964.36218"
x="49.170559"
id="tspan4457"
sodipodi:role="line">0</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none"
x="65.048965"
y="964.36218"
id="text4459"><tspan
sodipodi:role="line"
id="tspan4461"
x="65.048965"
y="964.36218"
style="font-weight:bold;font-size:8px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;fill-opacity:1">1</tspan></text>
</g>
<g
id="g3702"
transform="translate(16.000002,8.0000032)">
<circle
transform="matrix(0.02040816,0,0,0.02040816,74,934.36218)"
id="circle3841"
r="440"
cy="490"
cx="490"
sodipodi:cx="490"
sodipodi:cy="490"
sodipodi:rx="440"
sodipodi:ry="440"
style="fill:none;stroke:#4d4d4d;stroke-width:100;stroke-opacity:1" />
<path
style="fill:#4d4d4d;fill-opacity:1"
id="path3843"
d="m 83.918365,938.74993 c -2.653058,0 -4.877549,1.85717 -5.448974,4.34692 l 2.673466,0 c 0.489792,-1.06125 1.551017,-1.79592 2.775508,-1.79592 1.693875,0 3.061225,1.36734 3.061225,3.06125 0,1.69384 -1.36735,3.06117 -3.061225,3.06117 -1.224491,0 -2.285716,-0.73467 -2.775508,-1.7755 l -2.673466,0 c 0.571425,2.46942 2.795916,4.32658 5.448974,4.32658 3.102041,0 5.612241,-2.51025 5.612241,-5.61225 0,-3.10208 -2.5102,-5.61225 -5.612241,-5.61225 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g3692"
transform="translate(72,8.0001016)"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="sccccsssccs"
inkscape:connector-curvature="0"
id="rect2985"
d="m 105.25387,934.36268 c -3.17753,0 -6.346004,2.1278 -7.25387,6.3794 0,2.551 1.806672,7.6679 7.25387,13.6201 1.46368,-1.5994 2.66945,-3.1177 3.64397,-4.5613 -1.4505,-2.1639 -2.41497,-4.0873 -2.96285,-5.7095 -0.22599,0.041 -0.44225,0.063 -0.68112,0.063 -2.0056,0 -3.64396,-1.5346 -3.64396,-3.413 0,-1.8785 1.63836,-3.3811 3.64396,-3.3811 0.51205,0 0.98854,0.076 1.43034,0.2552 0.64347,-0.9222 1.4345,-1.6571 2.31579,-2.169 -1.14444,-0.7114 -2.44633,-1.0845 -3.74613,-1.0845 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="path3378"
d="m 111,934.36218 c -3.0625,0 -6.125,2.1277 -7,6.383 0,2.5532 1.75,7.6596 7,13.617 5.25,-5.9574 7,-11.0638 7,-13.617 -0.875,-4.2553 -3.9375,-6.383 -7,-6.383 z m 0,2.9788 c 1.933,0 3.5,1.5241 3.5,3.4042 0,1.8801 -1.567,3.4043 -3.5,3.4043 -1.93299,0 -3.5,-1.5242 -3.5,-3.4043 0,-1.8801 1.56701,-3.4042 3.5,-3.4042 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</g>
<g
id="g25565"
transform="translate(88.000001,-96.00002)">
<path
sodipodi:nodetypes="ccccccc"
id="rect7231"
d="m 11.999999,957.36218 c -7.3730698,6.5006 -6.8762698,2.8816 -11.9999998343861,5 l 0,2 11.9999998343861,6 12,-6 0,-2 c -7.38473,-0.182 -5.29117,-2.2182 -12,-5 z"
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="rect7902"
d="M -8.343861e-7,971.36218 11.999999,977.3622 l 12,-6.00002 0,2 -12,6.00002 L -8.343861e-7,973.36218 z"
style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
style="fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m -8.343861e-7,968.36218 11.9999998343861,6 12,-6 0,2 -12,6.00002 L -8.343861e-7,970.36218 z"
id="path7953"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path7955"
d="m -8.343861e-7,965.36218 11.9999998343861,6 12,-6 0,2 -12,6 -11.9999998343861,-6 z"
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
d="m 180,900.61217 c -3.5,0 -7,2.5 -8,7.5 0,3 2,9 8,16 6,-7 8,-13 8,-16 -1,-5 -4.5,-7.5 -8,-7.5 z m 0,3.5 c 2.20914,0 4,1.79086 4,4 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 z"
id="rect2985-3" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 131,900.36217 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-0.34375 10,4 0,1.34375 0,0.4375 -7.09375,11.0625 -2.40625,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.375 7.09375,-11.125 2.40625,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.5625 -10,-4 0,-1.5625 0,-0.5 -0.5,0 -3,0 -0.5,0 z m 1,1 2,0 0,2 -2,0 0,-2 z m 14,5 2,0 0,2 -2,0 0,-2 z m -10,15 2,0 0,2 -2,0 0,-2 z"
id="rect4058" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 92,901.36217 0,0.5 0,3 0,0.5 0.5,0 1.3125,0 -1.59375,14 -1.71875,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5937 10,-0.6875 0,1.2812 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -1.15625,0 1.375,-8 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.8125 -10,-3.5937 0,-2.2188 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z m -2,12 2,0 0,2 -2,0 z m -14,1 c 2,0 0,0 2,0 l 0,2 -2,0 z"
id="rect4058-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
<g
transform="matrix(0.2444191,0,0,0.2444191,127.75289,860.16787)"
id="Layer_1" />
<g
transform="matrix(0.2444191,0,0,0.2444191,127.75289,860.16787)"
id="Isolation_Mode"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.99828532;stroke-miterlimit:4;stroke-dasharray:none">
<path
inkscape:connector-curvature="0"
d="M 98.762,43.652 C 98.576,42.266 97.281,41.07 95.886,40.993 l -6.172,-0.337 c -1.395,-0.076 -2.899,-1.224 -3.341,-2.55 l -2.28,-5.518 c -0.629,-1.249 -0.379,-3.121 0.553,-4.161 l 4.122,-4.6 c 0.933,-1.042 0.962,-2.77 0.066,-3.842 l -8.813,-8.813 c -1.073,-0.897 -2.803,-0.867 -3.845,0.065 l -4.598,4.122 c -1.039,0.934 -2.915,1.182 -4.161,0.551 l -5.521,-2.279 c -1.324,-0.442 -2.472,-1.945 -2.549,-3.34 L 59.01,4.121 C 58.933,2.725 57.738,1.43 56.351,1.243 c 0,0 -3.252,-0.44 -6.248,-0.44 -2.991,0 -6.243,0.44 -6.243,0.44 -1.386,0.188 -2.582,1.483 -2.658,2.878 l -0.338,6.17 c -0.076,1.396 -1.224,2.898 -2.551,3.34 l -5.517,2.279 c -1.249,0.631 -3.122,0.382 -4.161,-0.551 l -4.601,-4.122 c -1.042,-0.932 -2.769,-0.962 -3.842,-0.065 l -8.813,8.813 c -0.897,1.073 -0.867,2.801 0.066,3.842 l 4.122,4.6 c 0.933,1.041 1.182,2.913 0.551,4.161 l -2.279,5.518 c -0.442,1.326 -1.946,2.474 -3.34,2.55 l -6.17,0.337 c -1.396,0.077 -2.691,1.272 -2.879,2.659 0,0 -0.439,3.253 -0.439,6.243 0,2.99 0.44,6.24 0.44,6.24 0.188,1.389 1.483,2.582 2.879,2.659 l 6.169,0.339 c 1.396,0.075 2.898,1.225 3.341,2.549 l 2.278,5.517 c 0.631,1.248 0.381,3.122 -0.551,4.163 l -4.122,4.598 c -0.933,1.042 -0.963,2.771 -0.066,3.845 l 8.814,8.813 c 1.073,0.896 2.801,0.866 3.842,-0.066 l 4.6,-4.122 c 1.041,-0.932 2.913,-1.182 4.161,-0.553 l 5.517,2.28 c 1.327,0.441 2.475,1.946 2.55,3.343 l 0.338,6.168 c 0.076,1.395 1.272,2.692 2.658,2.88 0,0 3.252,0.439 6.244,0.439 2.996,0 6.25,-0.439 6.25,-0.439 1.385,-0.188 2.58,-1.485 2.657,-2.88 L 59.347,89.5 c 0.077,-1.396 1.225,-2.901 2.551,-3.343 l 5.517,-2.28 c 1.248,-0.629 3.122,-0.379 4.163,0.553 l 4.598,4.122 c 1.042,0.933 2.771,0.964 3.843,0.067 l 8.815,-8.814 C 89.73,78.732 89.7,77.002 88.768,75.96 l -4.122,-4.598 c -0.932,-1.041 -1.182,-2.915 -0.553,-4.163 l 2.28,-5.517 c 0.441,-1.324 1.946,-2.474 3.341,-2.549 l 6.172,-0.339 c 1.395,-0.077 2.692,-1.271 2.876,-2.659 0,0 0.441,-3.25 0.441,-6.24 0,-2.99 -0.441,-6.243 -0.441,-6.243 z M 50.104,62.361 c -6.886,0 -12.468,-5.585 -12.468,-12.467 0,-6.885 5.582,-12.467 12.468,-12.467 6.89,0 12.475,5.582 12.475,12.467 -10e-4,6.882 -5.586,12.467 -12.475,12.467 z"
id="path27812"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.99828532;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
d="m 180,860.36218 c -6.62742,0 -12,5.37258 -12,12 0,6.62742 5.37258,12 12,12 6.62742,0 12,-5.37258 12,-12 0,-6.62742 -5.37258,-12 -12,-12 z m 0,5 7,7 -5,0 0,6 -4,0 0,-6 -5,0 z"
id="path4700"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscccccccc" />
<polygon
points="37.37,62.644 37.37,90.703 28.965,82.305 11.27,100 0,88.737 17.702,71.042 9.297,62.644 "
id="polygon3044"
transform="matrix(0.24,0,0,0.24,8,900.36218)"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:1.04166667;stroke-miterlimit:4;stroke-dasharray:none" />
<polygon
points="71.042,17.708 62.644,9.31 62.644,37.357 90.71,37.37 82.298,28.958 100,11.263 88.743,0 "
id="polygon3048"
transform="matrix(0.24,0,0,0.24,8,900.36218)"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:1.04166667;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 20,909.43106 c -1.618801,0 -2.93112,1.31256 -2.93112,2.93112 0,1.62192 1.31256,2.93448 2.93112,2.93448 1.6188,0 2.9328,-1.31256 2.9328,-2.93448 0,-1.6188 -1.314,-2.93112 -2.9328,-2.93112 z"
id="path3052"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="M 52.09375 54 C 48.729514 53.992 46.007497 56.6898 46 60 C 46.0075 63.31752 48.729514 65.99461 52.09375 66 C 54.336949 65.996659 56.291025 64.786304 57.34375 63 L 59.8125 63 L 61.78125 61.09375 L 63.28125 62.53125 L 64.71875 61.125 L 66.1875 62.5625 L 67.6875 61.125 L 69.15625 62.5625 L 71.71875 60.09375 C 72.087686 59.71854 72.096762 59.4354 71.71875 59.0625 L 69.625 57 L 57.375 57 C 56.327602 55.196673 54.352273 53.995338 52.09375 54 z M 49.4375 58.375 C 50.321767 58.371 51.024542 59.08352 51.03125 59.96875 C 51.02495 60.84166 50.322161 61.55442 49.4375 61.5625 C 48.538239 61.5535 47.804214 60.84166 47.8125 59.96875 C 47.8043 59.08352 48.538239 58.37077 49.4375 58.375 z "
transform="translate(0,852.36218)"
id="path3652"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none" />
<polygon
points="0,50 12.5,50 12.5,87.5 43.75,87.5 43.75,62.5 56.25,62.5 56.25,87.5 87.5,87.5 87.5,50 100,50 50,0 "
id="polygon3866"
transform="matrix(0.24,0,0,0.24,128,941.86218)"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 32.000004,992.36245 c 0,-0.45066 -0.02933,-0.89466 -0.07867,-1.33333 l -1.348,0 c -0.601333,-4.82267 -4.417333,-8.63867 -9.24,-9.24133 v -1.34667 c -0.438667,-0.0493 -0.882667,-0.0787 -1.333333,-0.0787 -0.450667,0 -0.894667,0.0293 -1.333333,0.0787 v 1.348 c -4.822667,0.60133 -8.638667,4.41733 -9.2413342,9.24 l -1.3466668,0 C 8.029334,991.46779 8,991.91179 8,992.36245 c 0,0.45067 0.029333,0.89467 0.078667,1.33334 h 1.3480008 c 0.6013332,4.82266 4.4173332,8.63871 9.2400002,9.24141 v 1.348 c 0.438666,0.048 0.882666,0.077 1.333333,0.077 0.450666,0 0.894666,-0.029 1.333333,-0.079 v -1.348 c 4.821333,-0.6026 8.638667,-4.41735 9.241333,-9.24001 h 1.348 c 0.048,-0.43734 0.07733,-0.88134 0.07733,-1.33334 z m -10.666667,7.88005 v -1.21338 c 0,-0.73733 -0.597333,-1.33333 -1.333333,-1.33333 -0.736,0 -1.333333,0.596 -1.333333,1.33333 v 1.21338 c -3.346667,-0.56271 -5.982667,-3.19738 -6.545334,-6.54538 l 1.212,-0.001 c 0.737334,0 1.333334,-0.59734 1.333334,-1.33334 0,-0.736 -0.596,-1.33333 -1.333334,-1.33333 h -1.213333 c 0.564,-3.34667 3.2,-5.98267 6.546667,-6.54667 v 1.21334 c 0,0.736 0.597333,1.33333 1.333333,1.33333 0.736,0 1.333333,-0.59733 1.333333,-1.33333 v -1.21334 c 3.348,0.56267 5.984,3.19867 6.546667,6.54667 H 26.66667 c -0.737333,0 -1.333333,0.59733 -1.333333,1.33333 0,0.736 0.596,1.33334 1.333333,1.33334 l 1.213334,0.001 c -0.564,3.348 -3.198667,5.98267 -6.546667,6.54538 z"
id="path4611"
style="fill:#4d4d4d;fill-opacity:1" />
<g
id="g4758"
transform="translate(36.000001,-11.999806)">
<path
transform="matrix(1.3996164,0,0,1.3996164,46.585677,990.77388)"
d="M 20.301507,9.7085428 A 7.8592963,7.8592963 0 0 1 12.442211,17.567839 7.8592963,7.8592963 0 0 1 4.5829148,9.7085428 7.8592963,7.8592963 0 0 1 12.442211,1.8492465 7.8592963,7.8592963 0 0 1 20.301507,9.7085428 Z"
sodipodi:ry="7.8592963"
sodipodi:rx="7.8592963"
sodipodi:cy="9.7085428"
sodipodi:cx="12.442211"
id="path4309"
style="fill:none;stroke:#464646;stroke-width:1.42896295;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,44.942766,1049.7278)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,37.400316,1044.6618)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819-2"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,45.211124,1039.6862)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819-0"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path4850"
d="m 66.386295,999.47498 -8.019134,4.91992 8.13935,5.3224"
style="fill:none;stroke:#464646;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
inkscape:connector-curvature="0"
id="search"
d="m 72,1001.1668 -6.436799,-6.4386 c 0.866371,-1.42919 1.374087,-3.10412 1.374087,-4.89829 0,-5.23345 -4.235188,-9.47135 -9.468644,-9.47316 C 52.238801,980.35875 48,984.59646 48,989.82901 c 0,5.22894 4.239705,9.46687 9.471354,9.46687 1.795077,0 3.467289,-0.50773 4.896485,-1.3741 l 6.440412,6.44042 L 72,1001.1668 z M 51.612738,989.82901 c 0.0054,-3.23602 2.6226,-5.8532 5.857713,-5.85862 3.234209,0.007 5.852292,2.6226 5.857713,5.85862 -0.0063,3.2333 -2.623504,5.85231 -5.857713,5.85683 -3.236016,0 -5.853196,-2.62353 -5.857713,-5.85683 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none" />
<g
id="g13779"
transform="translate(0.8783882,0.74457185)">
<g
inkscape:export-ydpi="28.799999"
inkscape:export-xdpi="28.799999"
inkscape:export-filename="/home/ybon/Work/osmtouch64.png"
id="g4200"
transform="matrix(0.15420392,0,0,0.15420392,123.6912,976.19847)">
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="M 128.96875,25.03125 C 116.4464,25.02855 103.92273,29.677098 94.375,38.96875 77.24854,55.63759 76.65542,83.22095 90.25,101.8125 L 77.03125,114.25 c 0.14747,0.11709 9,8.5625 9,8.5625 l 12.5,-12.25 c 21.41449,14.9813 47.90478,12.41882 65.03125,-4.25 19.09544,-18.58519 19.09526,-48.75856 0,-67.34375 -9.54772,-9.292593 -22.0714,-13.93479 -34.59375,-13.9375 z m 0,7.9375 c 10.43487,0.0027 20.85607,3.880217 28.8125,11.625 15.91286,15.48761 15.94433,40.63733 0.0312,56.125 -15.91287,15.48766 -41.77464,15.48761 -57.6875,0 -15.912892,-15.48767 -15.912892,-40.63734 0,-56.125 7.95643,-7.743803 18.40888,-11.627705 28.84375,-11.625 z"
id="path4189"
inkscape:connector-curvature="0" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="m 63.879368,116.05569 -39.21875,37.9375 c -3.223956,3.12021 -3.215175,8.18323 0,11.3125 l 8.96875,8.71875 c 3.215174,3.12926 8.369796,3.12021 11.59375,0 l 39.21875,-37.9375 c 3.22396,-3.12021 3.21518,-8.18324 0,-11.3125 l -8.96875,-8.71875 c -3.48388,-3.074 -8.57545,-2.83371 -11.59375,0 z"
id="path4169"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:export-ydpi="28.799999"
inkscape:export-xdpi="28.799999"
inkscape:export-filename="/home/ybon/Work/osmtouch64.png"
d="m 136.26913,998.21967 c -1.72863,1.6788 -1.93723,1.87263 -3.54806,3.46653 l 4.95517,-1.1486 c 0.14934,-0.65943 0.32405,-1.47613 0.3714,-1.66783 -0.78224,-0.026 -1.22826,-0.2704 -1.77851,-0.6501 z m 5.35377,-1.9131 c -0.18365,2.1461 -1.13564,2.3061 -2.93951,2.5878 -0.12852,0.5649 -0.21541,0.9577 -0.36624,1.62393 l 4.62612,1.1276 c 0.62063,-2.60243 1.11924,-4.71073 1.10834,-4.72243 -0.0163,-0.017 -1.23829,-0.3245 -2.42871,-0.6169 z m -2.2215,-0.5252 c -0.006,0.01 -0.26454,1.1303 -0.59754,2.5925 2.113,-0.3337 2.1769,-1.0052 2.24078,-2.207 -0.86704,-0.2111 -1.63385,-0.3935 -1.64324,-0.3855 z m -0.62164,-0.034 c -0.51393,0.043 -0.7713,0.095 -1.33482,0.2505 0.18112,0.3385 0.26544,1.0343 -0.75604,1.847 0.53504,0.3261 1.00256,0.4526 1.47405,0.5095 0.43221,-1.9749 0.65371,-2.2826 0.61681,-2.6071 z m -10.11963,-0.024 -0.89631,3.4985 3.04553,-2.9636 c -0.68349,-0.1707 -1.30768,-0.3263 -2.14922,-0.5349 z m 21.21268,-0.1205 c -2.83532,0.7227 -5.14796,1.32 -5.15619,1.33 -0.007,0.01 -0.51887,2.1316 -1.1469,4.75143 l 5.055,-1.2336 z m -8.24991,-0.7325 0,0.7855 c 1.04505,0.2593 2.11678,0.518 2.33715,0.5204 0,0 -0.117,-0.4693 -0.2554,-1.0505 -0.003,0 -0.006,0 -0.01,0 -0.90225,0.023 -1.21656,-0.03 -2.07211,-0.2554 z m -2.56846,-1.171 -0.01,0.01 0.37105,1.4312 c 0.0872,-0.01 0.81259,0.1734 1.62878,0.3758 9e-5,-0.3205 6.2e-4,-0.5828 0.005,-0.8143 -0.69971,-0.2361 -1.37206,-0.5709 -1.99501,-1.0024 z m -10.83283,-0.4626 0.49635,1.8553 c 0,0 1.37566,0.3324 2.63592,0.6361 l 0.14457,-0.1398 c -1.8692,-0.6628 -1.89514,-2.0501 -3.27684,-2.3516 z m 21.08739,-0.4144 c -1.86844,1.552 -2.86815,1.9475 -4.96826,2.2793 0.12835,0.5155 0.24073,0.9576 0.27468,1.0602 0.0287,0.087 1.76628,-0.3099 5.24775,-1.1903 z m -12.12428,-0.9445 c -0.23088,-0.3157 -0.43555,-0.6442 -0.612,-0.9831 -1.36011,0.296 -3.60183,0.8253 -3.66716,0.8819 -0.0276,0.024 0.17181,0.9075 0.44815,2.0047 0.67591,-0.6232 1.45236,-0.5109 1.96721,-0.1653 m 1.91729,1.8404 c 0.47244,-0.158 1.12276,-0.2812 1.53673,-0.3307 -0.0519,-0.3724 -0.0877,-0.6071 -0.23612,-0.9927 m -11.00149,-3.6479 0.49635,1.9613 c 2.50401,0.9496 2.69056,2.8506 4.03339,2.5878 l 0.86258,-0.8385 c -0.26762,-1.1089 -0.5801,-2.2764 -0.65536,-2.3516 -0.0174,-0.017 -4.73696,-1.359 -4.73696,-1.359 z m 8.26437,-4.2309 -1.67697,0.4144 c -0.35276,1.4788 -0.8278,3.3283 -1.11316,4.4237 1.37526,-0.3807 1.74872,-0.4606 3.29611,-0.771 -0.54316,-1.295 -0.7139,-2.7021 -0.50598,-4.0671 z m -7.08374,-1.0602 -1.18544,4.6358 c 1.82562,0.517 2.88589,0.8108 4.73213,1.2432 0.38982,-1.204 0.82942,-2.5341 1.14689,-4.443 -1.23121,-0.383 -1.96932,-0.6187 -4.69358,-1.436 z m 8.886,-5.2477 -4.61166,1.1228 c 0.65055,2.8245 1.12699,4.8412 1.15653,4.8718 0.0283,0.029 0.85135,-0.1466 1.7878,-0.3614 0.44052,-1.7435 0.82365,-2.3477 2.12994,-3.6719 -0.14019,-0.6014 -0.29567,-1.2597 -0.46261,-1.9613 z m 0.61681,-0.063 c 0.19042,0.7975 0.20798,0.855 0.37588,1.5565 0.53081,-0.4268 1.10819,-0.7739 1.7107,-1.0457 z m -10.77981,0 1.20471,4.6358 c 2.64567,0.7792 4.75728,1.3919 4.77069,1.3782 0.0142,-0.015 -0.46615,-2.1739 -1.06979,-4.8574 z m 21.18376,-0.043 -1.8649,0.4529 c 0.85846,0.3551 1.66426,0.8652 2.3757,1.5276 z m -10.27066,8.6587 c 0.41381,2.527 3.18363,4.4267 6.07178,4.112 1.0773,-2.5454 1.8315,-2.422 2.24706,-4.9716 0.0167,-2.2665 -2.96358,-0.8684 -4.31818,-0.7964 -2.32675,-0.074 -2.21097,-2.8133 -2.46342,-3.2185 -0.71838,0.5281 -1.97222,2.1788 -1.53724,4.8745 z m 2.65684,-5.7481 c 0.75831,2.395 0.92104,3.2135 3.33948,2.2745 1.81917,-0.5274 3.26924,0.1901 3.50475,1.0508 0.38584,1.2833 -0.24196,3.1638 -1.92416,6.0907 2.63491,-1.4075 3.4684,-4.4853 2.52192,-6.8474 -1.28937,-2.6947 -4.29141,-4.0352 -7.44199,-2.5686 z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
id="path5801"
inkscape:connector-curvature="0" />
</g>
<g
id="g7291"
transform="translate(0,3.6429698)"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none">
<path
id="path3378-6"
d="m 178.57143,979.21934 c -3.0625,0 -6.125,2.1197 -7,6.375 0,2.5532 1.75,7.6676 7,13.625 3.4166,-3.877 5.31568,-7.3755 6.25,-10.0625 -1.31416,-0.1622 -2.497,-0.7235 -3.40625,-1.5938 -0.63462,0.8653 -1.6677,1.4375 -2.84375,1.4375 -1.933,0 -3.5,-1.5261 -3.5,-3.4062 0,-1.8801 1.567,-3.4063 3.5,-3.4063 0.36776,0 0.72951,0.085 1.0625,0.1875 0.14352,-1.0312 0.55799,-1.956 1.15625,-2.75 -0.72276,-0.259 -1.46314,-0.4062 -2.21875,-0.4062 z"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path6764"
d="m 185.57143,978.21934 c -2.76142,0 -5,2.2386 -5,5 0,2.7615 2.23858,5 5,5 2.76142,0 5,-2.2385 5,-5 0,-2.7614 -2.23858,-5 -5,-5 z m -1.81818,2.2727 1.81818,1.8182 1.81818,-1.8182 0.90909,0.9091 -1.81818,1.8182 1.81818,1.8182 -0.90909,0.9091 -1.81818,-1.8182 -1.81818,1.8182 -0.90909,-0.9091 1.81818,-1.8182 -1.81818,-1.8182 0.90909,-0.9091 z"
style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#999999;stroke-opacity:1;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 10.1875,1017.3622 0,0.5 0,3 0,0.5 0.5,0 1.3125,0 -1.59375,14 -1.71875,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5938 c 0,0 13.716518,-10.9062 13.71875,-10.9062 l 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.8125 -10,-3.5938 0,-2.2187 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z m -16,13 2,0 0,2 -2,0 z"
id="rect4058-1-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccc" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 18,1043.3622 -3.5,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5937 10,-0.6875 0,1.2812 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -1.15625,0 -2.4375,-8 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.6875,0 c 0,3 0,3 0,3 0,0 -7.8125,10 -8,10 z m 9.1875,-12 2,0 0,2 -2,0 z m 1.8125,12 2,0 0,2 -2,0 z m -14,1 c 2,0 0,0 2,0 l 0,2 -2,0 z"
id="rect4058-1-2-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccc" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 51,1020.3622 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-0.3438 10,4 0,1.3438 0,0.4375 1.09375,0.062 2.40625,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.5625 -10,-4 0,-1.5625 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z"
id="rect4058-9"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccc" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 55.09375,1030.5184 0,1.3438 0,0.4375 7.09375,11.0625 2.40625,0 0.5,0 0,0.5 0,3 0,0.5 -0.5,0 -3,0 -0.5,0 0,-0.5 0,-3 0,-0.375 -7.09375,-11.125 -2.40625,0 -0.5,0 0,-0.5 0,-3 0,-0.5 0.5,0 3,0 0.5,0 0,0.5 0,0.5625 z m -1,-1.1562 -2,0 0,2 2,0 z m 10,15 -2,0 0,2 2,0 z"
id="rect4058-9-5"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" />
<g
transform="matrix(0.30998724,0,0,0.31293167,40.532594,935.93484)"
id="g5939"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none">
<ellipse
cx="62.837002"
cy="23.440001"
rx="32.162998"
ry="9.2799997"
id="ellipse5941"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 62.839,50.482 c -17.766,0 -32.163,-4.154 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.052 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.069 32.135,-9.121 l 0.028,0 0,-11.832 c -0.021,5.123 -14.413,9.27 -32.161,9.27 z"
id="path5943"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 95,41.189 0,-0.146 -0.026,0 C 94.978,41.092 95,41.141 95,41.189 Z"
id="path5945"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 62.839,64.884 c -17.766,0 -32.163,-4.155 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.053 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.068 32.135,-9.121 l 0.028,0 0,-11.833 c -0.021,5.123 -14.413,9.271 -32.161,9.271 z"
id="path5947"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 95,55.59 0,-0.146 -0.026,0 C 94.978,55.492 95,55.542 95,55.59 Z"
id="path5949"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 62.839,79.285 c -17.766,0 -32.163,-4.154 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.052 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.069 32.135,-9.121 l 0.028,0 0,-11.832 c -0.021,5.123 -14.413,9.27 -32.161,9.27 z"
id="path5951"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 95,69.992 0,-0.146 -0.026,0 C 94.978,69.895 95,69.943 95,69.992 Z"
id="path5953"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 62.839,35.762 c -17.766,0 -32.163,-4.154 -32.163,-9.281 0,-0.057 0.024,-0.105 0.028,-0.161 l -0.03,0 0,12 0.028,0 c 0.298,5.052 14.555,9.125 32.135,9.125 17.576,0 31.837,-4.073 32.135,-9.125 l 0.028,0 0,-11.828 c -0.021,5.119 -14.413,9.27 -32.161,9.27 z"
id="path5955"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
d="m 95,26.469 0,-0.149 -0.026,0 C 94.978,26.371 95,26.42 95,26.469 Z"
id="path5957"
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-opacity:1;stroke-width:0.80268166;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
style="fill:#f2f2f2;fill-opacity:1;stroke:#999999;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 100.125,1044.2372 c 6.62742,0 12,-5.3726 12,-12 0,-6.6274 -5.37258,-12 -12,-12 -6.62742,0 -12,5.3726 -12,12 0,6.6274 5.37258,12 12,12 z m 0,-5 -7,-7 h 5 v -6 h 4 v 6 h 5 z"
id="path4700-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

BIN
umap/static/umap/img/24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

461
umap/static/umap/img/24.svg Normal file
View file

@ -0,0 +1,461 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="200"
height="200"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="24.svg"
inkscape:export-filename="/home/ybon/Code/js/Leaflet.Storage/src/img/24.png"
inkscape:export-xdpi="89.996864"
inkscape:export-ydpi="89.996864">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.678384"
inkscape:cx="65.861168"
inkscape:cy="104.42429"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="3840"
inkscape:window-height="2031"
inkscape:window-x="0"
inkscape:window-y="55"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid3004"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="1,0"
position="80,112"
id="guide3084" />
<sodipodi:guide
orientation="0,1"
position="0,40"
id="guide3086" />
<sodipodi:guide
orientation="1,0"
position="40,104"
id="guide3088" />
<sodipodi:guide
orientation="0,1"
position="0,80"
id="guide3090" />
<sodipodi:guide
orientation="1,0"
position="120,84"
id="guide3512" />
<sodipodi:guide
orientation="1,0"
position="160,84"
id="guide3872" />
<sodipodi:guide
orientation="0,1"
position="0,120"
id="guide25561" />
<sodipodi:guide
orientation="0,1"
position="-12,160"
id="guide25563" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-852.36218)">
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="m 26,861.36218 -2,2 4,4 2,-2 z m -3,3 -11,11 4,4 11,-11 z m -11,11 -3,7 7,-3 z"
id="path3684"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="13.786797"
y="953.80786"
id="text4457"
sodipodi:linespacing="125%"><tspan
y="953.80786"
x="13.786797"
sodipodi:role="line"
id="tspan4459" /></text>
<path
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 58,862.36216 0,2 c -2,0 -4,0 -5,2 l 0,1 14,0 0,-1 c -1,-2 -3,-2 -5,-2 l 0,-2 z m -5,6 3,14.00002 8,0 3,-14.00002 z"
id="delete-30"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccc"
inkscape:label="delete-30" />
<g
id="g3505"
transform="translate(-41.170559,-15.03125)">
<path
sodipodi:nodetypes="ccccccccccccccccccccccccccccc"
inkscape:connector-curvature="0"
id="rect4452"
d="m 47.999998,965.36218 3.000002,0 0,8 2,0 0,-8 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,5 1,0 0,-5 2,0 0,8 2,0 0,-8 3,0 0,11 -24,0 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<text
sodipodi:linespacing="125%"
id="text4455"
y="964.36218"
x="49.170559"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
style="font-size:8px;font-weight:bold;fill:#4d4d4d;fill-opacity:1;-inkscape-font-specification:Sans Bold"
y="964.36218"
x="49.170559"
id="tspan4457"
sodipodi:role="line">0</tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sans"
x="65.048965"
y="964.36218"
id="text4459"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4461"
x="65.048965"
y="964.36218"
style="font-size:8px;font-weight:bold;fill:#4d4d4d;fill-opacity:1;-inkscape-font-specification:Sans Bold">1</tspan></text>
</g>
<g
id="g3702"
transform="translate(16.000002,8.0000032)">
<circle
transform="matrix(0.02040816,0,0,0.02040816,74,934.36218)"
id="circle3841"
r="440"
cy="490"
cx="490"
sodipodi:cx="490"
sodipodi:cy="490"
sodipodi:rx="440"
sodipodi:ry="440"
style="fill:none;stroke:#4d4d4d;stroke-width:100;stroke-opacity:1" />
<path
style="fill:#4d4d4d;fill-opacity:1"
id="path3843"
d="m 83.918365,938.74993 c -2.653058,0 -4.877549,1.85717 -5.448974,4.34692 l 2.673466,0 c 0.489792,-1.06125 1.551017,-1.79592 2.775508,-1.79592 1.693875,0 3.061225,1.36734 3.061225,3.06125 0,1.69384 -1.36735,3.06117 -3.061225,3.06117 -1.224491,0 -2.285716,-0.73467 -2.775508,-1.7755 l -2.673466,0 c 0.571425,2.46942 2.795916,4.32658 5.448974,4.32658 3.102041,0 5.612241,-2.51025 5.612241,-5.61225 0,-3.10208 -2.5102,-5.61225 -5.612241,-5.61225 z"
inkscape:connector-curvature="0" />
</g>
<g
id="g3692"
transform="translate(72,8.0001016)">
<path
sodipodi:nodetypes="sccccsssccs"
inkscape:connector-curvature="0"
id="rect2985"
d="m 105.25387,934.36268 c -3.17753,0 -6.346004,2.1278 -7.25387,6.3794 0,2.551 1.806672,7.6679 7.25387,13.6201 1.46368,-1.5994 2.66945,-3.1177 3.64397,-4.5613 -1.4505,-2.1639 -2.41497,-4.0873 -2.96285,-5.7095 -0.22599,0.041 -0.44225,0.063 -0.68112,0.063 -2.0056,0 -3.64396,-1.5346 -3.64396,-3.413 0,-1.8785 1.63836,-3.3811 3.64396,-3.3811 0.51205,0 0.98854,0.076 1.43034,0.2552 0.64347,-0.9222 1.4345,-1.6571 2.31579,-2.169 -1.14444,-0.7114 -2.44633,-1.0845 -3.74613,-1.0845 z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none" />
<path
id="path3378"
d="m 111,934.36218 c -3.0625,0 -6.125,2.1277 -7,6.383 0,2.5532 1.75,7.6596 7,13.617 5.25,-5.9574 7,-11.0638 7,-13.617 -0.875,-4.2553 -3.9375,-6.383 -7,-6.383 z m 0,2.9788 c 1.933,0 3.5,1.5241 3.5,3.4042 0,1.8801 -1.567,3.4043 -3.5,3.4043 -1.93299,0 -3.5,-1.5242 -3.5,-3.4043 0,-1.8801 1.56701,-3.4042 3.5,-3.4042 z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
</g>
<g
id="g25565"
transform="translate(88.000001,-96.00002)">
<path
sodipodi:nodetypes="ccccccc"
id="rect7231"
d="m 11.999999,957.36218 c -7.3730698,6.5006 -6.8762698,2.8816 -11.9999998343861,5 l 0,2 11.9999998343861,6 12,-6 0,-2 c -7.38473,-0.182 -5.29117,-2.2182 -12,-5 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="rect7902"
d="M -8.343861e-7,971.36218 11.999999,977.3622 l 12,-6.00002 0,2 -12,6.00002 L -8.343861e-7,973.36218 z"
style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m -8.343861e-7,968.36218 11.9999998343861,6 12,-6 0,2 -12,6.00002 L -8.343861e-7,970.36218 z"
id="path7953"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path7955"
d="m -8.343861e-7,965.36218 11.9999998343861,6 12,-6 0,2 -12,6 -11.9999998343861,-6 z"
style="fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="m 180,900.61217 c -3.5,0 -7,2.5 -8,7.5 0,3 2,9 8,16 6,-7 8,-13 8,-16 -1,-5 -4.5,-7.5 -8,-7.5 z m 0,3.5 c 2.20914,0 4,1.79086 4,4 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 z"
id="rect2985-3" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 131,900.36217 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-0.34375 10,4 0,1.34375 0,0.4375 -7.09375,11.0625 -2.40625,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.375 7.09375,-11.125 2.40625,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.5625 -10,-4 0,-1.5625 0,-0.5 -0.5,0 -3,0 -0.5,0 z m 1,1 2,0 0,2 -2,0 0,-2 z m 14,5 2,0 0,2 -2,0 0,-2 z m -10,15 2,0 0,2 -2,0 0,-2 z"
id="rect4058" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 92,901.36217 0,0.5 0,3 0,0.5 0.5,0 1.3125,0 -1.59375,14 -1.71875,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5937 10,-0.6875 0,1.2812 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -1.15625,0 1.375,-8 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.8125 -10,-3.5937 0,-2.2188 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z m -2,12 2,0 0,2 -2,0 z m -14,1 c 2,0 0,0 2,0 l 0,2 -2,0 z"
id="rect4058-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
<g
transform="matrix(0.2444191,0,0,0.2444191,127.75289,860.16787)"
id="Layer_1" />
<g
transform="matrix(0.2444191,0,0,0.2444191,127.75289,860.16787)"
id="Isolation_Mode"
style="fill:#4d4d4d;fill-opacity:1">
<path
inkscape:connector-curvature="0"
d="M 98.762,43.652 C 98.576,42.266 97.281,41.07 95.886,40.993 l -6.172,-0.337 c -1.395,-0.076 -2.899,-1.224 -3.341,-2.55 l -2.28,-5.518 c -0.629,-1.249 -0.379,-3.121 0.553,-4.161 l 4.122,-4.6 c 0.933,-1.042 0.962,-2.77 0.066,-3.842 l -8.813,-8.813 c -1.073,-0.897 -2.803,-0.867 -3.845,0.065 l -4.598,4.122 c -1.039,0.934 -2.915,1.182 -4.161,0.551 l -5.521,-2.279 c -1.324,-0.442 -2.472,-1.945 -2.549,-3.34 L 59.01,4.121 C 58.933,2.725 57.738,1.43 56.351,1.243 c 0,0 -3.252,-0.44 -6.248,-0.44 -2.991,0 -6.243,0.44 -6.243,0.44 -1.386,0.188 -2.582,1.483 -2.658,2.878 l -0.338,6.17 c -0.076,1.396 -1.224,2.898 -2.551,3.34 l -5.517,2.279 c -1.249,0.631 -3.122,0.382 -4.161,-0.551 l -4.601,-4.122 c -1.042,-0.932 -2.769,-0.962 -3.842,-0.065 l -8.813,8.813 c -0.897,1.073 -0.867,2.801 0.066,3.842 l 4.122,4.6 c 0.933,1.041 1.182,2.913 0.551,4.161 l -2.279,5.518 c -0.442,1.326 -1.946,2.474 -3.34,2.55 l -6.17,0.337 c -1.396,0.077 -2.691,1.272 -2.879,2.659 0,0 -0.439,3.253 -0.439,6.243 0,2.99 0.44,6.24 0.44,6.24 0.188,1.389 1.483,2.582 2.879,2.659 l 6.169,0.339 c 1.396,0.075 2.898,1.225 3.341,2.549 l 2.278,5.517 c 0.631,1.248 0.381,3.122 -0.551,4.163 l -4.122,4.598 c -0.933,1.042 -0.963,2.771 -0.066,3.845 l 8.814,8.813 c 1.073,0.896 2.801,0.866 3.842,-0.066 l 4.6,-4.122 c 1.041,-0.932 2.913,-1.182 4.161,-0.553 l 5.517,2.28 c 1.327,0.441 2.475,1.946 2.55,3.343 l 0.338,6.168 c 0.076,1.395 1.272,2.692 2.658,2.88 0,0 3.252,0.439 6.244,0.439 2.996,0 6.25,-0.439 6.25,-0.439 1.385,-0.188 2.58,-1.485 2.657,-2.88 L 59.347,89.5 c 0.077,-1.396 1.225,-2.901 2.551,-3.343 l 5.517,-2.28 c 1.248,-0.629 3.122,-0.379 4.163,0.553 l 4.598,4.122 c 1.042,0.933 2.771,0.964 3.843,0.067 l 8.815,-8.814 C 89.73,78.732 89.7,77.002 88.768,75.96 l -4.122,-4.598 c -0.932,-1.041 -1.182,-2.915 -0.553,-4.163 l 2.28,-5.517 c 0.441,-1.324 1.946,-2.474 3.341,-2.549 l 6.172,-0.339 c 1.395,-0.077 2.692,-1.271 2.876,-2.659 0,0 0.441,-3.25 0.441,-6.24 0,-2.99 -0.441,-6.243 -0.441,-6.243 z M 50.104,62.361 c -6.886,0 -12.468,-5.585 -12.468,-12.467 0,-6.885 5.582,-12.467 12.468,-12.467 6.89,0 12.475,5.582 12.475,12.467 -10e-4,6.882 -5.586,12.467 -12.475,12.467 z"
id="path27812"
style="fill:#4d4d4d;fill-opacity:1" />
</g>
<path
style="fill:#464646;fill-opacity:1;stroke:none"
d="m 180,860.36218 c -6.62742,0 -12,5.37258 -12,12 0,6.62742 5.37258,12 12,12 6.62742,0 12,-5.37258 12,-12 0,-6.62742 -5.37258,-12 -12,-12 z m 0,5 7,7 -5,0 0,6 -4,0 0,-6 -5,0 z"
id="path4700"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscccccccc" />
<polygon
points="37.37,62.644 37.37,90.703 28.965,82.305 11.27,100 0,88.737 17.702,71.042 9.297,62.644 "
id="polygon3044"
transform="matrix(0.24,0,0,0.24,8,900.36218)"
style="fill:#4d4d4d;fill-opacity:1" />
<polygon
points="71.042,17.708 62.644,9.31 62.644,37.357 90.71,37.37 82.298,28.958 100,11.263 88.743,0 "
id="polygon3048"
transform="matrix(0.24,0,0,0.24,8,900.36218)"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 20,909.43106 c -1.618801,0 -2.93112,1.31256 -2.93112,2.93112 0,1.62192 1.31256,2.93448 2.93112,2.93448 1.6188,0 2.9328,-1.31256 2.9328,-2.93448 0,-1.6188 -1.314,-2.93112 -2.9328,-2.93112 z"
id="path3052"
style="fill:#4d4d4d;fill-opacity:1" />
<path
d="M 52.09375 54 C 48.729514 53.992 46.007497 56.6898 46 60 C 46.0075 63.31752 48.729514 65.99461 52.09375 66 C 54.336949 65.996659 56.291025 64.786304 57.34375 63 L 59.8125 63 L 61.78125 61.09375 L 63.28125 62.53125 L 64.71875 61.125 L 66.1875 62.5625 L 67.6875 61.125 L 69.15625 62.5625 L 71.71875 60.09375 C 72.087686 59.71854 72.096762 59.4354 71.71875 59.0625 L 69.625 57 L 57.375 57 C 56.327602 55.196673 54.352273 53.995338 52.09375 54 z M 49.4375 58.375 C 50.321767 58.371 51.024542 59.08352 51.03125 59.96875 C 51.02495 60.84166 50.322161 61.55442 49.4375 61.5625 C 48.538239 61.5535 47.804214 60.84166 47.8125 59.96875 C 47.8043 59.08352 48.538239 58.37077 49.4375 58.375 z "
transform="translate(0,852.36218)"
id="path3652"
style="fill:#4d4d4d;fill-opacity:1" />
<polygon
points="0,50 12.5,50 12.5,87.5 43.75,87.5 43.75,62.5 56.25,62.5 56.25,87.5 87.5,87.5 87.5,50 100,50 50,0 "
id="polygon3866"
transform="matrix(0.24,0,0,0.24,128,941.86218)"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 32.000004,992.36245 c 0,-0.45066 -0.02933,-0.89466 -0.07867,-1.33333 l -1.348,0 c -0.601333,-4.82267 -4.417333,-8.63867 -9.24,-9.24133 v -1.34667 c -0.438667,-0.0493 -0.882667,-0.0787 -1.333333,-0.0787 -0.450667,0 -0.894667,0.0293 -1.333333,0.0787 v 1.348 c -4.822667,0.60133 -8.638667,4.41733 -9.2413342,9.24 l -1.3466668,0 C 8.029334,991.46779 8,991.91179 8,992.36245 c 0,0.45067 0.029333,0.89467 0.078667,1.33334 h 1.3480008 c 0.6013332,4.82266 4.4173332,8.63871 9.2400002,9.24141 v 1.348 c 0.438666,0.048 0.882666,0.077 1.333333,0.077 0.450666,0 0.894666,-0.029 1.333333,-0.079 v -1.348 c 4.821333,-0.6026 8.638667,-4.41735 9.241333,-9.24001 h 1.348 c 0.048,-0.43734 0.07733,-0.88134 0.07733,-1.33334 z m -10.666667,7.88005 v -1.21338 c 0,-0.73733 -0.597333,-1.33333 -1.333333,-1.33333 -0.736,0 -1.333333,0.596 -1.333333,1.33333 v 1.21338 c -3.346667,-0.56271 -5.982667,-3.19738 -6.545334,-6.54538 l 1.212,-0.001 c 0.737334,0 1.333334,-0.59734 1.333334,-1.33334 0,-0.736 -0.596,-1.33333 -1.333334,-1.33333 h -1.213333 c 0.564,-3.34667 3.2,-5.98267 6.546667,-6.54667 v 1.21334 c 0,0.736 0.597333,1.33333 1.333333,1.33333 0.736,0 1.333333,-0.59733 1.333333,-1.33333 v -1.21334 c 3.348,0.56267 5.984,3.19867 6.546667,6.54667 H 26.66667 c -0.737333,0 -1.333333,0.59733 -1.333333,1.33333 0,0.736 0.596,1.33334 1.333333,1.33334 l 1.213334,0.001 c -0.564,3.348 -3.198667,5.98267 -6.546667,6.54538 z"
id="path4611"
style="fill:#4d4d4d;fill-opacity:1" />
<g
id="g4758"
transform="translate(36.000001,-11.999806)">
<path
transform="matrix(1.3996164,0,0,1.3996164,46.585677,990.77388)"
d="M 20.301507,9.7085428 A 7.8592963,7.8592963 0 0 1 12.442211,17.567839 7.8592963,7.8592963 0 0 1 4.5829148,9.7085428 7.8592963,7.8592963 0 0 1 12.442211,1.8492465 7.8592963,7.8592963 0 0 1 20.301507,9.7085428 Z"
sodipodi:ry="7.8592963"
sodipodi:rx="7.8592963"
sodipodi:cy="9.7085428"
sodipodi:cx="12.442211"
id="path4309"
style="fill:none;stroke:#464646;stroke-width:1.42896295;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,44.942766,1049.7278)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,37.400316,1044.6618)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819-2"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
transform="matrix(-1.5942497,-3.9814712,3.9814712,-1.5942497,45.211124,1039.6862)"
d="M 7.4773872,8.0603018 A 0.58291459,0.58291459 0 0 1 6.8944726,8.6432164 0.58291459,0.58291459 0 0 1 6.311558,8.0603018 0.58291459,0.58291459 0 0 1 6.8944726,7.4773872 0.58291459,0.58291459 0 0 1 7.4773872,8.0603018 Z"
sodipodi:ry="0.58291459"
sodipodi:rx="0.58291459"
sodipodi:cy="8.0603018"
sodipodi:cx="6.8944726"
id="path4819-0"
style="fill:#464646;fill-opacity:1;stroke:none"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path4850"
d="m 66.386295,999.47498 -8.019134,4.91992 8.13935,5.3224"
style="fill:none;stroke:#464646;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<path
inkscape:connector-curvature="0"
id="search"
d="m 72,1001.1668 -6.436799,-6.4386 c 0.866371,-1.42919 1.374087,-3.10412 1.374087,-4.89829 0,-5.23345 -4.235188,-9.47135 -9.468644,-9.47316 C 52.238801,980.35875 48,984.59646 48,989.82901 c 0,5.22894 4.239705,9.46687 9.471354,9.46687 1.795077,0 3.467289,-0.50773 4.896485,-1.3741 l 6.440412,6.44042 L 72,1001.1668 z M 51.612738,989.82901 c 0.0054,-3.23602 2.6226,-5.8532 5.857713,-5.85862 3.234209,0.007 5.852292,2.6226 5.857713,5.85862 -0.0063,3.2333 -2.623504,5.85231 -5.857713,5.85683 -3.236016,0 -5.853196,-2.62353 -5.857713,-5.85683 z"
style="fill:#4d4d4d;fill-opacity:1" />
<g
id="g13779"
transform="translate(0.8783882,0.74457185)">
<g
inkscape:export-ydpi="28.799999"
inkscape:export-xdpi="28.799999"
inkscape:export-filename="/home/ybon/Work/osmtouch64.png"
id="g4200"
transform="matrix(0.15420392,0,0,0.15420392,123.6912,976.19847)">
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="M 128.96875,25.03125 C 116.4464,25.02855 103.92273,29.677098 94.375,38.96875 77.24854,55.63759 76.65542,83.22095 90.25,101.8125 L 77.03125,114.25 c 0.14747,0.11709 9,8.5625 9,8.5625 l 12.5,-12.25 c 21.41449,14.9813 47.90478,12.41882 65.03125,-4.25 19.09544,-18.58519 19.09526,-48.75856 0,-67.34375 -9.54772,-9.292593 -22.0714,-13.93479 -34.59375,-13.9375 z m 0,7.9375 c 10.43487,0.0027 20.85607,3.880217 28.8125,11.625 15.91286,15.48761 15.94433,40.63733 0.0312,56.125 -15.91287,15.48766 -41.77464,15.48761 -57.6875,0 -15.912892,-15.48767 -15.912892,-40.63734 0,-56.125 7.95643,-7.743803 18.40888,-11.627705 28.84375,-11.625 z"
id="path4189"
inkscape:connector-curvature="0" />
<path
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
d="m 63.879368,116.05569 -39.21875,37.9375 c -3.223956,3.12021 -3.215175,8.18323 0,11.3125 l 8.96875,8.71875 c 3.215174,3.12926 8.369796,3.12021 11.59375,0 l 39.21875,-37.9375 c 3.22396,-3.12021 3.21518,-8.18324 0,-11.3125 l -8.96875,-8.71875 c -3.48388,-3.074 -8.57545,-2.83371 -11.59375,0 z"
id="path4169"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:export-ydpi="28.799999"
inkscape:export-xdpi="28.799999"
inkscape:export-filename="/home/ybon/Work/osmtouch64.png"
d="m 136.26913,998.21967 c -1.72863,1.6788 -1.93723,1.87263 -3.54806,3.46653 l 4.95517,-1.1486 c 0.14934,-0.65943 0.32405,-1.47613 0.3714,-1.66783 -0.78224,-0.026 -1.22826,-0.2704 -1.77851,-0.6501 z m 5.35377,-1.9131 c -0.18365,2.1461 -1.13564,2.3061 -2.93951,2.5878 -0.12852,0.5649 -0.21541,0.9577 -0.36624,1.62393 l 4.62612,1.1276 c 0.62063,-2.60243 1.11924,-4.71073 1.10834,-4.72243 -0.0163,-0.017 -1.23829,-0.3245 -2.42871,-0.6169 z m -2.2215,-0.5252 c -0.006,0.01 -0.26454,1.1303 -0.59754,2.5925 2.113,-0.3337 2.1769,-1.0052 2.24078,-2.207 -0.86704,-0.2111 -1.63385,-0.3935 -1.64324,-0.3855 z m -0.62164,-0.034 c -0.51393,0.043 -0.7713,0.095 -1.33482,0.2505 0.18112,0.3385 0.26544,1.0343 -0.75604,1.847 0.53504,0.3261 1.00256,0.4526 1.47405,0.5095 0.43221,-1.9749 0.65371,-2.2826 0.61681,-2.6071 z m -10.11963,-0.024 -0.89631,3.4985 3.04553,-2.9636 c -0.68349,-0.1707 -1.30768,-0.3263 -2.14922,-0.5349 z m 21.21268,-0.1205 c -2.83532,0.7227 -5.14796,1.32 -5.15619,1.33 -0.007,0.01 -0.51887,2.1316 -1.1469,4.75143 l 5.055,-1.2336 z m -8.24991,-0.7325 0,0.7855 c 1.04505,0.2593 2.11678,0.518 2.33715,0.5204 0,0 -0.117,-0.4693 -0.2554,-1.0505 -0.003,0 -0.006,0 -0.01,0 -0.90225,0.023 -1.21656,-0.03 -2.07211,-0.2554 z m -2.56846,-1.171 -0.01,0.01 0.37105,1.4312 c 0.0872,-0.01 0.81259,0.1734 1.62878,0.3758 9e-5,-0.3205 6.2e-4,-0.5828 0.005,-0.8143 -0.69971,-0.2361 -1.37206,-0.5709 -1.99501,-1.0024 z m -10.83283,-0.4626 0.49635,1.8553 c 0,0 1.37566,0.3324 2.63592,0.6361 l 0.14457,-0.1398 c -1.8692,-0.6628 -1.89514,-2.0501 -3.27684,-2.3516 z m 21.08739,-0.4144 c -1.86844,1.552 -2.86815,1.9475 -4.96826,2.2793 0.12835,0.5155 0.24073,0.9576 0.27468,1.0602 0.0287,0.087 1.76628,-0.3099 5.24775,-1.1903 z m -12.12428,-0.9445 c -0.23088,-0.3157 -0.43555,-0.6442 -0.612,-0.9831 -1.36011,0.296 -3.60183,0.8253 -3.66716,0.8819 -0.0276,0.024 0.17181,0.9075 0.44815,2.0047 0.67591,-0.6232 1.45236,-0.5109 1.96721,-0.1653 m 1.91729,1.8404 c 0.47244,-0.158 1.12276,-0.2812 1.53673,-0.3307 -0.0519,-0.3724 -0.0877,-0.6071 -0.23612,-0.9927 m -11.00149,-3.6479 0.49635,1.9613 c 2.50401,0.9496 2.69056,2.8506 4.03339,2.5878 l 0.86258,-0.8385 c -0.26762,-1.1089 -0.5801,-2.2764 -0.65536,-2.3516 -0.0174,-0.017 -4.73696,-1.359 -4.73696,-1.359 z m 8.26437,-4.2309 -1.67697,0.4144 c -0.35276,1.4788 -0.8278,3.3283 -1.11316,4.4237 1.37526,-0.3807 1.74872,-0.4606 3.29611,-0.771 -0.54316,-1.295 -0.7139,-2.7021 -0.50598,-4.0671 z m -7.08374,-1.0602 -1.18544,4.6358 c 1.82562,0.517 2.88589,0.8108 4.73213,1.2432 0.38982,-1.204 0.82942,-2.5341 1.14689,-4.443 -1.23121,-0.383 -1.96932,-0.6187 -4.69358,-1.436 z m 8.886,-5.2477 -4.61166,1.1228 c 0.65055,2.8245 1.12699,4.8412 1.15653,4.8718 0.0283,0.029 0.85135,-0.1466 1.7878,-0.3614 0.44052,-1.7435 0.82365,-2.3477 2.12994,-3.6719 -0.14019,-0.6014 -0.29567,-1.2597 -0.46261,-1.9613 z m 0.61681,-0.063 c 0.19042,0.7975 0.20798,0.855 0.37588,1.5565 0.53081,-0.4268 1.10819,-0.7739 1.7107,-1.0457 z m -10.77981,0 1.20471,4.6358 c 2.64567,0.7792 4.75728,1.3919 4.77069,1.3782 0.0142,-0.015 -0.46615,-2.1739 -1.06979,-4.8574 z m 21.18376,-0.043 -1.8649,0.4529 c 0.85846,0.3551 1.66426,0.8652 2.3757,1.5276 z m -10.27066,8.6587 c 0.41381,2.527 3.18363,4.4267 6.07178,4.112 1.0773,-2.5454 1.8315,-2.422 2.24706,-4.9716 0.0167,-2.2665 -2.96358,-0.8684 -4.31818,-0.7964 -2.32675,-0.074 -2.21097,-2.8133 -2.46342,-3.2185 -0.71838,0.5281 -1.97222,2.1788 -1.53724,4.8745 z m 2.65684,-5.7481 c 0.75831,2.395 0.92104,3.2135 3.33948,2.2745 1.81917,-0.5274 3.26924,0.1901 3.50475,1.0508 0.38584,1.2833 -0.24196,3.1638 -1.92416,6.0907 2.63491,-1.4075 3.4684,-4.4853 2.52192,-6.8474 -1.28937,-2.6947 -4.29141,-4.0352 -7.44199,-2.5686 z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
id="path5801"
inkscape:connector-curvature="0" />
</g>
<g
id="g7291"
transform="translate(0,3.6429698)">
<path
id="path3378-6"
d="m 178.57143,979.21934 c -3.0625,0 -6.125,2.1197 -7,6.375 0,2.5532 1.75,7.6676 7,13.625 3.4166,-3.877 5.31568,-7.3755 6.25,-10.0625 -1.31416,-0.1622 -2.497,-0.7235 -3.40625,-1.5938 -0.63462,0.8653 -1.6677,1.4375 -2.84375,1.4375 -1.933,0 -3.5,-1.5261 -3.5,-3.4062 0,-1.8801 1.567,-3.4063 3.5,-3.4063 0.36776,0 0.72951,0.085 1.0625,0.1875 0.14352,-1.0312 0.55799,-1.956 1.15625,-2.75 -0.72276,-0.259 -1.46314,-0.4062 -2.21875,-0.4062 z"
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path6764"
d="m 185.57143,978.21934 c -2.76142,0 -5,2.2386 -5,5 0,2.7615 2.23858,5 5,5 2.76142,0 5,-2.2385 5,-5 0,-2.7614 -2.23858,-5 -5,-5 z m -1.81818,2.2727 1.81818,1.8182 1.81818,-1.8182 0.90909,0.9091 -1.81818,1.8182 1.81818,1.8182 -0.90909,0.9091 -1.81818,-1.8182 -1.81818,1.8182 -0.90909,-0.9091 1.81818,-1.8182 -1.81818,-1.8182 0.90909,-0.9091 z"
style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 10.1875,1017.3622 0,0.5 0,3 0,0.5 0.5,0 1.3125,0 -1.59375,14 -1.71875,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5938 c 0,0 13.716518,-10.9062 13.71875,-10.9062 l 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.8125 -10,-3.5938 0,-2.2187 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z m -16,13 2,0 0,2 -2,0 z"
id="rect4058-1-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccc" />
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 18,1043.3622 -3.5,0 -0.5,0 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-1.5937 10,-0.6875 0,1.2812 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -1.15625,0 -2.4375,-8 1.78125,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.6875,0 c 0,3 0,3 0,3 0,0 -7.8125,10 -8,10 z m 9.1875,-12 2,0 0,2 -2,0 z m 1.8125,12 2,0 0,2 -2,0 z m -14,1 c 2,0 0,0 2,0 l 0,2 -2,0 z"
id="rect4058-1-2-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccc" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 51,1020.3622 0,0.5 0,3 0,0.5 0.5,0 3,0 0.5,0 0,-0.5 0,-0.3438 10,4 0,1.3438 0,0.4375 1.09375,0.062 2.40625,0 0.5,0 0,-0.5 0,-3 0,-0.5 -0.5,0 -3,0 -0.5,0 0,0.5 0,0.5625 -10,-4 0,-1.5625 0,-0.5 -0.5,0 -3,0 z m 1,1 2,0 0,2 -2,0 z m 14,5 2,0 0,2 -2,0 z"
id="rect4058-9"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccc" />
<path
inkscape:connector-curvature="0"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
d="m 55.09375,1030.5184 0,1.3438 0,0.4375 7.09375,11.0625 2.40625,0 0.5,0 0,0.5 0,3 0,0.5 -0.5,0 -3,0 -0.5,0 0,-0.5 0,-3 0,-0.375 -7.09375,-11.125 -2.40625,0 -0.5,0 0,-0.5 0,-3 0,-0.5 0.5,0 3,0 0.5,0 0,0.5 0,0.5625 z m -1,-1.1562 -2,0 0,2 2,0 z m 10,15 -2,0 0,2 2,0 z"
id="rect4058-9-5"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" />
<g
transform="matrix(0.30998724,0,0,0.31293167,40.505808,935.9527)"
id="g5939"
style="fill:#4d4d4d;fill-opacity:1">
<ellipse
cx="62.837002"
cy="23.440001"
rx="32.162998"
ry="9.2799997"
id="ellipse5941"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 62.839,50.482 c -17.766,0 -32.163,-4.154 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.052 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.069 32.135,-9.121 l 0.028,0 0,-11.832 c -0.021,5.123 -14.413,9.27 -32.161,9.27 z"
id="path5943"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 95,41.189 0,-0.146 -0.026,0 C 94.978,41.092 95,41.141 95,41.189 Z"
id="path5945"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 62.839,64.884 c -17.766,0 -32.163,-4.155 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.053 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.068 32.135,-9.121 l 0.028,0 0,-11.833 c -0.021,5.123 -14.413,9.271 -32.161,9.271 z"
id="path5947"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 95,55.59 0,-0.146 -0.026,0 C 94.978,55.492 95,55.542 95,55.59 Z"
id="path5949"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 62.839,79.285 c -17.766,0 -32.163,-4.154 -32.163,-9.282 0,-0.053 0.024,-0.104 0.028,-0.157 l -0.03,0 0,12.001 0.028,0 c 0.298,5.052 14.555,9.121 32.135,9.121 17.576,0 31.837,-4.069 32.135,-9.121 l 0.028,0 0,-11.832 c -0.021,5.123 -14.413,9.27 -32.161,9.27 z"
id="path5951"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 95,69.992 0,-0.146 -0.026,0 C 94.978,69.895 95,69.943 95,69.992 Z"
id="path5953"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 62.839,35.762 c -17.766,0 -32.163,-4.154 -32.163,-9.281 0,-0.057 0.024,-0.105 0.028,-0.161 l -0.03,0 0,12 0.028,0 c 0.298,5.052 14.555,9.125 32.135,9.125 17.576,0 31.837,-4.073 32.135,-9.125 l 0.028,0 0,-11.828 c -0.021,5.119 -14.413,9.27 -32.161,9.27 z"
id="path5955"
style="fill:#4d4d4d;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
d="m 95,26.469 0,-0.149 -0.026,0 C 94.978,26.371 95,26.42 95,26.469 Z"
id="path5957"
style="fill:#4d4d4d;fill-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,4 +1,4 @@
L.S.AutoComplete = L.Class.extend({
L.U.AutoComplete = L.Class.extend({
options: {
placeholder: 'Start typing...',
@ -12,8 +12,10 @@ L.S.AutoComplete = L.Class.extend({
RESULTS: [],
initialize: function (el, options) {
this.el = L.DomUtil.get(el);
L.setOptions(options);
this.el = el;
var ui = new L.U.UI(document.querySelector('header'));
this.xhr = new L.U.Xhr(ui);
L.setOptions(this, options);
var CURRENT = null;
try {
Object.defineProperty(this, 'CURRENT', {
@ -37,9 +39,9 @@ L.S.AutoComplete = L.Class.extend({
this.input = L.DomUtil.element('input', {
type: 'text',
placeholder: this.options.placeholder,
autocomplete: 'off'
});
L.DomUtil.before(this.el, this.input);
autocomplete: 'off',
className: this.options.className
}, this.el);
L.DomEvent.on(this.input, 'keydown', this.onKeyDown, this);
L.DomEvent.on(this.input, 'keyup', this.onKeyUp, this);
L.DomEvent.on(this.input, 'blur', this.onBlur, this);
@ -62,22 +64,19 @@ L.S.AutoComplete = L.Class.extend({
onKeyDown: function (e) {
switch (e.keyCode) {
case L.S.Keys.TAB:
if(this.CURRENT !== null)
{
this.setChoice();
}
case L.U.Keys.TAB:
if(this.CURRENT !== null) this.setChoice();
L.DomEvent.stop(e);
break;
case L.S.Keys.ENTER:
case L.U.Keys.ENTER:
L.DomEvent.stop(e);
this.setChoice();
break;
case L.S.Keys.ESC:
case L.U.Keys.ESC:
L.DomEvent.stop(e);
this.hide();
break;
case L.S.Keys.DOWN:
case L.U.Keys.DOWN:
if(this.RESULTS.length > 0) {
if(this.CURRENT !== null && this.CURRENT < this.RESULTS.length - 1) { // what if one resutl?
this.CURRENT++;
@ -89,7 +88,7 @@ L.S.AutoComplete = L.Class.extend({
}
}
break;
case L.S.Keys.UP:
case L.U.Keys.UP:
if(this.CURRENT !== null) {
L.DomEvent.stop(e);
}
@ -109,16 +108,16 @@ L.S.AutoComplete = L.Class.extend({
onKeyUp: function (e) {
var special = [
L.S.Keys.TAB,
L.S.Keys.ENTER,
L.S.Keys.LEFT,
L.S.Keys.RIGHT,
L.S.Keys.DOWN,
L.S.Keys.UP,
L.S.Keys.APPLE,
L.S.Keys.SHIFT,
L.S.Keys.ALT,
L.S.Keys.CTRL
L.U.Keys.TAB,
L.U.Keys.ENTER,
L.U.Keys.LEFT,
L.U.Keys.RIGHT,
L.U.Keys.DOWN,
L.U.Keys.UP,
L.U.Keys.APPLE,
L.U.Keys.SHIFT,
L.U.Keys.ALT,
L.U.Keys.CTRL
];
if (special.indexOf(e.keyCode) === -1)
{
@ -149,8 +148,8 @@ L.S.AutoComplete = L.Class.extend({
setChoice: function (choice) {
choice = choice || this.RESULTS[this.CURRENT];
if (choice) {
this.input.value = choice.display;
this.select(choice);
this.input.value = choice.item.label;
this.options.on_select(choice);
this.displaySelected(choice);
this.hide();
if (this.options.callback) {
@ -165,26 +164,18 @@ L.S.AutoComplete = L.Class.extend({
this.clear();
return;
}
if(!val) {
this.clear();
return;
}
if( val + '' === this.CACHE + '') {
return;
}
else {
this.CACHE = val;
}
var results = this._do_search(val);
return this.handleResults(results);
if( val + '' === this.CACHE + '') return;
else this.CACHE = val;
this._do_search(val, (data) => {
this.handleResults(data.data);
});
},
createResult: function (item) {
var el = L.DomUtil.element('li', {}, this.container);
el.innerHTML = item.display;
el.innerHTML = item.label;
var result = {
value: item.value,
display: item.display,
item: item,
el: el
};
L.DomEvent.on(el, 'mouseover', function () {
@ -223,12 +214,12 @@ L.S.AutoComplete = L.Class.extend({
highlight: function () {
var self = this;
this.forEach(this.RESULTS, function (item, index) {
this.forEach(this.RESULTS, function (result, index) {
if (index === self.CURRENT) {
L.DomUtil.addClass(item.el, 'on');
L.DomUtil.addClass(result.el, 'on');
}
else {
L.DomUtil.removeClass(item.el, 'on');
L.DomUtil.removeClass(result.el, 'on');
}
});
},
@ -260,114 +251,69 @@ L.S.AutoComplete = L.Class.extend({
});
L.S.AutoComplete.BaseSelect = L.S.AutoComplete.extend({
L.U.AutoComplete.Ajax = L.U.AutoComplete.extend({
initialize: function (el, options) {
L.S.AutoComplete.prototype.initialize.call(this, el, options);
L.U.AutoComplete.prototype.initialize.call(this, el, options);
if (!this.el) return this;
this.el.style.display = 'none';
this.createInput();
this.createContainer();
this.initSelectedContainer();
this.selected_container = this.initSelectedContainer();
},
optionToResult: function (option) {
return {
value: option.value,
display: option.innerHTML
label: option.innerHTML
};
},
_do_search: function (val) {
var results = [],
self = this,
count = 0;
_do_search: function (val, callback) {
val = val.toLowerCase();
this.forEach(this.el, function (item) {
var candidate = item.innerHTML.toLowerCase();
if (candidate === val || (candidate.indexOf(val) !== -1 && !item.selected && count < self.options.maxResults)) {
results.push(self.optionToResult(item));
count++;
}
});
return results;
},
select: function (option) {
this.forEach(this.el, function (item) {
if (item.value == option.value) {
item.selected = true;
}
});
},
unselect: function (option) {
this.forEach(this.el, function (item) {
if (item.value == option.value) {
item.selected = false;
}
});
this.xhr.get('/agnocomplete/AutocompleteUser/?q=' + encodeURIComponent(val), {callback: callback});
}
});
L.S.AutoComplete.MultiSelect = L.S.AutoComplete.BaseSelect.extend({
L.U.AutoComplete.Ajax.SelectMultiple = L.U.AutoComplete.Ajax.extend({
initSelectedContainer: function () {
this.selected_container = L.DomUtil.after(this.input, L.DomUtil.element('ul', {className: 'umap-multiresult'}));
var self = this;
this.forEach(this.el, function (option) {
if (option.selected) {
self.displaySelected(self.optionToResult(option));
}
});
return L.DomUtil.after(this.input, L.DomUtil.element('ul', {className: 'umap-multiresult'}));
},
displaySelected: function (result) {
var result_el = L.DomUtil.element('li', {}, this.selected_container);
result_el.innerHTML = result.display;
result_el.innerHTML = result.item.label;
var close = L.DomUtil.element('span', {className: 'close'}, result_el);
close.innerHTML = '×';
L.DomEvent.on(close, 'click', function () {
this.selected_container.removeChild(result_el);
this.unselect(result);
this.options.on_unselect(result);
}, this);
this.hide();
}
});
L.S.AutoComplete.multiSelect = function (el, options) {
return new L.S.AutoComplete.MultiSelect(el, options);
};
L.S.AutoComplete.Select = L.S.AutoComplete.BaseSelect.extend({
L.U.AutoComplete.Ajax.Select = L.U.AutoComplete.Ajax.extend({
initSelectedContainer: function () {
this.selected_container = L.DomUtil.after(this.input, L.DomUtil.element('div', {className: 'umap-singleresult'}));
var self = this;
if (this.el.selectedIndex !== -1 && this.el[this.el.selectedIndex].value !== '') {
self.displaySelected(self.optionToResult(this.el[this.el.selectedIndex]));
}
return L.DomUtil.after(this.input, L.DomUtil.element('div', {className: 'umap-singleresult'}));
},
displaySelected: function (result) {
var result_el = L.DomUtil.element('div', {}, this.selected_container);
result_el.innerHTML = result.display;
result_el.innerHTML = result.item.label;
var close = L.DomUtil.element('span', {className: 'close'}, result_el);
close.innerHTML = '×';
this.input.style.display = 'none';
L.DomEvent.on(close, 'click', function () {
this.selected_container.innerHTML = '';
this.unselect(result);
this.options.on_unselect(result);
this.input.style.display = 'block';
}, this);
this.hide();
}
});
L.S.AutoComplete.select = function (el, options) {
return new L.S.AutoComplete.Select(el, options);
};

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,520 @@
/* Poor man pub/sub handler, enough for now */
L.UmapSingleton = L.Evented.extend({});
L.U = new L.UmapSingleton();
L.U.Map = L.Map.extend({});
/*
* Utils
*/
L.Util.queryString = function (name, fallback) {
var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, ' ')); };
var qs = window.location.search.slice(1).split('&'), qa = {};
for (var i in qs) {
var key = qs[i].split('=');
if (!key) continue;
qa[decode(key[0])] = key[1] ? decode(key[1]) : 1;
}
return qa[name] || fallback;
};
L.Util.booleanFromQueryString = function (name) {
var value = L.Util.queryString(name);
return value === '1' || value === 'true';
};
L.Util.setFromQueryString = function (options, name) {
var value = L.Util.queryString(name);
if (typeof value !== 'undefined') options[name] = value;
};
L.Util.setBooleanFromQueryString = function (options, name) {
var value = L.Util.queryString(name);
if (typeof value !== 'undefined') options[name] = value == '1' || value == 'true';
};
L.Util.setNullableBooleanFromQueryString = function (options, name) {
var value = L.Util.queryString(name);
if (typeof value !== 'undefined') {
if (value === 'null') value = null;
else if (value === '0' || value === 'false') value = false;
else value = true;
options[name] = value;
}
};
L.Util.escapeHTML = function (s) {
s = s? s.toString() : '';
return s.replace(/</gm, '&lt;');
};
L.Util.toHTML = function (r) {
var ii;
// detect newline format
var newline = r.indexOf('\r\n') != -1 ? '\r\n' : r.indexOf('\n') != -1 ? '\n' : '';
// Escape tags
r = r.replace(/</gm, '&lt;');
// headings and hr
r = r.replace(/^### (.*)/gm, '<h5>$1</h5>');
r = r.replace(/^## (.*)/gm, '<h4>$1</h4>');
r = r.replace(/^# (.*)/gm, '<h3>$1</h3>');
r = r.replace(/^---/gm, '<hr>');
// bold, italics
r = r.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
r = r.replace(/\*(.*?)\*/g, '<em>$1</em>');
// unordered lists
r = r.replace(/^\*\* (.*)/gm, '<ul><ul><li>$1</li></ul></ul>');
r = r.replace(/^\* (.*)/gm, '<ul><li>$1</li></ul>');
for (ii = 0; ii < 3; ii++) r = r.replace(new RegExp('</ul>' + newline + '<ul>', 'g'), newline);
// links
r = r.replace(/(\[\[http)/g, '[[h_t_t_p'); // Escape for avoiding clash between [[http://xxx]] and http://xxx
r = r.replace(/({{http)/g, '{{h_t_t_p');
r = r.replace(/(https?:[^ \<)\n]*)/g, '<a target="_blank" href="$1">$1</a>');
r = r.replace(/\[\[(h_t_t_ps?:[^\]|]*?)\]\]/g, '<a target="_blank" href="$1">$1</a>');
r = r.replace(/\[\[(h_t_t_ps?:[^|]*?)\|(.*?)\]\]/g, '<a target="_blank" href="$1">$2</a>');
r = r.replace(/\[\[([^\]|]*?)\]\]/g, '<a href="$1">$1</a>');
r = r.replace(/\[\[([^|]*?)\|(.*?)\]\]/g, '<a href="$1">$2</a>');
// iframe
r = r.replace(/{{{(h_t_t_ps?[^ |]*)}}}/g, '<iframe frameBorder="0" src="$1" width="100%" height="300px"></iframe>');
r = r.replace(/{{{(h_t_t_ps?[^ |]*)\|(\d*)(px)?}}}/g, '<iframe frameBorder="0" src="$1" width="100%" height="$2px"></iframe>');
r = r.replace(/{{{(h_t_t_ps?[^ |]*)\|(\d*)(px)?\*(\d*)(px)?}}}/g, '<iframe frameBorder="0" src="$1" width="$4px" height="$2px"></iframe>');
// images
r = r.replace(/{{([^\]|]*?)}}/g, '<img src="$1">');
r = r.replace(/{{([^|]*?)\|(\d*?)}}/g, '<img src="$1" width="$2">');
//Unescape http
r = r.replace(/(h_t_t_p)/g, 'http');
// Preserver line breaks
if (newline) r = r.replace(new RegExp(newline + '(?=[^]+)', 'g'), '<br>' + newline);
return r;
};
L.Util.isObject = function (what) {
return typeof what === 'object' && what !== null;
};
L.Util.CopyJSON = function (geojson) {
return JSON.parse(JSON.stringify(geojson));
};
L.Util.detectFileType = function (f) {
var filename = f.name ? escape(f.name.toLowerCase()) : '';
function ext(_) {
return filename.indexOf(_) !== -1;
}
if (f.type === 'application/vnd.google-earth.kml+xml' || ext('.kml')) {
return 'kml';
}
if (ext('.gpx')) return 'gpx';
if (ext('.geojson') || ext('.json')) return 'geojson';
if (f.type === 'text/csv' || ext('.csv') || ext('.tsv') || ext('.dsv')) {
return 'csv';
}
if (ext('.xml') || ext('.osm')) return 'osm';
if (ext('.umap')) return 'umap';
};
L.Util.usableOption = function (options, option) {
return typeof options[option] !== 'undefined' && options[option] !== '' && options[option] !== null;
};
L.Util.greedyTemplate = function (str, data, ignore) {
// Don't throw error if some key is missing
return str.replace(/\{ *([\w_\:]+) *\}/g, function (str, key) {
var value = data[key];
if (value === undefined) {
if (ignore) value = str;
else value = '';
}
return value;
});
};
L.Util.sortFeatures = function (features, sortKey) {
var sortKeys = (sortKey || 'name').split(',');
var sort = function (a, b, i) {
var sortKey = sortKeys[i], score,
valA = a.properties[sortKey] || '',
valB = b.properties[sortKey] || '';
if (!valA) {
score = -1;
} else if (!valB) {
score = 1;
} else {
score = valA.toString().toLowerCase().localeCompare(valB.toString().toLowerCase());
}
if (score === 0 && sortKeys[i + 1]) return sort(a, b, i + 1);
return score;
};
features.sort(function (a, b) {
if (!a.properties || !b.properties) {
return 0;
}
return sort(a, b, 0);
});
return features;
};
L.Util.flattenCoordinates = function (coords) {
while (coords[0] && typeof coords[0][0] !== 'number') coords = coords[0];
return coords;
};
L.DomUtil.add = function (tagName, className, container, content) {
var el = L.DomUtil.create(tagName, className, container);
if (content) {
if (content.nodeType && content.nodeType === 1) {
el.appendChild(content);
}
else {
el.innerHTML = content;
}
}
return el;
};
L.DomUtil.createFieldset = function (container, legend, options) {
options = options || {};
var fieldset = L.DomUtil.create('div', 'fieldset toggle', container);
var legendEl = L.DomUtil.add('h5', 'legend style_options_toggle', fieldset, legend);
var fieldsEl = L.DomUtil.add('div', 'fields with-transition', fieldset);
L.DomEvent.on(legendEl, 'click', function () {
if (L.DomUtil.hasClass(fieldset, 'on')) {
L.DomUtil.removeClass(fieldset, 'on');
} else {
L.DomUtil.addClass(fieldset, 'on');
if (options.callback) options.callback.call(options.context || this);
}
});
return fieldsEl;
};
L.DomUtil.classIf = function (el, className, bool) {
if (bool) L.DomUtil.addClass(el, className);
else L.DomUtil.removeClass(el, className);
};
L.DomUtil.element = function (what, attrs, parent) {
var el = document.createElement(what);
for (var attr in attrs) {
el[attr] = attrs[attr];
}
if (typeof parent !== 'undefined') {
parent.appendChild(el);
}
return el;
};
L.DomUtil.before = function (target, el) {
target.parentNode.insertBefore(el, target);
return el;
};
L.DomUtil.after = function (target, el)
{
target.parentNode.insertBefore(el, target.nextSibling);
return el;
};
L.DomUtil.RGBRegex = /rgb *\( *([0-9]{1,3}) *, *([0-9]{1,3}) *, *([0-9]{1,3}) *\)/;
L.DomUtil.TextColorFromBackgroundColor = function (el) {
var out = '#000000';
if (!window.getComputedStyle) {return out;}
var rgb = window.getComputedStyle(el).getPropertyValue('background-color');
rgb = L.DomUtil.RGBRegex.exec(rgb);
if (!rgb || rgb.length !== 4) {return out;}
rgb = parseInt(rgb[1], 10) + parseInt(rgb[2], 10) + parseInt(rgb[3], 10);
if (rgb < (255 * 3 / 2)) {
out = '#ffffff';
}
return out;
};
L.DomEvent.once = function (el, types, fn, context) {
// cf https://github.com/Leaflet/Leaflet/pull/3528#issuecomment-134551575
if (typeof types === 'object') {
for (var type in types) {
L.DomEvent.once(el, type, types[type], fn);
}
return L.DomEvent;
}
var handler = L.bind(function () {
L.DomEvent
.off(el, types, fn, context)
.off(el, types, handler, context);
}, L.DomEvent);
// add a listener that's executed once and removed after that
return L.DomEvent
.on(el, types, fn, context)
.on(el, types, handler, context);
};
/*
* Global events
*/
L.U.Keys = {
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
TAB: 9,
ENTER: 13,
ESC: 27,
APPLE: 91,
SHIFT: 16,
ALT: 17,
CTRL: 18,
E: 69,
F: 70,
H: 72,
I: 73,
L: 76,
M: 77,
P: 80,
S: 83,
Z: 90
};
L.U.Help = L.Class.extend({
initialize: function (map) {
this.map = map;
this.box = L.DomUtil.create('div', 'umap-help-box with-transition dark', document.body);
var closeLink = L.DomUtil.create('a', 'umap-close-link', this.box);
closeLink.href = '#';
L.DomUtil.add('i', 'umap-close-icon', closeLink);
var label = L.DomUtil.create('span', '', closeLink);
label.title = label.innerHTML = L._('Close');
this.content = L.DomUtil.create('div', 'umap-help-content', this.box);
L.DomEvent.on(closeLink, 'click', this.hide, this);
},
onKeyDown: function (e) {
var key = e.keyCode,
ESC = 27;
if (key === ESC) {
this.hide();
}
},
show: function () {
this.content.innerHTML = '';
for (var i = 0, name; i < arguments.length; i++) {
name = arguments[i];
L.DomUtil.add('div', 'umap-help-entry', this.content, this.resolve(name));
}
L.DomUtil.addClass(document.body, 'umap-help-on');
},
hide: function () {
L.DomUtil.removeClass(document.body, 'umap-help-on');
},
visible: function () {
return L.DomUtil.hasClass(document.body, 'umap-help-on')
},
resolve: function (name) {
return typeof this[name] === 'function' ? this[name]() : this[name];
},
button: function (container, entries) {
var helpButton = L.DomUtil.create('a', 'umap-help-button', container);
helpButton.href = '#';
if (entries) {
L.DomEvent
.on(helpButton, 'click', L.DomEvent.stop)
.on(helpButton, 'click', function (e) {
var args = typeof entries === 'string' ? [entries] : entries;
this.show.apply(this, args);
}, this);
}
return helpButton;
},
edit: function () {
var container = L.DomUtil.create('div', ''),
self = this,
title = L.DomUtil.create('h3', '', container),
actionsContainer = L.DomUtil.create('ul', 'umap-edit-actions', container);
var addAction = function (action) {
var actionContainer = L.DomUtil.add('li', '', actionsContainer);
L.DomUtil.add('i', action.options.className, actionContainer),
L.DomUtil.add('span', '', actionContainer, action.options.tooltip);
L.DomEvent.on(actionContainer, 'click', action.addHooks, action);
L.DomEvent.on(actionContainer, 'click', self.hide, self);
};
title.innerHTML = L._('Where do we go from here?');
for (var id in this.map.helpMenuActions) {
addAction(this.map.helpMenuActions[id]);
}
return container;
},
importFormats: function () {
var container = L.DomUtil.create('div');
L.DomUtil.add('h3', '', container, 'GeojSON');
L.DomUtil.add('p', '', container, L._('All properties are imported.'));
L.DomUtil.add('h3', '', container, 'GPX');
L.DomUtil.add('p', '', container, L._('Properties imported:') + 'name, desc');
L.DomUtil.add('h3', '', container, 'KML');
L.DomUtil.add('p', '', container, L._('Properties imported:') + 'name, description');
L.DomUtil.add('h3', '', container, 'CSV');
L.DomUtil.add('p', '', container, L._('Comma, tab or semi-colon separated values. SRS WGS84 is implied. Only Point geometries are imported. The import will look at the column headers for any mention of «lat» and «lon» at the begining of the header, case insensitive. All other column are imported as properties.'));
L.DomUtil.add('h3', '', container, 'uMap');
L.DomUtil.add('p', '', container, L._('Imports all umap data, including layers and settings.'));
return container;
},
textFormatting: function () {
var container = L.DomUtil.create('div'),
title = L.DomUtil.add('h3', '', container, L._('Text formatting')),
elements = L.DomUtil.create('ul', '', container);
L.DomUtil.add('li', '', elements, L._('*simple star for italic*'));
L.DomUtil.add('li', '', elements, L._('**double star for bold**'));
L.DomUtil.add('li', '', elements, L._('# one hash for main heading'));
L.DomUtil.add('li', '', elements, L._('## two hashes for second heading'));
L.DomUtil.add('li', '', elements, L._('### three hashes for third heading'));
L.DomUtil.add('li', '', elements, L._('Simple link: [[http://example.com]]'));
L.DomUtil.add('li', '', elements, L._('Link with text: [[http://example.com|text of the link]]'));
L.DomUtil.add('li', '', elements, L._('Image: {{http://image.url.com}}'));
L.DomUtil.add('li', '', elements, L._('Image with custom width (in px): {{http://image.url.com|width}}'));
L.DomUtil.add('li', '', elements, L._('Iframe: {{{http://iframe.url.com}}}'));
L.DomUtil.add('li', '', elements, L._('Iframe with custom height (in px): {{{http://iframe.url.com|height}}}'));
L.DomUtil.add('li', '', elements, L._('Iframe with custom height and width (in px): {{{http://iframe.url.com|height*width}}}'));
L.DomUtil.add('li', '', elements, L._('--- for an horizontal rule'));
return container;
},
dynamicProperties: function () {
var container = L.DomUtil.create('div');
L.DomUtil.add('h3', '', container, L._('Dynamic properties'));
L.DomUtil.add('p', '', container, L._('Use placeholders with feature properties between brackets, eg. &#123;name&#125;, they will be dynamically replaced by the corresponding values.'));
return container;
},
formatURL: L._('Supported variables that will be dynamically replaced') + ': {bbox}, {lat}, {lng}, {zoom}, {east}, {north}..., {left}, {top}...',
formatIconURL: L._('You can use feature properties as variables: ex.: with "http://myserver.org/images/{name}.png", the {name} variable will be replaced by the "name" value of each markers.'),
colorValue: L._('Must be a valid CSS value (eg.: DarkBlue or #123456)'),
smoothFactor: L._('How much to simplify the polyline on each zoom level (more = better performance and smoother look, less = more accurate)'),
dashArray: L._('A comma separated list of numbers that defines the stroke dash pattern. Ex.: "5, 10, 15".'),
zoomTo: L._('Zoom level for automatic zooms'),
labelKey: L._('The name of the property to use as feature label (ex.: "nom")'),
stroke: L._('Whether to display or not polygons paths.'),
fill: L._('Whether to fill polygons with color.'),
fillColor: L._('Optional. Same as color if not set.'),
shortCredit: L._('Will be displayed in the bottom right corner of the map'),
longCredit: L._('Will be visible in the caption of the map'),
sortKey: L._('Property to use for sorting features'),
filterKey: L._('Comma separated list of properties to use when filtering features'),
interactive: L._('If false, the polygon will act as a part of the underlying map.'),
outlink: L._('Define link to open in a new window on polygon click.'),
dynamicRemoteData: L._('Fetch data each time map view changes.'),
proxyRemoteData: L._('To use if remote server doesn\'t allow cross domain (slower)'),
browsable: L._('Set it to false to hide this layer from the slideshow, the data browser, the popup navigation…')
});
L.U.Orderable = L.Evented.extend({
options: {
selector: 'li',
color: '#374E75'
},
initialize: function (parent, options) {
L.Util.setOptions(this, options);
this.parent = parent;
this.src = null;
this.dst = null;
this.els = this.parent.querySelectorAll(this.options.selector);
for (var i = 0; i < this.els.length; i++) this.makeDraggable(this.els[i]);
},
makeDraggable: function (node) {
node.draggable = true;
L.DomEvent.on(node, 'dragstart', this.onDragStart, this);
L.DomEvent.on(node, 'dragenter', this.onDragEnter, this);
L.DomEvent.on(node, 'dragover', this.onDragOver, this);
L.DomEvent.on(node, 'dragleave', this.onDragLeave, this);
L.DomEvent.on(node, 'drop', this.onDrop, this);
L.DomEvent.on(node, 'dragend', this.onDragEnd, this);
},
nodeIndex: function (node) {
return Array.prototype.indexOf.call(this.parent.children, node);
},
findTarget: function (node) {
while (node) {
if (this.nodeIndex(node) !== -1) return node;
node = node.parentNode;
}
},
onDragStart: function (e) {
// e.target is the source node.
this.src = e.target;
this.initialIndex = this.nodeIndex(this.src);
this.srcBackgroundColor = this.src.style.backgroundColor;
this.src.style.backgroundColor = this.options.color;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text/html', this.src.innerHTML);
},
onDragOver: function (e) {
if (e.preventDefault) e.preventDefault(); // Necessary. Allows us to drop.
e.dataTransfer.dropEffect = 'move';
return false;
},
onDragEnter: function (e) {
// e.target is the current hover target.
var dst = this.findTarget(e.target);
if (!dst || dst === this.src) return;
this.dst = dst;
var targetIndex = this.nodeIndex(this.dst),
srcIndex = this.nodeIndex(this.src);
if (targetIndex > srcIndex) this.parent.insertBefore(this.dst, this.src);
else this.parent.insertBefore(this.src, this.dst);
},
onDragLeave: function (e) {
// e.target is previous target element.
},
onDrop: function (e) {
// e.target is current target element.
if (e.stopPropagation) e.stopPropagation(); // Stops the browser from redirecting.
if (!this.dst) return;
this.fire('drop', {
src: this.src,
initialIndex: this.initialIndex,
finalIndex: this.nodeIndex(this.src),
dst: this.dst
});
return false;
},
onDragEnd: function (e) {
// e.target is the source node.
this.src.style.backgroundColor = this.srcBackgroundColor;
}
});

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,744 @@
L.FormBuilder.Element.include({
getParentNode: function () {
if (this.options.wrapper) {
return L.DomUtil.create(this.options.wrapper, this.options.wrapperClass || '', this.form);
}
var className = 'formbox';
if (this.options.inheritable) {
className += this.get(true) === undefined ? ' inheritable undefined' : ' inheritable ';
}
className += ' umap-field-' + this.name;
this.wrapper = L.DomUtil.create('div', className, this.form);
this.header = L.DomUtil.create('div', 'header', this.wrapper);
if (this.options.inheritable) {
var undefine = L.DomUtil.add('a', 'button undefine', this.header, L._('clear'));
var define = L.DomUtil.add('a', 'button define', this.header, L._('define'));
L.DomEvent.on(define, 'click', function (e) {
L.DomEvent.stop(e);
this.fetch();
this.fire('define');
L.DomUtil.removeClass(this.wrapper, 'undefined');
}, this);
L.DomEvent.on(undefine, 'click', function (e) {
L.DomEvent.stop(e);
L.DomUtil.addClass(this.wrapper, 'undefined');
this.clear();
this.sync();
}, this);
}
this.quickContainer = L.DomUtil.create('span', 'quick-actions show-on-defined', this.header);
this.extendedContainer = L.DomUtil.create('div', 'show-on-defined', this.wrapper);
return this.extendedContainer;
},
getLabelParent: function () {
return this.header;
},
clear: function () {
this.input.value = '';
},
get: function (own) {
if (!this.options.inheritable || own) return this.builder.getter(this.field);
var path = this.field.split('.'),
key = path[path.length - 1];
return this.obj.getOption(key);
},
buildLabel: function () {
if (this.options.label) {
this.label = L.DomUtil.create('label', '', this.getLabelParent());
this.label.innerHTML = this.label.title = this.options.label;
if (this.options.helpEntries) this.builder.map.help.button(this.label, this.options.helpEntries);
else if (this.options.helpText) {
var info = L.DomUtil.create('i', 'info', this.label);
L.DomEvent.on(info, 'mouseover', function () {
this.builder.map.ui.tooltip({anchor: info, content: this.options.helpText, position: 'top'});
}, this);
}
}
}
});
L.FormBuilder.Select.include({
clear: function () {
this.select.value = '';
},
getDefault: function () {
if (this.options.inheritable) return undefined
else return L.FormBuilder.Select.prototype.getDefault.call(this)
}
});
L.FormBuilder.CheckBox.include({
value: function () {
return L.DomUtil.hasClass(this.wrapper, 'undefined') ? undefined : this.input.checked;
},
clear: function () {
this.fetch();
}
});
L.FormBuilder.ColorPicker = L.FormBuilder.Input.extend({
colors: [
'Black', 'Navy', 'DarkBlue', 'MediumBlue', 'Blue', 'DarkGreen',
'Green', 'Teal', 'DarkCyan', 'DeepSkyBlue', 'DarkTurquoise',
'MediumSpringGreen', 'Lime', 'SpringGreen', 'Aqua', 'Cyan',
'MidnightBlue', 'DodgerBlue', 'LightSeaGreen', 'ForestGreen',
'SeaGreen', 'DarkSlateGray', 'DarkSlateGrey', 'LimeGreen',
'MediumSeaGreen', 'Turquoise', 'RoyalBlue', 'SteelBlue',
'DarkSlateBlue', 'MediumTurquoise', 'Indigo', 'DarkOliveGreen',
'CadetBlue', 'CornflowerBlue', 'MediumAquaMarine', 'DimGray',
'DimGrey', 'SlateBlue', 'OliveDrab', 'SlateGray', 'SlateGrey',
'LightSlateGray', 'LightSlateGrey', 'MediumSlateBlue', 'LawnGreen',
'Chartreuse', 'Aquamarine', 'Maroon', 'Purple', 'Olive', 'Gray',
'Grey', 'SkyBlue', 'LightSkyBlue', 'BlueViolet', 'DarkRed',
'DarkMagenta', 'SaddleBrown', 'DarkSeaGreen', 'LightGreen',
'MediumPurple', 'DarkViolet', 'PaleGreen', 'DarkOrchid',
'YellowGreen', 'Sienna', 'Brown', 'DarkGray', 'DarkGrey',
'LightBlue', 'GreenYellow', 'PaleTurquoise', 'LightSteelBlue',
'PowderBlue', 'FireBrick', 'DarkGoldenRod', 'MediumOrchid',
'RosyBrown', 'DarkKhaki', 'Silver', 'MediumVioletRed', 'IndianRed',
'Peru', 'Chocolate', 'Tan', 'LightGray', 'LightGrey', 'Thistle',
'Orchid', 'GoldenRod', 'PaleVioletRed', 'Crimson', 'Gainsboro',
'Plum', 'BurlyWood', 'LightCyan', 'Lavender', 'DarkSalmon',
'Violet', 'PaleGoldenRod', 'LightCoral', 'Khaki', 'AliceBlue',
'HoneyDew', 'Azure', 'SandyBrown', 'Wheat', 'Beige', 'WhiteSmoke',
'MintCream', 'GhostWhite', 'Salmon', 'AntiqueWhite', 'Linen',
'LightGoldenRodYellow', 'OldLace', 'Red', 'Fuchsia', 'Magenta',
'DeepPink', 'OrangeRed', 'Tomato', 'HotPink', 'Coral', 'DarkOrange',
'LightSalmon', 'Orange', 'LightPink', 'Pink', 'Gold', 'PeachPuff',
'NavajoWhite', 'Moccasin', 'Bisque', 'MistyRose', 'BlanchedAlmond',
'PapayaWhip', 'LavenderBlush', 'SeaShell', 'Cornsilk',
'LemonChiffon', 'FloralWhite', 'Snow', 'Yellow', 'LightYellow',
'Ivory', 'White'
],
getParentNode: function () {
L.FormBuilder.CheckBox.prototype.getParentNode.call(this);
return this.quickContainer;
},
build: function () {
L.FormBuilder.Input.prototype.build.call(this);
this.input.placeholder = this.options.placeholder || L._('Inherit');
this.container = L.DomUtil.create('div', 'umap-color-picker', this.extendedContainer);
this.container.style.display = 'none';
for (var idx in this.colors) {
this.addColor(this.colors[idx]);
}
this.spreadColor();
this.input.autocomplete = 'off';
L.DomEvent.on(this.input, 'focus', this.onFocus, this);
L.DomEvent.on(this.input, 'blur', this.onBlur, this);
L.DomEvent.on(this.input, 'change', this.sync, this);
this.on('define', this.onFocus);
},
onFocus: function () {
this.container.style.display = 'block';
this.spreadColor();
},
onBlur: function () {
var self = this,
closePicker = function () {
self.container.style.display = 'none';
};
// We must leave time for the click to be listened.
window.setTimeout(closePicker, 100);
},
sync: function () {
this.spreadColor();
L.FormBuilder.Input.prototype.sync.call(this);
},
spreadColor: function () {
if (this.input.value) this.input.style.backgroundColor = this.input.value;
else this.input.style.backgroundColor = 'inherit';
},
addColor: function (colorName) {
var span = L.DomUtil.create('span', '', this.container);
span.style.backgroundColor = span.title = colorName;
var updateColorInput = function () {
this.input.value = colorName;
this.sync();
this.container.style.display = 'none';
};
L.DomEvent.on(span, 'mousedown', updateColorInput, this);
}
});
L.FormBuilder.TextColorPicker = L.FormBuilder.ColorPicker.extend({
colors: [
'Black', 'DarkSlateGrey', 'DimGrey', 'SlateGrey', 'LightSlateGrey',
'Grey', 'DarkGrey', 'LightGrey', 'White'
]
});
L.FormBuilder.IconClassSwitcher = L.FormBuilder.Select.extend({
selectOptions: [
['Default', L._('Default')],
['Circle', L._('Circle')],
['Drop', L._('Drop')],
['Ball', L._('Ball')]
]
});
L.FormBuilder.PopupTemplate = L.FormBuilder.Select.extend({
selectOptions: [
['Default', L._('Name and description')],
['Large', L._('Name and description (large)')],
['Table', L._('Table')],
['GeoRSSImage', L._('GeoRSS (title + image)')],
['GeoRSSLink', L._('GeoRSS (only link)')],
['SimplePanel', L._('Side panel')]
],
toJS: function () {
var value = L.FormBuilder.Select.prototype.toJS.apply(this);
if (value === 'table') { value = 'Table'; }
return value;
}
});
L.FormBuilder.LayerTypeChooser = L.FormBuilder.Select.extend({
selectOptions: [
['Default', L._('Default')],
['Cluster', L._('Clustered')],
['Heat', L._('Heatmap')]
]
});
L.FormBuilder.SlideshowDelay = L.FormBuilder.IntSelect.extend({
getOptions: function () {
var options = [];
for (var i = 1; i < 30; i++) {
options.push([i * 1000, L._('{delay} seconds', {delay: i})]);
}
return options;
}
});
L.FormBuilder.DataLayerSwitcher = L.FormBuilder.Select.extend({
getOptions: function () {
var options = [];
this.builder.map.eachDataLayerReverse(function (datalayer) {
if(datalayer.isLoaded() && !datalayer.isRemoteLayer() && datalayer.canBrowse()) {
options.push([L.stamp(datalayer), datalayer.getName()]);
}
});
return options;
},
toHTML: function () {
return L.stamp(this.obj.datalayer);
},
toJS: function () {
return this.builder.map.datalayers[this.value()];
},
set: function () {
this.builder.map.lastUsedDataLayer = this.toJS();
this.obj.changeDataLayer(this.toJS());
}
});
L.FormBuilder.onLoadPanel = L.FormBuilder.Select.extend({
selectOptions: [
['none', L._('None')],
['caption', L._('Caption')],
['databrowser', L._('Data browser')]
]
});
L.FormBuilder.DataFormat = L.FormBuilder.Select.extend({
selectOptions: [
[undefined, L._('Choose the data format')],
['geojson', 'geojson'],
['osm', 'osm'],
['csv', 'csv'],
['gpx', 'gpx'],
['kml', 'kml'],
['georss', 'georss']
]
});
L.FormBuilder.LabelDirection = L.FormBuilder.Select.extend({
selectOptions: [
['auto', L._('Automatic')],
['left', L._('On the left')],
['right', L._('On the right')],
['top', L._('On the top')],
['bottom', L._('On the bottom')]
]
});
L.FormBuilder.LicenceChooser = L.FormBuilder.Select.extend({
getOptions: function () {
var licences = [],
licencesList = this.builder.obj.options.licences,
licence;
for (var i in licencesList) {
licence = licencesList[i];
licences.push([i, licence.name]);
}
return licences;
},
toHTML: function () {
return this.get().name;
},
toJS: function () {
return this.builder.obj.options.licences[this.value()];
}
});
L.FormBuilder.NullableBoolean = L.FormBuilder.Select.extend({
selectOptions: [
[undefined, L._('inherit')],
[true, L._('yes')],
[false, L._('no')]
],
toJS: function () {
var value = this.value();
switch (value) {
case 'true':
case true:
value = true;
break;
case 'false':
case false:
value = false;
break;
default:
value = undefined;
}
return value;
}
});
L.FormBuilder.IconUrl = L.FormBuilder.Input.extend({
type: function () {
return 'hidden';
},
build: function () {
L.FormBuilder.Input.prototype.build.call(this);
this.parentContainer = L.DomUtil.create('div', 'umap-form-iconfield', this.parentNode);
this.buttonsContainer = L.DomUtil.create('div', '', this.parentContainer);
this.pictogramsContainer = L.DomUtil.create('div', 'umap-pictogram-list', this.parentContainer);
this.input.type = 'hidden';
this.input.placeholder = L._('Url');
this.udpatePreview();
this.on('define', this.fetchIconList);
},
udpatePreview: function () {
if (this.value() && this.value().indexOf('{') === -1) { // Do not try to render URL with variables
var img = L.DomUtil.create('img', '', L.DomUtil.create('div', 'umap-icon-choice', this.buttonsContainer));
img.src = this.value();
L.DomEvent.on(img, 'click', this.fetchIconList, this);
}
this.button = L.DomUtil.create('a', '', this.buttonsContainer);
this.button.innerHTML = this.value() ? L._('Change symbol') : L._('Add symbol');
this.button.href = '#';
L.DomEvent
.on(this.button, 'click', L.DomEvent.stop)
.on(this.button, 'click', this.fetchIconList, this);
},
addIconPreview: function (pictogram) {
var baseClass = 'umap-icon-choice',
value = pictogram.src,
className = value === this.value() ? baseClass + ' selected' : baseClass,
container = L.DomUtil.create('div', className, this.pictogramsContainer),
img = L.DomUtil.create('img', '', container);
img.src = value;
if (pictogram.name && pictogram.attribution) {
img.title = pictogram.name + ' — © ' + pictogram.attribution;
}
L.DomEvent.on(container, 'click', function (e) {
this.input.value = value;
this.sync();
this.unselectAll(this.pictogramsContainer);
L.DomUtil.addClass(container, 'selected');
this.pictogramsContainer.innerHTML = '';
this.udpatePreview();
}, this);
},
clear: function () {
this.input.value = '';
this.unselectAll(this.pictogramsContainer);
this.sync();
this.pictogramsContainer.innerHTML = '';
this.udpatePreview();
},
buildIconList: function (data) {
this.pictogramsContainer.innerHTML = '';
this.buttonsContainer.innerHTML = '';
for (var idx in data.pictogram_list) {
this.addIconPreview(data.pictogram_list[idx]);
}
var cancelButton = L.DomUtil.create('a', '', this.pictogramsContainer);
cancelButton.innerHTML = L._('Cancel');
cancelButton.href = '#';
cancelButton.style.display = 'block';
cancelButton.style.clear = 'both';
L.DomEvent
.on(cancelButton, 'click', L.DomEvent.stop)
.on(cancelButton, 'click', function (e) {
this.pictogramsContainer.innerHTML = '';
this.udpatePreview();
}, this);
var customButton = L.DomUtil.create('a', '', this.pictogramsContainer);
customButton.innerHTML = L._('Set URL');
customButton.href = '#';
customButton.style.display = 'block';
customButton.style.clear = 'both';
this.builder.map.help.button(customButton, 'formatIconURL');
L.DomEvent
.on(customButton, 'click', L.DomEvent.stop)
.on(customButton, 'click', function (e) {
this.input.type = 'url';
this.pictogramsContainer.innerHTML = '';
}, this);
},
fetchIconList: function (e) {
this.builder.map.get(this.builder.map.options.urls.pictogram_list_json, {
callback: this.buildIconList,
context: this
});
},
unselectAll: function (container) {
var els = container.querySelectorAll('div.selected');
for (var el in els) {
if (els.hasOwnProperty(el)) L.DomUtil.removeClass(els[el], 'selected');
}
}
});
L.FormBuilder.Url = L.FormBuilder.Input.extend({
type: function () {
return 'url';
}
});
L.FormBuilder.Switch = L.FormBuilder.CheckBox.extend({
getParentNode: function () {
L.FormBuilder.CheckBox.prototype.getParentNode.call(this);
if (this.options.inheritable) return this.quickContainer;
return this.extendedContainer;
},
build: function () {
L.FormBuilder.CheckBox.prototype.build.apply(this);
if (this.options.inheritable) this.label = L.DomUtil.create('label', '', this.input.parentNode);
else this.input.parentNode.appendChild(this.label);
L.DomUtil.addClass(this.input.parentNode, 'with-switch');
var id = (this.builder.options.id || Date.now()) + '.' + this.name;
this.label.setAttribute('for', id);
L.DomUtil.addClass(this.input, 'switch');
this.input.id = id;
}
});
L.FormBuilder.MultiChoice = L.FormBuilder.Element.extend({
default: 'null',
className: 'umap-multiplechoice',
clear: function () {
var checked = this.container.querySelector('input[type="radio"]:checked');
if (checked) checked.checked = false;
},
fetch: function () {
var value = this.backup = this.toHTML();
if (value === null || value === undefined) value = this.default;
this.container.querySelector('input[type="radio"][value="' + value + '"]').checked = true;
},
value: function () {
var checked = this.container.querySelector('input[type="radio"]:checked');
if (checked) return checked.value;
},
getChoices: function () {
return this.options.choices || this.choices;
},
build: function () {
var choices = this.getChoices();
this.container = L.DomUtil.create('div', this.className + ' by' + choices.length, this.parentNode);
for (var i = 0; i < choices.length; i++) {
this.addChoice(choices[i][0], choices[i][1], i);
}
this.fetch();
},
addChoice: function (value, label, counter) {
var input = L.DomUtil.create('input', '', this.container);
label = L.DomUtil.add('label', '', this.container, label);
input.type = 'radio';
input.name = this.name;
input.value = value;
var id = Date.now() + '.' + this.name + '.' + counter;
label.setAttribute('for', id);
input.id = id;
L.DomEvent.on(input, 'change', this.sync, this);
}
});
L.FormBuilder.TernaryChoices = L.FormBuilder.MultiChoice.extend({
default: 'null',
toJS: function () {
var value = this.value();
switch (value) {
case 'true':
case true:
value = true;
break;
case 'false':
case false:
value = false;
break;
default:
value = null;
}
return value;
}
});
L.FormBuilder.ControlChoice = L.FormBuilder.TernaryChoices.extend({
choices: [
[true, L._('always')],
[false, L._('never')],
['null', L._('hidden')]
]
});
L.FormBuilder.LabelChoice = L.FormBuilder.TernaryChoices.extend({
default: false,
choices: [
[true, L._('always')],
[false, L._('never')],
['null', L._('on hover')]
]
});
L.FormBuilder.DataLayersControl = L.FormBuilder.ControlChoice.extend({
choices: [
[true, L._('collapsed')],
['expanded', L._('expanded')],
[false, L._('never')],
['null', L._('hidden')]
],
toJS: function () {
var value = this.value();
if (value !== 'expanded') value = L.FormBuilder.ControlChoice.prototype.toJS.call(this);
return value;
}
});
L.FormBuilder.OutlinkTarget = L.FormBuilder.MultiChoice.extend({
default: 'blank',
choices: [
['blank', L._('new window')],
['self', L._('iframe')],
['parent', L._('parent window')]
]
});
L.FormBuilder.Range = L.FormBuilder.Input.extend({
type: function () {
return 'range';
},
value: function () {
return L.DomUtil.hasClass(this.wrapper, 'undefined') ? undefined : this.input.value;
}
});
L.FormBuilder.ManageOwner = L.FormBuilder.Element.extend({
build: function () {
var options = {className: 'edit-owner'};
options.on_select = (choice) => {
this._value = {
'id': choice.item.value,
'name': choice.item.label,
'url': choice.item.url
};
this.set();
}
this.autocomplete = new L.U.AutoComplete.Ajax.Select(this.parentNode, options);
var owner = this.toHTML();
if (owner) this.autocomplete.displaySelected({'item': {'value': owner.id, 'label': owner.name}});
},
value: function () {
return this._value;
}
});
L.FormBuilder.ManageEditors = L.FormBuilder.Element.extend({
build: function () {
var options = {className: 'edit-editors'};
options.on_select = (choice) => {
this._values.push({
'id': choice.item.value,
'name': choice.item.label,
'url': choice.item.url
});
this.set();
}
options.on_unselect = (choice) => {
var index = this._values.findIndex((item) => item.id === choice.item.value);
if (index !== -1) {
this._values.splice(index, 1);
this.set();
}
}
this.autocomplete = new L.U.AutoComplete.Ajax.SelectMultiple(this.parentNode, options);
this._values = this.toHTML();
if (this._values) for (var i = 0; i < this._values.length; i++) this.autocomplete.displaySelected({'item': {'value': this._values[i].id, 'label': this._values[i].name}});
},
value: function () {
return this._values;
}
});
L.U.FormBuilder = L.FormBuilder.extend({
options: {
className: 'umap-form'
},
defaultOptions: {
name: {label: L._('name')},
description: {label: L._('description'), handler: 'Textarea', helpEntries: 'textFormatting'},
color: {handler: 'ColorPicker', label: L._('color'), helpEntries: 'colorValue', inheritable: true},
opacity: {handler: 'Range', min: 0.1, max: 1, step: 0.1, label: L._('opacity'), inheritable: true},
stroke: {handler: 'Switch', label: L._('stroke'), helpEntries: 'stroke', inheritable: true},
weight: {handler: 'Range', min: 1, max: 20, step: 1, label: L._('weight'), inheritable: true},
fill: {handler: 'Switch', label: L._('fill'), helpEntries: 'fill', inheritable: true},
fillColor: {handler: 'ColorPicker', label: L._('fill color'), helpEntries: 'fillColor', inheritable: true},
fillOpacity: {handler: 'Range', min: 0.1, max: 1, step: 0.1, label: L._('fill opacity'), inheritable: true},
smoothFactor: {handler: 'Range', min: 0, max: 10, step: 0.5, label: L._('Simplify'), helpEntries: 'smoothFactor', inheritable: true},
dashArray: {label: L._('dash array'), helpEntries: 'dashArray', inheritable: true},
iconClass: {handler: 'IconClassSwitcher', label: L._('Icon shape'), inheritable: true},
iconUrl: {handler: 'IconUrl', label: L._('Icon symbol'), inheritable: true},
popupTemplate: {handler: 'PopupTemplate', label: L._('Popup style'), inheritable: true},
popupContentTemplate: {label: L._('Popup content template'), handler: 'Textarea', helpEntries: ['dynamicProperties', 'textFormatting'], placeholder: '# {name}', inheritable: true},
datalayer: {handler: 'DataLayerSwitcher', label: L._('Choose the layer of the feature')},
moreControl: {handler: 'Switch', label: L._('Do you want to display the «more» control?')},
scrollWheelZoom: {handler: 'Switch', label: L._('Allow scroll wheel zoom?')},
miniMap: {handler: 'Switch', label: L._('Do you want to display a minimap?')},
scaleControl: {handler: 'Switch', label: L._('Do you want to display the scale control?')},
onLoadPanel: {handler: 'onLoadPanel', label: L._('Do you want to display a panel on load?')},
displayPopupFooter: {handler: 'Switch', label: L._('Do you want to display popup footer?')},
captionBar: {handler: 'Switch', label: L._('Do you want to display a caption bar?')},
zoomTo: {handler: 'IntInput', placeholder: L._('Inherit'), helpEntries: 'zoomTo', label: L._('Default zoom level'), inheritable: true},
showLabel: {handler: 'LabelChoice', label: L._('Display label'), inheritable: true},
labelDirection: {handler: 'LabelDirection', label: L._('Label direction'), inheritable: true},
labelInteractive: {handler: 'Switch', label: L._('Labels are clickable'), inheritable: true},
labelKey: {helpEntries: 'labelKey', placeholder: L._('Default: name'), label: L._('Label key'), inheritable: true},
zoomControl: {handler: 'ControlChoice', label: L._('Display the zoom control')},
searchControl: {handler: 'ControlChoice', label: L._('Display the search control')},
fullscreenControl: {handler: 'ControlChoice', label: L._('Display the fullscreen control')},
embedControl: {handler: 'ControlChoice', label: L._('Display the embed control')},
locateControl: {handler: 'ControlChoice', label: L._('Display the locate control')},
measureControl: {handler: 'ControlChoice', label: L._('Display the measure control')},
tilelayersControl: {handler: 'ControlChoice', label: L._('Display the tile layers control')},
editinosmControl: {handler: 'ControlChoice', label: L._('Display the control to open OpenStreetMap editor')},
datalayersControl: {handler: 'DataLayersControl', label: L._('Display the data layers control')},
},
initialize: function (obj, fields, options) {
this.map = obj.getMap();
L.FormBuilder.prototype.initialize.call(this, obj, fields, options);
this.on('finish', this.finish);
},
setter: function (field, value) {
L.FormBuilder.prototype.setter.call(this, field, value);
this.obj.isDirty = true;
},
finish: function () {
this.map.ui.closePanel();
}
});

View file

@ -0,0 +1,181 @@
L.U.Icon = L.DivIcon.extend({
initialize: function(map, options) {
this.map = map;
var default_options = {
iconSize: null, // Made in css
iconUrl: this.map.getDefaultOption('iconUrl'),
feature: null
};
options = L.Util.extend({}, default_options, options);
L.Icon.prototype.initialize.call(this, options);
this.feature = this.options.feature;
if (this.feature && this.feature.isReadOnly()) {
this.options.className += ' readonly';
}
},
_getIconUrl: function (name) {
var url;
if(this.feature && this.feature._getIconUrl(name)) url = this.feature._getIconUrl(name);
else url = this.options[name + 'Url'];
return this.formatUrl(url, this.feature);
},
_getColor: function () {
var color;
if(this.feature) color = this.feature.getOption('color');
else if (this.options.color) color = this.options.color;
else color = this.map.getDefaultOption('color');
return color;
},
formatUrl: function (url, feature) {
return L.Util.greedyTemplate(url || '', feature ? feature.properties : {});
}
});
L.U.Icon.Default = L.U.Icon.extend({
default_options: {
iconAnchor: new L.Point(16, 40),
popupAnchor: new L.Point(0, -40),
tooltipAnchor: new L.Point(16, -24),
className: 'umap-div-icon'
},
initialize: function(map, options) {
options = L.Util.extend({}, this.default_options, options);
L.U.Icon.prototype.initialize.call(this, map, options);
},
_setColor: function() {
var color = this._getColor();
this.elements.container.style.backgroundColor = color;
this.elements.arrow.style.borderTopColor = color;
},
createIcon: function() {
this.elements = {};
this.elements.main = L.DomUtil.create('div');
this.elements.container = L.DomUtil.create('div', 'icon_container', this.elements.main);
this.elements.arrow = L.DomUtil.create('div', 'icon_arrow', this.elements.main);
this.elements.img = L.DomUtil.create('img', null, this.elements.container);
var src = this._getIconUrl('icon');
if (src) this.elements.img.src = src;
this._setColor();
this._setIconStyles(this.elements.main, 'icon');
return this.elements.main;
}
});
L.U.Icon.Circle = L.U.Icon.extend({
initialize: function(map, options) {
var default_options = {
iconAnchor: new L.Point(6, 6),
popupAnchor: new L.Point(0, -6),
tooltipAnchor: new L.Point(6, 0),
className: 'umap-circle-icon'
};
options = L.Util.extend({}, default_options, options);
L.U.Icon.prototype.initialize.call(this, map, options);
},
_setColor: function() {
this.elements.main.style.backgroundColor = this._getColor();
},
createIcon: function() {
this.elements = {};
this.elements.main = L.DomUtil.create('div');
this.elements.main.innerHTML = '&nbsp;';
this._setColor();
this._setIconStyles(this.elements.main, 'icon');
return this.elements.main;
}
});
L.U.Icon.Drop = L.U.Icon.Default.extend({
default_options: {
iconAnchor: new L.Point(16, 42),
popupAnchor: new L.Point(0, -42),
tooltipAnchor: new L.Point(16, -24),
className: 'umap-drop-icon'
}
});
L.U.Icon.Ball = L.U.Icon.Default.extend({
default_options: {
iconAnchor: new L.Point(8, 30),
popupAnchor: new L.Point(0, -28),
tooltipAnchor: new L.Point(8, -23),
className: 'umap-ball-icon'
},
createIcon: function() {
this.elements = {};
this.elements.main = L.DomUtil.create('div');
this.elements.container = L.DomUtil.create('div', 'icon_container', this.elements.main);
this.elements.arrow = L.DomUtil.create('div', 'icon_arrow', this.elements.main);
this._setColor();
this._setIconStyles(this.elements.main, 'icon');
return this.elements.main;
},
_setColor: function() {
var color = this._getColor('color'),
background;
if (L.Browser.ielt9) {
background = color;
}
else if (L.Browser.webkit) {
background = '-webkit-gradient( radial, 6 38%, 0, 6 38%, 8, from(white), to(' + color + ') )';
}
else {
background = 'radial-gradient(circle at 6px 38% , white -4px, ' + color + ' 8px) repeat scroll 0 0 transparent';
}
this.elements.container.style.background = background;
}
});
var _CACHE_COLOR = {};
L.U.Icon.Cluster = L.DivIcon.extend({
options: {
iconSize: [40, 40]
},
initialize: function (datalayer, cluster) {
this.datalayer = datalayer;
this.cluster = cluster;
},
createIcon: function () {
var container = L.DomUtil.create('div', 'leaflet-marker-icon marker-cluster'),
div = L.DomUtil.create('div', '', container),
span = L.DomUtil.create('span', '', div),
backgroundColor = this.datalayer.getColor();
span.innerHTML = this.cluster.getChildCount();
div.style.backgroundColor = backgroundColor;
return container;
},
computeTextColor: function (el) {
var color,
backgroundColor = this.datalayer.getColor();
if (this.datalayer.options.cluster && this.datalayer.options.cluster.textColor) {
color = this.datalayer.options.cluster.textColor;
}
if (!color) {
if (typeof _CACHE_COLOR[backgroundColor] === 'undefined') {
color = L.DomUtil.TextColorFromBackgroundColor(el);
_CACHE_COLOR[backgroundColor] = color;
} else {
color = _CACHE_COLOR[backgroundColor];
}
}
return color;
}
});

Some files were not shown because too many files have changed in this diff Show more