Initial commit to new repo

This commit is contained in:
Jonny Barnes 2016-05-19 15:01:28 +01:00
parent a267f9bfcc
commit a5173c981b
292 changed files with 17472 additions and 0 deletions

2
resources/assets/sass/app.scss vendored Normal file
View file

@ -0,0 +1,2 @@
// @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";

View file

@ -0,0 +1,12 @@
//colours.scss
body {
color: $base03;
}
header a {
color: $base03;
}
a {
color: $blue;
}

View file

@ -0,0 +1,41 @@
//fonts.scss
body {
text-rendering: optimizeLegibility;
font-feature-settings: "liga";
font-family: $font-stack-body;
font-size: 1.2em;
}
#topheader h1 {
font-family: $font-stack-body;
}
h1 {
font-family: $font-stack-headers;
}
#topheader a {
text-decoration: none;
}
nav {
font-feature-settings: "dlig";
}
article header h1 a {
text-decoration: none;
}
article div a {
text-decoration: none;
}
footer {
font-size: 0.8em;
}
.emoji {
width: auto;
height: 1em;
}

View file

@ -0,0 +1,45 @@
//forms.scss
form {
width: 100%;
}
fieldset {
min-width: 0;
width: 100%;
}
input[type="text"], input[type="file"], textarea {
width: 100%;
}
input, button, textarea {
-webkit-appearance: none;
-moz-appearance: none;
background-color: $base03;
color: $base3;
border: 1px solid $base3;
border-radius: 4px;
}
button:hover {
transition: 0.5s ease-in-out;
background-color: $base3;
color: $base03;
}
button:disabled {
background-color: $base1;
color: $base03;
}
input[type="checkbox"] {
-webkit-appearance: checkbox;
-moz-appearance: checkbox;
}
#photo {
background: inherit;
color: inherit;
border: none;
}

View file

@ -0,0 +1,9 @@
//twitter.scss
.twitter-tweet-rendered {
margin-bottom: 0 !important;
}
.twitter-tweet-rendered + .note {
margin-top: 0;
}

41
resources/assets/sass/global.scss vendored Normal file
View file

@ -0,0 +1,41 @@
//global.scss
//variables
$font-stack-body: "leitura-news", serif;
$font-stack-headers: "prenton", sans-serif;
//solarized variables TERMCOL
$base03: #002b36;//brblack
$base02: #073642;//black
$base01: #586e75;//brgreen
$base00: #657b83;//bryellow
$base0: #839496;//brblue
$base1: #93a1a1;//brcyan
$base2: #eee8d5;//white
$base3: #fdf6e3;//brwhite
$yellow: #b58900;
$orange: #cb4b16;
$red: #dc322f;
$magenta: #d33682;
$violet: #6c71c4;
$blue: #268bd2;
$cyan: #2aa198;
$green: #859900;
//global styles
html {
background: url('/assets/img/escheresque.png');
}
.map {
height: 150px;
}
//layout
@import "layout";
//components
@import "components/fonts";
@import "components/colours";
@import "components/forms";
@import "components/twitter";

197
resources/assets/sass/layout.scss vendored Normal file
View file

@ -0,0 +1,197 @@
//layout.scss
//boxes
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
#topheader {
display: flex;
flex-flow: row;
}
#topheader a {
padding: 0.5em 1em;
}
nav {
padding-top: 0.5em;
}
.social-list {
padding-left: 2em;
}
.note {
background-color: $base2;
box-shadow: 0 0 10px 2px $base1;
padding: 0.5em 0.5em;
margin-top: 1em;
}
.note:after {
content: " ";
display: block;
height: 0;
clear: both;
}
.note a {
word-wrap: break-word;
}
.note .e-content p:first-child {
margin-top: 0;
}
.note-metadata {
width: 100%;
}
.social-links {
float: right;
}
.social-links a {
text-decoration: none;
}
.icon {
width: auto;
height: 1em;
fill: $blue;
}
.reply {
margin-left: 2em;
margin-right: 2em;
font-size: 0.8em;
padding: 0.5em 0.5em;
}
.reply-to {
margin-left: 2em;
margin-right: 2em;
font-size: 0.8em;
padding-top: 2em;
}
.reply-to + .note {
margin-top: 0.3em;
}
.mini-h-card {
border-radius: 2px;
border: 1px solid $base01;
padding: 0 0.2em;
text-decoration: none;
margin-right: 5px;
white-space: nowrap;
}
.mini-h-card img {
height: 1.26em;
display: inline;
border-radius: 2px;
vertical-align: text-bottom;
}
.like-photo {
height: 1.26em;
}
.reply .e-content {
margin-top: 0.5em;
padding-left: 0.5em;
}
.notes-subtitle {
font-size: 1em;
}
.note-photo {
width: 100%;
height: auto;
image-orientation: from-image;
}
//articles
article header {
margin-top: 0.5em;
margin-bottom: 0.8em;
}
.post-info {
font-size: 0.8em;
font-style: italic;
margin-top: -0.8em;
}
//contacts
.contact {
position: relative;
}
.contact-links {
list-style-type: none;
}
.contact img {
height: auto;
width: 2em;
position: absolute;
top: 0;
left: 0;
}
.contact-info {
margin-left: 2em;
}
#map {
height: 300px;
}
/* media queries */
@media (min-width: 700px) {
main {
margin-left: 10em;
margin-right: 10em;
}
footer {
margin-left: 13em;
margin-right: 13em;
}
.youtube {
width: 640px;
height: 360px;
}
}
@media (max-width: 699px) {
main {
margin-left: 10px;
margin-right: 10px;
}
article {
word-wrap: break-word;
}
footer {
margin-left: 15px;
margin-right: 15px;
}
.youtube {
width: 100%;
height: auto;
}
}

