Browse Source

Display map in the MessageList

Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
pull/5573/head
Marco Ambrosini 5 years ago
parent
commit
eb65680726
  1. 2
      lib/Controller/PageController.php
  2. 1
      lib/Listener/CSPListener.php
  3. 25
      package-lock.json
  4. 3
      package.json
  5. 45
      src/components/MessagesList/MessagesGroup/Message/MessagePart/Location.vue
  6. 6
      src/main.js
  7. 6
      src/mainFilesSidebar.js
  8. 6
      src/mainPublicShareAuthSidebar.js
  9. 6
      src/mainPublicShareSidebar.js

2
lib/Controller/PageController.php

@ -261,6 +261,7 @@ class PageController extends Controller {
$csp = new ContentSecurityPolicy();
$csp->addAllowedConnectDomain('*');
$csp->addAllowedMediaDomain('blob:');
$csp->addAllowedImageDomain('https://*.tile.openstreetmap.org');
$response->setContentSecurityPolicy($csp);
return $response;
}
@ -312,6 +313,7 @@ class PageController extends Controller {
$csp = new ContentSecurityPolicy();
$csp->addAllowedConnectDomain('*');
$csp->addAllowedMediaDomain('blob:');
$csp->addAllowedImageDomain('https://*.tile.openstreetmap.org');
$response->setContentSecurityPolicy($csp);
return $response;
}

1
lib/Listener/CSPListener.php

@ -46,6 +46,7 @@ class CSPListener implements IEventListener {
}
$csp = new ContentSecurityPolicy();
$csp->addAllowedImageDomain('https://*.tile.openstreetmap.org');
foreach ($this->config->getAllServerUrlsForCSP() as $server) {
$csp->addAllowedConnectDomain($server);
}

25
package-lock.json

@ -5374,7 +5374,8 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
"dev": true,
"optional": true
},
"find-cache-dir": {
"version": "3.3.1",
@ -5651,6 +5652,7 @@
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
"integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
@ -5662,6 +5664,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@ -5671,13 +5674,15 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
"dev": true,
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@ -5689,6 +5694,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
@ -14647,6 +14653,16 @@
"resolved": "https://registry.npmjs.org/layerr/-/layerr-0.1.2.tgz",
"integrity": "sha512-ob5kTd9H3S4GOG2nVXyQhOu9O8nBgP555XxWPkJI0tR0JeRilfyTp8WtPdIJHLXBmHMSdEq5+KMxiYABeScsIQ=="
},
"leaflet": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.7.1.tgz",
"integrity": "sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw=="
},
"leaflet-defaulticon-compatibility": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/leaflet-defaulticon-compatibility/-/leaflet-defaulticon-compatibility-0.1.1.tgz",
"integrity": "sha512-vDBFdlUAwjSEGep9ih8kfJilf6yN8V9zTbF5NC/1ZwLeGko3RUQepspPnGCRMFV51dY3Lb3hziboicrFz+rxQA=="
},
"left-pad": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
@ -22021,6 +22037,11 @@
"date-format-parse": "^0.2.5"
}
},
"vue2-leaflet": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/vue2-leaflet/-/vue2-leaflet-2.7.0.tgz",
"integrity": "sha512-uT7lpFoVEDhINMyTpiAthh6aiKFGHuYWLoVH8JJ0YNNSch+XMZFl4YBQ0S2hHYDquQIsh8zx+yINeUI01y9ugw=="
},
"vuex": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",

3
package.json

@ -36,6 +36,8 @@
"emoji-regex": "^9.2.2",
"escape-html": "^1.0.3",
"hark": "^1.2.3",
"leaflet": "^1.7.1",
"leaflet-defaulticon-compatibility": "^0.1.1",
"lodash": "^4.17.21",
"mockconsole": "0.0.1",
"nextcloud-vue-collections": "^0.9.0",
@ -54,6 +56,7 @@
"vue-resize": "^1.0.1",
"vue-router": "^3.5.1",
"vue-shortkey": "^3.1.7",
"vue2-leaflet": "^2.7.0",
"vuex": "^3.6.2",
"webdav": "^4.3.0",
"webrtc-adapter": "^7.7.1",

45
src/components/MessagesList/MessagesGroup/Message/MessagePart/Location.vue

@ -21,15 +21,35 @@
<template>
<div class="location">
{{ name }}
<p>{{ id }}</p>
<LMap
style="height: 200px"
:zoom="zoom"
:center="center"
:options="{
scrollWheelZoom: false,
zoomControl: false,
dragging: false,
attributionControl: false,
}"
@scroll.prevent="">
<LTileLayer :url="url" />
<LMarker :lat-lng="center" s />
</LMap>
</div>
</template>
<script>
import { LMap, LTileLayer, LMarker } from 'vue2-leaflet'
export default {
name: 'Location',
components: {
LMap,
LTileLayer,
LMarker,
},
props: {
/**
* The geolink for the location
@ -63,12 +83,29 @@ export default {
required: true,
},
},
data() {
return {
url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
zoom: 13,
}
},
computed: {
center() {
return [this.latitude, this.longitude]
},
},
}
</script>
<style lang="scss" scoped>
.location {
width: 400px;
background-color: lightgray;
overflow: hidden;
border-radius: var(--border-radius-large);
position: relative;
z-index: 1;
height: 200px;
width: 350px;
}
</style>

6
src/main.js

@ -48,6 +48,12 @@ import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'
// Styles
import '@nextcloud/dialogs/styles/toast.scss'
import 'leaflet/dist/leaflet.css'
// Leaflet icon patch
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css' // Re-uses images from ~leaflet package
// eslint-disable-next-line
import 'leaflet-defaulticon-compatibility'
// CSP config for webpack dynamic chunk loading
// eslint-disable-next-line

6
src/mainFilesSidebar.js

@ -43,6 +43,12 @@ import vOutsideEvents from 'vue-outside-events'
// Styles
import '@nextcloud/dialogs/styles/toast.scss'
import 'leaflet/dist/leaflet.css'
// Leaflet icon patch
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css' // Re-uses images from ~leaflet package
// eslint-disable-next-line
import 'leaflet-defaulticon-compatibility'
// CSP config for webpack dynamic chunk loading
// eslint-disable-next-line

6
src/mainPublicShareAuthSidebar.js

@ -39,6 +39,12 @@ import vOutsideEvents from 'vue-outside-events'
// Styles
import '@nextcloud/dialogs/styles/toast.scss'
import 'leaflet/dist/leaflet.css'
// Leaflet icon patch
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css' // Re-uses images from ~leaflet package
// eslint-disable-next-line
import 'leaflet-defaulticon-compatibility'
// CSP config for webpack dynamic chunk loading
// eslint-disable-next-line

6
src/mainPublicShareSidebar.js

@ -38,6 +38,12 @@ import vOutsideEvents from 'vue-outside-events'
// Styles
import '@nextcloud/dialogs/styles/toast.scss'
import 'leaflet/dist/leaflet.css'
// Leaflet icon patch
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css' // Re-uses images from ~leaflet package
// eslint-disable-next-line
import 'leaflet-defaulticon-compatibility'
// CSP config for webpack dynamic chunk loading
// eslint-disable-next-line

Loading…
Cancel
Save