diff --git a/.env.example b/.env.example index 281849d6..687dc6ae 100644 --- a/.env.example +++ b/.env.example @@ -47,3 +47,7 @@ TWITTER_CONSUMER_KEY= TWITTER_CONSUMER_SECRET= TWITTER_ACCESS_TOKEN= TWITTER_ACCESS_TOKEN_SECRET= + +SCOUT_DRIVER=algolia +ALGOLIA_APP_ID= +ALGOLIA_SECRET= diff --git a/.env.travis b/.env.travis index b15c8b3a..a1546209 100644 --- a/.env.travis +++ b/.env.travis @@ -9,3 +9,5 @@ DB_CONNECTION=travis CACHE_DRIVER=array SESSION_DRIVER=array QUEUE_DRIVER=sync + +SCOUT_DRIVER='null' diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php new file mode 100644 index 00000000..9f68227b --- /dev/null +++ b/app/Http/Controllers/SearchController.php @@ -0,0 +1,26 @@ +terms)->paginate(10); + foreach ($notes as $note) { + $note->iso8601_time = $note->updated_at->toISO8601String(); + $note->human_time = $note->updated_at->diffForHumans(); + $photoURLs = []; + $photos = $note->getMedia(); + foreach ($photos as $photo) { + $photoURLs[] = $photo->getUrl(); + } + $note->photoURLs = $photoURLs; + } + + return view('search', compact('notes')); + } +} diff --git a/app/Note.php b/app/Note.php index ca9b23c3..58405834 100644 --- a/app/Note.php +++ b/app/Note.php @@ -3,6 +3,7 @@ namespace App; use Normalizer; +use Laravel\Scout\Searchable; use Jonnybarnes\IndieWeb\Numbers; use Illuminate\Database\Eloquent\Model; use League\CommonMark\CommonMarkConverter; @@ -13,6 +14,7 @@ use Illuminate\Database\Eloquent\ModelNotFoundException; class Note extends Model implements HasMedia { + use Searchable; use SoftDeletes; use HasMediaTrait; diff --git a/changelog.md b/changelog.md index c27d3964..58647349 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # Changelog +## Version 0.0.17 (2016-11-25) + - Add a basic search feature using Laravel Scout and Algolia (issue#38) + - Get CI testing working with algolia + - Slightly better layout of replies + ## Version 0.0.16.3 (2016-11-25) - StyleCI fix diff --git a/composer.json b/composer.json index aa5aba02..2981992d 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,9 @@ "league/flysystem-aws-s3-v3": "^1.0", "phaza/laravel-postgis": "~3.1", "lcobucci/jwt": "^3.1", - "sensiolabs/security-checker": "^4.0" + "sensiolabs/security-checker": "^4.0", + "laravel/scout": "^1.1", + "algolia/algoliasearch-client-php": "^1.11" }, "require-dev": { "fzaninotto/faker": "~1.4", diff --git a/composer.lock b/composer.lock index 5595e519..6ddd477c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,59 @@ "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": "6109ed77e9efda6af2d9607834c88beb", + "content-hash": "f9c5f3db6efad2ea0d257e1240b1370a", "packages": [ + { + "name": "algolia/algoliasearch-client-php", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/algolia/algoliasearch-client-php.git", + "reference": "d4f29a1fe82f3d6361a516276849bd98dd014cc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/algolia/algoliasearch-client-php/zipball/d4f29a1fe82f3d6361a516276849bd98dd014cc0", + "reference": "d4f29a1fe82f3d6361a516276849bd98dd014cc0", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0", + "satooshi/php-coveralls": "0.6.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "AlgoliaSearch": "src/", + "AlgoliaSearch\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Algolia Team", + "email": "contact@algolia.com" + }, + { + "name": "Ryan T. Catlin", + "email": "ryan.catlin@gmail.com" + }, + { + "name": "Jonathan H. Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Algolia Search API Client for PHP", + "homepage": "https://github.com/algolia/algoliasearch-client-php", + "time": "2016-10-20T11:25:18+00:00" + }, { "name": "anahkiasen/underscore-php", "version": "2.0.0", @@ -58,16 +109,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.19.31", + "version": "3.19.32", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3b7777e4091f4bf4de1dee19cfdad87249facb0e" + "reference": "4c3093e320c4a34e30327043d24099787b702665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3b7777e4091f4bf4de1dee19cfdad87249facb0e", - "reference": "3b7777e4091f4bf4de1dee19cfdad87249facb0e", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4c3093e320c4a34e30327043d24099787b702665", + "reference": "4c3093e320c4a34e30327043d24099787b702665", "shasum": "" }, "require": { @@ -134,7 +185,7 @@ "s3", "sdk" ], - "time": "2016-11-21T23:17:16+00:00" + "time": "2016-11-22T23:10:38+00:00" }, { "name": "barnabywalters/mf-cleaner", @@ -1658,6 +1709,69 @@ ], "time": "2016-11-21T14:14:16+00:00" }, + { + "name": "laravel/scout", + "version": "v1.1.11", + "source": { + "type": "git", + "url": "https://github.com/laravel/scout.git", + "reference": "69b8835aad9ef907058775a058f19003ac569495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/scout/zipball/69b8835aad9ef907058775a058f19003ac569495", + "reference": "69b8835aad9ef907058775a058f19003ac569495", + "shasum": "" + }, + "require": { + "illuminate/bus": "~5.3", + "illuminate/contracts": "~5.3", + "illuminate/database": "~5.3", + "illuminate/pagination": "~5.3", + "illuminate/queue": "~5.3", + "illuminate/support": "~5.3", + "php": ">=5.6.4" + }, + "require-dev": { + "algolia/algoliasearch-client-php": "^1.10", + "elasticsearch/elasticsearch": "^2.2", + "mockery/mockery": "~0.9", + "phpunit/phpunit": "~5.0" + }, + "suggest": { + "algolia/algoliasearch-client-php": "Required to use the Algolia engine (^1.10).", + "elasticsearch/elasticsearch": "Required to use the Elasticsearch engine (^2.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Scout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Scout provides a driver based solution to searching your Eloquent models.", + "keywords": [ + "algolia", + "elasticsearch", + "laravel", + "search" + ], + "time": "2016-11-21T14:17:34+00:00" + }, { "name": "lcobucci/jwt", "version": "3.2.1", @@ -1718,16 +1832,16 @@ }, { "name": "league/commonmark", - "version": "0.15.1", + "version": "0.15.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "20bdba6777e6c63f861711501eec8887e65412fc" + "reference": "c3b08b911e7344e45b87529eabc8b559d48093d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/20bdba6777e6c63f861711501eec8887e65412fc", - "reference": "20bdba6777e6c63f861711501eec8887e65412fc", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c3b08b911e7344e45b87529eabc8b559d48093d4", + "reference": "c3b08b911e7344e45b87529eabc8b559d48093d4", "shasum": "" }, "require": { @@ -1740,7 +1854,7 @@ "require-dev": { "cebe/markdown": "~1.0", "erusev/parsedown": "~1.0", - "jgm/commonmark": "0.26", + "jgm/commonmark": "0.27", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "~1.2.0", "phpunit/phpunit": "~4.3|~5.0", @@ -1783,7 +1897,7 @@ "markdown", "parser" ], - "time": "2016-11-08T15:28:32+00:00" + "time": "2016-11-22T17:30:29+00:00" }, { "name": "league/flysystem", @@ -2724,16 +2838,16 @@ }, { "name": "ramsey/uuid", - "version": "3.5.1", + "version": "3.5.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "a07797b986671b0dc823885a81d5e3516b931599" + "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/a07797b986671b0dc823885a81d5e3516b931599", - "reference": "a07797b986671b0dc823885a81d5e3516b931599", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5677cfe02397dd6b58c861870dfaa5d9007d3954", + "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954", "shasum": "" }, "require": { @@ -2746,11 +2860,13 @@ "require-dev": { "apigen/apigen": "^4.1", "codeception/aspect-mock": "1.0.0", + "doctrine/annotations": "~1.2.0", "goaop/framework": "1.0.0-alpha.2", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", "mockery/mockery": "^0.9.4", "moontoast/math": "^1.1", + "php-mock/php-mock-phpunit": "^0.3|^1.1", "phpunit/phpunit": "^4.7|>=5.0 <5.4", "satooshi/php-coveralls": "^0.6.1", "squizlabs/php_codesniffer": "^2.3" @@ -2800,7 +2916,7 @@ "identifier", "uuid" ], - "time": "2016-10-02T15:51:17+00:00" + "time": "2016-11-22T19:21:44+00:00" }, { "name": "sensiolabs/security-checker", @@ -3061,16 +3177,16 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.3", + "version": "v5.4.4", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153" + "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/545ce9136690cea74f98f86fbb9c92dd9ab1a756", + "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756", "shasum": "" }, "require": { @@ -3110,7 +3226,7 @@ "mail", "mailer" ], - "time": "2016-07-08T11:51:25+00:00" + "time": "2016-11-24T01:01:23+00:00" }, { "name": "symfony/console", @@ -4500,16 +4616,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "0.2", + "version": "0.2.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", "shasum": "" }, "require": { @@ -4543,7 +4659,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-06-10T07:14:17+00:00" + "time": "2016-11-25T06:54:22+00:00" }, { "name": "phpspec/prophecy", @@ -5666,20 +5782,20 @@ }, { "name": "webmozart/assert", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308" + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", "shasum": "" }, "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -5688,7 +5804,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -5712,7 +5828,7 @@ "check", "validate" ], - "time": "2016-08-09T15:02:57+00:00" + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], diff --git a/config/app.php b/config/app.php index ffe7b4b3..533cb4ca 100644 --- a/config/app.php +++ b/config/app.php @@ -203,6 +203,11 @@ return [ */ Phaza\LaravelPostgis\DatabaseServiceProvider::class, + /* + * Laravel scout + */ + Laravel\Scout\ScoutServiceProvider::class, + ], /* diff --git a/config/scout.php b/config/scout.php new file mode 100644 index 00000000..67f19b54 --- /dev/null +++ b/config/scout.php @@ -0,0 +1,83 @@ + env('SCOUT_DRIVER') ?? 'null', + + /* + |-------------------------------------------------------------------------- + | Index Prefix + |-------------------------------------------------------------------------- + | + | Here you may specify a prefix that will be applied to all search index + | names used by Scout. This prefix may be useful if you have multiple + | "tenants" or applications sharing the same search infrastructure. + | + */ + + 'prefix' => env('SCOUT_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Queue Data Syncing + |-------------------------------------------------------------------------- + | + | This option allows you to control if the operations that sync your data + | with your search engines are queued. When this is set to "true" then + | all automatic data syncing will get queued for better performance. + | + */ + + 'queue' => true, + + /* + |-------------------------------------------------------------------------- + | Algolia Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure your Algolia settings. Algolia is a cloud hosted + | search engine which works great with Scout out of the box. Just plug + | in your application ID and admin API key to get started searching. + | + */ + + 'algolia' => [ + 'id' => env('ALGOLIA_APP_ID', ''), + 'secret' => env('ALGOLIA_SECRET', ''), + ], + + /* + |-------------------------------------------------------------------------- + | Elasticsearch Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure your settings for Elasticsearch, which is a + | distributed, open source search and analytics engine. Feel free + | to add as many Elasticsearch servers as required by your app. + | + */ + + 'elasticsearch' => [ + 'index' => env('ELASTICSEARCH_INDEX', 'laravel'), + + 'config' => [ + 'hosts' => [ + env('ELASTICSEARCH_HOST', 'localhost'), + ], + ], + ], + +]; diff --git a/database/migrations/2015_03_02_114340_create_web_mentions_table.php b/database/migrations/2015_03_02_114340_create_web_mentions_table.php index edbbfba3..fd4c0bfa 100644 --- a/database/migrations/2015_03_02_114340_create_web_mentions_table.php +++ b/database/migrations/2015_03_02_114340_create_web_mentions_table.php @@ -20,7 +20,7 @@ class CreateWebMentionsTable extends Migration $table->integer('commentable_id')->nullable(); $table->string('commentable_type')->nullable(); $table->string('type')->nullable(); - $table->text('content'); + $table->text('content')->nullable(); $table->tinyInteger('verified')->default(1); $table->timestamps(); $table->softDeletes(); diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 802cddc6..7decf629 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -16,5 +16,6 @@ class DatabaseSeeder extends Seeder $this->call(ContactsTableSeeder::class); $this->call(PlacesTableSeeder::class); $this->call(NotesTableSeeder::class); + $this->call(WebMentionsTableSeeder::class); } } diff --git a/database/seeds/WebMentionsTableSeeder.php b/database/seeds/WebMentionsTableSeeder.php new file mode 100644 index 00000000..5e2248c8 --- /dev/null +++ b/database/seeds/WebMentionsTableSeeder.php @@ -0,0 +1,23 @@ + 'https://aaornpk.local/reply/1', + 'target' => 'https://jonnybarnes.localhost/notes/D', + 'commentable_id' => '13', + 'commentable_type' => 'App\Note', + 'type' => 'in-reply-to', + 'mf2' => '{"rels": [], "items": [{"type": ["h-entry"], "properties": {"url": ["https://aaronpk.localhost/reply/1"], "name": ["Hi too"], "author": [{"type": ["h-card"], "value": "Aaron Parecki", "properties": {"url": ["https://aaronpk.localhost"], "name": ["Aaron Parecki"], "photo": ["https://aaronparecki.com/images/profile.jpg"]}}], "content": [{"html": "Hi too", "value": "Hi too"}], "published": ["' . date(DATE_W3C) . '"], "in-reply-to": ["https://aaronpk.loclahost/reply/1", "https://jonnybarnes.uk/notes/D"]}}]}' + ]); + } +} diff --git a/public/assets/css/app.css b/public/assets/css/app.css index 35538f32..99ce6ad9 100644 --- a/public/assets/css/app.css +++ b/public/assets/css/app.css @@ -1,3 +1,3 @@ -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:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-ms-flexbox;display:flex;-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}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}.pagination{width:100%;height:3rem;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-ms-flexbox;display:flex;-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{-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,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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:-ms-flexbox;display:flex;-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} +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:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.note-metadata{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;font-size:0.75em}.social-links{display:-ms-flexbox;display:flex;-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 button{margin-left:5px}.algolia-image{display:inline;height:2em}.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}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}.pagination{width:100%;height:3rem;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pagination li{list-style-type:none}.note-ui{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media (min-width: 600px){.note-ui>div{display:-ms-flexbox;display:flex;-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{-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,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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:-ms-flexbox;display:flex;-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} /*# sourceMappingURL=maps/app.css.map */ diff --git a/public/assets/css/app.css.br b/public/assets/css/app.css.br index 6e7772a3..78f29473 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 596cc54c..74723a4e 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/maps/app.css.map b/public/assets/css/maps/app.css.map index a0253dd0..203a0eb8 100644 --- a/public/assets/css/maps/app.css.map +++ b/public/assets/css/maps/app.css.map @@ -1 +1 @@ -{"version":3,"sources":["app.scss","layout.scss","styles.scss","pagination.scss","note-form.scss","mapbox.scss","contacts.scss"],"names":[],"mappings":"AAIA,KACI,sBACA,cAAgB,CACnB,qBAKG,kBAAoB,CACvB,KCVG,eACA,cACA,iBACA,kBACA,oBAAsB,CACzB,WAGG,iBAAmB,CACtB,SAGG,gBAAkB,CACrB,MAGG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,eAGG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,gBAAkB,CACrB,cAGG,oBAAA,AACA,aAAA,sBAAA,AAAoB,kBAAA,CACvB,kBAGG,gBAAkB,CACrB,iBAGG,qBACA,WAAa,CAChB,aAGG,eACA,yBAA2B,CAC9B,KC3CG,6JAGe,CAClB,EAGG,qBACA,wBACA,UAAY,CACf,gBAGG,kBAAoB,CACvB,MAGG,WACA,UAAY,CACf,OAGG,iBACA,iBAAmB,CACtB,YCzBG,WACA,YACA,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,sBAAA,AAAoB,kBAAA,CACvB,eAGG,oBAAsB,CACzB,SCVG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,0BAGG,aACI,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,cAAgB,CACnB,CAGL,0BACI,sBACI,UAAY,CACf,CAGL,eACI,UACA,oBACA,gBAAkB,CACrB,oDAIG,WAAA,AAAQ,MAAA,CACX,kBAGG,qBAAuB,CAC1B,QAGG,mBAAqB,CACxB,KCnCG,eACA,YAAc,CACjB,QAGG,y4HACA,wBACA,WACA,WAAa,CAChB,UAGG,kBACA,MACA,OACA,iBACA,cAAgB,CACnB,gBAGG,gBACA,gBAAkB,CACrB,SCtBG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,eACA,6BAA+B,CAClC,aAGG,oBACA,YACA,YAAa,CAChB","file":"../app.css","sourcesContent":["// app.scss\n\n// https://css-tricks.com/box-sizing/#article-header-id-6\n// and https://css-tricks.com/rems-ems/\nhtml {\n box-sizing: border-box;\n font-size: 24px;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"layout\";\n@import \"styles\";\n@import \"pagination\";\n@import \"note-form\";\n@import \"mapbox\";\n@import \"contacts\";\n","// import.scss\n\nbody {\n max-width: 25em;\n margin: 0 auto;\n padding-left: 5px;\n padding-right: 5px;\n word-wrap: break-word;\n}\n\n#topheader {\n text-align: center;\n}\n\n.h-entry {\n padding-top: 1rem;\n}\n\n.note {\n display: flex;\n flex-direction: column;\n}\n\n.note-metadata {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 0.75em;\n}\n\n.social-links {\n display: flex;\n align-items: center;\n}\n\n.social-links svg {\n padding-left: 3px;\n}\n\n.mini-h-card img {\n display: inline-block;\n height: 1rem;\n}\n\nbody > .h-card {\n margin-top: 5px;\n border-top: 1px solid grey;\n}\n","// styles.scss\n\nbody {\n // from smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n}\n\na {\n text-decoration: none;\n border-bottom: 1px solid;\n color: blue;\n}\n\n.social-links a {\n border-bottom: none;\n}\n\n.icon {\n height: 1em;\n width: auto;\n}\n\nfooter {\n font-size: 0.5rem;\n text-align: center;\n}\n","// pagination.scss\n\n.pagination {\n width: 100%;\n height: 3rem;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.pagination li {\n list-style-type: none;\n}\n","// note-form.scss\n\n.note-ui {\n display: flex;\n flex-direction: column;\n}\n\n@media (min-width: 600px) {\n .note-ui > div {\n display: flex;\n flex-direction: row;\n padding: 0.2rem;\n }\n}\n\n@media (max-width: 599px) {\n input[name=\"photo[]\"] {\n width: 100%;\n }\n}\n\n.note-ui label {\n width: 5em;\n margin-right: 0.5rem;\n text-align: right;\n}\n\n.note-ui input:not([type=submit]),\n.note-ui textarea {\n flex: 1;\n}\n\n.note-ui textarea {\n padding: 0.1rem 0.3rem;\n}\n\n#locate {\n margin-right: 0.4rem;\n}\n","// mapbox.scss\n\n.map {\n margin-top: 4px; //to see underling of note metadata\n height: 200px;\n}\n\n.marker {\n background-image: url(data:image/png;base64,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);\n background-size: contain;\n width: 20px;\n height: 20px;\n}\n\n.map-menu {\n position: absolute;\n top: 0;\n left: 0;\n background: white;\n padding: 0.4rem;\n}\n\n.map-menu label {\n margin-left: 3px;\n margin-right: 3px;\n}\n","//contacts.scss\n\n.contact {\n display: flex;\n flex-direction: row;\n margin-top: 1em;\n border-bottom: 1px dashed grey;\n}\n\n.contact img {\n margin-right: 0.2rem;\n width: 100px;\n height:100px;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["app.scss","layout.scss","styles.scss","pagination.scss","note-form.scss","mapbox.scss","contacts.scss"],"names":[],"mappings":"AAIA,KACI,sBACA,cAAgB,CACnB,qBAKG,kBAAoB,CACvB,KCVG,eACA,cACA,iBACA,kBACA,oBAAsB,CACzB,WAGG,iBAAmB,CACtB,SAGG,gBAAkB,CACrB,MAGG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,eAGG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,gBAAkB,CACrB,cAGG,oBAAA,AACA,aAAA,sBAAA,AAAoB,kBAAA,CACvB,kBAGG,gBAAkB,CACrB,iBAGG,qBACA,WAAa,CAChB,aAGG,eACA,yBAA2B,CAC9B,cAGG,eAAiB,CACpB,eAGG,eACA,UAAY,CACf,WAGG,eACA,cACA,iBAAmB,CACtB,sBAGG,cAAgB,CACnB,sBAGG,iBACA,cAAgB,CACnB,KCnEG,6JAGe,CAClB,EAGG,qBACA,wBACA,UAAY,CACf,gBAGG,kBAAoB,CACvB,MAGG,WACA,UAAY,CACf,OAGG,iBACA,iBAAmB,CACtB,YCzBG,WACA,YACA,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,sBAAA,AACA,8BAAA,sBAAA,AAAoB,kBAAA,CACvB,eAGG,oBAAsB,CACzB,SCVG,oBAAA,AACA,aAAA,0BAAA,AAAuB,qBAAA,CAC1B,0BAGG,aACI,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,cAAgB,CACnB,CAGL,0BACI,sBACI,UAAY,CACf,CAGL,eACI,UACA,oBACA,gBAAkB,CACrB,oDAIG,WAAA,AAAQ,MAAA,CACX,kBAGG,qBAAuB,CAC1B,QAGG,mBAAqB,CACxB,KCnCG,eACA,YAAc,CACjB,QAGG,y4HACA,wBACA,WACA,WAAa,CAChB,UAGG,kBACA,MACA,OACA,iBACA,cAAgB,CACnB,gBAGG,gBACA,gBAAkB,CACrB,SCtBG,oBAAA,AACA,aAAA,uBAAA,AACA,mBAAA,eACA,6BAA+B,CAClC,aAGG,oBACA,YACA,YAAa,CAChB","file":"../app.css","sourcesContent":["// app.scss\n\n// https://css-tricks.com/box-sizing/#article-header-id-6\n// and https://css-tricks.com/rems-ems/\nhtml {\n box-sizing: border-box;\n font-size: 24px;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@import \"layout\";\n@import \"styles\";\n@import \"pagination\";\n@import \"note-form\";\n@import \"mapbox\";\n@import \"contacts\";\n","// import.scss\n\nbody {\n max-width: 25em;\n margin: 0 auto;\n padding-left: 5px;\n padding-right: 5px;\n word-wrap: break-word;\n}\n\n#topheader {\n text-align: center;\n}\n\n.h-entry {\n padding-top: 1rem;\n}\n\n.note {\n display: flex;\n flex-direction: column;\n}\n\n.note-metadata {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-size: 0.75em;\n}\n\n.social-links {\n display: flex;\n align-items: center;\n}\n\n.social-links svg {\n padding-left: 3px;\n}\n\n.mini-h-card img {\n display: inline-block;\n height: 1rem;\n}\n\nbody > .h-card {\n margin-top: 5px;\n border-top: 1px solid grey;\n}\n\nfooter button {\n margin-left: 5px;\n}\n\n.algolia-image {\n display: inline;\n height: 2em;\n}\n\n.u-comment {\n margin-top: 1em;\n padding: 0 1em;\n font-size: 0.75rem;\n}\n\n.u-comment.h-cite img {\n height: 0.75rem;\n}\n\n.u-comment .e-content {\n margin-top: 0.5em;\n font-size: 1rem;\n}\n","// styles.scss\n\nbody {\n // from smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide\n font-family: -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n}\n\na {\n text-decoration: none;\n border-bottom: 1px solid;\n color: blue;\n}\n\n.social-links a {\n border-bottom: none;\n}\n\n.icon {\n height: 1em;\n width: auto;\n}\n\nfooter {\n font-size: 0.5rem;\n text-align: center;\n}\n","// pagination.scss\n\n.pagination {\n width: 100%;\n height: 3rem;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.pagination li {\n list-style-type: none;\n}\n","// note-form.scss\n\n.note-ui {\n display: flex;\n flex-direction: column;\n}\n\n@media (min-width: 600px) {\n .note-ui > div {\n display: flex;\n flex-direction: row;\n padding: 0.2rem;\n }\n}\n\n@media (max-width: 599px) {\n input[name=\"photo[]\"] {\n width: 100%;\n }\n}\n\n.note-ui label {\n width: 5em;\n margin-right: 0.5rem;\n text-align: right;\n}\n\n.note-ui input:not([type=submit]),\n.note-ui textarea {\n flex: 1;\n}\n\n.note-ui textarea {\n padding: 0.1rem 0.3rem;\n}\n\n#locate {\n margin-right: 0.4rem;\n}\n","// mapbox.scss\n\n.map {\n margin-top: 4px; //to see underling of note metadata\n height: 200px;\n}\n\n.marker {\n background-image: url(data:image/png;base64,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);\n background-size: contain;\n width: 20px;\n height: 20px;\n}\n\n.map-menu {\n position: absolute;\n top: 0;\n left: 0;\n background: white;\n padding: 0.4rem;\n}\n\n.map-menu label {\n margin-left: 3px;\n margin-right: 3px;\n}\n","//contacts.scss\n\n.contact {\n display: flex;\n flex-direction: row;\n margin-top: 1em;\n border-bottom: 1px dashed grey;\n}\n\n.contact img {\n margin-right: 0.2rem;\n width: 100px;\n height:100px;\n}\n"]} \ No newline at end of file diff --git a/public/assets/img/algolia.svg b/public/assets/img/algolia.svg new file mode 100644 index 00000000..64ce5dbc --- /dev/null +++ b/public/assets/img/algolia.svg @@ -0,0 +1,21 @@ + + + + Algolia_logo_bg-white + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/sass/layout.scss b/resources/assets/sass/layout.scss index 534b3636..dd5906a2 100644 --- a/resources/assets/sass/layout.scss +++ b/resources/assets/sass/layout.scss @@ -46,3 +46,27 @@ body > .h-card { margin-top: 5px; border-top: 1px solid grey; } + +footer button { + margin-left: 5px; +} + +.algolia-image { + display: inline; + height: 2em; +} + +.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; +} diff --git a/resources/views/master.blade.php b/resources/views/master.blade.php index 9bd6f612..4d3dde23 100644 --- a/resources/views/master.blade.php +++ b/resources/views/master.blade.php @@ -38,6 +38,10 @@ @show diff --git a/resources/views/search.blade.php b/resources/views/search.blade.php new file mode 100644 index 00000000..f44345c7 --- /dev/null +++ b/resources/views/search.blade.php @@ -0,0 +1,27 @@ +@extends('master') + +@section('title') +Search « Jonny Barnes +@stop + +@section('content') +

Search Results

+@foreach($notes as $note) + +
+ @include('templates.note', ['note' => $note]) +
+ +@endforeach +@stop + +@section('scripts') +@include('templates.mapbox-links') + + + + + + + +@stop diff --git a/resources/views/singlenote.blade.php b/resources/views/singlenote.blade.php index 6e91c262..450b0409 100644 --- a/resources/views/singlenote.blade.php +++ b/resources/views/singlenote.blade.php @@ -8,10 +8,10 @@
@include('templates.note', ['note' => $note]) @foreach($replies as $reply) -
- +
+ {{ $reply['name'] }} - said at {{ $reply['date'] }} + said at {{ $reply['date'] }}
{!! $reply['reply'] !!}
@@ -28,8 +28,8 @@ reposted this at {{ $repost['date'] }}.

@endforeach - - + +
@stop diff --git a/routes/web.php b/routes/web.php index d26e6661..f14f265e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -129,6 +129,8 @@ Route::group(['domain' => config('url.longurl')], function () { Route::post('places/new', 'MicropubClientController@postNewPlace'); Route::get('feed', 'ArticlesController@makeRSS'); + + Route::get('search', 'SearchController@search'); }); //Short URL diff --git a/tests/MicropubClientTest.php b/tests/MicropubClientTest.php index 265e3f24..6efb3455 100644 --- a/tests/MicropubClientTest.php +++ b/tests/MicropubClientTest.php @@ -63,7 +63,20 @@ class MicropubClientTest extends TestCase //my client has made a request to my endpoint, which then adds //to the db, so database transaction don’t work //so lets manually delete the new entry - $newNote = \App\Note::where('note', $note); + //first, if we are using algolia, we need to delete it + if (env('SCOUT_DRIVER') == 'algolia') { + //we need to allow the index to update in order to query it + sleep(2); + $client = new \AlgoliaSearch\Client(env('ALGOLIA_APP_ID'), env('ALGOLIA_SECRET')); + $index = $client->initIndex('notes'); + //here we query for the new note and tell algolia too delete it + $res = $index->deleteByQuery('Fake note from'); + if ($res == 0) { + //somehow the new not didn’t get deleted + $this->fail('Didn’t delete the note from the index'); + } + } + $newNote = \App\Note::where('note', $note)->first(); $newNote->forceDelete(); }