View file

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'These credentials do not match our records.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

View file

@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View file

@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'Passwords must be at least six characters and match the confirmation.',
'reset' => 'Your password has been reset!',
'sent' => 'We have e-mailed your password reset link!',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that e-mail address.",
];

View file

@ -0,0 +1,113 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'between' => [
'numeric' => 'The :attribute must be between :min and :max.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string' => 'The :attribute must be between :min and :max characters.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'date' => 'The :attribute is not a valid date.',
'date_format' => 'The :attribute does not match the format :format.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'distinct' => 'The :attribute field has a duplicate value.',
'email' => 'The :attribute must be a valid email address.',
'exists' => 'The selected :attribute is invalid.',
'filled' => 'The :attribute field is required.',
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute may not be greater than :max.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => 'The :attribute may not be greater than :max characters.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'min' => [
'numeric' => 'The :attribute must be at least :min.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min characters.',
'array' => 'The :attribute must have at least :min items.',
],
'not_in' => 'The selected :attribute is invalid.',
'numeric' => 'The :attribute must be a number.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'same' => 'The :attribute and :other must match.',
'size' => [
'numeric' => 'The :attribute must be :size.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must contain :size items.',
],
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => [],
];

View file

@ -0,0 +1,13 @@
@extends('master')
@section('title')
Delete Article? « Admin CP
@stop
@section('content')
<form action="/admin/blog/delete/{{ $id }}" method="post">
<label for="delete">Are you sure you want to delete this post? </label><input type="checkbox" name="delete" id="delete">
<br>
<input type="submit" id="submit" value="Submit">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Article Deleted « Admin CP
@stop
@section('content')
<p>You have successfully deletd the article with id: {{ $id }}</p>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Edit Client « Admin CP
@stop
@section('content')
<p>Successfully deleted the client information.</p>
@stop

View file

@ -0,0 +1,14 @@
@extends('master')
@section('title')
Delete Contact? « Admin CP
@stop
@section('content')
<form action="/admin/contacts/delete/{{ $id }}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label for="delete">Are you sure you want to delete this contact? </label><input type="checkbox" name="delete" id="delete">
<br>
<input type="submit" id="submit" value="Submit">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Deleted Contact « Admin CP
@stop
@section('content')
<p>Successfully deleted the contact information.</p>
@stop

View file

@ -0,0 +1,13 @@
@extends('master')
@section('title')
Delete Token? « Admin CP
@stop
@section('content')
<form action="/admin/tokens/delete/{{ $id }}" method="post">
<label for="delete">Are you sure you want to delete this token? </label><input type="checkbox" name="delete" id="delete">
<br>
<input type="submit" id="submit" value="Submit">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Token Deleted « Admin CP
@stop
@section('content')
<p>You have successfully deletd the token: {{ $id }}</p>
@stop

View file

@ -0,0 +1,41 @@
@extends('master')
@section('title')
Edit Article « Admin CP
@stop
@section('content')
<form action="/admin/blog/edit/{{ $id }}" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<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">
</form>
<h2>Preview</h2>
@stop
@section('scripts')
@parent
<script src="{{ elixir('assets/js/marked.min.js') }}"></script>
<script>
var preview = document.createElement('div');
preview.classList.add('preview');
var main = document.querySelector('main');
main.appendChild(preview);
var textarea = document.querySelector('textarea');
window.setInterval(function () {
var markdown = textarea.value;
preview.innerHTML = marked(markdown);
}, 5000);
</script>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Article Successfully Edited « Admin CP
@stop
@section('content')
<p>Successfully edited article with id: {{ $id }}</p>
@stop

View file

@ -0,0 +1,15 @@
@extends('master')
@section('title')
Edit Client « Admin CP
@stop
@section('content')
<h1>Edit Client</h1>
<form action="/admin/clients/edit/{{ $id }}" method="post" accept-charset="utf-8">
<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="edit" value="Edit"><br><br>
<input type="submit" name="delete" value="Delete">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Edit Client « Admin CP
@stop
@section('content')
<p>Successfully edited the client information.</p>
@stop

View file

@ -0,0 +1,20 @@
@extends('master')
@section('title')
Edit Contact « Admin CP
@stop
@section('content')
<h1>Edit Contact</h1>
<form action="/admin/contacts/edit/{{ $contact->id }}" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<label for="name">Real Name:</label> <input type="text" name="name" id="name" placeholder="Real Name" value="{{ $contact->name }}"><br>
<label for="nick">Nick:</label> <input type="text" name="nick" id="nick" placeholder="local_nick" value="{{ $contact->nick }}"><br>
<label for="homepage">Homepage:</label> <input type="text" name="homepage" id="homepage" placeholder="https://homepage.com" value="{{ $contact->homepage }}"><br>
<label for="twitter">Twitter Nick:</label> <input type="text" name="twitter" id="twitter" placeholder="Twitter handle" value="{{ $contact->twitter }}"><br>
<label for="avatar">Avatar:</label> <input type="file" accept="image/*" value="Upluad" name="avatar" id="avatar"><br>
<input type="submit" name="submit" value="Submit">
</form>
<p>Or do you want to <a href="/admin/contacts/delete/{{ $contact->id }}">delete</a> this contact?</p>
<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

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Edit Contact « Admin CP
@stop
@section('content')
<p>Successfully edited the contact information.</p>
@stop

View file

@ -0,0 +1,18 @@
@extends('master')
@section('title')
Edit Note « Admin CP
@stop
@section('content')
<form action="/admin/note/edit/{{ $id }}" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset class="note-ui">
<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" tabindex="6"><br>
</fieldset>
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Note Successfully Edited « Admin CP
@stop
@section('content')
<p>Successfully edited note with id: {{ $id }}.</p>
@stop

