Squashed commit of the following:

commit 19ec350ca9c3a2ec9da6ee3823f3b0a09efe3eaa
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:07:42 2016 +0000

    Update changelog

commit 73428d3d94c659e5e4431b6740ba10dc2a609e44
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:03:37 2016 +0000

    output of gulp compress

commit 4bb8038e787e35b5d38be9d63600b10bb9d75a07
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:03:11 2016 +0000

    import Guzzle’s ClientException namespace

commit 4bcb676bb95274da2422023fefa88b8d246b7f97
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:02:24 2016 +0000

    Update manual testing token

commit d902de76f00b4f3bba94ce6528f87e43f6c113f9
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:01:52 2016 +0000

    output of gulp js-assets

commit 0a495956e4f540aae0d1515229dd29c30c76fd64
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 22 16:01:27 2016 +0000

    Update new note page to use Mapbox GL JS

commit bf22004256179c9487c668eb77785a9bc90227bc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Nov 21 18:47:59 2016 +0000

    output of gulp js-assets

commit 22ed61cb853d98a4638754d44f042841e2b4495c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Nov 21 18:47:06 2016 +0000

    Attempting to use mapbox gl on the newnote page

commit 47fd891f1b3f0da59d10e937f7ed11f3b603c4af
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:21:53 2016 +0000

    gulp derived assets

commit 19e83f33b1c8c7a90a74d0ad17a6cace8761bcef
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:21:16 2016 +0000

    Move .map styles into mapbox.scss

commit 3d848d59126032671907a1e354cf121441d9a6e3
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:12:51 2016 +0000

    gulp derived assets

commit 9e51e8690ac8b782bc56663e7ec682837b27d4a1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:12:32 2016 +0000

    Link to mapbox-gl files

commit 296b5fd7770f2a1c5c26ed4efedd99a7a0ad0bed
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:12:08 2016 +0000

    Use mapbox gl to add maps to notes

commit bd031df6e969b7af741730acabe41465f68bd3a1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Nov 19 17:11:27 2016 +0000

    Update sass to style mapbox gl maps

commit a7cd5e6eaa9510b5c9de672b6d5ed6917dabd7c6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 16:19:45 2016 +0000

    output of gulp compress

commit fe63c7ed394d62cd0e47a9ef718d9629d8643e71
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 16:18:47 2016 +0000

    output of gulp sass

commit 15ac4012681635753a4b1f52d81f7f9e24830eb4
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 16:18:05 2016 +0000

    Add a dividing line between notes and bio on the homepage

commit 5ada66b1a01ae57359145eb757cab65769400f1e
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 16:12:01 2016 +0000

    output of gulp sass

commit 86adf97c3831c3310683a25c2671c7560700de1a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 16:11:33 2016 +0000

    Resize note metadata for spacial flow

commit 3f3fc51ea8df8206d5b13512295ac09827bb2ede
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 15:37:21 2016 +0000

    output of gulp sass

commit df6f7f827641dc4deca621d099357757f760ece4
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 15:36:51 2016 +0000

    Use system UI fonts

commit b71950275ddaf274b26195694a07c1b58f746725
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 15:31:30 2016 +0000

    output of gulp compress

commit 5ff5d73a803b9bcc4e2f314946c1d757dcabae67
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 15:30:12 2016 +0000

    output of gulp js-assets

commit d8ff563569223bddc836ab9f8fc7c43970273b44
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 15:29:27 2016 +0000

    use containing divs in new place section of form

commit 3cbf3083612210cdd7609c930737cf7a698ec024
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 14:39:27 2016 +0000

    gulp sass output

commit 239b742a355a397f5b84377b26b2d7a4254bd50e
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 14:38:52 2016 +0000

    Better spacing of form elements on mobile

commit a20279e3f4216b87ff59ed4e507b6de9e212db9f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 13:41:31 2016 +0000

    Derived assets

commit 86ebd05472498814084e86fb0c2d674633f00096
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 18 13:40:42 2016 +0000

    Use containing divs for flex layout

commit 00e0e6f3f462ca575e92209a86ada67b7f5ff757
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 17 14:38:39 2016 +0000

    Correct scss according to stylelint

commit 6dd8ff4d13c3ab83c6a811501b817c45b89338ce
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 17 14:33:46 2016 +0000

    Get stylelint working

commit 9b9a64defd9335014b46070e2b92a392929f4aa5
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 17 09:48:28 2016 +0000

    Add missing new-line to match style

commit 2521446f32420047d6d5f7372f4f7afc17200a1c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 15 13:16:45 2016 +0000

    Add logging during an error, improve the error message

commit 095507bec225992aac510a2ca852f65c197f0298
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 15 13:15:59 2016 +0000

    Update test token

commit 374ef70fecaedf041f12a57688ed9596e25a2ce6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 15 13:15:16 2016 +0000

    Remove typekit for now

commit f5671ad435732ddb3288a2e02de7631a6acb4183
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 11 16:06:01 2016 +0000

    Better designed new note form

commit f38df507b85502e733fa38e970cd584f7d79bca1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 11 13:28:21 2016 +0000

    More styling, use normal pagination, improve bio

commit 077076d4f92014d488bca5d4dbbab5af913e6cf0
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Nov 11 00:05:56 2016 +0000

    Use an anchor for permalinks, re-word projects page

commit 37c6e862b693c2bfd3a39654a533627e0f73fd1a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 10 23:58:54 2016 +0000

    The resulting CSS files

commit 1a3b6d7064b1b67238ffd3909d6d1ae54a4f78e1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 10 23:31:53 2016 +0000

    Sass for very basic redesign

commit e5d9e9d41b50d7f316fcae9bae75863aa09a7d63
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 10 23:00:35 2016 +0000

    Use app.(s)css

commit 231c5292e68220f588e9d300975bb19dfea20b4f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 10 22:59:50 2016 +0000

    Restructure homepage to show notes, also show bio when on '/', but note '/notes'

