├── img ├── redo.png ├── expand.png ├── backToCenter.png ├── goFullScreen.png ├── hideImages.png ├── showImages.png ├── exitFullFcreen.png ├── icon-fullscreen.png └── icon-fullscreen-2x.png ├── screenshot-1.jpg ├── screenshot-2.jpg ├── screenshot-3.jpg ├── screenshot-4.jpg ├── screenshot-5.jpg ├── screenshot-6.jpg ├── assets ├── icon-128x128.png ├── icon-256x256.png └── icon.svg ├── languages ├── wp-gpx-maps-ca.mo ├── wp-gpx-maps-ja.mo ├── wp-gpx-maps-bg_BG.mo ├── wp-gpx-maps-cs_CZ.mo ├── wp-gpx-maps-es_ES.mo ├── wp-gpx-maps-fr_FR.mo ├── wp-gpx-maps-hu_HU.mo ├── wp-gpx-maps-it_IT.mo ├── wp-gpx-maps-ja_JP.mo ├── wp-gpx-maps-nb_NO.mo ├── wp-gpx-maps-nl_NL.mo ├── wp-gpx-maps-pl_PL.mo ├── wp-gpx-maps-pt_BR.mo ├── wp-gpx-maps-ru_RU.mo ├── wp-gpx-maps-sv_SE.mo ├── wp-gpx-maps-tr_TR.mo ├── wp-gpx-maps-fr_FR.po ├── wp-gpx-maps-nl_NL.po ├── wp-gpx-maps-hu_HU.po ├── wp-gpx-maps-sv_SE.po ├── wp-gpx-maps-tr_TR.po ├── wp-gpx-maps-ru_RU.po ├── wp-gpx-maps-pt_BR.po ├── wp-gpx-maps-bg_BG.po ├── wp-gpx-maps-ca.po ├── wp-gpx-maps-es_ES.po ├── wp-gpx-maps-it_IT.po ├── wp-gpx-maps-pl_PL.po ├── wp-gpx-maps-cs_CZ.po ├── wp-gpx-maps-nb_NO.po └── wp-gpx-maps.pot ├── ThirdParties ├── Leaflet_1.5.1 │ ├── images │ │ ├── layers.png │ │ ├── layers-2x.png │ │ ├── marker-icon.png │ │ ├── marker-icon-2x.png │ │ └── marker-shadow.png │ └── leaflet.css ├── leaflet.fullscreen-1.4.5 │ ├── icon-fullscreen.png │ ├── icon-fullscreen-2x.png │ ├── .mversionrc │ ├── package.json │ ├── bower.json │ ├── .eslintrc │ ├── Control.FullScreen.css │ ├── LICENSE │ ├── index.html │ ├── README.md │ └── Control.FullScreen.js ├── Leaflet.Photo │ ├── Leaflet.Photo.css │ └── Leaflet.Photo.js └── Leaflet.markercluster-1.4.1 │ ├── MarkerCluster.css │ ├── MarkerCluster.Default.css │ └── leaflet.markercluster.js.map ├── css ├── wp-gpx-maps-output.css ├── admin-style.css └── bootstrap-table.css ├── wp-gpx-maps-admin-administration.php ├── wp-gpx-maps-utils-nggallery.php ├── wp-gpx-maps-admin.php ├── wp-gpx-maps-admin-tracks.php ├── js └── mColorPicker_min.js ├── readme.txt └── wp-gpx-maps-utils.php /img/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/redo.png -------------------------------------------------------------------------------- /img/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/expand.png -------------------------------------------------------------------------------- /screenshot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-1.jpg -------------------------------------------------------------------------------- /screenshot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-2.jpg -------------------------------------------------------------------------------- /screenshot-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-3.jpg -------------------------------------------------------------------------------- /screenshot-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-4.jpg -------------------------------------------------------------------------------- /screenshot-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-5.jpg -------------------------------------------------------------------------------- /screenshot-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/screenshot-6.jpg -------------------------------------------------------------------------------- /img/backToCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/backToCenter.png -------------------------------------------------------------------------------- /img/goFullScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/goFullScreen.png -------------------------------------------------------------------------------- /img/hideImages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/hideImages.png -------------------------------------------------------------------------------- /img/showImages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/showImages.png -------------------------------------------------------------------------------- /img/exitFullFcreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/exitFullFcreen.png -------------------------------------------------------------------------------- /assets/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/assets/icon-128x128.png -------------------------------------------------------------------------------- /assets/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/assets/icon-256x256.png -------------------------------------------------------------------------------- /img/icon-fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/icon-fullscreen.png -------------------------------------------------------------------------------- /img/icon-fullscreen-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/img/icon-fullscreen-2x.png -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ca.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-ca.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ja.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-ja.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-bg_BG.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-bg_BG.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-cs_CZ.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-cs_CZ.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-es_ES.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-fr_FR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-fr_FR.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-hu_HU.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-hu_HU.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-it_IT.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-it_IT.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ja_JP.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-ja_JP.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-nb_NO.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-nb_NO.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-nl_NL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-nl_NL.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-pl_PL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-pl_PL.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-pt_BR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-pt_BR.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ru_RU.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-ru_RU.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-sv_SE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-sv_SE.mo -------------------------------------------------------------------------------- /languages/wp-gpx-maps-tr_TR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/languages/wp-gpx-maps-tr_TR.mo -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/Leaflet_1.5.1/images/layers.png -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/Leaflet_1.5.1/images/layers-2x.png -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/Leaflet_1.5.1/images/marker-icon.png -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/Leaflet_1.5.1/images/marker-icon-2x.png -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/Leaflet_1.5.1/images/marker-shadow.png -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/icon-fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/leaflet.fullscreen-1.4.5/icon-fullscreen.png -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/icon-fullscreen-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/misohena/wp-gpx-maps/master/ThirdParties/leaflet.fullscreen-1.4.5/icon-fullscreen-2x.png -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/.mversionrc: -------------------------------------------------------------------------------- 1 | { 2 | "commitMessage": "version %s", 3 | "tagName": "%s", 4 | "scripts": { 5 | "postcommit": "git push && git push --tags && npm publish" 6 | } 7 | } -------------------------------------------------------------------------------- /ThirdParties/Leaflet.Photo/Leaflet.Photo.css: -------------------------------------------------------------------------------- 1 | .leaflet-marker-photo { 2 | border: 2px solid #fff; 3 | box-shadow: 3px 3px 10px #888; 4 | } 5 | 6 | .leaflet-marker-photo div { 7 | width: 100%; 8 | height: 100%; 9 | background-size: cover; 10 | background-position: center center; 11 | background-repeat: no-repeat; 12 | } 13 | 14 | .leaflet-marker-photo b { 15 | position: absolute; 16 | top: -7px; 17 | right: -11px; 18 | color: #555; 19 | background-color: #fff; 20 | border-radius: 8px; 21 | height: 12px; 22 | min-width: 12px; 23 | line-height: 12px; 24 | text-align: center; 25 | padding: 3px; 26 | box-shadow: 0 3px 14px rgba(0,0,0,0.4); 27 | } -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leaflet.fullscreen", 3 | "version": "1.4.5", 4 | "description": "Simple plugin for Leaflet that adds fullscreen button to your maps.", 5 | "main": "Control.FullScreen.js", 6 | "scripts": { 7 | "test": "eslint --config .eslintrc Control.FullScreen.js" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git://github.com/brunob/leaflet.fullscreen.git" 12 | }, 13 | "keywords": [ 14 | "leaflet", 15 | "plugins", 16 | "maps", 17 | "fullscreen" 18 | ], 19 | "devDependencies": { 20 | "eslint": "2.3.0" 21 | }, 22 | "author": "b_b", 23 | "license": "MIT License", 24 | "readmeFilename": "README.md" 25 | } 26 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leaflet.fullscreen", 3 | "version": "1.4.5", 4 | "homepage": "https://github.com/brunob/leaflet.fullscreen", 5 | "license": "MIT", 6 | "authors": [ 7 | "brunob " 8 | ], 9 | "description": "Leaflet.Control.FullScreen for Leaflet", 10 | "main": [ 11 | "Control.FullScreen.js", 12 | "Control.FullScreen.css", 13 | "icon-fullscreen.png", 14 | "icon-fullscreen-2x.png" 15 | ], 16 | "devDependencies": { 17 | "eslint": "2.3.0" 18 | }, 19 | "keywords": [ 20 | "leaflet", 21 | "plugins", 22 | "maps", 23 | "fullscreen" 24 | ], 25 | "ignore": [ 26 | "**/.*", 27 | "node_modules", 28 | "bower_components", 29 | "test", 30 | "tests", 31 | "index.html" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "camelcase": 0, 4 | "quotes": [2, "single", "avoid-escape"], 5 | "no-mixed-spaces-and-tabs": [2, "smart-tabs"], 6 | "space-before-function-paren": 2, 7 | "space-in-parens": 2, 8 | "object-curly-spacing": [2, "never"], 9 | "array-bracket-spacing": 2, 10 | "computed-property-spacing": 2, 11 | "space-before-blocks": 2, 12 | "keyword-spacing": 2, 13 | "no-lonely-if": 2, 14 | "comma-style": 2, 15 | "no-underscore-dangle": 0, 16 | "no-constant-condition": 0, 17 | "no-multi-spaces": 0, 18 | "strict": 0, 19 | "key-spacing": 0, 20 | "no-shadow": 0, 21 | "no-unused-vars": 2 22 | }, 23 | "globals": { 24 | "L": true, 25 | "module": false, 26 | "define": false, 27 | "require": true 28 | }, 29 | "env": { 30 | "browser": true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/Control.FullScreen.css: -------------------------------------------------------------------------------- 1 | .fullscreen-icon { background-image: url(icon-fullscreen.png); } 2 | .leaflet-retina .fullscreen-icon { background-image: url(icon-fullscreen-2x.png); background-size: 26px 26px; } 3 | /* one selector per rule as explained here : http://www.sitepoint.com/html5-full-screen-api/ */ 4 | .leaflet-container:-webkit-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; } 5 | .leaflet-container:-ms-fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; } 6 | .leaflet-container:full-screen { width: 100% !important; height: 100% !important; z-index: 99999; } 7 | .leaflet-container:fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; } 8 | .leaflet-pseudo-fullscreen { position: fixed !important; width: 100% !important; height: 100% !important; top: 0px !important; left: 0px !important; z-index: 99999; } -------------------------------------------------------------------------------- /ThirdParties/Leaflet.markercluster-1.4.1/MarkerCluster.css: -------------------------------------------------------------------------------- 1 | .leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow { 2 | -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; 3 | -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; 4 | -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; 5 | transition: transform 0.3s ease-out, opacity 0.3s ease-in; 6 | } 7 | 8 | .leaflet-cluster-spider-leg { 9 | /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */ 10 | -webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in; 11 | -moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in; 12 | -o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in; 13 | transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in; 14 | } 15 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Bruno Bergot 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /css/wp-gpx-maps-output.css: -------------------------------------------------------------------------------- 1 | /** 2 | * This file contains the style definitions for the output 3 | * 4 | */ 5 | .wpgpxmaps img, 6 | .entry-content .wpgpxmaps img, 7 | #content .wpgpxmaps img { 8 | width: none; 9 | max-width: none; 10 | margin: 0; 11 | padding: 0; 12 | border: none; 13 | background: none; 14 | } 15 | 16 | .wpgpxmaps { 17 | clear: both; 18 | } 19 | 20 | .wpgpxmaps .ngimages { 21 | display: none; 22 | } 23 | 24 | .wpgpxmaps .myngimages { 25 | position: absolute; 26 | z-index :1; 27 | margin:0; 28 | border: 1px solid #fff; 29 | cursor: pointer; 30 | } 31 | 32 | .wpgpxmaps_summary .summarylabel { 33 | font-weight: 400; 34 | } 35 | 36 | .wpgpxmaps_summary .summaryvalue { 37 | font-weight: 600; 38 | } 39 | 40 | .wpgpxmaps .report { 41 | line-height :120; 42 | } 43 | 44 | .wpgpxmaps .wpgpxmaps_osm_footer { 45 | position: absolute; 46 | z-index: 999; 47 | right: 0; 48 | bottom: 0; 49 | left: 0; 50 | width: 100%; 51 | height: 13px; 52 | margin: 0; 53 | background: #fff; 54 | font-size: 12px; 55 | } 56 | 57 | .wpgpxmaps .wpgpxmaps_osm_footer span { 58 | position: absolute; 59 | bottom: 0; 60 | padding: 0 6px 6px 6px; 61 | background: #fff; 62 | vertical-align: baseline; 63 | } 64 | -------------------------------------------------------------------------------- /ThirdParties/Leaflet.markercluster-1.4.1/MarkerCluster.Default.css: -------------------------------------------------------------------------------- 1 | .marker-cluster-small { 2 | background-color: rgba(181, 226, 140, 0.6); 3 | } 4 | .marker-cluster-small div { 5 | background-color: rgba(110, 204, 57, 0.6); 6 | } 7 | 8 | .marker-cluster-medium { 9 | background-color: rgba(241, 211, 87, 0.6); 10 | } 11 | .marker-cluster-medium div { 12 | background-color: rgba(240, 194, 12, 0.6); 13 | } 14 | 15 | .marker-cluster-large { 16 | background-color: rgba(253, 156, 115, 0.6); 17 | } 18 | .marker-cluster-large div { 19 | background-color: rgba(241, 128, 23, 0.6); 20 | } 21 | 22 | /* IE 6-8 fallback colors */ 23 | .leaflet-oldie .marker-cluster-small { 24 | background-color: rgb(181, 226, 140); 25 | } 26 | .leaflet-oldie .marker-cluster-small div { 27 | background-color: rgb(110, 204, 57); 28 | } 29 | 30 | .leaflet-oldie .marker-cluster-medium { 31 | background-color: rgb(241, 211, 87); 32 | } 33 | .leaflet-oldie .marker-cluster-medium div { 34 | background-color: rgb(240, 194, 12); 35 | } 36 | 37 | .leaflet-oldie .marker-cluster-large { 38 | background-color: rgb(253, 156, 115); 39 | } 40 | .leaflet-oldie .marker-cluster-large div { 41 | background-color: rgb(241, 128, 23); 42 | } 43 | 44 | .marker-cluster { 45 | background-clip: padding-box; 46 | border-radius: 20px; 47 | } 48 | .marker-cluster div { 49 | width: 30px; 50 | height: 30px; 51 | margin-left: 5px; 52 | margin-top: 5px; 53 | 54 | text-align: center; 55 | border-radius: 15px; 56 | font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; 57 | } 58 | .marker-cluster span { 59 | line-height: 30px; 60 | } -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Leaflet.Control.FullScreen Demo 6 | 7 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /css/admin-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * This file contains the style definitions for the admin area 3 | * 4 | * Content: 5 | * -------- 6 | * 1. Admin Body 7 | * 2. Over The Tabs 8 | * 3. Tab: Tracks 9 | * 3. Tab: Settings 10 | * 4. Tab: Help 11 | * 12 | */ 13 | 14 | /** 15 | * 1.0 Admin Body 16 | */ 17 | 18 | /** 19 | * 2.0 Over The Tabs 20 | */ 21 | 22 | h1.header-title { 23 | padding-top:15px; 24 | padding-left: 10px; 25 | } 26 | 27 | /** 28 | * 3.0 Tab: Tracks 29 | */ 30 | 31 | .tablenav-top { 32 | clear: both; 33 | height: 30px; 34 | margin-top: 10px; 35 | margin-bottom: 4px; 36 | margin-left: 10px; 37 | padding-bottom: 10px; 38 | } 39 | 40 | #table tbody tr:hover { 41 | background: #eee; 42 | } 43 | 44 | /** 45 | * 4.0 Tab: Settings 46 | */ 47 | .wpgpxmaps-container-tab-settings { 48 | display: block; 49 | padding: 5px 10px 1px 10px; 50 | } 51 | 52 | .wpgpxmaps-container-tab-settings table.form-table input[type="checkbox"] { 53 | margin-top: -4px; 54 | margin-right: 4px; 55 | } 56 | 57 | .wpgpxmaps-container-tab-settings table.form-table input[type="radio"] { 58 | margin-right: 4px; 59 | } 60 | 61 | .wpgpxmaps-container-tab-settings table.form-table input[type="text"] { 62 | margin-right: 4px; 63 | } 64 | 65 | /** 66 | * 5.0 Tab: Administration 67 | */ 68 | 69 | /** 70 | * 6.0 Tab: Help 71 | */ 72 | .wpgpxmaps-container-tab-faq { 73 | display: block; 74 | padding: 5px 10px 1px 10px; 75 | } 76 | 77 | .wpgpxmaps-tab-faq { 78 | display: block; 79 | padding: 5px 10px 10px 10px; 80 | } 81 | 82 | .wpgpxmaps-container-tab-faq table.widefat { 83 | margin-bottom: 10px; 84 | border-bottom: none; 85 | border-radius: 6px; 86 | } 87 | 88 | .wpgpxmaps-container-tab-faq table.widefat thead th.title { 89 | font-weight: 650; 90 | } 91 | 92 | .wpgpxmaps-container-tab-faq table.widefat td { 93 | width: 200px; 94 | } 95 | 96 | .wpgpxmaps-container-tab-faq table.widefat th, 97 | .wpgpxmaps-container-tab-faq table.widefat td { 98 | padding: 4px 10px; 99 | } 100 | 101 | .wpgpxmaps-container-tab-faq table.widefat tbody tr:hover { 102 | background: #eee; 103 | } 104 | 105 | 106 | .wpgpxmaps-container-tab-faq table.widefat thead th { 107 | font-size: 14px; 108 | } 109 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-fr_FR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-08-01 13:41+0100\n" 6 | "PO-Revision-Date: 2012-11-01 22:02+0100\n" 7 | "Last-Translator: Hervé \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.4\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:473 18 | msgid "Altitude" 19 | msgstr "Altitude" 20 | 21 | #: ../wp-gpx-maps.php:474 22 | msgid "Current Position" 23 | msgstr "Position actuelle" 24 | 25 | #: ../wp-gpx-maps.php:475 26 | msgid "Speed" 27 | msgstr "Vitesse" 28 | 29 | #: ../wp-gpx-maps.php:476 30 | msgid "Heart rate" 31 | msgstr "Fréquence cardiaque" 32 | 33 | #: ../wp-gpx-maps.php:477 34 | msgid "Cadence" 35 | msgstr "Cadence" 36 | 37 | #: ../wp-gpx-maps.php:478 38 | msgid "Go Full Screen" 39 | msgstr "Plein écran" 40 | 41 | #: ../wp-gpx-maps.php:479 42 | msgid "Exit Full Screen" 43 | msgstr "Sortir du plein écran" 44 | 45 | #: ../wp-gpx-maps.php:492 46 | msgid "Total distance" 47 | msgstr "Distance totale" 48 | 49 | #: ../wp-gpx-maps.php:497 50 | msgid "Max elevation" 51 | msgstr "Altitude maximum" 52 | 53 | #: ../wp-gpx-maps.php:499 54 | msgid "Min elevation" 55 | msgstr "Altitude minimum" 56 | 57 | #: ../wp-gpx-maps.php:501 58 | msgid "Total climbing" 59 | msgstr "Denivelé total positif " 60 | 61 | #: ../wp-gpx-maps.php:503 62 | msgid "Total descent" 63 | msgstr "Denivelé total négatif" 64 | 65 | #: ../wp-gpx-maps.php:507 66 | msgid "Average speed" 67 | msgstr "Vitesse moyenne" 68 | 69 | #: ../wp-gpx-maps.php:512 70 | msgid "Total Time" 71 | msgstr "Durée totale" 72 | 73 | #: ../wp-gpx-maps.php:528 74 | msgid "Download" 75 | msgstr "Télécharger" 76 | 77 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 78 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 79 | #: ../wp-gpx-maps_admin_settings.php:364 80 | msgid "Save Changes" 81 | msgstr "Enregistrer" 82 | -------------------------------------------------------------------------------- /ThirdParties/Leaflet.Photo/Leaflet.Photo.js: -------------------------------------------------------------------------------- 1 | L.Photo = L.FeatureGroup.extend({ 2 | options: { 3 | icon: { 4 | iconSize: [40, 40] 5 | } 6 | }, 7 | 8 | initialize: function (photos, options) { 9 | L.setOptions(this, options); 10 | L.FeatureGroup.prototype.initialize.call(this, photos); 11 | }, 12 | 13 | addLayers: function (photos) { 14 | if (photos) { 15 | for (var i = 0, len = photos.length; i < len; i++) { 16 | this.addLayer(photos[i]); 17 | } 18 | } 19 | return this; 20 | }, 21 | 22 | addLayer: function (photo) { 23 | L.FeatureGroup.prototype.addLayer.call(this, this.createMarker(photo)); 24 | }, 25 | 26 | createMarker: function (photo) { 27 | var marker = L.marker(photo, { 28 | icon: L.divIcon(L.extend({ 29 | html: '
​', 30 | className: 'leaflet-marker-photo' 31 | }, photo, this.options.icon)), 32 | title: photo.caption || '' 33 | }); 34 | marker.photo = photo; 35 | return marker; 36 | } 37 | }); 38 | 39 | L.photo = function (photos, options) { 40 | return new L.Photo(photos, options); 41 | }; 42 | 43 | if (L.MarkerClusterGroup) { 44 | 45 | L.Photo.Cluster = L.MarkerClusterGroup.extend({ 46 | options: { 47 | featureGroup: L.photo, 48 | maxClusterRadius: 100, 49 | showCoverageOnHover: false, 50 | iconCreateFunction: function(cluster) { 51 | return new L.DivIcon(L.extend({ 52 | className: 'leaflet-marker-photo', 53 | html: '
' + cluster.getChildCount() + '' 54 | }, this.icon)); 55 | }, 56 | icon: { 57 | iconSize: [40, 40] 58 | } 59 | }, 60 | 61 | initialize: function (options) { 62 | options = L.Util.setOptions(this, options); 63 | L.MarkerClusterGroup.prototype.initialize.call(this); 64 | this._photos = options.featureGroup(null, options); 65 | }, 66 | 67 | add: function (photos) { 68 | this.addLayer(this._photos.addLayers(photos)); 69 | return this; 70 | }, 71 | 72 | clear: function () { 73 | this._photos.clearLayers(); 74 | this.clearLayers(); 75 | } 76 | 77 | }); 78 | 79 | L.photo.cluster = function (options) { 80 | return new L.Photo.Cluster(options); 81 | }; 82 | 83 | } -------------------------------------------------------------------------------- /languages/wp-gpx-maps-nl_NL.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2012-10-30 14:41+0100\n" 7 | "Last-Translator: Simon Koelewijn\n" 8 | "Language-Team: \n" 9 | "Language: nl_NL\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Poedit-KeywordsList: __;_e\n" 14 | "X-Poedit-Basepath: .\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Hoogte" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Huidige Positie" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Snelheid" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Hartslag" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Cadans" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "Volledige Scherm" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Verlaat Volledige Scherm" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Download" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Wijzigingen Opslaan" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-hu_HU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:42+0100\n" 6 | "PO-Revision-Date: 2012-10-30 14:43+0100\n" 7 | "Last-Translator: Biró Tamás \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Poedit-SearchPath-0: ..\n" 15 | 16 | #: ../wp-gpx-maps.php:467 17 | msgid "Altitude" 18 | msgstr "Magasság" 19 | 20 | #: ../wp-gpx-maps.php:468 21 | msgid "Current Position" 22 | msgstr "Aktuális pozíció" 23 | 24 | #: ../wp-gpx-maps.php:469 25 | msgid "Speed" 26 | msgstr "Sebesség" 27 | 28 | #: ../wp-gpx-maps.php:470 29 | msgid "Heart rate" 30 | msgstr "Szívritmus" 31 | 32 | #: ../wp-gpx-maps.php:471 33 | msgid "Cadence" 34 | msgstr "Kadencia" 35 | 36 | #: ../wp-gpx-maps.php:472 37 | msgid "Go Full Screen" 38 | msgstr "Teljes képernyő BE" 39 | 40 | #: ../wp-gpx-maps.php:473 41 | msgid "Exit Full Screen" 42 | msgstr "Teljes képernyő KI" 43 | 44 | #: ../wp-gpx-maps.php:474 45 | msgid "Hide Images" 46 | msgstr "" 47 | 48 | #: ../wp-gpx-maps.php:475 49 | msgid "Show Images" 50 | msgstr "" 51 | 52 | #: ../wp-gpx-maps.php:476 53 | msgid "Back to center" 54 | msgstr "" 55 | 56 | #: ../wp-gpx-maps.php:489 57 | msgid "Total distance" 58 | msgstr "Teljes távolság" 59 | 60 | #: ../wp-gpx-maps.php:494 61 | msgid "Max elevation" 62 | msgstr "Max magasság" 63 | 64 | #: ../wp-gpx-maps.php:496 65 | msgid "Min elevation" 66 | msgstr "Min magasság" 67 | 68 | #: ../wp-gpx-maps.php:498 69 | msgid "Total climbing" 70 | msgstr "Össz. emelkedés" 71 | 72 | #: ../wp-gpx-maps.php:500 73 | msgid "Total descent" 74 | msgstr "Össz. ereszkedés" 75 | 76 | #: ../wp-gpx-maps.php:504 77 | msgid "Average speed" 78 | msgstr "Átlagsebesség" 79 | 80 | #: ../wp-gpx-maps.php:509 81 | msgid "Total Time" 82 | msgstr "Teljes Idő" 83 | 84 | #: ../wp-gpx-maps.php:525 85 | msgid "Download" 86 | msgstr "Letöltés" 87 | 88 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 89 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 90 | #: ../wp-gpx-maps_admin_settings.php:364 91 | msgid "Save Changes" 92 | msgstr "Beállítások mentése" 93 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-sv_SE.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2012-10-30 14:41+0100\n" 7 | "Last-Translator: Per Bjälevik \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Poedit-SearchPath-0: ..\n" 15 | 16 | #: ../wp-gpx-maps.php:467 17 | msgid "Altitude" 18 | msgstr "Höjd" 19 | 20 | #: ../wp-gpx-maps.php:468 21 | msgid "Current Position" 22 | msgstr "Aktuell position" 23 | 24 | #: ../wp-gpx-maps.php:469 25 | msgid "Speed" 26 | msgstr "Hastighet" 27 | 28 | #: ../wp-gpx-maps.php:470 29 | msgid "Heart rate" 30 | msgstr "Hjärtfrekvens" 31 | 32 | #: ../wp-gpx-maps.php:471 33 | msgid "Cadence" 34 | msgstr "Kadens" 35 | 36 | #: ../wp-gpx-maps.php:472 37 | msgid "Go Full Screen" 38 | msgstr "Gå till fullskärm" 39 | 40 | #: ../wp-gpx-maps.php:473 41 | msgid "Exit Full Screen" 42 | msgstr "Avsluta fullskärm" 43 | 44 | #: ../wp-gpx-maps.php:474 45 | msgid "Hide Images" 46 | msgstr "" 47 | 48 | #: ../wp-gpx-maps.php:475 49 | msgid "Show Images" 50 | msgstr "" 51 | 52 | #: ../wp-gpx-maps.php:476 53 | msgid "Back to center" 54 | msgstr "" 55 | 56 | #: ../wp-gpx-maps.php:489 57 | msgid "Total distance" 58 | msgstr "Total distans" 59 | 60 | #: ../wp-gpx-maps.php:494 61 | msgid "Max elevation" 62 | msgstr "Max höjd" 63 | 64 | #: ../wp-gpx-maps.php:496 65 | msgid "Min elevation" 66 | msgstr "Min höjd" 67 | 68 | #: ../wp-gpx-maps.php:498 69 | msgid "Total climbing" 70 | msgstr "Höjdstigning" 71 | 72 | #: ../wp-gpx-maps.php:500 73 | msgid "Total descent" 74 | msgstr "Höjdförlust" 75 | 76 | #: ../wp-gpx-maps.php:504 77 | msgid "Average speed" 78 | msgstr "Medelhastighet" 79 | 80 | #: ../wp-gpx-maps.php:509 81 | #, fuzzy 82 | msgid "Total Time" 83 | msgstr "Total distans" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Ladda ner" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Spara ändringar" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-tr_TR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:42+0100\n" 6 | "PO-Revision-Date: 2012-10-30 14:42+0100\n" 7 | "Last-Translator: \n" 8 | "Language-Team: \n" 9 | "Language: tr_TR\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Poedit-KeywordsList: __;_e\n" 14 | "X-Poedit-Basepath: .\n" 15 | "X-Generator: Poedit 1.5.4\n" 16 | "X-Poedit-SearchPath-0: ..\n" 17 | 18 | #: ../wp-gpx-maps.php:467 19 | msgid "Altitude" 20 | msgstr "Rakım" 21 | 22 | #: ../wp-gpx-maps.php:468 23 | msgid "Current Position" 24 | msgstr "Güncel Pozisyon" 25 | 26 | #: ../wp-gpx-maps.php:469 27 | msgid "Speed" 28 | msgstr "Hız" 29 | 30 | #: ../wp-gpx-maps.php:470 31 | msgid "Heart rate" 32 | msgstr "Nabız" 33 | 34 | #: ../wp-gpx-maps.php:471 35 | msgid "Cadence" 36 | msgstr "Kadans" 37 | 38 | #: ../wp-gpx-maps.php:472 39 | msgid "Go Full Screen" 40 | msgstr "Tam Ekran Gör" 41 | 42 | #: ../wp-gpx-maps.php:473 43 | msgid "Exit Full Screen" 44 | msgstr "Tam Ekrandan Çık" 45 | 46 | #: ../wp-gpx-maps.php:474 47 | msgid "Hide Images" 48 | msgstr "" 49 | 50 | #: ../wp-gpx-maps.php:475 51 | msgid "Show Images" 52 | msgstr "" 53 | 54 | #: ../wp-gpx-maps.php:476 55 | msgid "Back to center" 56 | msgstr "" 57 | 58 | #: ../wp-gpx-maps.php:489 59 | msgid "Total distance" 60 | msgstr "Toplam Mesafe" 61 | 62 | #: ../wp-gpx-maps.php:494 63 | msgid "Max elevation" 64 | msgstr "Maks. İrtifa" 65 | 66 | #: ../wp-gpx-maps.php:496 67 | msgid "Min elevation" 68 | msgstr "Min. İrtifa" 69 | 70 | #: ../wp-gpx-maps.php:498 71 | msgid "Total climbing" 72 | msgstr "Toplam Tırmanış" 73 | 74 | #: ../wp-gpx-maps.php:500 75 | msgid "Total descent" 76 | msgstr "Toplam İniş" 77 | 78 | #: ../wp-gpx-maps.php:504 79 | msgid "Average speed" 80 | msgstr "Ortalama Hız" 81 | 82 | #: ../wp-gpx-maps.php:509 83 | msgid "Total Time" 84 | msgstr "Toplam Süre" 85 | 86 | #: ../wp-gpx-maps.php:525 87 | msgid "Download" 88 | msgstr "İndir" 89 | 90 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 91 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 92 | #: ../wp-gpx-maps_admin_settings.php:364 93 | msgid "Save Changes" 94 | msgstr "Değişiklikleri Kaydet" 95 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ru_RU.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2013-07-17 20:50+0400\n" 7 | "Last-Translator: G.A.P \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.7\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Высота" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Текущая позиция" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Скорость" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Пульс" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Каденс" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "На весь экран" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Свернуть в окно" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "Скрыть картинки" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "Показать картинки" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "По центру" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "Дистанция" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "Максимальная высота" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "Минимальная высота" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "Подъём" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "Спуск" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "Средняя скорость" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "Время" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Скачать" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Сохранить изменения" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-pt_BR.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:42+0100\n" 6 | "PO-Revision-Date: 2013-04-23 18:36-0300\n" 7 | "Last-Translator: André Ramos \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.4\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Altitude" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Posição atual" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Velocidade" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Ritmo cardíaco" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Cadência" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "Tela cheia" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Restaura janela" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "Ocultar imagens" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "Centralizar" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "Distância total" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "Elevação máxima" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "Elevação mínima" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "Total subida" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "Total descida" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "Velocidade média" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "Tempo total" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Baixar arquivo" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Salvar alterações" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-bg_BG.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2013-11-16 23:13+0200\n" 7 | "Last-Translator: Svilen Savov \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.7\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Височина" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Текуща Позиция" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Скорост" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Пулс" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Ритъм" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "Покажи на цял екран" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Изход от цял екран" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "Скрий Снимките" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "Покажи Снкмките" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "Центрирай" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "Обща дистанция" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "Максимална височина" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "Минимална височина" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "Общо изкачване" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "Общо спускане" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "Средна скорост" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "Общо Време" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Свали" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Запази Промените" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-ca.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2013-12-14 21:43+0100\n" 7 | "Last-Translator: edgar \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.5\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Altitud" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Posició actual" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Velocitat" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Ritme cardíac" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Cadència" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "Anar a pantalla completa" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Sortir de pantalla completa" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "Amagar imatges" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "Mostrar imatges" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "Centrar" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "Distància total" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "Altitud màxima" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "Altitud mínima" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "Ascensió total" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "Descens total" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "Velocitat mitjana" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "Temps total" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Descarregar" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Desar canvis" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-es_ES.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:42+0100\n" 6 | "PO-Revision-Date: 2013-12-14 21:43+0100\n" 7 | "Last-Translator: edgar \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.5\n" 15 | "X-Poedit-SearchPath-0: ..\n" 16 | 17 | #: ../wp-gpx-maps.php:467 18 | msgid "Altitude" 19 | msgstr "Altitud" 20 | 21 | #: ../wp-gpx-maps.php:468 22 | msgid "Current Position" 23 | msgstr "Posición actual" 24 | 25 | #: ../wp-gpx-maps.php:469 26 | msgid "Speed" 27 | msgstr "Velocidad" 28 | 29 | #: ../wp-gpx-maps.php:470 30 | msgid "Heart rate" 31 | msgstr "Ritmo cardíaco" 32 | 33 | #: ../wp-gpx-maps.php:471 34 | msgid "Cadence" 35 | msgstr "Cadencia" 36 | 37 | #: ../wp-gpx-maps.php:472 38 | msgid "Go Full Screen" 39 | msgstr "Ir a pantalla completa" 40 | 41 | #: ../wp-gpx-maps.php:473 42 | msgid "Exit Full Screen" 43 | msgstr "Salir de pantalla completa" 44 | 45 | #: ../wp-gpx-maps.php:474 46 | msgid "Hide Images" 47 | msgstr "Ocultar Imágenes" 48 | 49 | #: ../wp-gpx-maps.php:475 50 | msgid "Show Images" 51 | msgstr "Mostrar Imágenes" 52 | 53 | #: ../wp-gpx-maps.php:476 54 | msgid "Back to center" 55 | msgstr "Centrar" 56 | 57 | #: ../wp-gpx-maps.php:489 58 | msgid "Total distance" 59 | msgstr "Distancia total" 60 | 61 | #: ../wp-gpx-maps.php:494 62 | msgid "Max elevation" 63 | msgstr "Elevación máxima" 64 | 65 | #: ../wp-gpx-maps.php:496 66 | msgid "Min elevation" 67 | msgstr "Elevación mínima" 68 | 69 | #: ../wp-gpx-maps.php:498 70 | msgid "Total climbing" 71 | msgstr "Total ascendido" 72 | 73 | #: ../wp-gpx-maps.php:500 74 | msgid "Total descent" 75 | msgstr "Total descendido" 76 | 77 | #: ../wp-gpx-maps.php:504 78 | msgid "Average speed" 79 | msgstr "Velocidad media" 80 | 81 | #: ../wp-gpx-maps.php:509 82 | msgid "Total Time" 83 | msgstr "Tiempo total" 84 | 85 | #: ../wp-gpx-maps.php:525 86 | msgid "Download" 87 | msgstr "Descargar" 88 | 89 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 90 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 91 | #: ../wp-gpx-maps_admin_settings.php:364 92 | msgid "Save Changes" 93 | msgstr "Salvar cambios" 94 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-it_IT.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:48+0100\n" 6 | "PO-Revision-Date: 2013-02-04 09:22+0100\n" 7 | "Last-Translator: \n" 8 | "Language-Team: \n" 9 | "Language: it_IT\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Poedit-KeywordsList: __;_e\n" 14 | "X-Poedit-Basepath: .\n" 15 | "X-Generator: Poedit 1.5.4\n" 16 | "X-Poedit-SearchPath-0: ..\n" 17 | 18 | #: ../wp-gpx-maps.php:467 19 | msgid "Altitude" 20 | msgstr "Altitudine" 21 | 22 | #: ../wp-gpx-maps.php:468 23 | msgid "Current Position" 24 | msgstr "Posizione Corrente" 25 | 26 | #: ../wp-gpx-maps.php:469 27 | msgid "Speed" 28 | msgstr "Velocità" 29 | 30 | #: ../wp-gpx-maps.php:470 31 | msgid "Heart rate" 32 | msgstr "Battito Cardiaco" 33 | 34 | #: ../wp-gpx-maps.php:471 35 | msgid "Cadence" 36 | msgstr "Cadenza" 37 | 38 | #: ../wp-gpx-maps.php:472 39 | msgid "Go Full Screen" 40 | msgstr "Schermo intero" 41 | 42 | #: ../wp-gpx-maps.php:473 43 | msgid "Exit Full Screen" 44 | msgstr "Torna a dimensioni originali" 45 | 46 | #: ../wp-gpx-maps.php:474 47 | msgid "Hide Images" 48 | msgstr "Nascondi immagini" 49 | 50 | #: ../wp-gpx-maps.php:475 51 | msgid "Show Images" 52 | msgstr "Mostra immagini" 53 | 54 | #: ../wp-gpx-maps.php:476 55 | msgid "Back to center" 56 | msgstr "Ritorna al centro della mappa" 57 | 58 | #: ../wp-gpx-maps.php:489 59 | msgid "Total distance" 60 | msgstr "Distanza totale" 61 | 62 | #: ../wp-gpx-maps.php:494 63 | msgid "Max elevation" 64 | msgstr "Altitudine massima" 65 | 66 | #: ../wp-gpx-maps.php:496 67 | msgid "Min elevation" 68 | msgstr "Altitudine minima" 69 | 70 | #: ../wp-gpx-maps.php:498 71 | msgid "Total climbing" 72 | msgstr "Totale salita" 73 | 74 | #: ../wp-gpx-maps.php:500 75 | msgid "Total descent" 76 | msgstr "Totale discesa" 77 | 78 | #: ../wp-gpx-maps.php:504 79 | msgid "Average speed" 80 | msgstr "Velocità media" 81 | 82 | #: ../wp-gpx-maps.php:509 83 | msgid "Total Time" 84 | msgstr "Tempo totale" 85 | 86 | #: ../wp-gpx-maps.php:525 87 | msgid "Download" 88 | msgstr "Scarica" 89 | 90 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 91 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 92 | #: ../wp-gpx-maps_admin_settings.php:364 93 | msgid "Save Changes" 94 | msgstr "Salva" 95 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-pl_PL.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2013-03-10 12:33+0100\n" 7 | "Last-Translator: \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Generator: Poedit 1.5.5\n" 15 | "Language: pl_PL\n" 16 | "X-Poedit-SourceCharset: UTF-8\n" 17 | "X-Poedit-SearchPath-0: ..\n" 18 | 19 | #: ../wp-gpx-maps.php:467 20 | msgid "Altitude" 21 | msgstr "Wysokość" 22 | 23 | #: ../wp-gpx-maps.php:468 24 | msgid "Current Position" 25 | msgstr "Aktualna pozycja" 26 | 27 | #: ../wp-gpx-maps.php:469 28 | msgid "Speed" 29 | msgstr "Prędkość" 30 | 31 | #: ../wp-gpx-maps.php:470 32 | msgid "Heart rate" 33 | msgstr "Tętno" 34 | 35 | #: ../wp-gpx-maps.php:471 36 | msgid "Cadence" 37 | msgstr "Kadencja" 38 | 39 | #: ../wp-gpx-maps.php:472 40 | msgid "Go Full Screen" 41 | msgstr "Pełny ekran" 42 | 43 | #: ../wp-gpx-maps.php:473 44 | msgid "Exit Full Screen" 45 | msgstr "Zamknij pełny ekran" 46 | 47 | #: ../wp-gpx-maps.php:474 48 | msgid "Hide Images" 49 | msgstr "Ukryj obrazy" 50 | 51 | #: ../wp-gpx-maps.php:475 52 | msgid "Show Images" 53 | msgstr "Pokaż obrazy" 54 | 55 | #: ../wp-gpx-maps.php:476 56 | msgid "Back to center" 57 | msgstr "Wyśrodkuj" 58 | 59 | #: ../wp-gpx-maps.php:489 60 | msgid "Total distance" 61 | msgstr "Całkowity dystans" 62 | 63 | #: ../wp-gpx-maps.php:494 64 | msgid "Max elevation" 65 | msgstr "Najwyższy punkt" 66 | 67 | #: ../wp-gpx-maps.php:496 68 | msgid "Min elevation" 69 | msgstr "Najniższy punkt" 70 | 71 | #: ../wp-gpx-maps.php:498 72 | msgid "Total climbing" 73 | msgstr "Wyskokość podjazdów" 74 | 75 | #: ../wp-gpx-maps.php:500 76 | msgid "Total descent" 77 | msgstr "Wysokość zjazdów" 78 | 79 | #: ../wp-gpx-maps.php:504 80 | msgid "Average speed" 81 | msgstr "Średnia prędkość" 82 | 83 | #: ../wp-gpx-maps.php:509 84 | msgid "Total Time" 85 | msgstr "Łączny czas" 86 | 87 | #: ../wp-gpx-maps.php:525 88 | msgid "Download" 89 | msgstr "Pobieranie" 90 | 91 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 92 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 93 | #: ../wp-gpx-maps_admin_settings.php:364 94 | msgid "Save Changes" 95 | msgstr "Zapisz zmiany" 96 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-cs_CZ.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2015-11-21 11:14+0100\n" 6 | "PO-Revision-Date: 2015-11-21 11:18+0100\n" 7 | "Language-Team: \n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "X-Poedit-KeywordsList: __;_e\n" 12 | "X-Poedit-Basepath: .\n" 13 | "X-Generator: Poedit 1.8.6\n" 14 | "Last-Translator: \n" 15 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 16 | "Language: cs_CZ\n" 17 | "X-Poedit-SearchPath-0: ..\n" 18 | 19 | #: ../wp-gpx-maps.php:467 20 | msgid "Altitude" 21 | msgstr "Nadmořská výška" 22 | 23 | #: ../wp-gpx-maps.php:468 24 | msgid "Current Position" 25 | msgstr "Aktuální pozice" 26 | 27 | #: ../wp-gpx-maps.php:469 28 | msgid "Speed" 29 | msgstr "Rychlost" 30 | 31 | #: ../wp-gpx-maps.php:470 32 | msgid "Heart rate" 33 | msgstr "Srdeční tep" 34 | 35 | #: ../wp-gpx-maps.php:471 36 | msgid "Cadence" 37 | msgstr "Kadence" 38 | 39 | #: ../wp-gpx-maps.php:472 40 | msgid "Go Full Screen" 41 | msgstr "Zvětšit" 42 | 43 | #: ../wp-gpx-maps.php:473 44 | msgid "Exit Full Screen" 45 | msgstr "Zmenšit" 46 | 47 | #: ../wp-gpx-maps.php:474 48 | msgid "Hide Images" 49 | msgstr "Skrýt obrázky" 50 | 51 | #: ../wp-gpx-maps.php:475 52 | msgid "Show Images" 53 | msgstr "Zobrazit obrázky" 54 | 55 | #: ../wp-gpx-maps.php:476 56 | msgid "Back to center" 57 | msgstr "Vycentrovat" 58 | 59 | #: ../wp-gpx-maps.php:489 60 | msgid "Total distance" 61 | msgstr "Celková vzdálenost" 62 | 63 | #: ../wp-gpx-maps.php:494 64 | msgid "Max elevation" 65 | msgstr "Max. výška" 66 | 67 | #: ../wp-gpx-maps.php:496 68 | msgid "Min elevation" 69 | msgstr "Min. výška" 70 | 71 | #: ../wp-gpx-maps.php:498 72 | msgid "Total climbing" 73 | msgstr "Celkem nastoupáno" 74 | 75 | #: ../wp-gpx-maps.php:500 76 | msgid "Total descent" 77 | msgstr "Celkem naklesáno" 78 | 79 | #: ../wp-gpx-maps.php:504 80 | msgid "Average speed" 81 | msgstr "Průměrná rychlost" 82 | 83 | #: ../wp-gpx-maps.php:509 84 | msgid "Total Time" 85 | msgstr "Celkový čas" 86 | 87 | #: ../wp-gpx-maps.php:525 88 | msgid "Download" 89 | msgstr "Stáhnout" 90 | 91 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 92 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 93 | #: ../wp-gpx-maps_admin_settings.php:364 94 | msgid "Save Changes" 95 | msgstr "Uložit změny" 96 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps-nb_NO.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: wp-gpx-maps\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2012-10-30 14:41+0100\n" 6 | "PO-Revision-Date: 2017-09-21 20:50+0000\n" 7 | "Last-Translator: Thor Fredrik Eie \n" 8 | "Language-Team: Norwegian (Bokmål)\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-KeywordsList: __;_e\n" 13 | "X-Poedit-Basepath: .\n" 14 | "X-Poedit-SearchPath-0: ..\n" 15 | "Language: nb-NO\n" 16 | "Plural-Forms: nplurals=2; plural=n != 1\n" 17 | "X-Generator: Loco - https://localise.biz/" 18 | 19 | #: ../wp-gpx-maps.php:471 20 | msgid "Cadence" 21 | msgstr "Kadens" 22 | 23 | #: ../wp-gpx-maps.php:467 24 | msgid "Altitude" 25 | msgstr "Høyde" 26 | 27 | #: ../wp-gpx-maps.php:468 28 | msgid "Current Position" 29 | msgstr "Nåværende posisjon" 30 | 31 | #: ../wp-gpx-maps.php:469 32 | msgid "Speed" 33 | msgstr "Fart" 34 | 35 | #: ../wp-gpx-maps.php:470 36 | msgid "Heart rate" 37 | msgstr "Hjerterate" 38 | 39 | #: ../wp-gpx-maps.php:472 40 | msgid "Go Full Screen" 41 | msgstr "Fullskjerm" 42 | 43 | #: ../wp-gpx-maps.php:473 44 | msgid "Exit Full Screen" 45 | msgstr "Avslutt fullskjerm" 46 | 47 | #: ../wp-gpx-maps.php:474 48 | msgid "Hide Images" 49 | msgstr "Skjul bilder" 50 | 51 | #: ../wp-gpx-maps.php:475 52 | msgid "Show Images" 53 | msgstr "Vis bilder" 54 | 55 | #: ../wp-gpx-maps.php:476 56 | msgid "Back to center" 57 | msgstr "Sentrer" 58 | 59 | #: ../wp-gpx-maps.php:489 60 | msgid "Total distance" 61 | msgstr "Total distanse" 62 | 63 | #: ../wp-gpx-maps.php:494 64 | msgid "Max elevation" 65 | msgstr "Maksimum høyde" 66 | 67 | #: ../wp-gpx-maps.php:496 68 | msgid "Min elevation" 69 | msgstr "Minimum høyde" 70 | 71 | #: ../wp-gpx-maps.php:498 72 | msgid "Total climbing" 73 | msgstr "Total klatring" 74 | 75 | #: ../wp-gpx-maps.php:500 76 | msgid "Total descent" 77 | msgstr "Total nedstigning" 78 | 79 | #: ../wp-gpx-maps.php:504 80 | msgid "Average speed" 81 | msgstr "Gjennomsnittsfart" 82 | 83 | #: ../wp-gpx-maps.php:509 84 | msgid "Total Time" 85 | msgstr "Total tid" 86 | 87 | #: ../wp-gpx-maps.php:525 88 | msgid "Download" 89 | msgstr "Last ned" 90 | 91 | #: ../wp-gpx-maps_admin_settings.php:83 ../wp-gpx-maps_admin_settings.php:151 92 | #: ../wp-gpx-maps_admin_settings.php:229 ../wp-gpx-maps_admin_settings.php:333 93 | #: ../wp-gpx-maps_admin_settings.php:364 94 | msgid "Save Changes" 95 | msgstr "Lagre endringer" 96 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/README.md: -------------------------------------------------------------------------------- 1 | Leaflet.Control.FullScreen 2 | ============ 3 | 4 | What ? 5 | ------ 6 | 7 | Simple plugin for Leaflet that adds fullscreen button to your maps. 8 | 9 | Inspired by http://elidupuis.github.com/leaflet.zoomfs/ 10 | 11 | Use the native javascript fullscreen API http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/ 12 | 13 | Released under the MIT License http://opensource.org/licenses/mit-license.php 14 | 15 | How ? 16 | ------ 17 | 18 | Include Control.FullScreen.js and Control.FullScreen.css in your page: 19 | 20 | ``` html 21 | 22 | 23 | ``` 24 | 25 | Add the fullscreen control to the map: 26 | 27 | ``` js 28 | var map = new L.Map('map', { 29 | fullscreenControl: true, 30 | fullscreenControlOptions: { 31 | position: 'topleft' 32 | } 33 | }); 34 | ``` 35 | 36 | If your map have a zoomControl the fullscreen button will be added at the bottom of this one. 37 | 38 | If your map doesn't have a zoomContron the fullscreen button will be added to topleft corner of the map (same as the zoomcontrol). 39 | 40 | If you want to use the plugin on a map embedded in an iframe, don't forget to set `allowfullscreen` attribute on your iframe. 41 | 42 | __Events and options__: 43 | 44 | ``` js 45 | // create a fullscreen button and add it to the map 46 | L.control.fullscreen({ 47 | position: 'topleft', // change the position of the button can be topleft, topright, bottomright or bottomleft, defaut topleft 48 | title: 'Show me the fullscreen !', // change the title of the button, default Full Screen 49 | titleCancel: 'Exit fullscreen mode', // change the title of the button when fullscreen is on, default Exit Full Screen 50 | content: null, // change the content of the button, can be HTML, default null 51 | forceSeparateButton: true, // force seperate button to detach from zoom buttons, default false 52 | forcePseudoFullscreen: true, // force use of pseudo full screen even if full screen API is available, default false 53 | fullscreenElement: false // Dom element to render in full screen, false by default, fallback to map._container 54 | }).addTo(map); 55 | 56 | // events are fired when entering or exiting fullscreen. 57 | map.on('enterFullscreen', function(){ 58 | console.log('entered fullscreen'); 59 | }); 60 | 61 | map.on('exitFullscreen', function(){ 62 | console.log('exited fullscreen'); 63 | }); 64 | ``` 65 | 66 | Where ? 67 | ------ 68 | 69 | Source code : https://github.com/brunob/leaflet.fullscreen 70 | 71 | Downloads : https://github.com/brunob/leaflet.fullscreen/releases 72 | 73 | Demo : http://brunob.github.com/leaflet.fullscreen/ 74 | -------------------------------------------------------------------------------- /wp-gpx-maps-admin-administration.php: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | 26 |
27 | 28 |
29 | 30 | 31 |

32 | 33 |

34 | 35 | 36 | 37 | 38 | 41 | 47 | 48 | 49 |
39 | 40 | 42 | /> 43 | 44 | 45 | 46 |
50 | 51 |

52 | 53 | 54 | 55 |

56 | 57 |
58 | 59 |
60 | 61 |
62 | 63 | 64 |

65 | 66 |

67 | 68 | 69 | 70 | 73 | 79 | 80 | 81 |
71 | 72 | 74 | /> 75 | 76 | 77 | 78 |
82 | 83 |

84 | 85 | 86 | 87 |

88 | 89 |
90 | 91 |
92 | 93 | 94 | -------------------------------------------------------------------------------- /assets/icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /wp-gpx-maps-utils-nggallery.php: -------------------------------------------------------------------------------- 1 | thumbHTML; 38 | if ( is_callable( 'exif_read_data' ) ) { 39 | $exif = @exif_read_data( $p->imagePath ); 40 | if ( $exif !== false ) { 41 | $item['lon'] = getExifGps( $exif['GPSLongitude'], $exif['GPSLongitudeRef'] ); 42 | $item['lat'] = getExifGps( $exif['GPSLatitude'], $exif['GPSLatitudeRef'] ); 43 | if ( ( $item['lat'] != 0 ) || ( $item['lon'] != 0 ) ) { 44 | $result[] = $item; 45 | } elseif ( isset( $p->imagedate ) ) { 46 | $_dt = strtotime( $p->imagedate ) + $dtoffset; 47 | $_item = findItemCoordinate( $_dt, $dt, $lat, $lon ); 48 | if ( $_item != null ) { 49 | $item['lat'] = $_item['lat']; 50 | $item['lon'] = $_item['lon']; 51 | $result[] = $item; 52 | } 53 | } 54 | } 55 | } else { 56 | $error .= "Sorry, exif_read_data function not found! check your hosting.
"; 57 | } 58 | } 59 | /* START FIX NEXT GEN GALLERY 2.x */ 60 | if ( class_exists( 'C_Component_Registry' ) ) { 61 | $renderer = C_Component_Registry::get_instance()->get_utility( 'I_Displayed_Gallery_Renderer' ); 62 | $params['gallery_ids'] = $ngGalleries; 63 | $params['image_ids'] = $ngImages; 64 | $params['display_type'] = NEXTGEN_GALLERY_BASIC_THUMBNAILS; 65 | $params['images_per_page'] = 999; 66 | /* Salso add js references to get the gallery working */ 67 | $dummy = $renderer->display_images( $params, $inner_content ); 68 | 69 | /* START FIX NEXT GEN GALLERY PRO */ 70 | 71 | if ( preg_match( "/data-nplmodal-gallery-id=[\"'](.*?)[\"']/", $dummy, $m ) ) { 72 | $galid = $m[1]; 73 | if ( $galid ) { 74 | for ( $i = 0; $i < count( $result ); ++$i ) { 75 | $result[$i]['data'] = str_replace( '%PRO_LIGHTBOX_GALLERY_ID%', $galid, $result[$i]['data'] ); 76 | } 77 | } 78 | } 79 | /* END FIX NEXT GEN GALLERY PRO */ 80 | } 81 | /* END FIX NEXT GEN GALLERY 2.x */ 82 | 83 | } catch ( Exception $e ) { 84 | $error .= 'Error When Retrieving NextGen Gallery galleries/images: $e
'; 85 | } 86 | return $result; 87 | } 88 | 89 | function findItemCoordinate( $imgdt, $dt, $lat, $lon ) { 90 | 91 | foreach ( array_keys( $dt ) as $i ) { 92 | if ( $i != 0 && $imgdt >= $dt[$i - 1] && $imgdt <= $dt[$i] ) { 93 | if ( $lat[$i] != 0 && $lon[$i] != 0 ) 94 | return array( 95 | 'lat' => $lat[$i], 96 | 'lon' => $lon[$i], 97 | ); 98 | } 99 | } 100 | return null; 101 | } 102 | 103 | function getExifGps( $exifCoord, $hemi ) { 104 | 105 | $degrees = count( $exifCoord ) > 0 ? gps2Num( $exifCoord[0] ) : 0; 106 | $minutes = count( $exifCoord ) > 1 ? gps2Num( $exifCoord[1] ) : 0; 107 | $seconds = count( $exifCoord ) > 2 ? gps2Num( $exifCoord[2] ) : 0; 108 | $flip = ( 'W' == $hemi or 'S' == $hemi ) ? -1 : 1; 109 | 110 | return $flip * ( $degrees + $minutes / 60 + $seconds / 3600 ); 111 | } 112 | 113 | function gps2Num( $coordPart ) { 114 | 115 | $parts = explode( '/', $coordPart ); 116 | 117 | if ( count( $parts ) <= 0 ) 118 | return 0; 119 | 120 | if ( count( $parts ) == 1 ) 121 | return $parts[0]; 122 | 123 | $lat = floatval( $parts[0] ); 124 | $lon = floatval( $parts[1] ); 125 | 126 | if ( 0 == $lon ) 127 | return $lat; 128 | return $lat / $lon; 129 | } 130 | -------------------------------------------------------------------------------- /ThirdParties/leaflet.fullscreen-1.4.5/Control.FullScreen.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | 3 | L.Control.FullScreen = L.Control.extend({ 4 | options: { 5 | position: 'topleft', 6 | title: 'Full Screen', 7 | titleCancel: 'Exit Full Screen', 8 | forceSeparateButton: false, 9 | forcePseudoFullscreen: false, 10 | fullscreenElement: false 11 | }, 12 | 13 | onAdd: function (map) { 14 | var className = 'leaflet-control-zoom-fullscreen', container, content = ''; 15 | 16 | if (map.zoomControl && !this.options.forceSeparateButton) { 17 | container = map.zoomControl._container; 18 | } else { 19 | container = L.DomUtil.create('div', 'leaflet-bar'); 20 | } 21 | 22 | if (this.options.content) { 23 | content = this.options.content; 24 | } else { 25 | className += ' fullscreen-icon'; 26 | } 27 | 28 | this._createButton(this.options.title, className, content, container, this.toggleFullScreen, this); 29 | 30 | this._map.on('enterFullscreen exitFullscreen', this._toggleTitle, this); 31 | 32 | return container; 33 | }, 34 | 35 | _createButton: function (title, className, content, container, fn, context) { 36 | this.link = L.DomUtil.create('a', className, container); 37 | this.link.href = '#'; 38 | this.link.title = title; 39 | this.link.innerHTML = content; 40 | 41 | L.DomEvent 42 | .addListener(this.link, 'click', L.DomEvent.stopPropagation) 43 | .addListener(this.link, 'click', L.DomEvent.preventDefault) 44 | .addListener(this.link, 'click', fn, context); 45 | 46 | L.DomEvent 47 | .addListener(container, fullScreenApi.fullScreenEventName, L.DomEvent.stopPropagation) 48 | .addListener(container, fullScreenApi.fullScreenEventName, L.DomEvent.preventDefault) 49 | .addListener(container, fullScreenApi.fullScreenEventName, this._handleFullscreenChange, context); 50 | 51 | L.DomEvent 52 | .addListener(document, fullScreenApi.fullScreenEventName, L.DomEvent.stopPropagation) 53 | .addListener(document, fullScreenApi.fullScreenEventName, L.DomEvent.preventDefault) 54 | .addListener(document, fullScreenApi.fullScreenEventName, this._handleFullscreenChange, context); 55 | 56 | return this.link; 57 | }, 58 | 59 | toggleFullScreen: function () { 60 | var map = this._map; 61 | map._exitFired = false; 62 | if (map._isFullscreen) { 63 | if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) { 64 | fullScreenApi.cancelFullScreen(); 65 | } else { 66 | L.DomUtil.removeClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen'); 67 | } 68 | map.fire('exitFullscreen'); 69 | map._exitFired = true; 70 | map._isFullscreen = false; 71 | } 72 | else { 73 | if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) { 74 | fullScreenApi.requestFullScreen(this.options.fullscreenElement ? this.options.fullscreenElement : map._container); 75 | } else { 76 | L.DomUtil.addClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen'); 77 | } 78 | map.fire('enterFullscreen'); 79 | map._isFullscreen = true; 80 | } 81 | }, 82 | 83 | _toggleTitle: function () { 84 | this.link.title = this._map._isFullscreen ? this.options.title : this.options.titleCancel; 85 | }, 86 | 87 | _handleFullscreenChange: function () { 88 | var map = this._map; 89 | map.invalidateSize(); 90 | if (!fullScreenApi.isFullScreen() && !map._exitFired) { 91 | map.fire('exitFullscreen'); 92 | map._exitFired = true; 93 | map._isFullscreen = false; 94 | } 95 | } 96 | }); 97 | 98 | L.Map.addInitHook(function () { 99 | if (this.options.fullscreenControl) { 100 | this.fullscreenControl = L.control.fullscreen(this.options.fullscreenControlOptions); 101 | this.addControl(this.fullscreenControl); 102 | } 103 | }); 104 | 105 | L.control.fullscreen = function (options) { 106 | return new L.Control.FullScreen(options); 107 | }; 108 | 109 | /* 110 | Native FullScreen JavaScript API 111 | ------------- 112 | Assumes Mozilla naming conventions instead of W3C for now 113 | 114 | source : http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/ 115 | 116 | */ 117 | 118 | var 119 | fullScreenApi = { 120 | supportsFullScreen: false, 121 | isFullScreen: function () { return false; }, 122 | requestFullScreen: function () {}, 123 | cancelFullScreen: function () {}, 124 | fullScreenEventName: '', 125 | prefix: '' 126 | }, 127 | browserPrefixes = 'webkit moz o ms khtml'.split(' '); 128 | 129 | // check for native support 130 | if (typeof document.exitFullscreen !== 'undefined') { 131 | fullScreenApi.supportsFullScreen = true; 132 | } else { 133 | // check for fullscreen support by vendor prefix 134 | for (var i = 0, il = browserPrefixes.length; i < il; i++) { 135 | fullScreenApi.prefix = browserPrefixes[i]; 136 | if (typeof document[fullScreenApi.prefix + 'CancelFullScreen'] !== 'undefined') { 137 | fullScreenApi.supportsFullScreen = true; 138 | break; 139 | } 140 | } 141 | if (typeof document['msExitFullscreen'] !== 'undefined') { 142 | fullScreenApi.prefix = 'ms'; 143 | fullScreenApi.supportsFullScreen = true; 144 | } 145 | } 146 | 147 | // update methods to do something useful 148 | if (fullScreenApi.supportsFullScreen) { 149 | if (fullScreenApi.prefix === 'ms') { 150 | fullScreenApi.fullScreenEventName = 'MSFullscreenChange'; 151 | } else { 152 | fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange'; 153 | } 154 | fullScreenApi.isFullScreen = function () { 155 | switch (this.prefix) { 156 | case '': 157 | return document.fullscreen; 158 | case 'webkit': 159 | return document.webkitIsFullScreen; 160 | case 'ms': 161 | return document.msFullscreenElement; 162 | default: 163 | return document[this.prefix + 'FullScreen']; 164 | } 165 | }; 166 | fullScreenApi.requestFullScreen = function (el) { 167 | switch (this.prefix) { 168 | case '': 169 | return el.requestFullscreen(); 170 | case 'ms': 171 | return el.msRequestFullscreen(); 172 | default: 173 | return el[this.prefix + 'RequestFullScreen'](); 174 | } 175 | }; 176 | fullScreenApi.cancelFullScreen = function () { 177 | switch (this.prefix) { 178 | case '': 179 | return document.exitFullscreen(); 180 | case 'ms': 181 | return document.msExitFullscreen(); 182 | default: 183 | return document[this.prefix + 'CancelFullScreen'](); 184 | } 185 | }; 186 | } 187 | 188 | // jQuery plugin 189 | if (typeof jQuery !== 'undefined') { 190 | jQuery.fn.requestFullScreen = function () { 191 | return this.each(function () { 192 | var el = jQuery(this); 193 | if (fullScreenApi.supportsFullScreen) { 194 | fullScreenApi.requestFullScreen(el); 195 | } 196 | }); 197 | }; 198 | } 199 | 200 | // export api 201 | window.fullScreenApi = fullScreenApi; 202 | })(); 203 | -------------------------------------------------------------------------------- /wp-gpx-maps-admin.php: -------------------------------------------------------------------------------- 1 | ' . 97 | sprintf( 98 | /* translators: %1s: Plugin versions number */ 99 | __( 'What‘s new in WP GPX Maps %1s', 'wp-gpx-maps' ), 100 | WPGPXMAPS_CURRENT_VERSION 101 | ) . 102 | '

'; 103 | $message .= esc_html__( 'Added new map type Thunderforest - Outdoors (API Key required).', 'wp-gpx-maps' ) . '
'; 104 | $message .= esc_html__( 'Changed to the correct maps provider from “Open Cycle Map” to “Thunderforest” in Settins, Help and Output.', 'wp-gpx-maps' ) . '
'; 105 | $message .= esc_html__( 'New administration tab with the settings "Editor & Author upload" and "Show update notice".', 'wp-gpx-maps' ) . '
'; 106 | $message .= '' . esc_html__( 'You can find the complete changelog here.', 'wp-gpx-maps' ) . '

'; 107 | $message .= '' . esc_html__( 'Dismiss this notice', 'wp-gpx-maps' ) . ''; 108 | 109 | echo '

' . $message . '

'; 110 | echo ""; 129 | 130 | } 131 | 132 | /** 133 | * Dismiss the update notice 134 | */ 135 | function wpgpxmaps_dismiss_notice() { 136 | 137 | $result = update_site_option( 'wpgpxmaps_show_notice', 0 ); 138 | return $result; 139 | } 140 | 141 | function wpgpxmaps_ilc_admin_tabs( $current ) { 142 | 143 | if ( current_user_can( 'manage_options' ) ) { 144 | /* Access for Super Administrators and Administrators */ 145 | $tabs = array( 146 | 'tracks' => __( 'Tracks', 'wp-gpx-maps' ), 147 | 'settings' => __( 'Settings', 'wp-gpx-maps' ), 148 | 'administration' => __( 'Administration', 'wp-gpx-maps' ), 149 | 'help' => __( 'Help', 'wp-gpx-maps' ), 150 | ); 151 | 152 | } elseif ( current_user_can( 'publish_posts' ) ) { 153 | /* Access for Editors and Authors */ 154 | $tabs = array( 155 | 'tracks' => __( 'Tracks', 'wp-gpx-maps' ), 156 | 'help' => __( 'Help', 'wp-gpx-maps' ), 157 | ); 158 | } 159 | 160 | echo ''; 168 | } 169 | 170 | function wpgpxmaps_html_page() { 171 | 172 | $realGpxPath = gpxFolderPath(); 173 | $cacheGpxPath = gpxCacheFolderPath(); 174 | $relativeGpxPath = relativeGpxFolderPath(); 175 | $relativeGpxPath = str_replace( '\\', '/', $relativeGpxPath ); 176 | $relativeGpxCachePath = relativeGpxCacheFolderPath(); 177 | $relativeGpxCachePath = str_replace( '\\', '/', $relativeGpxCachePath ); 178 | $tab = $_GET['tab']; 179 | 180 | if ( $tab == '' ) 181 | 182 | $tab = 'tracks'; 183 | ?> 184 | 185 |
186 | 187 |
188 | 189 |

190 | 191 | 198 | 199 |

200 | 201 |

'; 210 | printf( 211 | /* translators: %1s: Relative path of the GPX folder */ 212 | esc_html__( 'Can‘t create the folder %1s for GPX files. Please create the folder and make it writable! If not, you will must update the files manually!', 'wp-gpx-maps' ), 213 | '' . esc_html( $relativeGpxPath ) . '' 214 | ); 215 | echo '

'; 216 | } 217 | } 218 | if ( file_exists( $cacheGpxPath ) && is_dir( $cacheGpxPath ) ) { 219 | 220 | /* Directory exist! */ 221 | 222 | } else { 223 | if ( ! @mkdir( $cacheGpxPath, 0755, true ) ) { 224 | echo '

'; 225 | printf( 226 | /* translators: %1s: Relative path of the GPX cache folder */ 227 | esc_html__( 'Can‘t create the cache folder %1s for the GPX files. Please create the folder and make it writable! If not, you will must update the files manually!', 'wp-gpx-maps' ), 228 | '' . esc_html( $relativeGpxCachePath ) . '' 229 | ); 230 | echo '

'; 231 | } 232 | } 233 | 234 | wpgpxmaps_ilc_admin_tabs( $tab ); 235 | 236 | if ( 'tracks' == $tab ) { 237 | include 'wp-gpx-maps-admin-tracks.php'; 238 | 239 | } elseif ( 'settings' == $tab ) { 240 | include 'wp-gpx-maps-admin-settings.php'; 241 | 242 | } elseif ( 'administration' == $tab ) { 243 | include 'wp-gpx-maps-admin-administration.php'; 244 | 245 | } elseif ( 'help' == $tab ) { 246 | include 'wp-gpx-maps-help.php'; 247 | } 248 | 249 | } 250 | 251 | ?> 252 | 253 | 254 | -------------------------------------------------------------------------------- /wp-gpx-maps-admin-tracks.php: -------------------------------------------------------------------------------- 1 |

'; 38 | esc_html_e( 'Cache is now empty!', 'wp-gpx-maps' ); 39 | echo '

'; 40 | wpgpxmaps_recursive_remove_directory( $cacheGpxPath, true ); 41 | 42 | } 43 | } 44 | 45 | if ( is_writable( $realGpxPath ) ) { 46 | ?> 47 | 48 |
49 | 50 | '; 52 | ?> 53 | 54 |

'; 67 | printf( 68 | /* translators: %1s: GPX file name */ 69 | esc_html__( 'The file %1s has been successfully uploaded.', 'wp-gpx-maps' ), 70 | '' . esc_html( $uploadingFileName ) . '' 71 | ); 72 | echo '

'; 73 | 74 | } else { 75 | 76 | echo '

'; 77 | esc_html_e( 'There was an error uploading the file, please try again!', 'wp-gpx-maps' ); 78 | echo '

'; 79 | 80 | } 81 | } else { 82 | 83 | echo '

'; 84 | esc_html_e( 'The file type is not supported!', 'wp-gpx-maps' ); 85 | echo '

'; 86 | 87 | } 88 | } 89 | } 90 | 91 | ?> 92 | 93 | 94 |
95 | 96 |
97 | 98 | 99 | 100 | 104 |
105 | 106 |

'; 109 | printf( 110 | /* translators: %1s: Relative path of the GPX folder */ 111 | esc_html__( 'Your folder for GPX files %1s is not writable. Please change the folder permissions.', 'wp-gpx-maps' ), 112 | '' . esc_html( $relativeGpxPath ) . '' 113 | ); 114 | echo '

'; 115 | 116 | ?> 117 | 118 |
119 | 120 |

'; 132 | printf( 133 | /* translators: %1s: GPX file name */ 134 | esc_html__( 'The file %1s has been successfully deleted.', 'wp-gpx-maps' ), 135 | '' . esc_html( $entry ) . '' 136 | ); 137 | echo '

'; 138 | 139 | } else { 140 | 141 | echo '

'; 142 | printf( 143 | /* translators: %1s: GPX file name */ 144 | esc_html__( 'The file %1s could not be deleted.', 'wp-gpx-maps' ), 145 | '' . esc_html( $entry ) . '' 146 | ); 147 | echo '

'; 148 | 149 | } 150 | } else { 151 | 152 | $myFile = $realGpxPath . '/' . $entry; 153 | $myGpxFileNames[] = array( 154 | 'name' => $entry, 155 | 'size' => filesize( $myFile ), 156 | 'lastedit' => filemtime( $myFile ), 157 | 'nonce' => wp_create_nonce( 'wpgpx_deletefile_nonce_' . $entry ), 158 | ); 159 | } 160 | } 161 | } 162 | closedir( $handle ); 163 | } 164 | 165 | if ( is_readable( $realGpxPath ) && $handle = opendir( $realGpxPath ) ) { 166 | while ( false !== ( $entry = readdir( $handle ) ) ) { 167 | if ( preg_match( $gpxRegEx, $entry ) ) { 168 | $filenames[] = $realGpxPath . '/' . $entry; 169 | } 170 | } 171 | closedir( $handle ); 172 | } 173 | 174 | ?> 175 | 176 |
177 | 178 | 254 | 255 | 256 | -------------------------------------------------------------------------------- /css/bootstrap-table.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @author zhixin wen 3 | * version: 1.13.2 4 | * https://github.com/wenzhixin/bootstrap-table/ 5 | */ 6 | 7 | .bootstrap-table .table { 8 | margin-bottom: 0 !important; 9 | border-bottom: 1px solid #ddd; 10 | border-radius: 1px; 11 | border-collapse: collapse !important; 12 | } 13 | 14 | .bootstrap-table .table:not(.table-condensed), 15 | .bootstrap-table .table:not(.table-condensed) > tbody > tr > th, 16 | .bootstrap-table .table:not(.table-condensed) > tfoot > tr > th, 17 | .bootstrap-table .table:not(.table-condensed) > thead > tr > td, 18 | .bootstrap-table .table:not(.table-condensed) > tbody > tr > td, 19 | .bootstrap-table .table:not(.table-condensed) > tfoot > tr > td { 20 | padding: 8px; 21 | } 22 | 23 | .bootstrap-table .table.table-no-bordered > thead > tr > th { 24 | border-top: none; 25 | } 26 | 27 | .bootstrap-table .table.table-no-bordered > thead > tr > th, 28 | .bootstrap-table .table.table-no-bordered > tbody > tr > td { 29 | border-right: 2px solid transparent; 30 | } 31 | 32 | .bootstrap-table .table.table-no-bordered > tbody > tr > td:last-child { 33 | border-right: none; 34 | } 35 | 36 | .fixed-table-container { 37 | clear: both; 38 | position: relative; 39 | border: 1px solid #ddd; 40 | -webkit-border-radius: 4px; 41 | -moz-border-radius: 4px; 42 | border-radius: 4px; 43 | } 44 | 45 | .fixed-table-container.table-no-bordered { 46 | border: 1px solid transparent; 47 | } 48 | 49 | .fixed-table-footer, 50 | .fixed-table-header { 51 | overflow: hidden; 52 | } 53 | 54 | .fixed-table-footer { 55 | border-top: 1px solid #ddd; 56 | } 57 | 58 | .fixed-table-body { 59 | overflow-x: auto; 60 | overflow-y: auto; 61 | height: 100%; 62 | } 63 | 64 | .fixed-table-container table { 65 | width: 100%; 66 | } 67 | 68 | .fixed-table-container thead th { 69 | height: 0; 70 | margin: 0; 71 | padding: 0; 72 | border-left: 1px solid #ddd; 73 | } 74 | 75 | .fixed-table-container thead th:focus { 76 | outline: 0 solid transparent; 77 | } 78 | 79 | .fixed-table-container thead th:first-child:not([data-not-first-th]) { 80 | border-left: none; 81 | -webkit-border-top-left-radius: 4px; 82 | -moz-border-radius-topleft: 4px; 83 | border-top-left-radius: 4px; 84 | } 85 | 86 | .fixed-table-container thead th .th-inner, 87 | .fixed-table-container tbody td .th-inner { 88 | overflow: hidden; 89 | padding: 8px; 90 | line-height: 24px; 91 | vertical-align: top; 92 | white-space: nowrap; 93 | text-overflow: ellipsis; 94 | } 95 | 96 | .fixed-table-container thead th .sortable { 97 | padding-right: 30px; 98 | background-repeat: no-repeat; 99 | background-position: right; 100 | cursor: pointer; 101 | } 102 | 103 | .fixed-table-container thead th .both { 104 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC'); 105 | } 106 | 107 | .fixed-table-container thead th .asc { 108 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=='); 109 | } 110 | 111 | .fixed-table-container thead th .desc { 112 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= '); 113 | } 114 | 115 | .fixed-table-container th.detail { 116 | width: 30px; 117 | } 118 | 119 | .fixed-table-container tbody td { 120 | border-left: 1px solid #ddd; 121 | } 122 | 123 | .fixed-table-container tbody tr:first-child td { 124 | border-top: none; 125 | } 126 | 127 | .fixed-table-container tbody td:first-child { 128 | border-left: none; 129 | } 130 | 131 | /* the same color with .active */ 132 | .fixed-table-container tbody .selected td { 133 | background-color: #f5f5f5; 134 | } 135 | 136 | .fixed-table-container .bs-checkbox { 137 | text-align: center; 138 | } 139 | 140 | .fixed-table-container input[type="radio"], 141 | .fixed-table-container input[type="checkbox"] { 142 | margin: 0 auto !important; 143 | } 144 | 145 | .fixed-table-container .no-records-found { 146 | text-align: center; 147 | } 148 | 149 | .fixed-table-pagination div.pagination, 150 | .fixed-table-pagination .pagination-detail { 151 | margin-top: 10px; 152 | margin-bottom: 10px; 153 | } 154 | 155 | .fixed-table-pagination div.pagination .pagination { 156 | margin: 0; 157 | } 158 | 159 | .fixed-table-pagination .pagination a { 160 | padding: 6px 12px; 161 | line-height: 1.428571429; 162 | } 163 | 164 | .fixed-table-pagination ul.pagination li.page-intermediate a { 165 | color:#c8c8c8; 166 | } 167 | 168 | .fixed-table-pagination ul.pagination li.page-intermediate a:before { 169 | content: '\2B05'; 170 | } 171 | 172 | .fixed-table-pagination ul.pagination li.page-intermediate a:after { 173 | content: '\27A1'; 174 | } 175 | 176 | .fixed-table-pagination .pagination-info { 177 | margin-right: 5px; 178 | line-height: 34px; 179 | } 180 | 181 | .fixed-table-pagination .btn-group { 182 | display: inline-block; 183 | position: relative; 184 | vertical-align: middle; 185 | } 186 | 187 | .fixed-table-pagination .dropup .dropdown-menu { 188 | margin-bottom: 0; 189 | } 190 | 191 | .fixed-table-pagination .page-list { 192 | display: inline-block; 193 | } 194 | 195 | .fixed-table-toolbar .columns-left { 196 | margin-right: 5px; 197 | } 198 | 199 | .fixed-table-toolbar .columns-right { 200 | margin-left: 5px; 201 | } 202 | 203 | .fixed-table-toolbar .columns label { 204 | display: block; 205 | clear: both; 206 | padding: 3px 20px; 207 | font-weight: 400; 208 | line-height: 1.428571429; 209 | } 210 | 211 | .fixed-table-toolbar .bs-bars, 212 | .fixed-table-toolbar .search, 213 | .fixed-table-toolbar .columns { 214 | position: relative; 215 | margin-top: 10px; 216 | margin-bottom: 10px; 217 | } 218 | 219 | .fixed-table-pagination li.disabled a { 220 | cursor: default; 221 | pointer-events: none; 222 | } 223 | 224 | .fixed-table-loading { 225 | display: none; 226 | position: absolute; 227 | z-index: 99; 228 | top: 42px; 229 | right: 0; 230 | bottom: 0; 231 | left: 0; 232 | background-color: #fff; 233 | text-align: center; 234 | } 235 | 236 | .fixed-table-body .card-view .title { 237 | display: inline-block; 238 | min-width: 30%; 239 | font-weight: 700; 240 | text-align: left !important; 241 | } 242 | 243 | /* support bootstrap 2 */ 244 | .fixed-table-body thead th .th-inner { 245 | box-sizing: border-box; 246 | } 247 | 248 | .table th, 249 | .table td { 250 | box-sizing: border-box; 251 | vertical-align: middle; 252 | } 253 | 254 | .fixed-table-toolbar .dropdown-menu { 255 | overflow: auto; 256 | max-height: 300px; 257 | text-align: left; 258 | } 259 | 260 | .fixed-table-toolbar .btn-group > .btn-group { 261 | display: inline-block; 262 | margin-left: -1px !important; 263 | } 264 | 265 | .fixed-table-toolbar .btn-group > .btn-group > .btn { 266 | border-radius: 0; 267 | } 268 | 269 | .fixed-table-toolbar .btn-group > .btn-group:first-child > .btn { 270 | border-top-left-radius: 4px; 271 | border-bottom-left-radius: 4px; 272 | } 273 | 274 | .fixed-table-toolbar .btn-group > .btn-group:last-child > .btn { 275 | border-top-right-radius: 4px; 276 | border-bottom-right-radius: 4px; 277 | } 278 | 279 | .bootstrap-table .table > thead > tr > th { 280 | border-bottom: 1px solid #ddd; 281 | vertical-align: bottom; 282 | } 283 | 284 | .bootstrap-table .table > thead.thead-dark > tr > th { 285 | border-bottom: 1px solid #212529; 286 | } 287 | 288 | /* support bootstrap 3 */ 289 | .bootstrap-table .table thead > tr > th { 290 | margin: 0; 291 | padding: 0; 292 | } 293 | 294 | .bootstrap-table .fixed-table-footer tbody > tr > td { 295 | padding: 0 !important; 296 | } 297 | 298 | .bootstrap-table .fixed-table-footer .table { 299 | padding: 0 !important; 300 | border-bottom: none; 301 | border-radius: 0; 302 | } 303 | 304 | .bootstrap-table .pull-right .dropdown-menu { 305 | right: 0; 306 | left: auto; 307 | } 308 | 309 | /* calculate scrollbar width */ 310 | p.fixed-table-scroll-inner { 311 | width: 100%; 312 | height: 200px; 313 | } 314 | 315 | div.fixed-table-scroll-outer { 316 | visibility: hidden; 317 | overflow: hidden; 318 | top: 0; 319 | left: 0; 320 | width: 200px; 321 | height: 150px; 322 | } 323 | 324 | /* for get correct heights */ 325 | .fixed-table-toolbar:after, 326 | .fixed-table-pagination:after { 327 | display: block; 328 | clear: both; 329 | content: ""; 330 | } 331 | 332 | .bootstrap-table.fullscreen { 333 | position: fixed; 334 | z-index: 1050; 335 | top: 0; 336 | left: 0; 337 | width: 100% !important; 338 | background: #fff; 339 | } 340 | -------------------------------------------------------------------------------- /js/mColorPicker_min.js: -------------------------------------------------------------------------------- 1 | /* 2 | mColorPicker 3 | Version: 1.0 r39 4 | 5 | Copyright (c) 2010 Meta100 LLC. 6 | http://www.meta100.com/ 7 | 8 | Licensed under the MIT license 9 | http://www.opensource.org/licenses/mit-license.php 10 | */ 11 | 12 | (function($){var b,f,h,l,j=$(document),i=$("
"),k=$("
"),n=$("
"),o=$(""),p=/^rgb[a]?\((\d+),\s*(\d+),\s*(\d+)(,\s*(\d+\.\d+)*)?\)/,q=/([a-f0-9])([a-f0-9])([a-f0-9])/,r=/#[a-f0-9]{3}/,s=/#[a-f0-9]{6}/;$.fn.mColorPicker=function(a){var c=$.fn.mColorPicker.getCookie("swatches");b=$.extend($.fn.mColorPicker.defaults,a);$.fn.mColorPicker.defaults.swatches.concat(b.swatches).slice(-10);f.enhancedSwatches&&c&&(b.swatches=c.split("||").concat(b.swatches).slice(0,10)||b.swatches);$("div#mColorPicker").length||$.fn.mColorPicker.drawPicker();$("#css_disabled_color_picker").length||$("head").prepend('');$("meta[data-remove-me=true]").remove();this.each($.fn.mColorPicker.drawPickerTriggers);return this};$.fn.mColorPicker.init={replace:"[type=color]",index:0,enhancedSwatches:!0,allowTransparency:!0,slogan:"Meta100 - Designing Fun",showLogo:!0};$.fn.mColorPicker.defaults={currentId:!1,currentInput:!1,currentColor:!1,changeColor:!1,color:!1,imageFolder:"http://meta100.github.com/mColorPicker/images/",swatches:"#ffffff,#ffff00,#00ff00,#00ffff,#0000ff,#ff00ff,#ff0000,#4c2b11,#3b3b3b,#000000".split(",")};$.fn.mColorPicker.start=function(){$('input[data-mcolorpicker!="true"]').filter(function(){return"[type=color]"==f.replace?"color"==this.getAttribute("type"):$(this).is(f.replace)}).mColorPicker()};$.fn.mColorPicker.events=function(){$("#mColorPickerBg").live("click",$.fn.mColorPicker.closePicker);$(".mColorPicker").live("keyup",function(){try{$(this).css({"background-color":$(this).val()}).css({color:$.fn.mColorPicker.textColor($(this).css("background-color"))}).trigger("change")}catch(a){}});$(".mColorPickerTrigger").live("click",$.fn.mColorPicker.colorShow);$(".mColor, .mPastColor").live("mousemove",function(a){if(!b.changeColor)return!1;var c=$(this),g=c.offset(),d=b.currentInput,d=d.attr("data-hex")||d.attr("hex");b.color=c.css("background-color");c.hasClass("mPastColor")?b.color=$.fn.mColorPicker.setColor(b.color,d):c.hasClass("mColorTransparent")?b.color="transparent":c.hasClass("mPastColor")||(b.color=$.fn.mColorPicker.whichColor(a.pageX-g.left,a.pageY-g.top,d));b.currentInput.mSetInputColor(b.color)}).live("click",$.fn.mColorPicker.colorPicked);$("#mColorPickerInput").live("keyup",function(a){try{b.color=$(this).val(),b.currentInput.mSetInputColor(b.color),13==a.which&&$.fn.mColorPicker.colorPicked()}catch(c){}}).live("blur",function(){b.currentInput.mSetInputColor(b.color)});$("#mColorPickerWrapper").live("mouseleave",function(){if(!b.changeColor)return!1;var a=b.currentInput;b.currentInput.mSetInputColor($.fn.mColorPicker.setColor(b.currentColor,a.attr("data-hex")||a.attr("hex")))})};$.fn.mColorPicker.drawPickerTriggers=function(){var a=$(this),c=a.attr("id")||"color_"+f.index++,g="hidden"==a.attr("text")||"hidden"==a.attr("data-text")?!0:!1,d=$.fn.mColorPicker.setColor(a.val(),a.attr("data-hex")||a.attr("hex")),e=a.width(),h=a.height(),i=a.css("float"),j=$(""),m=$(""),k="";j.attr({id:"color_work_area","class":"mColorPickerInput"}).appendTo(l);m.attr({id:"mcp_"+c,"class":"mColorPickerTrigger"}).css({display:"inline-block",cursor:"pointer"}).insertAfter(a);$("").attr({src:b.imageFolder+"color.png"}).css({border:0,margin:"0 0 0 3px","vertical-align":"text-bottom"}).appendTo(m);j.append(a);k=j.html().replace(/type=[^a-z ]*color[^a-z //>]*/gi,'type="'+(g?"hidden":"text")+'"');j.html("").remove();a=$(k).attr("id",c).addClass("mColorPicker").val(d).insertBefore(m);g&&m.css({border:"1px solid black","float":i,width:e,height:h}).addClass(a.attr("class")).html(" ");a.mSetInputColor(d);return a};$.fn.mColorPicker.drawPicker=function(){var a=$("
"),c=$(""),g=$("
"),d=$("
");k.attr({id:"mColorPickerBg"}).css({display:"none",background:"black",opacity:0.01,position:"absolute",top:0,right:0,bottom:0,left:0}).appendTo(l);i.attr({id:"mColorPicker","data-mcolorpicker":!0}).css({position:"absolute",border:"1px solid #ccc",color:"#fff",width:"194px",height:"184px","font-size":"12px","font-family":"times",display:"none"}).appendTo(l);n.attr({id:"mColorPickerTest"}).css({display:"none"}).appendTo(l);d.attr({id:"mColorPickerWrapper"}).css({position:"relative",border:"solid 1px gray"}).appendTo(i);$("
").attr({id:"mColorPickerImg","class":"mColor"}).css({height:"136px",width:"192px",border:0,cursor:"crosshair","background-image":"url("+b.imageFolder+"picker.png)"}).appendTo(d);a.attr({id:"mColorPickerSwatches"}).css({"border-right":"1px solid #000"}).appendTo(d);$("
").addClass("mClear").css({clear:"both"}).appendTo(a);for(h=9;-1").attr({id:"cell"+h,"class":"mPastColor"+(0").attr({id:"mColorPickerTransparent","class":"mColor mColorTransparent"}).css({"font-size":"16px",color:"#000","padding-right":"30px","padding-top":"3px",cursor:"pointer",overflow:"hidden","float":"right"}).text("transparent").appendTo(g);f.showLogo&&c.attr({href:"http://meta100.com/",title:f.slogan,alt:f.slogan,target:"_blank"}).css({"float":"right"}).appendTo(g);$("").attr({src:b.imageFolder+"meta100.png",title:f.slogan,alt:f.slogan}).css({border:0,"border-left":"1px solid #aaa",right:0,position:"absolute"}).appendTo(c);$(".mNoLeftBorder").css({"border-left":0})};$.fn.mColorPicker.closePicker=function(){k.hide();i.fadeOut()};$.fn.mColorPicker.colorShow=function(){var a=$(this),c=a.attr("id").replace("mcp_",""),g=a.offset(),d=$("#"+c),e=g.top+a.outerHeight(),f=g.left;if(d.attr("disabled"))return!1;b.currentColor=d.css("background-color");b.changeColor=!0;b.currentInput=d;b.currentId=c;e+i.height()>j.height()&&(e=g.top-i.height());f+i.width()>j.width()&&(f=g.left-i.width()+a.outerWidth());i.css({top:e+"px",left:f+"px"}).fadeIn("fast");k.show();b.color=$("#"+c).attr("data-text")?a.css("background-color"):d.css("background-color");b.color=$.fn.mColorPicker.setColor(b.color,d.attr("data-hex")||d.attr("hex"));o.val(b.color)};$.fn.mColorPicker.setInputColor=function(a,c){$("#"+a).mSetInputColor(c)};$.fn.mSetInputColor=function(a){var c=$(this),g={"background-color":a,"background-image":"transparent"==a?"url('"+b.imageFolder+"grid.gif')":"",color:$.fn.mColorPicker.textColor(a)};(c.attr("data-text")||c.attr("text"))&&c.next().css(g);c.val(a).css(g).trigger("change");o.val(a)};$.fn.mColorPicker.textColor=function(a){a=$.fn.mColorPicker.RGBtoHex(a);return"undefined"==typeof a||"transparent"==a?"black":400>parseInt(a.substr(1,2),16)+parseInt(a.substr(3,2),16)+parseInt(a.substr(5,2),16)?"white":"black"};$.fn.mColorPicker.setCookie=function(a,c,b){a=a+"="+escape(c);c=new Date;c.setDate(c.getDate()+b);a+="; expires="+c.toGMTString();document.cookie=a};$.fn.mColorPicker.getCookie=function(a){return(a=document.cookie.match("(^|;) ?"+a+"=([^;]*)(;|$)"))?unescape(a[2]):null};$.fn.mColorPicker.colorPicked=function(){b.changeColor=!1;$.fn.mColorPicker.closePicker();$.fn.mColorPicker.addToSwatch();b.currentInput.trigger("colorpicked")};$.fn.mColorPicker.addToSwatch=function(a){if(!f.enhancedSwatches)return!1;var c=[];h=0;"string"==typeof a&&(b.color=a);"transparent"!=b.color&&(c[0]=$.fn.mColorPicker.hexToRGB(b.color));$(".mPastColor").each(function(){var a=$(this);b.color=$.fn.mColorPicker.hexToRGB(a.css("background-color"));if(b.color!=c[0]&&c.length<10)c[c.length]=b.color;a.css("background-color",c[h++])});f.enhancedSwatches&&$.fn.mColorPicker.setCookie("swatches",c.join("||"),365)};$.fn.mColorPicker.whichColor=function(a,c,b){var d=[255,255,255];32>a?(d[1]=8*a,d[2]=0):64>a?(d[0]=256-8*(a-32),d[2]=0):96>a?(d[0]=0,d[2]=8*(a-64)):128>a?(d[0]=0,d[1]=256-8*(a-96)):160>a?(d[0]=8*(a-128),d[1]=0):(d[1]=0,d[2]=256-8*(a-160));for(var e=0;3>e;e++)64>c?d[e]+=(256-d[e])*(64-c)/64:128>=c?d[e]-=d[e]*(c-64)/64:128a;a++)c+=$.fn.mColorPicker.decToHex(b[a]);return c}return $.fn.mColorPicker.colorTest(a)};$.fn.mColorPicker.hexToRGB=function(a){a=a?a.toLowerCase():!1;return!a?"":p.test(a)?a:r.test(a)?(s.test(a)||(a=a.replace(q,"$1$1$2$2$3$3")),"rgb("+parseInt(a.substr(1,2),16)+", "+parseInt(a.substr(3,2),16)+", "+parseInt(a.substr(5,2),16)+")"):$.fn.mColorPicker.colorTest(a)};f=$.fn.mColorPicker.init;j.ready(function(){l=$("body");$.fn.mColorPicker.events();f.replace&&("function"==typeof $.fn.mDOMupdate?$("input").mDOMupdate($.fn.mColorPicker.start):"function"==typeof $.fn.livequery?$("input").livequery($.fn.mColorPicker.start):($.fn.mColorPicker.start(),j.live("ajaxSuccess.mColorPicker",$.fn.mColorPicker.start)))})})(jQuery); -------------------------------------------------------------------------------- /ThirdParties/Leaflet_1.5.1/leaflet.css: -------------------------------------------------------------------------------- 1 | /* required styles */ 2 | 3 | .leaflet-pane, 4 | .leaflet-tile, 5 | .leaflet-marker-icon, 6 | .leaflet-marker-shadow, 7 | .leaflet-tile-container, 8 | .leaflet-pane > svg, 9 | .leaflet-pane > canvas, 10 | .leaflet-zoom-box, 11 | .leaflet-image-layer, 12 | .leaflet-layer { 13 | position: absolute; 14 | left: 0; 15 | top: 0; 16 | } 17 | .leaflet-container { 18 | overflow: hidden; 19 | } 20 | .leaflet-tile, 21 | .leaflet-marker-icon, 22 | .leaflet-marker-shadow { 23 | -webkit-user-select: none; 24 | -moz-user-select: none; 25 | user-select: none; 26 | -webkit-user-drag: none; 27 | } 28 | /* Prevents IE11 from highlighting tiles in blue */ 29 | .leaflet-tile::selection { 30 | background: transparent; 31 | } 32 | /* Safari renders non-retina tile on retina better with this, but Chrome is worse */ 33 | .leaflet-safari .leaflet-tile { 34 | image-rendering: -webkit-optimize-contrast; 35 | } 36 | /* hack that prevents hw layers "stretching" when loading new tiles */ 37 | .leaflet-safari .leaflet-tile-container { 38 | width: 1600px; 39 | height: 1600px; 40 | -webkit-transform-origin: 0 0; 41 | } 42 | .leaflet-marker-icon, 43 | .leaflet-marker-shadow { 44 | display: block; 45 | } 46 | /* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ 47 | /* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ 48 | .leaflet-container .leaflet-overlay-pane svg, 49 | .leaflet-container .leaflet-marker-pane img, 50 | .leaflet-container .leaflet-shadow-pane img, 51 | .leaflet-container .leaflet-tile-pane img, 52 | .leaflet-container img.leaflet-image-layer, 53 | .leaflet-container .leaflet-tile { 54 | max-width: none !important; 55 | max-height: none !important; 56 | } 57 | 58 | .leaflet-container.leaflet-touch-zoom { 59 | -ms-touch-action: pan-x pan-y; 60 | touch-action: pan-x pan-y; 61 | } 62 | .leaflet-container.leaflet-touch-drag { 63 | -ms-touch-action: pinch-zoom; 64 | /* Fallback for FF which doesn't support pinch-zoom */ 65 | touch-action: none; 66 | touch-action: pinch-zoom; 67 | } 68 | .leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { 69 | -ms-touch-action: none; 70 | touch-action: none; 71 | } 72 | .leaflet-container { 73 | -webkit-tap-highlight-color: transparent; 74 | } 75 | .leaflet-container a { 76 | -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); 77 | } 78 | .leaflet-tile { 79 | filter: inherit; 80 | visibility: hidden; 81 | } 82 | .leaflet-tile-loaded { 83 | visibility: inherit; 84 | } 85 | .leaflet-zoom-box { 86 | width: 0; 87 | height: 0; 88 | -moz-box-sizing: border-box; 89 | box-sizing: border-box; 90 | z-index: 800; 91 | } 92 | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ 93 | .leaflet-overlay-pane svg { 94 | -moz-user-select: none; 95 | } 96 | 97 | .leaflet-pane { z-index: 400; } 98 | 99 | .leaflet-tile-pane { z-index: 200; } 100 | .leaflet-overlay-pane { z-index: 400; } 101 | .leaflet-shadow-pane { z-index: 500; } 102 | .leaflet-marker-pane { z-index: 600; } 103 | .leaflet-tooltip-pane { z-index: 650; } 104 | .leaflet-popup-pane { z-index: 700; } 105 | 106 | .leaflet-map-pane canvas { z-index: 100; } 107 | .leaflet-map-pane svg { z-index: 200; } 108 | 109 | .leaflet-vml-shape { 110 | width: 1px; 111 | height: 1px; 112 | } 113 | .lvml { 114 | behavior: url(#default#VML); 115 | display: inline-block; 116 | position: absolute; 117 | } 118 | 119 | 120 | /* control positioning */ 121 | 122 | .leaflet-control { 123 | position: relative; 124 | z-index: 800; 125 | pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ 126 | pointer-events: auto; 127 | } 128 | .leaflet-top, 129 | .leaflet-bottom { 130 | position: absolute; 131 | z-index: 1000; 132 | pointer-events: none; 133 | } 134 | .leaflet-top { 135 | top: 0; 136 | } 137 | .leaflet-right { 138 | right: 0; 139 | } 140 | .leaflet-bottom { 141 | bottom: 0; 142 | } 143 | .leaflet-left { 144 | left: 0; 145 | } 146 | .leaflet-control { 147 | float: left; 148 | clear: both; 149 | } 150 | .leaflet-right .leaflet-control { 151 | float: right; 152 | } 153 | .leaflet-top .leaflet-control { 154 | margin-top: 10px; 155 | } 156 | .leaflet-bottom .leaflet-control { 157 | margin-bottom: 10px; 158 | } 159 | .leaflet-left .leaflet-control { 160 | margin-left: 10px; 161 | } 162 | .leaflet-right .leaflet-control { 163 | margin-right: 10px; 164 | } 165 | 166 | 167 | /* zoom and fade animations */ 168 | 169 | .leaflet-fade-anim .leaflet-tile { 170 | will-change: opacity; 171 | } 172 | .leaflet-fade-anim .leaflet-popup { 173 | opacity: 0; 174 | -webkit-transition: opacity 0.2s linear; 175 | -moz-transition: opacity 0.2s linear; 176 | transition: opacity 0.2s linear; 177 | } 178 | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { 179 | opacity: 1; 180 | } 181 | .leaflet-zoom-animated { 182 | -webkit-transform-origin: 0 0; 183 | -ms-transform-origin: 0 0; 184 | transform-origin: 0 0; 185 | } 186 | .leaflet-zoom-anim .leaflet-zoom-animated { 187 | will-change: transform; 188 | } 189 | .leaflet-zoom-anim .leaflet-zoom-animated { 190 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); 191 | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); 192 | transition: transform 0.25s cubic-bezier(0,0,0.25,1); 193 | } 194 | .leaflet-zoom-anim .leaflet-tile, 195 | .leaflet-pan-anim .leaflet-tile { 196 | -webkit-transition: none; 197 | -moz-transition: none; 198 | transition: none; 199 | } 200 | 201 | .leaflet-zoom-anim .leaflet-zoom-hide { 202 | visibility: hidden; 203 | } 204 | 205 | 206 | /* cursors */ 207 | 208 | .leaflet-interactive { 209 | cursor: pointer; 210 | } 211 | .leaflet-grab { 212 | cursor: -webkit-grab; 213 | cursor: -moz-grab; 214 | cursor: grab; 215 | } 216 | .leaflet-crosshair, 217 | .leaflet-crosshair .leaflet-interactive { 218 | cursor: crosshair; 219 | } 220 | .leaflet-popup-pane, 221 | .leaflet-control { 222 | cursor: auto; 223 | } 224 | .leaflet-dragging .leaflet-grab, 225 | .leaflet-dragging .leaflet-grab .leaflet-interactive, 226 | .leaflet-dragging .leaflet-marker-draggable { 227 | cursor: move; 228 | cursor: -webkit-grabbing; 229 | cursor: -moz-grabbing; 230 | cursor: grabbing; 231 | } 232 | 233 | /* marker & overlays interactivity */ 234 | .leaflet-marker-icon, 235 | .leaflet-marker-shadow, 236 | .leaflet-image-layer, 237 | .leaflet-pane > svg path, 238 | .leaflet-tile-container { 239 | pointer-events: none; 240 | } 241 | 242 | .leaflet-marker-icon.leaflet-interactive, 243 | .leaflet-image-layer.leaflet-interactive, 244 | .leaflet-pane > svg path.leaflet-interactive, 245 | svg.leaflet-image-layer.leaflet-interactive path { 246 | pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ 247 | pointer-events: auto; 248 | } 249 | 250 | /* visual tweaks */ 251 | 252 | .leaflet-container { 253 | background: #ddd; 254 | outline: 0; 255 | } 256 | .leaflet-container a { 257 | color: #0078A8; 258 | } 259 | .leaflet-container a.leaflet-active { 260 | outline: 2px solid orange; 261 | } 262 | .leaflet-zoom-box { 263 | border: 2px dotted #38f; 264 | background: rgba(255,255,255,0.5); 265 | } 266 | 267 | 268 | /* general typography */ 269 | .leaflet-container { 270 | font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; 271 | } 272 | 273 | 274 | /* general toolbar styles */ 275 | 276 | .leaflet-bar { 277 | box-shadow: 0 1px 5px rgba(0,0,0,0.65); 278 | border-radius: 4px; 279 | } 280 | .leaflet-bar a, 281 | .leaflet-bar a:hover { 282 | background-color: #fff; 283 | border-bottom: 1px solid #ccc; 284 | width: 26px; 285 | height: 26px; 286 | line-height: 26px; 287 | display: block; 288 | text-align: center; 289 | text-decoration: none; 290 | color: black; 291 | } 292 | .leaflet-bar a, 293 | .leaflet-control-layers-toggle { 294 | background-position: 50% 50%; 295 | background-repeat: no-repeat; 296 | display: block; 297 | } 298 | .leaflet-bar a:hover { 299 | background-color: #f4f4f4; 300 | } 301 | .leaflet-bar a:first-child { 302 | border-top-left-radius: 4px; 303 | border-top-right-radius: 4px; 304 | } 305 | .leaflet-bar a:last-child { 306 | border-bottom-left-radius: 4px; 307 | border-bottom-right-radius: 4px; 308 | border-bottom: none; 309 | } 310 | .leaflet-bar a.leaflet-disabled { 311 | cursor: default; 312 | background-color: #f4f4f4; 313 | color: #bbb; 314 | } 315 | 316 | .leaflet-touch .leaflet-bar a { 317 | width: 30px; 318 | height: 30px; 319 | line-height: 30px; 320 | } 321 | .leaflet-touch .leaflet-bar a:first-child { 322 | border-top-left-radius: 2px; 323 | border-top-right-radius: 2px; 324 | } 325 | .leaflet-touch .leaflet-bar a:last-child { 326 | border-bottom-left-radius: 2px; 327 | border-bottom-right-radius: 2px; 328 | } 329 | 330 | /* zoom control */ 331 | 332 | .leaflet-control-zoom-in, 333 | .leaflet-control-zoom-out { 334 | font: bold 18px 'Lucida Console', Monaco, monospace; 335 | text-indent: 1px; 336 | } 337 | 338 | .leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { 339 | font-size: 22px; 340 | } 341 | 342 | 343 | /* layers control */ 344 | 345 | .leaflet-control-layers { 346 | box-shadow: 0 1px 5px rgba(0,0,0,0.4); 347 | background: #fff; 348 | border-radius: 5px; 349 | } 350 | .leaflet-control-layers-toggle { 351 | background-image: url(images/layers.png); 352 | width: 36px; 353 | height: 36px; 354 | } 355 | .leaflet-retina .leaflet-control-layers-toggle { 356 | background-image: url(images/layers-2x.png); 357 | background-size: 26px 26px; 358 | } 359 | .leaflet-touch .leaflet-control-layers-toggle { 360 | width: 44px; 361 | height: 44px; 362 | } 363 | .leaflet-control-layers .leaflet-control-layers-list, 364 | .leaflet-control-layers-expanded .leaflet-control-layers-toggle { 365 | display: none; 366 | } 367 | .leaflet-control-layers-expanded .leaflet-control-layers-list { 368 | display: block; 369 | position: relative; 370 | } 371 | .leaflet-control-layers-expanded { 372 | padding: 6px 10px 6px 6px; 373 | color: #333; 374 | background: #fff; 375 | } 376 | .leaflet-control-layers-scrollbar { 377 | overflow-y: scroll; 378 | overflow-x: hidden; 379 | padding-right: 5px; 380 | } 381 | .leaflet-control-layers-selector { 382 | margin-top: 2px; 383 | position: relative; 384 | top: 1px; 385 | } 386 | .leaflet-control-layers label { 387 | display: block; 388 | } 389 | .leaflet-control-layers-separator { 390 | height: 0; 391 | border-top: 1px solid #ddd; 392 | margin: 5px -10px 5px -6px; 393 | } 394 | 395 | /* Default icon URLs */ 396 | .leaflet-default-icon-path { 397 | background-image: url(images/marker-icon.png); 398 | } 399 | 400 | 401 | /* attribution and scale controls */ 402 | 403 | .leaflet-container .leaflet-control-attribution { 404 | background: #fff; 405 | background: rgba(255, 255, 255, 0.7); 406 | margin: 0; 407 | } 408 | .leaflet-control-attribution, 409 | .leaflet-control-scale-line { 410 | padding: 0 5px; 411 | color: #333; 412 | } 413 | .leaflet-control-attribution a { 414 | text-decoration: none; 415 | } 416 | .leaflet-control-attribution a:hover { 417 | text-decoration: underline; 418 | } 419 | .leaflet-container .leaflet-control-attribution, 420 | .leaflet-container .leaflet-control-scale { 421 | font-size: 11px; 422 | } 423 | .leaflet-left .leaflet-control-scale { 424 | margin-left: 5px; 425 | } 426 | .leaflet-bottom .leaflet-control-scale { 427 | margin-bottom: 5px; 428 | } 429 | .leaflet-control-scale-line { 430 | border: 2px solid #777; 431 | border-top: none; 432 | line-height: 1.1; 433 | padding: 2px 5px 1px; 434 | font-size: 11px; 435 | white-space: nowrap; 436 | overflow: hidden; 437 | -moz-box-sizing: border-box; 438 | box-sizing: border-box; 439 | 440 | background: #fff; 441 | background: rgba(255, 255, 255, 0.5); 442 | } 443 | .leaflet-control-scale-line:not(:first-child) { 444 | border-top: 2px solid #777; 445 | border-bottom: none; 446 | margin-top: -2px; 447 | } 448 | .leaflet-control-scale-line:not(:first-child):not(:last-child) { 449 | border-bottom: 2px solid #777; 450 | } 451 | 452 | .leaflet-touch .leaflet-control-attribution, 453 | .leaflet-touch .leaflet-control-layers, 454 | .leaflet-touch .leaflet-bar { 455 | box-shadow: none; 456 | } 457 | .leaflet-touch .leaflet-control-layers, 458 | .leaflet-touch .leaflet-bar { 459 | border: 2px solid rgba(0,0,0,0.2); 460 | background-clip: padding-box; 461 | } 462 | 463 | 464 | /* popup */ 465 | 466 | .leaflet-popup { 467 | position: absolute; 468 | text-align: center; 469 | margin-bottom: 20px; 470 | } 471 | .leaflet-popup-content-wrapper { 472 | padding: 1px; 473 | text-align: left; 474 | border-radius: 12px; 475 | } 476 | .leaflet-popup-content { 477 | margin: 13px 19px; 478 | line-height: 1.4; 479 | } 480 | .leaflet-popup-content p { 481 | margin: 18px 0; 482 | } 483 | .leaflet-popup-tip-container { 484 | width: 40px; 485 | height: 20px; 486 | position: absolute; 487 | left: 50%; 488 | margin-left: -20px; 489 | overflow: hidden; 490 | pointer-events: none; 491 | } 492 | .leaflet-popup-tip { 493 | width: 17px; 494 | height: 17px; 495 | padding: 1px; 496 | 497 | margin: -10px auto 0; 498 | 499 | -webkit-transform: rotate(45deg); 500 | -moz-transform: rotate(45deg); 501 | -ms-transform: rotate(45deg); 502 | transform: rotate(45deg); 503 | } 504 | .leaflet-popup-content-wrapper, 505 | .leaflet-popup-tip { 506 | background: white; 507 | color: #333; 508 | box-shadow: 0 3px 14px rgba(0,0,0,0.4); 509 | } 510 | .leaflet-container a.leaflet-popup-close-button { 511 | position: absolute; 512 | top: 0; 513 | right: 0; 514 | padding: 4px 4px 0 0; 515 | border: none; 516 | text-align: center; 517 | width: 18px; 518 | height: 14px; 519 | font: 16px/14px Tahoma, Verdana, sans-serif; 520 | color: #c3c3c3; 521 | text-decoration: none; 522 | font-weight: bold; 523 | background: transparent; 524 | } 525 | .leaflet-container a.leaflet-popup-close-button:hover { 526 | color: #999; 527 | } 528 | .leaflet-popup-scrolled { 529 | overflow: auto; 530 | border-bottom: 1px solid #ddd; 531 | border-top: 1px solid #ddd; 532 | } 533 | 534 | .leaflet-oldie .leaflet-popup-content-wrapper { 535 | zoom: 1; 536 | } 537 | .leaflet-oldie .leaflet-popup-tip { 538 | width: 24px; 539 | margin: 0 auto; 540 | 541 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; 542 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); 543 | } 544 | .leaflet-oldie .leaflet-popup-tip-container { 545 | margin-top: -1px; 546 | } 547 | 548 | .leaflet-oldie .leaflet-control-zoom, 549 | .leaflet-oldie .leaflet-control-layers, 550 | .leaflet-oldie .leaflet-popup-content-wrapper, 551 | .leaflet-oldie .leaflet-popup-tip { 552 | border: 1px solid #999; 553 | } 554 | 555 | 556 | /* div icon */ 557 | 558 | .leaflet-div-icon { 559 | background: #fff; 560 | border: 1px solid #666; 561 | } 562 | 563 | 564 | /* Tooltip */ 565 | /* Base styles for the element that has a tooltip */ 566 | .leaflet-tooltip { 567 | position: absolute; 568 | padding: 6px; 569 | background-color: #fff; 570 | border: 1px solid #fff; 571 | border-radius: 3px; 572 | color: #222; 573 | white-space: nowrap; 574 | -webkit-user-select: none; 575 | -moz-user-select: none; 576 | -ms-user-select: none; 577 | user-select: none; 578 | pointer-events: none; 579 | box-shadow: 0 1px 3px rgba(0,0,0,0.4); 580 | } 581 | .leaflet-tooltip.leaflet-clickable { 582 | cursor: pointer; 583 | pointer-events: auto; 584 | } 585 | .leaflet-tooltip-top:before, 586 | .leaflet-tooltip-bottom:before, 587 | .leaflet-tooltip-left:before, 588 | .leaflet-tooltip-right:before { 589 | position: absolute; 590 | pointer-events: none; 591 | border: 6px solid transparent; 592 | background: transparent; 593 | content: ""; 594 | } 595 | 596 | /* Directions */ 597 | 598 | .leaflet-tooltip-bottom { 599 | margin-top: 6px; 600 | } 601 | .leaflet-tooltip-top { 602 | margin-top: -6px; 603 | } 604 | .leaflet-tooltip-bottom:before, 605 | .leaflet-tooltip-top:before { 606 | left: 50%; 607 | margin-left: -6px; 608 | } 609 | .leaflet-tooltip-top:before { 610 | bottom: 0; 611 | margin-bottom: -12px; 612 | border-top-color: #fff; 613 | } 614 | .leaflet-tooltip-bottom:before { 615 | top: 0; 616 | margin-top: -12px; 617 | margin-left: -6px; 618 | border-bottom-color: #fff; 619 | } 620 | .leaflet-tooltip-left { 621 | margin-left: -6px; 622 | } 623 | .leaflet-tooltip-right { 624 | margin-left: 6px; 625 | } 626 | .leaflet-tooltip-left:before, 627 | .leaflet-tooltip-right:before { 628 | top: 50%; 629 | margin-top: -6px; 630 | } 631 | .leaflet-tooltip-left:before { 632 | right: 0; 633 | margin-right: -12px; 634 | border-left-color: #fff; 635 | } 636 | .leaflet-tooltip-right:before { 637 | left: 0; 638 | margin-left: -12px; 639 | border-right-color: #fff; 640 | } 641 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === WP GPX Maps === 2 | 3 | Contributors: bastianonm, Stephan Klein, Michel Selerin, TosattoSimonePio, Kniebremser 4 | Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8VHWLRW6JBTML 5 | Tags: maps, gpx, gps, graph, chart, leaflet, track, garmin, image, nextgen-gallery, nextgen, exif, OpenStreetMap, OpenCycleMap, Hike&Bike, heart rate, heartrate, cadence 6 | Requires at least: 4.6.0 7 | Tested up to: 5.2.2 8 | Requires PHP: 5.6.20 9 | Stable tag: 1.7.00 10 | 11 | Draws a GPX track with altitude graph. You can also display your nextgen gallery images in the map. 12 | 13 | == Description == 14 | 15 | This plugin has, as input, the GPX file with the track you've made and as output it shows the map of the track and an interactive altitude graph (where available). 16 | 17 | Fully configurable: 18 | 19 | - Custom colors 20 | - Custom icons 21 | - Multiple language support 22 | 23 | Supported charts: 24 | 25 | - Altitude 26 | - Speed 27 | - Heart rate 28 | - Temperature 29 | - Cadence 30 | - Grade 31 | 32 | NextGen Gallery Integration: 33 | 34 | Display your NextGen Gallery images inside the map! 35 | Even if you don't have a GPS camera, this plugin can retrive the image position starting from the image date and your GPX file. 36 | 37 | Post Attachments Integration: 38 | 39 | This version is extended by: Stephan Klein and supports displaying all images attached to a post without using NGG. 40 | 41 | Try this plugin: https://devfarm.it/wp-gpx-maps-demo/ 42 | 43 | Support: 44 | 45 | If you need help, please use: www.devfarm.it Support Forum 46 | 47 | Would you like to help fix bugs or further develop the plugin? On Github you can contribuite easly with your code. 48 | 49 | Translations: 50 | 51 | Translators are welcome to contribute to the plugin. Please use the WordPress translation website. 52 | 53 | The language files in the plugin contain 18 translatable texts for 13 languages: 54 | 55 | - Catalan ca 56 | - Dutch nl_NL 57 | - English (default) 58 | - French fr_FR 59 | - Hungarian hu_HU 60 | - Italian it_IT 61 | - Norwegian nb_NO 62 | - Polish pl_PL 63 | - Portuguese (Brazilian) pt_BR 64 | - Russian ru_RU 65 | - Spanish es_ES 66 | - Swedish sv_SE 67 | - Turkish tr_TR 68 | - Bulgarian bg_BG 69 | - Slovak cs_CZ 70 | - Norwegian nb_NO 71 | - Japanese ja_JP 72 | 73 | (Many thanks to all guys who helped me with the translations) 74 | 75 | Supported GPX namespaces are: 76 | 77 | 1. http://www.topografix.com/GPX/1/0 78 | 79 | 1. www.topografix.com/GPX/1/1 80 | 81 | 1. http://www.garmin.com/xmlschemas/GpxExtensions/v3 82 | 83 | 1. http://www.garmin.com/xmlschemas/TrackPointExtension/v1 84 | 85 | Thanks to: www.securcube.net, www.devfarm.it 86 | 87 | Icons made by Freepik from www.flaticon.com is licensed by Creative Commons BY 3.0 88 | 89 | == Installation == 90 | 91 | 1. Use the classic wordpress plugin installer or copy the plugins folder to the `/wp-content/plugins/` directory 92 | 93 | 1. Activate the plugin through the 'Plugins' menu in WordPress 94 | 95 | 1. Add the shortcode [sgpx gpx=">relative path to your gpx<"] or [sgpx gpx=">http://somesite.com/files/yourfile.gpx<"] 96 | 97 | == Frequently Asked Questions == 98 | 99 | = Which map types are available? = 100 | 101 | You can use the following map types: 102 | 103 | 1. OSM1 = Open Street Map (Default setting) 104 | 1. OSM2 = Open Cycle Map / Thunderforest - Open Cycle Map (API Key required) 105 | 1. OSM3 = Thunderforest - Outdoors (API Key required) 106 | 1. OSM4 = Thunderforest - Transport (API Key required) 107 | 1. OSM5 = Thunderforest - Landscape (API Key required) 108 | 1. OSM6 = MapToolKit - Terrain 109 | 1. OSM7 = Open Street Map - Humanitarian map style 110 | 1. OSM9 = Hike & Bike 111 | 1. OSM10 = Open Sea Map 112 | 113 | If you use the OpenCycleMap without the API key, a watermark appears on the card: "API Key required". 114 | 115 | The Thunderforest maps Outdoors, Transport and Landscape are only displayed with an API Key. 116 | 117 | = Which shortcode attributes are available? = 118 | 119 | You can use the following shortcodes: 120 | 121 | 1. gpx: Relative path to the GPX file 122 | 1. width: Map width (Value in percent) 123 | 1. mheight: Map height (Value in pixeln) 124 | 1. gheight: Graph height (Value in pixeln) 125 | 1. skipcache: Do not use cache. If TRUE might be very slow (Default is false) 126 | 1. download: Allow users to download your GPX file (Default is false) 127 | 1. summary: Print summary details of your GPX track (Default is false) 128 | 1. summarytotlen: Print total distance in summary table (Default is false) 129 | 1. summarymaxele: Print max elevation in summary table (Default is false) 130 | 1. summaryminele: Print min Elevation in summary table (Default is false) 131 | 1. summaryeleup: Print total climbing in summary table (Default is false) 132 | 1. summaryeledown: Print total descent in summary table (Default is false) 133 | 1. summaryavgspeed: Print average Speed in summary table (Default is false) 134 | 1. summarytotaltime: Print total time in summary table (Default is false) 135 | 1. mtype: Map types 136 | 1. mlinecolor: Map line color (Default is #3366cc) 137 | 1. zoomonscrollwheel: Zoom on map when mouse scroll wheel (Default is false) 138 | 1. waypoints: Print the gpx waypoints inside the map (Default is false) 139 | 1. startIcon: Start track icon 140 | 1. endIcon: End track icon 141 | 1. currentIcon: Current position icon (when mouse hover) 142 | 1. waypointicon: Custom waypoint icon 143 | 1. showele: Show elevation data inside the chart (Default is true) 144 | 1. uom: Distance/altitude unit of measure 145 | 1. 0 = meters/meters (Default setting) 146 | 1. 1 = feet/miles 147 | 1. 2 = meters/kilometers 148 | 1. 3 = meters/nautical miles 149 | 1. 4 = meters/miles 150 | 1. 5 = feet/nautical miles 151 | 1. glinecolor: Altitude line color (Default is #3366cc) 152 | 1. chartFrom1: Minimun value for altitude chart 153 | 1. chartTo1: Maxumin value for altitude chart 154 | 1. showspeed: Show speed inside the chart (Default is false) 155 | 1. glinecolorspeed: Speed line color (Default is #ff0000) 156 | 1. uomspeed: Unit of measure for speed 157 | 1. 0 = m/s (Default setting) 158 | 1. 1 = km/h 159 | 1. 2 = miles/h 160 | 1. 3 = min/km 161 | 1. 4 = min/miles 162 | 1. 5 = Nautical Miles/Hour (Knots) 163 | 1. 6 = min/100 meters 164 | 1. chartFrom2: Minimun value for speed chart 165 | 1. chartTo2: Maxumin value for speed chart 166 | 1. showhr: Show heart rate inside the chart (Default is false) 167 | 1. glinecolorhr: Heart rate line color (Default is #ff77bd) 168 | 1. showatemp: Show temperature inside the chart (Default is false) 169 | 1. glinecoloratemp: Temperature line color (Default is #ff77bd) 170 | 1. showcad: Show cadence inside the chart (Default is false) 171 | 1. glinecolorcad: Cadence line color (Default is #beecff) 172 | 1. showgrade: Show grade inside the chart (Default is false) 173 | 1. glinecolorgrade: Grade line color (Default is #beecff) 174 | 1. nggalleries: NextGen Gallery id or a list of Galleries id separated by a comma 175 | 1. ngimages: NextGen Image id or a list of Images id separated by a comma 176 | 1. attachments: Show all images that are attached to post (Default is false) 177 | 1. dtoffset: The difference (in seconds) between your gpx tool date and your camera date 178 | 1. pointsoffset: Skip points closer than XX meters (Default is 10) 179 | 1. donotreducegpx: Print all the point without reduce it (Default is false) 180 | 181 | = What happening if I've a very large GPX files? = 182 | 183 | This plugin will print a small amout of points to speedup javascript and pageload. 184 | 185 | = Is it free? = 186 | 187 | Yes! 188 | 189 | == Screenshots == 190 | 1. Simple GPX 191 | 1. GPX with waypoints 192 | 1. Admin area - List of tracks 193 | 1. Admin area - Settings 194 | 1. Altitude & Speed 195 | 1. Altitude & Speed & Heart rate 196 | 197 | == Changelog == 198 | 199 | = X.X.XX = 200 | * General: Added new map type "Thunderforest - Outddors" (OSM3) 201 | * Admin: Added admin notices in the dashboard 202 | * Settings Tab: In the map selection changed to the correct maps provider from "Open Cycle Map"* Settings Tab: to "Thunderforest" 203 | * Administration Tab: New Tab with the settings "Editor & Author upload" and "Show update notice" 204 | * Help Tab: In the map selection changed to the correct maps provider from "Open Cycle Map" to "Thunderforest" 205 | * Output: In the map selection changed to the correct maps provider from "Open Cycle Map" to "Thunderforest" 206 | * Output: Fixed in map footer for each map, the corresponding map provider is displayed with URL 207 | * Code: Added PHP version notices, WordPress 5.3 requires PHP 5.6.20 208 | * Code: Added Missing entries for add and delete options 209 | * Code: Style for output moved in a seperate CSS file 210 | * Code: Adjustments a la WPCS 211 | * Code: Small CSS design optimizations for the tabs 212 | * Code: Upgrade bootstrap-table to 1.13.2 213 | * Code: Removed german language file (now over translate.wordpress.org) 214 | = 1.7.00 = 215 | * Added: Authors can upload GPX tracks in a folder called as *your user name*, inside [../wp-upload dir/gpx/[*your user name*] (thanks to wildcomputations) 216 | * Added: Authors an Admins can see the current values for shortcodes in help tab 217 | * Added: Button to instant copy the shortcode of the selected GPX file in the tab track 218 | * Added: different size logos for the plugin store (icon.svg, icon128x128.png and icon256x256.png) [inside ../plugins/wp-gpx-maps/assets] 219 | * Changed: Settings tab is for non-Admin users is not more visible 220 | * Tweak: Help tab is easier to read 221 | * Tweak: Plugin is now complete translatable (Backend + Frontend) 222 | * Tweak: WordPress coding standards 223 | * Upgrade: Leaflet to 1.5.1 224 | * Upgrade: leaflet.fullscreen to 1.4.5 225 | * Upgrade: Chart.min.js to 2.8.0 226 | = 1.6.07 = 227 | * resolve admin error 228 | = 1.6.06 = 229 | * Added average values under the graph (thanks to cyclinggeorgian) 230 | = 1.6.04 = 231 | * NGG gallery is working 232 | * Getting HR, Cad and Temp working again (thanks to cyclinggeorgian) 233 | * Fix javascript errors 234 | * Fix multiple traks gpx 235 | = 1.6.03 = 236 | * Fix syntax error causing graph not to display (thanks to nickstabler) 237 | = 1.6.02 = 238 | * Resolved errors with start and end icons 239 | = 1.6.01 = 240 | * Removed Gogole maps. Leafletjs instead. 241 | * -- NextGen Gallery is not working, due next gen image format changed -- I'll fix soon 242 | = 1.5.05 = 243 | * renamed javascript functions to avoid collision with other plugins 244 | * reduced chart line thickness 245 | = 1.5.04 = 246 | * fix uom 247 | * fix file not found 248 | = 1.5.03 = 249 | * fix random error 250 | = 1.5.02 = 251 | * Security improvements 252 | = 1.5.01 = 253 | * Improved security 254 | * Included javascript 255 | * Multiple file upload 256 | * Implemented sorting in file list 257 | * Renamed internal function to improve wp compatibility 258 | = 1.5.00 = 259 | * replaced highcharts with chartjs. This is a forced choice due highcharts license issue, view: https://devfarm.it/wordpress-plugin/wordpress-plugin-directory-notice-wp-gpx-maps-temporarily-disabled/ 260 | = 1.3.16 = 261 | * Added Norwegian nb_NO translation (thanks to thordivel) 262 | * Added Japanese ja_JP translation (thanks to dentos) 263 | = 1.3.15 = 264 | * Switched to HTTPS where possible (thanks to delitestudio) 265 | = 1.3.14 = 266 | * Added Thunderforest Api Key on settings: for OpenCycleMap 267 | = 1.3.13 = 268 | * Added google maps api key on settings 269 | * Removed parameter 'sensor' on google maps js 270 | * Added unit of measure of speed for swimmers: min/100 meters 271 | = 1.3.12 = 272 | * Fix incompatibility with Debian PHP7 (thanks to phbaer) https://github.com/devfarm-it/wp-gpx-maps/pull/5 273 | = 1.3.10 = 274 | * Improved german translations (thanks to Konrad) http://tadesse.de/7882/2015-wanderung-ostrov-tisa-ii/ 275 | = 1.3.9 = 276 | * Retrieve waypoints in JSON, possibility to add a custom marker (Changed by Michel Selerin) 277 | = 1.3.8 = 278 | * Improved Google Maps visualization 279 | = 1.3.7 = 280 | * NextGen Gallery's Attachment support. Thanks to Stephan Klein (https://klein-gedruckt.de/2015/03/wordpress-plugin-wp-gpx-maps/) 281 | = 1.3.6 = 282 | * Fix: remote file download issue 283 | * Fix: download file link with WPML 284 | * Improved cache with filetime (thanks to David) 285 | = 1.3.5 = 286 | * Fix: Garmin cadence again 287 | * Fix: WP Tabs 288 | = 1.3.4 = 289 | * Fix: Garmin cadence 290 | * Infowindows closing on mouseout 291 | = 1.3.3 = 292 | * Add feet/Nautical Miles units (thanks to elperepat) 293 | * Update OpenStreetMaps Credits 294 | * WP Tabs fix 295 | = 1.3.2 = 296 | * fix: left axis not visible (downgrade highcharts to v3.0.10) 297 | * fix: fullscreen map js error 298 | = 1.3.1 = 299 | * fix: http/https javascript registration 300 | * fix: full screen map css issue 301 | = 1.3.0 = 302 | * Speed improvement 303 | * Rewritten js classes 304 | * Added Temperature chart 305 | * Added HTML5 Gps position (you can now follow the gpx with your mobile phone/tablet/pc) 306 | = 1.2.6 = 307 | * Speed improvement 308 | = 1.2.5 = 309 | * Added Catalan translation, thanks to Edgar 310 | * Updated Spanish translation, thanks to Dani 311 | * Added different types of distance: Normal, Flat (don't consider altitude) and Climb distance 312 | = 1.2.4 = 313 | * Added Bulgarian translation, thanks to Svilen Savov 314 | * Added possibility to hide the elevation chart 315 | = 1.2.2 = 316 | * Smaller map type selector 317 | * New map: MapToolKit - Terrain 318 | * Fix: Google maps exception for NextGen Gallery 319 | = 1.2.1 = 320 | * Fix: NextGen Gallery 1.9 compatibility 321 | = 1.2.0 = 322 | * NextGen Gallery 2 support 323 | * NextGen Gallery Pro support 324 | = 1.1.46 = 325 | * Added meters/miles chart unit of measure 326 | * Added Russian translation, thanks to G.A.P 327 | = 1.1.45 = 328 | * Added nautical miles as distance (Many thanks to Anders) 329 | = 1.1.44 = 330 | * Added Chart zoom feature 331 | * Some small bug fixes 332 | = 1.1.43 = 333 | * Added Portuguese (Brazilian) translation, thanks to André Ramos 334 | * new map: Open Cycle Map - Transport 335 | * new map: Open Cycle Map - Landscape 336 | = 1.1.42 = 337 | * qTranslate compatible 338 | = 1.1.41 = 339 | * Added Polish translation, thanks to Sebastian 340 | * Fix: Spanish translation 341 | * Minor javascript improvement 342 | = 1.1.40 = 343 | * Improved italian translation 344 | * Added grade chart (beta) 345 | = 1.1.39 = 346 | * Added French translation, thanks to Hervé 347 | * Added Nautical Miles per Hour (Knots) unit of measure 348 | = 1.1.38 = 349 | * Fix: garmin gpx cadence and heart rate 350 | * Updated Turkish translation, thanks to Edip 351 | * Added Hungarian translation, thanks to Tami 352 | = 1.1.36 = 353 | * Even Editor and Author users can upload their own gpx. Administrators can see all the administrators gpx. The other users can see only their uploads 354 | = 1.1.35 = 355 | * Fix: In the post list, sometime, the maps was not displaying correctly ( the php rand() function was not working?? ) 356 | * Various improvements for multi track gpx. Thanks to GPSracks.tv 357 | * Summary table is now avaiable even without chart. Thanks to David 358 | = 1.1.34 = 359 | * 2 decimals for unit of measure min/km and min/mi 360 | * translation file updated (a couple of phrases added) 361 | * File list reverse order (from the newer to the older) 362 | * nggallery integration: division by zero fixed 363 | = 1.1.33 = 364 | * Decimals reducted to 1 for unit of measure min/km and min/mi 365 | * map zoom and center position is working with waypoints only files 366 | * automatic scale works again (thanks to MArkus) 367 | = 1.1.32 = 368 | * You can exclude cache (slower and not recommended) 369 | * You can decide what show in the summary table 370 | * German translation (thanks to Ali) 371 | = 1.1.31 = 372 | * Fixed fullscreen map image slideshow 373 | = 1.1.30 = 374 | * Multi track gpx support 375 | * Next Gen Gallery images positions derived from date. You can adjust the date with the shortcode attribute dtoffset 376 | * If you set Chart Height (shortcode gheight) = 0 means hide the graph 377 | * Fix: All images should work, independent from browser cache 378 | = 1.1.29 = 379 | * Decimal separator is working with all the browsers 380 | * minutes per mile and minutes per kilometer was wrong 381 | = 1.1.28 = 382 | * Decimal and thousand separator derived from browser language 383 | * Added summary table (see settings): Total distance, Max elevation, Min elevation, Total climbing, Total descent, Average speed 384 | * Added 2 speed units of measure: minutes per mile and minutes per kilometer 385 | = 1.1.26 = 386 | * Multilanguage implementation (only front-end). I've implemented the italian one, I hope somebody will help me with other languages.. 387 | * Map Full screen mode (I'm sure it's not working in ie6. don't even ask!) 388 | * Added waypoint custom icon 389 | = 1.1.25 = 390 | * Added possibility to download your gpx 391 | = 1.1.23 = 392 | * Security fix, please update! 393 | = 1.1.22 = 394 | * enable map zoom on scroll wheel (check settings) 395 | * test attributes in get params 396 | = 1.1.21 = 397 | * google maps images fixed (templates with bad css) 398 | * upgrade to google maps 3.9 399 | = 1.1.20 = 400 | * google maps images fixed in Yoko theme 401 | = 1.1.19 = 402 | * include jQuery if needed 403 | = 1.1.17 = 404 | * Remove zero values from cadence and heart rate charts 405 | * nextgen gallery improvement 406 | = 1.1.16 = 407 | * Cadence chart (where available) 408 | * minor bug fixes 409 | = 1.1.15 = 410 | * migration from google chart to highcharts. Highcharts are much better than google chart! This is the base for a new serie of improvements. Stay in touch for the next releases! 411 | * heart rate chart (where available) 412 | = 1.1.14 = 413 | * added css to avoid map bars display issue 414 | = 1.1.13 = 415 | * added new types of maps: Open Street Map, Open Cycle Map, Hike & Bike. 416 | * fixed nextgen gallery caching problem 417 | = 1.1.12 = 418 | * nextgen gallery display bug fixes 419 | 420 | == Upgrade Notice == 421 | -------------------------------------------------------------------------------- /wp-gpx-maps-utils.php: -------------------------------------------------------------------------------- 1 | get_the_ID(), 14 | 'post_type' => 'attachment', 15 | /* show all -1 */ 16 | 'numberposts' => -1, 17 | 'post_status' => 'inherit', 18 | 'post_mime_type' => 'image', 19 | 'order' => 'ASC', 20 | 'orderby' => 'menu_order ASC', 21 | ) ); 22 | 23 | foreach ( $attachments as $attachment_id => $attachment ) { 24 | 25 | $img_src = wp_get_attachment_image_src( $attachment_id, 'full' ); 26 | $img_thmb = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); 27 | $img_metadata = wp_get_attachment_metadata( $attachment_id ); 28 | 29 | $item = array(); 30 | $item['data'] = wp_get_attachment_link( $attachment_id, array( 105, 105 ) ); 31 | 32 | if ( is_callable( 'exif_read_data' ) ) { 33 | $exif = @exif_read_data( $img_src[0] ); 34 | if ( $exif !== false ) { 35 | $item['lon'] = getExifGps( $exif['GPSLongitude'], $exif['GPSLongitudeRef'] ); 36 | $item['lat'] = getExifGps( $exif['GPSLatitude'], $exif['GPSLatitudeRef'] ); 37 | if ( ( $item['lat'] != 0 ) || ( $item['lon'] != 0 ) ) { 38 | $result[] = $item; 39 | } elseif ( isset( $p->imagedate ) ) { 40 | $_dt = strtotime( $p->imagedate ) + $dtoffset; 41 | $_item = findItemCoordinate( $_dt, $dt, $lat, $lon ); 42 | if ( $_item != null ) { 43 | $item['lat'] = $_item['lat']; 44 | $item['lon'] = $_item['lon']; 45 | $result[] = $item; 46 | } 47 | } 48 | } 49 | } else { 50 | $error .= "Sorry, exif_read_data function not found! check your hosting.
"; 51 | } 52 | } 53 | } catch ( Exception $e ) { 54 | $error .= 'Error When Retrieving attached images: $e
'; 55 | } 56 | return $result; 57 | } 58 | 59 | function wp_gpx_maps_sitePath() { 60 | 61 | return substr( substr( __FILE__, 0, strrpos( __FILE__, 'wp-content' ) ), 0, -1 ); 62 | // return substr(get_home_path(), 0, -1); 63 | } 64 | 65 | function gpxFolderPath() { 66 | 67 | $upload_dir = wp_upload_dir(); 68 | $uploadsPath = $upload_dir['basedir']; 69 | 70 | if ( current_user_can( 'manage_options' ) ) { 71 | $ret = $uploadsPath . DIRECTORY_SEPARATOR . 'gpx'; 72 | } elseif ( current_user_can( 'publish_posts' ) ) { 73 | global $current_user; 74 | wp_get_current_user(); 75 | $ret = $uploadsPath . DIRECTORY_SEPARATOR . 'gpx' . DIRECTORY_SEPARATOR . $current_user->user_login; 76 | } 77 | 78 | return str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $ret ); 79 | } 80 | 81 | function gpxCacheFolderPath() { 82 | 83 | $upload_dir = wp_upload_dir(); 84 | $uploadsPath = $upload_dir['basedir']; 85 | $ret = $uploadsPath . DIRECTORY_SEPARATOR . 'gpx' . DIRECTORY_SEPARATOR . '~cache'; 86 | return str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $ret ); 87 | } 88 | 89 | function relativeGpxFolderPath() { 90 | 91 | $sitePath = wp_gpx_maps_sitePath(); 92 | $realGpxPath = gpxFolderPath(); 93 | $ret = str_replace( $sitePath, '', $realGpxPath ) . DIRECTORY_SEPARATOR; 94 | return str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $ret ); 95 | } 96 | 97 | function relativeGpxCacheFolderPath() { 98 | 99 | $sitePath = wp_gpx_maps_sitePath(); 100 | $realGpxCachePath = gpxCacheFolderPath(); 101 | $ret = str_replace( $sitePath, '', $realGpxCachePath ) . DIRECTORY_SEPARATOR; 102 | return str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $ret ); 103 | } 104 | 105 | function wpgpxmaps_recursive_remove_directory( $directory, $empty = false ) { 106 | 107 | if ( substr( $directory, -1 ) == '/' ) { 108 | $directory = substr( $directory, 0, -1 ); 109 | } 110 | if ( ! file_exists( $directory ) || ! is_dir( $directory ) ) { 111 | return false; 112 | } elseif ( is_readable( $directory ) ) { 113 | $handle = opendir( $directory ); 114 | while ( false !== ( $item = readdir( $handle ) ) ) { 115 | if ( $item != '.' && $item != '..' ) { 116 | $path = $directory . '/' . $item; 117 | if ( is_dir( $path ) ) { 118 | wpgpxmaps_recursive_remove_directory( $path ); 119 | } else { 120 | unlink( $path ); 121 | } 122 | } 123 | } 124 | closedir( $handle ); 125 | if ( false == $empty ) { 126 | if ( ! rmdir( $directory ) ) { 127 | return false; 128 | } 129 | } 130 | } 131 | return true; 132 | } 133 | 134 | function wpgpxmaps_getPoints( $gpxPath, $gpxOffset = 10, $donotreducegpx, $distancetype ) { 135 | 136 | $points = array(); 137 | $dist = 0; 138 | 139 | $lastLat = 0; 140 | $lastLon = 0; 141 | $lastEle = 0; 142 | $lastOffset = 0; 143 | 144 | if ( file_exists( $gpxPath ) ) { 145 | $points = @wpgpxmaps_parseXml( $gpxPath, $gpxOffset, $distancetype ); 146 | } else { 147 | echo _e( 'WP GPX Maps Error: GPX file not found!', 'wp-gpx-maps' ) . ' ' . $gpxPath; 148 | } 149 | 150 | /* Reduce the points to around 200 to speedup */ 151 | if ( $donotreducegpx != true ) { 152 | $count = sizeof( $points->lat ); 153 | if ( $count > 200 ) { 154 | $f = round( $count/200 ); 155 | if ( $f > 1 ) 156 | for ( $i = $count; $i > 0;$i-- ) 157 | if ( $i % $f != 0 && $points->lat[$i] != null ) { 158 | unset( $points->dt[$i] ); 159 | unset( $points->lat[$i] ); 160 | unset( $points->lon[$i] ); 161 | unset( $points->ele[$i] ); 162 | unset( $points->dist[$i] ); 163 | unset( $points->speed[$i] ); 164 | unset( $points->hr[$i] ); 165 | unset( $points->atemp[$i] ); 166 | unset( $points->cad[$i] ); 167 | unset( $points->grade[$i] ); 168 | } 169 | } 170 | } 171 | return $points; 172 | } 173 | 174 | function wpgpxmaps_parseXml( $filePath, $gpxOffset, $distancetype ) { 175 | 176 | $points = null; 177 | 178 | $points->dt = array(); 179 | $points->lat = array(); 180 | $points->lon = array(); 181 | $points->ele = array(); 182 | $points->dist = array(); 183 | $points->speed = array(); 184 | $points->hr = array(); 185 | $points->atemp = array(); 186 | $points->cad = array(); 187 | $points->grade = array(); 188 | 189 | $points->maxTime = 0; 190 | $points->minTime = 0; 191 | $points->maxEle = 0; 192 | $points->minEle = 0; 193 | $points->totalEleUp = 0; 194 | $points->totalEleDown = 0; 195 | $points->avgSpeed = 0; 196 | $points->avgCad = 0; 197 | $points->avgHr = 0; 198 | $points->avgTemp = 0; 199 | $points->totalLength = 0; 200 | 201 | $gpx = simplexml_load_file( $filePath ); 202 | 203 | if ( false === $gpx ) 204 | return; 205 | 206 | $gpx->registerXPathNamespace( 'a', 'http://www.topografix.com/GPX/1/0' ); 207 | $gpx->registerXPathNamespace( 'b', 'http://www.topografix.com/GPX/1/1' ); 208 | $gpx->registerXPathNamespace( 'ns3', 'http://www.garmin.com/xmlschemas/TrackPointExtension/v1' ); 209 | 210 | $nodes = $gpx->xpath( '//trk | //a:trk | //b:trk ' ); 211 | /* Normal GPX */ 212 | 213 | if ( count( $nodes ) > 0 ) { 214 | 215 | foreach ( $nodes as $_trk ) { 216 | 217 | $trk = simplexml_load_string( $_trk->asXML() ); 218 | 219 | $trk->registerXPathNamespace( 'a', 'http://www.topografix.com/GPX/1/0' ); 220 | $trk->registerXPathNamespace( 'b', 'http://www.topografix.com/GPX/1/1' ); 221 | $trk->registerXPathNamespace( 'ns3', 'http://www.garmin.com/xmlschemas/TrackPointExtension/v1' ); 222 | 223 | $trkpts = $trk->xpath( '//trkpt | //a:trkpt | //b:trkpt' ); 224 | 225 | $lastLat = 0; 226 | $lastLon = 0; 227 | $lastEle = 0; 228 | $lastTime = 0; 229 | // $dist = 0; 230 | $lastOffset = 0; 231 | $speedBuffer = array(); 232 | 233 | foreach ( $trkpts as $trkpt ) { 234 | 235 | $lat = $trkpt['lat']; 236 | $lon = $trkpt['lon']; 237 | $ele = $trkpt->ele; 238 | $time = $trkpt->time; 239 | $speed = (float) $trkpt->speed; 240 | $hr = 0; 241 | $atemp = 0; 242 | $cad = 0; 243 | $grade = 0; 244 | 245 | if ( isset( $trkpt->extensions ) ) { 246 | 247 | $arr = json_decode( wp_json_encode( $trkpt->extensions ), 1 ); 248 | 249 | if ( isset( $arr['ns3:TrackPointExtension'] ) ) { 250 | $tpe = $arr['ns3:TrackPointExtension']; 251 | $hr = @$tpe['ns3:hr']; 252 | $atemp = @$tpe['ns3:atemp']; 253 | $cad = @$tpe['ns3:cad']; 254 | 255 | } elseif ( isset( $arr['TrackPointExtension'] ) ) { 256 | $tpe = $arr['TrackPointExtension']; 257 | $hr = @$tpe['hr']; 258 | $atemp = @$tpe['atemp']; 259 | $cad = @$tpe['cad']; 260 | } 261 | } 262 | 263 | if ( 0 == $lastLat && 0 == $lastLon ) { 264 | 265 | /* Base Case */ 266 | array_push( $points->dt, strtotime( $time ) ); 267 | array_push( $points->lat, (float) $lat ); 268 | array_push( $points->lon, (float) $lon ); 269 | array_push( $points->ele, (float) round( $ele, 2 ) ); 270 | array_push( $points->dist, (float) round( $dist, 2 ) ); 271 | array_push( $points->speed, 0 ); 272 | array_push( $points->hr, (float) $hr ); 273 | array_push( $points->atemp, (float) $atemp ); 274 | array_push( $points->cad, (float) $cad ); 275 | array_push( $points->grade, $grade ); 276 | 277 | $lastLat = $lat; 278 | $lastLon = $lon; 279 | $lastEle = $ele; 280 | $lastTime = $time; 281 | } else { 282 | 283 | /* Normal Case */ 284 | $offset = calculateDistance( (float) $lat, (float) $lon, (float) $ele, (float) $lastLat, (float) $lastLon, (float) $lastEle, $distancetype ); 285 | $dist = $dist + $offset; 286 | 287 | $points->totalLength = $dist; 288 | 289 | if ( $speed == 0 ) { 290 | $datediff = (float) my_date_diff( $lastTime, $time ); 291 | if ( $datediff > 0 ) { 292 | $speed = $offset / $datediff; 293 | } 294 | } 295 | 296 | if ( $ele != 0 && $lastEle != 0 ) { 297 | $deltaEle = (float) ( $ele - $lastEle ); 298 | 299 | if ( (float) $ele > (float) $lastEle ) { 300 | $points->totalEleUp += $deltaEle; 301 | } else { 302 | $points->totalEleDown += $deltaEle; 303 | } 304 | $grade = $deltaEle / $offset * 100; 305 | } 306 | 307 | array_push( $speedBuffer, $speed ); 308 | 309 | if ( ( (float) $offset + (float) $lastOffset ) > $gpxOffset ) { 310 | /* Bigger Offset -> write coordinate */ 311 | $avgSpeed = 0; 312 | 313 | foreach ( $speedBuffer as $s ) { 314 | $avgSpeed += $s; 315 | } 316 | 317 | $avgSpeed = $avgSpeed / count( $speedBuffer ); 318 | $speedBuffer = array(); 319 | 320 | $lastOffset = 0; 321 | 322 | array_push( $points->dt, strtotime( $time ) ); 323 | array_push( $points->lat, (float) $lat ); 324 | array_push( $points->lon, (float) $lon ); 325 | array_push( $points->ele, (float) round( $ele, 2 ) ); 326 | array_push( $points->dist, (float) round( $dist, 2 ) ); 327 | array_push( $points->speed, (float) round( $avgSpeed, 1 ) ); 328 | array_push( $points->hr, $hr ); 329 | array_push( $points->atemp, $atemp ); 330 | array_push( $points->cad, $cad ); 331 | array_push( $points->grade, (float) round( $grade, 2 ) ); 332 | } else { 333 | /* Smoller Offset -> continue.. */ 334 | $lastOffset = (float) $lastOffset + (float) $offset; 335 | } 336 | } 337 | $lastLat = $lat; 338 | $lastLon = $lon; 339 | $lastEle = $ele; 340 | $lastTime = $time; 341 | } 342 | array_push( $points->dt, null ); 343 | array_push( $points->lat, null ); 344 | array_push( $points->lon, null ); 345 | array_push( $points->ele, null ); 346 | array_push( $points->dist, null ); 347 | array_push( $points->speed, null ); 348 | array_push( $points->hr, null ); 349 | array_push( $points->atemp, null ); 350 | array_push( $points->cad, null ); 351 | array_push( $points->grade, null ); 352 | 353 | unset( $trkpts ); 354 | } 355 | unset( $nodes ); 356 | 357 | try { 358 | array_pop( $points->dt, null ); 359 | array_pop( $points->lat, null ); 360 | array_pop( $points->lon, null ); 361 | array_pop( $points->ele, null ); 362 | array_pop( $points->dist, null ); 363 | array_pop( $points->speed, null ); 364 | array_pop( $points->hr, null ); 365 | array_pop( $points->atemp, null ); 366 | array_pop( $points->cad, null ); 367 | array_pop( $points->grade, null ); 368 | 369 | $_time = array_filter( $points->dt ); 370 | $_ele = array_filter( $points->ele ); 371 | $_dist = array_filter( $points->dist ); 372 | $points->maxEle = max( $_ele ); 373 | $points->minEle = min( $_ele ); 374 | $points->totalLength = max( $_dist ); 375 | $points->maxTime = max( $_time ); 376 | $points->minTime = min( $_time ); 377 | 378 | /* Calculating Average Speed */ 379 | $_speed = array_filter( $points->speed ); 380 | $points->avgSpeed = array_sum( $_speed ) / count( $_speed ); 381 | 382 | /* Calculating Average Cadence */ 383 | $_cad = array_filter( $points->cad ); 384 | $points->avgCad = (float) round( array_sum( $_cad ) / count( $_cad ), 0 ); 385 | 386 | /* Calculating Average Heart Rate */ 387 | $_hr = array_filter( $points->hr ); 388 | $points->avgHr = (float) round( array_sum( $_hr ) / count( $_hr ), 0 ); 389 | 390 | /* Calculating Average Temperature */ 391 | $_temp = array_filter( $points->atemp ); 392 | $points->avgTemp = (float) round( array_sum( $_temp ) / count( $_temp ), 1 ); 393 | 394 | } catch ( Exception $e ) { 395 | } 396 | } else { 397 | 398 | /* GPX Garmin case */ 399 | $gpx->registerXPathNamespace( 'gpxx', 'http://www.garmin.com/xmlschemas/GpxExtensions/v3' ); 400 | 401 | $nodes = $gpx->xpath( '//gpxx:rpt' ); 402 | 403 | if ( count( $nodes ) > 0 ) { 404 | 405 | $lastLat = 0; 406 | $lastLon = 0; 407 | $lastEle = 0; 408 | $dist = 0; 409 | $lastOffset = 0; 410 | 411 | /* GPX Garmin case */ 412 | foreach ( $nodes as $rpt ) { 413 | 414 | $lat = $rpt['lat']; 415 | $lon = $rpt['lon']; 416 | if ( 0 == $lastLat && 0 == $lastLon ) { 417 | 418 | /* Base Case */ 419 | array_push( $points->lat, (float) $lat ); 420 | array_push( $points->lon, (float) $lon ); 421 | array_push( $points->ele, 0 ); 422 | array_push( $points->dist, 0 ); 423 | array_push( $points->speed, 0 ); 424 | array_push( $points->hr, 0 ); 425 | array_push( $points->atemp, 0 ); 426 | array_push( $points->cad, 0 ); 427 | array_push( $points->grade, 0 ); 428 | $lastLat = $lat; 429 | $lastLon = $lon; 430 | } else { 431 | 432 | /* Base Case */ 433 | $offset = calculateDistance( $lat, $lon, 0, $lastLat, $lastLon, 0, $distancetype ); 434 | $dist = $dist + $offset; 435 | if ( ( (float) $offset + (float) $lastOffset ) > $gpxOffset ) { 436 | 437 | /* Bigger Offset -> write coordinate */ 438 | $lastOffset = 0; 439 | array_push( $points->lat, (float) $lat ); 440 | array_push( $points->lon, (float) $lon ); 441 | array_push( $points->ele, 0 ); 442 | array_push( $points->dist, 0 ); 443 | array_push( $points->speed, 0 ); 444 | array_push( $points->hr, 0 ); 445 | array_push( $points->atemp, 0 ); 446 | array_push( $points->cad, 0 ); 447 | array_push( $points->grade, 0 ); 448 | } else { 449 | 450 | /* Smoller Offset -> continue.. */ 451 | $lastOffset = (float) $lastOffset + (float) $offset; 452 | } 453 | } 454 | $lastLat = $lat; 455 | $lastLon = $lon; 456 | } 457 | unset( $nodes ); 458 | 459 | } else { 460 | 461 | /* GPX Strange case */ 462 | $nodes = $gpx->xpath( '//rtept | //a:rtept | //b:rtept' ); 463 | if ( count( $nodes ) > 0 ) { 464 | 465 | $lastLat = 0; 466 | $lastLon = 0; 467 | $lastEle = 0; 468 | $dist = 0; 469 | $lastOffset = 0; 470 | 471 | /* Garmin case */ 472 | foreach ( $nodes as $rtept ) { 473 | 474 | $lat = $rtept['lat']; 475 | $lon = $rtept['lon']; 476 | if ( 0 == $lastLat && 0 == $lastLon ) { 477 | 478 | /* Base Case */ 479 | array_push( $points->lat, (float) $lat ); 480 | array_push( $points->lon, (float) $lon ); 481 | array_push( $points->ele, 0 ); 482 | array_push( $points->dist, 0 ); 483 | array_push( $points->speed, 0 ); 484 | array_push( $points->hr, 0 ); 485 | array_push( $points->atemp, 0 ); 486 | array_push( $points->cad, 0 ); 487 | array_push( $points->grade, 0 ); 488 | $lastLat = $lat; 489 | $lastLon = $lon; 490 | } else { 491 | 492 | /* Normal Case */ 493 | $offset = calculateDistance( $lat, $lon, 0, $lastLat, $lastLon, 0, $distancetype ); 494 | $dist = $dist + $offset; 495 | if ( ( (float) $offset + (float) $lastOffset ) > $gpxOffset ) { 496 | 497 | /* Bigger Offset -> write coordinate */ 498 | $lastOffset = 0; 499 | array_push( $points->lat, (float) $lat ); 500 | array_push( $points->lon, (float) $lon ); 501 | array_push( $points->ele, 0 ); 502 | array_push( $points->dist, 0 ); 503 | array_push( $points->speed, 0 ); 504 | array_push( $points->hr, 0 ); 505 | array_push( $points->atemp, 0 ); 506 | array_push( $points->cad, 0 ); 507 | array_push( $points->grade, 0 ); 508 | } else { 509 | 510 | /* Smoller Offset -> continue.. */ 511 | $lastOffset = (float) $lastOffset + (float) $offset; 512 | } 513 | } 514 | $lastLat = $lat; 515 | $lastLon = $lon; 516 | } 517 | unset( $nodes ); 518 | } 519 | } 520 | } 521 | unset( $gpx ); 522 | return $points; 523 | } 524 | 525 | function wpgpxmaps_getWayPoints( $gpxPath ) { 526 | $points = array(); 527 | if ( file_exists( $gpxPath ) ) { 528 | try { 529 | $gpx = simplexml_load_file( $gpxPath ); 530 | } catch ( Exception $e ) { 531 | echo _e( 'WP GPX Maps Error: Can’t parse xml file!', 'wp-gpx-maps' ) . ' ' . $gpxPath; 532 | return $points; 533 | } 534 | 535 | $gpx->registerXPathNamespace( 'a', 'http://www.topografix.com/GPX/1/0' ); 536 | $gpx->registerXPathNamespace( 'b', 'http://www.topografix.com/GPX/1/1' ); 537 | $nodes = $gpx->xpath( '//wpt | //a:wpt | //b:wpt' ); 538 | global $wpdb; 539 | 540 | if ( count( $nodes ) > 0 ) { 541 | /* Normal case */ 542 | foreach ( $nodes as $wpt ) { 543 | $lat = $wpt['lat']; 544 | $lon = $wpt['lon']; 545 | $ele = (string) $wpt->ele; 546 | $time = (string) $wpt->time; 547 | $name = (string) $wpt->name; 548 | $desc = (string) $wpt->desc; 549 | $sym = (string) $wpt->sym; 550 | $type = (string) $wpt->type; 551 | $img = ''; 552 | 553 | if ( $sym ) { 554 | $img_name = 'map-marker-' . $sym; 555 | $query = "SELECT ID FROM {$wpdb->prefix}posts WHERE post_name LIKE '{$img_name}' AND post_type LIKE 'attachment'"; 556 | $img_id = $wpdb->get_var( $query ); 557 | if ( ! is_null( $img_id ) ) { 558 | $img = wp_get_attachment_url( $img_id ); 559 | } 560 | } 561 | 562 | array_push($points, array( 563 | 'lat' => (float) $lat, 564 | 'lon' => (float) $lon, 565 | 'ele' => (float) $ele, 566 | 'time' => $time, 567 | 'name' => $name, 568 | 'desc' => $desc, 569 | 'sym' => $sym, 570 | 'type' => $type, 571 | 'img' => $img, 572 | )); 573 | } 574 | } 575 | } 576 | return $points; 577 | } 578 | 579 | function toRadians( $degrees ) { 580 | 581 | return (float) ( $degrees * 3.1415926535897932385 / 180 ); 582 | } 583 | 584 | function calculateDistance( $lat1, $lon1, $ele1, $lat2, $lon2, $ele2, $distancetype ) { 585 | 586 | /* Distance typ: Climb */ 587 | if ( '2' == $distancetype ) { 588 | return (float) $ele1 - (float) $ele2; 589 | 590 | /* Distance typ: Flat */ 591 | } elseif ( '1' == $distancetype ) { 592 | $alpha = (float) sin( (float) toRadians( (float) $lat2 - (float) $lat1 ) / 2 ); 593 | $beta = (float) sin( (float) toRadians( (float) $lon2 - (float) $lon1 ) / 2 ); 594 | /* Distance in meters */ 595 | $a = (float) ( (float) $alpha * (float) $alpha ) + (float) ( (float) cos( (float) toRadians( $lat1 ) ) * (float) cos( (float) toRadians( $lat2 ) ) * (float) $beta * (float) $beta ); 596 | $dist = 2 * 6369628.75 * (float) atan2( (float) sqrt( (float) $a ), (float) sqrt( 1 - (float) $a ) ); 597 | return (float) sqrt( (float) pow( (float) $dist, 2 ) + pow( (float) $lat1 - (float) $lat2, 2 ) ); 598 | 599 | /* Distance typ: Normal */ 600 | } else { 601 | $alpha = (float) sin( (float) toRadians( (float) $lat2 - (float) $lat1 ) / 2 ); 602 | $beta = (float) sin( (float) toRadians( (float) $lon2 - (float) $lon1 ) / 2 ); 603 | /* Distance in meters */ 604 | $a = (float) ( (float) $alpha * (float) $alpha ) + (float) ( (float) cos( (float) toRadians( $lat1 ) ) * (float) cos( (float) toRadians( $lat2 ) ) * (float) $beta * (float) $beta ); 605 | $dist = 2 * 6369628.75 * (float) atan2( (float) sqrt( (float) $a ), (float) sqrt( 1 - (float) $a ) ); 606 | $d = (float) sqrt( (float) pow( (float) $dist, 2 ) + pow( (float) $lat1 - (float) $lat2, 2 ) ); 607 | return sqrt( (float) pow( (float) $ele1 - (float) $ele2, 2 ) + (float) pow( (float) $d, 2 ) ); 608 | } 609 | } 610 | 611 | function my_date_diff( $old_date, $new_date ) { 612 | 613 | $t1 = strtotime( $new_date ); 614 | $t2 = strtotime( $old_date ); 615 | 616 | /* Fix for milliceconds */ 617 | $t1 += date_getDecimals( $new_date ); 618 | $t2 += date_getDecimals( $old_date ); 619 | 620 | $offset = (float) ( $t1 - $t2 ); 621 | 622 | return $offset; 623 | } 624 | 625 | function date_getDecimals( $date ) { 626 | 627 | if ( preg_match( '(\.([0-9]{2})Z?)', $date, $matches ) ) { 628 | return (float) ( (float) $matches[1] / 100 ); 629 | } else { 630 | return 0; 631 | } 632 | } 633 | -------------------------------------------------------------------------------- /languages/wp-gpx-maps.pot: -------------------------------------------------------------------------------- 1 | #, fuzzy 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: wp-gpx-maps\n" 5 | "Report-Msgid-Bugs-To: \n" 6 | "POT-Creation-Date: 2019-06-12 18:57+0200\n" 7 | "PO-Revision-Date: 2012-10-30 14:41+0100\n" 8 | "Last-Translator: \n" 9 | "Language-Team: \n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "X-Poedit-KeywordsList: __;_e\n" 14 | "X-Poedit-Basepath: .\n" 15 | "X-Generator: Poedit 2.2.3\n" 16 | "X-Poedit-Flags-xgettext: --add-comments=translators:\n" 17 | "X-Poedit-SearchPath-0: ..\n" 18 | 19 | #: ../wp-gpx-maps.php:53 ../wp-gpx-maps_admin.php:50 20 | #: ../wp-gpx-maps_admin.php:102 21 | msgid "Settings" 22 | msgstr "" 23 | 24 | #: ../wp-gpx-maps.php:737 25 | msgid "Altitude" 26 | msgstr "" 27 | 28 | #: ../wp-gpx-maps.php:738 29 | msgid "Current position" 30 | msgstr "" 31 | 32 | #: ../wp-gpx-maps.php:739 33 | msgid "Speed" 34 | msgstr "" 35 | 36 | #: ../wp-gpx-maps.php:740 37 | msgid "Grade" 38 | msgstr "" 39 | 40 | #: ../wp-gpx-maps.php:741 41 | msgid "Heart rate" 42 | msgstr "" 43 | 44 | #: ../wp-gpx-maps.php:742 45 | msgid "Temperature" 46 | msgstr "" 47 | 48 | #: ../wp-gpx-maps.php:743 49 | msgid "Cadence" 50 | msgstr "" 51 | 52 | #: ../wp-gpx-maps.php:744 53 | msgid "Go full screen" 54 | msgstr "" 55 | 56 | #: ../wp-gpx-maps.php:745 57 | msgid "Exit full screen" 58 | msgstr "" 59 | 60 | #: ../wp-gpx-maps.php:746 61 | msgid "Hide images" 62 | msgstr "" 63 | 64 | #: ../wp-gpx-maps.php:747 65 | msgid "Show images" 66 | msgstr "" 67 | 68 | #: ../wp-gpx-maps.php:748 69 | msgid "Back to center" 70 | msgstr "" 71 | 72 | #: ../wp-gpx-maps.php:761 73 | msgid "Total distance" 74 | msgstr "" 75 | 76 | #: ../wp-gpx-maps.php:765 77 | msgid "Max elevation" 78 | msgstr "" 79 | 80 | #: ../wp-gpx-maps.php:767 81 | msgid "Min elevation" 82 | msgstr "" 83 | 84 | #: ../wp-gpx-maps.php:769 85 | msgid "Total climbing" 86 | msgstr "" 87 | 88 | #: ../wp-gpx-maps.php:771 89 | msgid "Total descent" 90 | msgstr "" 91 | 92 | #: ../wp-gpx-maps.php:774 93 | msgid "Average speed" 94 | msgstr "" 95 | 96 | #: ../wp-gpx-maps.php:777 97 | msgid "Average cadence" 98 | msgstr "" 99 | 100 | #: ../wp-gpx-maps.php:780 101 | msgid "Average heart rate" 102 | msgstr "" 103 | 104 | #: ../wp-gpx-maps.php:783 105 | msgid "Average temperature" 106 | msgstr "" 107 | 108 | #: ../wp-gpx-maps.php:787 109 | msgid "Total time" 110 | msgstr "" 111 | 112 | #: ../wp-gpx-maps.php:801 ../wp-gpx-maps_admin_tracks.php:183 113 | msgid "Download" 114 | msgstr "" 115 | 116 | #: ../wp-gpx-maps_admin.php:49 ../wp-gpx-maps_admin.php:56 117 | msgid "Tracks" 118 | msgstr "" 119 | 120 | #: ../wp-gpx-maps_admin.php:51 ../wp-gpx-maps_admin.php:57 121 | msgid "Help" 122 | msgstr "" 123 | 124 | #. translators: Relative path of the GPX folder 125 | #: ../wp-gpx-maps_admin.php:116 126 | #, php-format 127 | msgid "Can not create the folder %1s for GPX files. Please create the folder and make it writable! If not, you will must update the files manually!" 128 | msgstr "" 129 | 130 | #. translators: Relative path of the GPX cache folder 131 | #: ../wp-gpx-maps_admin.php:133 132 | #, php-format 133 | msgid "Can not create the cache folder %1s for the GPX files. Please create the folder and make it writable! If not, you will must update the files manually!" 134 | msgstr "" 135 | 136 | #: ../wp-gpx-maps_admin_settings.php:56 ../wp-gpx-maps_help.php:64 137 | msgid "General" 138 | msgstr "" 139 | 140 | #: ../wp-gpx-maps_admin_settings.php:62 141 | msgid "Map width:" 142 | msgstr "" 143 | 144 | #: ../wp-gpx-maps_admin_settings.php:71 145 | msgid "Map height:" 146 | msgstr "" 147 | 148 | #: ../wp-gpx-maps_admin_settings.php:80 149 | msgid "Graph height:" 150 | msgstr "" 151 | 152 | #: ../wp-gpx-maps_admin_settings.php:89 153 | msgid "Distance type:" 154 | msgstr "" 155 | 156 | #: ../wp-gpx-maps_admin_settings.php:93 157 | msgid "Normal (default)" 158 | msgstr "" 159 | 160 | #: ../wp-gpx-maps_admin_settings.php:94 161 | msgid "Flat → (Only flat distance, don’t take care of altitude)" 162 | msgstr "" 163 | 164 | #: ../wp-gpx-maps_admin_settings.php:95 165 | msgid "Climb ↑ (Only climb distance)" 166 | msgstr "" 167 | 168 | #: ../wp-gpx-maps_admin_settings.php:102 169 | msgid "Cache:" 170 | msgstr "" 171 | 172 | #: ../wp-gpx-maps_admin_settings.php:109 173 | msgid "Do not use cache" 174 | msgstr "" 175 | 176 | #: ../wp-gpx-maps_admin_settings.php:117 177 | msgid "GPX Download:" 178 | msgstr "" 179 | 180 | #: ../wp-gpx-maps_admin_settings.php:124 ../wp-gpx-maps_help.php:119 181 | msgid "Allow users to download your GPX file" 182 | msgstr "" 183 | 184 | #: ../wp-gpx-maps_admin_settings.php:132 185 | msgid "Use browser GPS position:" 186 | msgstr "" 187 | 188 | #: ../wp-gpx-maps_admin_settings.php:139 189 | msgid "Allow users to use browser GPS in order to display their current position on map" 190 | msgstr "" 191 | 192 | #: ../wp-gpx-maps_admin_settings.php:147 193 | msgid "Thunderforest API Key (Open Cycle Map):" 194 | msgstr "" 195 | 196 | #. translators: 1: Link to documentation of Thunderforest API Key's 2: Additional link attribute 197 | #: ../wp-gpx-maps_admin_settings.php:155 198 | msgid "Go to Thunderforest API Key and signing in to your Thunderforest account." 199 | msgstr "" 200 | 201 | #: ../wp-gpx-maps_admin_settings.php:169 ../wp-gpx-maps_admin_settings.php:353 202 | #: ../wp-gpx-maps_admin_settings.php:529 ../wp-gpx-maps_admin_settings.php:747 203 | #: ../wp-gpx-maps_admin_settings.php:815 204 | msgid "Save Changes" 205 | msgstr "" 206 | 207 | #: ../wp-gpx-maps_admin_settings.php:180 ../wp-gpx-maps_help.php:547 208 | msgid "Summary table" 209 | msgstr "" 210 | 211 | #: ../wp-gpx-maps_admin_settings.php:186 212 | msgid "Summary table:" 213 | msgstr "" 214 | 215 | #: ../wp-gpx-maps_admin_settings.php:193 ../wp-gpx-maps_help.php:566 216 | msgid "Print summary details of your GPX track" 217 | msgstr "" 218 | 219 | #: ../wp-gpx-maps_admin_settings.php:201 220 | msgid "Total distance:" 221 | msgstr "" 222 | 223 | #: ../wp-gpx-maps_admin_settings.php:208 224 | msgid "Print total distance" 225 | msgstr "" 226 | 227 | #: ../wp-gpx-maps_admin_settings.php:216 228 | msgid "Max elevation:" 229 | msgstr "" 230 | 231 | #: ../wp-gpx-maps_admin_settings.php:223 232 | msgid "Print max elevation" 233 | msgstr "" 234 | 235 | #: ../wp-gpx-maps_admin_settings.php:231 236 | msgid "Min elevation:" 237 | msgstr "" 238 | 239 | #: ../wp-gpx-maps_admin_settings.php:238 240 | msgid "Print min elevation" 241 | msgstr "" 242 | 243 | #: ../wp-gpx-maps_admin_settings.php:246 244 | msgid "Total climbing:" 245 | msgstr "" 246 | 247 | #: ../wp-gpx-maps_admin_settings.php:253 248 | msgid "Print total climbing" 249 | msgstr "" 250 | 251 | #: ../wp-gpx-maps_admin_settings.php:261 252 | msgid "Total descent:" 253 | msgstr "" 254 | 255 | #: ../wp-gpx-maps_admin_settings.php:268 256 | msgid "Print total descent" 257 | msgstr "" 258 | 259 | #: ../wp-gpx-maps_admin_settings.php:275 260 | msgid "Average speed:" 261 | msgstr "" 262 | 263 | #: ../wp-gpx-maps_admin_settings.php:282 264 | msgid "Print average speed" 265 | msgstr "" 266 | 267 | #: ../wp-gpx-maps_admin_settings.php:290 268 | msgid "Average cadence:" 269 | msgstr "" 270 | 271 | #: ../wp-gpx-maps_admin_settings.php:297 272 | msgid "Print average cadence" 273 | msgstr "" 274 | 275 | #: ../wp-gpx-maps_admin_settings.php:305 276 | msgid "Average heart rate:" 277 | msgstr "" 278 | 279 | #: ../wp-gpx-maps_admin_settings.php:312 280 | msgid "Print average heart rate" 281 | msgstr "" 282 | 283 | #: ../wp-gpx-maps_admin_settings.php:320 284 | msgid "Average temperature:" 285 | msgstr "" 286 | 287 | #: ../wp-gpx-maps_admin_settings.php:327 288 | msgid "Print average temperature" 289 | msgstr "" 290 | 291 | #: ../wp-gpx-maps_admin_settings.php:335 292 | msgid "Total time:" 293 | msgstr "" 294 | 295 | #: ../wp-gpx-maps_admin_settings.php:342 296 | msgid "Print total time" 297 | msgstr "" 298 | 299 | #: ../wp-gpx-maps_admin_settings.php:364 ../wp-gpx-maps_help.php:148 300 | msgid "Map" 301 | msgstr "" 302 | 303 | #: ../wp-gpx-maps_admin_settings.php:371 304 | msgid "Default map type:" 305 | msgstr "" 306 | 307 | #: ../wp-gpx-maps_admin_settings.php:377 ../wp-gpx-maps_help.php:172 308 | msgid "Open Street Map" 309 | msgstr "" 310 | 311 | #: ../wp-gpx-maps_admin_settings.php:383 ../wp-gpx-maps_help.php:174 312 | msgid "Open Cycle Map" 313 | msgstr "" 314 | 315 | #: ../wp-gpx-maps_admin_settings.php:389 ../wp-gpx-maps_help.php:176 316 | msgid "Open Cycle Map - Transport" 317 | msgstr "" 318 | 319 | #: ../wp-gpx-maps_admin_settings.php:395 ../wp-gpx-maps_help.php:178 320 | msgid "Open Cycle Map - Landscape" 321 | msgstr "" 322 | 323 | #: ../wp-gpx-maps_admin_settings.php:401 ../wp-gpx-maps_help.php:180 324 | msgid "MapToolKit - Terrain" 325 | msgstr "" 326 | 327 | #: ../wp-gpx-maps_admin_settings.php:407 ../wp-gpx-maps_help.php:182 328 | msgid "Open Street Map - Humanitarian map style" 329 | msgstr "" 330 | 331 | #: ../wp-gpx-maps_admin_settings.php:413 ../wp-gpx-maps_help.php:184 332 | msgid "Hike & Bike" 333 | msgstr "" 334 | 335 | #: ../wp-gpx-maps_admin_settings.php:419 ../wp-gpx-maps_help.php:186 336 | msgid "Open Sea Map" 337 | msgstr "" 338 | 339 | #: ../wp-gpx-maps_admin_settings.php:427 340 | msgid "Map line color:" 341 | msgstr "" 342 | 343 | #: ../wp-gpx-maps_admin_settings.php:436 344 | msgid "On mouse scroll wheel:" 345 | msgstr "" 346 | 347 | #: ../wp-gpx-maps_admin_settings.php:443 348 | msgid "Enable zoom" 349 | msgstr "" 350 | 351 | #: ../wp-gpx-maps_admin_settings.php:451 352 | msgid "Waypoints support:" 353 | msgstr "" 354 | 355 | #: ../wp-gpx-maps_admin_settings.php:458 356 | msgid "Show waypoints" 357 | msgstr "" 358 | 359 | #: ../wp-gpx-maps_admin_settings.php:466 360 | msgid "Start track icon:" 361 | msgstr "" 362 | 363 | #: ../wp-gpx-maps_admin_settings.php:471 ../wp-gpx-maps_admin_settings.php:483 364 | #: ../wp-gpx-maps_admin_settings.php:495 ../wp-gpx-maps_admin_settings.php:507 365 | #: ../wp-gpx-maps_admin_settings.php:519 366 | msgid "(URL to image) Leave empty to hide." 367 | msgstr "" 368 | 369 | #: ../wp-gpx-maps_admin_settings.php:478 370 | msgid "End track icon:" 371 | msgstr "" 372 | 373 | #: ../wp-gpx-maps_admin_settings.php:490 374 | msgid "Current position icon:" 375 | msgstr "" 376 | 377 | #: ../wp-gpx-maps_admin_settings.php:502 378 | msgid "Current GPS position icon:" 379 | msgstr "" 380 | 381 | #: ../wp-gpx-maps_admin_settings.php:514 382 | msgid "Custom waypoint icon:" 383 | msgstr "" 384 | 385 | #: ../wp-gpx-maps_admin_settings.php:539 386 | msgid "Chart" 387 | msgstr "" 388 | 389 | #: ../wp-gpx-maps_admin_settings.php:546 390 | msgid "Altitude:" 391 | msgstr "" 392 | 393 | #: ../wp-gpx-maps_admin_settings.php:553 394 | msgid "Show altitude" 395 | msgstr "" 396 | 397 | #: ../wp-gpx-maps_admin_settings.php:562 398 | msgid "Altitude line color:" 399 | msgstr "" 400 | 401 | #: ../wp-gpx-maps_admin_settings.php:571 402 | msgid "Unit of measure:" 403 | msgstr "" 404 | 405 | #: ../wp-gpx-maps_admin_settings.php:575 ../wp-gpx-maps_help.php:311 406 | msgid "meters / meters" 407 | msgstr "" 408 | 409 | #: ../wp-gpx-maps_admin_settings.php:576 ../wp-gpx-maps_help.php:313 410 | msgid "feet / miles" 411 | msgstr "" 412 | 413 | #: ../wp-gpx-maps_admin_settings.php:577 ../wp-gpx-maps_help.php:315 414 | msgid "meters / kilometers" 415 | msgstr "" 416 | 417 | #: ../wp-gpx-maps_admin_settings.php:578 ../wp-gpx-maps_help.php:317 418 | msgid "meters / nautical miles" 419 | msgstr "" 420 | 421 | #: ../wp-gpx-maps_admin_settings.php:579 ../wp-gpx-maps_help.php:319 422 | msgid "meters / miles" 423 | msgstr "" 424 | 425 | #: ../wp-gpx-maps_admin_settings.php:580 ../wp-gpx-maps_help.php:321 426 | msgid "feet / nautical miles" 427 | msgstr "" 428 | 429 | #: ../wp-gpx-maps_admin_settings.php:587 430 | msgid "Altitude display offset:" 431 | msgstr "" 432 | 433 | #: ../wp-gpx-maps_admin_settings.php:590 ../wp-gpx-maps_admin_settings.php:638 434 | msgid "From" 435 | msgstr "" 436 | 437 | #: ../wp-gpx-maps_admin_settings.php:592 ../wp-gpx-maps_admin_settings.php:640 438 | msgid "to" 439 | msgstr "" 440 | 441 | #: ../wp-gpx-maps_admin_settings.php:594 ../wp-gpx-maps_admin_settings.php:642 442 | msgid "(leave empty for auto scale)" 443 | msgstr "" 444 | 445 | #: ../wp-gpx-maps_admin_settings.php:600 446 | msgid "Speed:" 447 | msgstr "" 448 | 449 | #: ../wp-gpx-maps_admin_settings.php:603 450 | msgid "Show speed" 451 | msgstr "" 452 | 453 | #: ../wp-gpx-maps_admin_settings.php:609 454 | msgid "Speed line color:" 455 | msgstr "" 456 | 457 | #: ../wp-gpx-maps_admin_settings.php:618 458 | msgid "Speed unit of measure:" 459 | msgstr "" 460 | 461 | #: ../wp-gpx-maps_admin_settings.php:622 ../wp-gpx-maps_help.php:371 462 | msgid "m/s" 463 | msgstr "" 464 | 465 | #: ../wp-gpx-maps_admin_settings.php:623 ../wp-gpx-maps_help.php:373 466 | msgid "km/h" 467 | msgstr "" 468 | 469 | #: ../wp-gpx-maps_admin_settings.php:624 ../wp-gpx-maps_help.php:375 470 | msgid "miles/h" 471 | msgstr "" 472 | 473 | #: ../wp-gpx-maps_admin_settings.php:625 ../wp-gpx-maps_help.php:377 474 | msgid "min/km" 475 | msgstr "" 476 | 477 | #: ../wp-gpx-maps_admin_settings.php:626 ../wp-gpx-maps_help.php:379 478 | msgid "min/miles" 479 | msgstr "" 480 | 481 | #: ../wp-gpx-maps_admin_settings.php:627 ../wp-gpx-maps_help.php:381 482 | msgid "Knots (nautical miles / hour)" 483 | msgstr "" 484 | 485 | #: ../wp-gpx-maps_admin_settings.php:628 ../wp-gpx-maps_help.php:383 486 | msgid "min/100 meters" 487 | msgstr "" 488 | 489 | #: ../wp-gpx-maps_admin_settings.php:635 490 | msgid "Speed display offset:" 491 | msgstr "" 492 | 493 | #: ../wp-gpx-maps_admin_settings.php:648 494 | msgid "Heart rate (where aviable):" 495 | msgstr "" 496 | 497 | #: ../wp-gpx-maps_admin_settings.php:655 498 | msgid "Show heart rate" 499 | msgstr "" 500 | 501 | #: ../wp-gpx-maps_admin_settings.php:663 502 | msgid "Heart rate line color:" 503 | msgstr "" 504 | 505 | #: ../wp-gpx-maps_admin_settings.php:672 506 | msgid "Temperature (where aviable):" 507 | msgstr "" 508 | 509 | #: ../wp-gpx-maps_admin_settings.php:679 510 | msgid "Show temperature" 511 | msgstr "" 512 | 513 | #: ../wp-gpx-maps_admin_settings.php:687 514 | msgid "Temperature line color:" 515 | msgstr "" 516 | 517 | #: ../wp-gpx-maps_admin_settings.php:696 518 | msgid "Cadence (where aviable):" 519 | msgstr "" 520 | 521 | #: ../wp-gpx-maps_admin_settings.php:703 522 | msgid "Show cadence" 523 | msgstr "" 524 | 525 | #: ../wp-gpx-maps_admin_settings.php:711 526 | msgid "Cadence line color:" 527 | msgstr "" 528 | 529 | #: ../wp-gpx-maps_admin_settings.php:720 530 | msgid "Grade:" 531 | msgstr "" 532 | 533 | #: ../wp-gpx-maps_admin_settings.php:727 534 | msgid "Show grade - BETA (Grade values depends on your GPS accuracy. If you have a poor GPS accuracy they might be totally wrong!)" 535 | msgstr "" 536 | 537 | #: ../wp-gpx-maps_admin_settings.php:735 538 | msgid "Grade line color:" 539 | msgstr "" 540 | 541 | #: ../wp-gpx-maps_admin_settings.php:757 542 | msgid "Advanced Options" 543 | msgstr "" 544 | 545 | #: ../wp-gpx-maps_admin_settings.php:760 546 | msgid "(Do not edit if you don’t know what you are doing!)" 547 | msgstr "" 548 | 549 | #: ../wp-gpx-maps_admin_settings.php:767 550 | msgid "Skip GPX points closer than:" 551 | msgstr "" 552 | 553 | #: ../wp-gpx-maps_admin_settings.php:774 554 | msgid "meters" 555 | msgstr "" 556 | 557 | #: ../wp-gpx-maps_admin_settings.php:782 558 | msgid "Reduce GPX:" 559 | msgstr "" 560 | 561 | #: ../wp-gpx-maps_admin_settings.php:789 562 | msgid "Do not reduce GPX" 563 | msgstr "" 564 | 565 | #: ../wp-gpx-maps_admin_settings.php:797 566 | msgid "User upload:" 567 | msgstr "" 568 | 569 | #: ../wp-gpx-maps_admin_settings.php:804 570 | msgid "Allow registered user to upload GPX files" 571 | msgstr "" 572 | 573 | #: ../wp-gpx-maps_admin_tracks.php:30 574 | msgid "Cache is now empty!" 575 | msgstr "" 576 | 577 | #: ../wp-gpx-maps_admin_tracks.php:45 578 | msgid "Choose a file to upload:" 579 | msgstr "" 580 | 581 | #. translators: GPX file name 582 | #: ../wp-gpx-maps_admin_tracks.php:57 583 | #, php-format 584 | msgid "The file %1s has been successfully uploaded." 585 | msgstr "" 586 | 587 | #: ../wp-gpx-maps_admin_tracks.php:63 588 | msgid "There was an error uploading the file, please try again!" 589 | msgstr "" 590 | 591 | #: ../wp-gpx-maps_admin_tracks.php:68 592 | msgid "The file type is not supported!" 593 | msgstr "" 594 | 595 | #: ../wp-gpx-maps_admin_tracks.php:77 596 | msgid "Clear Cache" 597 | msgstr "" 598 | 599 | #. translators: Relative path of the GPX folder 600 | #: ../wp-gpx-maps_admin_tracks.php:94 601 | #, php-format 602 | msgid "Your folder for GPX files %1s is not writable. Please change the folder permissions." 603 | msgstr "" 604 | 605 | #. translators: GPX file name 606 | #: ../wp-gpx-maps_admin_tracks.php:121 607 | #, php-format 608 | msgid "The file %1s has been successfully deleted." 609 | msgstr "" 610 | 611 | #. translators: GPX file name 612 | #: ../wp-gpx-maps_admin_tracks.php:129 613 | #, php-format 614 | msgid "The file %1s could not be deleted." 615 | msgstr "" 616 | 617 | #: ../wp-gpx-maps_admin_tracks.php:167 618 | msgid "Uploading file..." 619 | msgstr "" 620 | 621 | #: ../wp-gpx-maps_admin_tracks.php:175 622 | msgid "File" 623 | msgstr "" 624 | 625 | #: ../wp-gpx-maps_admin_tracks.php:181 626 | msgid "Delete" 627 | msgstr "" 628 | 629 | #: ../wp-gpx-maps_admin_tracks.php:185 630 | msgid "Copy shortcode" 631 | msgstr "" 632 | 633 | #: ../wp-gpx-maps_admin_tracks.php:185 634 | msgid "Shortcode:" 635 | msgstr "" 636 | 637 | #: ../wp-gpx-maps_admin_tracks.php:191 638 | msgid "Last modified" 639 | msgstr "" 640 | 641 | #: ../wp-gpx-maps_admin_tracks.php:199 642 | msgid "File size" 643 | msgstr "" 644 | 645 | #: ../wp-gpx-maps_admin_tracks.php:209 646 | msgid "Are you sure you want to delete the file?" 647 | msgstr "" 648 | 649 | #: ../wp-gpx-maps_help.php:4 650 | msgid "FAQ" 651 | msgstr "" 652 | 653 | #: ../wp-gpx-maps_help.php:8 654 | msgid "How can I upload the GPX files?" 655 | msgstr "" 656 | 657 | #: ../wp-gpx-maps_help.php:11 658 | msgid "1. Method: Upload the GPX file using the uploader in the tab \"Tracks\"." 659 | msgstr "" 660 | 661 | #: ../wp-gpx-maps_help.php:16 662 | msgid "2. Method: Upload the GPX file via FTP to your upload folder:" 663 | msgstr "" 664 | 665 | #: ../wp-gpx-maps_help.php:22 666 | msgid "How can I use the GPX files?" 667 | msgstr "" 668 | 669 | #: ../wp-gpx-maps_help.php:25 670 | msgid "Go to the tab \"Tracks\" and copy the shortcode from the list and paste it in the page or post." 671 | msgstr "" 672 | 673 | #: ../wp-gpx-maps_help.php:30 674 | msgid "You can manually set the relative path to your GPX file. Please use this scheme:" 675 | msgstr "" 676 | 677 | #: ../wp-gpx-maps_help.php:36 678 | msgid "Can I also integrate GPX files from other sites?" 679 | msgstr "" 680 | 681 | #: ../wp-gpx-maps_help.php:41 682 | msgid "Yes, it’s possible. Please use this scheme:" 683 | msgstr "" 684 | 685 | #: ../wp-gpx-maps_help.php:47 686 | msgid "Can I change the attributes for each GPX shortcode?" 687 | msgstr "" 688 | 689 | #: ../wp-gpx-maps_help.php:50 690 | msgid "Yes, it’s possible. These changes ignore the default settings for each attribute." 691 | msgstr "" 692 | 693 | #: ../wp-gpx-maps_help.php:55 694 | msgid "The Full set of optional attributes can be found below. Please use this scheme:" 695 | msgstr "" 696 | 697 | #: ../wp-gpx-maps_help.php:58 698 | msgid "read below all the optional attributes" 699 | msgstr "" 700 | 701 | #: ../wp-gpx-maps_help.php:71 ../wp-gpx-maps_help.php:155 702 | #: ../wp-gpx-maps_help.php:270 ../wp-gpx-maps_help.php:492 703 | #: ../wp-gpx-maps_help.php:554 ../wp-gpx-maps_help.php:719 704 | msgid "Shortcode" 705 | msgstr "" 706 | 707 | #: ../wp-gpx-maps_help.php:74 ../wp-gpx-maps_help.php:158 708 | #: ../wp-gpx-maps_help.php:273 ../wp-gpx-maps_help.php:495 709 | #: ../wp-gpx-maps_help.php:557 ../wp-gpx-maps_help.php:722 710 | msgid "Description" 711 | msgstr "" 712 | 713 | #: ../wp-gpx-maps_help.php:77 ../wp-gpx-maps_help.php:161 714 | #: ../wp-gpx-maps_help.php:276 ../wp-gpx-maps_help.php:498 715 | #: ../wp-gpx-maps_help.php:560 ../wp-gpx-maps_help.php:725 716 | msgid "Possible values" 717 | msgstr "" 718 | 719 | #: ../wp-gpx-maps_help.php:83 720 | msgid "relative path to the GPX file" 721 | msgstr "" 722 | 723 | #: ../wp-gpx-maps_help.php:92 724 | msgid "Map width" 725 | msgstr "" 726 | 727 | #: ../wp-gpx-maps_help.php:95 ../wp-gpx-maps_help.php:104 728 | #: ../wp-gpx-maps_help.php:113 729 | msgid "Value in pixels" 730 | msgstr "" 731 | 732 | #: ../wp-gpx-maps_help.php:101 733 | msgid "Map height" 734 | msgstr "" 735 | 736 | #: ../wp-gpx-maps_help.php:110 737 | msgid "Graph height" 738 | msgstr "" 739 | 740 | #: ../wp-gpx-maps_help.php:123 ../wp-gpx-maps_help.php:136 741 | #: ../wp-gpx-maps_help.php:197 ../wp-gpx-maps_help.php:210 742 | #: ../wp-gpx-maps_help.php:223 ../wp-gpx-maps_help.php:286 743 | #: ../wp-gpx-maps_help.php:299 ../wp-gpx-maps_help.php:346 744 | #: ../wp-gpx-maps_help.php:359 ../wp-gpx-maps_help.php:408 745 | #: ../wp-gpx-maps_help.php:421 ../wp-gpx-maps_help.php:434 746 | #: ../wp-gpx-maps_help.php:447 ../wp-gpx-maps_help.php:460 747 | #: ../wp-gpx-maps_help.php:473 ../wp-gpx-maps_help.php:526 748 | #: ../wp-gpx-maps_help.php:570 ../wp-gpx-maps_help.php:583 749 | #: ../wp-gpx-maps_help.php:596 ../wp-gpx-maps_help.php:609 750 | #: ../wp-gpx-maps_help.php:622 ../wp-gpx-maps_help.php:635 751 | #: ../wp-gpx-maps_help.php:648 ../wp-gpx-maps_help.php:661 752 | #: ../wp-gpx-maps_help.php:674 ../wp-gpx-maps_help.php:687 753 | #: ../wp-gpx-maps_help.php:700 ../wp-gpx-maps_help.php:735 754 | #: ../wp-gpx-maps_help.php:748 755 | msgid "Default is:" 756 | msgstr "" 757 | 758 | #: ../wp-gpx-maps_help.php:132 759 | msgid "Do not use cache. If TRUE might be very slow" 760 | msgstr "" 761 | 762 | #: ../wp-gpx-maps_help.php:167 763 | msgid "Map type" 764 | msgstr "" 765 | 766 | #: ../wp-gpx-maps_help.php:193 767 | msgid "Map line color" 768 | msgstr "" 769 | 770 | #: ../wp-gpx-maps_help.php:206 771 | msgid "Zoom on map when mouse scroll wheel" 772 | msgstr "" 773 | 774 | #: ../wp-gpx-maps_help.php:219 775 | msgid "Print the GPX waypoints inside the map" 776 | msgstr "" 777 | 778 | #: ../wp-gpx-maps_help.php:232 779 | msgid "Start track icon" 780 | msgstr "" 781 | 782 | #: ../wp-gpx-maps_help.php:239 783 | msgid "End track icon" 784 | msgstr "" 785 | 786 | #: ../wp-gpx-maps_help.php:246 787 | msgid "Current position icon (when mouse hover)" 788 | msgstr "" 789 | 790 | #: ../wp-gpx-maps_help.php:253 791 | msgid "Custom waypoint icon" 792 | msgstr "" 793 | 794 | #: ../wp-gpx-maps_help.php:263 795 | msgid "Diagram" 796 | msgstr "" 797 | 798 | #: ../wp-gpx-maps_help.php:282 799 | msgid "Show elevation data inside the chart" 800 | msgstr "" 801 | 802 | #: ../wp-gpx-maps_help.php:295 803 | msgid "Altitude line color" 804 | msgstr "" 805 | 806 | #: ../wp-gpx-maps_help.php:308 807 | msgid "Distance / Altitude unit of measure" 808 | msgstr "" 809 | 810 | #: ../wp-gpx-maps_help.php:328 811 | msgid "Minimum value for altitude chart" 812 | msgstr "" 813 | 814 | #: ../wp-gpx-maps_help.php:335 815 | msgid "Maximum value for altitude chart" 816 | msgstr "" 817 | 818 | #: ../wp-gpx-maps_help.php:342 819 | msgid "Show speed inside the chart" 820 | msgstr "" 821 | 822 | #: ../wp-gpx-maps_help.php:355 823 | msgid "Speed line color" 824 | msgstr "" 825 | 826 | #: ../wp-gpx-maps_help.php:368 827 | msgid "Speed unit of measure" 828 | msgstr "" 829 | 830 | #: ../wp-gpx-maps_help.php:390 831 | msgid "Minimum value for speed chart" 832 | msgstr "" 833 | 834 | #: ../wp-gpx-maps_help.php:397 835 | msgid "Maximum value for speed chart" 836 | msgstr "" 837 | 838 | #: ../wp-gpx-maps_help.php:404 839 | msgid "Show heart rate inside the chart" 840 | msgstr "" 841 | 842 | #: ../wp-gpx-maps_help.php:417 843 | msgid "Heart rate line color" 844 | msgstr "" 845 | 846 | #: ../wp-gpx-maps_help.php:430 847 | msgid "Show cadence inside the chart" 848 | msgstr "" 849 | 850 | #: ../wp-gpx-maps_help.php:443 851 | msgid "Cadence line color" 852 | msgstr "" 853 | 854 | #: ../wp-gpx-maps_help.php:456 855 | msgid "Show grade inside the chart" 856 | msgstr "" 857 | 858 | #: ../wp-gpx-maps_help.php:469 859 | msgid "Grade line color" 860 | msgstr "" 861 | 862 | #: ../wp-gpx-maps_help.php:485 863 | msgid "Pictures" 864 | msgstr "" 865 | 866 | #: ../wp-gpx-maps_help.php:504 867 | msgid "NextGen Gallery" 868 | msgstr "" 869 | 870 | #: ../wp-gpx-maps_help.php:507 871 | msgid "Gallery ID or a list of Galleries ID separated by a comma" 872 | msgstr "" 873 | 874 | #: ../wp-gpx-maps_help.php:513 875 | msgid "NextGen Image" 876 | msgstr "" 877 | 878 | #: ../wp-gpx-maps_help.php:516 879 | msgid "Image ID or a list of Images ID separated by a comma" 880 | msgstr "" 881 | 882 | #: ../wp-gpx-maps_help.php:522 883 | msgid "Show all images that are attached to post" 884 | msgstr "" 885 | 886 | #: ../wp-gpx-maps_help.php:535 887 | msgid "The difference between your GPX tool date and your camera date" 888 | msgstr "" 889 | 890 | #: ../wp-gpx-maps_help.php:538 891 | msgid "Value in seconds" 892 | msgstr "" 893 | 894 | #: ../wp-gpx-maps_help.php:579 895 | msgid "Print total distance in summary table" 896 | msgstr "" 897 | 898 | #: ../wp-gpx-maps_help.php:592 899 | msgid "Print max. elevation in summary table" 900 | msgstr "" 901 | 902 | #: ../wp-gpx-maps_help.php:605 903 | msgid "Print min. elevation in summary table" 904 | msgstr "" 905 | 906 | #: ../wp-gpx-maps_help.php:618 907 | msgid "Print total climbing in summary table" 908 | msgstr "" 909 | 910 | #: ../wp-gpx-maps_help.php:631 911 | msgid "Print total descent in summary table" 912 | msgstr "" 913 | 914 | #: ../wp-gpx-maps_help.php:644 915 | msgid "Print average speed in summary table" 916 | msgstr "" 917 | 918 | #: ../wp-gpx-maps_help.php:657 919 | msgid "Print average cadence in summary table" 920 | msgstr "" 921 | 922 | #: ../wp-gpx-maps_help.php:670 923 | msgid "Print average heart rate in summary table" 924 | msgstr "" 925 | 926 | #: ../wp-gpx-maps_help.php:683 927 | msgid "Print average temperature in summary table" 928 | msgstr "" 929 | 930 | #: ../wp-gpx-maps_help.php:696 931 | msgid "Print total time in summary table" 932 | msgstr "" 933 | 934 | #: ../wp-gpx-maps_help.php:712 935 | msgid "Advanced" 936 | msgstr "" 937 | 938 | #: ../wp-gpx-maps_help.php:731 939 | msgid "Skip GPX points closer than XX meters" 940 | msgstr "" 941 | 942 | #: ../wp-gpx-maps_help.php:744 943 | msgid "Print all the GPX waypoints without reduce it" 944 | msgstr "" 945 | 946 | #: ../wp-gpx-maps_help.php:760 947 | msgid "Bugs, problems, thanks and anything else here!" 948 | msgstr "" 949 | 950 | #: ../wp-gpx-maps_utils.php:150 951 | msgid "WP GPX Maps Error: GPX file not found!" 952 | msgstr "" 953 | 954 | #: ../wp-gpx-maps_utils.php:539 955 | msgid "WP GPX Maps Error: Can’t parse xml file!" 956 | msgstr "" 957 | -------------------------------------------------------------------------------- /ThirdParties/Leaflet.markercluster-1.4.1/leaflet.markercluster.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/MarkerClusterGroup.js","../src/MarkerCluster.js","../src/MarkerOpacity.js","../src/DistanceGrid.js","../src/MarkerCluster.QuickHull.js","../src/MarkerCluster.Spiderfier.js","../src/MarkerClusterGroup.Refresh.js"],"names":[],"mappings":"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","file":"dist/leaflet.markercluster.js"} --------------------------------------------------------------------------------