View file

@ -0,0 +1,18 @@
@extends('master')
@section('title')
Edit Place « Admin CP
@stop
@section('content')
<h1>Edit Place</h1>
<form action="/admin/places/edit/{{ $id }}" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="text" name="name" id="name" value="{{ $name }}"><br>
<input type="text" name="description" id="description" value="{{ $description }}"><br>
<input type="text" name="latitude" id="latitude" value="{{ $latitude }}"><br>
<input type="text" name="longitude" id="longitude" value="{{ $longitude }}"><br>
<input type="submit" name="edit" value="Edit"><br><br>
<input type="submit" name="delete" value="Delete">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Edit Place « Admin CP
@stop
@section('content')
<p>Successfully edited the place information.</p>
@stop

View file

@ -0,0 +1,10 @@
@extends('master')
@section('title')
New Contact Avatar « Admin CP
@stop
@section('content')
<p>Successfully saved the avatar contact</p>
<img src="/assets/profile-images/{{ $homepage }}/image">
@stop

View file

@ -0,0 +1,14 @@
@extends('master')
@section('title')
List Articles « Admin CP
@stop
@section('content')
<p>Select article to edit:</p>
<ol reversed>
@foreach($posts as $post)
<li><a href="/admin/blog/edit/{{ $post['id'] }}">{{ $post['title'] }}</a>@if($post['published'] == '0')<span class="notpublished">not published</span>@endif <a href="/admin/blog/delete/{{ $post['id'] }}">Delete?</a>
@endforeach
</ol>
@stop

View file

@ -0,0 +1,17 @@
@extends('master')
@section('title')
List Clients « Admin CP
@stop
@section('content')
<h1>Clients</h1>
<ul>
@foreach($clients as $client)
<li>{{ $client['client_url'] }} : {{ $client['client_name'] }}
<a href="/admin/clients/edit/{{ $client['id'] }}">edit?</a>
</li>
@endforeach
</ul>
<p>Createn a <a href="/admin/clients/new">new entry</a>?</p>
@stop

View file

@ -0,0 +1,27 @@
@extends('master')
@section('title')
List Contacts « Admin CP
@stop
@section('content')
<h1>Contacts</h1>
<table>
<tr>
<th>Real Name</th>
<th>Nick</th>
<th>Homepage</th>
<th>Twitter</th>
<th></th>
</tr>
@foreach($contacts as $contact)
<tr>
<td>{{ $contact->name }}</td>
<td>{{ $contact->nick }}</td>
<td>{{ $contact->homepage }}</td>
<td>{{ $contact->twitter }}</td>
<td><a href="/admin/contacts/edit/{{ $contact->id }}">edit</a></td>
</tr>
@endforeach
</table>
@stop

View file

@ -0,0 +1,14 @@
@extends('master')
@section('title')
List Notes « Admin CP
@stop
@section('content')
<p>Select note to edit:</p>
<ol reversed>
@foreach($notes as $note)
<li><a href="/admin/note/edit/{{ $note->id }}">{{ $note->originalNote }}</a></li>
@endforeach
</ol>
@stop

View file

@ -0,0 +1,15 @@
@extends('master')
@section('title')
List Places « Admin CP
@stop
@section('content')
<h1>Places</h1>
<ul>
@foreach($places as $place)
<li>{{ $place['name'] }} <a href="/admin/places/edit/{{ $place['id'] }}">edit?</a></li>
@endforeach
</ul>
<p>Createn a <a href="/admin/places/new">new entry</a>?</p>
@stop

View file

@ -0,0 +1,21 @@
@extends('master')
@section('title')
List Tokens « Admin CP
@stop
@section('content')
<h1>Tokens</h1>
<ul>
@foreach($tokens as $token => $data)
<li>{{ $token }}
<ul>
@foreach($data as $key => $value)
<li>{{ $key }}: <?php if(is_array($value)) { echo '<ul>'; foreach($value as $scope) { echo "<li>$scope</li>"; } echo '</ul>'; } else { echo $value; }; ?></li>
@endforeach
</ul>
<a href="/admin/tokens/delete/{{ $token }}">delete?</a>
</li>
@endforeach
</ul>
@stop

View file

@ -0,0 +1,49 @@
@extends('master')
@section('title')
New Article « Admin CP
@stop
@section('content')
@if(isset($message))<p class="error">{{ $message }}</p>@endif
<form action="/admin/blog/new" method="post" accept-charset="utf-8" enctype="multipart/form-data" id="newarticle">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<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>
</form>
<h2>Preview</h2>
@stop
@section('scripts')
@parent
<script src="{{ elixir('assets/js/marked.min.js') }}"></script>
<script>
var preview = document.createElement('div');
preview.classList.add('preview');
var main = document.querySelector('main');
main.appendChild(preview);
var textarea = document.querySelector('textarea');
window.setInterval(function () {
var markdown = textarea.value;
preview.innerHTML = marked(markdown);
}, 5000);
</script>
<script src="{{ elixir('assets/js/store2.min.js') }}"></script>
<script src="{{ elixir('assets/js/alertify.js') }}"></script>
<script src="{{ elixir('assets/js/form-save.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/alertify.css') }}">
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
New Article Success « Admin CP
@stop
@section('content')
<p>Successfully created article with id: {{ $id }}, title: {{ $title }}</p>
@stop

View file

@ -0,0 +1,15 @@
@extends('master')
@section('title')
New Client « Admin CP
@stop
@section('content')
<h1>New Client</h1>
<form action="/admin/clients/new" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrftoken() }}">
<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">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
New Client « Admin CP
@stop
@section('content')
<p>Succesfully created new client info.</p>
@stop

View file

