Merge branch 'release/0.5.25'

This commit is contained in:
Jonny Barnes 2017-07-20 10:15:56 +01:00
commit fa76d44a62
48 changed files with 2093 additions and 261 deletions

View file

@ -60,7 +60,6 @@ before_script:
script:
- php vendor/bin/phpunit --coverage-text
- php artisan dusk
- php vendor/bin/security-checker security:check ./composer.lock --end-point=http://security.sensiolabs.org/check_lock
after_script:

View file

@ -14,9 +14,9 @@ class Contact extends Model
protected $table = 'contacts';
/**
* We shall set a blacklist of non-modifiable model attributes.
* We shall guard against mass-migration.
*
* @var array
*/
protected $guarded = ['id'];
protected $fillable = ['nick', 'name', 'homepage', 'twitter', 'facebook'];
}

View file

@ -56,12 +56,12 @@ class MicropubClientController extends Controller
public function processMedia(Request $request)
{
if ($request->hasFile('file') == false) {
return back();
return back()->with('error', 'No file uploaded');
}
$user = IndieWebUser::where('me', $request->session()->get('me'))->firstOrFail();
if ($user->mediaEndpoint == null || $user->token == null) {
return back();
return back()->with('error', 'No user token or known endpoint');
}
$mediaURLs = [];

View file

@ -385,7 +385,6 @@ class MicropubController extends Controller
}
//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) {
@ -407,7 +406,7 @@ class MicropubController extends Controller
$media = new Media();
$media->token = $request->bearerToken();
$media->path = $path;
$media->type = $type;
$media->type = $this->getFileTypeFromMimeType($request->file('file')->getMimeType());
$media->save();
return response()->json([

View file

@ -1,5 +1,10 @@
# Changelog
## Version 0.5.25 (2017-07-20)
- Update npm dev dependencies to use local installs over global installs
- Improve contact info display in note mentions by using hovercards
- Add some error messages when trying to upload media to aid debugging
## Version 0.5.24 (2017-07-13)
- Add my `commonmark-linkify` extension
- Some minor tweaks, including logging of micropub media requests

54
composer.lock generated
View file

@ -8,16 +8,16 @@
"packages": [
{
"name": "aws/aws-sdk-php",
"version": "3.31.2",
"version": "3.31.5",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "582e7764e0fa389c3248450cd6db2564dd656d99"
"reference": "bb28d91e5766539224f06240472e5184bfddca66"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/582e7764e0fa389c3248450cd6db2564dd656d99",
"reference": "582e7764e0fa389c3248450cd6db2564dd656d99",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/bb28d91e5766539224f06240472e5184bfddca66",
"reference": "bb28d91e5766539224f06240472e5184bfddca66",
"shasum": ""
},
"require": {
@ -84,7 +84,7 @@
"s3",
"sdk"
],
"time": "2017-07-06T21:11:49+00:00"
"time": "2017-07-14T21:17:45+00:00"
},
{
"name": "barnabywalters/mf-cleaner",
@ -1764,16 +1764,16 @@
},
{
"name": "laravel/scout",
"version": "v3.0.6",
"version": "v3.0.7",
"source": {
"type": "git",
"url": "https://github.com/laravel/scout.git",
"reference": "5a899828bf154ae7d957a2a78b4b6002e9fdf0fa"
"reference": "b899432186096dacc90700d5320d95cc3db1efe1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/scout/zipball/5a899828bf154ae7d957a2a78b4b6002e9fdf0fa",
"reference": "5a899828bf154ae7d957a2a78b4b6002e9fdf0fa",
"url": "https://api.github.com/repos/laravel/scout/zipball/b899432186096dacc90700d5320d95cc3db1efe1",
"reference": "b899432186096dacc90700d5320d95cc3db1efe1",
"shasum": ""
},
"require": {
@ -1825,7 +1825,7 @@
"laravel",
"search"
],
"time": "2017-07-12T12:29:47+00:00"
"time": "2017-07-12T18:42:43+00:00"
},
{
"name": "laravel/tinker",
@ -2533,16 +2533,16 @@
},
{
"name": "phaza/laravel-postgis",
"version": "3.1.3",
"version": "3.2",
"source": {
"type": "git",
"url": "https://github.com/njbarrett/laravel-postgis.git",
"reference": "64f279eb3972b8b6b77e3cb43170a4095da4515f"
"reference": "53e0d18122bf8b21af3f54a56adb3661683705b3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/njbarrett/laravel-postgis/zipball/64f279eb3972b8b6b77e3cb43170a4095da4515f",
"reference": "64f279eb3972b8b6b77e3cb43170a4095da4515f",
"url": "https://api.github.com/repos/njbarrett/laravel-postgis/zipball/53e0d18122bf8b21af3f54a56adb3661683705b3",
"reference": "53e0d18122bf8b21af3f54a56adb3661683705b3",
"shasum": ""
},
"require": {
@ -2579,7 +2579,7 @@
}
],
"description": "Postgis extensions for laravel. Aims to make it easy to work with geometries from laravel models",
"time": "2017-05-23T09:38:08+00:00"
"time": "2017-07-15T00:56:38+00:00"
},
{
"name": "pmatseykanets/laravel-scout-postgres",
@ -4609,22 +4609,22 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "3.1.1",
"version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
"reference": "46f7e8bb075036c92695b15a1ddb6971c751e585"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/46f7e8bb075036c92695b15a1ddb6971c751e585",
"reference": "46f7e8bb075036c92695b15a1ddb6971c751e585",
"shasum": ""
},
"require": {
"php": ">=5.5",
"phpdocumentor/reflection-common": "^1.0@dev",
"phpdocumentor/type-resolver": "^0.2.0",
"phpdocumentor/type-resolver": "^0.4.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
@ -4650,24 +4650,24 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2016-09-30T07:12:33+00:00"
"time": "2017-07-15T11:38:20+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "0.2.1",
"version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
"reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"shasum": ""
},
"require": {
"php": ">=5.5",
"php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
@ -4697,7 +4697,7 @@
"email": "me@mikevanriel.com"
}
],
"time": "2016-11-25T06:54:22+00:00"
"time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",

