From 8a85b78466d2580ee6b076b006b3b8f490338090 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Thu, 6 Oct 2016 20:47:18 +0100 Subject: [PATCH 01/16] =?UTF-8?q?Update=20typekit=E2=80=99s=20sri=20hash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/master.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/master.blade.php b/resources/views/master.blade.php index 097e5496..faeaa049 100644 --- a/resources/views/master.blade.php +++ b/resources/views/master.blade.php @@ -30,7 +30,7 @@
@yield('content')
- + @section('scripts') From 64f856afae6ba90162c268b8ab8685d9bc6f22ae Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Thu, 6 Oct 2016 20:52:02 +0100 Subject: [PATCH 02/16] Update hash again after changing the kit settings --- resources/views/master.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/master.blade.php b/resources/views/master.blade.php index faeaa049..fe70e367 100644 --- a/resources/views/master.blade.php +++ b/resources/views/master.blade.php @@ -30,7 +30,7 @@
@yield('content')
- + @section('scripts') From a86ebf5297d78fdb4ff365ff630c917f9ff648db Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 00:01:11 +0100 Subject: [PATCH 03/16] Correctly select relavent option value when map amrker is clicked --- resources/assets/js/newnote.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/assets/js/newnote.js b/resources/assets/js/newnote.js index 49fbe14b..8f75db37 100644 --- a/resources/assets/js/newnote.js +++ b/resources/assets/js/newnote.js @@ -263,8 +263,8 @@ function parseLocation(point) { return [location[1], location[0]]; } -function selectPlace(slug) { - document.querySelector('select [value=' + slug + ']').selected = true; +function selectPlace(uri) { + document.querySelector('select [value="' + uri + '"]').selected = true; } function getLatitudeFromMapboxMarker(latlng) { From c1f7a20ddcfaded92c16321ee6806b02277d5e8f Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 00:01:58 +0100 Subject: [PATCH 04/16] gulp derived files from newnote.js asset --- public/assets/js/maps/newnote.js.map | 2 +- public/assets/js/newnote.js | 2 +- public/assets/js/newnote.js.br | Bin 1608 -> 1615 bytes public/assets/js/newnote.js.gz | Bin 1819 -> 1824 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index ae43e7bb..8b6e488c 100644 --- a/public/assets/js/maps/newnote.js.map +++ b/public/assets/js/maps/newnote.js.map @@ -1 +1 @@ -{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","urlParts","split","slug","pop","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //create the slug from the url\n var urlParts = placeJson.split('/');\n var slug = urlParts.pop();\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', slug);\n newOption.appendChild(document.createTextNode(placeJson['name']));\n newOption.dataset.latitude = placeJson['latitude'];\n newOption.dataset.longitude = placeJson['longitude'];\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var newName = 'Name: ' + placeJson['name'];\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson['latitude'], placeJson['longitude']]);\n selectPlace(slug);\n });\n //make selected\n selectPlace(slug);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(slug) {\n document.querySelector('select [value=' + slug + ']').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","urlParts","split","slug","pop","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //create the slug from the url\n var urlParts = placeJson.split('/');\n var slug = urlParts.pop();\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', slug);\n newOption.appendChild(document.createTextNode(placeJson['name']));\n newOption.dataset.latitude = placeJson['latitude'];\n newOption.dataset.longitude = placeJson['longitude'];\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var newName = 'Name: ' + placeJson['name'];\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson['latitude'], placeJson['longitude']]);\n selectPlace(slug);\n });\n //make selected\n selectPlace(slug);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index 5a092f6e..33d914a8 100644 --- a/public/assets/js/newnote.js +++ b/public/assets/js/newnote.js @@ -1,2 +1,2 @@ -function getLocation(){navigator.geolocation.getCurrentPosition(function(e){addPlacesMap(e.coords.latitude,e.coords.longitude,e.coords.accuracy)})}function addPlacesMap(e,t,a){fetch("/places/near/"+e+"/"+t+"?u="+a,{credentials:"same-origin",method:"get"}).then(function(e){return e.json()}).then(function(a){if(1==a.error&&(alertify.reset(),alertify.error(a.error_description)),a.places.length>0){var n,r=[];for(n=0;n0){var n,r=[];for(n=0;nQY#~+?xO7WkWYn~*|G)PLl^&causgXpS+{(pTVaOm!^4Y&wPv5WzGGF| zq?64DH>@n0LDNSel(s;I+Xxa;lrnw?u+8Wa+fSPB-X9xR%8X?GX1?$NZrB3y}A3fm<< zuT$K6@wc(juT%Xuv^V+ooaEo;%sI(+=F$uLce|5*dB)z-^_~0PFe%`@q^EJX!O|PE zm-)d83*fniI0%6A@r zA$8{P?n6GI+nv219(%P)>PoM{?!BjNe{JFZXdH6ku>Z{>KjkPJCgCf8Usy`~mz(|M z)#EcsL2pidP<*qoc~QcPy%#wR3;k;6t@v5-)P2j`=X}Xl~ z>!N=Z3uY~hfB#ZmH8%Q$7;|la>XA$dk6k{OwUV^bpErKJ&0E;2Ah6|4$%GK|yKkN} za9>{IbE)U;j{;Ve-mhDoKPc#IV1IJ3-YV06&C~_0OFAAM?)tL$@6x5W%dg(Dn@SJ>ZwsdtM1@9Lk| zQcHOsPR?Tgw`Rq;nhgblGxN_I8uD&?D)CH4%;CA?$Ucax~%5*u3>modPFWH z>Tt)u6|qZS-4zK=&Gfmd_DPQM;giG3&ofFxC+>a26JX3JAmhF9li=!C$M=<%i#?jf ze@E-AK!(>WmDEE)UYA%G<^*re&pXR8S?k_^0aJyre{r6%qFSf*Ji0F`a(T`F-uPck zp;f7>F0SwKlE{Vme-=pZd>Llot~bS7zL!Vo;m?U@o%BmKoBq2rg@45{8`dp;5A(LH zURK@d#jrEolac-4TZyYz7fg{Adl2;0=9d9E&!=N@g<>j~H*y6Mnn;bpHor#ar(u|#E(QRTJnH~VTFZn^b4PQM;>^@N&( zmbKIJ^YvmE59lmQU&$TFE9<)HpXwI&-gYjg?1L%&ymC%0%myrz($!z2&Qh6WJ?FT? zk1Ou%7w5IK3+C}1+%Hu8@J_C0^$h`&=qK}{xO863GJm3HH_?3ilv=5ui;kb`JoQel z=G?*kvohyJpD@$d`rx^Y)4iroW*X0*&9!B%44+$L<~-~3pI3jCYV!0ZTff#R)m|o3 z^l#Iu*+F@=-)!HnNuGaZ!84P-z0n>kPaeEs!B;zFa_RrOsRd6`p0q~tF_~Xdi(A>- znq8N$a3%k(nU_{<3D9s7QA-r4N)-Ec&mgYZwRgt4eu1iotXy&u`vp(U*kQF_;ef#N zWqGD-rkUZ=?fzk!n*6JM4m|UjlsKPbmU?YZ>bdIzfsLCN=vOO$J~mfLTRKBFcIE%i zBJ17Ptl7t-ChN%UJMaCMFK|`g*1z}C!{2Qu<~{!0&RSW|w$)~1(FEhi(fXYd z=ahEdxpsM7aDr|ocet9&vI&<=9Lpd5TxumVc|yr$g|}PJnboZ8cI;TZ@?6p793$@k zZ&rMrwZUoPM)k}ulRbV-S9lcc`E7rm+s<>#)8pjzfA{<9U#@nk|KxZt{Z;Ylv@a!_ z&!z^JFSP8+5Dn_}_`clEVdb@6=0Q^}OOh_@qX;b+R9Xu6=jCRI;yMI-fm`R&E!01$%sU3d=`m#-Jmt9_3?8>D#`|+#!_w9DDesj}*q_K@FWz!!90DhG#5dZ)H literal 1608 zcmb1^k!0vOY#~+?xOB_MjL21ge^;vRVik9K(|5La>z$=iM;Df|w7aT@n9W>YxOR5R zrv!tXRWj-mD(Q|x;Ym2TdT|{=Y83G zZ~nxK;dMuroY-cVW`9FY)#GEzG^hPO`m)Q)KJ8J&#le+TMVE?|;wrpFtKW_GQ?6*rhZP}agvBM|e{o>~df2wmfW%C*L zM{Znw==X->-_(TL-gWwQ%q;%(+2wG%w*8{FcXydePEWaY^tl&bb)-aIe%0k!H$pxi zXa36bx61#&#p_#68zo*eYbkmj_PC^Zc2&p9Npso5^39K!HaT2KTi)z(_sgcq%$h!* zjUtV&Jvz)f!RDGd-@)b$M_5iY|1Y^#w?W&Hdt%3+WA~BYAe*(OiC~ zeSiJEsrB`CZT#o&>&~k`zus=+|JeP1s{iI4e>8pW&#RaJ%iq)A_G|Mi=c=tYEY|BQ z)?9jfV7~4uV|kr9uFqZvpYdsaYthEqu6m*Jg30R@Z9Otk`@cB7e{XEF?&XY@d1A|N zvHOm>)hloc#R7zgpLCn~WXKx;PZ*9G%u5v9<0^bbh|#x}OK; zUgBx&TH+a|rj)7@EpW$kJ(WfPY?I?Nx+oh171Yo&2e>QB~95~ZsaeErGrBcC%! zbCLM7s}_Ei%QvcUsyNm zt*RE|lX=RlHZ0qduUu&ks*7kk9g@8CIHR4;wZ#t{lFH%=udF#|B_lYc$&~qA?xOM~ zdlEz$_aEB|oJ z-S;8V)%o*``JUp7q^!D9{(5KdOXUX(L~yH>=X?-Ql4;0w`1FTmug`23@Al6U9P@v@ zP`owynd~od+&#+fX54GeY zGF~?qE;G^74e1h^8Ywv?E^>;dgj)876^56e3OecUaX4uE*xXH0IR3df&yBX?%Za99 zrZ2;0xA=!^YV$8YbKu*VNe|~qM5z_`q#m3u5ZJhRLH;+lXTDahVcRaK?F#xYZW-4X zar2kajD*g`8UL5eeN%E$@5|mz=cjUMmwoZseD-Q! z`9jmK7a~Eup5K>Sx(JF$=9?UGw>10Mce63*+rob@+ILxagtiW?p&F+YI?&sR_1Ss0p|6@KAb{kz}yE}lFpXm&N` zgC{Q=Peb0P|DAXC9{FlwvtjXKiw}>5XI_xD)YMF_j`$T-+p)tv`)i|&|Knp@ qSu1XwI&8k~>X#X3-_21EDmf_={{PRngSv(@_sm!vp*7*eGf@CuC@@$6 diff --git a/public/assets/js/newnote.js.gz b/public/assets/js/newnote.js.gz index a50969b52ecb28dc4dfff1b38cf3d9c3ee851184..e287cc55e35d8d8cb99016624e78a19847a1555f 100644 GIT binary patch delta 1750 zcmbQuw}5YgSpBkRJ-5F--Mr2G`PVbgR?Kafwdsh2qrR{89Q(b$Lz}NKdRNqBE(#G5 zt#b`^{JH1i(#dZAVh_&woV&)sqca1Cf?`9 zjHQ{WSGyLTn8Ge!#9H-m+IyM$%eTGr)MwpH`j%4F_q(Lf=4!rs&E;lhSqtC5!f0pl zt-6nW>`!i2T$;}@b8IS|u1hrPew((=@v6Z~ zPhB(B;{`n*w0qa}Hub(1U@s9kWv|p$c5#iv?zP3bGg|YeEDG*-HO!x5Y~}7=Kk@ZO z!G;$c!M}VfGaIdcL^%G|Rd$LK>RNZ@!M*ZxUU#@9CpH;udL+8g=lPyh4&D6IgF4Ry zl}&qm=uXV`2MXC6PN=HDTYeZSm|uY3Lb^jZAudVBjx>GE|Ob6(o7 z^6H-NXZP>vv+nvQe_q$miQoVK_s!|2_pcPMKc0S7{q+8rIWZG6I|7$8|3AG)v1gA# z)crF%uS#5PH7i>AwClpP5Av!psm2NKIIVwjpB3C-T*qwodWpqKg$ZTeiQAcEro4+T z2>N_Ey#M+Xqo->(h$l4Xq-?6$_@J0oxBdF(y(f9*u98{oaVzu!M~wK5f=3IE|NGAN z=4|Bfc}v zk>-v(sdI_x+#cVnGAHFfuV5&d=w1E3>^EyfMU!>Sdg}&JF4mqkPp9mRDL5XOb-jpd z#@~-8C**xe+Wld<`o#Tt(Z#=FKHiQFJ0lS(ReNh`;)4^>NoC%LwjYlACwxLP@Q&Vv z$$eFuXGynyscg<#68FWsere#bN2ju%|CzDorGns0-4n_Cnl5u%X55|oszz_?k6R(W zQzPHxpStp)QNPcwdFHpyXsyV&o=exBh+fwydcd9fu;S;vS(OK(@2<(&T3^F?YwpQg zjcnaa(_{1#R0Mb5fAQgAqK5OK+-?_3?ayyH|HW|cs4G%8I zb>WR|{KCWsKeHBnewwHCWpQ-+*>!e;EwWiVtiFgI``o)JCBCip#eRRe!&i?y{-w8Y zN4fZ-!Vad4YT2L~zR3YB63Ux*O+4`6sm;e{{(l}SbCg@nUAj(cyYlS4&z1%{zo>Zpy|IQsqk;?fguwlD- zFJES%{-q@Os);j`_)7%Cxy;q%YSg{N_wl__V=b+ZPx6&|{me09@g2h(SNA4_S0C)- zSu2$BKE3+KmP8S@J*rd?{^-leJ=THognWZJEqW+hnJZ>7tpD zjmAP{>HCUYYcq#Emy*xueoKn@sziBSw8Iw zy0q|OuCrcD+)S;-!E>V{W_ou7DTwBtx->he(f7S?i{ajSLs8>b%UupfyX<*gyVPis zd#uQEuTQzR`zNc&N++a$I?4QyyYwaFzB_v}g44{R4_7$9eShnschDQXb#sh9289az z3F%S#-N&BtePUq6i+R-(Z`K&+m(?)` zKg#aWRS~ucU6^#%WYWxI;y)(GeYwCcvgi4P{h~M2HWz$W$d^5EF#5^K=q=S>#W?cR zO$r6?q}HZeR&BieiPL?t;Gt8qJth9Bm8{`={N?_Y_9vy*G7^7|GfgzE_qjC84363EpSwLjtYyv5n5_o$Hq5Zxr@&LU%kkx}sf!n1SKFGI!}+3I_3NYd e{PSFA?C*crQkXkG>+{E{^^Dra7a8Rx85jUHzh!3t delta 1729 zcmZ3$H=A#Q7|+sYJ-5HzjoY-%{Q1?1iX!!m6F>a8rdCJrcbVmz14f?=^Q-k zbMp3i$-S5Vcb*k#qgL}ClVe?0 z;XAIIGDY|sR!L5*h%}oveS3+s`CQNB$}@(3@AVE$UEMP$r0$^$^LF(o9DN-BUiY22 z?d#ZQQNLSTm*aw8QRw{1v(`Vn5wUa1tPQ3+rV2i1sa2GowOh1j?uG|atJNp$UlFYm zm*gn@#I-C;#D+b)_wV2L#_JAPRTj>UUU4vWN-4|viMf{ZIahdVuMXpJU1sxRg7yXP z?NzU*+>0%=zIaCLv-)N3JIlK-udFkEG+R#g<$=tuuG><(>Q}s#c>c?CAGc)cDv3*` zP6tm3uH0CZ^?B9G@S8CkC(Zo%QuxpFHz$R69prekVS5Slsy0vmtc{wMZOJY1nI*X* zIkD{)3z`G|aT;zpoyL3X?VRj`Iwgxm=2q!+xjvqA(bB3broWfL#eK%5{8QfCcMi65 z-O85~{L~dtvXt%ny5g|&e|Vg`_dn$r0)3NIx8&u0GiO*&x3sRg?GKR$n1 zG5xhfyII$Ian=M6#r=;~H7?RMjBe{+6KP-nNzRt5Y^BYbb6<=Wo3z}&yZYRV)FtN^ z+L>Pvw|E!6gH!8t^YYc-P6Y-^%5E@QYOri~kFw(g8;uho(PomITv7~)@9l%ciYu>A zaGm|wV`)cd9k;n%x{=U?*%`)?Zze7-5tuSnxhY53?UmG;YJR<*)-@?&nT+Z8mSy!l z;jau~sNZ#B>E80+f0=Y_4$9VDkUhZF%H(#f=v0i}j>j5Xvn^TA{Qr{TVP3T}`p4(V zC*rrSwya(E*crD>AO{(zPd|*ENbBaHl@3_<3(u<$>tCYjU>MSFqkXoATD7*|kx7-E@OV9e49f zeta;PqWG}PbkfmX6cSy7QWS=XF403-#&Fg#wLDY;)9=Ai#|Wi z)BdtJI{oZEJHZy&>>YMW-$ajn?%nhxpl$E_{r+-?zaDw~%WUC}a`{Dt9ZVVQvOzVB zll@sFly~o%df>rTn~%@@|2$OYD7Tusbe+_8_1Sx$O$}s<(w1lceP`a}E*6FQ7pmnK zZdEVb>X~6L5t$v#(XFytB=Z={y-#s_QkmZWJ9i*OD(9!bhH~>>zRW`XOOFJqCeC~$ zP{O&6!(2_SM*S66ywoc-*3$a;Bwwl5&m1Eb-!Z&#b#FpA`@ue*wL%&4Y26Rj1%)4C zx%c&N?=rib_`5pSHigE^?>JKXSn}68LEepSJ6xE8@2;&|`r+-x$!4r_^+siX8Ov+9 zqCIbJn7HA~Z6$+?Z;!UQDz&K^X=*;Q)!CpelbLCo>=ZIxG&8c%Sm@iOny0h&oHAKz zv{gAL@yJ`tKi0vbH+)04H8Z~oyB6br%b-qzjk7vUIwbHKmceZWssJOn{D^;a`mxkZeC$qQ7t9x3R z9XR)NGW#L%SC^P;Dt|8Woq02l_c5<%>D$Blo*Vb?C^~gSJJj(*uwmDmYPkt_-POL? zD*rxzF+1qZuhRdsWKKxE`TgHsclEza$(Z?O&Bs%>J}1K>EM6oWIE#zO>%EIVCpJEqd&-JF&GyWdie~y1>$&&OyVsG8H=p00YqsufP_Eg&Z~8B9 L{SlCrWMBXQn_pu5 From 841f0763387c7f9a3fde1bb8fe8944591250f155 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 11:42:22 +0100 Subject: [PATCH 05/16] Correctly parse new place created response --- resources/assets/js/newnote.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/resources/assets/js/newnote.js b/resources/assets/js/newnote.js index 8f75db37..1aaa8b38 100644 --- a/resources/assets/js/newnote.js +++ b/resources/assets/js/newnote.js @@ -206,9 +206,6 @@ function addMap(latitude, longitude, places) { if (placeJson.error == true) { throw new Error(placeJson.error_description); } - //create the slug from the url - var urlParts = placeJson.split('/'); - var slug = urlParts.pop(); //remove un-needed form elements form.removeChild(document.querySelector('#place-name')); form.removeChild(document.querySelector('#place-description')); @@ -224,28 +221,29 @@ function addMap(latitude, longitude, places) { map.removeLayer(marker); //add place marker var newOption = document.createElement('option'); - newOption.setAttribute('value', slug); - newOption.appendChild(document.createTextNode(placeJson['name'])); - newOption.dataset.latitude = placeJson['latitude']; - newOption.dataset.longitude = placeJson['longitude']; + newOption.setAttribute('value', placeJson.uri); + newOption.appendChild(document.createTextNode(placeJson.name)); + newOption.dataset.latitude = placeJson.latitude; + newOption.dataset.longitude = placeJson.longitude; selectEl.appendChild(newOption); - var newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], { + var newPlaceMarker = L.marker([placeJson.latitude, placeJson.longitude], { icon: L.mapbox.marker.icon({ 'marker-size': 'large', 'marker-symbol': 'building', 'marker-color': '#fa0' }) }).addTo(map); - var newName = 'Name: ' + placeJson['name']; + map.panTo([placeJson.latitude, placeJson.longitude]); + var newName = 'Name: ' + placeJson.name; newPlaceMarker.bindPopup(newName, { closeButton: true }); newPlaceMarker.on('click', function () { - map.panTo([placeJson['latitude'], placeJson['longitude']]); - selectPlace(slug); + map.panTo([placeJson.latitude, placeJson.longitude]); + selectPlace(placeJson.uri); }); //make selected - selectPlace(slug); + selectPlace(placeJson.uri); }).catch(function (placeError) { alertify.reset(); alertify.error(placeError); From 976b9ac00f7c96e2b0a6beb80fe30d3522fcd18b Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 11:43:44 +0100 Subject: [PATCH 06/16] gulp derived assets from newnote.js resource --- public/assets/js/maps/newnote.js.map | 2 +- public/assets/js/newnote.js | 2 +- public/assets/js/newnote.js.br | Bin 1615 -> 1609 bytes public/assets/js/newnote.js.gz | Bin 1824 -> 1819 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index 8b6e488c..89292c92 100644 --- a/public/assets/js/maps/newnote.js.map +++ b/public/assets/js/maps/newnote.js.map @@ -1 +1 @@ -{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","urlParts","split","slug","pop","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //create the slug from the url\n var urlParts = placeJson.split('/');\n var slug = urlParts.pop();\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', slug);\n newOption.appendChild(document.createTextNode(placeJson['name']));\n newOption.dataset.latitude = placeJson['latitude'];\n newOption.dataset.longitude = placeJson['longitude'];\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson['latitude'], placeJson['longitude']], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var newName = 'Name: ' + placeJson['name'];\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson['latitude'], placeJson['longitude']]);\n selectPlace(slug);\n });\n //make selected\n selectPlace(slug);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","split","selected","replace","disabled"],"mappings":"AAWA,QAASA,eACLC,UAAUC,YAAYC,mBAAmB,SAAUC,GAE/CC,aAAaD,EAASE,OAAOC,SAAUH,EAASE,OAAOE,UAAWJ,EAASE,OAAOG,YAI1F,QAASJ,cAAaE,EAAUC,EAAWE,GAEvCC,MAAM,gBAAkBJ,EAAW,IAAMC,EAAY,MAAQE,GACzDE,YAAa,cACbC,OAAQ,QACTC,KAAK,SAAUC,GACd,MAAOA,GAASC,SACjBF,KAAK,SAAUG,GAKd,GAJe,GAAXA,EAAEC,QACFC,SAASC,QACTD,SAASD,MAAMD,EAAEI,oBAEjBJ,EAAEK,OAAOC,OAAS,EAAG,CACrB,GAAIC,GACAF,IACJ,KAAKE,EAAI,EAAGA,EAAIP,EAAEK,OAAOC,SAAUC,EAAG,CAClC,GAAIC,GAASC,cAAcT,EAAEK,OAAOE,GAAGG,UACnCC,EAAOX,EAAEK,OAAOE,GAAGI,KACnBC,EAAMZ,EAAEK,OAAOE,GAAGK,GACtBP,GAAOQ,MAAMF,EAAMC,EAAKJ,EAAO,GAAIA,EAAO,KAG9CM,OAAOxB,EAAUC,EAAWc,OAG5BS,QAAOxB,EAAUC,KAEtBwB,MAAM,SAAUC,GACfC,QAAQhB,MAAMe,KAItB,QAASF,QAAOxB,EAAUC,EAAWc,GAET,GAApBa,UAAUZ,SACVD,EAAS,KAEb,IAAIc,GAAOC,OAAOC,WACdC,EAAMC,SAASC,cAAc,MACjCF,GAAIG,aAAa,KAAM,OAEvBN,EAAKO,YAAYJ,GACjBK,EAAEC,OAAOC,YAAc,wEACvB,IAAIC,GAAMH,EAAEC,OAAOE,IAAI,MAAO,wBACzBC,SAASzC,EAAUC,GAAY,IAC/ByC,SAASL,EAAEC,OAAOK,UAAU,wBACzBC,cAAc,KAGlBC,EAASR,EAAEQ,QAAQ7C,EAAUC,IAC7B6C,WAAW,IACZC,MAAMP,EAGTK,GAAOG,GAAG,UAAW,WACjB,GAAIC,GAAoBhB,SAASiB,cAAc,kBACrB,QAAtBD,IACAA,EAAkBE,MAAQC,4BAA4BP,EAAOQ,aAEjE,IAAIC,GAAqBrB,SAASiB,cAAc,mBACrB,QAAvBI,IACAA,EAAmBH,MAAQI,6BAA6BV,EAAOQ,eAIvE,IAAIG,GAAWvB,SAASC,cAAc,SACtCsB,GAASrB,aAAa,OAAQ,WAC9B,IAAIsB,GAAaxB,SAASC,cAAc,SACxCuB,GAAWtB,aAAa,WAAY,YACpCsB,EAAWtB,aAAa,QAAS,cACjC,IAAIuB,GAAYzB,SAAS0B,eAAe,qBACxCF,GAAWrB,YAAYsB,GACvBF,EAASpB,YAAYqB,GACrB5B,EAAK+B,aAAaJ,EAAUxB,GACb,OAAXjB,IAEAA,EAAO8C,QAAQ,SAAUC,GACrB,GAAIC,GAAS9B,SAASC,cAAc,SACpC6B,GAAO5B,aAAa,QAAS2B,EAAK,GAClC,IAAIE,GAAO/B,SAAS0B,eAAeG,EAAK,GACxCC,GAAO3B,YAAY4B,GACnBD,EAAOE,QAAQjE,SAAW8D,EAAK,GAC/BC,EAAOE,QAAQhE,UAAY6D,EAAK,GAChCN,EAASpB,YAAY2B,EACrB,IAAIG,GAAc7B,EAAEQ,QAAQiB,EAAK,GAAIA,EAAK,KACtCK,KAAM9B,EAAEC,OAAOO,OAAOsB,MAClBC,cAAe,QACfC,gBAAiB,WACjBC,eAAgB,WAErBvB,MAAMP,GACLnB,EAAO,SAAWyC,EAAK,EAC3BI,GAAYK,UAAUlD,GAClBmD,aAAa,IAEjBN,EAAYlB,GAAG,QAAS,WACpBR,EAAIiC,OAAOX,EAAK,GAAIA,EAAK,KACzBY,YAAYZ,EAAK,QAIzBN,EAASmB,iBAAiB,SAAU,WAChC,GAAuB,gBAAnBnB,EAASL,MAAyB,CAClC,GAAIyB,GAAWpB,EAASA,EAASqB,eAAeZ,QAAQjE,SACpD8E,EAAWtB,EAASA,EAASqB,eAAeZ,QAAQhE,SACxDuC,GAAIiC,OAAOG,EAAUE,OAKjC,IAAIC,GAAe9C,SAASC,cAAc,SAC1C6C,GAAa5C,aAAa,OAAQ,UAClC4C,EAAa5C,aAAa,KAAM,oBAChC4C,EAAa3C,YAAYH,SAAS0B,eAAe,sBAEjDoB,EAAaJ,iBAAiB,QAAS,WAEnC,GAAIK,GAAY/C,SAASC,cAAc,QACvC8C,GAAU7C,aAAa,MAAO,cAC9B6C,EAAUC,UAAUC,IAAI,eACxBF,EAAU5C,YAAYH,SAAS0B,eAAe,eAC9C,IAAIwB,GAASlD,SAASC,cAAc,QACpCiD,GAAOhD,aAAa,cAAe,QACnCgD,EAAOhD,aAAa,OAAQ,cAC5BgD,EAAOhD,aAAa,KAAM,cAC1BgD,EAAOhD,aAAa,OAAQ,OAC5B,IAAIiD,GAAYnD,SAASC,cAAc,QACvCkD,GAAUjD,aAAa,MAAO,qBAC9BiD,EAAUH,UAAUC,IAAI,eACxBE,EAAUhD,YAAYH,SAAS0B,eAAe,sBAC9C,IAAI0B,GAASpD,SAASC,cAAc,QACpCmD,GAAOlD,aAAa,cAAe,eACnCkD,EAAOlD,aAAa,OAAQ,qBAC5BkD,EAAOlD,aAAa,KAAM,qBAC1BkD,EAAOlD,aAAa,OAAQ,OAC5B,IAAImD,GAAWrD,SAASC,cAAc,QACtCoD,GAASnD,aAAa,MAAO,kBAC7BmD,EAASL,UAAUC,IAAI,eACvBI,EAASlD,YAAYH,SAAS0B,eAAe,mBAC7C,IAAI4B,GAAQtD,SAASC,cAAc,QACnCqD,GAAMpD,aAAa,OAAQ,kBAC3BoD,EAAMpD,aAAa,KAAM,kBACzBoD,EAAMpD,aAAa,OAAQ,QAC3BoD,EAAMpC,MAAQC,4BAA4BP,EAAOQ,YACjD,IAAImC,GAAWvD,SAASC,cAAc,QACtCsD,GAASrD,aAAa,MAAO,mBAC7BqD,EAASP,UAAUC,IAAI,eACvBM,EAASpD,YAAYH,SAAS0B,eAAe,oBAC7C,IAAI8B,GAAQxD,SAASC,cAAc,QACnCuD,GAAMtD,aAAa,OAAQ,mBAC3BsD,EAAMtD,aAAa,KAAM,mBACzBsD,EAAMtD,aAAa,OAAQ,QAC3BsD,EAAMtC,MAAQI,6BAA6BV,EAAOQ,YAClD,IAAIqC,GAAczD,SAASC,cAAc,SACzCwD,GAAYvD,aAAa,KAAM,gBAC/BuD,EAAYvD,aAAa,QAAS,oBAClCuD,EAAYvD,aAAa,OAAQ,gBACjCuD,EAAYvD,aAAa,OAAQ,UACjCuD,EAAYtD,YAAYH,SAAS0B,eAAe,qBAChD9B,EAAKO,YAAY4C,GACjBnD,EAAKO,YAAY+C,GACjBtD,EAAKO,YAAYgD,GACjBvD,EAAKO,YAAYiD,GACjBxD,EAAKO,YAAYkD,GACjBzD,EAAKO,YAAYmD,GACjB1D,EAAKO,YAAYoD,GACjB3D,EAAKO,YAAYqD,GACjB5D,EAAKO,YAAYsD,GAEjBA,EAAYf,iBAAiB,QAAS,WAElC,GAAIgB,GAAW,GAAIC,SACnBD,GAASE,OAAO,aAAc5D,SAASiB,cAAc,eAAeC,OACpEwC,EAASE,OAAO,oBAAqB5D,SAASiB,cAAc,sBAAsBC,OAClFwC,EAASE,OAAO,iBAAkB5D,SAASiB,cAAc,mBAAmBC,OAC5EwC,EAASE,OAAO,kBAAmB5D,SAASiB,cAAc,oBAAoBC,OAE9E/C,MAAM,eAEFC,YAAa,cACbC,OAAQ,OACRwF,KAAMH,IAETpF,KAAK,SAAUC,GACZ,MAAOA,GAASC,SAEnBF,KAAK,SAAUwF,GACZ,GAAuB,GAAnBA,EAAUpF,MACV,KAAM,IAAIqF,OAAMD,EAAUjF,kBAG9Be,GAAKoE,YAAYhE,SAASiB,cAAc,gBACxCrB,EAAKoE,YAAYhE,SAASiB,cAAc,uBACxCrB,EAAKoE,YAAYhE,SAASiB,cAAc,oBACxCrB,EAAKoE,YAAYhE,SAASiB,cAAc,oBAExC,KAAK,GADDgD,GAASjE,SAASkE,iBAAiB,gBAC9BlF,EAAI,EAAGA,EAAIiF,EAAOlF,SAAUC,EACjCY,EAAKoE,YAAYC,EAAOjF,GAE5BY,GAAKoE,YAAYhE,SAASiB,cAAc,kBACxCrB,EAAKoE,YAAYhE,SAASiB,cAAc,sBAExCV,EAAI4D,YAAYvD,EAEhB,IAAIwD,GAAYpE,SAASC,cAAc,SACvCmE,GAAUlE,aAAa,QAAS4D,EAAUzE,KAC1C+E,EAAUjE,YAAYH,SAAS0B,eAAeoC,EAAU1E,OACxDgF,EAAUpC,QAAQjE,SAAW+F,EAAU/F,SACvCqG,EAAUpC,QAAQhE,UAAY8F,EAAU9F,UACxCuD,EAASpB,YAAYiE,EACrB,IAAIC,GAAiBjE,EAAEQ,QAAQkD,EAAU/F,SAAU+F,EAAU9F,YACzDkE,KAAM9B,EAAEC,OAAOO,OAAOsB,MAClBC,cAAe,QACfC,gBAAiB,WACjBC,eAAgB,WAErBvB,MAAMP,EACTA,GAAIiC,OAAOsB,EAAU/F,SAAU+F,EAAU9F,WACzC,IAAIsG,GAAU,SAAWR,EAAU1E,IACnCiF,GAAe/B,UAAUgC,GACrB/B,aAAa,IAEjB8B,EAAetD,GAAG,QAAS,WACvBR,EAAIiC,OAAOsB,EAAU/F,SAAU+F,EAAU9F,YACzCyE,YAAYqB,EAAUzE,OAG1BoD,YAAYqB,EAAUzE,OACvBG,MAAM,SAAU+E,GACf5F,SAASC,QACTD,SAASD,MAAM6F,SAI3B3E,EAAK+B,aAAamB,EAAc/C,GAGpC,QAASb,eAAcsF,GACnB,GAAIC,GAAK,WACLC,EAAcD,EAAGE,KAAKH,GACtBrF,EAAWuF,EAAY,GAAGE,MAAM,IAEpC,QAAQzF,EAAS,GAAIA,EAAS,IAGlC,QAASsD,aAAYpD,GACjBW,SAASiB,cAAc,kBAAoB5B,EAAM,MAAMwF,UAAW,EAGtE,QAAS1D,6BAA4BlC,GACjC,GAAIyF,GAAc,WAAWC,KAAK1F,GAC9BE,EAAWuF,EAAY,GAAGE,MAAM,IAEpC,OAAOzF,GAAS,GAAG2F,QAAQ,IAAK,IAGpC,QAASxD,8BAA6BrC,GAClC,GAAIyF,GAAc,WAAWC,KAAK1F,GAC9BE,EAAWuF,EAAY,GAAGE,MAAM,IAEpC,OAAOzF,GAAS,GArRpB,GAAI,eAAiB1B,WAAW,CAC5B,GAAIoC,QAASG,SAASiB,cAAc,UAChCpB,QAAO6C,mBAGP7C,OAAOkF,UAAW,EAClBlF,OAAO6C,iBAAiB,QAASlF","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson.latitude, placeJson.longitude], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n map.panTo([placeJson.latitude, placeJson.longitude]);\n var newName = 'Name: ' + placeJson.name;\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson.latitude, placeJson.longitude]);\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index 33d914a8..e50133a5 100644 --- a/public/assets/js/newnote.js +++ b/public/assets/js/newnote.js @@ -1,2 +1,2 @@ -function getLocation(){navigator.geolocation.getCurrentPosition(function(e){addPlacesMap(e.coords.latitude,e.coords.longitude,e.coords.accuracy)})}function addPlacesMap(e,t,a){fetch("/places/near/"+e+"/"+t+"?u="+a,{credentials:"same-origin",method:"get"}).then(function(e){return e.json()}).then(function(a){if(1==a.error&&(alertify.reset(),alertify.error(a.error_description)),a.places.length>0){var n,r=[];for(n=0;n0){var n,r=[];for(n=0;n-K=dtxewMW7O{pL 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 diff --git a/public/assets/js/newnote.js.gz b/public/assets/js/newnote.js.gz index e287cc55e35d8d8cb99016624e78a19847a1555f..5283fa34ca95a85c33bed50270fdf2f394a15011 100644 GIT binary patch literal 1819 zcmb2|=3oE;Cg#17<@Jxvg#OykcXE^}Y|8xoD>AXFzwGkrO{_}pLe~@yG%Ps%a{2o@ zXNN^DYdCIS-{#fau9-E(?Ua-=H?7PA8a6eZ{?&A4Pm6Hwksysj zUK_MyV+49yb275RFYq5~$nBAG{Iw`=W(8-HU59JYyi^<3?;H22kH4Rqgi?Xf;uq?G}3u%hFb=5k(r1t1p55vi4=lO_P_@|}|e=Td6-E;hu za%os$u=Dh-vIWcLE!jOKP;ImGPA9F1d%~t}K0Z;VU$tg>PBXT(u5S82$G+0Zd`6?} z_qIHTYX-Nvqw_eo@GNEfy>F}AgBXtv4Gv}1^&F{MPeWN( z{U}gPnJ95;nI_+vufDtgELgYy`t$`xL9xpUejok$Tz|`hr}ndUPI@$b{{D=*zdt9= zsQYnr)ztqQ+M$0+{(aQn9{)%AY5f1>!q5NSU)B$=pR9jw*;Vz``(x(CPwqS)n9ls) zdyaC?o(o=g&+QDHadqjXq@^yN8LxlzGp(B}Y4E#c?*GOO*oV%GPnE?lD!-rZ z^Y=xFuCQ0_ueWobZHZ$0rgLjE`!}0MdCk)KM)EPSTaEkLJ|#46Rc*Dr8!Gd$>&OD7 z*xW>=fG4^Pm-hYli0mj@sOa)?@_`h=S%2j6V$P}@F*XmXDlu^Xa%$lMo%ftB(FRUe z6W*|IxWG1Pj^vced6m(tG`sAd9b~(ZswcPCR!;oEvB!rWHa}!|7qDW%bKT`NeYgYDuUsO7-S8aZ^AneW;u`W^NqP2RvjJ|Yi5mn26w14iENAn%@ zI-aC;PAs`}yJ(&2spq`21haO^pW1qb%{?yqgYl+??5!t!+~htB>A9ucX|oP|8MES1 zcC2Y=(haNWyW05gJbR%vLovKw@3R|`KlNO%Q*Dv3u*7xC>+3D!l^6`zE zf&-%i5&|A}tycYF(&c(7x@Lz&QGCH}U#0m^U*@saujATL`6(!EM(@I1Hoo898F%O9 zZL@YZ-m&jbW8>@9oY$uBU2D*nH^=n&InMQOTn>KiyqzesE?m`F^xMMUc2zvrm5;yP z-SX&8a!;G)rzN~>DnDgZjxjgxkEnXF;XeCaF_+u7r#vaWdn=1q{r1JRY;51VkLh4##`>{xDRo0t{S!L70qr@&${k-uzz5neTM;=8tkwTa05#5Xv3Z6?SO?E$Fvt#K( zQ@Q6;>{~APf172Ub$0HRSsGjAzwR+LZ0ptt5h+Y)$uCsDuXO19zjFs%=Hz@7*i>%b z+xPO3-?DDTZ%*djjIWYbG?<6k{O}XG|HEq4Y{pg1zlE|N#hCLylKT4XNg&`@iOe5cCGuH z_Vp?ptY#t~0ur1WIapmaGMpSmxx9K_GA>_vsKf5!vOgWsc8u#+Mn9f+>BsFu%`d(s z9cB{Ut827O^9Y~j8?(NSZ44GGPKCS1gm=7|viC~-PPOkZmxb)w)^fJAu$u9|UpQ-7 z?9|-H4Y#IVyuR41SN^x#p^0**T$ZwV)v_Mc>Q|kz>BN$ZcS^;NXLkAbEN|WA7VyUK z&%P;~p3TvmW_>?ym)$pfwB>!n+>h$~OU~!p@^?Iay4xi6mjB%{gC`$EH7aywH6Bm8 zy=T#xJK39=um4%ZVgJeRjh#{Po2@(k%h*Wu@;l1dNqyhN_w4We_z8C}XP#JickPPm z^r|McM-P@p%2Z}{o$xkJ(yu7{btSitqkp^T`&S#8?(Vpscz#jhvjvPdO?`f!?Yew_ zlFDD^zrFK}=G_#@Qz&PTKlZV3&b6r`W{S!&?RC<#HAReD&wo;{zPi`qMb!eGd!II3 zJQMGJB05=Ozw5j`uDh2Pw5gPPDQ`cVe6M_7vWUB_d|`={=9)RPTOQ^+{eET;|KGP- z3F7yycqq$V8HX0RRn4j#K~u literal 1824 zcmb2|=3oE;Cg#17->Z~0h5pyicRIc7Slb}3g2EggVt(7J~n%-h|cFz|8wd(C%Zx343g#co|)jthQ8q4OurTL0ie#Lfw` zHi+(6D!81bRxx|lZq=T-8y-llR-dqcMYPJh4GVZb*;s3G&1>FzY~RncW1U&_hiTAlNV`*mU)vkpnrm)Kwu~t2t_Fm@lZSOqwSvQlurBwC(E-AFRn(tn7 zxtUqk!Z)xm+F5+7?qeVOliL*+`-nR4a?^;gR5A_o%Z)SrYBXCj%*fcfuIc|An@Xqa z5{O9W2YE47tfT;s5NZL#i**1Rc;g8N+! z^XC{_xw}t%y-~2?1xN5N-^$EJ>mL!0zjc+J;)J@^U3qY?{G8VvZpn#F2Adv#t6$Z{jJp)By7HOF&#C!$$Yb9xcjN0`|2};dKfB)E zep0%8-Nu}k_N%h)$^>gC)|Nnh+`sw{E#gC_7RX@EyW=_n+%#Oh2 z%>PgCQS8}c5Ox2|&Z`nvTg{4AKJB`2?Ss5(Osa9hJ5KAL+-C(h7}qhIyE5KU zGkn5Ivm7HK5fg?(_v)AEJo~gxvD>VDqL<+6KXU78&!wm+m|sjYx}og;Qb9x8o#m!l z&lS^%?~HS#xg$^NTw*%6$M>qtN%_w!7)mC3SHCa&%^FeBWL>k~xU~TH`DYO{R9=k-S=O7c$lc+d?>fu#Zvq8Th4zm+&k)u)Q!$8-LcEUxBBx; zXXER$PhEIp8^18|!OyHkpP%MweOVlxes-OmV2fU0rWsY*Ixl7kcZC9SX_u0}wrYLQB_TP8Cu^>6R8d-?Hq&xCIZjeo!MNbPgUU+V-ny6rf^Bz$*m-O3Md zFUaqoq@cEA#)0IfUQQ#mju{t@v}mbad2yL}*Gjj3JHxWCg5@>4a%*mGn7HA~Z6$+? zXOFfWRccc;Qq+8QSAT=HOlGESvQx-((agw3W1+J2eMPQuX|sZ6-V!u3fAmb`-`tg4 zIm@+XA7m``&R(aMD`C&q+_Kwv%GW$oZr5`b!3s=T-aaPH+0d|HZuOi8pJE^ULa(gCAx0=&A_Ygf2`vYcgr(G4UUhkYMTo_E9A=_I2irpWb~HmuVNf|>L!JPcT#K9Evq(O{>16NSn$xP*`5;r)JoRy zJ^ph4O8b*iYZ-|@M;bhAU)D_#Xlc_v_3z}o`&=4k2FGmo&)uFM*0Sbj%vOVW8)jJU zQ{buF<@oZ~)WwUht8LB9;e1i9`t?zJ{&}u5_V+(*Da@Up_4(t}dPZ&Ii;VJ;3=9BB Ck%}k) From e3f398ff84dd036b3838a789918cfa2400407ef5 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 12:15:17 +0100 Subject: [PATCH 07/16] Use the correct place URL format --- app/Services/NoteService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index 409ff790..cb5bdc10 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -42,9 +42,9 @@ class NoteService if ($place !== null && $place !== 'no-location') { if (substr($place, 0, strlen(config('app.url'))) == config('app.url')) { - //uri of form http://host/place/slug, we want slug so chop off start - //that’s the app’s url plus `/place/` - $slug = mb_substr($place, mb_strlen(config('app.url')) + 7); + //uri of form http://host/places/slug, we want slug so chop off start + //that’s the app’s url plus `/places/` + $slug = mb_substr($place, mb_strlen(config('app.url')) + 8); $placeModel = Place::where('slug', '=', $slug)->first(); $note->place()->associate($placeModel); $note->save(); From dd0a3228c1e1ff3688e2044300b1afccadfd15a6 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 12:16:33 +0100 Subject: [PATCH 08/16] Use the correct URL format for places --- app/Http/Controllers/MicropubController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/MicropubController.php b/app/Http/Controllers/MicropubController.php index 1858fc8b..8714ea28 100644 --- a/app/Http/Controllers/MicropubController.php +++ b/app/Http/Controllers/MicropubController.php @@ -150,7 +150,7 @@ class MicropubController extends Controller $distance = (count($matches[0]) == 3) ? 100 * $matches[0][2] : 1000; $places = Place::near($matches[0][0], $matches[0][1], $distance); foreach ($places as $place) { - $place->uri = config('app.url') . '/place/' . $place->slug; + $place->uri = config('app.url') . '/places/' . $place->slug; } return response()->json([ From 842dbfa87bdded4e3f068e47a46884b993a7a1e0 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 12:17:12 +0100 Subject: [PATCH 09/16] Use uri instead of url --- app/Http/Controllers/MicropubClientController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/MicropubClientController.php b/app/Http/Controllers/MicropubClientController.php index 0623ab43..672c66f2 100644 --- a/app/Http/Controllers/MicropubClientController.php +++ b/app/Http/Controllers/MicropubClientController.php @@ -224,7 +224,7 @@ class MicropubClientController extends Controller } return response()->json([ - 'url' => $place, + 'uri' => $place, 'name' => $request->input('place-name'), 'latitude' => $request->input('place-latitude'), 'longitude' => $request->input('place-longitude'), From 5bfe8c5a979b4ecfb8112cac180936df0911e339 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 14:39:05 +0100 Subject: [PATCH 10/16] Correctly add photos to S3 --- app/Http/Controllers/NotesController.php | 8 +++++--- app/Services/NoteService.php | 2 +- config/laravel-medialibrary.php | 21 ++++++++++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/NotesController.php b/app/Http/Controllers/NotesController.php index 5b795a30..dda192ec 100644 --- a/app/Http/Controllers/NotesController.php +++ b/app/Http/Controllers/NotesController.php @@ -141,10 +141,12 @@ class NotesController extends Controller $note->placeLink = '/places/' . $note->place->slug; } - $note->photoURLs = []; - foreach ($note->getMedia() as $photo) { - $note->photoURLs[] = $photo->getUrl(); + $photoURLs = []; + $photos = $note->getMedia(); + foreach ($photos as $photo) { + $photoURLs[] = $photo->getUrl(); } + $note->photoURLs = $photoURLs; return view('singlenote', [ 'note' => $note, diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index cb5bdc10..53edee74 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -64,7 +64,7 @@ class NoteService if ($request->hasFile('photo')) { $files = $request->file('photo'); foreach ($files as $file) { - $note->addMedia($file)->toMediaLibrary('images', 's3'); + $note->addMedia($file)->toCollectionOnDisk('images', 's3'); } } diff --git a/config/laravel-medialibrary.php b/config/laravel-medialibrary.php index c6abd4c5..9a85c547 100644 --- a/config/laravel-medialibrary.php +++ b/config/laravel-medialibrary.php @@ -29,7 +29,12 @@ return [ * When urls to files get generated this class will be called. Leave empty * if your files are stored locally above the site root or on s3. */ - 'custom_url_generator_class' => '', + 'custom_url_generator_class' => null, + + /* + * The class that contains the strategy for determining a media file's path. + */ + 'custom_path_generator_class' => null, 's3' => [ /* @@ -37,4 +42,18 @@ return [ */ 'domain' => env('AWS_S3_URL'), ], + + 'remote' => [ + /** + * Any extra headers that should be included when uploading media to + * a remote disk. Even though supported headers may vary between + * different drivers, a sensible default has been provided. + * + * Supported by S3: CacheControl, Expires, StorageClass, + * ServerSideEncryption, Metadata, ACL, ContentEncoding + */ + 'extra_headers' => [ + 'CacheControl' => 'max-age=604800', + ] + ], ]; From 90d6dafd61190ff9e1a19c992f3f75ca78edd3c9 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 14:39:34 +0100 Subject: [PATCH 11/16] Update dependencies --- composer.lock | 174 +++++++++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/composer.lock b/composer.lock index 34e7aa4d..d88dde5d 100644 --- a/composer.lock +++ b/composer.lock @@ -58,16 +58,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.19.12", + "version": "3.19.13", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "5d5697c7bc9ab22ce718afb51e5496d0c5cb8778" + "reference": "57b0efed8fcf5d8c854bc1c26cf4a685af9108d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5d5697c7bc9ab22ce718afb51e5496d0c5cb8778", - "reference": "5d5697c7bc9ab22ce718afb51e5496d0c5cb8778", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/57b0efed8fcf5d8c854bc1c26cf4a685af9108d9", + "reference": "57b0efed8fcf5d8c854bc1c26cf4a685af9108d9", "shasum": "" }, "require": { @@ -134,7 +134,7 @@ "s3", "sdk" ], - "time": "2016-09-29 21:07:49" + "time": "2016-10-06 21:17:44" }, { "name": "barnabywalters/mf-cleaner", @@ -1532,16 +1532,16 @@ }, { "name": "laravel/framework", - "version": "v5.3.15", + "version": "v5.3.17", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "f034a02f38db77d4b0b3e89942394cae456a627f" + "reference": "67fb3e638eb4d862279f50642101910163d14e61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f034a02f38db77d4b0b3e89942394cae456a627f", - "reference": "f034a02f38db77d4b0b3e89942394cae456a627f", + "url": "https://api.github.com/repos/laravel/framework/zipball/67fb3e638eb4d862279f50642101910163d14e61", + "reference": "67fb3e638eb4d862279f50642101910163d14e61", "shasum": "" }, "require": { @@ -1656,7 +1656,7 @@ "framework", "laravel" ], - "time": "2016-09-29 22:13:17" + "time": "2016-10-06 18:06:32" }, { "name": "lcobucci/jwt", @@ -2891,16 +2891,16 @@ }, { "name": "spatie/laravel-medialibrary", - "version": "4.9.1", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "bb8786724f87c2d187897809849b7dc79a84a4d9" + "reference": "8799c17ca99c49718d7effe49de06b55117e8662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/bb8786724f87c2d187897809849b7dc79a84a4d9", - "reference": "bb8786724f87c2d187897809849b7dc79a84a4d9", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/8799c17ca99c49718d7effe49de06b55117e8662", + "reference": "8799c17ca99c49718d7effe49de06b55117e8662", "shasum": "" }, "require": { @@ -2953,7 +2953,7 @@ "media", "spatie" ], - "time": "2016-09-23 11:54:31" + "time": "2016-10-06 05:42:25" }, { "name": "spatie/pdf-to-image", @@ -3007,24 +3007,24 @@ }, { "name": "spatie/string", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/spatie/string.git", - "reference": "1843189c711be4dcf62b655824f2f17120c2dc7d" + "reference": "42b433803942494ee96dabd8f763f5b455e8de1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/string/zipball/1843189c711be4dcf62b655824f2f17120c2dc7d", - "reference": "1843189c711be4dcf62b655824f2f17120c2dc7d", + "url": "https://api.github.com/repos/spatie/string/zipball/42b433803942494ee96dabd8f763f5b455e8de1a", + "reference": "42b433803942494ee96dabd8f763f5b455e8de1a", "shasum": "" }, "require": { "anahkiasen/underscore-php": "^2.0", - "php": ">=5.5.0" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "4.*", + "phpunit/phpunit": "5.*", "scrutinizer/ocular": "~1.1" }, "type": "library", @@ -3056,7 +3056,7 @@ "spatie", "string" ], - "time": "2015-11-02 13:00:37" + "time": "2016-10-04 15:31:55" }, { "name": "swiftmailer/swiftmailer", @@ -3113,20 +3113,21 @@ }, { "name": "symfony/console", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563" + "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8ea494c34f0f772c3954b5fbe00bffc5a435e563", - "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563", + "url": "https://api.github.com/repos/symfony/console/zipball/6cb0872fb57b38b3b09ff213c21ed693956b9eb0", + "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0", "shasum": "" }, "require": { "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -3169,20 +3170,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-08-19 06:48:39" + "time": "2016-09-28 00:11:12" }, { "name": "symfony/debug", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11" + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/34f6ac18c2974ca5fce68adf419ee7d15def6f11", - "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11", + "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", "shasum": "" }, "require": { @@ -3226,11 +3227,11 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-08-23 13:39:15" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/event-dispatcher", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -3290,16 +3291,16 @@ }, { "name": "symfony/finder", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577" + "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e568ef1784f447a0e54dcb6f6de30b9747b0f577", - "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577", + "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", + "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f", "shasum": "" }, "require": { @@ -3335,20 +3336,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-08-26 12:04:02" + "time": "2016-09-28 00:11:12" }, { "name": "symfony/http-foundation", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4" + "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/63592e00fd90632b57ee50220a1ddb29b6bf3bb4", - "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5114f1becca9f29e3af94374f1689c83c1aa3d97", + "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97", "shasum": "" }, "require": { @@ -3388,20 +3389,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2016-08-22 12:11:19" + "time": "2016-09-21 20:55:10" }, { "name": "symfony/http-kernel", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3" + "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aeda215d6b01f119508c090d2a09ebb5b0bc61f3", - "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dc339d6eebadfa6e39c52868b4d4a715eff13c69", + "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69", "shasum": "" }, "require": { @@ -3470,7 +3471,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2016-09-03 15:28:24" + "time": "2016-10-03 19:01:06" }, { "name": "symfony/polyfill-mbstring", @@ -3641,16 +3642,16 @@ }, { "name": "symfony/process", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e64e93041c80e77197ace5ab9385dedb5a143697" + "reference": "66de154ae86b1a07001da9fbffd620206e4faf94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e64e93041c80e77197ace5ab9385dedb5a143697", - "reference": "e64e93041c80e77197ace5ab9385dedb5a143697", + "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94", + "reference": "66de154ae86b1a07001da9fbffd620206e4faf94", "shasum": "" }, "require": { @@ -3686,11 +3687,11 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-08-16 14:58:24" + "time": "2016-09-29 14:13:09" }, { "name": "symfony/routing", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", @@ -3765,16 +3766,16 @@ }, { "name": "symfony/translation", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a35edc277513c9bc0f063ca174c36b346f974528" + "reference": "93013a18d272e59dab8e67f583155b78c68947eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a35edc277513c9bc0f063ca174c36b346f974528", - "reference": "a35edc277513c9bc0f063ca174c36b346f974528", + "url": "https://api.github.com/repos/symfony/translation/zipball/93013a18d272e59dab8e67f583155b78c68947eb", + "reference": "93013a18d272e59dab8e67f583155b78c68947eb", "shasum": "" }, "require": { @@ -3825,20 +3826,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2016-08-05 08:37:39" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/var-dumper", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "62ee73706c421654a4c840028954510277f7dfc8" + "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/62ee73706c421654a4c840028954510277f7dfc8", - "reference": "62ee73706c421654a4c840028954510277f7dfc8", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/70bfe927b86ba9999aeebd829715b0bb2cd39a10", + "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10", "shasum": "" }, "require": { @@ -3888,7 +3889,7 @@ "debug", "dump" ], - "time": "2016-08-31 09:05:42" + "time": "2016-09-29 14:13:09" }, { "name": "themattharris/tmhoauth", @@ -4851,16 +4852,16 @@ }, { "name": "phpunit/phpunit", - "version": "5.5.6", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "146e0fe0bb7f44d1cefade0c93e86fe0b206dd79" + "reference": "a7f2db56518e50ab92f28f739810dfad2f223b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/146e0fe0bb7f44d1cefade0c93e86fe0b206dd79", - "reference": "146e0fe0bb7f44d1cefade0c93e86fe0b206dd79", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a7f2db56518e50ab92f28f739810dfad2f223b6b", + "reference": "a7f2db56518e50ab92f28f739810dfad2f223b6b", "shasum": "" }, "require": { @@ -4894,7 +4895,6 @@ "ext-pdo": "*" }, "suggest": { - "ext-tidy": "*", "ext-xdebug": "*", "phpunit/php-invoker": "~1.1" }, @@ -4904,7 +4904,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.5.x-dev" + "dev-master": "5.6.x-dev" } }, "autoload": { @@ -4930,20 +4930,20 @@ "testing", "xunit" ], - "time": "2016-10-03 07:48:45" + "time": "2016-10-06 15:20:39" }, { "name": "phpunit/phpunit-mock-objects", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "7462c19bdb9814f6e6bdeb5cad3eb3ce72c6e0da" + "reference": "03500345483e1e17b52e2e4d34a89c9408ab2902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/7462c19bdb9814f6e6bdeb5cad3eb3ce72c6e0da", - "reference": "7462c19bdb9814f6e6bdeb5cad3eb3ce72c6e0da", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/03500345483e1e17b52e2e4d34a89c9408ab2902", + "reference": "03500345483e1e17b52e2e4d34a89c9408ab2902", "shasum": "" }, "require": { @@ -4989,7 +4989,7 @@ "mock", "xunit" ], - "time": "2016-09-27 03:17:40" + "time": "2016-10-04 11:03:26" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5506,16 +5506,16 @@ }, { "name": "symfony/css-selector", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "2851e1932d77ce727776154d659b232d061e816a" + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a", - "reference": "2851e1932d77ce727776154d659b232d061e816a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ca809c64072e0fe61c1c7fb3c76cdc32265042ac", + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac", "shasum": "" }, "require": { @@ -5555,11 +5555,11 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-06-29 05:41:56" + "time": "2016-09-06 11:02:40" }, { "name": "symfony/dom-crawler", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", @@ -5615,16 +5615,16 @@ }, { "name": "symfony/yaml", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "f291ed25eb1435bddbe8a96caaef16469c2a092d" + "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f291ed25eb1435bddbe8a96caaef16469c2a092d", - "reference": "f291ed25eb1435bddbe8a96caaef16469c2a092d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/368b9738d4033c8b93454cb0dbd45d305135a6d3", + "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3", "shasum": "" }, "require": { @@ -5660,7 +5660,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-09-02 02:12:52" + "time": "2016-09-25 08:27:07" }, { "name": "webmozart/assert", From 3973fb3e2037ee476a76a21fb830f248dd2e8a70 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 15:22:21 +0100 Subject: [PATCH 12/16] Allow cordinated to be sent as a geo: URI --- resources/assets/js/newnote.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/resources/assets/js/newnote.js b/resources/assets/js/newnote.js index 1aaa8b38..0d6aa404 100644 --- a/resources/assets/js/newnote.js +++ b/resources/assets/js/newnote.js @@ -71,24 +71,34 @@ function addMap(latitude, longitude, places) { //when the location marker is dragged, if the new place form elements exist //update the lat/lng values marker.on('dragend', function () { + var mapMarkerLatitude = getLatitudeFromMapboxMarker(marker.getLatLng()); + var mapMarkerLongitude = getLongitudeFromMapboxMarker(marker.getLatLng()); + var coordsOption = document.querySelector('#option-coords'); + if (coordsOption != null) { + coordsOption.value = 'geo:' + mapMarkerLatitude + ',' + mapMarkerLongitude; + } var placeFormLatitude = document.querySelector('#place-latitude'); if (placeFormLatitude !== null) { - placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng()); + placeFormLatitude.value = mapMarkerLatitude; } var placeFormLongitude = document.querySelector('#place-longitude'); if (placeFormLongitude !== null) { - placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng()); + placeFormLongitude.value = mapMarkerLongitude; } }); //create the From 00ec89595b9b1a0d41e14c96f7b1236b196efb1b Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 15:24:05 +0100 Subject: [PATCH 13/16] gulp derived assets from newnote.js --- public/assets/js/maps/newnote.js.map | 2 +- public/assets/js/newnote.js | 2 +- public/assets/js/newnote.js.br | Bin 1609 -> 1675 bytes public/assets/js/newnote.js.gz | Bin 1819 -> 1902 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/js/maps/newnote.js.map b/public/assets/js/maps/newnote.js.map index 89292c92..eb379534 100644 --- a/public/assets/js/maps/newnote.js.map +++ b/public/assets/js/maps/newnote.js.map @@ -1 +1 @@ -{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","placeFormLatitude","querySelector","value","getLatitudeFromMapboxMarker","getLatLng","placeFormLongitude","getLongitudeFromMapboxMarker","selectEl","noLocation","noLocText","createTextNode","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","split","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson.latitude, placeJson.longitude], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n map.panTo([placeJson.latitude, placeJson.longitude]);\n var newName = 'Name: ' + placeJson.name;\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson.latitude, placeJson.longitude]);\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["newnote.js"],"names":["getLocation","navigator","geolocation","getCurrentPosition","position","addPlacesMap","coords","latitude","longitude","accuracy","uncertainty","fetch","credentials","method","then","response","json","j","error","alertify","reset","error_description","places","length","i","latlng","parseLocation","location","name","uri","push","addMap","catch","err","console","arguments","form","button","parentNode","div","document","createElement","setAttribute","appendChild","L","mapbox","accessToken","map","setView","addLayer","tileLayer","detectRetina","marker","draggable","addTo","on","mapMarkerLatitude","getLatitudeFromMapboxMarker","getLatLng","mapMarkerLongitude","getLongitudeFromMapboxMarker","coordsOption","querySelector","value","placeFormLatitude","placeFormLongitude","selectEl","noLocation","createTextNode","geoLocation","insertBefore","forEach","item","option","text","dataset","placeMarker","icon","marker-size","marker-symbol","marker-color","bindPopup","closeButton","panTo","selectPlace","addEventListener","placeLat","selectedIndex","placeLon","newLocButton","nameLabel","classList","add","nameEl","descLabel","descEl","latLabel","latEl","lonLabel","lonEl","placeSubmit","formData","FormData","append","body","placeJson","Error","removeChild","labels","querySelectorAll","removeLayer","newOption","newPlaceMarker","newName","placeError","point","re","resultArray","exec","split","selected","replace","disabled"],"mappings":"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","file":"newnote.js","sourcesContent":["/* global L, alertify */\nif ('geolocation' in navigator) {\n var button = document.querySelector('#locate');\n if (button.addEventListener) {\n //if we have javascript, event listeners and geolocation, make the locate\n //button clickable and add event\n button.disabled = false;\n button.addEventListener('click', getLocation);\n }\n}\n\nfunction getLocation() {\n navigator.geolocation.getCurrentPosition(function (position) {\n //the locate button has been clicked so add the places/map\n addPlacesMap(position.coords.latitude, position.coords.longitude, position.coords.accuracy);\n });\n}\n\nfunction addPlacesMap(latitude, longitude, uncertainty) {\n //get the nearby places\n fetch('/places/near/' + latitude + '/' + longitude + '?u=' + uncertainty, {\n credentials: 'same-origin',\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (j) {\n if (j.error == true) {\n alertify.reset();\n alertify.error(j.error_description);\n }\n if (j.places.length > 0) {\n var i;\n var places = [];\n for (i = 0; i < j.places.length; ++i) {\n var latlng = parseLocation(j.places[i].location);\n var name = j.places[i].name;\n var uri = j.places[i].uri;\n places.push([name, uri, latlng[0], latlng[1]]);\n }\n //add a map with the nearby places\n addMap(latitude, longitude, places);\n } else {\n //add a map with just current location\n addMap(latitude, longitude);\n }\n }).catch(function (err) {\n console.error(err);\n });\n}\n\nfunction addMap(latitude, longitude, places) {\n //make places null if not supplied\n if (arguments.length == 2) {\n places = null;\n }\n var form = button.parentNode;\n var div = document.createElement('div');\n div.setAttribute('id', 'map');\n //add the map div\n form.appendChild(div);\n L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';\n var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')\n .setView([latitude, longitude], 15)\n .addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {\n detectRetina: true\n }));\n //add a marker for the current location\n var marker = L.marker([latitude, longitude], {\n draggable: true\n }).addTo(map);\n //when the location marker is dragged, if the new place form elements exist\n //update the lat/lng values\n marker.on('dragend', function () {\n var mapMarkerLatitude = getLatitudeFromMapboxMarker(marker.getLatLng());\n var mapMarkerLongitude = getLongitudeFromMapboxMarker(marker.getLatLng());\n var coordsOption = document.querySelector('#option-coords');\n if (coordsOption != null) {\n coordsOption.value = 'geo:' + mapMarkerLatitude + ',' + mapMarkerLongitude;\n }\n var placeFormLatitude = document.querySelector('#place-latitude');\n if (placeFormLatitude !== null) {\n placeFormLatitude.value = mapMarkerLatitude;\n }\n var placeFormLongitude = document.querySelector('#place-longitude');\n if (placeFormLongitude !== null) {\n placeFormLongitude.value = mapMarkerLongitude;\n }\n });\n //create the \n places.forEach(function (item) {\n var option = document.createElement('option');\n option.setAttribute('value', item[1]);\n var text = document.createTextNode(item[0]);\n option.appendChild(text);\n option.dataset.latitude = item[2];\n option.dataset.longitude = item[3];\n selectEl.appendChild(option);\n var placeMarker = L.marker([item[2], item[3]], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n var name = 'Name: ' + item[0];\n placeMarker.bindPopup(name, {\n closeButton: true\n });\n placeMarker.on('click', function () {\n map.panTo([item[2], item[3]]);\n selectPlace(item[1]);\n });\n });\n //add an event listener\n selectEl.addEventListener('change', function () {\n if (selectEl.value !== 'no-location') {\n var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;\n var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;\n map.panTo([placeLat, placeLon]);\n }\n });\n }\n //add a button to add a new place\n var newLocButton = document.createElement('button');\n newLocButton.setAttribute('type', 'button');\n newLocButton.setAttribute('id', 'create-new-place');\n newLocButton.appendChild(document.createTextNode('Create New Place?'));\n //the event listener\n newLocButton.addEventListener('click', function() {\n //add the form elements\n var nameLabel = document.createElement('label');\n nameLabel.setAttribute('for', 'place-name');\n nameLabel.classList.add('place-label');\n nameLabel.appendChild(document.createTextNode('Place Name:'));\n var nameEl = document.createElement('input');\n nameEl.setAttribute('placeholder', 'Name');\n nameEl.setAttribute('name', 'place-name');\n nameEl.setAttribute('id', 'place-name');\n nameEl.setAttribute('type', 'text');\n var descLabel = document.createElement('label');\n descLabel.setAttribute('for', 'place-description');\n descLabel.classList.add('place-label');\n descLabel.appendChild(document.createTextNode('Place Description:'));\n var descEl = document.createElement('input');\n descEl.setAttribute('placeholder', 'Description');\n descEl.setAttribute('name', 'place-description');\n descEl.setAttribute('id', 'place-description');\n descEl.setAttribute('type', 'text');\n var latLabel = document.createElement('label');\n latLabel.setAttribute('for', 'place-latitude');\n latLabel.classList.add('place-label');\n latLabel.appendChild(document.createTextNode('Place Latitude:'));\n var latEl = document.createElement('input');\n latEl.setAttribute('name', 'place-latitude');\n latEl.setAttribute('id', 'place-latitude');\n latEl.setAttribute('type', 'text');\n latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());\n var lonLabel = document.createElement('label');\n lonLabel.setAttribute('for', 'place-longitude');\n lonLabel.classList.add('place-label');\n lonLabel.appendChild(document.createTextNode('Place Longitude:'));\n var lonEl = document.createElement('input');\n lonEl.setAttribute('name', 'place-longitude');\n lonEl.setAttribute('id', 'place-longitude');\n lonEl.setAttribute('type', 'text');\n lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());\n var placeSubmit = document.createElement('button');\n placeSubmit.setAttribute('id', 'place-submit');\n placeSubmit.setAttribute('value', 'Submit New Place');\n placeSubmit.setAttribute('name', 'place-submit');\n placeSubmit.setAttribute('type', 'button');\n placeSubmit.appendChild(document.createTextNode('Submit New Place'));\n form.appendChild(nameLabel);\n form.appendChild(nameEl);\n form.appendChild(descLabel);\n form.appendChild(descEl);\n form.appendChild(latLabel);\n form.appendChild(latEl);\n form.appendChild(lonLabel);\n form.appendChild(lonEl);\n form.appendChild(placeSubmit);\n //the event listener for the new place form\n placeSubmit.addEventListener('click', function () {\n //create the form data to send\n var formData = new FormData();\n formData.append('place-name', document.querySelector('#place-name').value);\n formData.append('place-description', document.querySelector('#place-description').value);\n formData.append('place-latitude', document.querySelector('#place-latitude').value);\n formData.append('place-longitude', document.querySelector('#place-longitude').value);\n //post the new place\n fetch('/places/new', {\n //send cookies with the request\n credentials: 'same-origin',\n method: 'post',\n body: formData\n })\n .then(function (response) {\n return response.json();\n })\n .then(function (placeJson) {\n if (placeJson.error == true) {\n throw new Error(placeJson.error_description);\n }\n //remove un-needed form elements\n form.removeChild(document.querySelector('#place-name'));\n form.removeChild(document.querySelector('#place-description'));\n form.removeChild(document.querySelector('#place-latitude'));\n form.removeChild(document.querySelector('#place-longitude'));\n var labels = document.querySelectorAll('.place-label');\n for (var i = 0; i < labels.length; ++i) {\n form.removeChild(labels[i]);\n }\n form.removeChild(document.querySelector('#place-submit'));\n form.removeChild(document.querySelector('#create-new-place'));\n //remove location marker\n map.removeLayer(marker);\n //add place marker\n var newOption = document.createElement('option');\n newOption.setAttribute('value', placeJson.uri);\n newOption.appendChild(document.createTextNode(placeJson.name));\n newOption.dataset.latitude = placeJson.latitude;\n newOption.dataset.longitude = placeJson.longitude;\n selectEl.appendChild(newOption);\n var newPlaceMarker = L.marker([placeJson.latitude, placeJson.longitude], {\n icon: L.mapbox.marker.icon({\n 'marker-size': 'large',\n 'marker-symbol': 'building',\n 'marker-color': '#fa0'\n })\n }).addTo(map);\n map.panTo([placeJson.latitude, placeJson.longitude]);\n var newName = 'Name: ' + placeJson.name;\n newPlaceMarker.bindPopup(newName, {\n closeButton: true\n });\n newPlaceMarker.on('click', function () {\n map.panTo([placeJson.latitude, placeJson.longitude]);\n selectPlace(placeJson.uri);\n });\n //make selected\n selectPlace(placeJson.uri);\n }).catch(function (placeError) {\n alertify.reset();\n alertify.error(placeError);\n });\n });\n });\n form.insertBefore(newLocButton, div);\n}\n\nfunction parseLocation(point) {\n var re = /\\((.*)\\)/;\n var resultArray = re.exec(point);\n var location = resultArray[1].split(' ');\n\n return [location[1], location[0]];\n}\n\nfunction selectPlace(uri) {\n document.querySelector('select [value=\"' + uri + '\"]').selected = true;\n}\n\nfunction getLatitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[0].replace(',', '');\n}\n\nfunction getLongitudeFromMapboxMarker(latlng) {\n var resultArray = /\\((.*)\\)/.exec(latlng);\n var location = resultArray[1].split(' ');\n\n return location[1];\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/assets/js/newnote.js b/public/assets/js/newnote.js index e50133a5..a64104bb 100644 --- a/public/assets/js/newnote.js +++ b/public/assets/js/newnote.js @@ -1,2 +1,2 @@ -function getLocation(){navigator.geolocation.getCurrentPosition(function(e){addPlacesMap(e.coords.latitude,e.coords.longitude,e.coords.accuracy)})}function addPlacesMap(e,t,a){fetch("/places/near/"+e+"/"+t+"?u="+a,{credentials:"same-origin",method:"get"}).then(function(e){return e.json()}).then(function(a){if(1==a.error&&(alertify.reset(),alertify.error(a.error_description)),a.places.length>0){var n,r=[];for(n=0;n0){var n,r=[];for(n=0;nr7`_ zPN{u1UAJmx%BKW_m{l^`6Dsbc_b)S@{ky*F$ip|ARn&RT)ugFghYP*BDzkL@$-Hk_ zeV1lg`B`k}&vISFBlg;$?|6aTE%#o-r7riZ8P}}!@T#1AN&4umu15)fMK}|$6t_!! z=2PB#@wd6ruT#P~A~%hWJ&BH9%<|G^X0>AcuBA!8%wlKh@}B!HVYuS^ge5YX5&>^= znbmxlUj*{6v;4%JJ-1nI)^?+b>eCuZceCjBtvo-U%j4+e=?jz^H~l!py(nv%{MWUwc~Ivy#!RJD+=Z!~WCd`}WG{McKs5*yaDRwv#%0{rkXVdr3m=P6S$fL}ctnfJ@GcAx+@@MA1OWb?q(<@psH@D1s=VuuE zVD|jEUOQDdd%Pz{9<)-QeVJMHkKKb~EupEp3CitX&%Iu;Xx=TiFous-N&Hf4r#{hf zU2yq>%i&L+#|{a9nR?4zSa51W?( zaZ1_G%|k_|>o}g%`03dma_ax3eYr|&v}N?47kJFrqZ;ZlttitkN_W@moTV?4?moK1*kd zB>9}%vh2(f|1)hKA`EiJx8K)yea5*kVa~FUdk^G3*qaOPIjFs|G4_J_r|YL&7wTH= z_?PtMw_;iV&lR`H&G*|x{TiDxh_3x8&^emD1_f&WOJ<%rlqZ_@}E38bM?f=|MdqL0h#i@a}#P__~S$x$^p))-8 zw5!FP6aGwA0l2f{KHNEQ9Y+KIk^&vmXrsVu_^SCwb+Ooga ztE6tSv=+Hv68t8vl*N}EwV-gCSc&kYuR9Yf3_f@`Du{V}TRO3SmM3FR!;^O|Rrl0- zpZWbr6Y%>y!;!~+>S2y@-h=Bqc7EvFpJJQC@k(sx_gT!`yPok@Zf-yET6d@a-rJVv z=B$`=w>iG}gSPS6y{y|EXR`i(q4-2s<9l!4y_z(C$9Y%({mbB;X%qG(ZF6j&nv}hD z(eAewwk3VK@N|9f4$aE!JLWcwRZ9Ttj$Q6lE%Tamm z5!TJd&*WxdUh8`J>=IcszWIEblKiWc8JF8Gnh>qtv}{Sgb?j$hmzfW8e|rD>u*uS;P_?vm-Y^TIc$yH^|D-OO;a}0QYZ|lhi zQ#CarF71`L)m8GjOKqz}QEUX^ZFuDK}1?vdf^{(P^g za>lM@>YMbPt!Ers8@BQJjFR(T3%Qp+Zj9to$z~FhH~z73%HKuyzY;HWE=||c-oKZx z+opeuUh{W{sKA2df<+TmUrbKjDYZ9L`43OjTn)EdcPwpR)wa!_p2v6piJI||Ok0;^ zPL1#0ZtB0)Hk|k*X_zcwz)&^ezyFgg$>*6@5)xfE{(F4=@dK&a=~E0nZd$j<2}Zo; zaZoXOu}Y4=O3HlZZDvk`dW{zazWoOu{JrhYDxXyJ;_TCn(#gTX$7Gf=G4tx}Wd;Bq CLoaXu literal 1609 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 literal 1819 zcmb2|=3oE;Cg#17<@Jxvg#OykcXE^}Y|8xoD>AXFzwGkrO{_}pLe~@yG%Ps%a{2o@ zXNN^DYdCIS-{#fau9-E(?Ua-=H?7PA8a6eZ{?&A4Pm6Hwksysj zUK_MyV+49yb275RFYq5~$nBAG{Iw`=W(8-HU59JYyi^<3?;H22kH4Rqgi?Xf;uq?G}3u%hFb=5k(r1t1p55vi4=lO_P_@|}|e=Td6-E;hu za%os$u=Dh-vIWcLE!jOKP;ImGPA9F1d%~t}K0Z;VU$tg>PBXT(u5S82$G+0Zd`6?} z_qIHTYX-Nvqw_eo@GNEfy>F}AgBXtv4Gv}1^&F{MPeWN( z{U}gPnJ95;nI_+vufDtgELgYy`t$`xL9xpUejok$Tz|`hr}ndUPI@$b{{D=*zdt9= zsQYnr)ztqQ+M$0+{(aQn9{)%AY5f1>!q5NSU)B$=pR9jw*;Vz``(x(CPwqS)n9ls) zdyaC?o(o=g&+QDHadqjXq@^yN8LxlzGp(B}Y4E#c?*GOO*oV%GPnE?lD!-rZ z^Y=xFuCQ0_ueWobZHZ$0rgLjE`!}0MdCk)KM)EPSTaEkLJ|#46Rc*Dr8!Gd$>&OD7 z*xW>=fG4^Pm-hYli0mj@sOa)?@_`h=S%2j6V$P}@F*XmXDlu^Xa%$lMo%ftB(FRUe z6W*|IxWG1Pj^vced6m(tG`sAd9b~(ZswcPCR!;oEvB!rWHa}!|7qDW%bKT`NeYgYDuUsO7-S8aZ^AneW;u`W^NqP2RvjJ|Yi5mn26w14iENAn%@ zI-aC;PAs`}yJ(&2spq`21haO^pW1qb%{?yqgYl+??5!t!+~htB>A9ucX|oP|8MES1 zcC2Y=(haNWyW05gJbR%vLovKw@3R|`KlNO%Q*Dv3u*7xC>+3D!l^6`zE zf&-%i5&|A}tycYF(&c(7x@Lz&QGCH}U#0m^U*@saujATL`6(!EM(@I1Hoo898F%O9 zZL@YZ-m&jbW8>@9oY$uBU2D*nH^=n&InMQOTn>KiyqzesE?m`F^xMMUc2zvrm5;yP z-SX&8a!;G)rzN~>DnDgZjxjgxkEnXF;XeCaF_+u7r#vaWdn=1q{r1JRY;51VkLh4##`>{xDRo0t{S!L70qr@&${k-uzz5neTM;=8tkwTa05#5Xv3Z6?SO?E$Fvt#K( zQ@Q6;>{~APf172Ub$0HRSsGjAzwR+LZ0ptt5h+Y)$uCsDuXO19zjFs%=Hz@7*i>%b z+xPO3-?DDTZ%*djjIWYbG?<6k{O}XG|HEq4Y{pg1zlE|N#hCLylKT4XNg&`@iOe5cCGuH z_Vp?ptY#t~0ur1WIapmaGMpSmxx9K_GA>_vsKf5!vOgWsc8u#+Mn9f+>BsFu%`d(s z9cB{Ut827O^9Y~j8?(NSZ44GGPKCS1gm=7|viC~-PPOkZmxb)w)^fJAu$u9|UpQ-7 z?9|-H4Y#IVyuR41SN^x#p^0**T$ZwV)v_Mc>Q|kz>BN$ZcS^;NXLkAbEN|WA7VyUK z&%P;~p3TvmW_>?ym)$pfwB>!n+>h$~OU~!p@^?Iay4xi6mjB%{gC`$EH7aywH6Bm8 zy=T#xJK39=um4%ZVgJeRjh#{Po2@(k%h*Wu@;l1dNqyhN_w4We_z8C}XP#JickPPm z^r|McM-P@p%2Z}{o$xkJ(yu7{btSitqkp^T`&S#8?(Vpscz#jhvjvPdO?`f!?Yew_ zlFDD^zrFK}=G_#@Qz&PTKlZV3&b6r`W{S!&?RC<#HAReD&wo;{zPi`qMb!eGd!II3 zJQMGJB05=Ozw5j`uDh2Pw5gPPDQ`cVe6M_7vWUB_d|`={=9)RPTOQ^+{eET;|KGP- z3F7yycqq$V8HX0RRn4j#K~u From 6cd5672dabe7806ddfc50e2d1a3d26803598ec07 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 15:27:48 +0100 Subject: [PATCH 14/16] Use location instead of place, given we support co-ordinates as well --- app/Services/NoteService.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index 53edee74..b2258dbf 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -22,14 +22,14 @@ class NoteService if ($request->header('Content-Type') == 'application/json') { $content = $request->input('properties.content')[0]; $inReplyTo = $request->input('properties.in-reply-to')[0]; - $place = $request->input('properties.location'); - if (is_array($place)) { - $place = $place[0]; + $location = $request->input('properties.location'); + if (is_array($location)) { + $location = $location[0]; } } else { $content = $request->input('content'); $inReplyTo = $request->input('in-reply-to'); - $place = $request->input('location'); + $location = $request->input('location'); } $note = Note::create( @@ -40,19 +40,19 @@ class NoteService ] ); - if ($place !== null && $place !== 'no-location') { - if (substr($place, 0, strlen(config('app.url'))) == config('app.url')) { + if ($location !== null && $location !== 'no-location') { + if (substr($location, 0, strlen(config('app.url'))) == config('app.url')) { //uri of form http://host/places/slug, we want slug so chop off start //that’s the app’s url plus `/places/` - $slug = mb_substr($place, mb_strlen(config('app.url')) + 8); - $placeModel = Place::where('slug', '=', $slug)->first(); - $note->place()->associate($placeModel); + $slug = mb_substr($location, mb_strlen(config('app.url')) + 8); + $place = Place::where('slug', '=', $slug)->first(); + $note->place()->associate($place); $note->save(); } - if (substr($place, 0, 4) == 'geo:') { + if (substr($location, 0, 4) == 'geo:') { preg_match_all( '/([0-9\.\-]+)/', - $place, + $location, $matches ); $note->location = $matches[0][0] . ', ' . $matches[0][1]; From 48e009743197474945d6ac31a9144396d76459b4 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 15:29:43 +0100 Subject: [PATCH 15/16] Add changes to the log --- changelog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/changelog.md b/changelog.md index 395ce93b..57e2fdbb 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # Changelog +## Version {next} + - Fix image upload for notes + - Allow co-ordinates to be sent by the client as a geo: URI + - Allow endpoint to process geo: URIs for location + ## Version 0.0.13.9 (2016-10-06) - Hotfix, add missing semi-colon From 998c0e24837edd5cf7370e4c2c72575256bdeabb Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 7 Oct 2016 15:34:16 +0100 Subject: [PATCH 16/16] Bump version number --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 57e2fdbb..d28ef0c0 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ # Changelog -## Version {next} +## Version 0.0.14 (2016-10-07) - Fix image upload for notes - Allow co-ordinates to be sent by the client as a geo: URI - Allow endpoint to process geo: URIs for location