@ -0,0 +1,17 @@
@extends('master')
@section('title')
New Contact « Admin CP
@stop
@section('content')
<h1>New Contact</h1>
<form action="/admin/contacts/new" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<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">
</form>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
New Contact « Admin CP
@stop
@section('content')
<p>Succesfully created new contact entry.</p>
@stop

View file

@ -0,0 +1,34 @@
@extends('master')
@section('title')
New Note « Admin CP
@stop
@section('content')
@if (count($errors) > 0)
<div class="errors">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@include('templates.new-note-form', [
'micropub' => false,
'action' => '/admin/note/new',
'id' => 'newnote-admin'
])
@stop
@section('scripts')
<link rel="styelsheet" href="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.css">
<script src="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.js"></script>
<script src="{{ elixir('assets/js/newnote.js') }}"></script>
<script src="{{ elixir('assets/js/store2.min.js') }}"></script>
<script src="{{ elixir('assets/js/alertify.js') }}"></script>
<script src="{{ elixir('assets/js/form-save.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/alertify.css') }}">
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
New Note Success « Admin CP
@stop
@section('content')
<p>Successfully created note with id: {{ $id }}. {{ $shorturl }}</p>
@stop

View file

@ -0,0 +1,24 @@
@extends('master')
@section('title')
New Place « Admin CP
@stop
@section('content')
<h1>New Place</h1>
<form action="/admin/places/new" method="post" accept-charset="utf-8">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<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">
<h2>Location</h2>
<button type="button" name="locate" id="locate">Locate</button>
</form>
@stop
@section('scripts')
<script src="/assets/js/libs/mapbox.v2.2.1.js"></script>
<script src="{{ elixir('assets/js/newplace.js') }}"></script>
@stop

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
New Place « Admin CP
@stop
@section('content')
<p>Succesfully created new place info.</p>
@stop

View file

@ -0,0 +1,24 @@
@extends('master')
@section('title')
Admin CP
@stop
@section('content')
<h1>Hello {{ $name }}!</h1>
<h2>Articles</h2>
<p>You can either <a href="/admin/blog/new">create</a> new blog posts, or <a href="/admin/blog/edit">edit</a> them.<p>
<h2>Notes</h2>
<p>You can either <a href="/admin/note/new">create</a> new notes, or <a href="/admin/note/edit">edit</a> them.<p>
<h2>Tokens</h2>
<p>See all <a href="/admin/tokens">issued tokens</a>.</p>
<h2>Contacts</h2>
<p>You can either <a href="/admin/contacts/new">create</a> new contacts, or <a href="/admin/contacts/edit">edit</a> them.</p>
<h2>Places</h2>
<p>You can either <a href="/admin/places/new">create</a> new places, or <a href="/admin/places/edit">edit</a> them.</p>
@stop

View file

@ -0,0 +1,31 @@
@extends('master')
@section('title')
Notes « Jonny Barnes
@stop
@section('content')
<div class="h-feed">
<!-- the following span stops microformat parses going haywire generating
a name property for the h-feed -->
<span class="p-name"></span>
@foreach ($notes as $note)
<div class="h-entry">
@include('templates.note', ['note' => $note])
</div>
@endforeach
</div>
{!! $notes->render() !!}
@stop
@section('scripts')
<link rel="stylesheet" href="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.css">
<script src="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.js"></script>
<script src="{{ elixir('assets/js/Autolinker.min.js') }}"></script>
<script src="{{ elixir('assets/js/links.js') }}"></script>
<script src="{{ elixir('assets/js/maps.js') }}"></script>
<script src="{{ elixir('assets/js/prism.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/prism.css') }}">
@stop

View file

@ -0,0 +1,13 @@
@extends('master')
@section('title')
Places « Jonny Barnes
@stop
@section('content')
<ul>
@foreach($places as $place)
<li><a href="/places/{{ $place->slug }}">{{ $place->name }}</a></li>
@endforeach
</ul>
@stop

View file

@ -0,0 +1,10 @@
<div class="contact h-card">
<div class="contact-info">
<span class="p-name">{{ $contact->name }}</span> <a href="/contacts/{{ $contact->nick }}">{{ '@' . $contact->nick }}</a>
<ul class="contact-links">
<li><i class="fa fa-globe fa-fw"></i><a href="{{ $contact->homepage }}" class="u-url">{{ $contact->homepagePretty }}</a></li>
@if($contact->twitter != null)<li><i class="fa fa-twitter fa-fw"></i><a href="https://twitter.com/{{ $contact->twitter }}">{{ $contact->twitter }}</a></li>@endif
</ul>
</div>
<img src="{{ $contact->image }}" alt="" class="u-photo">
</div>

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
Contacts « Jonny Barnes
@stop
@section('content')
@include('contact-template', array('contact' => $contact))
@stop

View file

@ -0,0 +1,11 @@
@extends('master')
@section('title')
Contacts « Jonny Barnes
@stop
@section('content')
@foreach($contacts as $contact)
@include('contact-template', array('contact' => $contact))
@endforeach
@stop