View file

@ -1,5 +1,6 @@
<?php
use App\Article;
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
@ -11,13 +12,10 @@ class ArticlesTableSeeder extends Seeder
*/
public function run()
{
DB::table('articles')->insert([
'titleurl' => 'my-new-blog',
Article::create([
'title' => 'My New Blog',
'main' => 'This is my new blog. It uses `Markdown`.',
'main' => 'This is *my* new blog. It uses `Markdown`.',
'published' => 1,
'created_at' => '2016-01-12 15:51:01',
'updated_at' => '2016-01-12 15:51:01',
]);
}
}

View file

@ -1,5 +1,6 @@
<?php
use App\Contact;
use Illuminate\Database\Seeder;
class ContactsTableSeeder extends Seeder
@ -11,22 +12,18 @@ class ContactsTableSeeder extends Seeder
*/
public function run()
{
DB::table('contacts')->insert([
Contact::create([
'nick' => 'tantek',
'name' => 'Tantek Çelik',
'homepage' => 'http://tantek.com',
'twitter' => 't',
'created_at' => '2016-01-12 16:11:00',
'updated_at' => '2016-01-12 16:11:00',
]);
DB::table('contacts')->insert([
Contact::create([
'nick' => 'aaron',
'name' => 'Aaron Parecki',
'homepage' => 'https://aaronparecki.com',
'twitter' => 'aaronpk',
'created_at' => '2016-01-12 16:12:00',
'updated_at' => '2016-01-12 16:12:00',
'facebook' => '123456',
]);
}
}

View file

@ -1,5 +1,6 @@
<?php
use App\IndieWebUser;
use Illuminate\Database\Seeder;
class IndieWebUserTableSeeder extends Seeder
@ -11,6 +12,6 @@ class IndieWebUserTableSeeder extends Seeder
*/
public function run()
{
App\IndieWebUser::create(['me' => config('app.url')]);
IndieWebUser::create(['me' => config('app.url')]);
}
}

View file

@ -1,5 +1,6 @@
<?php
use App\WebMention;
use Illuminate\Database\Seeder;
class WebMentionsTableSeeder extends Seeder
@ -11,7 +12,7 @@ class WebMentionsTableSeeder extends Seeder
*/
public function run()
{
$webmention = App\WebMention::create([
$webmention = WebMention::create([
'source' => 'https://aaornpk.localhost/reply/1',
'target' => 'https://jonnybarnes.localhost/notes/D',
'commentable_id' => '13',

2114
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -12,18 +12,31 @@
"webStorage": "^1.2.4"
},
"devDependencies": {
"ajv": "^5.2.2",
"autoprefixer": "^7.1.2",
"babel-cli": "^6.18.0",
"babel-core": "^6.21.0",
"babel-loader": "^7.1.1",
"babel-preset-env": "^1.2.2",
"babel-preset-env": "^1.6.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-latest": "^6.16.0",
"babel-runtime": "^6.20.0",
"dotenv-webpack": "^1.5.2",
"lint-staged": "^4.0.0",
"dotenv-webpack": "^1.5.3",
"eslint": "^4.2.0",
"eslint-config-standard": "^10.2.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.1.1",
"eslint-plugin-promise": "^3.5.0",
"eslint-plugin-standard": "^3.0.1",
"lint-staged": "^4.0.2",
"postcss-cli": "^4.1.0",
"pre-commit": "^1.1.3",
"stylelint-config-standard": "^16.0.0",
"webpack": "^3.0.0"
"source-list-map": "^2.0.0",
"stylelint": "^8.0.0",
"stylelint-config-standard": "^17.0.0",
"uglify-js": "^3.0.25",
"webpack": "^3.3.0",
"webpack-sources": "^1.0.1"
},
"scripts": {
"compress": "scripts/compress",
@ -38,7 +51,7 @@
"sass": "sassc --style compressed --sourcemap resources/assets/sass/app.scss public/assets/css/app.css",
"stylelint-staged": "stylelint --syntax=scss",
"uglifyjs": "scripts/uglifyjs",
"webpack": "./node_modules/.bin/webpack --progress --colors"
"webpack": "webpack --progress --colors"
},
"lint-staged": {
"resources/assets/es6/*.js": "eslint",

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,4 @@
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
<rect fill="#3b5998" height="512" rx="15%" width="512"/>
<path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 244 B

View file

@ -0,0 +1,4 @@
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
<rect fill="#1da1f3" height="512" rx="15%" width="512"/>
<path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 397 B

View file

@ -1,2 +1,2 @@
!function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};__webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=5)}({5:function(module,exports,__webpack_require__){"use strict";var youtubeRegex=/watch\?v=([A-Za-z0-9\-_]+)\b/,spotifyRegex=/https\:\/\/play\.spotify\.com\/(.*)\b/,notes=document.querySelectorAll(".e-content"),_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=notes[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var note=_step.value,ytid=note.textContent.match(youtubeRegex);if(ytid){var ytcontainer=document.createElement("div");ytcontainer.classList.add("container");var ytiframe=document.createElement("iframe");ytiframe.classList.add("youtube"),ytiframe.setAttribute("src","https://www.youtube.com/embed/"+ytid[1]),ytiframe.setAttribute("frameborder",0),ytiframe.setAttribute("allowfullscreen","true"),ytcontainer.appendChild(ytiframe),note.appendChild(ytcontainer)}var spotifyid=note.textContent.match(spotifyRegex);if(spotifyid){var sid=spotifyid[1].replace("/",":"),siframe=document.createElement("iframe");siframe.classList.add("spotify"),siframe.setAttribute("src","https://embed.spotify.com/?uri=spotify:"+sid),siframe.setAttribute("frameborder",0),siframe.setAttribute("allowtransparency","true"),note.appendChild(siframe)}}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{!_iteratorNormalCompletion&&_iterator.return&&_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}}});
!function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};__webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=5)}({5:function(module,exports,__webpack_require__){"use strict";var youtubeRegex=/watch\?v=([A-Za-z0-9\-_]+)\b/,spotifyRegex=/https:\/\/play\.spotify\.com\/(.*)\b/,notes=document.querySelectorAll(".e-content"),_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=notes[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var note=_step.value,ytid=note.textContent.match(youtubeRegex);if(ytid){var ytcontainer=document.createElement("div");ytcontainer.classList.add("container");var ytiframe=document.createElement("iframe");ytiframe.classList.add("youtube"),ytiframe.setAttribute("src","https://www.youtube.com/embed/"+ytid[1]),ytiframe.setAttribute("frameborder",0),ytiframe.setAttribute("allowfullscreen","true"),ytcontainer.appendChild(ytiframe),note.appendChild(ytcontainer)}var spotifyid=note.textContent.match(spotifyRegex);if(spotifyid){var sid=spotifyid[1].replace("/",":"),siframe=document.createElement("iframe");siframe.classList.add("spotify"),siframe.setAttribute("src","https://embed.spotify.com/?uri=spotify:"+sid),siframe.setAttribute("frameborder",0),siframe.setAttribute("allowtransparency","true"),note.appendChild(siframe)}}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{!_iteratorNormalCompletion&&_iterator.return&&_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}}});
//# sourceMappingURL=links.js.map

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

@ -1,2 +1,2 @@
!function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};__webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=16)}({16:function(module,exports,__webpack_require__){"use strict";var _paq=_paq||[];_paq.push(["setTrackerUrl","https://analytics.jmb.lv/piwik.php"]),_paq.push(["setSiteId","1"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"])}});
!function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};__webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=16)}({16:function(module,exports,__webpack_require__){"use strict";(function(process){var idSite=process.env.PIWIK_ID,piwikTrackingApiUrl=process.env.PIWIK_URL,_paq=_paq||[];_paq.push(["setTrackerUrl",piwikTrackingApiUrl]),_paq.push(["setSiteId",idSite]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"])}).call(exports,__webpack_require__(17))},17:function(module,exports){function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(fun){if(cachedSetTimeout===setTimeout)return setTimeout(fun,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(fun,0);try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout)return clearTimeout(marker);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(marker);try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var timeout=runTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex<len;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,len=queue.length}currentQueue=null,draining=!1,runClearTimeout(timeout)}}function Item(fun,array){this.fun=fun,this.array=array}function noop(){}var cachedSetTimeout,cachedClearTimeout,process=module.exports={};!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)args[i-1]=arguments[i];queue.push(new Item(fun,args)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(name){return[]},process.binding=function(name){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(dir){throw new Error("process.chdir is not supported")},process.umask=function(){return 0}}});
//# sourceMappingURL=piwik.js.map

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

Binary file not shown.

Binary file not shown.

View file

@ -1,7 +1,7 @@
//links.js
let youtubeRegex = /watch\?v=([A-Za-z0-9\-_]+)\b/;
let spotifyRegex = /https\:\/\/play\.spotify\.com\/(.*)\b/;
let spotifyRegex = /https:\/\/play\.spotify\.com\/(.*)\b/;
let notes = document.querySelectorAll('.e-content');

View file

@ -44,9 +44,47 @@ body {
padding-left: 3px;
}
.mini-h-card img {
display: inline-block;
height: 1rem;
.mini-h-card {
position: relative;
}
.mini-h-card .p-name {
position: relative;
z-index: 100; /* we want this to still appear in the hovercard */
}
.mini-h-card .hovercard {
display: none;
}
.mini-h-card:hover .hovercard {
display: inline;
background-color: white;
border: solid 1px grey;
position: absolute;
min-width: 300px;
left: -10px;
top: -10px;
z-index: 50; /* less than p-name */
padding: 2rem 3rem 10px 10px;
}
.hovercard .u-photo {
position: absolute;
top: 10px;
right: 10px;
width: 3rem;
height: auto;
padding-bottom: 10px;
}
.hovercard .social-icon {
height: 0.8rem;
}
.hovercard a::before {
content: "\A";
white-space: pre;
}
body > .h-card {

View file

@ -1,8 +1 @@
<span class="u-category h-card">
<a class="mini-h-card u-url p-name" href="{{ $contact->homepage }}">
<img class="u-photo" alt="" src="{{ $contact->photo }}">
{!! $contact->name !!}
</a>
@if ($contact->facebook)<a class="u-url" href="https://www.facebook.com/{{ $contact->facebook }}"></a>@endif
@if ($contact->twitter)<a class="u-url" href="https://twitter.com/{{ $contact->twitter }}"></a>@endif
</span>
<span class="u-category h-card mini-h-card"><a class="u-url p-name" href="{{ $contact->homepage }}">{!! $contact->name !!}</a><span class="hovercard">@if ($contact->facebook)<a class="u-url" href="https://www.facebook.com/{{ $contact->facebook }}"><img class="social-icon" src="/assets/img/social-icons/facebook.svg"> {{ $contact->facebook_name ?: 'Facebook' }}</a>@endif @if ($contact->twitter)<a class="u-url" href="https://twitter.com/{{ $contact->twitter }}"><img class="social-icon" src="/assets/img/social-icons/twitter.svg"> {{ $contact->twitter }}</a><img class="u-photo" alt="" src="{{ $contact->photo }}">@endif</span></span>

View file

@ -47,7 +47,7 @@ class OwnYourGramTest extends TestCase
{
$signer = new Sha256();
$token = (new Builder())
->set('client_id', 'http://ownyourgram.com')
->set('client_id', 'https://ownyourgram.com')
->set('me', config('app.url'))
->set('scope', 'create')
->set('issued_at', time())

View file

@ -29,12 +29,7 @@ class NotesTest extends TestCase
*/
public function test_default_image_used_in_makehcards_method()
{
$expected = '<p>Hi <span class="u-category h-card">
<a class="mini-h-card u-url p-name" href="http://tantek.com">
<img class="u-photo" alt="" src="/assets/profile-images/default-image">
Tantek Çelik
</a>
<a class="u-url" href="https://twitter.com/t"></a></span></p>' . PHP_EOL;
$expected = '<p>Hi <span class="u-category h-card mini-h-card"><a class="u-url p-name" href="http://tantek.com">Tantek Çelik</a><span class="hovercard"> <a class="u-url" href="https://twitter.com/t"><img class="social-icon" src="/assets/img/social-icons/twitter.svg"> t</a><img class="u-photo" alt="" src="/assets/profile-images/default-image"></span></span></p>' . PHP_EOL;
$note = Note::find(12);
$this->assertEquals($expected, $note->note);
}
@ -46,12 +41,7 @@ class NotesTest extends TestCase
*/
public function test_specific_profile_image_used_in_makehcards_method()
{
$expected = '<p>Hi <span class="u-category h-card">
<a class="mini-h-card u-url p-name" href="https://aaronparecki.com">
<img class="u-photo" alt="" src="/assets/profile-images/aaronparecki.com/image">
Aaron Parecki
</a>
<a class="u-url" href="https://twitter.com/aaronpk"></a></span></p>' . PHP_EOL;
$expected = '<p>Hi <span class="u-category h-card mini-h-card"><a class="u-url p-name" href="https://aaronparecki.com">Aaron Parecki</a><span class="hovercard"><a class="u-url" href="https://www.facebook.com/123456"><img class="social-icon" src="/assets/img/social-icons/facebook.svg"> Facebook</a> <a class="u-url" href="https://twitter.com/aaronpk"><img class="social-icon" src="/assets/img/social-icons/twitter.svg"> aaronpk</a><img class="u-photo" alt="" src="/assets/profile-images/aaronparecki.com/image"></span></span></p>' . PHP_EOL;
$note = Note::find(13);
$this->assertEquals($expected, $note->note);
}