diff --git a/.travis.yml b/.travis.yml index 59bab10e..cd687b56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,12 +13,10 @@ env: - setup=basic php: - - 7.0.6 - - 7.0.7 + - 7.0 - nightly matrix: allow_failures: - - php: 7.0.7 # A known bug in PHP 7.0.7 stops phpdbg producing code coverage reports - php: nightly before_install: diff --git a/app/Http/Controllers/MicropubClientController.php b/app/Http/Controllers/MicropubClientController.php index 858822fb..60c714d4 100644 --- a/app/Http/Controllers/MicropubClientController.php +++ b/app/Http/Controllers/MicropubClientController.php @@ -37,9 +37,7 @@ class MicropubClientController extends Controller public function newNotePage(Request $request) { $url = $request->session()->get('me'); - $syndication = $this->parseSyndicationTargets( - $request->session()->get('syndication') - ); + $syndication = $request->session()->get('syndication'); return view('micropubnewnotepage', [ 'url' => $url, @@ -113,7 +111,7 @@ class MicropubClientController extends Controller return redirect('notes/new')->withErrors('Bad response when refreshing syndication targets', 'endpoint'); } $body = (string) $response->getBody(); - $syndication = str_replace(['&', '[]'], [';', ''], $body); + $syndication = $this->parseSyndicationTargets($body); $request->session()->put('syndication', $syndication); @@ -321,10 +319,9 @@ class MicropubClientController extends Controller return; } $syndicateTo = []; - $parts = explode(';', $syndicationTargets); - foreach ($parts as $part) { - $target = explode('=', $part); - $syndicateTo[] = urldecode($target[1]); + $data = json_decode($syndicationTargets, true); + foreach ($syndicateTo['syndicate-to'] as $syn) { + $syndicateTo[] = $syn['uid']; } if (count($syndicateTo) > 0) { return $syndicateTo; diff --git a/app/Http/Controllers/MicropubController.php b/app/Http/Controllers/MicropubController.php index b348ade1..175e9b79 100644 --- a/app/Http/Controllers/MicropubController.php +++ b/app/Http/Controllers/MicropubController.php @@ -27,7 +27,7 @@ class MicropubController extends Controller protected $placeService; /** - * Injest the dependency. + * Inject the dependencies. */ public function __construct( TokenService $tokenService = null, @@ -59,31 +59,53 @@ class MicropubController extends Controller $type = $request->input('h'); if ($type == 'entry') { $note = $this->noteService->createNote($request, $clientId); - $content = 'Note created at ' . $note->longurl; + $content = <<longurl" +} +EOD; return (new Response($content, 201)) - ->header('Location', $note->longurl); + ->header('Location', $note->longurl) + ->header('Content-Type', 'application/json'); } if ($type == 'card') { $place = $this->placeService->createPlace($request); - $content = 'Place created at ' . $place->longurl; + $content = <<longurl" +} +EOD; return (new Response($content, 201)) - ->header('Location', $place->longurl); + ->header('Location', $place->longurl) + ->header('Content-Type', 'application/json'); } } } - $content = http_build_query([ - 'error' => 'invalid_token', - 'error_description' => 'The token provided is not valid or does not have the necessary scope', - ]); + $content = <<header('Content-Type', 'application/x-www-form-urlencoded'); + ->header('Content-Type', 'application/json'); } - $content = 'No OAuth token sent with request.'; + $content = <<header('Content-Type', 'application/json'); } /** @@ -104,16 +126,34 @@ class MicropubController extends Controller $valid = $this->tokenService->validateToken($token); if ($valid === null) { - return new Response('Invalid token', 400); + $content = <<header('Content-Type', 'application/json'); } //we have a valid token, is `syndicate-to` set? if ($request->input('q') === 'syndicate-to') { - $content = http_build_query([ - 'syndicate-to' => 'twitter.com/jonnybarnes', + return response()->json([ + 'syndicate-to' => [[ + 'uid' => 'https://twitter.com/jonnybarnes', + 'name' => 'jonnybarnes on Twitter', + 'service' => [ + 'name' => 'Twitter', + 'url' => 'https://twitter.com', + 'photo' => 'https://upload.wikimedia.org/wikipedia/en/9/9f/Twitter_bird_logo_2012.svg', + ], + 'user' => [ + 'name' => 'jonnybarnes', + 'url' => 'https://twitter.com/jonnybarnes', + 'photo' => 'https://pbs.twimg.com/profile_images/1853565405/jmb-bw.jpg', + ], + ]], ]); - - return (new Response($content, 200)) - ->header('Content-Type', 'application/x-www-form-urlencoded'); } //nope, how about a geo URL? if (substr($request->input('q'), 0, 4) === 'geo:') { @@ -123,21 +163,51 @@ class MicropubController extends Controller $longitude = $latlng[1]; $places = Place::near($latitude, $longitude, 1000); - return (new Response(json_encode($places), 200)) - ->header('Content-Type', 'application/json'); + return response()->json([ + 'response' => 'places', + 'places' => $places + ]); + } + //nope, ho about a config query? + if ($request->input('q') == 'config') { + return response()->json([ + 'syndicate-to' => [[ + 'uid' => 'https://twitter.com/jonnybarnes', + 'name' => 'jonnybarnes on Twitter', + 'service' => [ + 'name' => 'Twitter', + 'url' => 'https://twitter.com', + 'photo' => 'https://upload.wikimedia.org/wikipedia/en/9/9f/Twitter_bird_logo_2012.svg', + ], + 'user' => [ + 'name' => 'jonnybarnes', + 'url' => 'https://twitter.com/jonnybarnes', + 'photo' => 'https://pbs.twimg.com/profile_images/1853565405/jmb-bw.jpg', + ], + ]], + ]); } - //nope, just return the token - $content = http_build_query([ - 'me' => $valid->getClaim('me'), - 'scope' => $valid->getClaim('scope'), - 'client_id' => $valid->getClaim('client_id'), - ]); - return (new Response($content, 200)) - ->header('Content-Type', 'application/x-www-form-urlencoded'); + //nope, just return the token + return response()->json([ + 'response' => 'token', + 'token' => [ + 'me' => $valid->getClaim('me'), + 'scope' => $valid->getClaim('scope'), + 'client_id' => $valid->getClaim('client_id'), + ], + ]); } $content = 'No OAuth token sent with request.'; + $content = <<header('Content-Type', 'application/json'); } } diff --git a/app/Http/Controllers/NotesController.php b/app/Http/Controllers/NotesController.php index 31800135..1d6125fe 100644 --- a/app/Http/Controllers/NotesController.php +++ b/app/Http/Controllers/NotesController.php @@ -41,8 +41,7 @@ class NotesController extends Controller } } if ($note->place !== null) { - preg_match('/\((.*)\)/', $note->place->location, $matches); - $lnglat = explode(' ', $matches[1]); + $lnglat = explode(' ', $note->place->location); $note->latitude = $lnglat[1]; $note->longitude = $lnglat[0]; $note->address = $note->place->name; @@ -110,8 +109,7 @@ class NotesController extends Controller } } if ($note->place !== null) { - preg_match('/\((.*)\)/', $note->place->location, $matches); - $lnglat = explode(' ', $matches[1]); + $lnglat = explode(' ', $note->place->location); $note->latitude = $lnglat[1]; $note->longitude = $lnglat[0]; $note->address = $note->place->name; diff --git a/app/Jobs/SendWebMentions.php b/app/Jobs/SendWebMentions.php index 98ae4431..4cfbaafc 100644 --- a/app/Jobs/SendWebMentions.php +++ b/app/Jobs/SendWebMentions.php @@ -63,6 +63,9 @@ class SendWebMentions extends Job implements ShouldQueue if (parse_url($url, PHP_URL_HOST) == env('LONG_URL', 'localhost')) { return false; } + if (starts_with($url, '/notes/tagged/')) { + return false; + } $endpoint = null; diff --git a/app/Place.php b/app/Place.php index 8cadf966..7ce34599 100644 --- a/app/Place.php +++ b/app/Place.php @@ -32,7 +32,10 @@ class Place extends Model * * @var array */ - protected $postgisFields = [Point::class, Polygon::class]; + protected $postgisFields = [ + 'location' => Point::class, + 'polygon' => Polygon::class, + ]; /** * Define the relationship with Notes. @@ -74,18 +77,18 @@ class Place extends Model return $places; } - /** + /* * Convert location to text. * * @param text $value * @return text - */ + * public function getLocationAttribute($value) { $result = DB::select(DB::raw("SELECT ST_AsText('$value')")); return $result[0]->st_astext; - } + }*/ /** * Get the latitude from the `location` property. @@ -94,9 +97,7 @@ class Place extends Model */ public function getLatitudeAttribute() { - preg_match('/\((.*)\)/', $this->location, $latlng); - - return explode(' ', $latlng[1])[1]; + return explode(' ', $this->location)[1]; } /** @@ -106,9 +107,7 @@ class Place extends Model */ public function getLongitudeAttribute() { - preg_match('/\((.*)\)/', $this->location, $latlng); - - return explode(' ', $latlng[1])[0]; + return explode(' ', $this->location)[0]; } /** diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index defa5330..087aa594 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -48,11 +48,11 @@ class NoteService $this->dispatch(new SendWebMentions($note)); if (//micropub request, syndication sent as array - (is_array($request->input('mp-syndicate-to')) + (is_array($request->input('syndicate-to')) && - (in_array('twitter.com/jonnybarnes', $request->input('mp-syndicate-to'))) + (in_array('https://twitter.com/jonnybarnes', $request->input('syndicate-to'))) || //micropub request, syndication sent as string - ($request->input('mp-syndicate-to') == 'twitter.com/jonnybarnes') + ($request->input('syndicate-to') == 'https://twitter.com/jonnybarnes') || //local admin cp request ($request->input('twitter') == true)) ) { diff --git a/changelog.md b/changelog.md index 856eb7ca..43366152 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,20 @@ # Changelog +## Version 0.0.7 (2016-07-04) + - Use JSON for syndication endpoint query response + - Use JSON for all micropub requests + - Add support for `q=config` query of the micropub endpoint + +## Version 0.0.6.3 (2016-06-29) + - Fix an issue with dispatching the syndication job + +## Version 0.0.6.2 (2016-06-28) + - Fix an issue with sending webmentions + +## Version 0.0.6 (2016-06-28) + - Better use of `laravel-postgis` + - Change style for inline mini-profile images + ## Version 0.0.5 (2016-06-23) - Automatically send webmentions - Change `mp-syndicate-to` to `syndicate-to` diff --git a/composer.lock b/composer.lock index bd5ed773..5499202f 100644 --- a/composer.lock +++ b/composer.lock @@ -59,16 +59,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.18.19", + "version": "3.18.21", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "2ffb032afe91b143293f75b48ec7593659c66ddb" + "reference": "db88adc1569789e7d680809f51a62d2bd3410216" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2ffb032afe91b143293f75b48ec7593659c66ddb", - "reference": "2ffb032afe91b143293f75b48ec7593659c66ddb", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/db88adc1569789e7d680809f51a62d2bd3410216", + "reference": "db88adc1569789e7d680809f51a62d2bd3410216", "shasum": "" }, "require": { @@ -135,7 +135,7 @@ "s3", "sdk" ], - "time": "2016-06-21 21:41:45" + "time": "2016-06-27 22:52:29" }, { "name": "barnabywalters/mf-cleaner", @@ -640,16 +640,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "31382fef2889136415751badebbd1cb022a4ed72" + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/31382fef2889136415751badebbd1cb022a4ed72", - "reference": "31382fef2889136415751badebbd1cb022a4ed72", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", "shasum": "" }, "require": { @@ -665,7 +665,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -694,7 +694,7 @@ "stream", "uri" ], - "time": "2016-04-13 19:56:01" + "time": "2016-06-24 23:00:38" }, { "name": "indieauth/client", diff --git a/public/assets/css/global.css b/public/assets/css/global.css index 6f98d208..d60112e7 100644 --- a/public/assets/css/global.css +++ b/public/assets/css/global.css @@ -82,7 +82,7 @@ nav { white-space: nowrap; } .mini-h-card img { - display: inline; + height: 1em; border-radius: 2px; vertical-align: text-bottom; } diff --git a/public/assets/css/global.css.map b/public/assets/css/global.css.map index 08f882eb..83a53655 100644 --- a/public/assets/css/global.css.map +++ b/public/assets/css/global.css.map @@ -1 +1 @@ -{"version":3,"sources":["global.scss","layout.scss","components/fonts.scss","components/colours.scss","components/forms.scss","components/twitter.scss"],"names":[],"mappings":"AAyBA;EACI,+CAAe,EAClB;;AAED;EACI,cAAc,EACjB;;AC5BD;EACI,uBAAuB,EAC1B;;AAED;;;EAGI,oBAAoB,EACvB;;AAED;EACI,qBAAc;EAAd,cAAc;EACd,eAAe,EAClB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,0BDlBe;ECmBf,iCDpBe;ECqBf,eAAe;EACf,gBAAgB,EACnB;;AAED;EACI,aAAa;EACb,eAAe;EACf,UAAU;EACV,YAAY,EACf;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,cAAc,EACjB;;AAED;EACI,YAAY,EACf;;AAED;EACI,aAAa,EAChB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,YAAY;EACZ,YAAY;EACZ,cD/Ce,ECgDlB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe,EAClB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB,EACpB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,mBAAmB;EACnB,0BDjFe;ECkFf,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,gBAAgB;EAChB,mBAAmB;EACnB,4BAA4B,EAC/B;;AAED;EACI,eAAe,EAClB;;AAED;EACI,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,eAAe,EAClB;;AAED;EACI,YAAY;EACZ,aAAa;EACb,8BAA8B,EACjC;;AAID;EACI,kBAAkB;EAClB,qBAAqB,EACxB;;AAED;EACI,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB,EACtB;;AAGD;EACI,mBAAmB,EACtB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,OAAO;EACP,QAAQ,EACX;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,cAAc,EACjB;;AAED,mBAAmB;AACnB;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,aAAa;IACb,cAAc,EACjB,EAAA;;AAGL;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,sBAAsB,EACzB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,YAAY;IACZ,aAAa,EAChB,EAAA;;AClML;EACI,mCAAmC;EACnC,sCAA8B;EAA9B,8BAA8B;EAC9B,mCFFmC;EEGnC,iBAAiB,EACpB;;AAED;EACI,mCFPmC,EEQtC;;AAED;EACI,mCFVsC,EEWzC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sCAA8B;EAA9B,8BAA8B,EACjC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,YAAY;EACZ,YAAY,EACf;;ACvCD;EACI,eHKe,EGJlB;;AAED;EACI,eHCe,EGAlB;;AAED;EACI,eHUe,EGTlB;;ACTD;EACI,YAAY,EACf;;AAED;EACI,aAAa;EACb,YAAY,EACf;;AAED;;;EAGI,YAAY,EACf;;AAED;;;EAGI,yBAAyB;EACzB,sBAAsB;EACtB,0BJfe;EIgBf,eJTe;EIUf,0BJVe;EIWf,mBAAmB,EACtB;;AAED;EACI,qCAA6B;EAA7B,6BAA6B;EAC7B,0BJhBe;EIiBf,eJxBe,EIyBlB;;AAED;EACI,0BJvBe;EIwBf,eJ7Be,EI8BlB;;AAED;EACI,6BAA6B;EAC7B,0BAA0B,EAC7B;;AAED;EACI,oBAAoB;EACpB,eAAe;EACf,aAAa,EAChB;;AC9CD;EACI,4BAA4B,EAC/B;;AAED;EACI,cAAc,EACjB","file":"global.css","sourcesContent":["//global.scss\n\n//variables\n$font-stack-body: \"leitura-news\", serif;\n$font-stack-headers: \"prenton\", sans-serif;\n\n//solarized variables TERMCOL\n$base03: #002b36;//brblack\n$base02: #073642;//black\n$base01: #586e75;//brgreen\n$base00: #657b83;//bryellow\n$base0: #839496;//brblue\n$base1: #93a1a1;//brcyan\n$base2: #eee8d5;//white\n$base3: #fdf6e3;//brwhite\n$yellow: #b58900;\n$orange: #cb4b16;\n$red: #dc322f;\n$magenta: #d33682;\n$violet: #6c71c4;\n$blue: #268bd2;\n$cyan: #2aa198;\n$green: #859900;\n\n//global styles\nhtml {\n background: url('/assets/img/escheresque.png');\n}\n\n.map {\n height: 150px;\n}\n\n//layout\n@import \"layout\";\n\n//components\n@import \"components/fonts\";\n@import \"components/colours\";\n@import \"components/forms\";\n@import \"components/twitter\";\n","//layout.scss\n\n//boxes\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n#topheader {\n display: flex;\n flex-flow: row;\n}\n\n#topheader a {\n padding: 0.5em 1em;\n}\n\nnav {\n padding-top: 0.5em;\n}\n\n.social-list {\n padding-left: 2em;\n}\n\n.note {\n background-color: $base2;\n box-shadow: 0 0 10px 2px $base1;\n padding: 0.5em;\n margin-top: 1em;\n}\n\n.note::after {\n content: \" \";\n display: block;\n height: 0;\n clear: both;\n}\n\n.note a {\n word-wrap: break-word;\n}\n\n.note .e-content p:first-child {\n margin-top: 0;\n}\n\n.note-metadata {\n width: 100%;\n}\n\n.social-links {\n float: right;\n}\n\n.social-links a {\n text-decoration: none;\n}\n\n.icon {\n width: auto;\n height: 1em;\n fill: $blue;\n}\n\n.reply {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding: 0.5em;\n}\n\n.reply-to {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding-top: 2em;\n}\n\n.reply-to + .note {\n margin-top: 0.3em;\n}\n\n.mini-h-card {\n border-radius: 2px;\n border: 1px solid $base01;\n padding: 0 0.2em;\n text-decoration: none;\n margin-right: 5px;\n white-space: nowrap;\n}\n\n.mini-h-card img {\n display: inline;\n border-radius: 2px;\n vertical-align: text-bottom;\n}\n\n.like-photo {\n height: 1.26em;\n}\n\n.reply .e-content {\n margin-top: 0.5em;\n padding-left: 0.5em;\n}\n\n.notes-subtitle {\n font-size: 1em;\n}\n\n.note-photo {\n width: 100%;\n height: auto;\n image-orientation: from-image;\n}\n\n//articles\n\narticle header {\n margin-top: 0.5em;\n margin-bottom: 0.8em;\n}\n\n.post-info {\n font-size: 0.8em;\n font-style: italic;\n margin-top: -0.8em;\n}\n\n//contacts\n.contact {\n position: relative;\n}\n\n.contact-links {\n list-style-type: none;\n}\n\n.contact img {\n height: auto;\n width: 2em;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.contact-info {\n margin-left: 2em;\n}\n\n#map {\n height: 300px;\n}\n\n/* media queries */\n@media (min-width: 700px) {\n main {\n margin-left: 10em;\n margin-right: 10em;\n }\n\n footer {\n margin-left: 13em;\n margin-right: 13em;\n }\n\n .youtube {\n width: 640px;\n height: 360px;\n }\n}\n\n@media (max-width: 699px) {\n main {\n margin-left: 10px;\n margin-right: 10px;\n }\n\n article {\n word-wrap: break-word;\n }\n\n footer {\n margin-left: 15px;\n margin-right: 15px;\n }\n\n .youtube {\n width: 100%;\n height: auto;\n }\n}\n","//fonts.scss\n\nbody {\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n font-family: $font-stack-body;\n font-size: 1.2em;\n}\n\n#topheader h1 {\n font-family: $font-stack-body;\n}\n\nh1 {\n font-family: $font-stack-headers;\n}\n\n#topheader a {\n text-decoration: none;\n}\n\nnav {\n font-feature-settings: \"dlig\";\n}\n\narticle header h1 a {\n text-decoration: none;\n}\n\narticle div a {\n text-decoration: none;\n}\n\nfooter {\n font-size: 0.8em;\n}\n\n.emoji {\n width: auto;\n height: 1em;\n}\n","//colours.scss\nbody {\n color: $base03;\n}\n\nheader a {\n color: $base03;\n}\n\na {\n color: $blue;\n}\n","//forms.scss\n\nform {\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n width: 100%;\n}\n\ninput[type=\"text\"],\ninput[type=\"file\"],\ntextarea {\n width: 100%;\n}\n\ninput,\nbutton,\ntextarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: $base03;\n color: $base3;\n border: 1px solid $base3;\n border-radius: 4px;\n}\n\nbutton:hover {\n transition: 0.5s ease-in-out;\n background-color: $base3;\n color: $base03;\n}\n\nbutton:disabled {\n background-color: $base1;\n color: $base03;\n}\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: checkbox;\n -moz-appearance: checkbox;\n}\n\n#photo {\n background: inherit;\n color: inherit;\n border: none;\n}\n","//twitter.scss\n\n.twitter-tweet-rendered {\n margin-bottom: 0 !important;\n}\n\n.twitter-tweet-rendered + .note {\n margin-top: 0;\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["global.scss","layout.scss","components/fonts.scss","components/colours.scss","components/forms.scss","components/twitter.scss"],"names":[],"mappings":"AAyBA;EACI,+CAAe,EAClB;;AAED;EACI,cAAc,EACjB;;AC5BD;EACI,uBAAuB,EAC1B;;AAED;;;EAGI,oBAAoB,EACvB;;AAED;EACI,qBAAc;EAAd,cAAc;EACd,eAAe,EAClB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,0BDlBe;ECmBf,iCDpBe;ECqBf,eAAe;EACf,gBAAgB,EACnB;;AAED;EACI,aAAa;EACb,eAAe;EACf,UAAU;EACV,YAAY,EACf;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,cAAc,EACjB;;AAED;EACI,YAAY,EACf;;AAED;EACI,aAAa,EAChB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,YAAY;EACZ,YAAY;EACZ,cD/Ce,ECgDlB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe,EAClB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB,EACpB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,mBAAmB;EACnB,0BDjFe;ECkFf,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,YAAY;EACZ,mBAAmB;EACnB,4BAA4B,EAC/B;;AAED;EACI,eAAe,EAClB;;AAED;EACI,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,eAAe,EAClB;;AAED;EACI,YAAY;EACZ,aAAa;EACb,8BAA8B,EACjC;;AAID;EACI,kBAAkB;EAClB,qBAAqB,EACxB;;AAED;EACI,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB,EACtB;;AAGD;EACI,mBAAmB,EACtB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,OAAO;EACP,QAAQ,EACX;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,cAAc,EACjB;;AAED,mBAAmB;AACnB;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,aAAa;IACb,cAAc,EACjB,EAAA;;AAGL;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,sBAAsB,EACzB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,YAAY;IACZ,aAAa,EAChB,EAAA;;AClML;EACI,mCAAmC;EACnC,sCAA8B;EAA9B,8BAA8B;EAC9B,mCFFmC;EEGnC,iBAAiB,EACpB;;AAED;EACI,mCFPmC,EEQtC;;AAED;EACI,mCFVsC,EEWzC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sCAA8B;EAA9B,8BAA8B,EACjC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,YAAY;EACZ,YAAY,EACf;;ACvCD;EACI,eHKe,EGJlB;;AAED;EACI,eHCe,EGAlB;;AAED;EACI,eHUe,EGTlB;;ACTD;EACI,YAAY,EACf;;AAED;EACI,aAAa;EACb,YAAY,EACf;;AAED;;;EAGI,YAAY,EACf;;AAED;;;EAGI,yBAAyB;EACzB,sBAAsB;EACtB,0BJfe;EIgBf,eJTe;EIUf,0BJVe;EIWf,mBAAmB,EACtB;;AAED;EACI,qCAA6B;EAA7B,6BAA6B;EAC7B,0BJhBe;EIiBf,eJxBe,EIyBlB;;AAED;EACI,0BJvBe;EIwBf,eJ7Be,EI8BlB;;AAED;EACI,6BAA6B;EAC7B,0BAA0B,EAC7B;;AAED;EACI,oBAAoB;EACpB,eAAe;EACf,aAAa,EAChB;;AC9CD;EACI,4BAA4B,EAC/B;;AAED;EACI,cAAc,EACjB","file":"global.css","sourcesContent":["//global.scss\n\n//variables\n$font-stack-body: \"leitura-news\", serif;\n$font-stack-headers: \"prenton\", sans-serif;\n\n//solarized variables TERMCOL\n$base03: #002b36;//brblack\n$base02: #073642;//black\n$base01: #586e75;//brgreen\n$base00: #657b83;//bryellow\n$base0: #839496;//brblue\n$base1: #93a1a1;//brcyan\n$base2: #eee8d5;//white\n$base3: #fdf6e3;//brwhite\n$yellow: #b58900;\n$orange: #cb4b16;\n$red: #dc322f;\n$magenta: #d33682;\n$violet: #6c71c4;\n$blue: #268bd2;\n$cyan: #2aa198;\n$green: #859900;\n\n//global styles\nhtml {\n background: url('/assets/img/escheresque.png');\n}\n\n.map {\n height: 150px;\n}\n\n//layout\n@import \"layout\";\n\n//components\n@import \"components/fonts\";\n@import \"components/colours\";\n@import \"components/forms\";\n@import \"components/twitter\";\n","//layout.scss\n\n//boxes\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n#topheader {\n display: flex;\n flex-flow: row;\n}\n\n#topheader a {\n padding: 0.5em 1em;\n}\n\nnav {\n padding-top: 0.5em;\n}\n\n.social-list {\n padding-left: 2em;\n}\n\n.note {\n background-color: $base2;\n box-shadow: 0 0 10px 2px $base1;\n padding: 0.5em;\n margin-top: 1em;\n}\n\n.note::after {\n content: \" \";\n display: block;\n height: 0;\n clear: both;\n}\n\n.note a {\n word-wrap: break-word;\n}\n\n.note .e-content p:first-child {\n margin-top: 0;\n}\n\n.note-metadata {\n width: 100%;\n}\n\n.social-links {\n float: right;\n}\n\n.social-links a {\n text-decoration: none;\n}\n\n.icon {\n width: auto;\n height: 1em;\n fill: $blue;\n}\n\n.reply {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding: 0.5em;\n}\n\n.reply-to {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding-top: 2em;\n}\n\n.reply-to + .note {\n margin-top: 0.3em;\n}\n\n.mini-h-card {\n border-radius: 2px;\n border: 1px solid $base01;\n padding: 0 0.2em;\n text-decoration: none;\n margin-right: 5px;\n white-space: nowrap;\n}\n\n.mini-h-card img {\n height: 1em;\n border-radius: 2px;\n vertical-align: text-bottom;\n}\n\n.like-photo {\n height: 1.26em;\n}\n\n.reply .e-content {\n margin-top: 0.5em;\n padding-left: 0.5em;\n}\n\n.notes-subtitle {\n font-size: 1em;\n}\n\n.note-photo {\n width: 100%;\n height: auto;\n image-orientation: from-image;\n}\n\n//articles\n\narticle header {\n margin-top: 0.5em;\n margin-bottom: 0.8em;\n}\n\n.post-info {\n font-size: 0.8em;\n font-style: italic;\n margin-top: -0.8em;\n}\n\n//contacts\n.contact {\n position: relative;\n}\n\n.contact-links {\n list-style-type: none;\n}\n\n.contact img {\n height: auto;\n width: 2em;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.contact-info {\n margin-left: 2em;\n}\n\n#map {\n height: 300px;\n}\n\n/* media queries */\n@media (min-width: 700px) {\n main {\n margin-left: 10em;\n margin-right: 10em;\n }\n\n footer {\n margin-left: 13em;\n margin-right: 13em;\n }\n\n .youtube {\n width: 640px;\n height: 360px;\n }\n}\n\n@media (max-width: 699px) {\n main {\n margin-left: 10px;\n margin-right: 10px;\n }\n\n article {\n word-wrap: break-word;\n }\n\n footer {\n margin-left: 15px;\n margin-right: 15px;\n }\n\n .youtube {\n width: 100%;\n height: auto;\n }\n}\n","//fonts.scss\n\nbody {\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n font-family: $font-stack-body;\n font-size: 1.2em;\n}\n\n#topheader h1 {\n font-family: $font-stack-body;\n}\n\nh1 {\n font-family: $font-stack-headers;\n}\n\n#topheader a {\n text-decoration: none;\n}\n\nnav {\n font-feature-settings: \"dlig\";\n}\n\narticle header h1 a {\n text-decoration: none;\n}\n\narticle div a {\n text-decoration: none;\n}\n\nfooter {\n font-size: 0.8em;\n}\n\n.emoji {\n width: auto;\n height: 1em;\n}\n","//colours.scss\nbody {\n color: $base03;\n}\n\nheader a {\n color: $base03;\n}\n\na {\n color: $blue;\n}\n","//forms.scss\n\nform {\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n width: 100%;\n}\n\ninput[type=\"text\"],\ninput[type=\"file\"],\ntextarea {\n width: 100%;\n}\n\ninput,\nbutton,\ntextarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: $base03;\n color: $base3;\n border: 1px solid $base3;\n border-radius: 4px;\n}\n\nbutton:hover {\n transition: 0.5s ease-in-out;\n background-color: $base3;\n color: $base03;\n}\n\nbutton:disabled {\n background-color: $base1;\n color: $base03;\n}\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: checkbox;\n -moz-appearance: checkbox;\n}\n\n#photo {\n background: inherit;\n color: inherit;\n border: none;\n}\n","//twitter.scss\n\n.twitter-tweet-rendered {\n margin-bottom: 0 !important;\n}\n\n.twitter-tweet-rendered + .note {\n margin-top: 0;\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/build/assets/bower/Autolinker-2cb3468034.min.js.br b/public/build/assets/bower/Autolinker-2cb3468034.min.js.br index 226219ac..f61d9e96 100644 Binary files a/public/build/assets/bower/Autolinker-2cb3468034.min.js.br and b/public/build/assets/bower/Autolinker-2cb3468034.min.js.br differ diff --git a/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz b/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz index 9f4a9ef6..c5319459 100644 Binary files a/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz and b/public/build/assets/bower/Autolinker-2cb3468034.min.js.gz differ diff --git a/public/build/assets/bower/alertify-1b3c6aa174.css.br b/public/build/assets/bower/alertify-1b3c6aa174.css.br index 924e4405..a5b0b540 100644 Binary files a/public/build/assets/bower/alertify-1b3c6aa174.css.br and b/public/build/assets/bower/alertify-1b3c6aa174.css.br differ diff --git a/public/build/assets/bower/alertify-1b3c6aa174.css.gz b/public/build/assets/bower/alertify-1b3c6aa174.css.gz index 2387b322..0ea203b1 100644 Binary files a/public/build/assets/bower/alertify-1b3c6aa174.css.gz and b/public/build/assets/bower/alertify-1b3c6aa174.css.gz differ diff --git a/public/build/assets/bower/alertify-84061c87f5.js.br b/public/build/assets/bower/alertify-84061c87f5.js.br index f9e26306..06485edb 100644 Binary files a/public/build/assets/bower/alertify-84061c87f5.js.br and b/public/build/assets/bower/alertify-84061c87f5.js.br differ diff --git a/public/build/assets/bower/alertify-84061c87f5.js.gz b/public/build/assets/bower/alertify-84061c87f5.js.gz index f5fe54b0..df917bcf 100644 Binary files a/public/build/assets/bower/alertify-84061c87f5.js.gz and b/public/build/assets/bower/alertify-84061c87f5.js.gz differ diff --git a/public/build/assets/bower/fetch-d8a2646ccc.js.br b/public/build/assets/bower/fetch-d8a2646ccc.js.br index 28f2b3a1..521342f2 100644 Binary files a/public/build/assets/bower/fetch-d8a2646ccc.js.br and b/public/build/assets/bower/fetch-d8a2646ccc.js.br differ diff --git a/public/build/assets/bower/fetch-d8a2646ccc.js.gz b/public/build/assets/bower/fetch-d8a2646ccc.js.gz index b378ab36..8074740d 100644 Binary files a/public/build/assets/bower/fetch-d8a2646ccc.js.gz and b/public/build/assets/bower/fetch-d8a2646ccc.js.gz differ diff --git a/public/build/assets/bower/marked-c2a88705e2.min.js.br b/public/build/assets/bower/marked-c2a88705e2.min.js.br index 73d34d61..aee08471 100644 Binary files a/public/build/assets/bower/marked-c2a88705e2.min.js.br and b/public/build/assets/bower/marked-c2a88705e2.min.js.br differ diff --git a/public/build/assets/bower/marked-c2a88705e2.min.js.gz b/public/build/assets/bower/marked-c2a88705e2.min.js.gz index 6f889623..23d8aff6 100644 Binary files a/public/build/assets/bower/marked-c2a88705e2.min.js.gz and b/public/build/assets/bower/marked-c2a88705e2.min.js.gz differ diff --git a/public/build/assets/bower/sanitize-85919f917a.css.br b/public/build/assets/bower/sanitize-85919f917a.css.br index 48b4cd4e..977e0e73 100644 Binary files a/public/build/assets/bower/sanitize-85919f917a.css.br and b/public/build/assets/bower/sanitize-85919f917a.css.br differ diff --git a/public/build/assets/bower/store2-c4daa8f871.min.js.br b/public/build/assets/bower/store2-c4daa8f871.min.js.br index 49dda19b..b607d188 100644 Binary files a/public/build/assets/bower/store2-c4daa8f871.min.js.br and b/public/build/assets/bower/store2-c4daa8f871.min.js.br differ diff --git a/public/build/assets/bower/store2-c4daa8f871.min.js.gz b/public/build/assets/bower/store2-c4daa8f871.min.js.gz index 40ab6bd7..657123f1 100644 Binary files a/public/build/assets/bower/store2-c4daa8f871.min.js.gz and b/public/build/assets/bower/store2-c4daa8f871.min.js.gz differ diff --git a/public/build/assets/css/global-c8783949cd.css b/public/build/assets/css/global-5eaecdf53d.css similarity index 99% rename from public/build/assets/css/global-c8783949cd.css rename to public/build/assets/css/global-5eaecdf53d.css index 6f98d208..d60112e7 100644 --- a/public/build/assets/css/global-c8783949cd.css +++ b/public/build/assets/css/global-5eaecdf53d.css @@ -82,7 +82,7 @@ nav { white-space: nowrap; } .mini-h-card img { - display: inline; + height: 1em; border-radius: 2px; vertical-align: text-bottom; } diff --git a/public/build/assets/css/global-5eaecdf53d.css.br b/public/build/assets/css/global-5eaecdf53d.css.br new file mode 100644 index 00000000..54616e78 Binary files /dev/null and b/public/build/assets/css/global-5eaecdf53d.css.br differ diff --git a/public/build/assets/css/global-5eaecdf53d.css.gz b/public/build/assets/css/global-5eaecdf53d.css.gz new file mode 100644 index 00000000..0a7baea0 Binary files /dev/null and b/public/build/assets/css/global-5eaecdf53d.css.gz differ diff --git a/public/build/assets/css/global-c8783949cd.css.br b/public/build/assets/css/global-c8783949cd.css.br deleted file mode 100644 index 25e5eaab..00000000 Binary files a/public/build/assets/css/global-c8783949cd.css.br and /dev/null differ diff --git a/public/build/assets/css/global-c8783949cd.css.gz b/public/build/assets/css/global-c8783949cd.css.gz deleted file mode 100644 index 3daeef9d..00000000 Binary files a/public/build/assets/css/global-c8783949cd.css.gz and /dev/null differ diff --git a/public/build/assets/css/global.css.map b/public/build/assets/css/global.css.map index 08f882eb..83a53655 100644 --- a/public/build/assets/css/global.css.map +++ b/public/build/assets/css/global.css.map @@ -1 +1 @@ -{"version":3,"sources":["global.scss","layout.scss","components/fonts.scss","components/colours.scss","components/forms.scss","components/twitter.scss"],"names":[],"mappings":"AAyBA;EACI,+CAAe,EAClB;;AAED;EACI,cAAc,EACjB;;AC5BD;EACI,uBAAuB,EAC1B;;AAED;;;EAGI,oBAAoB,EACvB;;AAED;EACI,qBAAc;EAAd,cAAc;EACd,eAAe,EAClB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,0BDlBe;ECmBf,iCDpBe;ECqBf,eAAe;EACf,gBAAgB,EACnB;;AAED;EACI,aAAa;EACb,eAAe;EACf,UAAU;EACV,YAAY,EACf;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,cAAc,EACjB;;AAED;EACI,YAAY,EACf;;AAED;EACI,aAAa,EAChB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,YAAY;EACZ,YAAY;EACZ,cD/Ce,ECgDlB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe,EAClB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB,EACpB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,mBAAmB;EACnB,0BDjFe;ECkFf,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,gBAAgB;EAChB,mBAAmB;EACnB,4BAA4B,EAC/B;;AAED;EACI,eAAe,EAClB;;AAED;EACI,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,eAAe,EAClB;;AAED;EACI,YAAY;EACZ,aAAa;EACb,8BAA8B,EACjC;;AAID;EACI,kBAAkB;EAClB,qBAAqB,EACxB;;AAED;EACI,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB,EACtB;;AAGD;EACI,mBAAmB,EACtB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,OAAO;EACP,QAAQ,EACX;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,cAAc,EACjB;;AAED,mBAAmB;AACnB;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,aAAa;IACb,cAAc,EACjB,EAAA;;AAGL;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,sBAAsB,EACzB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,YAAY;IACZ,aAAa,EAChB,EAAA;;AClML;EACI,mCAAmC;EACnC,sCAA8B;EAA9B,8BAA8B;EAC9B,mCFFmC;EEGnC,iBAAiB,EACpB;;AAED;EACI,mCFPmC,EEQtC;;AAED;EACI,mCFVsC,EEWzC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sCAA8B;EAA9B,8BAA8B,EACjC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,YAAY;EACZ,YAAY,EACf;;ACvCD;EACI,eHKe,EGJlB;;AAED;EACI,eHCe,EGAlB;;AAED;EACI,eHUe,EGTlB;;ACTD;EACI,YAAY,EACf;;AAED;EACI,aAAa;EACb,YAAY,EACf;;AAED;;;EAGI,YAAY,EACf;;AAED;;;EAGI,yBAAyB;EACzB,sBAAsB;EACtB,0BJfe;EIgBf,eJTe;EIUf,0BJVe;EIWf,mBAAmB,EACtB;;AAED;EACI,qCAA6B;EAA7B,6BAA6B;EAC7B,0BJhBe;EIiBf,eJxBe,EIyBlB;;AAED;EACI,0BJvBe;EIwBf,eJ7Be,EI8BlB;;AAED;EACI,6BAA6B;EAC7B,0BAA0B,EAC7B;;AAED;EACI,oBAAoB;EACpB,eAAe;EACf,aAAa,EAChB;;AC9CD;EACI,4BAA4B,EAC/B;;AAED;EACI,cAAc,EACjB","file":"global.css","sourcesContent":["//global.scss\n\n//variables\n$font-stack-body: \"leitura-news\", serif;\n$font-stack-headers: \"prenton\", sans-serif;\n\n//solarized variables TERMCOL\n$base03: #002b36;//brblack\n$base02: #073642;//black\n$base01: #586e75;//brgreen\n$base00: #657b83;//bryellow\n$base0: #839496;//brblue\n$base1: #93a1a1;//brcyan\n$base2: #eee8d5;//white\n$base3: #fdf6e3;//brwhite\n$yellow: #b58900;\n$orange: #cb4b16;\n$red: #dc322f;\n$magenta: #d33682;\n$violet: #6c71c4;\n$blue: #268bd2;\n$cyan: #2aa198;\n$green: #859900;\n\n//global styles\nhtml {\n background: url('/assets/img/escheresque.png');\n}\n\n.map {\n height: 150px;\n}\n\n//layout\n@import \"layout\";\n\n//components\n@import \"components/fonts\";\n@import \"components/colours\";\n@import \"components/forms\";\n@import \"components/twitter\";\n","//layout.scss\n\n//boxes\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n#topheader {\n display: flex;\n flex-flow: row;\n}\n\n#topheader a {\n padding: 0.5em 1em;\n}\n\nnav {\n padding-top: 0.5em;\n}\n\n.social-list {\n padding-left: 2em;\n}\n\n.note {\n background-color: $base2;\n box-shadow: 0 0 10px 2px $base1;\n padding: 0.5em;\n margin-top: 1em;\n}\n\n.note::after {\n content: \" \";\n display: block;\n height: 0;\n clear: both;\n}\n\n.note a {\n word-wrap: break-word;\n}\n\n.note .e-content p:first-child {\n margin-top: 0;\n}\n\n.note-metadata {\n width: 100%;\n}\n\n.social-links {\n float: right;\n}\n\n.social-links a {\n text-decoration: none;\n}\n\n.icon {\n width: auto;\n height: 1em;\n fill: $blue;\n}\n\n.reply {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding: 0.5em;\n}\n\n.reply-to {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding-top: 2em;\n}\n\n.reply-to + .note {\n margin-top: 0.3em;\n}\n\n.mini-h-card {\n border-radius: 2px;\n border: 1px solid $base01;\n padding: 0 0.2em;\n text-decoration: none;\n margin-right: 5px;\n white-space: nowrap;\n}\n\n.mini-h-card img {\n display: inline;\n border-radius: 2px;\n vertical-align: text-bottom;\n}\n\n.like-photo {\n height: 1.26em;\n}\n\n.reply .e-content {\n margin-top: 0.5em;\n padding-left: 0.5em;\n}\n\n.notes-subtitle {\n font-size: 1em;\n}\n\n.note-photo {\n width: 100%;\n height: auto;\n image-orientation: from-image;\n}\n\n//articles\n\narticle header {\n margin-top: 0.5em;\n margin-bottom: 0.8em;\n}\n\n.post-info {\n font-size: 0.8em;\n font-style: italic;\n margin-top: -0.8em;\n}\n\n//contacts\n.contact {\n position: relative;\n}\n\n.contact-links {\n list-style-type: none;\n}\n\n.contact img {\n height: auto;\n width: 2em;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.contact-info {\n margin-left: 2em;\n}\n\n#map {\n height: 300px;\n}\n\n/* media queries */\n@media (min-width: 700px) {\n main {\n margin-left: 10em;\n margin-right: 10em;\n }\n\n footer {\n margin-left: 13em;\n margin-right: 13em;\n }\n\n .youtube {\n width: 640px;\n height: 360px;\n }\n}\n\n@media (max-width: 699px) {\n main {\n margin-left: 10px;\n margin-right: 10px;\n }\n\n article {\n word-wrap: break-word;\n }\n\n footer {\n margin-left: 15px;\n margin-right: 15px;\n }\n\n .youtube {\n width: 100%;\n height: auto;\n }\n}\n","//fonts.scss\n\nbody {\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n font-family: $font-stack-body;\n font-size: 1.2em;\n}\n\n#topheader h1 {\n font-family: $font-stack-body;\n}\n\nh1 {\n font-family: $font-stack-headers;\n}\n\n#topheader a {\n text-decoration: none;\n}\n\nnav {\n font-feature-settings: \"dlig\";\n}\n\narticle header h1 a {\n text-decoration: none;\n}\n\narticle div a {\n text-decoration: none;\n}\n\nfooter {\n font-size: 0.8em;\n}\n\n.emoji {\n width: auto;\n height: 1em;\n}\n","//colours.scss\nbody {\n color: $base03;\n}\n\nheader a {\n color: $base03;\n}\n\na {\n color: $blue;\n}\n","//forms.scss\n\nform {\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n width: 100%;\n}\n\ninput[type=\"text\"],\ninput[type=\"file\"],\ntextarea {\n width: 100%;\n}\n\ninput,\nbutton,\ntextarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: $base03;\n color: $base3;\n border: 1px solid $base3;\n border-radius: 4px;\n}\n\nbutton:hover {\n transition: 0.5s ease-in-out;\n background-color: $base3;\n color: $base03;\n}\n\nbutton:disabled {\n background-color: $base1;\n color: $base03;\n}\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: checkbox;\n -moz-appearance: checkbox;\n}\n\n#photo {\n background: inherit;\n color: inherit;\n border: none;\n}\n","//twitter.scss\n\n.twitter-tweet-rendered {\n margin-bottom: 0 !important;\n}\n\n.twitter-tweet-rendered + .note {\n margin-top: 0;\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["global.scss","layout.scss","components/fonts.scss","components/colours.scss","components/forms.scss","components/twitter.scss"],"names":[],"mappings":"AAyBA;EACI,+CAAe,EAClB;;AAED;EACI,cAAc,EACjB;;AC5BD;EACI,uBAAuB,EAC1B;;AAED;;;EAGI,oBAAoB,EACvB;;AAED;EACI,qBAAc;EAAd,cAAc;EACd,eAAe,EAClB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,mBAAmB,EACtB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,0BDlBe;ECmBf,iCDpBe;ECqBf,eAAe;EACf,gBAAgB,EACnB;;AAED;EACI,aAAa;EACb,eAAe;EACf,UAAU;EACV,YAAY,EACf;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,cAAc,EACjB;;AAED;EACI,YAAY,EACf;;AAED;EACI,aAAa,EAChB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,YAAY;EACZ,YAAY;EACZ,cD/Ce,ECgDlB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe,EAClB;;AAED;EACI,iBAAiB;EACjB,kBAAkB;EAClB,iBAAiB;EACjB,iBAAiB,EACpB;;AAED;EACI,kBAAkB,EACrB;;AAED;EACI,mBAAmB;EACnB,0BDjFe;ECkFf,iBAAiB;EACjB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,YAAY;EACZ,mBAAmB;EACnB,4BAA4B,EAC/B;;AAED;EACI,eAAe,EAClB;;AAED;EACI,kBAAkB;EAClB,oBAAoB,EACvB;;AAED;EACI,eAAe,EAClB;;AAED;EACI,YAAY;EACZ,aAAa;EACb,8BAA8B,EACjC;;AAID;EACI,kBAAkB;EAClB,qBAAqB,EACxB;;AAED;EACI,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB,EACtB;;AAGD;EACI,mBAAmB,EACtB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,aAAa;EACb,WAAW;EACX,mBAAmB;EACnB,OAAO;EACP,QAAQ,EACX;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,cAAc,EACjB;;AAED,mBAAmB;AACnB;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,aAAa;IACb,cAAc,EACjB,EAAA;;AAGL;EACI;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,sBAAsB,EACzB;EAED;IACI,kBAAkB;IAClB,mBAAmB,EACtB;EAED;IACI,YAAY;IACZ,aAAa,EAChB,EAAA;;AClML;EACI,mCAAmC;EACnC,sCAA8B;EAA9B,8BAA8B;EAC9B,mCFFmC;EEGnC,iBAAiB,EACpB;;AAED;EACI,mCFPmC,EEQtC;;AAED;EACI,mCFVsC,EEWzC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sCAA8B;EAA9B,8BAA8B,EACjC;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,sBAAsB,EACzB;;AAED;EACI,iBAAiB,EACpB;;AAED;EACI,YAAY;EACZ,YAAY,EACf;;ACvCD;EACI,eHKe,EGJlB;;AAED;EACI,eHCe,EGAlB;;AAED;EACI,eHUe,EGTlB;;ACTD;EACI,YAAY,EACf;;AAED;EACI,aAAa;EACb,YAAY,EACf;;AAED;;;EAGI,YAAY,EACf;;AAED;;;EAGI,yBAAyB;EACzB,sBAAsB;EACtB,0BJfe;EIgBf,eJTe;EIUf,0BJVe;EIWf,mBAAmB,EACtB;;AAED;EACI,qCAA6B;EAA7B,6BAA6B;EAC7B,0BJhBe;EIiBf,eJxBe,EIyBlB;;AAED;EACI,0BJvBe;EIwBf,eJ7Be,EI8BlB;;AAED;EACI,6BAA6B;EAC7B,0BAA0B,EAC7B;;AAED;EACI,oBAAoB;EACpB,eAAe;EACf,aAAa,EAChB;;AC9CD;EACI,4BAA4B,EAC/B;;AAED;EACI,cAAc,EACjB","file":"global.css","sourcesContent":["//global.scss\n\n//variables\n$font-stack-body: \"leitura-news\", serif;\n$font-stack-headers: \"prenton\", sans-serif;\n\n//solarized variables TERMCOL\n$base03: #002b36;//brblack\n$base02: #073642;//black\n$base01: #586e75;//brgreen\n$base00: #657b83;//bryellow\n$base0: #839496;//brblue\n$base1: #93a1a1;//brcyan\n$base2: #eee8d5;//white\n$base3: #fdf6e3;//brwhite\n$yellow: #b58900;\n$orange: #cb4b16;\n$red: #dc322f;\n$magenta: #d33682;\n$violet: #6c71c4;\n$blue: #268bd2;\n$cyan: #2aa198;\n$green: #859900;\n\n//global styles\nhtml {\n background: url('/assets/img/escheresque.png');\n}\n\n.map {\n height: 150px;\n}\n\n//layout\n@import \"layout\";\n\n//components\n@import \"components/fonts\";\n@import \"components/colours\";\n@import \"components/forms\";\n@import \"components/twitter\";\n","//layout.scss\n\n//boxes\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n#topheader {\n display: flex;\n flex-flow: row;\n}\n\n#topheader a {\n padding: 0.5em 1em;\n}\n\nnav {\n padding-top: 0.5em;\n}\n\n.social-list {\n padding-left: 2em;\n}\n\n.note {\n background-color: $base2;\n box-shadow: 0 0 10px 2px $base1;\n padding: 0.5em;\n margin-top: 1em;\n}\n\n.note::after {\n content: \" \";\n display: block;\n height: 0;\n clear: both;\n}\n\n.note a {\n word-wrap: break-word;\n}\n\n.note .e-content p:first-child {\n margin-top: 0;\n}\n\n.note-metadata {\n width: 100%;\n}\n\n.social-links {\n float: right;\n}\n\n.social-links a {\n text-decoration: none;\n}\n\n.icon {\n width: auto;\n height: 1em;\n fill: $blue;\n}\n\n.reply {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding: 0.5em;\n}\n\n.reply-to {\n margin-left: 2em;\n margin-right: 2em;\n font-size: 0.8em;\n padding-top: 2em;\n}\n\n.reply-to + .note {\n margin-top: 0.3em;\n}\n\n.mini-h-card {\n border-radius: 2px;\n border: 1px solid $base01;\n padding: 0 0.2em;\n text-decoration: none;\n margin-right: 5px;\n white-space: nowrap;\n}\n\n.mini-h-card img {\n height: 1em;\n border-radius: 2px;\n vertical-align: text-bottom;\n}\n\n.like-photo {\n height: 1.26em;\n}\n\n.reply .e-content {\n margin-top: 0.5em;\n padding-left: 0.5em;\n}\n\n.notes-subtitle {\n font-size: 1em;\n}\n\n.note-photo {\n width: 100%;\n height: auto;\n image-orientation: from-image;\n}\n\n//articles\n\narticle header {\n margin-top: 0.5em;\n margin-bottom: 0.8em;\n}\n\n.post-info {\n font-size: 0.8em;\n font-style: italic;\n margin-top: -0.8em;\n}\n\n//contacts\n.contact {\n position: relative;\n}\n\n.contact-links {\n list-style-type: none;\n}\n\n.contact img {\n height: auto;\n width: 2em;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.contact-info {\n margin-left: 2em;\n}\n\n#map {\n height: 300px;\n}\n\n/* media queries */\n@media (min-width: 700px) {\n main {\n margin-left: 10em;\n margin-right: 10em;\n }\n\n footer {\n margin-left: 13em;\n margin-right: 13em;\n }\n\n .youtube {\n width: 640px;\n height: 360px;\n }\n}\n\n@media (max-width: 699px) {\n main {\n margin-left: 10px;\n margin-right: 10px;\n }\n\n article {\n word-wrap: break-word;\n }\n\n footer {\n margin-left: 15px;\n margin-right: 15px;\n }\n\n .youtube {\n width: 100%;\n height: auto;\n }\n}\n","//fonts.scss\n\nbody {\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\";\n font-family: $font-stack-body;\n font-size: 1.2em;\n}\n\n#topheader h1 {\n font-family: $font-stack-body;\n}\n\nh1 {\n font-family: $font-stack-headers;\n}\n\n#topheader a {\n text-decoration: none;\n}\n\nnav {\n font-feature-settings: \"dlig\";\n}\n\narticle header h1 a {\n text-decoration: none;\n}\n\narticle div a {\n text-decoration: none;\n}\n\nfooter {\n font-size: 0.8em;\n}\n\n.emoji {\n width: auto;\n height: 1em;\n}\n","//colours.scss\nbody {\n color: $base03;\n}\n\nheader a {\n color: $base03;\n}\n\na {\n color: $blue;\n}\n","//forms.scss\n\nform {\n width: 100%;\n}\n\nfieldset {\n min-width: 0;\n width: 100%;\n}\n\ninput[type=\"text\"],\ninput[type=\"file\"],\ntextarea {\n width: 100%;\n}\n\ninput,\nbutton,\ntextarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n background-color: $base03;\n color: $base3;\n border: 1px solid $base3;\n border-radius: 4px;\n}\n\nbutton:hover {\n transition: 0.5s ease-in-out;\n background-color: $base3;\n color: $base03;\n}\n\nbutton:disabled {\n background-color: $base1;\n color: $base03;\n}\n\ninput[type=\"checkbox\"] {\n -webkit-appearance: checkbox;\n -moz-appearance: checkbox;\n}\n\n#photo {\n background: inherit;\n color: inherit;\n border: none;\n}\n","//twitter.scss\n\n.twitter-tweet-rendered {\n margin-bottom: 0 !important;\n}\n\n.twitter-tweet-rendered + .note {\n margin-top: 0;\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/public/build/assets/css/projects-d945298e4f.css.br b/public/build/assets/css/projects-d945298e4f.css.br index 1d6b0300..6e60c57b 100644 Binary files a/public/build/assets/css/projects-d945298e4f.css.br and b/public/build/assets/css/projects-d945298e4f.css.br differ diff --git a/public/build/assets/css/projects-d945298e4f.css.gz b/public/build/assets/css/projects-d945298e4f.css.gz index f773d147..deca5763 100644 Binary files a/public/build/assets/css/projects-d945298e4f.css.gz and b/public/build/assets/css/projects-d945298e4f.css.gz differ diff --git a/public/build/assets/js/form-save-4d4f6e1cb8.js.br b/public/build/assets/js/form-save-4d4f6e1cb8.js.br index 2649a3cc..dcc9331e 100644 Binary files a/public/build/assets/js/form-save-4d4f6e1cb8.js.br and b/public/build/assets/js/form-save-4d4f6e1cb8.js.br differ diff --git a/public/build/assets/js/form-save-4d4f6e1cb8.js.gz b/public/build/assets/js/form-save-4d4f6e1cb8.js.gz index 6323aa10..585ad2b2 100644 Binary files a/public/build/assets/js/form-save-4d4f6e1cb8.js.gz and b/public/build/assets/js/form-save-4d4f6e1cb8.js.gz differ diff --git a/public/build/assets/js/links-c394f9c920.js.br b/public/build/assets/js/links-c394f9c920.js.br index 49350ed7..f6084d8a 100644 Binary files a/public/build/assets/js/links-c394f9c920.js.br and b/public/build/assets/js/links-c394f9c920.js.br differ diff --git a/public/build/assets/js/links-c394f9c920.js.gz b/public/build/assets/js/links-c394f9c920.js.gz index 640a2708..5f6e1119 100644 Binary files a/public/build/assets/js/links-c394f9c920.js.gz and b/public/build/assets/js/links-c394f9c920.js.gz differ diff --git a/public/build/assets/js/maps-a6a01a253b.js.gz b/public/build/assets/js/maps-a6a01a253b.js.gz index a5d3445f..82958703 100644 Binary files a/public/build/assets/js/maps-a6a01a253b.js.gz and b/public/build/assets/js/maps-a6a01a253b.js.gz differ diff --git a/public/build/assets/js/newnote-36ff29cdef.js.br b/public/build/assets/js/newnote-36ff29cdef.js.br index 36835332..86c7c70b 100644 Binary files a/public/build/assets/js/newnote-36ff29cdef.js.br and b/public/build/assets/js/newnote-36ff29cdef.js.br differ diff --git a/public/build/assets/js/newnote-36ff29cdef.js.gz b/public/build/assets/js/newnote-36ff29cdef.js.gz index 3737ec44..3d353c0d 100644 Binary files a/public/build/assets/js/newnote-36ff29cdef.js.gz and b/public/build/assets/js/newnote-36ff29cdef.js.gz differ diff --git a/public/build/assets/js/newplace-89a1be080e.js.br b/public/build/assets/js/newplace-89a1be080e.js.br index bd9dd8fc..e3f90b50 100644 Binary files a/public/build/assets/js/newplace-89a1be080e.js.br and b/public/build/assets/js/newplace-89a1be080e.js.br differ diff --git a/public/build/assets/js/newplace-89a1be080e.js.gz b/public/build/assets/js/newplace-89a1be080e.js.gz index 3b712e7d..d5b39155 100644 Binary files a/public/build/assets/js/newplace-89a1be080e.js.gz and b/public/build/assets/js/newplace-89a1be080e.js.gz differ diff --git a/public/build/assets/prism/prism-5c98941a94.css.br b/public/build/assets/prism/prism-5c98941a94.css.br index 101b9508..f381a5e3 100644 Binary files a/public/build/assets/prism/prism-5c98941a94.css.br and b/public/build/assets/prism/prism-5c98941a94.css.br differ diff --git a/public/build/assets/prism/prism-5c98941a94.css.gz b/public/build/assets/prism/prism-5c98941a94.css.gz index 03dc538d..652d5e2b 100644 Binary files a/public/build/assets/prism/prism-5c98941a94.css.gz and b/public/build/assets/prism/prism-5c98941a94.css.gz differ diff --git a/public/build/assets/prism/prism-f6e997bc6d.js.br b/public/build/assets/prism/prism-f6e997bc6d.js.br index 2cef61aa..ca6c26b4 100644 Binary files a/public/build/assets/prism/prism-f6e997bc6d.js.br and b/public/build/assets/prism/prism-f6e997bc6d.js.br differ diff --git a/public/build/assets/prism/prism-f6e997bc6d.js.gz b/public/build/assets/prism/prism-f6e997bc6d.js.gz index 40b9bc77..aaeb5ca2 100644 Binary files a/public/build/assets/prism/prism-f6e997bc6d.js.gz and b/public/build/assets/prism/prism-f6e997bc6d.js.gz differ diff --git a/public/build/rev-manifest.json b/public/build/rev-manifest.json index 03e44845..f39060f1 100644 --- a/public/build/rev-manifest.json +++ b/public/build/rev-manifest.json @@ -6,7 +6,7 @@ "assets/bower/marked.min.js": "assets/bower/marked-c2a88705e2.min.js", "assets/bower/sanitize.css": "assets/bower/sanitize-85919f917a.css", "assets/bower/store2.min.js": "assets/bower/store2-c4daa8f871.min.js", - "assets/css/global.css": "assets/css/global-c8783949cd.css", + "assets/css/global.css": "assets/css/global-5eaecdf53d.css", "assets/css/projects.css": "assets/css/projects-d945298e4f.css", "assets/js/form-save.js": "assets/js/form-save-4d4f6e1cb8.js", "assets/js/links.js": "assets/js/links-c394f9c920.js", diff --git a/resources/assets/sass/layout.scss b/resources/assets/sass/layout.scss index 9452cda8..b97bab26 100644 --- a/resources/assets/sass/layout.scss +++ b/resources/assets/sass/layout.scss @@ -96,7 +96,7 @@ nav { } .mini-h-card img { - display: inline; + height: 1em; border-radius: 2px; vertical-align: text-bottom; } diff --git a/tests/MicropubClientTest.php b/tests/MicropubClientTest.php index d0c47e4d..0fb4bdf3 100644 --- a/tests/MicropubClientTest.php +++ b/tests/MicropubClientTest.php @@ -32,12 +32,13 @@ class MicropubClientTest extends TestCase public function testClientPageRecentAuth() { + $syndication = ['https://twitter.com/jonnybarnes']; $this->withSession([ 'me' => $this->appurl, - 'syndication' => 'mp-syndicate-to=twitter.com%2Fjbl5', + 'syndication' => $syndication, ])->visit($this->appurl . '/notes/new') ->see($this->appurl) - ->see('twitter.com/jbl5'); + ->see('https://twitter.com/jonnybarnes'); } /** diff --git a/tests/MicropubTest.php b/tests/MicropubTest.php index 1854f3fb..4da3853d 100644 --- a/tests/MicropubTest.php +++ b/tests/MicropubTest.php @@ -25,26 +25,26 @@ class MicropubTest extends TestCase { $this->call('GET', $this->appurl . '/api/post'); $this->assertResponseStatus(400); - $this->see('No OAuth token sent with request.'); + $this->seeJson(['error_description' => 'No token provided with request']); } public function testMicropubRequestWithoutValidToken() { $this->call('GET', $this->appurl . '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer abc123']); $this->assertResponseStatus(400); - $this->see('Invalid token'); + $this->seeJson(['error_description' => 'The provided token did not pass validation']); } public function testMicropubRequestWithValidToken() { $this->call('GET', $this->appurl . '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); - $this->see('me=https%3A%2F%2Fjonnybarnes.localhost'); + $this->seeJson(['response' => 'token']); } public function testMicropubRequestForSyndication() { $this->call('GET', $this->appurl . '/api/post', ['q' => 'syndicate-to'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); - $this->see('twitter.com%2Fjonnybarnes'); + $this->seeJson(['uid' => 'https://twitter.com/jonnybarnes']); } public function testMicropubRequestForNearbyPlacesThatExist() @@ -59,6 +59,12 @@ class MicropubTest extends TestCase $this->see('[]'); } + public function testMicropubRequestForConfig() + { + $this->call('GET', $this->appurl . '/api/post', ['q' => 'config'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); + $this->seeJson(['uid' => 'https://twitter.com/jonnybarnes']); + } + public function testMicropubRequestCreateNewNote() { $faker = \Faker\Factory::create();