Merge branch 'release/0.15.2'

This commit is contained in:
Jonny Barnes 2018-01-11 11:47:21 +00:00
commit 4884c5ba62
36 changed files with 628 additions and 327 deletions

View file

@ -45,7 +45,8 @@ class MicropubController extends Controller
public function post()
{
try {
$tokenData = $this->tokenService->validateToken(request()->bearerToken());
info(request()->input('access_token'));
$tokenData = $this->tokenService->validateToken(request()->input('access_token'));
} catch (InvalidTokenException $e) {
return $this->invalidTokenResponse();
}
@ -254,7 +255,7 @@ class MicropubController extends Controller
private function getClientId(): string
{
return resolve(TokenService::class)
->validateToken(request()->bearerToken())
->validateToken(request()->input('access_token'))
->getClaim('client_id');
}

View file

@ -15,14 +15,20 @@ class VerifyMicropubToken
*/
public function handle($request, Closure $next)
{
if ($request->bearerToken() === null) {
return response()->json([
'response' => 'error',
'error' => 'unauthorized',
'error_description' => 'No access token was provided in the request',
], 401);
if ($request->input('access_token')) {
return $next($request);
}
return $next($request);
if ($request->bearerToken()) {
return $next($request->merge([
'access_token' => $request->bearerToken(),
]));
}
return response()->json([
'response' => 'error',
'error' => 'unauthorized',
'error_description' => 'No access token was provided in the request',
], 401);
}
}

View file

@ -1,5 +1,9 @@
# Changelog
## Version 0.15.2 (2018-01-11)
- Update micropub endpoint to support access tokens being sent in either acceptable form
- Improve admin control panel forms
## Version 0.15.1 (2018-01-06)
- Update dependencies and recompile frontend assets, fix tests
- Only normalise tags in the URL, not in the actual link text

View file

@ -12,7 +12,7 @@
"guzzlehttp/guzzle": "~6.0",
"indieauth/client": "~0.1",
"intervention/image": "^2.4",
"jonnybarnes/commonmark-linkify": "^0.3",
"jonnybarnes/commonmark-linkify": "^0.4",
"jonnybarnes/emoji-a11y": "^0.3",
"jonnybarnes/indieweb": "dev-master",
"jonnybarnes/webmentions-parser": "0.4.*",
@ -21,7 +21,7 @@
"laravel/scout": "^3.0",
"laravel/tinker": "^1.0",
"lcobucci/jwt": "^3.1",
"league/commonmark": "^0.16.0",
"league/commonmark": "^0.17.0",
"league/flysystem-aws-s3-v3": "^1.0",
"mf2/mf2": "~0.3",
"phaza/laravel-postgis": "~3.1",
@ -34,8 +34,8 @@
},
"require-dev": {
"barryvdh/laravel-debugbar": "~3.0",
"bmitch/churn-php": "^0.2.0",
"codedungeon/phpunit-result-printer": "^0.3.0",
"bmitch/churn-php": "^0.4.0",
"codedungeon/phpunit-result-printer": "^0.5.0",
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"jakub-onderka/php-parallel-lint": "^0.9.2",

287
composer.lock generated
View file

@ -4,20 +4,20 @@
"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": "20e0057bf4b93bb8b6f0b43b522dd4db",
"content-hash": "aa839c8457c44ea018fd9141b3ec553e",
"packages": [
{
"name": "aws/aws-sdk-php",
"version": "3.48.8",
"version": "3.48.11",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "40dc24b2152cb00a5a6b2f2fe1678b86b6f0ba57"
"reference": "4159562ee5c2b2d322cfcccd2401d90bfaceaf1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/40dc24b2152cb00a5a6b2f2fe1678b86b6f0ba57",
"reference": "40dc24b2152cb00a5a6b2f2fe1678b86b6f0ba57",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4159562ee5c2b2d322cfcccd2401d90bfaceaf1d",
"reference": "4159562ee5c2b2d322cfcccd2401d90bfaceaf1d",
"shasum": ""
},
"require": {
@ -84,7 +84,7 @@
"s3",
"sdk"
],
"time": "2018-01-05T22:21:07+00:00"
"time": "2018-01-09T22:01:13+00:00"
},
{
"name": "barnabywalters/mf-cleaner",
@ -811,20 +811,20 @@
},
{
"name": "doctrine/inflector",
"version": "v1.2.0",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "e11d84c6e018beedd929cff5220969a3c6d1d462"
"reference": "5527a48b7313d15261292c149e55e26eae771b0a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462",
"reference": "e11d84c6e018beedd929cff5220969a3c6d1d462",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
"reference": "5527a48b7313d15261292c149e55e26eae771b0a",
"shasum": ""
},
"require": {
"php": "^7.0"
"php": "^7.1"
},
"require-dev": {
"phpunit/phpunit": "^6.2"
@ -832,7 +832,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
"dev-master": "1.3.x-dev"
}
},
"autoload": {
@ -874,7 +874,7 @@
"singularize",
"string"
],
"time": "2017-07-22T12:18:28+00:00"
"time": "2018-01-09T20:05:19+00:00"
},
{
"name": "doctrine/lexer",
@ -1710,20 +1710,20 @@
},
{
"name": "jonnybarnes/commonmark-linkify",
"version": "v0.3",
"version": "v0.4",
"source": {
"type": "git",
"url": "https://github.com/jonnybarnes/commonmark-linkify.git",
"reference": "6de548e2140cff0143b1ee166868275ec0a1174f"
"reference": "fa5b1434dbd3639d2739e3b4f0aa5d14f322d60a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jonnybarnes/commonmark-linkify/zipball/6de548e2140cff0143b1ee166868275ec0a1174f",
"reference": "6de548e2140cff0143b1ee166868275ec0a1174f",
"url": "https://api.github.com/repos/jonnybarnes/commonmark-linkify/zipball/fa5b1434dbd3639d2739e3b4f0aa5d14f322d60a",
"reference": "fa5b1434dbd3639d2739e3b4f0aa5d14f322d60a",
"shasum": ""
},
"require": {
"league/commonmark": "^0.16.0",
"league/commonmark": "^0.17.0",
"php": "^7.0"
},
"require-dev": {
@ -1745,13 +1745,14 @@
"email": "jonny@jonnybarnes.uk"
}
],
"description": "Turn plaintext urls into clickable links",
"description": "Turn plaintext URLs into click-able links",
"homepage": "https://github.com/jonnybarnes/commonmark-linkify",
"keywords": [
"commonmark",
"extension",
"markdown"
],
"time": "2017-11-07T22:35:17+00:00"
"time": "2018-01-11T10:38:16+00:00"
},
{
"name": "jonnybarnes/emoji-a11y",
@ -2278,34 +2279,34 @@
},
{
"name": "league/commonmark",
"version": "0.16.0",
"version": "0.17.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "c0e41be0f80c51ad3170c9c713f74a0b8dec59ce"
"reference": "3b4c2224524776a584de663c7a04bc8eb2e1544d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c0e41be0f80c51ad3170c9c713f74a0b8dec59ce",
"reference": "c0e41be0f80c51ad3170c9c713f74a0b8dec59ce",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3b4c2224524776a584de663c7a04bc8eb2e1544d",
"reference": "3b4c2224524776a584de663c7a04bc8eb2e1544d",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.4.8"
"php": ">=5.6.5"
},
"replace": {
"colinodell/commonmark-php": "*"
},
"require-dev": {
"cebe/markdown": "~1.0",
"commonmark/commonmark.js": "0.28",
"erusev/parsedown": "~1.0",
"jgm/commonmark": "0.28",
"michelf/php-markdown": "~1.4",
"mikehaertl/php-shellcommand": "~1.2.0",
"phpunit/phpunit": "^4.8.35|~5.7",
"phpunit/phpunit": "~5.7|~6.5",
"scrutinizer/ocular": "~1.1",
"symfony/finder": "~2.3|~3.0"
"symfony/finder": "~3.0|~4.0"
},
"suggest": {
"league/commonmark-extras": "Library of useful extensions including smart punctuation"
@ -2316,7 +2317,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.17-dev"
"dev-master": "0.18-dev"
}
},
"autoload": {
@ -2343,7 +2344,7 @@
"markdown",
"parser"
],
"time": "2017-10-31T00:49:55+00:00"
"time": "2017-12-30T22:08:48+00:00"
},
{
"name": "league/flysystem",
@ -3439,16 +3440,16 @@
},
{
"name": "sensiolabs/security-checker",
"version": "v4.1.6",
"version": "v4.1.7",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/security-checker.git",
"reference": "387b6a3b723ba35588b33d5f8d14e28ed608bd30"
"reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/387b6a3b723ba35588b33d5f8d14e28ed608bd30",
"reference": "387b6a3b723ba35588b33d5f8d14e28ed608bd30",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/d539ccba2b4dce515de04f16b7ed7ae5b9eeb434",
"reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434",
"shasum": ""
},
"require": {
@ -3480,7 +3481,7 @@
}
],
"description": "A security checker for your composer.lock",
"time": "2017-10-29T18:48:08+00:00"
"time": "2018-01-11T05:54:03+00:00"
},
{
"name": "spatie/browsershot",
@ -4808,24 +4809,26 @@
},
{
"name": "bmitch/churn-php",
"version": "0.2.0",
"version": "0.4.1",
"source": {
"type": "git",
"url": "https://github.com/bmitch/churn-php.git",
"reference": "0026a7db3bebb83dc9b1cd1941e1cb15629c1dc8"
"reference": "e6d1afab6117c107a1f7e164023cc38c748b4ca2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bmitch/churn-php/zipball/0026a7db3bebb83dc9b1cd1941e1cb15629c1dc8",
"reference": "0026a7db3bebb83dc9b1cd1941e1cb15629c1dc8",
"url": "https://api.github.com/repos/bmitch/churn-php/zipball/e6d1afab6117c107a1f7e164023cc38c748b4ca2",
"reference": "e6d1afab6117c107a1f7e164023cc38c748b4ca2",
"shasum": ""
},
"require": {
"php": "^7.0",
"php-di/php-di": "^5.4",
"symfony/console": "^3.2",
"symfony/process": "^3.2",
"symfony/yaml": "^3.3",
"tightenco/collect": "^5.4"
"tightenco/collect": "^5.4",
"webmozart/assert": "^1.2"
},
"require-dev": {
"bmitch/codor": "^1.0",
@ -4841,7 +4844,7 @@
"slevomat/coding-standard": "^2.0"
},
"bin": [
"churn"
"bin/churn"
],
"type": "library",
"autoload": {
@ -4865,28 +4868,29 @@
"bmitch",
"churn-php"
],
"time": "2017-09-02T00:42:45+00:00"
"time": "2017-10-21T18:17:58+00:00"
},
{
"name": "codedungeon/phpunit-result-printer",
"version": "0.3.0",
"version": "0.5.1",
"source": {
"type": "git",
"url": "https://github.com/mikeerickson/phpunit-pretty-result-printer.git",
"reference": "12e3728dae638101ff447b0f1ba02501f6e1ef45"
"reference": "2dcf5f220f1019ddb2a85995828f513205416e0d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mikeerickson/phpunit-pretty-result-printer/zipball/12e3728dae638101ff447b0f1ba02501f6e1ef45",
"reference": "12e3728dae638101ff447b0f1ba02501f6e1ef45",
"url": "https://api.github.com/repos/mikeerickson/phpunit-pretty-result-printer/zipball/2dcf5f220f1019ddb2a85995828f513205416e0d",
"reference": "2dcf5f220f1019ddb2a85995828f513205416e0d",
"shasum": ""
},
"require": {
"hassankhan/config": "^0.10.0",
"symfony/yaml": "^3.3"
"symfony/yaml": "^2.7|^3.0|^4.0"
},
"require-dev": {
"phpunit/phpunit": ">=5.2"
"phpunit/phpunit": ">=5.2",
"spatie/phpunit-watcher": "^1.3"
},
"type": "library",
"autoload": {
@ -4912,7 +4916,38 @@
"printer",
"result-printer"
],
"time": "2017-11-24T18:45:54+00:00"
"time": "2018-01-09T21:42:36+00:00"
},
{
"name": "container-interop/container-interop",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/container-interop/container-interop.git",
"reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
"reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
"shasum": ""
},
"require": {
"psr/container": "^1.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Interop\\Container\\": "src/Interop/Container/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
"homepage": "https://github.com/container-interop/container-interop",
"time": "2017-02-14T19:40:03+00:00"
},
{
"name": "doctrine/instantiator",
@ -5517,16 +5552,16 @@
},
{
"name": "nunomaduro/collision",
"version": "v1.1.18",
"version": "v1.1.20",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
"reference": "b117d73eadcf7dd490faeaaa80ddde2bdb03bf1f"
"reference": "6db3dc2d9a357a85534292d7a4f00e731d3c81aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/b117d73eadcf7dd490faeaaa80ddde2bdb03bf1f",
"reference": "b117d73eadcf7dd490faeaaa80ddde2bdb03bf1f",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/6db3dc2d9a357a85534292d7a4f00e731d3c81aa",
"reference": "6db3dc2d9a357a85534292d7a4f00e731d3c81aa",
"shasum": ""
},
"require": {
@ -5535,6 +5570,7 @@
"symfony/console": "~2.8|~3.3|~4.0"
},
"require-dev": {
"laravel/framework": "5.5.*",
"phpunit/phpunit": "~6.5"
},
"type": "library",
@ -5573,7 +5609,7 @@
"php",
"symfony"
],
"time": "2017-12-22T21:57:56+00:00"
"time": "2018-01-10T22:08:37+00:00"
},
{
"name": "phar-io/manifest",
@ -5677,6 +5713,149 @@
"description": "Library for handling version information and constraints",
"time": "2017-03-05T17:38:23+00:00"
},
{
"name": "php-di/invoker",
"version": "1.3.3",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/Invoker.git",
"reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7",
"reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7",
"shasum": ""
},
"require": {
"container-interop/container-interop": "~1.1"
},
"require-dev": {
"athletic/athletic": "~0.1.8",
"phpunit/phpunit": "~4.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Invoker\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Generic and extensible callable invoker",
"homepage": "https://github.com/PHP-DI/Invoker",
"keywords": [
"callable",
"dependency",
"dependency-injection",
"injection",
"invoke",
"invoker"
],
"time": "2016-07-14T13:09:58+00:00"
},
{
"name": "php-di/php-di",
"version": "5.4.6",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PHP-DI.git",
"reference": "3f9255659595f3e289f473778bb6c51aa72abbbd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/3f9255659595f3e289f473778bb6c51aa72abbbd",
"reference": "3f9255659595f3e289f473778bb6c51aa72abbbd",
"shasum": ""
},
"require": {
"container-interop/container-interop": "~1.2",
"php": ">=5.5.0",
"php-di/invoker": "^1.3.2",
"php-di/phpdoc-reader": "^2.0.1",
"psr/container": "~1.0"
},
"provide": {
"container-interop/container-interop-implementation": "^1.0",
"psr/container-implementation": "^1.0"
},
"replace": {
"mnapoli/php-di": "*"
},
"require-dev": {
"doctrine/annotations": "~1.2",
"doctrine/cache": "~1.4",
"mnapoli/phpunit-easymock": "~0.2.0",
"ocramius/proxy-manager": "~1.0|~2.0",
"phpbench/phpbench": "@dev",
"phpunit/phpunit": "~4.5"
},
"suggest": {
"doctrine/annotations": "Install it if you want to use annotations (version ~1.2)",
"doctrine/cache": "Install it if you want to use the cache (version ~1.4)",
"ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~1.0 or ~2.0)"
},
"type": "library",
"autoload": {
"psr-4": {
"DI\\": "src/DI/"
},
"files": [
"src/DI/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "The dependency injection container for humans",
"homepage": "http://php-di.org/",
"keywords": [
"container",
"dependency injection",
"di"
],
"time": "2017-12-03T08:20:27+00:00"
},
{
"name": "php-di/phpdoc-reader",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PhpDocReader.git",
"reference": "83f5ead159defccfa8e7092e5b6c1c533b326d68"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/83f5ead159defccfa8e7092e5b6c1c533b326d68",
"reference": "83f5ead159defccfa8e7092e5b6c1c533b326d68",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.6"
},
"type": "library",
"autoload": {
"psr-4": {
"PhpDocReader\\": "src/PhpDocReader"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
"keywords": [
"phpdoc",
"reflection"
],
"time": "2015-11-29T10:34:25+00:00"
},
{
"name": "phpdocumentor/reflection-common",
"version": "1.0.1",

20
package-lock.json generated
View file

@ -2289,9 +2289,9 @@
}
},
"doctrine": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz",
"integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"requires": {
"esutils": "2.0.2"
@ -2614,9 +2614,9 @@
}
},
"eslint": {
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz",
"integrity": "sha512-Ul6CSGRjKscEyg0X/EeNs7o2XdnbTEOD1OM8cTjmx85RPcBJQrEhZLevhuJZNAE/vS2iVl5Uhgiqf3h5uLMCJQ==",
"version": "4.15.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.15.0.tgz",
"integrity": "sha512-zEO/Z1ZUxIQ+MhDVKkVTUYpIPDTEJLXGMrkID+5v1NeQHtCz6FZikWuFRgxE1Q/RV2V4zVl1u3xmpPADHhMZ6A==",
"dev": true,
"requires": {
"ajv": "5.5.2",
@ -2625,7 +2625,7 @@
"concat-stream": "1.6.0",
"cross-spawn": "5.1.0",
"debug": "3.1.0",
"doctrine": "2.0.2",
"doctrine": "2.1.0",
"eslint-scope": "3.7.1",
"eslint-visitor-keys": "1.0.0",
"espree": "3.5.2",
@ -9168,9 +9168,9 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"uglify-js": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz",
"integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==",
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.5.tgz",
"integrity": "sha512-ZebM2kgBL/UI9rKeAbsS2J0UPPv7SBy5hJNZml/YxB1zC6JK8IztcPs+cxilE4pu0li6vadVSFqiO7xFTKuSrg==",
"dev": true,
"requires": {
"commander": "2.12.2",

View file

@ -21,7 +21,7 @@
"babel-preset-latest": "^6.16.0",
"babel-runtime": "^6.26.0",
"dotenv-webpack": "^1.5.4",
"eslint": "^4.14.0",
"eslint": "^4.15.0",
"eslint-config-standard": "^10.2.1",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-node": "^5.2.1",
@ -35,7 +35,7 @@
"source-list-map": "^2.0.0",
"stylelint": "^8.4.0",
"stylelint-config-standard": "^18.0.0",
"uglify-js": "^3.3.4",
"uglify-js": "^3.3.5",
"webpack": "^3.10.0",
"webpack-sources": "^1.1.0"
},

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"version":3,"sources":["../../../resources/assets/sass/_border-box.scss","../../../resources/assets/sass/_base-font.scss","../../../resources/assets/sass/_header.scss","../../../resources/assets/sass/_variables.scss","../../../resources/assets/sass/_main.scss","../../../resources/assets/sass/_hovercard.scss","../../../resources/assets/sass/_notes.scss","../../../resources/assets/sass/_pagination.scss","../../../resources/assets/sass/_contacts-page.scss","../../../resources/assets/sass/_projects.scss","../../../resources/assets/sass/_footer.scss","../../../resources/assets/sass/_bridgy-links.scss","../../../resources/assets/sass/_emoji.scss","../../../resources/assets/sass/_mapbox.scss","../../../resources/assets/sass/_colors.scss","../../../resources/assets/sass/_styles.scss","../../../resources/assets/sass/_tags.scss"],"names":[],"mappings":"AAKA,KACI,8BAAsB,AAAtB,qBAAsB,CACzB,qBAKG,2BAAmB,AAAnB,kBAAmB,CACtB,KCVG,eACA,gCAAiC,CACpC,gBAGG,oBAAqB,CACxB,WCNG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,kBACA,AADA,cACA,yBACA,AADA,sBACA,AADA,mBACA,WACA,eCJgB,CDKnB,cAGG,eACA,cAAe,CAClB,eAGG,cAAe,CAClB,KEdG,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,0BACA,AADA,uBACA,AADA,oBACA,gBACA,cACA,gBAAiB,CACpB,SAGG,cAAe,CAClB,WAIG,gBAAiB,CACpB,aCfG,iBAAkB,CACrB,qBAGG,iBAAkB,CACrB,2BAGG,WAAY,CACf,WAGG,kBACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,yBACA,AADA,sBACA,AADA,8BACA,sBACA,AADA,mBACA,AADA,qBACA,iBACA,YACA,WACA,UACA,WACA,uBACA,kBACA,2CACA,AADA,mCACA,YAAa,CAChB,8BAGG,oBAAa,AAAb,oBAAa,AAAb,YAAa,CAChB,0BAGG,WACA,WAAY,CACf,sBAGG,YAAa,CCnCjB,MACI,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,cAAe,CAClB,UAGG,eACA,eAAgB,CACnB,eAGG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,yBAA8B,AAA9B,sBAA8B,AAA9B,6BAA8B,CACjC,MAGG,WACA,UAAW,CACd,YCtBG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,8BACA,AADA,2BACA,AADA,6BACA,eACA,oBAAqB,CACxB,cCLG,eACA,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,8BACA,AADA,+BACA,AADA,2BACA,yBACA,AADA,sBACA,AADA,8BACA,eAAgB,CACnB,kBAGG,WACA,WAAY,CACf,UCVG,cAAe,CAClB,gBCDG,gBACA,cACA,gBAAiB,CACpB,OAGG,gBACA,cACA,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,yBAAmB,AAAnB,sBAAmB,AAAnB,kBAAmB,CACtB,qDCVG,YAAa,CAChB,2BCAG,iBAAkB,CACrB,gFAIG,kBACA,cACA,UACA,aACA,OACA,cACA,qBACA,yBACA,oBACA,4CACA,AADA,oCACA,yBACA,kCACA,WACA,cACA,0CAAkC,AAAlC,iCAAkC,CACrC,2BAGG,KACI,aACA,6BACA,wCACA,0BACA,8BAAkC,AAAlC,qBAAkC,CAGtC,GACI,aACA,kCACA,yBACA,WACA,4CAAgD,AAAhD,mCAAgD,CAAA,CAIxD,AApBC,mBAGG,KACI,aACA,6BACA,wCACA,0BACA,8BAAkC,AAAlC,qBAAkC,CAGtC,GACI,aACA,kCACA,yBACA,WACA,4CAAgD,AAAhD,mCAAgD,CAAA,CAIxD,aACI,kCACI,kCAAmC,CACtC,CC9CL,KACI,YAAa,CAChB,oBAGG,kBAAmB,CACtB,QAGG,y4HACA,wBACA,WACA,WAAY,CACf,UAGG,kBACA,MACA,OACA,iBACA,cAAe,CAClB,gBAGG,gBACA,gBAAiB,CACpB,KCzBG,gCACA,kBAAmB,CACtB,WAGG,8BACA,kBAAmB,CACtB,YAIG,iBAAkB,CACrB,KCZG,oBAAqB,CACxB,aAGG,oBAAqB,CACxB,MCHG,SACA,gBACA,SAAU,CACb,SAGG,WACA,oBAAqB,CACxB,kBAIG,wBACA,0BACA,mBACA,qBACA,cACA,mBACA,sBACA,kBACA,qBACA,qBACA,8BAAsB,AAAtB,qBAAsB,CACzB,YAGG,0BACA,uCACA,oCACA,oCACA,WACA,kBACA,QACA,KAAM,CACT,WAGG,4BACA,kBAAmB,CACtB,kBAGG,4BAA6B,CAChC","file":"app.css"}
{"version":3,"sources":["../../../resources/assets/sass/_border-box.scss","../../../resources/assets/sass/_base-font.scss","../../../resources/assets/sass/_header.scss","../../../resources/assets/sass/_variables.scss","../../../resources/assets/sass/_main.scss","../../../resources/assets/sass/_hovercard.scss","../../../resources/assets/sass/_notes.scss","../../../resources/assets/sass/_pagination.scss","../../../resources/assets/sass/_contacts-page.scss","../../../resources/assets/sass/_projects.scss","../../../resources/assets/sass/_footer.scss","../../../resources/assets/sass/_admin-form.scss","../../../resources/assets/sass/_form.scss","../../../resources/assets/sass/_bridgy-links.scss","../../../resources/assets/sass/_emoji.scss","../../../resources/assets/sass/_mapbox.scss","../../../resources/assets/sass/_colors.scss","../../../resources/assets/sass/_styles.scss","../../../resources/assets/sass/_tags.scss"],"names":[],"mappings":"AAKA,KACI,8BAAsB,AAAtB,qBAAsB,CACzB,qBAKG,2BAAmB,AAAnB,kBAAmB,CACtB,KCVG,eACA,gCAAiC,CACpC,gBAGG,oBAAqB,CACxB,WCNG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,kBACA,AADA,cACA,yBACA,AADA,sBACA,AADA,mBACA,WACA,eCJgB,CDKnB,cAGG,eACA,cAAe,CAClB,eAGG,cAAe,CAClB,KEdG,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,0BACA,AADA,uBACA,AADA,oBACA,gBACA,cACA,iBACA,cAAe,CAClB,WAIG,gBAAiB,CACpB,aCZG,iBAAkB,CACrB,qBAGG,iBAAkB,CACrB,2BAGG,WAAY,CACf,WAGG,kBACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,yBACA,AADA,sBACA,AADA,8BACA,sBACA,AADA,mBACA,AADA,qBACA,iBACA,YACA,WACA,UACA,WACA,uBACA,kBACA,2CACA,AADA,mCACA,YAAa,CAChB,8BAGG,oBAAa,AAAb,oBAAa,AAAb,YAAa,CAChB,0BAGG,WACA,WAAY,CACf,sBAGG,YAAa,CCnCjB,MACI,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,cAAe,CAClB,UAGG,eACA,eAAgB,CACnB,eAGG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,yBAA8B,AAA9B,sBAA8B,AAA9B,6BAA8B,CACjC,MAGG,WACA,UAAW,CACd,YCtBG,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,6BACA,AADA,uBACA,AADA,mBACA,8BACA,AADA,2BACA,AADA,6BACA,eACA,oBAAqB,CACxB,cCLG,eACA,oBACA,AADA,oBACA,AADA,aACA,8BACA,AADA,8BACA,AADA,+BACA,AADA,2BACA,yBACA,AADA,sBACA,AADA,8BACA,eAAgB,CACnB,kBAGG,WACA,WAAY,CACf,UCVG,cAAe,CAClB,gBCDG,gBACA,cACA,gBAAiB,CACpB,OAGG,gBACA,cACA,oBACA,AADA,oBACA,AADA,aACA,4BACA,AADA,6BACA,AADA,0BACA,AADA,sBACA,yBAAmB,AAAnB,sBAAmB,AAAnB,kBAAmB,CACtB,YCXG,gBACA,kBAAmB,CACtB,MCFG,oBACA,AADA,oBACA,AADA,aACA,4BAAsB,AAAtB,6BAAsB,AAAtB,0BAAsB,AAAtB,qBAAsB,CACzB,UAGG,oBACA,AADA,oBACA,AADA,aACA,4BAAsB,AAAtB,6BAAsB,AAAtB,0BAAsB,AAAtB,qBAAsB,CACzB,aAGG,8BAAmB,AAAnB,6BAAmB,AAAnB,uBAAmB,AAAnB,kBAAmB,CACtB,qDCVG,YAAa,CAChB,2BCAG,iBAAkB,CACrB,gFAIG,kBACA,cACA,UACA,aACA,OACA,cACA,qBACA,yBACA,oBACA,4CACA,AADA,oCACA,yBACA,kCACA,WACA,cACA,0CAAkC,AAAlC,iCAAkC,CACrC,2BAGG,KACI,aACA,6BACA,wCACA,0BACA,8BAAkC,AAAlC,qBAAkC,CAGtC,GACI,aACA,kCACA,yBACA,WACA,4CAAgD,AAAhD,mCAAgD,CAAA,CAIxD,AApBC,mBAGG,KACI,aACA,6BACA,wCACA,0BACA,8BAAkC,AAAlC,qBAAkC,CAGtC,GACI,aACA,kCACA,yBACA,WACA,4CAAgD,AAAhD,mCAAgD,CAAA,CAIxD,aACI,kCACI,kCAAmC,CACtC,CC9CL,KACI,YAAa,CAChB,oBAGG,kBAAmB,CACtB,QAGG,y4HACA,wBACA,WACA,WAAY,CACf,UAGG,kBACA,MACA,OACA,iBACA,cAAe,CAClB,gBAGG,gBACA,gBAAiB,CACpB,KCzBG,gCACA,kBAAmB,CACtB,WAGG,8BACA,kBAAmB,CACtB,YAIG,iBAAkB,CACrB,KCZG,oBAAqB,CACxB,aAGG,oBAAqB,CACxB,MCHG,SACA,gBACA,SAAU,CACb,SAGG,WACA,oBAAqB,CACxB,kBAIG,wBACA,0BACA,mBACA,qBACA,cACA,mBACA,sBACA,kBACA,qBACA,qBACA,8BAAsB,AAAtB,qBAAsB,CACzB,YAGG,0BACA,uCACA,oCACA,oCACA,WACA,kBACA,QACA,KAAM,CACT,WAGG,4BACA,kBAAmB,CACtB,kBAGG,4BAA6B,CAChC","file":"app.css"}

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,6 @@
//admin-form.scss
.admin-form {
margin-top: 2rem;
margin-bottom: 2rem;
}

15
resources/assets/sass/_form.scss vendored Normal file
View file

@ -0,0 +1,15 @@
//form.scss
.form {
display: flex;
flex-direction: column;
}
.form > div {
display: flex;
flex-direction: column;
}
div.form-row {
flex-direction: row;
}

View file

@ -7,9 +7,6 @@ main {
max-width: $body-width;
margin: 0 auto;
padding: 0 0.5rem;
}
.h-entry {
font-size: 2rem;
}

View file

@ -16,6 +16,8 @@
@import "contacts-page";
@import "projects";
@import "footer";
@import "admin-form";
@import "form";
//hide the custom bridgy posse content
@import "bridgy-links";

View file

@ -4,22 +4,27 @@
@section('content')
@if(isset($message)) <p class="error">{{ $message }}</p>@endif
<form action="/admin/blog/" method="post" accept-charset="utf-8" enctype="multipart/form-data" id="newarticle">
<form action="/admin/blog/" method="post" accept-charset="utf-8" enctype="multipart/form-data" class="admin-form form">
{{ csrf_field() }}
<label for="title">Title (URL):</label>
<br>
<input type="text" name="title" id="title" value="{{ old('title') }}" placeholder="Title here">
<br>
<input type="text" name="url" id="url" value="{{ old('url') }}" placeholder="Article URL">
<br>
<label for="main">Main:</label>
<br>
<textarea name="main" id="main" placeholder="Article here">{{ old('main') }}</textarea>
<br>
<label for="published">Published:</label><input type="checkbox" name="published" id="published" value="1">
<br>
<p>Or you can upload an <code>.md</code> file:</p><input type="file" accept=".md" name="article">
<br>
<button type="submit" name="save">Save</button>
<div>
<label for="title">Title (URL):</label>
<input type="text" name="title" id="title" value="{{ old('title') }}" placeholder="Title here">
<input type="text" name="url" id="url" value="{{ old('url') }}" placeholder="Article URL">
</div>
<div>
<label for="main">Main:</label>
<textarea name="main" id="main" placeholder="Article here">{{ old('main') }}</textarea>
</div>
<div class="form-row">
<label for="published">Published:</label>
<input type="checkbox" name="published" id="published" value="1">
</div>
<p>Or you can upload an <code>.md</code> file:</p>
<div>
<input type="file" accept=".md" name="article">
</div>
<div>
<button type="submit" name="save">Save</button>
</div>
</form>
@stop

View file

@ -3,29 +3,32 @@
@section('title')Edit Article « Admin CP « @stop
@section('content')
<form action="/admin/blog/{{ $id }}" method="post" accept-charset="utf-8">
<form action="/admin/blog/{{ $id }}" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
{{ method_field('PUT') }}
<label for="title">Title (URL):</label>
<br>
<input type="text" name="title" id="title" value="{!! $post['0']['title'] !!}">
<br>
<input type="url" name="url" id="url" value="{!! $post['0']['url'] !!}">
<br>
<label for="main">Main:</label>
<br>
<textarea name="main" id="main">{{ $post['0']['main'] }}</textarea>
<br>
<label for="published">Published:</label><input type="checkbox" name="published" value="1"@if($post['0']['published'] == '1') checked="checked"@endif>
<br>
<input type="submit" name="save" value="Save">
<div>
<label for="title">Title (URL):</label>
<input type="text" name="title" id="title" value="{!! $post['0']['title'] !!}">
<input type="url" name="url" id="url" value="{!! $post['0']['url'] !!}">
</div>
<div>
<label for="main">Main:</label>
<textarea name="main" id="main">{{ $post['0']['main'] }}</textarea>
</div>
<div class="form-row">
<label for="published">Published:</label>
<input type="checkbox" name="published" value="1"@if($post['0']['published'] == '1') checked="checked"@endif>
</div>
<div>
<button type="submit" name="save">Save</button>
</div>
</form>
<hr>
<form action="/admin/blog/{{ $id }}" method="post">
<form action="/admin/blog/{{ $id }}" method="post" class="admin-form form">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit" name="submit">
Delete
</button>
<div>
<button type="submit" name="delete">Delete</button>
</div>
</form>
@stop

View file

@ -4,10 +4,18 @@
@section('content')
<h1>New Client</h1>
<form action="/admin/clients/" method="post" accept-charset="utf-8">
<form action="/admin/clients/" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
<input type="text" name="client_url" id="client_url" placeholder="client_url"><br>
<input type="text" name="client_name" id="client_name" placeholder="client_name"><br>
<input type="submit" name="submit" value="Submit">
<div>
<label for="client_url">Client URL:</label>
<input type="text" name="client_url" id="client_url" placeholder="client_url">
</div>
<div>
<label for="client_name">Client Name:</label>
<input type="text" name="client_name" id="client_name" placeholder="client_name">
</div>
<div>
<button type="submit" name="submit">Submit</button>
</div>
</form>
@stop

View file

@ -4,17 +4,25 @@
@section('content')
<h1>Edit Client</h1>
<form action="/admin/clients/{{ $id }}" method="post" accept-charset="utf-8">
<form action="/admin/clients/{{ $id }}" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
{{ method_field('PUT') }}
<input type="text" name="client_url" id="client_url" value="{{ $client_url }}"><br>
<input type="text" name="client_name" id="client_name" value="{{ $client_name }}"><br>
<input type="submit" name="submit" value="Edit">
<div>
<label for="client_url">Client URL:</label>
<input type="text" name="client_url" id="client_url" value="{{ $client_url }}">
</div>
<div>
<label for="client_name">Client Name:</label>
<input type="text" name="client_name" id="client_name" value="{{ $client_name }}">
</div>
<div>
<button type="submit" name="edit">Edit</button>
</div>
</form>
<hr>
<form action="/admin/clients/{{ $id }}" method="post">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit">Delete Client</button>
<button type="submit" name="delete">Delete Client</button>
</form>
@stop

View file

@ -4,12 +4,26 @@
@section('content')
<h1>New Contact</h1>
<form action="/admin/contacts/" method="post" accept-charset="utf-8">
<form action="/admin/contacts/" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
<label for="name">Real Name:</label> <input type="text" name="name" id="name" placeholder="Real Name"><br>
<label for="nick">Nick:</label> <input type="text" name="nick" id="nick" placeholder="local_nick"><br>
<label for="homepage">Homepage:</label> <input type="text" name="homepage" id="homepage" placeholder="https://homepage.com"><br>
<label for="twitter">Twitter Nick:</label> <input type="text" name="twitter" id="twitter" placeholder="Twitter handle"><br>
<input type="submit" name="submit" value="Submit">
<div>
<label for="name">Real Name:</label>
<input type="text" name="name" id="name" placeholder="Real Name">
</div>
<div>
<label for="nick">Nick:</label>
<input type="text" name="nick" id="nick" placeholder="local_nick">
</div>
<div>
<label for="homepage">Homepage:</label>
<input type="text" name="homepage" id="homepage" placeholder="https://homepage.com">
</div>
<div>
<label for="twitter">Twitter Nick:</label>
<input type="text" name="twitter" id="twitter" placeholder="Twitter handle">
</div>
<div>
<button type="submit" name="submit">Submit</button>
</div>
</form>
@stop

View file

@ -4,37 +4,36 @@
@section('content')
<h1>Edit Contact</h1>
<form action="/admin/contacts/{{ $contact->id }}" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<form action="/admin/contacts/{{ $contact->id }}" method="post" enctype="multipart/form-data" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
{{ method_field('PUT') }}
<fieldset class="note-ui">
<legend>Conctact</legend>
<div>
<label for="name">Real Name:</label>
<input type="text" name="name" id="name" placeholder="Real Name" value="{{ $contact->name }}">
</div>
<div>
<label for="nick">Nick:</label>
<input type="text" name="nick" id="nick" placeholder="local_nick" value="{{ $contact->nick }}">
</div>
<div>
<label for="homepage">Website:</label>
<input type="text" name="homepage" id="homepage" placeholder="https://homepage.com" value="{{ $contact->homepage }}">
</div>
<div>
<label for="twitter">Twitter Nick:</label>
<input type="text" name="twitter" id="twitter" placeholder="Twitter handle" value="{{ $contact->twitter }}">
</div>
<div>
<label for="facebook">Facebook Profile ID:</label>
<input type="text" name="facebook" id="facebook" placeholder="Facebook ID" value="{{ $contact->facebook }}">
</div>
<div>
<label for="avatar">Avatar:</label>
<input type="file" accept="image/*" value="Upload" name="avatar" id="avatar">
</div>
<input type="submit" name="submit" value="Submit">
</fieldset>
<div>
<label for="name">Real Name:</label>
<input type="text" name="name" id="name" placeholder="Real Name" value="{{ $contact->name }}">
</div>
<div>
<label for="nick">Nick:</label>
<input type="text" name="nick" id="nick" placeholder="local_nick" value="{{ $contact->nick }}">
</div>
<div>
<label for="homepage">Website:</label>
<input type="text" name="homepage" id="homepage" placeholder="https://homepage.com" value="{{ $contact->homepage }}">
</div>
<div>
<label for="twitter">Twitter Nick:</label>
<input type="text" name="twitter" id="twitter" placeholder="Twitter handle" value="{{ $contact->twitter }}">
</div>
<div>
<label for="facebook">Facebook Profile ID:</label>
<input type="text" name="facebook" id="facebook" placeholder="Facebook ID" value="{{ $contact->facebook }}">
</div>
<div>
<label for="avatar">Avatar:</label>
<input type="file" accept="image/*" value="Upload" name="avatar" id="avatar">
</div>
<div>
<button type="submit" name="submit">Submit</button>
</div>
</form>
<p>Instead of uploading an image, you can <a href="/admin/contacts/edit/{{ $contact->id }}/getavatar">grab from their homepage</a>?</p>
@stop

View file

@ -12,35 +12,28 @@
</ul>
</div>
@endif
<form action="/admin/notes" method="post" accept-charset="utf-8">
<form action="/admin/notes" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
<fieldset>
<legend>New Note</legend>
<div>
<label for="in-reply-to" accesskey="r">Reply-to: </label>
<input type="text"
name="in-reply-to"
id="in-reply-to"
placeholder="in-reply-to-1 in-reply-to-2 …"
>
</div>
<div>
<label for="content" accesskey="n">Note: </label>
<textarea name="content"
id="content"
placeholder="Note"
autofocus="autofocus">
{{ old('content') }}
</textarea>
</div>
<div>
<div>
<button type="submit"
name="submit"
id="submit"
value="Submit"
>Submit</button>
</div>
</fieldset>
<div>
<label for="in-reply-to" accesskey="r">Reply-to: </label>
<input type="text"
name="in-reply-to"
id="in-reply-to"
placeholder="in-reply-to-1 in-reply-to-2 …"
>
</div>
<div>
<label for="content" accesskey="n">Note: </label>
<textarea name="content"
id="content"
placeholder="Note"
autofocus="autofocus"
>{{ old('content') }}</textarea>
</div>
<div>
<button type="submit"
name="submit"
>Submit</button>
</div>
</form>
@stop

View file

@ -3,23 +3,31 @@
@section('title')Edit Note « Admin CP « @stop
@section('content')
<form action="/admin/notes/{{ $note->id }}" method="post" accept-charset="utf-8">
<form action="/admin/notes/{{ $note->id }}" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
{{ method_field('PUT') }}
<fieldset>
<legend>Edit Note</legend>
<label for="in-reply-to" accesskey="r">Reply-to: </label><input type="text" name="in-reply-to" id="in-reply-to" placeholder="in-reply-to-1 in-reply-to-2 …" tabindex="1" value="{{ $note->in_reply_to }}"><br>
<label for="content" accesskey="n">Note: </label><textarea name="content" id="content" placeholder="Note" tabindex="2">{{ $note->originalNote }}</textarea><br>
<label for="webmentions" accesskey="w">Send webmentions: </label><input type="checkbox" name="webmentions" id="webmentions" checked="checked" tabindex="3"><br>
<label for="kludge"></label><input type="submit" value="Submit" id="kludge" tabindex="6">
</fieldset>
<div>
<label for="in-reply-to" accesskey="r">Reply-to: </label>
<input type="text" name="in-reply-to" id="in-reply-to" placeholder="in-reply-to-1 in-reply-to-2 …" tabindex="1" value="{{ $note->in_reply_to }}">
</div>
<div>
<label for="content" accesskey="n">Note: </label>
<textarea name="content" id="content" placeholder="Note" tabindex="2">{{ $note->originalNote }}</textarea>
</div>
<div class="form-row">
<label for="webmentions" accesskey="w">Send webmentions: </label>
<input type="checkbox" name="webmentions" id="webmentions" checked="checked" tabindex="3">
</div>
<div>
<button type="submit" name="submit">Submit</button>
</div>
</form>
<form action="/admin/notes/{{ $note->id }}" method="post" accept-charset="utf-8">
<hr>
<form action="/admin/notes/{{ $note->id }}" method="post" accept-charset="utf-8" class="form">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<fieldset>
<legend>Delete Note</legend>
<label for="kludge"></label><input type="submit" value="Delete" id="kludge">
</fieldset>
<div>
<button type="submit" name="delete">Delete</button>
</div>
</form>
@stop

View file

@ -4,15 +4,31 @@
@section('content')
<h1>New Place</h1>
<form action="/admin/places/" method="post" accept-charset="utf-8">
<form action="/admin/places/" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
<label for="name">Name:</label> <input type="text" name="name" id="name" placeholder="Place Name"><br>
<label for="description">Description:</label> <input type="text" name="description" id="description" placeholder="Description"><br>
<label for="latitude">Latitude:</label> <input type="text" name="latitude" id="latitude" placeholder="Latitude"><br>
<label for="longitude">Longitude:</label> <input type="text" name="longitude" id="longitude" placeholder="Longitude"><br>
<input type="submit" name="submit" value="Submit">
<div>
<label for="name">Name:</label>
<input type="text" name="name" id="name" placeholder="Place Name">
</div>
<div>
<label for="description">Description:</label>
<input type="text" name="description" id="description" placeholder="Description">
</div>
<div>
<label for="latitude">Latitude:</label>
<input type="text" name="latitude" id="latitude" placeholder="Latitude">
</div>
<div>
<label for="longitude">Longitude:</label>
<input type="text" name="longitude" id="longitude" placeholder="Longitude">
</div>
<div>
<input type="submit" name="submit" value="Submit">
</div>
<h2>Location</h2>
<button type="button" name="locate" id="locate">Locate</button>
<div>
<button type="button" name="locate" id="locate">Locate</button>
</div>
</form>
@stop

View file

@ -4,118 +4,137 @@
@section('content')
<h1>Edit Place</h1>
<form action="/admin/places/{{ $place->id }}" method="post" accept-charset="utf-8">
<form action="/admin/places/{{ $place->id }}" method="post" accept-charset="utf-8" class="admin-form form">
{{ csrf_field() }}
{{ method_field('PUT') }}
<p>Name</p>
<input type="text" name="name" id="name" value="{{ $place->name }}"><br>
<p>Description</p>
<textarea name="description" id="description">{{ $place->description }}</textarea><br>
<p>Location</p>
<div class="map" data-latitude="{{ $place->latitude }}" data-longitude="{{ $place->longitude }}" data-id="{{ $place->id }}"></div>
<script>
var geojson{{ $place->id }} = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [{{ $place->longitude }}, {{ $place->latitude }}]
},
"properties": {
"title": "{{ $place->name }}",
"icon": "{{ $place->icon ?? 'marker' }}"
}
}]
}
</script>
<input type="text" name="latitude" id="latitude" value="{{ $place->latitude }}"><br>
<input type="text" name="longitude" id="longitude" value="{{ $place->longitude }}"><br>
<p>Map Icon</p>
<select name="icon" id="icon">
<option value="airfield"@if($place->icon == 'airfield')selected @endif>airfield</option>
<option value="airport"@if($place->icon == 'airport')selected @endif>airport</option>
<option value="alcohol-shop"@if($place->icon == 'alcohol-shop')selected @endif>alcohol-shop</option>
<option value="amusement-park"@if($place->icon == 'amusement-park')selected @endif>amusement-park</option>
<option value="aquarium"@if($place->icon == 'aquarium')selected @endif>aquarium</option>
<option value="art-gallery"@if($place->icon == 'art-gallery')selected @endif>art-gallery</option>
<option value="attraction"@if($place->icon == 'attraction')selected @endif>attraction</option>
<option value="bakery"@if($place->icon == 'bakery')selected @endif>bakery</option>
<option value="bank"@if($place->icon == 'bank')selected @endif>bank</option>
<option value="bar"@if($place->icon == 'bar')selected @endif>bar</option>
<option value="beer"@if($place->icon == 'beer')selected @endif>beer</option>
<option value="bicycle"@if($place->icon == 'bicycle')selected @endif>bicycle</option>
<option value="bicycle-share"@if($place->icon == 'bicycle-share')selected @endif>bicycle-share</option>
<option value="bus"@if($place->icon == 'bus')selected @endif>bus</option>
<option value="cafe"@if($place->icon == 'cafe')selected @endif>cafe</option>
<option value="campsite"@if($place->icon == 'campsite')selected @endif>campsite</option>
<option value="car"@if($place->icon == 'car')selected @endif>car</option>
<option value="castle"@if($place->icon == 'castle')selected @endif>castle</option>
<option value="cemetery"@if($place->icon == 'cemetery')selected @endif>cemetery</option>
<option value="cinema"@if($place->icon == 'cinema')selected @endif>cinema</option>
<option value="circle"@if($place->icon == 'circle')selected @endif>circle</option>
<option value="circle-stroked"@if($place->icon == 'circle-stroked')selected @endif>circle-stroked</option>
<option value="clothing-store"@if($place->icon == 'clothing-store')selected @endif>clothing-store</option>
<option value="college"@if($place->icon == 'college')selected @endif>college</option>
<option value="dentist"@if($place->icon == 'dentist')selected @endif>dentist</option>
<option value="doctor"@if($place->icon == 'doctor')selected @endif>doctor</option>
<option value="dog-park"@if($place->icon == 'dog-park')selected @endif>dog-park</option>
<option value="drinking-water"@if($place->icon == 'drinking-water')selected @endif>drinking-water</option>
<option value="embassy"@if($place->icon == 'embassy')selected @endif>embassy</option>
<option value="entrance"@if($place->icon == 'entrance')selected @endif>entrance</option>
<option value="fast-food"@if($place->icon == 'fast-food')selected @endif>fast-food</option>
<option value="ferry"@if($place->icon == 'ferry')selected @endif>ferry</option>
<option value="fire-station"@if($place->icon == 'fire-station')selected @endif>fire-station</option>
<option value="fuel"@if($place->icon == 'fuel')selected @endif>fuel</option>
<option value="garden"@if($place->icon == 'garden')selected @endif>garden</option>
<option value="golf"@if($place->icon == 'golf')selected @endif>golf</option>
<option value="grocery"@if($place->icon == 'grocery')selected @endif>grocery</option>
<option value="harbor"@if($place->icon == 'harbor')selected @endif>harbor</option>
<option value="heliport"@if($place->icon == 'heliport')selected @endif>heliport</option>
<option value="hospital"@if($place->icon == 'hospital')selected @endif>hospital</option>
<option value="ice-cream"@if($place->icon == 'ice-cream')selected @endif>ice-cream</option>
<option value="information"@if($place->icon == 'information')selected @endif>information</option>
<option value="laundry"@if($place->icon == 'laundry')selected @endif>laundry</option>
<option value="library"@if($place->icon == 'library')selected @endif>library</option>
<option value="lodging"@if($place->icon == 'lodging')selected @endif>lodging</option>
<option value="marker"@if($place->icon == 'marker')selected @endif>marker</option>
<option value="monument"@if($place->icon == 'monument')selected @endif>monument</option>
<option value="mountain"@if($place->icon == 'mountain')selected @endif>mountain</option>
<option value="museum"@if($place->icon == 'museum')selected @endif>museum</option>
<option value="music"@if($place->icon == 'music')selected @endif>music</option>
<option value="park"@if($place->icon == 'park')selected @endif>park</option>
<option value="pharmacy"@if($place->icon == 'pharmacy')selected @endif>pharmacy</option>
<option value="picnic-site"@if($place->icon == 'picnic-site')selected @endif>picnic-site</option>
<option value="place-of-worship"@if($place->icon == 'place-of-worship')selected @endif>place-of-worship</option>
<option value="playground"@if($place->icon == 'playground')selected @endif>playground</option>
<option value="police"@if($place->icon == 'police')selected @endif>police</option>
<option value="post"@if($place->icon == 'post')selected @endif>post</option>
<option value="prison"@if($place->icon == 'prison')selected @endif>prison</option>
<option value="rail"@if($place->icon == 'rail')selected @endif>rail</option>
<option value="rail-light"@if($place->icon == 'rail-light')selected @endif>rail-light</option>
<option value="rail-metro"@if($place->icon == 'rail-metro')selected @endif>rail-metro</option>
<option value="religious-christian"@if($place->icon == 'religious-christian')selected @endif>religious-christian</option>
<option value="religious-jewish"@if($place->icon == 'religious-jewish')selected @endif>religious-jewish</option>
<option value="religious-muslim"@if($place->icon == 'religious-muslim')selected @endif>religious-muslim</option>
<option value="restaurant"@if($place->icon == 'restaurant')selected @endif>restaurant</option>
<option value="rocket"@if($place->icon == 'rocket')selected @endif>rocket</option>
<option value="school"@if($place->icon == 'school')selected @endif>school</option>
<option value="shop"@if($place->icon == 'shop')selected @endif>shop</option>
<option value="stadium"@if($place->icon == 'stadium')selected @endif>stadium</option>
<option value="star"@if($place->icon == 'star')selected @endif>star</option>
<option value="suitcase"@if($place->icon == 'suitcase')selected @endif>suitcase</option>
<option value="swimming"@if($place->icon == 'swimming')selected @endif>swimming</option>
<option value="theatre"@if($place->icon == 'theatre')selected @endif>theatre</option>
<option value="toilet"@if($place->icon == 'toilet')selected @endif>toilet</option>
<option value="town-hall"@if($place->icon == 'town-hall')selected @endif>town-hall</option>
<option value="triangle"@if($place->icon == 'triangle')selected @endif>triangle</option>
<option value="triangle-stroked"@if($place->icon == 'triangle-stroked')selected @endif>triangle-stroked</option>
<option value="veterinary"@if($place->icon == 'veterinary')selected @endif>veterinary</option>
<option value="volcano"@if($place->icon == 'volcano')selected @endif>volcano</option>
<option value="zoo"@if($place->icon == 'zoo')selected @endif>zoo</option>
</select><br>
<input type="submit" name="edit" value="Edit"><br><br>
<input type="submit" name="delete" value="Delete">
<div>
<label for="name">Name:</label>
<input type="text" name="name" id="name" value="{{ $place->name }}">
</div>
<div>
<label for="description">Description</label>
<textarea name="description" id="description">{{ $place->description }}</textarea>
</div>
<div>
<p>Location</p>
<div class="map" data-latitude="{{ $place->latitude }}" data-longitude="{{ $place->longitude }}" data-id="{{ $place->id }}"></div>
<script>
var geojson{{ $place->id }} = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [{{ $place->longitude }}, {{ $place->latitude }}]
},
"properties": {
"title": "{{ $place->name }}",
"icon": "{{ $place->icon ?? 'marker' }}"
}
}]
}
</script>
</div>
<div>
<label for="latitude">Latitude:</label>
<input type="text" name="latitude" id="latitude" value="{{ $place->latitude }}">
</div>
<div>
<label for="longitude">Longitude:</label>
<input type="text" name="longitude" id="longitude" value="{{ $place->longitude }}">
</div>
<div class="form-row">
<label for="icon">Map Icon</label>
<select name="icon" id="icon">
<option value="airfield"@if($place->icon == 'airfield')selected @endif>airfield</option>
<option value="airport"@if($place->icon == 'airport')selected @endif>airport</option>
<option value="alcohol-shop"@if($place->icon == 'alcohol-shop')selected @endif>alcohol-shop</option>
<option value="amusement-park"@if($place->icon == 'amusement-park')selected @endif>amusement-park</option>
<option value="aquarium"@if($place->icon == 'aquarium')selected @endif>aquarium</option>
<option value="art-gallery"@if($place->icon == 'art-gallery')selected @endif>art-gallery</option>
<option value="attraction"@if($place->icon == 'attraction')selected @endif>attraction</option>
<option value="bakery"@if($place->icon == 'bakery')selected @endif>bakery</option>
<option value="bank"@if($place->icon == 'bank')selected @endif>bank</option>
<option value="bar"@if($place->icon == 'bar')selected @endif>bar</option>
<option value="beer"@if($place->icon == 'beer')selected @endif>beer</option>
<option value="bicycle"@if($place->icon == 'bicycle')selected @endif>bicycle</option>
<option value="bicycle-share"@if($place->icon == 'bicycle-share')selected @endif>bicycle-share</option>
<option value="bus"@if($place->icon == 'bus')selected @endif>bus</option>
<option value="cafe"@if($place->icon == 'cafe')selected @endif>cafe</option>
<option value="campsite"@if($place->icon == 'campsite')selected @endif>campsite</option>
<option value="car"@if($place->icon == 'car')selected @endif>car</option>
<option value="castle"@if($place->icon == 'castle')selected @endif>castle</option>
<option value="cemetery"@if($place->icon == 'cemetery')selected @endif>cemetery</option>
<option value="cinema"@if($place->icon == 'cinema')selected @endif>cinema</option>
<option value="circle"@if($place->icon == 'circle')selected @endif>circle</option>
<option value="circle-stroked"@if($place->icon == 'circle-stroked')selected @endif>circle-stroked</option>
<option value="clothing-store"@if($place->icon == 'clothing-store')selected @endif>clothing-store</option>
<option value="college"@if($place->icon == 'college')selected @endif>college</option>
<option value="dentist"@if($place->icon == 'dentist')selected @endif>dentist</option>
<option value="doctor"@if($place->icon == 'doctor')selected @endif>doctor</option>
<option value="dog-park"@if($place->icon == 'dog-park')selected @endif>dog-park</option>
<option value="drinking-water"@if($place->icon == 'drinking-water')selected @endif>drinking-water</option>
<option value="embassy"@if($place->icon == 'embassy')selected @endif>embassy</option>
<option value="entrance"@if($place->icon == 'entrance')selected @endif>entrance</option>
<option value="fast-food"@if($place->icon == 'fast-food')selected @endif>fast-food</option>
<option value="ferry"@if($place->icon == 'ferry')selected @endif>ferry</option>
<option value="fire-station"@if($place->icon == 'fire-station')selected @endif>fire-station</option>
<option value="fuel"@if($place->icon == 'fuel')selected @endif>fuel</option>
<option value="garden"@if($place->icon == 'garden')selected @endif>garden</option>
<option value="golf"@if($place->icon == 'golf')selected @endif>golf</option>
<option value="grocery"@if($place->icon == 'grocery')selected @endif>grocery</option>
<option value="harbor"@if($place->icon == 'harbor')selected @endif>harbor</option>
<option value="heliport"@if($place->icon == 'heliport')selected @endif>heliport</option>
<option value="hospital"@if($place->icon == 'hospital')selected @endif>hospital</option>
<option value="ice-cream"@if($place->icon == 'ice-cream')selected @endif>ice-cream</option>
<option value="information"@if($place->icon == 'information')selected @endif>information</option>
<option value="laundry"@if($place->icon == 'laundry')selected @endif>laundry</option>
<option value="library"@if($place->icon == 'library')selected @endif>library</option>
<option value="lodging"@if($place->icon == 'lodging')selected @endif>lodging</option>
<option value="marker"@if($place->icon == 'marker')selected @endif>marker</option>
<option value="monument"@if($place->icon == 'monument')selected @endif>monument</option>
<option value="mountain"@if($place->icon == 'mountain')selected @endif>mountain</option>
<option value="museum"@if($place->icon == 'museum')selected @endif>museum</option>
<option value="music"@if($place->icon == 'music')selected @endif>music</option>
<option value="park"@if($place->icon == 'park')selected @endif>park</option>
<option value="pharmacy"@if($place->icon == 'pharmacy')selected @endif>pharmacy</option>
<option value="picnic-site"@if($place->icon == 'picnic-site')selected @endif>picnic-site</option>
<option value="place-of-worship"@if($place->icon == 'place-of-worship')selected @endif>place-of-worship</option>
<option value="playground"@if($place->icon == 'playground')selected @endif>playground</option>
<option value="police"@if($place->icon == 'police')selected @endif>police</option>
<option value="post"@if($place->icon == 'post')selected @endif>post</option>
<option value="prison"@if($place->icon == 'prison')selected @endif>prison</option>
<option value="rail"@if($place->icon == 'rail')selected @endif>rail</option>
<option value="rail-light"@if($place->icon == 'rail-light')selected @endif>rail-light</option>
<option value="rail-metro"@if($place->icon == 'rail-metro')selected @endif>rail-metro</option>
<option value="religious-christian"@if($place->icon == 'religious-christian')selected @endif>religious-christian</option>
<option value="religious-jewish"@if($place->icon == 'religious-jewish')selected @endif>religious-jewish</option>
<option value="religious-muslim"@if($place->icon == 'religious-muslim')selected @endif>religious-muslim</option>
<option value="restaurant"@if($place->icon == 'restaurant')selected @endif>restaurant</option>
<option value="rocket"@if($place->icon == 'rocket')selected @endif>rocket</option>
<option value="school"@if($place->icon == 'school')selected @endif>school</option>
<option value="shop"@if($place->icon == 'shop')selected @endif>shop</option>
<option value="stadium"@if($place->icon == 'stadium')selected @endif>stadium</option>
<option value="star"@if($place->icon == 'star')selected @endif>star</option>
<option value="suitcase"@if($place->icon == 'suitcase')selected @endif>suitcase</option>
<option value="swimming"@if($place->icon == 'swimming')selected @endif>swimming</option>
<option value="theatre"@if($place->icon == 'theatre')selected @endif>theatre</option>
<option value="toilet"@if($place->icon == 'toilet')selected @endif>toilet</option>
<option value="town-hall"@if($place->icon == 'town-hall')selected @endif>town-hall</option>
<option value="triangle"@if($place->icon == 'triangle')selected @endif>triangle</option>
<option value="triangle-stroked"@if($place->icon == 'triangle-stroked')selected @endif>triangle-stroked</option>
<option value="veterinary"@if($place->icon == 'veterinary')selected @endif>veterinary</option>
<option value="volcano"@if($place->icon == 'volcano')selected @endif>volcano</option>
<option value="zoo"@if($place->icon == 'zoo')selected @endif>zoo</option>
</select>
</div>
<div>
<button type="submit" name="edit">Edit</button>
</div>
<hr>
<div>
<button type="submit" name="delete">Delete</button>
</div>
</form>
<p><a href="/admin/places/{{ $place->id }}/merge">Merge with another place?</a></p>

View file

@ -875,4 +875,22 @@ class MicropubControllerTest extends TestCase
$response->assertStatus(400);
$response->assertJson(['error_description' => 'The uploaded file failed validation']);
}
public function test_access_token_form_encoded()
{
$faker = \Faker\Factory::create();
$note = $faker->text;
$response = $this->call(
'POST',
'/api/post',
[
'h' => 'entry',
'content' => $note,
'published' => Carbon::now()->toW3CString(),
'access_token' => $this->getToken(),
]
);
$response->assertJson(['response' => 'created']);
$this->assertDatabaseHas('notes', ['note' => $note]);
}
}