View file

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html>
<head>
<title>Be right back.</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
color: #B0BEC5;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 72px;
margin-bottom: 40px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Be right back.</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,29 @@
@extends('master')
@section('title')
Jonny Barnes
@stop
@section('content')
<div class="h-card">
<h2>Hello</h2>
<p>My name is <span class="p-name p-author">Jonny Barnes</span>, and Im from <a href="https://en.wikipedia.org/wiki/Manchester" class="h-adr p-adr"><span class="p-locality">Manchester</span>, <abbr class="p-country-name" title="United Kingdom">UK</abbr></a>. I love everything web-related and this is a little place on the web I call my own. My aim now is to try and adhere to the <a href="https://indiewebcamp.com/principles">IndieWeb principles</a> and thus own my data.</p>
<p>My aim for this homepage is to turn it into a stream of my latest notes and articles Ive written. Then maybe pull data from places like <a href="https://last.fm">last.fm</a>. Talking of which:</p>
<h2>Me Around the Web</h2>
<p>Obviously theres <a href="/" class="u-url u-uid">this website</a>, which is my main online identity.</p>
<p>I am active to varying degrees on several <a href="https://indiewebcamp.com/silo">silos</a>:
<ul class="social-list">
<li>I keep in touch with friends on <a rel="me" href="https://www.facebook.com/jonnybarnes" class="u-url">Facebook</a></li>
<li>I follow people I find interesting on <a rel="me" href="https://twitter.com/jonnybarnes" class="u-url">Twitter</a></li>
<li>I geek out on <a rel="me" href="https://alpha.app.net/jonnybarnes" class="u-url">app.net</a></li>
<li>I exist on <a rel="me" href="https://plus.google.com/117317270900655269082" class="u-url">Google+</a></li>
<!--<li>I post photos to <a rel="me" href="http://www.flickr.com/photos/22212133@N03/" class="u-url">flickr</a></li>-->
<li>I push code to <a rel="me" href="https://github.com/jonnybarnes" class="u-url">GitHub</a></li>
<li>I scrobble songs to <a rel="me" href="https://last.fm/user/jonnymbarnes" class="u-url">last.fm</a> that I listen to on <a rel="me" href="https://open.spotify.com/user/jonnybarnes89" class="u-url">Spotify</a></li>
</ul>
<p>My usual online handle is <span class="nickname">jonnybarnes</span> for other services, though if theyre not listed above then I dont actively use the service. My usual <a href="/assets/img/jmb-bw.png" class="u-photo photo">profile pic</a>. I also have a <a class="pgpkey" href="/assets/jonnybarnes-public-key-ecc.asc">PGP key</a>, with <a href="/notes/5g">fingerprint</a>.</p>
<p>Though of course all this activity should eventually “flow” through this website if it is to truely be my online identity.</p>
</div>
@stop

View file

@ -0,0 +1,12 @@
@extends('master')
@section('title')Login @stop
@section('content')
<h2>Login</h2>
<form action="login" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="text" name="username" placeholder="username">
<input type="password" name="password" placeholder="password">
<input type="submit" name="submit" value="Login">
</form>
@stop