commit 11a272b2a3050297dd84105a6c70adc937a0c409
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Thu Nov 10 17:49:30 2016 +0000

    Set my homepage to the stream of notes

commit 2e46ccad4038be64b5007f15dabee0321061fe98
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 8 23:58:11 2016 +0000

    Drop sanitize.css and use normalize.css instead, also fix compress method

commit 8082403d7464a873691fabab07ae4f6116993cdf
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 8 23:48:35 2016 +0000

    Sort out yarn dependencies

commit 8ef7137d160ae8577e42ab1fd19e957aa37cf08b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 8 23:39:49 2016 +0000

    Remove the compiled css

commit 8284cdf838f5222eff87c942f119d6000a1b6fc6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Nov 8 23:16:27 2016 +0000

    Remove sass files
This commit is contained in:
Jonny Barnes 2016-11-22 16:08:02 +00:00
parent edb3c9cd8d
commit bcb01b6438
74 changed files with 1273 additions and 1728 deletions

View file

@ -1,16 +1,49 @@
/* global L */
/* global mapboxgl */
//This code runs on page load and looks for <div class="map">, then adds map
var mapDivs = document.querySelectorAll('.map');
mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';
for (var i = 0; i < mapDivs.length; i++) {
var mapDiv = mapDivs[i];
var latitude = mapDiv.dataset.latitude;
var longitude = mapDiv.dataset.longitude;
L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';
var map = L.mapbox.map(mapDiv, 'jonnybarnes.gnoihnim')
.setView([latitude, longitude], 15)
.addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {
detectRetina: true
}));
L.marker([latitude, longitude]).addTo(map);
map.scrollWheelZoom.disable();
var el = document.createElement('div');
el.classList.add('marker');
var mapMenu = document.createElement('div');
mapMenu.classList.add('map-menu');
var streetsInput = document.createElement('input');
streetsInput.setAttribute('id', 'streets');
streetsInput.setAttribute('type', 'radio');
streetsInput.setAttribute('name', 'toggle');
streetsInput.setAttribute('value', 'streets');
streetsInput.setAttribute('checked', 'checked');
streetsInput.addEventListener('click', function () {
map.setStyle('mapbox://styles/mapbox/streets-v9');
});
var streetsLabel = document.createElement('label');
streetsLabel.setAttribute('for', 'streets');
streetsLabel.appendChild(document.createTextNode('Streets'));
var satelliteInput = document.createElement('input');
satelliteInput.setAttribute('id', 'satellite');
satelliteInput.setAttribute('type', 'radio');
satelliteInput.setAttribute('name', 'toggle');
satelliteInput.setAttribute('value', 'streets');
satelliteInput.addEventListener('click', function () {
map.setStyle('mapbox://styles/mapbox/satellite-v9');
});
var satelliteLabel = document.createElement('label');
satelliteLabel.setAttribute('for', 'satellite');
satelliteLabel.appendChild(document.createTextNode('Satellite'));
mapMenu.appendChild(streetsInput);
mapMenu.appendChild(streetsLabel);
mapMenu.appendChild(satelliteInput);
mapMenu.appendChild(satelliteLabel);
var map = new mapboxgl.Map({
container: mapDiv,
style: 'mapbox://styles/mapbox/streets-v9',
center: [longitude, latitude],
zoom: 15,
scrollZoom: false
});
new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);
mapDiv.appendChild(mapMenu);
}

View file

