diff --git a/.styleci.yml b/.styleci.yml index c46055c0..5e728eb1 100644 --- a/.styleci.yml +++ b/.styleci.yml @@ -3,6 +3,7 @@ preset: laravel disabled: - concat_without_spaces - simplified_null_return + - single_import_per_statement finder: path: app/ diff --git a/app/Http/Controllers/MicropubClientController.php b/app/Http/Controllers/MicropubClientController.php index c2ecbc2c..7cc5877a 100644 --- a/app/Http/Controllers/MicropubClientController.php +++ b/app/Http/Controllers/MicropubClientController.php @@ -2,13 +2,12 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; -use Illuminate\Http\Response; use App\Services\IndieAuthService; use Illuminate\Support\Facades\Log; use IndieAuth\Client as IndieClient; use GuzzleHttp\Client as GuzzleClient; -use GuzzleHttp\Exception\ClientException; +use Illuminate\Http\{Request, Response}; +use GuzzleHttp\Exception\{ClientException, ServerException}; class MicropubClientController extends Controller { @@ -40,8 +39,65 @@ class MicropubClientController extends Controller { $url = $request->session()->get('me'); $syndication = $request->session()->get('syndication'); + $mediaEndpoint = $request->session()->get('media-endpoint'); + $mediaURLs = $request->session()->get('media-links'); - return view('micropub.create', compact('url', 'syndication')); + return view('micropub.create', compact('url', 'syndication', 'mediaEndpoint', 'mediaURLs')); + } + + /** + * Process an upload to the media endpoint. + * + * @param Illuminate\Http\Request $request + * @return Illuminate\Http\Response + */ + public function processMedia(Request $request) + { + if ($request->hasFile('file') == false) { + return back(); + } + + $mediaEndpoint = $request->session()->get('media-endpoint'); + if ($mediaEndpoint == null) { + return back(); + } + + $token = $request->session()->get('token'); + + $mediaURLs = []; + foreach ($request->file('file') as $file) { + try { + $response = $this->guzzleClient->request('POST', $mediaEndpoint, [ + 'headers' => [ + 'Authorization' => 'Bearer ' . $token, + ], + 'multipart' => [ + [ + 'name' => 'file', + 'contents' => fopen($file->path(), 'r'), + 'filename' => $file->getClientOriginalName(), + ], + ], + ]); + } catch (ClientException | ServerException $e) { + continue; + } + + $mediaURLs[] = $response->getHeader('Location')[0]; + } + + $storedMediaURLs = $request->session()->get('media-links') ?? []; + $mediaURLsToSave = array_merge($storedMediaURLs, $mediaURLs); + $request->session()->put('media-links', $mediaURLsToSave); + + return redirect(route('micropub-client')); + } + + public function clearLinks(Request $request) + { + $request->session()->forget('media-links'); + + return redirect(route('micropub-client')); } /** @@ -68,6 +124,7 @@ class MicropubClientController extends Controller $response = $this->postNoteRequest($request, $micropubEndpoint, $token); if ($response->getStatusCode() == 201) { + $request->session()->forget('media-links'); $location = $response->getHeader('Location'); if (is_array($location)) { return redirect($location[0]); @@ -79,6 +136,54 @@ class MicropubClientController extends Controller return redirect(route('micropub-client'))->with('error', 'Endpoint didn’t create the note.'); } + /** + * Show currently stored configuration values. + * + * @param Illuminate\Http\Request $request + * @return view + */ + public function config(Request $request) + { + $data['me'] = $request->session()->get('me'); + $data['token'] = $request->session()->get('token'); + $data['syndication'] = $request->session()->get('syndication') ?? 'none defined'; + $data['media-endpoint'] = $request->session()->get('media-endpoint') ?? 'none defined'; + + return view('micropub.config', compact('data')); + } + + /** + * Query the micropub endpoint and store response in the session. + * + * @param Illuminate\Http\Request $request + * @return redirect + */ + public function queryEndpoint(Request $request) + { + $domain = $request->session()->get('me'); + $token = $request->session()->get('token'); + $micropubEndpoint = $this->indieAuthService->discoverMicropubEndpoint($domain); + if ($micropubEndpoint !== null) { + try { + $response = $this->guzzleClient->get($micropubEndpoint, [ + 'headers' => ['Authorization' => 'Bearer ' . $token], + 'query' => 'q=config', + ]); + } catch (ClientException | ServerException $e) { + return back(); + } + $body = (string) $response->getBody(); + + $syndication = $this->parseSyndicationTargets($body); + $request->session()->put('syndication', $syndication); + + $mediaEndpoint = $this->parseMediaEndpoint($body); + $request->session()->put('media-endpoint', $mediaEndpoint); + + return back(); + } + } + /** * We make a request to the micropub endpoint requesting syndication targets * and store them in the session. @@ -172,6 +277,14 @@ class MicropubClientController extends Controller ]; } } + if ($request->input('media')) { + foreach ($request->input('media') as $media) { + $multipart[] = [ + 'name' => 'photo[]', + 'contents' => $media, + ]; + } + } $headers = [ 'Authorization' => 'Bearer ' . $token, ]; @@ -338,11 +451,27 @@ class MicropubClientController extends Controller 'name' => $syn['name'], ]; } - } else { - $syndicateTo[] = ['target' => 'http://example.org', 'name' => 'Joe Bloggs on Example']; } if (count($syndicateTo) > 0) { return $syndicateTo; } } + + /** + * Parse the media-endpoint retrieved from querying a micropub endpoint. + * + * @param string|null + * @return string + */ + private function parseMediaEndpoint($queryResponse = null) + { + if ($queryResponse === null) { + return; + } + + $data = json_decode($queryResponse, true); + if (array_key_exists('media-endpoint', $data)) { + return $data['media-endpoint']; + } + } } diff --git a/app/Http/Controllers/MicropubController.php b/app/Http/Controllers/MicropubController.php index a110bc65..e414da3d 100644 --- a/app/Http/Controllers/MicropubController.php +++ b/app/Http/Controllers/MicropubController.php @@ -2,12 +2,11 @@ namespace App\Http\Controllers; -use App\Place; -use Illuminate\Http\Request; -use App\Services\NoteService; -use Illuminate\Http\Response; -use App\Services\PlaceService; -use App\Services\TokenService; +use Ramsey\Uuid\Uuid; +use App\{Media, Place}; +use Illuminate\Http\{Request, Response}; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; +use App\Services\{NoteService, PlaceService, TokenService}; class MicropubController extends Controller { @@ -95,6 +94,15 @@ class MicropubController extends Controller } } } + $data['photo'] = []; + if (is_array($request->input('photo'))) { + foreach ($request->input('photo') as $photo) { + if (is_string($photo)) { + //only supporting media URLs for now + $data['photo'][] = $photo; + } + } + } try { $note = $this->noteService->createNote($data); } catch (Exception $exception) { @@ -182,6 +190,15 @@ class MicropubController extends Controller 'syndicate-to' => config('syndication.targets'), ]); } + + //nope, how about a config query? + if ($request->input('q') == 'config') { + return response()->json([ + 'syndicate-to' => config('syndication.targets'), + 'media-endpoint' => route('media-endpoint'), + ]); + } + //nope, how about a geo URL? if (substr($request->input('q'), 0, 4) === 'geo:') { preg_match_all( @@ -200,13 +217,6 @@ class MicropubController extends Controller 'places' => $places, ]); } - //nope, how about a config query? - //this should have a media endpoint as well at some point - if ($request->input('q') == 'config') { - return response()->json([ - 'syndicate-to' => config('syndication.targets'), - ]); - } //nope, just return the token return response()->json([ @@ -225,4 +235,135 @@ class MicropubController extends Controller 'error_description' => 'No token provided with request', ], 400); } + + /** + * Process a media item posted to the media endpoint. + * + * @param Illuminate\Http\Request $request + * @return Illuminate\Http\Response + */ + public function media(Request $request) + { + //can this go in middleware + $httpAuth = $request->header('Authorization'); + if (preg_match('/Bearer (.+)/', $httpAuth, $match)) { + $token = $match[1]; + $tokenData = $this->tokenService->validateToken($token); + + if ($tokenData === null) { + return response()->json([ + 'response' => 'error', + 'error' => 'invalid_token', + 'error_description' => 'The provided token did not pass validation', + ], 400); + } + + //check post scope + if ($tokenData->hasClaim('scope')) { + $scopes = explode(' ', $tokenData->getClaim('scope')); + if (array_search('post', $scopes) !== false) { + //check media valid + if ($request->hasFile('file') && $request->file('file')->isValid()) { + $type = $this->getFileTypeFromMimeType($request->file('file')->getMimeType()); + try { + $filename = Uuid::uuid4() . '.' . $request->file('file')->extension(); + } catch (UnsatisfiedDependencyException $e) { + return response()->json([ + 'response' => 'error', + 'error' => 'internal_server_error', + 'error_description' => 'A problem occured handling your request', + ], 500); + } + try { + $path = $request->file('file')->storeAs('media', $filename, 's3'); + } catch (Exception $e) { // which exception? + return response()->json([ + 'response' => 'error', + 'error' => 'service_unavailable', + 'error_description' => 'Unable to save media to S3', + ], 503); + } + $media = new Media(); + $media->token = $token; + $media->path = $path; + $media->type = $type; + $media->save(); + + return response()->json([ + 'response' => 'created', + 'location' => $media->url, + ], 201)->header('Location', $media->url); + } + + return response()->json([ + 'response' => 'error', + 'error' => 'invalid_request', + 'error_description' => 'The uploaded file failed validation', + ], 400); + } + + return response()->json([ + 'response' => 'error', + 'error' => 'insufficient_scope', + 'error_description' => 'The provided token has insufficient scopes', + ], 401); + } + + return response()->json([ + 'response' => 'error', + 'error' => 'unauthorized', + 'error_description' => 'No token provided with request', + ], 401); + } + + return response()->json([ + 'response' => 'error', + 'error' => 'no_token', + 'error_description' => 'There was no token provided with the request', + ], 400); + } + + /** + * Get the file type from the mimetype of the uploaded file. + * + * @param string The mimetype + * @return string The type + */ + private function getFileTypeFromMimeType($mimetype) + { + //try known images + $imageMimeTypes = [ + 'image/gif', + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/tiff', + 'image/webp', + ]; + if (in_array($mimetype, $imageMimeTypes)) { + return 'image'; + } + //try known video + $videoMimeTypes = [ + 'video/mp4', + 'video/mpeg', + 'video/quicktime', + 'video/webm', + ]; + if (in_array($mimetype, $videoMimeTypes)) { + return 'video'; + } + //try known audio types + $audioMimeTypes = [ + 'audio/midi', + 'audio/mpeg', + 'audio/ogg', + 'audio/x-m4a', + ]; + if (in_array($mimetype, $audioMimeTypes)) { + return 'audio'; + } + + return 'download'; + } } diff --git a/app/Http/Controllers/NotesController.php b/app/Http/Controllers/NotesController.php index 45915796..0b8ae808 100644 --- a/app/Http/Controllers/NotesController.php +++ b/app/Http/Controllers/NotesController.php @@ -2,10 +2,9 @@ namespace App\Http\Controllers; -use App\Tag; use Twitter; -use App\Note; use HTMLPurifier; +use App\{Note, Tag}; use GuzzleHttp\Client; use HTMLPurifier_Config; use Illuminate\Http\Request; @@ -58,12 +57,10 @@ class NotesController extends Controller $note->place->icon ); } - $photoURLs = []; - $photos = $note->getMedia(); - foreach ($photos as $photo) { - $photoURLs[] = $photo->getUrl(); - } - $note->photoURLs = $photoURLs; + /*$mediaLinks = []; + foreach ($note->media()->get() as $media) { + $mediaLinks[] = $media->url; + }*/ } $homepage = ($request->path() == '/'); @@ -164,13 +161,6 @@ class NotesController extends Controller ); } - $photoURLs = []; - $photos = $note->getMedia(); - foreach ($photos as $photo) { - $photoURLs[] = $photo->getUrl(); - } - $note->photoURLs = $photoURLs; - return view('notes.show', compact('note', 'replies', 'reposts', 'likes')); } diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index c8545185..948eda56 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -12,9 +12,10 @@ class VerifyCsrfToken extends BaseVerifier * @var array */ protected $except = [ - 'api/token', + 'api/media', 'api/post', - 'webmention', + 'api/token', 'places/new', + 'webmention', ]; } diff --git a/app/Media.php b/app/Media.php new file mode 100644 index 00000000..f0234c6e --- /dev/null +++ b/app/Media.php @@ -0,0 +1,33 @@ +belongsTo('App\Note'); + } + + /** + * Get the URL for an S3 media file. + * + * @return string + */ + public function getUrlAttribute() + { + return config('filesystems.disks.s3.url') . '/' . $this->path; + } +} diff --git a/app/Note.php b/app/Note.php index fe574e33..6a51a896 100644 --- a/app/Note.php +++ b/app/Note.php @@ -9,15 +9,12 @@ use Illuminate\Database\Eloquent\Model; use Jonnybarnes\EmojiA11y\EmojiModifier; use League\CommonMark\CommonMarkConverter; use Illuminate\Database\Eloquent\SoftDeletes; -use Spatie\MediaLibrary\HasMedia\HasMediaTrait; -use Spatie\MediaLibrary\HasMedia\Interfaces\HasMedia; use Illuminate\Database\Eloquent\ModelNotFoundException; -class Note extends Model implements HasMedia +class Note extends Model { use Searchable; use SoftDeletes; - use HasMediaTrait; /** * The database table used by the model. @@ -56,6 +53,16 @@ class Note extends Model implements HasMedia return $this->belongsTo('App\Place'); } + /** + * Define the relationship with media. + * + * @return void + */ + public function media() + { + return $this->hasMany('App\Media'); + } + /** * We shall set a blacklist of non-modifiable model attributes. * diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index f5ce84b1..6329b9ea 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -4,11 +4,8 @@ declare(strict_types=1); namespace App\Services; -use App\Note; -use App\Place; -use App\Jobs\SendWebMentions; -use App\Jobs\SyndicateToTwitter; -use App\Jobs\SyndicateToFacebook; +use App\{Media, Note, Place}; +use App\Jobs\{SendWebMentions, SyndicateToFacebook, SyndicateToTwitter}; class NoteService { @@ -55,6 +52,15 @@ class NoteService } } */ + //add support for media uploaded as URLs + foreach ($data['photo'] as $photo) { + // check the media was uploaded to my endpoint + if (starts_with($photo, config('filesystems.disks.s3.url'))) { + $path = substr($photo, strlen(config('filesystems.disks.s3.url'))); + $media = Media::where('path', ltrim($path, '/'))->firstOrFail(); + $note->media()->save($media); + } + } $note->save(); diff --git a/changelog.md b/changelog.md index a6fe7f33..4d08c322 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## Version {next} + - Media endpoint added + ## Version 0.3.6 (2017-03-07) - Pull in Piwik’s own piwik.js manually, again for CSP diff --git a/composer.json b/composer.json index 8eab83ba..0c57c02e 100644 --- a/composer.json +++ b/composer.json @@ -6,26 +6,26 @@ "type": "project", "require": { "php": ">=7.1.0", - "laravel/framework": "5.4.*", + "ezyang/htmlpurifier": "~4.6", + "guzzlehttp/guzzle": "~6.0", + "indieauth/client": "~0.1", + "jonnybarnes/emoji-a11y": "^0.2", "jonnybarnes/indieweb": "dev-master", "jonnybarnes/webmentions-parser": "0.4.*", - "guzzlehttp/guzzle": "~6.0", - "predis/predis": "~1.0", - "thujohn/twitter": "~2.0", - "mf2/mf2": "~0.3", - "martinbean/laravel-sluggable-trait": "0.2.*", - "indieauth/client": "~0.1", - "ezyang/htmlpurifier": "~4.6", - "league/commonmark": "^0.15.0", - "spatie/laravel-medialibrary": "^4.0", - "league/flysystem-aws-s3-v3": "^1.0", - "phaza/laravel-postgis": "~3.1", - "lcobucci/jwt": "^3.1", - "sensiolabs/security-checker": "^4.0", + "laravel/framework": "5.4.*", "laravel/scout": "^3.0", + "laravel/tinker": "^1.0", + "lcobucci/jwt": "^3.1", + "league/commonmark": "^0.15.0", + "league/flysystem-aws-s3-v3": "^1.0", + "martinbean/laravel-sluggable-trait": "0.2.*", + "mf2/mf2": "~0.3", + "phaza/laravel-postgis": "~3.1", "pmatseykanets/laravel-scout-postgres": "^0.5.0", - "jonnybarnes/emoji-a11y": "^0.2", - "laravel/tinker": "^1.0" + "predis/predis": "~1.0", + "ramsey/uuid": "^3.5", + "sensiolabs/security-checker": "^4.0", + "thujohn/twitter": "~2.0" }, "require-dev": { "barryvdh/laravel-debugbar": "~2.0", diff --git a/composer.lock b/composer.lock index ebdebdff..7a3ccfac 100644 --- a/composer.lock +++ b/composer.lock @@ -4,76 +4,26 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "f3b7bcd2d79e776a84c1387f2086a5cc", + "content-hash": "3a440750c3e5403668fd82dbe7c54de0", "packages": [ - { - "name": "anahkiasen/underscore-php", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/Anahkiasen/underscore-php.git", - "reference": "48f97b295c82d99c1fe10d8b0684c43f051b5580" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Anahkiasen/underscore-php/zipball/48f97b295c82d99c1fe10d8b0684c43f051b5580", - "reference": "48f97b295c82d99c1fe10d8b0684c43f051b5580", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.0", - "patchwork/utf8": "^1.2", - "php": ">=5.4.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "2.0.*@dev", - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Underscore\\": [ - "src", - "tests" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maxime Fabre", - "email": "ehtnam6@gmail.com" - } - ], - "description": "A redacted port of Underscore.js for PHP", - "keywords": [ - "internals", - "laravel", - "toolkit" - ], - "time": "2015-05-16T19:24:58+00:00" - }, { "name": "aws/aws-sdk-php", - "version": "3.18.23", + "version": "3.24.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "a2791b6f14b7aa6eeb4fb9f3f779cc291ab455db" + "reference": "2823e0a0742505f655b0cb3bcdb10844f60e6078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a2791b6f14b7aa6eeb4fb9f3f779cc291ab455db", - "reference": "a2791b6f14b7aa6eeb4fb9f3f779cc291ab455db", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2823e0a0742505f655b0cb3bcdb10844f60e6078", + "reference": "2823e0a0742505f655b0cb3bcdb10844f60e6078", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "~5.3|~6.0.1|~6.1", + "guzzlehttp/guzzle": "^5.3.1|^6.2.1", "guzzlehttp/promises": "~1.0", - "guzzlehttp/psr7": "~1.0", + "guzzlehttp/psr7": "^1.3.1, !=1.4.0", "mtdowling/jmespath.php": "~2.2", "php": ">=5.5" }, @@ -134,7 +84,7 @@ "s3", "sdk" ], - "time": "2016-06-30T19:49:43+00:00" + "time": "2017-03-14T00:56:44+00:00" }, { "name": "barnabywalters/mf-cleaner", @@ -777,16 +727,16 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.9.0", + "version": "v4.9.2", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "a1c09b09e398687deeb8e309a6305def4b43439b" + "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/a1c09b09e398687deeb8e309a6305def4b43439b", - "reference": "a1c09b09e398687deeb8e309a6305def4b43439b", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", + "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", "shasum": "" }, "require": { @@ -820,7 +770,7 @@ "keywords": [ "html" ], - "time": "2017-01-13T12:31:37+00:00" + "time": "2017-03-13T06:30:53+00:00" }, { "name": "geo-io/interface", @@ -1178,68 +1128,6 @@ ], "time": "2017-01-11T17:14:49+00:00" }, - { - "name": "intervention/image", - "version": "2.3.11", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "e8881fd99b9804b29e02d6d1c2c15ee459335cf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/e8881fd99b9804b29e02d6d1c2c15ee459335cf1", - "reference": "e8881fd99b9804b29e02d6d1c2c15ee459335cf1", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "3.*" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@olivervogel.net", - "homepage": "http://olivervogel.net/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "time": "2017-02-04T10:37:19+00:00" - }, { "name": "jakub-onderka/php-console-color", "version": "0.1", @@ -1891,16 +1779,16 @@ }, { "name": "league/flysystem", - "version": "1.0.35", + "version": "1.0.36", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "dda7f3ab94158a002d9846a97dc18ebfb7acc062" + "reference": "d9c1698582dfbfbd092ec9c5c3325f862cdb3297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dda7f3ab94158a002d9846a97dc18ebfb7acc062", - "reference": "dda7f3ab94158a002d9846a97dc18ebfb7acc062", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d9c1698582dfbfbd092ec9c5c3325f862cdb3297", + "reference": "d9c1698582dfbfbd092ec9c5c3325f862cdb3297", "shasum": "" }, "require": { @@ -1970,7 +1858,7 @@ "sftp", "storage" ], - "time": "2017-02-09T11:33:58+00:00" + "time": "2017-03-18T16:02:30+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -2019,67 +1907,6 @@ "description": "Flysystem adapter for the AWS S3 SDK v3.x", "time": "2016-06-21T21:34:35+00:00" }, - { - "name": "league/glide", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/glide.git", - "reference": "ae6351088b148ed73ebd1270e312b07fd35dd37d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/ae6351088b148ed73ebd1270e312b07fd35dd37d", - "reference": "ae6351088b148ed73ebd1270e312b07fd35dd37d", - "shasum": "" - }, - "require": { - "intervention/image": "^2.1", - "league/flysystem": "^1.0", - "php": "^5.4 | ^7.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/php-token-stream": "^1.4", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Glide\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jonathan Reinink", - "email": "jonathan@reinink.ca", - "homepage": "http://reinink.ca" - } - ], - "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.", - "homepage": "http://glide.thephpleague.com", - "keywords": [ - "ImageMagick", - "editing", - "gd", - "image", - "imagick", - "league", - "manipulation", - "processing" - ], - "time": "2017-01-19T01:26:54+00:00" - }, { "name": "martinbean/laravel-sluggable-trait", "version": "0.2.0", @@ -2177,16 +2004,16 @@ }, { "name": "monolog/monolog", - "version": "1.22.0", + "version": "1.22.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bad29cb8d18ab0315e6c477751418a82c850d558" + "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558", - "reference": "bad29cb8d18ab0315e6c477751418a82c850d558", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1e044bc4b34e91743943479f1be7a1d5eb93add0", + "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0", "shasum": "" }, "require": { @@ -2251,7 +2078,7 @@ "logging", "psr-3" ], - "time": "2016-11-26T00:15:39+00:00" + "time": "2017-03-13T07:08:03+00:00" }, { "name": "mtdowling/cron-expression", @@ -2407,16 +2234,16 @@ }, { "name": "nikic/php-parser", - "version": "v3.0.4", + "version": "v3.0.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0bf561dfe75ba80441c22adecc0529056671a7d2" + "reference": "2b9e2f71b722f7c53918ab0c25f7646c2013f17d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0bf561dfe75ba80441c22adecc0529056671a7d2", - "reference": "0bf561dfe75ba80441c22adecc0529056671a7d2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2b9e2f71b722f7c53918ab0c25f7646c2013f17d", + "reference": "2b9e2f71b722f7c53918ab0c25f7646c2013f17d", "shasum": "" }, "require": { @@ -2454,20 +2281,20 @@ "parser", "php" ], - "time": "2017-02-10T20:20:03+00:00" + "time": "2017-03-05T18:23:57+00:00" }, { "name": "paragonie/random_compat", - "version": "v2.0.8", + "version": "v2.0.10", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "eeb4c23c7b84c1dc87db3c92856bd57ff1844ca4" + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/eeb4c23c7b84c1dc87db3c92856bd57ff1844ca4", - "reference": "eeb4c23c7b84c1dc87db3c92856bd57ff1844ca4", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", "shasum": "" }, "require": { @@ -2502,66 +2329,7 @@ "pseudorandom", "random" ], - "time": "2017-03-03T14:11:40+00:00" - }, - { - "name": "patchwork/utf8", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/tchwork/utf8.git", - "reference": "30ec6451aec7d2536f0af8fe535f70c764f2c47a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tchwork/utf8/zipball/30ec6451aec7d2536f0af8fe535f70c764f2c47a", - "reference": "30ec6451aec7d2536f0af8fe535f70c764f2c47a", - "shasum": "" - }, - "require": { - "lib-pcre": ">=7.3", - "php": ">=5.3.0" - }, - "suggest": { - "ext-iconv": "Use iconv for best performance", - "ext-intl": "Use Intl for best performance", - "ext-mbstring": "Use Mbstring for best performance", - "ext-wfio": "Use WFIO for UTF-8 filesystem access on Windows" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Patchwork\\": "src/Patchwork/" - }, - "classmap": [ - "src/Normalizer.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "(Apache-2.0 or GPL-2.0)" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Portable and performant UTF-8, Unicode and Grapheme Clusters for PHP", - "homepage": "https://github.com/tchwork/utf8", - "keywords": [ - "grapheme", - "i18n", - "unicode", - "utf-8", - "utf8" - ], - "time": "2016-05-18T13:57:10+00:00" + "time": "2017-03-13T16:27:32+00:00" }, { "name": "phaza/laravel-postgis", @@ -2890,21 +2658,21 @@ }, { "name": "ramsey/uuid", - "version": "3.5.2", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954" + "reference": "0b7bdfb180e72c8d76e75a649ced67e392201458" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/5677cfe02397dd6b58c861870dfaa5d9007d3954", - "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/0b7bdfb180e72c8d76e75a649ced67e392201458", + "reference": "0b7bdfb180e72c8d76e75a649ced67e392201458", "shasum": "" }, "require": { "paragonie/random_compat": "^1.0|^2.0", - "php": ">=5.4" + "php": "^5.4 || ^7.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2968,20 +2736,20 @@ "identifier", "uuid" ], - "time": "2016-11-22T19:21:44+00:00" + "time": "2017-03-18T15:38:09+00:00" }, { "name": "sensiolabs/security-checker", - "version": "v4.0.1", + "version": "v4.0.2", "source": { "type": "git", "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "f2ce0035fc512287978510ca1740cd111d60f89f" + "reference": "56bded66985e22f6eac2cf86735fd21c625bff2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/f2ce0035fc512287978510ca1740cd111d60f89f", - "reference": "f2ce0035fc512287978510ca1740cd111d60f89f", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/56bded66985e22f6eac2cf86735fd21c625bff2f", + "reference": "56bded66985e22f6eac2cf86735fd21c625bff2f", "shasum": "" }, "require": { @@ -3012,224 +2780,7 @@ } ], "description": "A security checker for your composer.lock", - "time": "2017-02-18T17:53:25+00:00" - }, - { - "name": "spatie/laravel-glide", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-glide.git", - "reference": "a75f9069a04a1337e7c5308fd4975821f8177f23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-glide/zipball/a75f9069a04a1337e7c5308fd4975821f8177f23", - "reference": "a75f9069a04a1337e7c5308fd4975821f8177f23", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.3.0|~5.4.0", - "league/glide": "^1.0", - "php": "^7.0" - }, - "require-dev": { - "orchestra/testbench": "~3.3.0|~3.4.0", - "phpunit/phpunit": "5.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Glide\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be" - } - ], - "description": "Easily convert images with Glide", - "homepage": "https://github.com/spatie/laravel-glide", - "time": "2017-01-24T10:51:47+00:00" - }, - { - "name": "spatie/laravel-medialibrary", - "version": "4.13.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "89432693fa66aa101499f0f89cfcdec51a620471" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/89432693fa66aa101499f0f89cfcdec51a620471", - "reference": "89432693fa66aa101499f0f89cfcdec51a620471", - "shasum": "" - }, - "require": { - "illuminate/bus": "~5.2.0|~5.3.0|~5.4.0", - "illuminate/console": "~5.2.0|~5.3.0|~5.4.0", - "illuminate/container": "~5.2.0|~5.3.28|~5.4.0", - "illuminate/contracts": "~5.2.0|~5.3.28|~5.4.0", - "illuminate/database": "~5.2.0|~5.3.0|~5.4.0", - "illuminate/filesystem": "~5.2.0|~5.3.0|~5.4.0", - "illuminate/support": "~5.2.0|~5.3.0|~5.4.0", - "league/flysystem": "^1.0.13", - "php": "^7.0", - "spatie/laravel-glide": "^3.0.0", - "spatie/pdf-to-image": "^1.2", - "spatie/string": "^2.0.0" - }, - "conflict": { - "php-ffmpeg/php-ffmpeg": "<0.6.1" - }, - "require-dev": { - "doctrine/dbal": "^2.5.2", - "league/flysystem-aws-s3-v3": "^1.0.13", - "mockery/mockery": "^0.9.4", - "orchestra/testbench": "~3.2.0|~3.3.0|~3.4.0", - "phpunit/phpunit": "^5.7.0" - }, - "suggest": { - "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage", - "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\MediaLibrary\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://murze.be", - "role": "Developer" - } - ], - "description": "Associate files with Eloquent models", - "homepage": "https://github.com/spatie/laravel-medialibrary", - "keywords": [ - "cms", - "laravel", - "laravel-medialibrary", - "media", - "spatie" - ], - "time": "2017-01-30T13:33:03+00:00" - }, - { - "name": "spatie/pdf-to-image", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/pdf-to-image.git", - "reference": "9a5cb264a99e87e010c65d4ece03b51f821d55bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/pdf-to-image/zipball/9a5cb264a99e87e010c65d4ece03b51f821d55bd", - "reference": "9a5cb264a99e87e010c65d4ece03b51f821d55bd", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\PdfToImage\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Convert a pdf to an image", - "homepage": "https://github.com/spatie/pdf-to-image", - "keywords": [ - "convert", - "image", - "pdf", - "pdf-to-image", - "spatie" - ], - "time": "2016-12-14T15:37:00+00:00" - }, - { - "name": "spatie/string", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/string.git", - "reference": "5435f8095a6c2f4ac67cbc9a1fbc116197863144" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/string/zipball/5435f8095a6c2f4ac67cbc9a1fbc116197863144", - "reference": "5435f8095a6c2f4ac67cbc9a1fbc116197863144", - "shasum": "" - }, - "require": { - "anahkiasen/underscore-php": "^2.0", - "php": ">=5.6.0" - }, - "require-dev": { - "phpunit/phpunit": "5.*", - "scrutinizer/ocular": "~1.1" - }, - "type": "library", - "autoload": { - "files": [ - "src/string_functions.php" - ], - "psr-4": { - "Spatie\\String\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://murze.be", - "role": "Developer" - } - ], - "description": "String handling evolved", - "homepage": "https://github.com/spatie/string", - "keywords": [ - "handling", - "handy", - "spatie", - "string" - ], - "time": "2016-12-01T13:46:28+00:00" + "time": "2017-03-09T17:33:20+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -3287,16 +2838,16 @@ }, { "name": "symfony/console", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870" + "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0e5e6899f82230fcb1153bcaf0e106ffaa44b870", - "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870", + "url": "https://api.github.com/repos/symfony/console/zipball/28fb243a2b5727774ca309ec2d92da240f1af0dd", + "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd", "shasum": "" }, "require": { @@ -3346,20 +2897,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-02-16T14:07:22+00:00" + "time": "2017-03-06T19:30:27+00:00" }, { "name": "symfony/css-selector", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa" + "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/f0e628f04fc055c934b3211cfabdb1c59eefbfaa", - "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/a48f13dc83c168f1253a5d2a5a4fb46c36244c4c", + "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c", "shasum": "" }, "require": { @@ -3399,20 +2950,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:32:22+00:00" + "time": "2017-02-21T09:12:04+00:00" }, { "name": "symfony/debug", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9" + "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/9b98854cb45bc59d100b7d4cc4cf9e05f21026b9", - "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9", + "url": "https://api.github.com/repos/symfony/debug/zipball/b90c9f91ad8ac37d9f114e369042d3226b34dc1a", + "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a", "shasum": "" }, "require": { @@ -3456,20 +3007,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-02-16T16:34:18+00:00" + "time": "2017-02-18T17:28:00+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6" + "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9137eb3a3328e413212826d63eeeb0217836e2b6", - "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", + "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", "shasum": "" }, "require": { @@ -3516,20 +3067,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:32:22+00:00" + "time": "2017-02-21T09:12:04+00:00" }, { "name": "symfony/finder", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8c71141cae8e2957946b403cc71a67213c0380d6" + "reference": "92d7476d2df60cd851a3e13e078664b1deb8ce10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8c71141cae8e2957946b403cc71a67213c0380d6", - "reference": "8c71141cae8e2957946b403cc71a67213c0380d6", + "url": "https://api.github.com/repos/symfony/finder/zipball/92d7476d2df60cd851a3e13e078664b1deb8ce10", + "reference": "92d7476d2df60cd851a3e13e078664b1deb8ce10", "shasum": "" }, "require": { @@ -3565,20 +3116,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-01-02T20:32:22+00:00" + "time": "2017-02-21T09:12:04+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a90da6dd679605d88c9803a57a6fc1fb7a19a6e0" + "reference": "c57009887010eb4e58bfca2970314a5b820b24b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a90da6dd679605d88c9803a57a6fc1fb7a19a6e0", - "reference": "a90da6dd679605d88c9803a57a6fc1fb7a19a6e0", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c57009887010eb4e58bfca2970314a5b820b24b9", + "reference": "c57009887010eb4e58bfca2970314a5b820b24b9", "shasum": "" }, "require": { @@ -3618,20 +3169,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2017-02-16T22:46:52+00:00" + "time": "2017-03-04T12:23:14+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4cd0d4bc31819095c6ef13573069f621eb321081" + "reference": "bc909e85b8585c9edf043d0fca871308c41bb9b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4cd0d4bc31819095c6ef13573069f621eb321081", - "reference": "4cd0d4bc31819095c6ef13573069f621eb321081", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/bc909e85b8585c9edf043d0fca871308c41bb9b4", + "reference": "bc909e85b8585c9edf043d0fca871308c41bb9b4", "shasum": "" }, "require": { @@ -3700,7 +3251,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2017-02-16T23:59:56+00:00" + "time": "2017-03-10T18:35:31+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -3763,16 +3314,16 @@ }, { "name": "symfony/process", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0ab87c1e7570b3534a6e51eb4ca8e9f6d7327856" + "reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0ab87c1e7570b3534a6e51eb4ca8e9f6d7327856", - "reference": "0ab87c1e7570b3534a6e51eb4ca8e9f6d7327856", + "url": "https://api.github.com/repos/symfony/process/zipball/68bfa8c83f24c0ac04ea7193bcdcda4519f41892", + "reference": "68bfa8c83f24c0ac04ea7193bcdcda4519f41892", "shasum": "" }, "require": { @@ -3808,20 +3359,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-02-16T14:07:22+00:00" + "time": "2017-03-04T12:23:14+00:00" }, { "name": "symfony/routing", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "af464432c177dbcdbb32295113b7627500331f2d" + "reference": "d6605f9a5767bc5bc4895e1c762ba93964608aee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/af464432c177dbcdbb32295113b7627500331f2d", - "reference": "af464432c177dbcdbb32295113b7627500331f2d", + "url": "https://api.github.com/repos/symfony/routing/zipball/d6605f9a5767bc5bc4895e1c762ba93964608aee", + "reference": "d6605f9a5767bc5bc4895e1c762ba93964608aee", "shasum": "" }, "require": { @@ -3883,20 +3434,20 @@ "uri", "url" ], - "time": "2017-01-28T02:37:08+00:00" + "time": "2017-03-02T15:58:09+00:00" }, { "name": "symfony/translation", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029" + "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/d6825c6bb2f1da13f564678f9f236fe8242c0029", - "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029", + "url": "https://api.github.com/repos/symfony/translation/zipball/0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", + "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", "shasum": "" }, "require": { @@ -3909,7 +3460,7 @@ "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.8|~3.0", - "symfony/intl": "~2.8|~3.0", + "symfony/intl": "^2.8.18|^3.2.5", "symfony/yaml": "~2.8|~3.0" }, "suggest": { @@ -3947,26 +3498,29 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-02-16T22:46:52+00:00" + "time": "2017-03-04T12:23:14+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "cb50260b674ee1c2d4ab49f2395a42e0b4681e20" + "reference": "4100f347aff890bc16b0b4b42843b599db257b2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cb50260b674ee1c2d4ab49f2395a42e0b4681e20", - "reference": "cb50260b674ee1c2d4ab49f2395a42e0b4681e20", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4100f347aff890bc16b0b4b42843b599db257b2d", + "reference": "4100f347aff890bc16b0b4b42843b599db257b2d", "shasum": "" }, "require": { "php": ">=5.5.9", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, "require-dev": { "twig/twig": "~1.20|~2.0" }, @@ -4010,7 +3564,7 @@ "debug", "dump" ], - "time": "2017-02-16T22:46:52+00:00" + "time": "2017-02-20T13:45:48+00:00" }, { "name": "themattharris/tmhoauth", @@ -5177,16 +4731,16 @@ }, { "name": "phpunit/phpunit", - "version": "5.7.15", + "version": "5.7.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5" + "reference": "dafc78e2a7d12139b0e97078d1082326bd09363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5", - "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/dafc78e2a7d12139b0e97078d1082326bd09363d", + "reference": "dafc78e2a7d12139b0e97078d1082326bd09363d", "shasum": "" }, "require": { @@ -5255,7 +4809,7 @@ "testing", "xunit" ], - "time": "2017-03-02T15:22:43+00:00" + "time": "2017-03-15T13:02:34+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -5318,23 +4872,23 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", - "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { @@ -5359,7 +4913,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2016-02-13T06:45:14+00:00" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", @@ -5831,16 +5385,16 @@ }, { "name": "symfony/yaml", - "version": "v3.2.4", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8" + "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/9724c684646fcb5387d579b4bfaa63ee0b0c64c8", - "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a", + "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a", "shasum": "" }, "require": { @@ -5882,7 +5436,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-02-16T22:46:52+00:00" + "time": "2017-03-07T16:47:02+00:00" }, { "name": "webmozart/assert", diff --git a/config/app.php b/config/app.php index 57d672d9..1b96380e 100644 --- a/config/app.php +++ b/config/app.php @@ -215,11 +215,6 @@ return [ */ Thujohn\Twitter\TwitterServiceProvider::class, - /* - * Laravel Medialibrary - */ - Spatie\MediaLibrary\MediaLibraryServiceProvider::class, - /* * Phaza’s Postgis library */ diff --git a/config/filesystems.php b/config/filesystems.php index 66120369..38b34b97 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -61,6 +61,7 @@ return [ 'secret' => env('AWS_S3_SECRET'), 'region' => env('AWS_S3_REGION'), 'bucket' => env('AWS_S3_BUCKET'), + 'url' => env('AWS_S3_URL'), ], 'media' => [ diff --git a/database/migrations/2017_03_09_155908_create_media_endpoint_table.php b/database/migrations/2017_03_09_155908_create_media_endpoint_table.php new file mode 100644 index 00000000..39de17f7 --- /dev/null +++ b/database/migrations/2017_03_09_155908_create_media_endpoint_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->text('token')->nullable(); + $table->string('path'); + $table->string('type'); + $table->unsignedInteger('note_id')->nullable(); + $table->timestamps(); + + $table->index('token'); + $table->foreign('note_id')->references('id')->on('notes'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('media_endpoint', function (Blueprint $table) { + $table->dropForeign(['note_id']); + }); + Schema::dropIfExists('media_endpoint'); + } +} diff --git a/public/assets/css/app.css b/public/assets/css/app.css index a97bf32b..4c0b46bc 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1,2 +1,2 @@ -html{box-sizing:border-box;font-size:24px}*,*::before,*::after{box-sizing:inherit}body{max-width:25em;margin:0 auto;padding-left:5px;padding-right:5px;word-wrap:break-word}#topheader{text-align:center}.h-entry{padding-top:1rem}.note{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.social-links svg{padding-left:3px}.mini-h-card img{display:inline-block;height:1rem}body>.h-card{margin-top:5px;border-top:1px solid grey}footer{margin-top:1rem}footer button{margin-left:5px}.u-comment{margin-top:1em;padding:0 1em;font-size:0.75rem}.u-comment.h-cite img{height:0.75rem}.u-comment .e-content{margin-top:0.5em;font-size:1rem}.container{position:relative;width:100%;height:0;padding-bottom:56.25%}.youtube{position:absolute;top:0;left:0;width:100%;height:100%}body{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}footer{font-size:0.5rem;text-align:center}footer p>a{border-bottom:none}.iwc-logo{width:100px;height:auto}.pagination{width:100%;height:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;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{-webkit-box-flex:1;-ms-flex:1;flex:1}.note-ui textarea{padding:0.1rem 0.3rem}#locate{margin-right:0.4rem}.map{margin-top:4px;height:200px}.marker{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsTAAALEwEAmpwYAAACxFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMyaeDAAAA63RSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ozw9Pj9AQUJERUZHSElKS05PUlNVVldYWVpbXF1fYGFiY2RmZ2hpa2xtbm9wcXJzdHV2d3h5ent8fX+AgYKDhIWGh4iJiouMjo+QkZOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqutrq+xsrO0tbe4ubq7vL2+v8DBwsPExcbHyMnKy8zP0NHS09TV1tfY2drb3N3f4OHi4+Tl5ujp6uvs7e7v8PHy8/T19vf4+fr7/P3+xn8cLwAAB2BJREFUGBntwYtjlWUdB/Dvuwtjo23CGPcxtlGAFhgWFCINSZciCYGKwLSbMwuQi4lgbkSTgYOAiYEI5a0JmQhRAYKBgmzJbSwgGTDYxs45nO8/0d0Mzu897+V53kv1+QD/9z8jd9T9ize/tfdw04VY+9mjf9hV/1xFWXEKQiV11Nytp5nIlfdq781HOBRWvHaBZuLvPVuWhoDLmbkjTgvOVN+CABu/qZ2WHZrTA4Fk3L2X9lxa2geBkzLlIO3rqBmIYBl/mM5ElmUjOPpuonPNkxEQqRUX6cqbn0EQFL1Dtzor4L9JF6jAK93hr4zlVOP4aPhpwH6qEvkO/DPsJBWqhF++9BGVqkuDL8raqNgvs+CDSVEqtysLniu9Qg3q0+Cxz7dSixcMeKrkNDVZCi/1PEptHoV3jDeoT3QMPDOXtnTEaEdTHjwyJkpLLm+rmjGm4IY0ILPXsImz1zXQmnoDnshrogVHnhiTjmv0v2/LFVowG554iUldXjEaid1Qvo9JRYfDAxOYzPlFeTAxYSeT+a0B7TIaaS72k1wkcfsRJjEd2i2gud+PQHJd5rXT1Nnu0KyonWauPpECS246TFPPQbMNNHN6PKzKep5mrg6BViUxmmgohA3zaaYOWv2UJvblw5ZZMcqihdBoQCdl+7Nh09Q4ZSuh0bOUNebDtgrKrvSFNjltFJ0ZBAeWUrYE2syg6OoEOJG6k6ITBnTZQdFiONPvLEWl0KQwTsm+VDg0kaJ10GQBJVe/AMdeo6Q1E3ocoWQlnBvUTskUaDGIkkt5cOFpStZDixmULIUb+W0UnIQWGyjo6ANXqikZDB2aKaiDO4VxCsqhwRBKSuHSDgpeggYzKThhwKWZFDRDgx9TUAW3cqIU5EC91ym4A67tpuCLUK+RiUW6wbUlFNwH5dKjTOx3cO92Cp6CckMpqIV7vSnYAuXupOBRKHCeib0D5e6loAwK7GFiR6DcTAo+CwW2MLFmKFdBQSEUWMvEWqHcQgp6QIFqJhY3oFolBRlQYDEFn4Jq1RRkQ4GlFORBtSUU9IMCtRRkQLW5FAyBAhuZWATKPUzBGCiwjYn9GcrdRcGDUOA4E9sP5YZS8Azcy4wzsc1QLiPOxF6FeyMo+BHUO8bEzhpw7VsUTId6L1PwObj2CwqGQ735FDwCt4xzTKwjDeqVUbAdbo2lYC806ElBfCBcWkNBDXQ4RME8uNP1AgVfhw4rKTiaClemU9IbOkymZBrcSGmg4ANo0YeS9w24MJmSWuhxgJKpcC79MCX3QI9nKPlTDhybTUkkG3qMo6gaThVcpuRtaJJ2kZLYWDhjbKPoB9Dl5xSd6glH5lN2E3SZRtkbKXBgXIyiRmiTG6GsBvYNO0dZJfTZShMLYdeAkzQxGvqU08xjsKfgA5poNqBPrxjNVBmw4cYmmqmBTr+mqZ9lwrLSFpq6FTrNormDQ2FNyg+v0tRJAzp176S5y+UGLCjaziSqoNfrTGb3zUgmY2E7kxkJvb7BpGJrSmAm7YE/MqkGaJbVyuRiG0dCkv3NY7RgAXRbR0ven1OA66Xf+WI7rYgXQrdxtKqxdvKwdHwsf+zcX7XRorehnXGMNkQb33x5fc3qTfV7WmjHg9BvEfVry4Z+xXFq9wK88Ba1uw1emErdGuCJri3UbA68sZx6RXvDG8Op1yvwyh5qdQe8Mp06HTXglcwWajQH3qmmPp358M5Q6rMJXtpObW6DlyZRlwPwVFoTNSmHtxZQj/NZ8FavTmqxDF7bQB3iJfDaKOpQD+/tpgZfhfemUL1D8EHaKSr3EPzwOFVryYIf8tqpWCX8sYpqRQvgj6FxKvUi/FJPpW6BX8ZTpZ3wz7tU6G74536q02jAP+mnqMzD8NP3qcqZrvBTzkUqshD+qqIabXnwV/8IlVgOv9VRhVgR/HZjnApsgv9epQI3w39fpntbEQS/oWulCIK76NZeBMMBunQPgmEq3TlsIBhSP6QrDyAoyunG8TQERZdmuvBtBMf36NyZTARHt4/o2OMIkoV0qiUHQZJ7gQ49iWBZQmdaeyBYel6mI5UImmV0or0XgqZvBx2oRvDU0L4r/RA8Azpp2woE0Sra1VmAICqM0KZVCKa1tCc6CMFUEqUtaxFUdbQjWoSgGhyjDWsRXM/TumgxgmtwjJatQ5Ctp1XREgTZ4BgtWodgq6M10WIEW3GUlqxB0K2lFZFBCLqiCC1YjeBbzeQ6ByL4BnYyqRUIg5VMpqM/wqB/B5OoRjhU01xbH4RD7zaaqkJYVNJMax7CIq+VJp5CeCyirCUX4ZF7jqJ5CJO5lJzphjDJOk1BBcLlESbWlIFwyTjJhB5C2MxiIh+mI2zSGpjANITPFF7vYArCx3iX15mIMPoar7UH4bSL1/gKwulW/qdtCKt6flJ8JMJqRJyfsBnhtZH/Fv00wqs4wo/VIsyW81/a+iHMel3iPz2NcHuS/3AuF+GWfZZ/9xjC7rv8mxMZCLsuR/lX0xF+U0geTEH4GfvIMvw3KOV2aPcXaWsyKghlwmgAAAAASUVORK5CYII=);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}.contact{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-top:1em;border-bottom:1px dashed grey}.contact img{margin-right:0.2rem;width:100px;height:100px}span[role=img][aria-label],span[role=img][aria-label]{position:relative}span[role=img][aria-label]:focus::after,span[role=img][aria-label]:hover::after{position:absolute;display:block;z-index:1;bottom:1.5em;left:0;max-width:5em;padding:0.5em 0.75em;border:0.05em solid #fff;border-radius:0.2em;box-shadow:0.15em 0.15em 0.5em #000;content:attr(aria-label);background-color:rgba(0,0,0,0.85);color:#fff;font-size:80%;-webkit-animation:TOOLTIP 0.1s ease-out 1;animation:TOOLTIP 0.1s ease-out 1}@-webkit-keyframes TOOLTIP{from{bottom:0.5em;background-color:transparent;border:0.05em solid rgba(255,255,255,0);color:rgba(255,255,255,0);box-shadow:0 0 0 #000}to{bottom:1.5em;background-color:rgba(0,0,0,0.85);border:0.05em solid #fff;color:#fff;box-shadow:0.15em 0.15em 0.5em #000}}@keyframes TOOLTIP{from{bottom:0.5em;background-color:transparent;border:0.05em solid rgba(255,255,255,0);color:rgba(255,255,255,0);box-shadow:0 0 0 #000}to{bottom:1.5em;background-color:rgba(0,0,0,0.85);border:0.05em solid #fff;color:#fff;box-shadow:0.15em 0.15em 0.5em #000}}@media print{span[role=img][aria-label]::after{content:" (" attr(aria-label) ") "}} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXQuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9zdHlsZXMuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdpbmF0aW9uLnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3Mvbm90ZS1mb3JtLnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbWFwYm94LnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29udGFjdHMuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9lbW9qaS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLEtBQ0ksc0JBQ0EsY0FBZSxDQUNsQixxQkFLRyxrQkFBbUIsQ0FDdEIsS0NWRyxlQUNBLGNBQ0EsaUJBQ0Esa0JBQ0Esb0JBQXFCLENBQ3hCLFdBR0csaUJBQWtCLENBQ3JCLFNBR0csZ0JBQWlCLENBQ3BCLE1BR0csb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsNEJBQXNCLEFBQXRCLDZCQUFzQixBQUF0QiwwQkFBc0IsQUFBdEIscUJBQXNCLENBQ3pCLGVBR0csb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EseUJBQ0EsQUFEQSxzQkFDQSxBQURBLDhCQUNBLGdCQUFpQixDQUNwQixjQUdHLG9CQUNBLEFBREEsb0JBQ0EsQUFEQSxhQUNBLHlCQUFtQixBQUFuQixzQkFBbUIsQUFBbkIsa0JBQW1CLENBQ3RCLGtCQUdHLGdCQUFpQixDQUNwQixpQkFHRyxxQkFDQSxXQUFZLENBQ2YsYUFHRyxlQUNBLHlCQUEwQixDQUM3QixPQUdHLGVBQWdCLENBQ25CLGNBR0csZUFBZ0IsQ0FDbkIsV0FHRyxlQUNBLGNBQ0EsaUJBQWtCLENBQ3JCLHNCQUdHLGNBQWUsQ0FDbEIsc0JBR0csaUJBQ0EsY0FBZSxDQUNsQixXQUdHLGtCQUNBLFdBQ0EsU0FDQSxxQkFBc0IsQ0FDekIsU0FHRyxrQkFDQSxNQUNBLE9BQ0EsV0FDQSxXQUFZLENBQ2YsS0NqRkcsNkpBV2MsQ0FDakIsRUFHRyxxQkFDQSx3QkFDQSxVQUFXLENBQ2QsZ0JBR0csa0JBQW1CLENBQ3RCLE1BR0csV0FDQSxVQUFXLENBQ2QsT0FHRyxpQkFDQSxpQkFBa0IsQ0FDckIsV0FHRyxrQkFBbUIsQ0FDdEIsVUFHRyxZQUNBLFdBQVksQ0FDZixZQzFDRyxXQUNBLFlBQ0Esb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EseUJBQ0EsQUFEQSxzQkFDQSxBQURBLDhCQUNBLHlCQUFtQixBQUFuQixzQkFBbUIsQUFBbkIsa0JBQW1CLENBQ3RCLGVBR0csb0JBQXFCLENBQ3hCLFNDVkcsb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsNEJBQXNCLEFBQXRCLDZCQUFzQixBQUF0QiwwQkFBc0IsQUFBdEIscUJBQXNCLENBQ3pCLDBCQUdHLGFBQ0ksb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EsY0FBZSxDQUNsQixDQUdMLDBCQUNJLHNCQUNJLFVBQVcsQ0FDZCxDQUdMLGVBQ0ksVUFDQSxvQkFDQSxnQkFBaUIsQ0FDcEIsb0RBSUcsbUJBQU8sQUFBUCxXQUFPLEFBQVAsTUFBTyxDQUNWLGtCQUdHLHFCQUFzQixDQUN6QixRQUdHLG1CQUFvQixDQUN2QixLQ25DRyxlQUNBLFlBQWEsQ0FDaEIsUUFHRyx5NEhBQ0Esd0JBQ0EsV0FDQSxXQUFZLENBQ2YsVUFHRyxrQkFDQSxNQUNBLE9BQ0EsaUJBQ0EsY0FBZSxDQUNsQixnQkFHRyxnQkFDQSxnQkFBaUIsQ0FDcEIsU0N0Qkcsb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EsZUFDQSw2QkFBOEIsQ0FDakMsYUFHRyxvQkFDQSxZQUNBLFlBQWEsQ0FDaEIsc0RDUEcsaUJBQWtCLENBQ3JCLGdGQUlHLGtCQUNBLGNBQ0EsVUFDQSxhQUNBLE9BQ0EsY0FDQSxxQkFDQSx5QkFDQSxvQkFDQSxvQ0FDQSx5QkFDQSxrQ0FDQSxXQUNBLGNBQ0EsMENBQWtDLEFBQWxDLGlDQUFrQyxDQUNyQywyQkFHRyxLQUNJLGFBQ0EsNkJBQ0Esd0NBQ0EsMEJBQ0EscUJBQWtDLENBR3RDLEdBQ0ksYUFDQSxrQ0FDQSx5QkFDQSxXQUNBLG1DQUFnRCxDQUFBLENBSXhELEFBcEJDLG1CQUdHLEtBQ0ksYUFDQSw2QkFDQSx3Q0FDQSwwQkFDQSxxQkFBa0MsQ0FHdEMsR0FDSSxhQUNBLGtDQUNBLHlCQUNBLFdBQ0EsbUNBQWdELENBQUEsQ0FJeEQsYUFDSSxrQ0FDSSxrQ0FBbUMsQ0FDdEMsQ0FBQSIsImZpbGUiOiJhcHAuY3NzIn0= */ \ No newline at end of file +html{box-sizing:border-box;font-size:24px}*,*::before,*::after{box-sizing:inherit}body{max-width:25em;margin:0 auto;padding-left:5px;padding-right:5px;word-wrap:break-word}#topheader{text-align:center}.h-entry{padding-top:1rem}.note{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.social-links svg{padding-left:3px}.mini-h-card img{display:inline-block;height:1rem}body>.h-card{margin-top:5px;border-top:1px solid grey}footer{margin-top:1rem}footer button{margin-left:5px}.u-comment{margin-top:1em;padding:0 1em;font-size:0.75rem}.u-comment.h-cite img{height:0.75rem}.u-comment .e-content{margin-top:0.5em;font-size:1rem}.container{position:relative;width:100%;height:0;padding-bottom:56.25%}.youtube{position:absolute;top:0;left:0;width:100%;height:100%}body{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}footer{font-size:0.5rem;text-align:center}footer p>a{border-bottom:none}.iwc-logo{width:100px;height:auto}.pagination{width:100%;height:3rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;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{-webkit-box-flex:1;-ms-flex:1;flex:1}.note-ui textarea{padding:0.1rem 0.3rem}#locate{margin-right:0.4rem}.mp-media li{list-style-type:none}.mp-media img{height:4em;width:4em}.map{margin-top:4px;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}.contact{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-top:1em;border-bottom:1px dashed grey}.contact img{margin-right:0.2rem;width:100px;height:100px}span[role=img][aria-label],span[role=img][aria-label]{position:relative}span[role=img][aria-label]:focus::after,span[role=img][aria-label]:hover::after{position:absolute;display:block;z-index:1;bottom:1.5em;left:0;max-width:5em;padding:0.5em 0.75em;border:0.05em solid #fff;border-radius:0.2em;box-shadow:0.15em 0.15em 0.5em #000;content:attr(aria-label);background-color:rgba(0,0,0,0.85);color:#fff;font-size:80%;-webkit-animation:TOOLTIP 0.1s ease-out 1;animation:TOOLTIP 0.1s ease-out 1}@-webkit-keyframes TOOLTIP{from{bottom:0.5em;background-color:transparent;border:0.05em solid rgba(255,255,255,0);color:rgba(255,255,255,0);box-shadow:0 0 0 #000}to{bottom:1.5em;background-color:rgba(0,0,0,0.85);border:0.05em solid #fff;color:#fff;box-shadow:0.15em 0.15em 0.5em #000}}@keyframes TOOLTIP{from{bottom:0.5em;background-color:transparent;border:0.05em solid rgba(255,255,255,0);color:rgba(255,255,255,0);box-shadow:0 0 0 #000}to{bottom:1.5em;background-color:rgba(0,0,0,0.85);border:0.05em solid #fff;color:#fff;box-shadow:0.15em 0.15em 0.5em #000}}@media print{span[role=img][aria-label]::after{content:" (" attr(aria-label) ") "}} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9hcHAuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9sYXlvdXQuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9zdHlsZXMuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9wYWdpbmF0aW9uLnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3Mvbm90ZS1mb3JtLnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvbWFwYm94LnNjc3MiLCIuLi8uLi8uLi9yZXNvdXJjZXMvYXNzZXRzL3Nhc3MvY29udGFjdHMuc2NzcyIsIi4uLy4uLy4uL3Jlc291cmNlcy9hc3NldHMvc2Fzcy9lbW9qaS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLEtBQ0ksc0JBQ0EsY0FBZSxDQUNsQixxQkFLRyxrQkFBbUIsQ0FDdEIsS0NWRyxlQUNBLGNBQ0EsaUJBQ0Esa0JBQ0Esb0JBQXFCLENBQ3hCLFdBR0csaUJBQWtCLENBQ3JCLFNBR0csZ0JBQWlCLENBQ3BCLE1BR0csb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsNEJBQXNCLEFBQXRCLDZCQUFzQixBQUF0QiwwQkFBc0IsQUFBdEIscUJBQXNCLENBQ3pCLGVBR0csb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EseUJBQ0EsQUFEQSxzQkFDQSxBQURBLDhCQUNBLGdCQUFpQixDQUNwQixjQUdHLG9CQUNBLEFBREEsb0JBQ0EsQUFEQSxhQUNBLHlCQUFtQixBQUFuQixzQkFBbUIsQUFBbkIsa0JBQW1CLENBQ3RCLGtCQUdHLGdCQUFpQixDQUNwQixpQkFHRyxxQkFDQSxXQUFZLENBQ2YsYUFHRyxlQUNBLHlCQUEwQixDQUM3QixPQUdHLGVBQWdCLENBQ25CLGNBR0csZUFBZ0IsQ0FDbkIsV0FHRyxlQUNBLGNBQ0EsaUJBQWtCLENBQ3JCLHNCQUdHLGNBQWUsQ0FDbEIsc0JBR0csaUJBQ0EsY0FBZSxDQUNsQixXQUdHLGtCQUNBLFdBQ0EsU0FDQSxxQkFBc0IsQ0FDekIsU0FHRyxrQkFDQSxNQUNBLE9BQ0EsV0FDQSxXQUFZLENBQ2YsS0NqRkcsNkpBV2MsQ0FDakIsRUFHRyxxQkFDQSx3QkFDQSxVQUFXLENBQ2QsZ0JBR0csa0JBQW1CLENBQ3RCLE1BR0csV0FDQSxVQUFXLENBQ2QsT0FHRyxpQkFDQSxpQkFBa0IsQ0FDckIsV0FHRyxrQkFBbUIsQ0FDdEIsVUFHRyxZQUNBLFdBQVksQ0FDZixZQzFDRyxXQUNBLFlBQ0Esb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EseUJBQ0EsQUFEQSxzQkFDQSxBQURBLDhCQUNBLHlCQUFtQixBQUFuQixzQkFBbUIsQUFBbkIsa0JBQW1CLENBQ3RCLGVBR0csb0JBQXFCLENBQ3hCLFNDVkcsb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsNEJBQXNCLEFBQXRCLDZCQUFzQixBQUF0QiwwQkFBc0IsQUFBdEIscUJBQXNCLENBQ3pCLDBCQUdHLGFBQ0ksb0JBQ0EsQUFEQSxvQkFDQSxBQURBLGFBQ0EsOEJBQ0EsQUFEQSw2QkFDQSxBQURBLHVCQUNBLEFBREEsbUJBQ0EsY0FBZSxDQUNsQixDQUdMLDBCQUNJLHNCQUNJLFVBQVcsQ0FDZCxDQUdMLGVBQ0ksVUFDQSxvQkFDQSxnQkFBaUIsQ0FDcEIsb0RBSUcsbUJBQU8sQUFBUCxXQUFPLEFBQVAsTUFBTyxDQUNWLGtCQUdHLHFCQUFzQixDQUN6QixRQUdHLG1CQUFvQixDQUN2QixhQUdHLG9CQUFxQixDQUN4QixjQUdHLFdBQ0EsU0FBVSxDQUNiLEtDNUNHLGVBQ0EsWUFBYSxDQUNoQixRQUdHLHk0SEFDQSx3QkFDQSxXQUNBLFdBQVksQ0FDZixVQUdHLGtCQUNBLE1BQ0EsT0FDQSxpQkFDQSxjQUFlLENBQ2xCLGdCQUdHLGdCQUNBLGdCQUFpQixDQUNwQixTQ3RCRyxvQkFDQSxBQURBLG9CQUNBLEFBREEsYUFDQSw4QkFDQSxBQURBLDZCQUNBLEFBREEsdUJBQ0EsQUFEQSxtQkFDQSxlQUNBLDZCQUE4QixDQUNqQyxhQUdHLG9CQUNBLFlBQ0EsWUFBYSxDQUNoQixzRENQRyxpQkFBa0IsQ0FDckIsZ0ZBSUcsa0JBQ0EsY0FDQSxVQUNBLGFBQ0EsT0FDQSxjQUNBLHFCQUNBLHlCQUNBLG9CQUNBLG9DQUNBLHlCQUNBLGtDQUNBLFdBQ0EsY0FDQSwwQ0FBa0MsQUFBbEMsaUNBQWtDLENBQ3JDLDJCQUdHLEtBQ0ksYUFDQSw2QkFDQSx3Q0FDQSwwQkFDQSxxQkFBa0MsQ0FHdEMsR0FDSSxhQUNBLGtDQUNBLHlCQUNBLFdBQ0EsbUNBQWdELENBQUEsQ0FJeEQsQUFwQkMsbUJBR0csS0FDSSxhQUNBLDZCQUNBLHdDQUNBLDBCQUNBLHFCQUFrQyxDQUd0QyxHQUNJLGFBQ0Esa0NBQ0EseUJBQ0EsV0FDQSxtQ0FBZ0QsQ0FBQSxDQUl4RCxhQUNJLGtDQUNJLGtDQUFtQyxDQUN0QyxDQUFBIiwiZmlsZSI6ImFwcC5jc3MifQ== */ \ No newline at end of file diff --git a/public/assets/css/app.css.br b/public/assets/css/app.css.br index 075df169..25fd3179 100644 Binary files a/public/assets/css/app.css.br and b/public/assets/css/app.css.br differ diff --git a/public/assets/css/app.css.gz b/public/assets/css/app.css.gz index 861ad285..50b05659 100644 Binary files a/public/assets/css/app.css.gz and b/public/assets/css/app.css.gz differ diff --git a/public/assets/css/app.css.map b/public/assets/css/app.css.map index 9b81d251..0f09c196 100644 --- a/public/assets/css/app.css.map +++ b/public/assets/css/app.css.map @@ -12,5 +12,5 @@ "../../../resources/assets/sass/emoji.scss" ], "names": [], - "mappings": "AAIA,AAAA,IAAI,AAAC,CACD,UAAU,CAAE,UAAU,CACtB,SAAS,CAAE,IAAI,CAClB,AAED,AAAA,CAAC,CACD,AAAA,CAAC,AAAA,QAAQ,CACT,AAAA,CAAC,AAAA,OAAO,AAAC,CACL,UAAU,CAAE,OAAO,CACtB,ACXD,AAAA,IAAI,AAAC,CACD,SAAS,CAAE,IAAI,CACf,MAAM,CAAE,MAAM,CACd,YAAY,CAAE,GAAG,CACjB,aAAa,CAAE,GAAG,CAClB,SAAS,CAAE,UAAU,CACxB,AAED,AAAA,UAAU,AAAC,CACP,UAAU,CAAE,MAAM,CACrB,AAED,AAAA,QAAQ,AAAC,CACL,WAAW,CAAE,IAAI,CACpB,AAED,AAAA,KAAK,AAAC,CACF,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACzB,AAED,AAAA,cAAc,AAAC,CACX,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,eAAe,CAAE,aAAa,CAC9B,SAAS,CAAE,MAAM,CACpB,AAED,AAAA,aAAa,AAAC,CACV,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACtB,AAED,AAAc,aAAD,CAAC,GAAG,AAAC,CACd,YAAY,CAAE,GAAG,CACpB,AAED,AAAa,YAAD,CAAC,GAAG,AAAC,CACb,OAAO,CAAE,YAAY,CACrB,MAAM,CAAE,IAAI,CACf,AAED,AAAO,IAAH,CAAG,OAAO,AAAC,CACX,UAAU,CAAE,GAAG,CACf,UAAU,CAAE,cAAc,CAC7B,AAED,AAAA,MAAM,AAAC,CACH,UAAU,CAAE,IAAI,CACnB,AAED,AAAO,MAAD,CAAC,MAAM,AAAC,CACV,WAAW,CAAE,GAAG,CACnB,AAED,AAAA,UAAU,AAAC,CACP,UAAU,CAAE,GAAG,CACf,OAAO,CAAE,KAAK,CACd,SAAS,CAAE,OAAO,CACrB,AAED,AAAkB,UAAR,AAAA,OAAO,CAAC,GAAG,AAAC,CAClB,MAAM,CAAE,OAAO,CAClB,AAED,AAAW,UAAD,CAAC,UAAU,AAAC,CAClB,UAAU,CAAE,KAAK,CACjB,SAAS,CAAE,IAAI,CAClB,AAED,AAAA,UAAU,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,CAAC,CACT,cAAc,CAAE,MAAM,CACzB,AAED,AAAA,QAAQ,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,ACnFD,AAAA,IAAI,AAAC,CAED,WAAW,CACP,iJAUU,CACjB,AAED,AAAA,CAAC,AAAC,CACE,eAAe,CAAE,IAAI,CACrB,aAAa,CAAE,SAAS,CACxB,KAAK,CAAE,IAAI,CACd,AAED,AAAc,aAAD,CAAC,CAAC,AAAC,CACZ,aAAa,CAAE,IAAI,CACtB,AAED,AAAA,KAAK,AAAC,CACF,MAAM,CAAE,GAAG,CACX,KAAK,CAAE,IAAI,CACd,AAED,AAAA,MAAM,AAAC,CACH,SAAS,CAAE,MAAM,CACjB,UAAU,CAAE,MAAM,CACrB,AAED,AAAW,MAAL,CAAC,CAAC,CAAG,CAAC,AAAC,CACT,aAAa,CAAE,IAAI,CACtB,AAED,AAAA,SAAS,AAAC,CACN,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,IAAI,CACf,AC3CD,AAAA,WAAW,AAAC,CACR,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,eAAe,CAAE,aAAa,CAC9B,WAAW,CAAE,MAAM,CACtB,AAED,AAAY,WAAD,CAAC,EAAE,AAAC,CACX,eAAe,CAAE,IAAI,CACxB,ACXD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACzB,AAED,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAW,QAAH,CAAG,GAAG,AAAC,CACX,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,OAAO,CAAE,MAAM,CAClB,CAGL,MAAM,EAAE,SAAS,EAAE,KAAK,EACpB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,SAAS,AAAd,CAAgB,CAClB,KAAK,CAAE,IAAI,CACd,CAGL,AAAS,QAAD,CAAC,KAAK,AAAC,CACX,KAAK,CAAE,GAAG,CACV,YAAY,CAAE,MAAM,CACpB,UAAU,CAAE,KAAK,CACpB,AAED,AAAS,QAAD,CAAC,KAAK,AAAA,IAAK,EAAA,AAAA,AAAA,IAAC,CAAD,MAAC,AAAA,GACpB,AAAS,QAAD,CAAC,QAAQ,AAAC,CACd,IAAI,CAAE,CAAC,CACV,AAED,AAAS,QAAD,CAAC,QAAQ,AAAC,CACd,OAAO,CAAE,aAAa,CACzB,AAED,AAAA,OAAO,AAAC,CACJ,YAAY,CAAE,MAAM,CACvB,ACpCD,AAAA,IAAI,AAAC,CACD,UAAU,CAAE,GAAG,CACf,MAAM,CAAE,KAAK,CAChB,AAED,AAAA,OAAO,AAAC,CACJ,gBAAgB,CAAE,u3HAAu3H,CACz4H,eAAe,CAAE,OAAO,CACxB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACf,AAED,AAAA,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,UAAU,CAAE,KAAK,CACjB,OAAO,CAAE,MAAM,CAClB,AAED,AAAU,SAAD,CAAC,KAAK,AAAC,CACZ,WAAW,CAAE,GAAG,CAChB,YAAY,CAAE,GAAG,CACpB,ACvBD,AAAA,QAAQ,AAAC,CACL,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,GAAG,CACnB,UAAU,CAAE,GAAG,CACf,aAAa,CAAE,eAAe,CACjC,AAED,AAAS,QAAD,CAAC,GAAG,AAAC,CACT,YAAY,CAAE,MAAM,CACpB,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,KAAK,CAChB,ACTD,AAAA,IAAI,CAAA,AAAA,IAAC,CAAD,GAAC,AAAA,EAAS,AAAA,UAAC,AAAA,EACf,AAAA,IAAI,CAAA,AAAA,IAAC,CAAD,GAAC,AAAA,EAAS,AAAA,UAAC,AAAA,CAAY,CACvB,QAAQ,CAAE,QAAQ,CACrB,AAED,AAAA,IAAI,CAAA,AAAA,IAAC,CAAD,GAAC,AAAA,EAAS,AAAA,UAAC,AAAA,CAAW,MAAM,AAAA,OAAO,CACvC,AAAA,IAAI,CAAA,AAAA,IAAC,CAAD,GAAC,AAAA,EAAS,AAAA,UAAC,AAAA,CAAW,MAAM,AAAA,OAAO,AAAC,CACpC,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,KAAK,CACb,IAAI,CAAE,CAAC,CACP,SAAS,CAAE,GAAG,CACd,OAAO,CAAE,YAAY,CACrB,MAAM,CAAE,MAAM,CAAC,KAAK,CAAC,IAAsB,CAC3C,aAAa,CAAE,KAAK,CACpB,UAAU,CAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAgB,CAChD,OAAO,CAAE,gBAAgB,CACzB,gBAAgB,CAAE,gBAAmB,CACrC,KAAK,CAAE,IAAsB,CAC7B,SAAS,CAAE,GAAG,CACd,SAAS,CAAE,uBAAuB,CACrC,AAED,UAAU,CAAV,OAAU,CACN,AAAA,IAAI,CACA,MAAM,CAAE,KAAK,CACb,gBAAgB,CAAE,WAAgB,CAClC,MAAM,CAAE,MAAM,CAAC,KAAK,CAAC,mBAAsB,CAC3C,KAAK,CAAE,mBAAsB,CAC7B,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAgB,CAGtC,AAAA,EAAE,CACE,MAAM,CAAE,KAAK,CACb,gBAAgB,CAAE,gBAAmB,CACrC,MAAM,CAAE,MAAM,CAAC,KAAK,CAAC,IAAsB,CAC3C,KAAK,CAAE,IAAsB,CAC7B,UAAU,CAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAgB,EAIxD,MAAM,CAAC,KAAK,CACR,AAAA,IAAI,CAAA,AAAA,IAAC,CAAD,GAAC,AAAA,EAAS,AAAA,UAAC,AAAA,CAAW,OAAO,AAAC,CAC9B,OAAO,CAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACtC" + "mappings": "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" } \ No newline at end of file diff --git a/resources/assets/sass/note-form.scss b/resources/assets/sass/note-form.scss index 1aadfafb..59255fca 100644 --- a/resources/assets/sass/note-form.scss +++ b/resources/assets/sass/note-form.scss @@ -37,3 +37,12 @@ #locate { margin-right: 0.4rem; } + +.mp-media li { + list-style-type: none; +} + +.mp-media img { + height: 4em; + width: 4em; +} diff --git a/resources/views/micropub/config.blade.php b/resources/views/micropub/config.blade.php new file mode 100644 index 00000000..d950a41a --- /dev/null +++ b/resources/views/micropub/config.blade.php @@ -0,0 +1,16 @@ +@extends('master') + +@section('title') +Micropub Config « +@stop + +@section('content') +

The values for your micropub endpoint.

+
+
Me (your url)
{{ $data['me'] }}
+
Token
{{ $data['token'] }}
+
Syndication Targets
@if(is_array($data['syndication']))@else{{ $data['syndication'] }}@endif
+
Media Endpoint
{{ $data['media-endpoint'] }}
+
+

Re-query the endpoint.

+@stop diff --git a/resources/views/micropub/create.blade.php b/resources/views/micropub/create.blade.php index 6cf8be4e..c170b397 100644 --- a/resources/views/micropub/create.blade.php +++ b/resources/views/micropub/create.blade.php @@ -20,6 +20,7 @@ New Note « @else

You are authenticated as {{ $url }}, log out.

+

Check your configuration.

@endif @include('templates.new-note-form', [ 'micropub' => true, diff --git a/resources/views/templates/new-note-form.blade.php b/resources/views/templates/new-note-form.blade.php index 50267cf9..d21ac3a4 100644 --- a/resources/views/templates/new-note-form.blade.php +++ b/resources/views/templates/new-note-form.blade.php @@ -22,7 +22,7 @@ @if($syndication)
-
@endif -
- Refresh Syndication Targets + @if($mediaURLs) +
+ +
+
+ + Clear media +
+ @endif @endif +@if(!$mediaEndpoint)
+@endif
+
+ + +@endif diff --git a/resources/views/templates/note.blade.php b/resources/views/templates/note.blade.php index d5ff1ae7..5e9d3cb3 100644 --- a/resources/views/templates/note.blade.php +++ b/resources/views/templates/note.blade.php @@ -8,11 +8,12 @@
{!! $note->note !!} - @if(count($note->photoURLs) > 0) - @foreach($note->photoURLs as $photoURL) - - @endforeach - @endif + @foreach($note->media()->get() as $media) + @if($media->type == 'image')@endif + @if($media->type == 'audio')