View file

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="en-GB">
<head>
<meta charset="UTF-8">
<title>@if (App::environment() == 'local'){!! "[testing] -"!!}@endif @yield('title')</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="{{ elixir('assets/css/sanitize.min.css') }}">
<link rel="stylesheet" href="{{ elixir('assets/css/global.css') }}">
<link rel="openid.server" href="https://indieauth.com/openid">
<link rel="openid.delegate" href="https://jonnybarnes.uk">
<link rel="authorization_endpoint" href="https://indieauth.com/auth">
<link rel="token_endpoint" href="{{ config('app.url') }}/api/token">
<link rel="micropub" href="{{ config('app.url') }}/api/post">
<link rel="webmention" href="{{ config('app.url') }}/webmention">
<link rel="shortcut icon" href="/assets/img/jmb-bw.png">
<link rel="pgpkey" href="/assets/jonnybarnes-public-key-ecc.asc">
</head>
<body>
<header id="topheader">
<a rel="author" href="/">
<h1>Jonny Barnes</h1>
</a>
<nav>
<a href="/blog">Articles</a>
<a href="/notes">Notes</a>
<a href="/projects">Projects</a>
</nav>
</header>
<main>
@yield('content')
</main>
<script src="//use.typekit.net/kmb3cdb.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>
@section('scripts')
<!--scripts go here when needed-->
@show
{{-- The piwik code that should only be shown in production --}}
@if (env('PIWIK_URL') !== null)
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="{{ env('PIWIK_URL') }}";
_paq.push(['setTrackerUrl', u+'/piwik.php']);
_paq.push(['setSiteId', {{ env('PIWIK_SITE_ID') }}]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'/piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="{{ env('PIWIK_URL') }}/piwik.php?idsite={{ env('PIWIK_SITE_ID') }}" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
@endif
</body>
</html>

View file

@ -0,0 +1,45 @@
@extends('master')
@section('title')
New Note « Jonny Barnes
@stop
@section('content')
<p>This is my UI for posting new notes, hopefully youll soon be able to use this if your site supports the micropub API.</p>
@if($errors->endpoint->first() != '')
<p class="error">{{ $errors->endpoint->first() }}</p>
@endif
@if($errors->indieauth->first() != '')
<p class="error">{{ $errors->indieauth->first() }}</p>
@endif
@if($url === null)
<form action="/beginauth" method="post" id="login">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset>
<legend>IndieAuth</legend>
<label for="indie_auth_url" accesskey="a">Web Address: </label><input type="text" name="me" id="indie_auth_url" placeholder="yourdomain.com">
<label for="kludge"></label><button type="submit" name="sign-in" id="sign-in" value="Sign in">Sign in</button>
</fieldset>
</form>
@else
<p>You are authenticated as <code>{{ $url }}</code>, <a href="/logout">log out</a>.</p>
@endif
@include('templates.new-note-form', [
'micropub' => true,
'action' => '/notes/new',
'id' => 'newnote'
])
@stop
@section('scripts')
<link rel="stylesheet" href="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.css">
<script src="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.js"></script>
<script src="{{ elixir('assets/js/fetch.js') }}"></script>
<script src="{{ elixir('assets/js/store2.min.js') }}"></script>
<script src="{{ elixir('assets/js/alertify.js') }}"></script>
<script src="{{ elixir('assets/js/form-save.js') }}"></script>
<script src="{{ elixir('assets/js/newnote.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/alertify.css') }}">
@stop

View file

@ -0,0 +1,4 @@
<a class="h-card vcard mini-h-card" href="{{ $contact->homepage }}">
<img class="u-photo photo logo" alt="" src="{{ $contact->photo }}">
{!! $contact->name !!}
</a>

View file

@ -0,0 +1,30 @@
@extends('master')
@section('title')
Articles « Jonny Barnes
@stop
@section('content')
@if (count($data) == 0)
<p>No articles exist for this time.</p>
@endif
@foreach ($data as $article)
@if ($article['url'] != '')<article class="link h-entry">@else<article class="h-entry">@endif
<header>
<h1 class="p-name">
<a href="@if($article['url'] == ''){{ $article['link'] }}@else{{ $article['url'] }}@endif">{{ $article['title'] }}</a>
</h1>
<span class="post-info">Posted <time class="dt-published" title="{{ $article['tooltip_time'] }}" datetime="{{ $article['w3c_time'] }}">{{ $article['human_time'] }}</time> - <a title="Permalink" href="{{ $article['link'] }}"><span class="permalink"><?php echo html_entity_decode('&infin;'); ?></span></a></span>
</header>
<div class="e-content">
{!! $article['main'] !!}
</div>
</article>
@endforeach
{!! $data->render() !!}
@stop
@section('scripts')
<script src="{{ elixir('assets/js/prism.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/prism.css') }}">
@stop

View file

@ -0,0 +1,14 @@
@extends('master')
@section('title')Jonny Barnes Projects @stop
@section('content')
<div id="projects">
<h2>Projects</h2>
<h3><a href="https://shaaaaaaaaaaaaa.com">Shaaaaaaaaaaaaa.com</a></h3>
<p>Im collaborating on a project with Eric Mill (@konklone) to help people test their HTTPS certificates for weak signature algorithms. SHA-1 is the current standard, but is too weak. People should use a form of SHA-2.</p>
<h3><a href="https://github.com/jonnybarnes/indieweb">IndieWeb tools</a></h3>
<p>This library consists of various useful tools for running an IndieWeb aware site.</p>
<h3><a href="https://github.com/jonnybarnes/webmentions-parser">Webmentions Parser</a></h3>
<p>A tool to parse incoming webmentions to a site, including determining the author of the source webmention.</p>
</div>
@stop

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jonny Barnes.uk</title>
<atom:link href="{{ config('app.url') }}/feed" rel="self" type="application/rss+xml" />
<description>An RSS feed of the blog posts found on jonnybarnes.uk</description>
<link>https://jonnybarnes.uk</link>
<lastBuildDate>{{ $buildDate }}</lastBuildDate>
<ttl>1800</ttl>
@foreach($articles as $article)
<item>
<title>{{ strip_tags($article->title) }}</title>
<description><![CDATA[{{ $article->main }}@if($article->url)<p><a href="{{ config('app.url') }}{{ $article->link }}">Permalink</a></p>@endif]]></description>
<link>@if($article->url != ''){{ $article->url }}@else{{ config('app.url') }}{{ $article->link }}@endif</link>
<guid>{{ config('app.url') }}{{ $article->link }}</guid>
<pubDate>{{ $article->pubdate }}</pubDate>
</item>
@endforeach
</channel>
</rss>

View file

@ -0,0 +1,43 @@
@extends('master')
@section('title')
{{ strip_tags($note->note) }} « Notes « Jonny Barnes
@stop
@section('content')
<div class="h-entry">
@include('templates.note', ['note' => $note])
@foreach($replies as $reply)
<div class="reply p-comment h-cite">
<a class="h-card vcard mini-h-card p-author" href="{{ $reply['url'] }}">
<img src="{{ $reply['photo'] }}" alt="" class="photo u-photo logo"> <span class="fn">{{ $reply['name'] }}</span>
</a> said at <a class="dt-published" href="{{ $reply['source'] }}">{{ $reply['date'] }}</a>
<div class="e-content p-name">
{!! $reply['reply'] !!}
</div>
</div>
@endforeach
</div>
@if(count($likes) > 0)<h1 class="notes-subtitle">Likes</h1>@endif
@foreach($likes as $like)
<a href="{{ $like['url'] }}"><img src="{{ $like['photo'] }}" alt="" class="like-photo"></a>
@endforeach
@if(count($reposts) > 0)<h1 class="notes-subtitle">Reposts</h1>@endif
@foreach($reposts as $repost)
<p><a class="h-card vcard mini-h-card p-author" href="{{ $repost['url'] }}">
<img src="{{ $repost['photo'] }}" alt="profile picture of {{ $repost['name'] }}" class="photo u-photo logo"> <span class="fn">{{ $repost['name'] }}</span>
</a> reposted this at <a href="{{ $repost['repost'] }}">{{ $repost['date'] }}</a>.</p>
@endforeach
@stop
@section('scripts')
<link rel="stylesheet" href="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.css">
<script src="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.js"></script>
<script src="{{ elixir('assets/js/Autolinker.min.js') }}"></script>
<script src="{{ elixir('assets/js/links.js') }}"></script>
<script src="{{ elixir('assets/js/maps.js') }}"></script>
<script src="{{ elixir('assets/js/prism.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/prism.css') }}">
@stop

View file

@ -0,0 +1,21 @@
@extends('master')
@section('title')
{{ $place->name }} « Places « Jonny Barnes
@stop
@section('content')
<div class="h-card">
<h1 class="p-name">{{ $place->name }}</h1>
<p class="p-note">{{ $place->description or 'No description'}}</p>
<div class="map" data-latitude="{{ $place->latitude }}" data-longitude="{{ $place->longitude }}"></div>
<p class="latlnginfo">Latitude: <span class="p-latitude">{{ $place->latitude }}</span>, longitude: <span class="p-longitude">{{ $place->longitude }}</span></p>
</div>
@stop
@section('scripts')
<script src="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.js"></script>
<link rel="stylesheet" href="https://api.mapbox.com/mapbox.js/v2.2.3/mapbox.css">
<script src="{{ elixir('assets/js/maps.js') }}"></script>
@stop

View file

@ -0,0 +1,24 @@
@extends('master')
@section('title')
{{ strip_tags($article->title) }} <?php echo html_entity_decode("&laquo;"); ?> Jonny Barnes
@stop
@section('content')
@if($article->url != '')<article class="link h-entry">@else<article class="h-entry">@endif
<header>
<h1 class="p-name">
<a href="@if($article->url == ''){{ $article->link }}@else{{ $article->url }}@endif">{{ $article->title }}</a>
</h1>
<span class="post-info">Posted <time class="dt-published" title="{{ $article->tooltip_time }}" datetime="{{ $article->w3c_time }}">{{ $article->human_time }}</time> - <a title="Permalink" href="{{ $article->link }}"><span class="permalink"><?php echo html_entity_decode('&infin;'); ?></span></a></span>
</header>
<div class="e-content">
{!! $article->main !!}
</div>
</article>
@stop
@section('scripts')
<script src="{{ elixir('assets/js/prism.js') }}"></script>
<link rel="stylesheet" href="{{ elixir('assets/css/prism.css') }}">
@stop

View file

@ -0,0 +1,13 @@
@extends('master')
@section('title')
Notes <?php echo html_entity_decode('&laquo;'); ?> Jonny Barnes
@stop
@section('content')
<h2>Notes tagged with <em>{{ $tag }}</em></h2>
@foreach ($notes as $note)
<div>{!! $note->note !!}
<a href="/note/{{ $note->id }}">{{ $note->human_time }}</a></div>
@endforeach
@stop

View file

@ -0,0 +1,16 @@
<form action="{{ $action }}" method="post" enctype="multipart/form-data" accept-charset="utf-8" id="{{ $id }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset class="note-ui">
<legend>New 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 …" value="{{ old('in-reply-to') }}">
<label for="content" accesskey="n">Note: </label><textarea name="content" id="content" placeholder="Note" autofocus>{{ old('content') }}</textarea>
<label for="webmentions" accesskey="w">Send webmentions: </label><input type="checkbox" name="webmentions" id="webmentions" checked="checked"><br>
@if ($micropub === true)
<label for="syndication" accesskey="s">Syndication: </label>@if($syndication)<ul class="syndication-targets-list" name="syndication">@foreach($syndication as $target)<li><input type="checkbox" name="mp-syndicate-to[]" id="{{ $target }}" value="{{ $target }}" checked="checked"> <label for="{{ $target }}">{{ $target }}</label></li>@endforeach</ul>@endif
<a href="/refresh-syndication-targets">Refresh Syndication Targets</a><br>
@endif
<label for="photo" accesskey="p">Photo: </label><input type="file" accept="image/*" value="Upload" name="photo[]" id="photo" multiple>
<label for="locate" accesskey="l"></label><button type="button" name="locate" id="locate" value="Locate" disabled>Locate</button>
<label for="kludge"></label><button type="submit" name="submit" id="submit" value="Submit">Submit</button>
</fieldset>
</form>

View file

@ -0,0 +1,26 @@
@if ($note->twitter)
{!! $note->twitter->html !!}
@elseif ($note->in_reply_to)
<div class="p-in-reply-to h-cite reply-to">
In reply to <a href="{{ $note->reply_to }}" class="u-url">{{ $note->in_reply_to }}</a>
</div>
@endif
<div class="note">
<div class="e-content p-name">
{!! $note->note !!}
@if(count($note->photoURLs) > 0)
@foreach($note->photoURLs as $photoURL)
<img src="{{ $photoURL }}" alt="" class="note-photo">
@endforeach
@endif
</div>
<div class="note-metadata">
<a class="u-url" href="/notes/{{ $note->nb60id }}"><time class="dt-published" datetime="{{ $note->iso8601_time }}">{{ $note->human_time }}</time></a>@if($note->client_name) via <a class="client" href="{{ $note->client_id }}">{{ $note->client_name }}</a>@endif
@if($note->address)<span class="note-address p-location">in @if($note->placeLink)<a href="{{ $note->placeLink }}">@endif<span class="p-name">{{ $note->address }}</span>@if($note->placeLink)</a>@endif</span>@endif
@if($note->replies > 0) - <span class="reply-count"><i class="fa fa-comments"></i> {{ $note->replies }}</span>@endif
@if($note->tweet_id)@include('templates.social-links', ['tweet_id' => $note->tweet_id, 'nb60id' => $note->nb60id])@endif
@if ($note->latitude)
<div class="map" data-latitude="{{ $note->latitude }}" data-longitude="{{ $note->longitude }}"></div>
@endif
</div>
</div>

View file

@ -0,0 +1,31 @@
<span class="social-links">
<a class="u-syndication" href="https://twitter.com/jonnybarnes/status/{{ $tweet_id }}">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 171.5054 139.37839" class="icon">
<g transform="translate(-282.32053,-396.30734)">
<path d="m 453.82593,412.80619 c -6.3097,2.79897 -13.09189,4.68982 -20.20852,5.54049 7.26413,-4.35454 12.84406,-11.24992 15.47067,-19.46675 -6.79934,4.03295 -14.3293,6.96055 -22.34461,8.53841 -6.41775,-6.83879 -15.56243,-11.111 -25.68298,-11.111 -19.43159,0 -35.18696,15.75365 -35.18696,35.18525 0,2.75781 0.31128,5.44359 0.91155,8.01875 -29.24344,-1.46723 -55.16995,-15.47582 -72.52461,-36.76396 -3.02879,5.19662 -4.76443,11.24048 -4.76443,17.6891 0,12.20777 6.21194,22.97747 15.65332,29.28716 -5.76773,-0.18265 -11.19331,-1.76565 -15.93716,-4.40083 -0.004,0.14663 -0.004,0.29412 -0.004,0.44248 0,17.04767 12.12889,31.26806 28.22555,34.50266 -2.95247,0.80436 -6.06101,1.23398 -9.26989,1.23398 -2.2673,0 -4.47114,-0.22124 -6.62011,-0.63114 4.47801,13.97857 17.47214,24.15143 32.86992,24.43441 -12.04227,9.43796 -27.21366,15.06335 -43.69965,15.06335 -2.84014,0 -5.64082,-0.16722 -8.39349,-0.49223 15.57186,9.98421 34.06703,15.8094 53.93768,15.8094 64.72024,0 100.11301,-53.61524 100.11301,-100.11387 0,-1.52554 -0.0343,-3.04251 -0.10204,-4.55261 6.87394,-4.95995 12.83891,-11.15646 17.55618,-18.21305 z" />
</g>
</svg>
</a> -
<indie-action do="reply" with="/notes/{{ $nb60id }}">
<a href="https://twitter.com/intent/tweet?in_reply_to={{ $tweet_id }}">
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 920.898 1000" class="icon">
<path d="M0 470.52q0 -6.832 3.416 -13.664t6.344 -9.76l3.416 -3.416 376.736 -273.768q20.496 -15.616 35.38 -5.368t14.884 40.016v111.264l26.84 1.952q96.136 8.296 181.292 54.168t145.424 117.12 94.428 165.432 32.696 196.176q-60.512 -106.872 -161.284 -174.704t-222.284 -78.08q-49.288 -4.392 -97.112 1.464v137.128q0 29.768 -14.884 40.016t-35.38 -5.368l-376.736 -274.256q-13.176 -11.224 -13.176 -26.352z"/>
</svg>
</a>
</indie-action>
<indie-action do="repost" with="/notes/{{ $nb60id }}">
<a href="https://twitter.com/intent/retweet?tweet_id={{ $tweet_id }}">
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 1071.429 1000" class="icon">
<path d="M714.24 839.296q0 7.254 -5.301 12.555t-12.555 5.301h-535.68q-4.464 0 -7.533 -1.116t-5.022 -3.906 -3.069 -4.464 -1.674 -6.417 -.558 -6.417v-334.79999999999995h-107.136q-14.508 0 -25.11 -10.602t-10.602 -25.11q0 -13.392 8.37 -22.878l178.56 -214.272q10.602 -12.276 27.342 -12.276t27.342 12.276l178.56 214.272q8.37 9.486 8.37 22.878 0 14.508 -10.602 25.11t-25.11 10.602h-107.136v214.272h321.408q8.928 0 13.95 6.138l89.28 107.136q3.906 6.138 3.906 11.718zm357.12 -232.128q0 13.392 -8.37 22.878l-178.56 214.272q-11.16 12.834 -27.342 12.834t-27.342 -12.834l-178.56 -214.272q-8.37 -9.486 -8.37 -22.878 0 -14.508 10.602 -25.11t25.11 -10.602h107.136v-214.272h-321.408q-8.928 0 -13.95 -6.696l-89.28 -107.136q-3.906 -5.022 -3.906 -11.16 0 -7.254 5.301 -12.555t12.555 -5.301h535.68q4.464 0 7.533 1.116t5.022 3.906 3.069 4.464 1.674 6.417 .558 6.417v334.79999999999995h107.136q14.508 0 25.11 10.602t10.602 25.11z"/>
</svg>
</a>
</indie-action>
<indie-action do="like" with="/notes/{{ $nb60id }}">
<a href="https://twitter.com/intent/favorite?tweet_id={{ $tweet_id }}">
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 645 585" class="icon">
<path d="M 297.29747,550.86823 C 283.52243,535.43191 249.1268,505.33855 220.86277,483.99412 C 137.11867,420.75228 125.72108,411.5999 91.719238,380.29088 C 29.03471,322.57071 2.413622,264.58086 2.5048478,185.95124 C 2.5493594,147.56739 5.1656152,132.77929 15.914734,110.15398 C 34.151433,71.768267 61.014996,43.244667 95.360052,25.799457 C 119.68545,13.443675 131.6827,7.9542046 172.30448,7.7296236 C 214.79777,7.4947896 223.74311,12.449347 248.73919,26.181459 C 279.1637,42.895777 310.47909,78.617167 316.95242,103.99205 L 320.95052,119.66445 L 330.81015,98.079942 C 386.52632,-23.892986 564.40851,-22.06811 626.31244,101.11153 C 645.95011,140.18758 648.10608,223.6247 630.69256,270.6244 C 607.97729,331.93377 565.31255,378.67493 466.68622,450.30098 C 402.0054,497.27462 328.80148,568.34684 323.70555,578.32901 C 317.79007,589.91654 323.42339,580.14491 297.29747,550.86823 z"/>
<g transform="translate(129.28571,-64.285714)"/>
</svg>
</a>
</indie-action>
</span>

1
resources/views/vendor/.gitkeep vendored Normal file
View file

@ -0,0 +1 @@

View file

@ -0,0 +1,9 @@
@extends('master')
@section('title')
WebMentions « Jonny Barnes
@stop
@section('content')
<p>My WebMention endpoint.</p>
@stop

View file

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 96px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Laravel 5</div>
</div>
</div>
</body>
</html>