diff --git a/app/Exceptions/CannotCreateUser.php b/app/Exceptions/CannotCreateUser.php index c97f5486a..cb2acbe37 100644 --- a/app/Exceptions/CannotCreateUser.php +++ b/app/Exceptions/CannotCreateUser.php @@ -6,12 +6,12 @@ class CannotCreateUser extends Exception { - public static function duplicateEmailAddress(string $emailAddress): self + public static function duplicateEmailAddress(string $emailAddress): CannotCreateUser { return new static("The email address [$emailAddress] already exists."); } - public static function duplicateUsername(string $username): self + public static function duplicateUsername(string $username): CannotCreateUser { return new static("The username [$username] already exists."); } diff --git a/app/Http/Requests/ThreadRequest.php b/app/Http/Requests/ThreadRequest.php index 61f06c986..e15aa394a 100644 --- a/app/Http/Requests/ThreadRequest.php +++ b/app/Http/Requests/ThreadRequest.php @@ -11,7 +11,7 @@ class ThreadRequest extends Request public function rules() { return [ - 'subject' => 'required|max:60|'.DoesNotContainUrlRule::NAME.'|'.SpamRule::NAME, + 'subject' => 'required|'.DoesNotContainUrlRule::NAME.'|'.SpamRule::NAME, 'body' => 'required|'.SpamRule::NAME, 'tags' => 'array', 'tags.*' => 'exists:tags,id', diff --git a/app/Http/Requests/UpdateProfileRequest.php b/app/Http/Requests/UpdateProfileRequest.php index 1c288f9b0..55a0609c7 100644 --- a/app/Http/Requests/UpdateProfileRequest.php +++ b/app/Http/Requests/UpdateProfileRequest.php @@ -18,21 +18,21 @@ public function rules() public function bio(): string { - return (string) $this->get('bio', ''); + return $this->get('bio', ''); } public function name(): string { - return (string) $this->get('name'); + return $this->get('name'); } public function email(): string { - return (string) $this->get('email'); + return $this->get('email'); } public function username(): string { - return (string) $this->get('username'); + return $this->get('username'); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f6a387686..7d81f8b7c 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,8 +3,6 @@ namespace App\Providers; use App\Models\Thread; -use Psr\Log\LoggerInterface; -use Illuminate\Contracts\Logging\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Database\Eloquent\Relations\Relation; @@ -27,10 +25,4 @@ public function bootMacros() { require base_path('resources/macros/blade.php'); } - - public function register() - { - $this->app->alias('bugsnag.multi', Log::class); - $this->app->alias('bugsnag.multi', LoggerInterface::class); - } } diff --git a/app/User.php b/app/User.php index 0dbf4faf2..f2999939b 100644 --- a/app/User.php +++ b/app/User.php @@ -216,17 +216,17 @@ public function countSolutions(): int })->count(); } - public static function findByUsername(string $username): self + public static function findByUsername(string $username): User { return static::where('username', $username)->firstOrFail(); } - public static function findByEmailAddress(string $emailAddress): self + public static function findByEmailAddress(string $emailAddress): User { return static::where('email', $emailAddress)->firstOrFail(); } - public static function findByGithubId(string $githubId): self + public static function findByGithubId(string $githubId): User { return static::where('github_id', $githubId)->firstOrFail(); } diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js index a38387c7c..0f378728b 100644 --- a/resources/assets/js/app.js +++ b/resources/assets/js/app.js @@ -15,7 +15,8 @@ require('./bootstrap'); $('select.selectize').selectize({ maxItems: 3 }); $('textarea.wysiwyg').markdown({ iconlibrary: 'fa' }); +$('.forum-content > p').twembed(); // const app = new Vue({ // el: '#app' -// }); +// }); \ No newline at end of file diff --git a/resources/assets/js/bootstrap.js b/resources/assets/js/bootstrap.js index 58fdcfde6..60ac8865d 100644 --- a/resources/assets/js/bootstrap.js +++ b/resources/assets/js/bootstrap.js @@ -50,13 +50,14 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; */ require('vue-resource'); require('selectize'); +require('markdown'); // This doesn't seems to work so we require it directly in base.blade.php require('to-markdown'); require('bootstrap-markdown/js/bootstrap-markdown'); +require('./embed-twitter'); require('prismjs'); require('prismjs/components/prism-json'); require('prismjs/components/prism-css'); require('prismjs/components/prism-javascript'); require('prismjs/components/prism-less'); require('prismjs/components/prism-sass'); -require('prismjs/components/prism-php'); -window.markdown = require('markdown').markdown; \ No newline at end of file +require('prismjs/components/prism-php'); \ No newline at end of file diff --git a/resources/assets/js/embed-twitter.js b/resources/assets/js/embed-twitter.js new file mode 100644 index 000000000..b8b78b709 --- /dev/null +++ b/resources/assets/js/embed-twitter.js @@ -0,0 +1,20 @@ +$.fn.twembed = function () { + const regex = /((http(s|):\/\/)|)twitter.com\/\w*\/status\/\d*/g; + + function transformTwitterLinkToBlockquote(link, content) { + content.innerHTML = content.innerHTML.replace( + link, + `
${link}` + ) + } + + function searchForTwitterLinks(id, content) { + const match = regex.exec($(content).text()); + + if (match && match[0]) { + transformTwitterLinkToBlockquote(match[0], content); + } + } + + $(this).each(searchForTwitterLinks); +}; diff --git a/resources/views/forum/threads/_form.blade.php b/resources/views/forum/threads/_form.blade.php index ed2fd9d23..26fed674f 100644 --- a/resources/views/forum/threads/_form.blade.php +++ b/resources/views/forum/threads/_form.blade.php @@ -1,8 +1,7 @@ {!! Form::open(['route' => $route, 'method' => $method ?? 'POST']) !!} @formGroup('subject') {!! Form::label('subject') !!} - {!! Form::text('subject', isset($thread) ? $thread->subject() : null, ['class' => 'form-control', 'required', 'maxlength' => '60']) !!} - Maximum 60 characters. + {!! Form::text('subject', isset($thread) ? $thread->subject() : null, ['class' => 'form-control', 'required']) !!} @error('subject') @endFormGroup diff --git a/resources/views/forum/threads/show.blade.php b/resources/views/forum/threads/show.blade.php index c9f83b0c4..ef223d987 100644 --- a/resources/views/forum/threads/show.blade.php +++ b/resources/views/forum/threads/show.blade.php @@ -2,6 +2,10 @@ @extends('layouts.default') +@push('scripts-head') + +@endpush + @section('content')