@ -1,4 +1,4 @@
/* global L, alertify */
/* global mapboxgl, alertify */
if ('geolocation' in navigator) {
var button = document.querySelector('#locate');
if (button.addEventListener) {
@ -53,39 +53,59 @@ function addMap(latitude, longitude, places) {
if (arguments.length == 2) {
places = null;
}
var form = button.parentNode;
var div = document.createElement('div');
div.setAttribute('id', 'map');
// the form has a fieldset element that we are actually targetting
var form = document.querySelector('.note-ui');
var mapDiv = document.createElement('div');
mapDiv.classList.add('map');
//add the map div
form.appendChild(div);
L.mapbox.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiVlpndW1EYyJ9.aP9fxAqLKh7lj0LpFh5k1w';
var map = L.mapbox.map('map', 'jonnybarnes.gnoihnim')
.setView([latitude, longitude], 15)
.addLayer(L.mapbox.tileLayer('jonnybarnes.gnoihnim', {
detectRetina: true
}));
//add a marker for the current location
var marker = L.marker([latitude, longitude], {
draggable: true
}).addTo(map);
//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 = mapMarkerLatitude;
}
var placeFormLongitude = document.querySelector('#place-longitude');
if (placeFormLongitude !== null) {
placeFormLongitude.value = mapMarkerLongitude;
}
form.appendChild(mapDiv);
//set up the mapbox gl map
mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';
var map = new mapboxgl.Map({
container: mapDiv,
style: 'mapbox://styles/mapbox/streets-v9',
center: [longitude, latitude],
zoom: 15
});
//create the current location marker
var el = document.createElement('div');
el.classList.add('marker');
//create the map style menu
var mapMenu = document.createElement('div');
mapMenu.classList.add('map-menu');
var streetsInput = document.createElement('input');
streetsInput.setAttribute('id', 'streets');
streetsInput.setAttribute('type', 'radio');
streetsInput.setAttribute('name', 'toggle');
streetsInput.setAttribute('value', 'streets');
streetsInput.setAttribute('checked', 'checked');
streetsInput.addEventListener('click', function () {
map.setStyle('mapbox://styles/mapbox/streets-v9');
});
var streetsLabel = document.createElement('label');
streetsLabel.setAttribute('for', 'streets');
streetsLabel.appendChild(document.createTextNode('Streets'));
var satelliteInput = document.createElement('input');
satelliteInput.setAttribute('id', 'satellite');
satelliteInput.setAttribute('type', 'radio');
satelliteInput.setAttribute('name', 'toggle');
satelliteInput.setAttribute('value', 'streets');
satelliteInput.addEventListener('click', function () {
map.setStyle('mapbox://styles/mapbox/satellite-v9');
});
var satelliteLabel = document.createElement('label');
satelliteLabel.setAttribute('for', 'satellite');
satelliteLabel.appendChild(document.createTextNode('Satellite'));
mapMenu.appendChild(streetsInput);
mapMenu.appendChild(streetsLabel);
mapMenu.appendChild(satelliteInput);
mapMenu.appendChild(satelliteLabel);
//add the map menu
mapDiv.appendChild(mapMenu);
//add a marker for the current location
new mapboxgl.Marker(el, {offset: [-10, -20]}).setLngLat([longitude, latitude]).addTo(map);
//create containing div for flexbox
var containingDiv = document.createElement('div');
//create the <select> element and give it a no location default
var selectEl = document.createElement('select');
selectEl.setAttribute('name', 'location');
@ -97,9 +117,12 @@ function addMap(latitude, longitude, places) {
geoLocation.setAttribute('selected', 'selected');
geoLocation.setAttribute('id', 'option-coords');
geoLocation.setAttribute('value', 'geo:' + latitude + ',' + longitude);
geoLocation.dataset.latitude = latitude;
geoLocation.dataset.longitude = longitude;
geoLocation.appendChild(document.createTextNode('Send co-ordinates'));
selectEl.appendChild(geoLocation);
form.insertBefore(selectEl, div);
containingDiv.appendChild(selectEl);
form.insertBefore(containingDiv, mapDiv);
if (places !== null) {
//add the places both to the map and <select>
places.forEach(function (item) {
@ -110,19 +133,16 @@ function addMap(latitude, longitude, places) {
option.dataset.latitude = item[2];
option.dataset.longitude = item[3];
selectEl.appendChild(option);
var placeMarker = L.marker([item[2], item[3]], {
icon: L.mapbox.marker.icon({
'marker-size': 'large',
'marker-symbol': 'building',
'marker-color': '#fa0'
})
}).addTo(map);
var name = 'Name: ' + item[0];
placeMarker.bindPopup(name, {
closeButton: true
});
placeMarker.on('click', function () {
map.panTo([item[2], item[3]]);
var placeMarkerIcon = document.createElement('div');
placeMarkerIcon.classList.add('marker');
new mapboxgl.Marker(placeMarkerIcon, {offset: [-10, -20]}).setLngLat([item[3], item[2]]).addTo(map);
placeMarkerIcon.addEventListener('click', function () {
map.flyTo({
center: [
item[3],
item[2]
]
});
selectPlace(item[1]);
});
});
@ -131,7 +151,12 @@ function addMap(latitude, longitude, places) {
if (selectEl.value !== 'no-location') {
var placeLat = selectEl[selectEl.selectedIndex].dataset.latitude;
var placeLon = selectEl[selectEl.selectedIndex].dataset.longitude;
map.panTo([placeLat, placeLon]);
map.flyTo({
center: [
placeLon,
placeLat
]
});
}
});
}
@ -143,6 +168,7 @@ function addMap(latitude, longitude, places) {
//the event listener
newLocButton.addEventListener('click', function() {
//add the form elements
var nameDiv = document.createElement('div');
var nameLabel = document.createElement('label');
nameLabel.setAttribute('for', 'place-name');
nameLabel.classList.add('place-label');
@ -152,6 +178,9 @@ function addMap(latitude, longitude, places) {
nameEl.setAttribute('name', 'place-name');
nameEl.setAttribute('id', 'place-name');
nameEl.setAttribute('type', 'text');
nameDiv.appendChild(nameLabel);
nameDiv.appendChild(nameEl);
var descDiv = document.createElement('div');
var descLabel = document.createElement('label');
descLabel.setAttribute('for', 'place-description');
descLabel.classList.add('place-label');
@ -161,6 +190,9 @@ function addMap(latitude, longitude, places) {
descEl.setAttribute('name', 'place-description');
descEl.setAttribute('id', 'place-description');
descEl.setAttribute('type', 'text');
descDiv.appendChild(descLabel);
descDiv.appendChild(descEl);
var latDiv = document.createElement('div');
var latLabel = document.createElement('label');
latLabel.setAttribute('for', 'place-latitude');
latLabel.classList.add('place-label');
@ -169,7 +201,10 @@ function addMap(latitude, longitude, places) {
latEl.setAttribute('name', 'place-latitude');
latEl.setAttribute('id', 'place-latitude');
latEl.setAttribute('type', 'text');
latEl.value = getLatitudeFromMapboxMarker(marker.getLatLng());
latEl.value = getLatitudeFromMapbox(map.getCenter());
latDiv.appendChild(latLabel);
latDiv.appendChild(latEl);
var lonDiv = document.createElement('div');
var lonLabel = document.createElement('label');
lonLabel.setAttribute('for', 'place-longitude');
lonLabel.classList.add('place-label');
@ -178,21 +213,19 @@ function addMap(latitude, longitude, places) {
lonEl.setAttribute('name', 'place-longitude');
lonEl.setAttribute('id', 'place-longitude');
lonEl.setAttribute('type', 'text');
lonEl.value = getLongitudeFromMapboxMarker(marker.getLatLng());
lonEl.value = getLongitudeFromMapbox(map.getCenter());
lonDiv.appendChild(lonLabel);
lonDiv.appendChild(lonEl);
var placeSubmit = document.createElement('button');
placeSubmit.setAttribute('id', 'place-submit');
placeSubmit.setAttribute('value', 'Submit New Place');
placeSubmit.setAttribute('name', 'place-submit');
placeSubmit.setAttribute('type', 'button');
placeSubmit.appendChild(document.createTextNode('Submit New Place'));
form.appendChild(nameLabel);
form.appendChild(nameEl);
form.appendChild(descLabel);
form.appendChild(descEl);
form.appendChild(latLabel);
form.appendChild(latEl);
form.appendChild(lonLabel);
form.appendChild(lonEl);
form.appendChild(nameDiv);
form.appendChild(descDiv);
form.appendChild(latDiv);
form.appendChild(lonDiv);
form.appendChild(placeSubmit);
//the event listener for the new place form
placeSubmit.addEventListener('click', function () {
@ -217,18 +250,15 @@ function addMap(latitude, longitude, places) {
throw new Error(placeJson.error_description);
}
//remove un-needed form elements
form.removeChild(document.querySelector('#place-name'));
form.removeChild(document.querySelector('#place-description'));
form.removeChild(document.querySelector('#place-latitude'));
form.removeChild(document.querySelector('#place-longitude'));
//iterate through labels and remove parent div elements
var labels = document.querySelectorAll('.place-label');
for (var i = 0; i < labels.length; ++i) {
form.removeChild(labels[i]);
form.removeChild(labels[i].parentNode);
}
form.removeChild(document.querySelector('#place-submit'));
form.removeChild(document.querySelector('#create-new-place'));
//remove location marker
map.removeLayer(marker);
var newPlaceButton = document.querySelector('#create-new-place');
//in order to remove a DOM Node, you need to run removeChild on the parent Node
newPlaceButton.parentNode.removeChild(newPlaceButton);
//add place marker
var newOption = document.createElement('option');
newOption.setAttribute('value', placeJson.uri);
@ -236,20 +266,13 @@ function addMap(latitude, longitude, places) {
newOption.dataset.latitude = placeJson.latitude;
newOption.dataset.longitude = placeJson.longitude;
selectEl.appendChild(newOption);
var newPlaceMarker = L.marker([placeJson.latitude, placeJson.longitude], {
icon: L.mapbox.marker.icon({
'marker-size': 'large',
'marker-symbol': 'building',
'marker-color': '#fa0'
})
}).addTo(map);
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]);
var newPlaceMarkerIcon = document.createElement('div');
newPlaceMarkerIcon.classList.add('marker');
var newPlaceMarker = new mapboxgl.Marker(newPlaceMarkerIcon, {offset: [-10, -20]}).setLngLat([placeJson.longitude, placeJson.latitude]).addTo(map);
map.flyTo({center: [placeJson.longitude, placeJson.latitude]});
newPlaceMarkerIcon.addEventListener('click', function () {
map.flyTo({center: [placeJson.longitude, placeJson.latitude]});
selectPlace(placeJson.uri);
});
//make selected
@ -260,7 +283,7 @@ function addMap(latitude, longitude, places) {
});
});
});
form.insertBefore(newLocButton, div);
containingDiv.appendChild(newLocButton);
}
function parseLocation(point) {
@ -275,16 +298,16 @@ function selectPlace(uri) {
document.querySelector('select [value="' + uri + '"]').selected = true;
}
function getLatitudeFromMapboxMarker(latlng) {
var resultArray = /\((.*)\)/.exec(latlng);
var location = resultArray[1].split(' ');
return location[0].replace(',', '');
}
function getLongitudeFromMapboxMarker(latlng) {
var resultArray = /\((.*)\)/.exec(latlng);
function getLatitudeFromMapbox(lnglat) {
var resultArray = /\((.*)\)/.exec(lnglat);
var location = resultArray[1].split(' ');
return location[1];
}
function getLongitudeFromMapbox(lnglat) {
var resultArray = /\((.*)\)/.exec(lnglat);
var location = resultArray[1].split(' ');
return location[0].replace(',', '');
}

View file

@ -1,2 +1,20 @@
// @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
// app.scss
// https://css-tricks.com/box-sizing/#article-header-id-6
// and https://css-tricks.com/rems-ems/
html {
box-sizing: border-box;
font-size: 24px;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
@import "layout";
@import "styles";
@import "pagination";
@import "note-form";
@import "mapbox";

View file

@ -1,12 +0,0 @@
//colours.scss
body {
color: $base03;
}
header a {
color: $base03;
}
a {
color: $blue;
}

View file

@ -1,46 +0,0 @@
//fonts.scss
body {
text-rendering: optimizeLegibility;
font-feature-settings: "liga";
font-family: $font-stack-body;
font-size: 1.2em;
}
code {
font-family: $font-stack-code;
font-weight: 200;
}
#topheader h1 {
font-family: $font-stack-body;
}
h1 {
font-family: $font-stack-headers;
}
#topheader a {
text-decoration: none;
}
nav {
font-feature-settings: "dlig";
}
article header h1 a {
text-decoration: none;
}
article div a {
text-decoration: none;
}
footer {
font-size: 0.8em;
}
.emoji {
width: auto;
height: 1em;
}

View file

@ -1,54 +0,0 @@
//forms.scss
form {
width: 100%;
}
fieldset {
min-width: 0;
width: 100%;
}
input[type="text"],
input[type="file"],
textarea {
width: 100%;
}
input,
button,
textarea {
-webkit-appearance: none;
-moz-appearance: none;
background-color: $base03;
color: $base3;
border: 1px solid $base3;
border-radius: 4px;
font-size: 1em;
}
textarea {
font-size: 1.2em; //textarea doesnt resize with the rest
}
button:hover {
transition: 0.5s ease-in-out;
background-color: $base3;
color: $base03;
}
button:disabled {
background-color: $base1;
color: $base03;
}
input[type="checkbox"] {
-webkit-appearance: checkbox;
-moz-appearance: checkbox;
}
#photo {
background: inherit;
color: inherit;
border: none;
}

View file

@ -1,9 +0,0 @@
//twitter.scss
.twitter-tweet-rendered {
margin-bottom: 0 !important;
}
.twitter-tweet-rendered + .note {
margin-top: 0;
}

View file

@ -1,42 +0,0 @@
//global.scss
//variables
$font-stack-body: "leitura-news", serif;
$font-stack-headers: "prenton", sans-serif;
$font-stack-code: "Operator Mono", "Monaco", "Inconsolata", monospace;
//solarized variables TERMCOL
$base03: #002b36;//brblack
$base02: #073642;//black
$base01: #586e75;//brgreen
$base00: #657b83;//bryellow
$base0: #839496;//brblue
$base1: #93a1a1;//brcyan
$base2: #eee8d5;//white
$base3: #fdf6e3;//brwhite
$yellow: #b58900;
$orange: #cb4b16;
$red: #dc322f;
$magenta: #d33682;
$violet: #6c71c4;
$blue: #268bd2;
$cyan: #2aa198;
$green: #859900;
//global styles
html {
background: url('/assets/img/escheresque.png');
}
.map {
height: 150px;
}
//layout
@import "layout";
//components
@import "components/fonts";
@import "components/colours";
@import "components/forms";
@import "components/twitter";

View file

@ -1,213 +1,47 @@
//layout.scss
// import.scss
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
body {
max-width: 25em;
margin: 0 auto;
padding-left: 5px;
padding-right: 5px;
}
#topheader {
display: flex;
flex-flow: row;
text-align: center;
}
#topheader a {
padding: 0.5em 1em;
.h-entry {
padding-top: 1rem;
}
#topheader h1 {
font-size: 1em;
margin: 0;
}
nav {
padding-top: 0.5em;
}
.social-list {
padding-left: 2em;
}
// notes
.note {
background-color: $base2;
box-shadow: 0 0 10px 2px $base1;
padding: 0.5em;
margin-top: 1em;
}
.note::after {
content: " ";
display: block;
height: 0;
clear: both;
}
.note a {
word-wrap: break-word;
}
.note .e-content p:first-child {
margin-top: 0;
display: flex;
flex-direction: column;
}
.note-metadata {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
font-size: 0.75em;
}
.social-links {
float: right;
display: flex;
align-items: center;
}
.social-links a {
text-decoration: none;
}
.icon {
width: auto;
height: 1em;
}
.coordinates {
font-size: 60%;
color: $base0;
}
.reply {
margin-left: 2em;
margin-right: 2em;
font-size: 0.8em;
padding: 0.5em;
}
.reply-to {
margin-left: 2em;
margin-right: 2em;
font-size: 0.8em;
padding-top: 2em;
}
.reply-to + .note {
margin-top: 0.3em;
}
.mini-h-card {
border-radius: 2px;
border: 1px solid $base01;
padding: 0 0.2em;
text-decoration: none;
margin-right: 5px;
white-space: nowrap;
.social-links svg {
padding-left: 3px;
}
.mini-h-card img {
height: 1em;
border-radius: 2px;
vertical-align: text-bottom;
display: inline-block;
height: 1rem;
}
.like-photo {
height: 1.26em;
}
.reply .e-content {
margin-top: 0.5em;
padding-left: 0.5em;
}
.notes-subtitle {
font-size: 1em;
}
.note-photo {
width: 100%;
height: auto;
image-orientation: from-image;
}
//articles
article header {
margin-top: 0.5em;
margin-bottom: 0.8em;
}
article h1 {
font-size: 1.2em;
margin-bottom: 0;
}
.post-info {
font-size: 0.8em;
font-style: italic;
margin-top: -0.8em;
}
//contacts
.contact {
position: relative;
}
.contact-links {
list-style-type: none;
}
.contact img {
height: auto;
width: 2em;
position: absolute;
top: 0;
left: 0;
}
.contact-info {
margin-left: 2em;
}
#map {
height: 300px;
}
/* media queries */
@media (min-width: 700px) {
main {
margin-left: 10em;
margin-right: 10em;
}
footer {
margin-left: 13em;
margin-right: 13em;
}
.youtube {
width: 640px;
height: 360px;
}
}
@media (max-width: 699px) {
main {
margin-left: 10px;
margin-right: 10px;
}
article {
word-wrap: break-word;
}
footer {
margin-left: 15px;
margin-right: 15px;
}
.youtube {
width: 100%;
height: auto;
}
body > .h-card {
margin-top: 5px;
border-top: 1px solid grey;
}

26
resources/assets/sass/mapbox.scss vendored Normal file
View file

@ -0,0 +1,26 @@
// mapbox.scss
.map {
margin-top: 4px; //to see underling of note metadata
height: 200px;
}
.marker {
background-image: url(data:image/png;base64,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);
background-size: contain;
width: 20px;
height: 20px;
}
.map-menu {
position: absolute;
top: 0;
left: 0;
background: white;
padding: 0.4rem;
}
.map-menu label {
margin-left: 3px;
margin-right: 3px;
}

39
resources/assets/sass/note-form.scss vendored Normal file
View file

@ -0,0 +1,39 @@
// note-form.scss
.note-ui {
display: flex;
flex-direction: column;
}
@media (min-width: 600px) {
.note-ui > div {
display: flex;
flex-direction: row;
padding: 0.2rem;
}
}
@media (max-width: 599px) {
input[name="photo[]"] {
width: 100%;
}
}
.note-ui label {
width: 5em;
margin-right: 0.5rem;
text-align: right;
}
.note-ui input:not([type=submit]),
.note-ui textarea {
flex: 1;
}
.note-ui textarea {
padding: 0.1rem 0.3rem;
}
#locate {
margin-right: 0.4rem;
}

14
resources/assets/sass/pagination.scss vendored Normal file
View file

@ -0,0 +1,14 @@
// pagination.scss
.pagination {
width: 100%;
height: 3rem;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.pagination li {
list-style-type: none;
}

28
resources/assets/sass/styles.scss vendored Normal file
View file

@ -0,0 +1,28 @@
// styles.scss
body {
// from smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide
font-family: -apple-system, BlinkMacSystemFont,
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
"Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
}
a {
text-decoration: none;
border-bottom: 1px solid;
color: blue;
}
.social-links a {
border-bottom: none;
}
.icon {
height: 1em;
width: auto;
}
code {
word-wrap: break-word;
}

View file

@ -28,3 +28,22 @@ Notes « Jonny Barnes
<script src="/assets/prism/prism.js"></script>
<link rel="stylesheet" href="/assets/prism/prism.css">
@stop
@section('bio')
@if ($homepage === true)
<div class="h-card">
<p>My name is <span class="p-name p-author">Jonny Barnes</span>, and Im from <a href="https://en.wikipedia.org/wiki/Manchester" class="h-adr p-adr"><span class="p-locality">Manchester</span>, <abbr class="p-country-name" title="United Kingdom">UK</abbr></a>.</p>
<p>I am active to varying degrees on several <a href="https://indieweb.org/silo">silos</a>:</p>
<ul class="social-list">
<li>I keep in touch with friends on <a rel="me" href="https://www.facebook.com/jonnybarnes" class="u-url">Facebook</a></li>
<li>I follow people I find interesting on <a rel="me" href="https://twitter.com/jonnybarnes" class="u-url">Twitter</a></li>
<!--<li>I geek out on <a rel="me" href="https://alpha.app.net/jonnybarnes" class="u-url">app.net</a></li>-->
<li>I exist on <a rel="me" href="https://plus.google.com/117317270900655269082" class="u-url">Google+</a></li>
<!--<li>I post photos to <a rel="me" href="http://www.flickr.com/photos/22212133@N03/" class="u-url">flickr</a></li>-->
<li>I push code to <a rel="me" href="https://github.com/jonnybarnes" class="u-url">GitHub</a></li>
<li>I scrobble songs to <a rel="me" href="https://last.fm/user/jonnymbarnes" class="u-url">last.fm</a> that I listen to on <a rel="me" href="https://open.spotify.com/user/jonnybarnes89" class="u-url">Spotify</a></li>
</ul>
<p>My usual online nickname is normally <code class="nickname">jonnybarnes</code> for other services. Heres a <a href="/assets/img/jmb-bw.png" class="u-photo photo">profile pic</a>. I also have a <a class="pgpkey" href="/assets/jonnybarnes-public-key-ecc.asc">PGP key</a>, with <a href="/notes/5g">fingerprint</a>.</p>
</div>
@endif
@stop

View file

@ -4,8 +4,8 @@
<meta charset="UTF-8">
<title>@if (App::environment() == 'local'){!! "[testing] -"!!}@endif @yield('title')</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="/assets/frontend/sanitize.css">
<link rel="stylesheet" href="/assets/css/global.css">
<link rel="stylesheet" href="/assets/frontend/normalize.css">
<link rel="stylesheet" href="/assets/css/app.css">
<link rel="openid.server" href="https://indieauth.com/openid">
<link rel="openid.delegate" href="https://jonnybarnes.uk">
<link rel="authorization_endpoint" href="https://indieauth.com/auth">
@ -30,8 +30,9 @@
<main>
@yield('content')
</main>
<script src="https://use.typekit.net/kmb3cdb.js" integrity="sha384-mpb7gf0UhF7wg6RwyN8wjnUeYN5pG6R35be4pz2PBIh4d1Re99c8huq9fP6i+zYR" crossorigin="anonymous"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>
@section('bio')
@show
@section('scripts')
<!--scripts go here when needed-->
@show

View file

@ -14,7 +14,7 @@ Articles « Jonny Barnes
<h1 class="p-name">
<a href="@if($article['url'] == ''){{ $article['link'] }}@else{{ $article['url'] }}@endif">{{ $article['title'] }}</a>
</h1>
<span class="post-info">Posted <time class="dt-published" title="{{ $article['tooltip_time'] }}" datetime="{{ $article['w3c_time'] }}">{{ $article['human_time'] }}</time> - <a title="Permalink" href="{{ $article['link'] }}"><span class="permalink"><?php echo html_entity_decode('&infin;'); ?></span></a></span>
<span class="post-info">Posted <time class="dt-published" title="{{ $article['tooltip_time'] }}" datetime="{{ $article['w3c_time'] }}">{{ $article['human_time'] }}</time> - <a title="Permalink" href="{{ $article['link'] }}"></a></span>
</header>
<div class="e-content">
{!! $article['main'] !!}

View file

@ -5,7 +5,7 @@
<div id="projects">
<h2>Projects</h2>
<h3><a href="https://shaaaaaaaaaaaaa.com">Shaaaaaaaaaaaaa.com</a></h3>
<p>Im collaborating on a project with Eric Mill (@konklone) to help people test their HTTPS certificates for weak signature algorithms. SHA-1 is the current standard, but is too weak. People should use a form of SHA-2.</p>
<p>I collaborated on a project with Eric Mill (<a href="https://twitter.com/konklone">@konklone</a>) to help people test their HTTPS certificates for weak signature algorithms. SHA-1 is the current standard, but is too weak. People should use a form of SHA-2.</p>
<h3><a href="https://github.com/jonnybarnes/indieweb">IndieWeb tools</a></h3>
<p>This library consists of various useful tools for running an IndieWeb aware site.</p>
<h3><a href="https://github.com/jonnybarnes/webmentions-parser">Webmentions Parser</a></h3>

View file

@ -10,7 +10,7 @@
<h1 class="p-name">
<a href="@if($article->url == ''){{ $article->link }}@else{{ $article->url }}@endif">{{ $article->title }}</a>
</h1>
<span class="post-info">Posted <time class="dt-published" title="{{ $article->tooltip_time }}" datetime="{{ $article->w3c_time }}">{{ $article->human_time }}</time> - <a title="Permalink" href="{{ $article->link }}"><span class="permalink"><?php echo html_entity_decode('&infin;'); ?></span></a></span>
<span class="post-info">Posted <time class="dt-published" title="{{ $article->tooltip_time }}" datetime="{{ $article->w3c_time }}">{{ $article->human_time }}</time> - <a title="Permalink" href="{{ $article->link }}"></a></span>
</header>
<div class="e-content">
{!! $article->main !!}

View file

@ -1,2 +1,2 @@
<link rel="stylesheet" href="https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.css" integrity="sha384-ZDBUvY/seENyR1fE6u4p1oMFfsKVjIlkiB6TrCdXjeZVPlYanREcmZopTV8WFZ0q" crossorigin="anonymous">
<script src="https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.js" integrity="sha384-RIOuxiXOmovmIxeDCaAvWrMaX/XWXpPiRTUIBEjiZt5HQ8orGVqQhlmfno0eoLaX" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/v0.28.0/mapbox-gl.css" integrity="sha384-dCW/5IRoXPf5hkwrejBih/Unwf0nefL7NDk8hFitylhgPyk1YB4K9nwT5thMO2lV" crossorigin="anonymous">
<script src="https://api.mapbox.com/mapbox-gl-js/v0.28.0/mapbox-gl.js" integrity="sha384-Q8pgRmod5Yo3TQg5NSTfk4lNXS6Seqm160e2XA+RXpgGqdGOzX5c+UU6IoohcdWZ" crossorigin="anonymous"></script>

View file

@ -2,14 +2,66 @@
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset class="note-ui">
<legend>New Note</legend>
<label for="in-reply-to" accesskey="r">Reply-to: </label><input type="text" name="in-reply-to" id="in-reply-to" placeholder="in-reply-to-1 in-reply-to-2 …" value="{{ old('in-reply-to') }}">
<label for="content" accesskey="n">Note: </label><textarea name="content" id="content" placeholder="Note" autofocus>{{ old('content') }}</textarea>
<div>
<label for="in-reply-to" accesskey="r">Reply-to: </label>
<input type="text"
name="in-reply-to"
id="in-reply-to"
placeholder="in-reply-to-1 in-reply-to-2 …"
value="{{ old('in-reply-to') }}"
>
</div>
<div>
<label for="content" accesskey="n">Note: </label>
<textarea name="content"
id="content"
placeholder="Note"
autofocus="autofocus">{{ old('content') }}</textarea>
</div>
@if ($micropub === true)
<label for="syndication" accesskey="s">Syndication: </label>@if($syndication)<ul class="syndication-targets-list" name="syndication">@foreach($syndication as $syn)<li><input type="checkbox" name="syndicate-to[]" id="{{ $syn['target'] }}" value="{{ $syn['target'] }}" checked="checked"> <label for="{{ $syn['target'] }}">{{ $syn['name'] }}</label></li>@endforeach</ul>@endif
<a href="/refresh-syndication-targets">Refresh Syndication Targets</a><br>
@if($syndication)
<div>
<label for="syndication" accesskey="s">Syndication: </label>
<ul class="syndication-targets-list" name="syndication">
@foreach($syndication as $syn)
<li><input type="checkbox"
name="syndicate-to[]"
id="{{ $syn['target'] }}"
value="{{ $syn['target'] }}"
checked="checked"
> <label for="{{ $syn['target'] }}">{{ $syn['name'] }}</label>
</li>
@endforeach
</ul>
</div>
@endif
<div>
<a href="/refresh-syndication-targets">Refresh Syndication Targets</a>
</div>
@endif
<label for="photo" accesskey="p">Photo: </label><input type="file" accept="image/*" value="Upload" name="photo[]" id="photo" multiple>
<label for="locate" accesskey="l"></label><button type="button" name="locate" id="locate" value="Locate" disabled>Locate</button>
<label for="kludge"></label><button type="submit" name="submit" id="submit" value="Submit">Submit</button>
<div>
<label for="photo" accesskey="p">Photo: </label>
<input type="file"
accept="image/*"
value="Upload"
name="photo[]"
id="photo"
multiple
>
</div>
<div>
<label for="locate" accesskey="l"></label>
<button type="button"
name="locate"
id="locate"
value="Locate"
disabled
>Locate</button>
<button type="submit"
name="submit"
id="submit"
value="Submit"
>Submit</button>
</div>
</fieldset>
</form>

View file

@ -15,13 +15,17 @@
@endif
</div>
<div class="note-metadata">
<a class="u-url" href="/notes/{{ $note->nb60id }}"><time class="dt-published" datetime="{{ $note->iso8601_time }}">{{ $note->human_time }}</time></a>@if($note->client_name) via <a class="client" href="{{ $note->client_id }}">{{ $note->client_name }}</a>@endif
@if($note->placeLink)in <span class="p-location h-card"><a class="p-name u-url" href="{{ $note->placeLink }}">{{ $note->address }}</a><data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>
@elseif($note->address)in <span class="p-location h-adr">{!! $note->address !!}<data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>@endif
@if($note->replies > 0) @include('templates.replies-icon'): {{ $note->replies }}@endif
@if($note->tweet_id || $note->facebook_url)@include('templates.social-links', ['tweet_id' => $note->tweet_id, 'facebook_url' => $note->facebook_url])@endif
@if ($note->placeLink)
<div class="map" data-latitude="{{ $note->latitude }}" data-longitude="{{ $note->longitude }}"></div>
@endif
<div>
<a class="u-url" href="/notes/{{ $note->nb60id }}"><time class="dt-published" datetime="{{ $note->iso8601_time }}">{{ $note->human_time }}</time></a>@if($note->client_name) via <a class="client" href="{{ $note->client_id }}">{{ $note->client_name }}</a>@endif
@if($note->placeLink)in <span class="p-location h-card"><a class="p-name u-url" href="{{ $note->placeLink }}">{{ $note->address }}</a><data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>
@elseif($note->address)in <span class="p-location h-adr">{!! $note->address !!}<data class="p-latitude" value="{{ $note->latitude }}"></data><data class="p-longitude" value="{{ $note->longitude }}"></data></span>@endif
@if($note->replies > 0) @include('templates.replies-icon'): {{ $note->replies }}@endif
</div>
<div class="social-links">
@if($note->tweet_id || $note->facebook_url)@include('templates.social-links', ['tweet_id' => $note->tweet_id, 'facebook_url' => $note->facebook_url])@endif
</div>
</div>
@if ($note->placeLink)
<div class="map" data-latitude="{{ $note->latitude }}" data-longitude="{{ $note->longitude }}"></div>
@endif
</div>

View file

@ -1,21 +1,19 @@
<span class="social-links">
@if($tweet_id !== null)<a class="u-syndication" href="https://twitter.com/i/web/status/{{ $tweet_id }}" title="View note on Twitter">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 171.5054 139.37839" class="icon">
<g transform="translate(-282.32053,-396.30734)">
<path fill="#4099FF" d="m 453.82593,412.80619 c -6.3097,2.79897 -13.09189,4.68982 -20.20852,5.54049 7.26413,-4.35454 12.84406,-11.24992 15.47067,-19.46675 -6.79934,4.03295 -14.3293,6.96055 -22.34461,8.53841 -6.41775,-6.83879 -15.56243,-11.111 -25.68298,-11.111 -19.43159,0 -35.18696,15.75365 -35.18696,35.18525 0,2.75781 0.31128,5.44359 0.91155,8.01875 -29.24344,-1.46723 -55.16995,-15.47582 -72.52461,-36.76396 -3.02879,5.19662 -4.76443,11.24048 -4.76443,17.6891 0,12.20777 6.21194,22.97747 15.65332,29.28716 -5.76773,-0.18265 -11.19331,-1.76565 -15.93716,-4.40083 -0.004,0.14663 -0.004,0.29412 -0.004,0.44248 0,17.04767 12.12889,31.26806 28.22555,34.50266 -2.95247,0.80436 -6.06101,1.23398 -9.26989,1.23398 -2.2673,0 -4.47114,-0.22124 -6.62011,-0.63114 4.47801,13.97857 17.47214,24.15143 32.86992,24.43441 -12.04227,9.43796 -27.21366,15.06335 -43.69965,15.06335 -2.84014,0 -5.64082,-0.16722 -8.39349,-0.49223 15.57186,9.98421 34.06703,15.8094 53.93768,15.8094 64.72024,0 100.11301,-53.61524 100.11301,-100.11387 0,-1.52554 -0.0343,-3.04251 -0.10204,-4.55261 6.87394,-4.95995 12.83891,-11.15646 17.55618,-18.21305 z" />
</g>
</svg>
</a>@endif
@if($facebook_url !== null)<a class="u-syndication" href="{{ $facebook_url }}" title="View note on Facebook">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preservedAspectRatio="xMinYMin meet" viewBox="0 0 266.893 266.895" class="icon">
<path id="Blue_1_" fill="#3C5A99" d="M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812
c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225
H248.082z"
/>
<path id="f" fill="#FFFFFF" d="M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935
l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585
v99.803H182.409z"
/>
</svg>
</a>@endif
</span>
@if($tweet_id !== null)<a class="u-syndication" href="https://twitter.com/i/web/status/{{ $tweet_id }}" title="View note on Twitter">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 171.5054 139.37839" class="icon">
<g transform="translate(-282.32053,-396.30734)">
<path fill="#4099FF" d="m 453.82593,412.80619 c -6.3097,2.79897 -13.09189,4.68982 -20.20852,5.54049 7.26413,-4.35454 12.84406,-11.24992 15.47067,-19.46675 -6.79934,4.03295 -14.3293,6.96055 -22.34461,8.53841 -6.41775,-6.83879 -15.56243,-11.111 -25.68298,-11.111 -19.43159,0 -35.18696,15.75365 -35.18696,35.18525 0,2.75781 0.31128,5.44359 0.91155,8.01875 -29.24344,-1.46723 -55.16995,-15.47582 -72.52461,-36.76396 -3.02879,5.19662 -4.76443,11.24048 -4.76443,17.6891 0,12.20777 6.21194,22.97747 15.65332,29.28716 -5.76773,-0.18265 -11.19331,-1.76565 -15.93716,-4.40083 -0.004,0.14663 -0.004,0.29412 -0.004,0.44248 0,17.04767 12.12889,31.26806 28.22555,34.50266 -2.95247,0.80436 -6.06101,1.23398 -9.26989,1.23398 -2.2673,0 -4.47114,-0.22124 -6.62011,-0.63114 4.47801,13.97857 17.47214,24.15143 32.86992,24.43441 -12.04227,9.43796 -27.21366,15.06335 -43.69965,15.06335 -2.84014,0 -5.64082,-0.16722 -8.39349,-0.49223 15.57186,9.98421 34.06703,15.8094 53.93768,15.8094 64.72024,0 100.11301,-53.61524 100.11301,-100.11387 0,-1.52554 -0.0343,-3.04251 -0.10204,-4.55261 6.87394,-4.95995 12.83891,-11.15646 17.55618,-18.21305 z" />
</g>
</svg>
</a>@endif
@if($facebook_url !== null)<a class="u-syndication" href="{{ $facebook_url }}" title="View note on Facebook">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preservedAspectRatio="xMinYMin meet" viewBox="0 0 266.893 266.895" class="icon">
<path id="Blue_1_" fill="#3C5A99" d="M248.082,262.307c7.854,0,14.223-6.369,14.223-14.225V18.812
c0-7.857-6.368-14.224-14.223-14.224H18.812c-7.857,0-14.224,6.367-14.224,14.224v229.27c0,7.855,6.366,14.225,14.224,14.225
H248.082z"
/>
<path id="f" fill="#FFFFFF" d="M182.409,262.307v-99.803h33.499l5.016-38.895h-38.515V98.777c0-11.261,3.127-18.935,19.275-18.935
l20.596-0.009V45.045c-3.562-0.474-15.788-1.533-30.012-1.533c-29.695,0-50.025,18.126-50.025,51.413v28.684h-33.585v38.895h33.585
v99.803H182.409z"
/>
</svg>
</a>@endif