diff --git a/umap/static/umap/js/umap.js b/umap/static/umap/js/umap.js index c59b0e3c..baa532ff 100644 --- a/umap/static/umap/js/umap.js +++ b/umap/static/umap/js/umap.js @@ -67,13 +67,11 @@ L.U.Map.include({ initialize: function (el, geojson) { // Locale name (pt_PT, en_US…) // To be used for Django localization - if (geojson.properties.locale) - L.setLocale(geojson.properties.locale) + if (geojson.properties.locale) L.setLocale(geojson.properties.locale) // Language code (pt-pt, en-us…) // To be used in javascript APIs - if (geojson.properties.lang) - L.lang = geojson.properties.lang + if (geojson.properties.lang) L.lang = geojson.properties.lang // Don't let default autocreation of controls const zoomControl = @@ -91,7 +89,7 @@ L.U.Map.include({ this.ui = new L.U.UI(this._container) this.xhr = new L.U.Xhr(this.ui) - this.xhr.on('dataloading', (e) => this.fire('dataloading', e)) + this.xhr.on('dataloading', (e) => this.fire('dataloading', e)) this.xhr.on('dataload', (e) => this.fire('dataload', e)) this.initLoader() @@ -1811,19 +1809,31 @@ L.U.Map.include({ this._controlContainer ), logo = L.DomUtil.add('a', 'logo', container), - name = L.DomUtil.add('a', 'map-name', container, this.getDisplayName()), - setName = function () { + name = L.DomUtil.create('a', 'map-name', container), + share_status = L.DomUtil.create('a', 'share-status', container), + update = () => { name.textContent = this.getDisplayName() + share_status.textContent = L._('Visibility: {status}', { + status: this.permissions.getShareStatusDisplay(), + }) } + update() name.href = '#' + share_status.href = '#' logo.href = '/' if (this.options.user) { - const userLabel = L.DomUtil.add('a', 'umap-user', container, this.options.user.name) + const userLabel = L.DomUtil.add( + 'a', + 'umap-user', + container, + this.options.user.name + ) userLabel.href = this.options.user.url } this.help.button(container, 'edit') L.DomEvent.on(name, 'click', this.edit, this) - this.on('postsync', L.bind(setName, this)) + L.DomEvent.on(share_status, 'click', this.permissions.edit, this.permissions) + this.on('postsync', L.bind(update, this)) const save = L.DomUtil.create('a', 'leaflet-control-edit-save button', container) save.href = '#' save.title = `${L._('Save current edits')} (Ctrl+S)` diff --git a/umap/static/umap/js/umap.permissions.js b/umap/static/umap/js/umap.permissions.js index 612faea4..0454855d 100644 --- a/umap/static/umap/js/umap.permissions.js +++ b/umap/static/umap/js/umap.permissions.js @@ -160,6 +160,7 @@ L.U.MapPermissions = L.Class.extend({ this.commit() this.isDirty = false this.map.continueSaving() + this.map.fire('postsync') }, }) }, @@ -194,4 +195,8 @@ L.U.MapPermissions = L.Class.extend({ commit: function () { L.Util.extend(this.map.options.permissions, this.options) }, + + getShareStatusDisplay: function () { + return Object.fromEntries(this.map.options.share_statuses)[this.options.share_status] + } }) diff --git a/umap/static/umap/map.css b/umap/static/umap/map.css index 9c44b146..fdd6d45f 100644 --- a/umap/static/umap/map.css +++ b/umap/static/umap/map.css @@ -479,6 +479,9 @@ ul.photon-autocomplete { margin-right: 5px; font-weight: bold; } +.umap-main-edit-toolbox .share-status { + margin: 0 5px; +} .umap-edit-enabled .umap-main-edit-toolbox { top: 0; }