From 157a03f13d1a4b249e7ad5053fc04d064242fdbf Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:16:01 -0600 Subject: [PATCH 01/25] Update instance config --- config/instance.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/instance.php b/config/instance.php index 53d6242c7..3842de358 100644 --- a/config/instance.php +++ b/config/instance.php @@ -2,4 +2,9 @@ return [ 'email' => env('INSTANCE_CONTACT_EMAIL'), + + 'contact' => [ + 'enabled' => env('INSTANCE_CONTACT_FORM', false), + 'max_per_day' => env('INSTANCE_CONTACT_MAX_PER_DAY', 1), + ], ]; \ No newline at end of file From b371c702203a3817607bafd3bfaea7de566835fb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:17:43 -0600 Subject: [PATCH 02/25] Update ContactController --- app/Http/Controllers/ContactController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index da1591fe3..5b8801d17 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -10,11 +10,13 @@ class ContactController extends Controller { public function show(Request $request) { + abort_if(!config('instance.contact.enabled'), 404); return view('site.contact'); } public function store(Request $request) { + abort_if(!config('instance.contact.enabled'), 404); abort_if(!Auth::check(), 403); $this->validate($request, [ @@ -26,8 +28,9 @@ class ContactController extends Controller $request_response = $request->input('request_response') == 'on' ? true : false; $user = Auth::user(); + $max = config('instance.contact.max_per_day'); $contact = Contact::whereUserId($user->id) - ->whereDate('created_at', '>', now()->subDays(1)) + ->whereDate('created_at', '>', now()->subDays($max)) ->count(); if($contact >= 2) { From 99087f5a093c9aed7e96e4776983df5ae9f79161 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:18:16 -0600 Subject: [PATCH 03/25] Update site lang --- resources/lang/en/site.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/lang/en/site.php b/resources/lang/en/site.php index 70b9e862d..f28f57459 100644 --- a/resources/lang/en/site.php +++ b/resources/lang/en/site.php @@ -12,5 +12,7 @@ return [ 'l10nWip' => 'We’re still working on localization support', 'currentLocale' => 'Current locale', 'selectLocale' => 'Select one of the supported languages', + 'contact' => 'Contact', + 'contact-us' => 'Contact Us', ]; From 357246c4e780c8c4965b6db1497dd385d08949ca Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:19:27 -0600 Subject: [PATCH 04/25] Update site sidebar --- resources/views/site/partial/sidebar.blade.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/views/site/partial/sidebar.blade.php b/resources/views/site/partial/sidebar.blade.php index 2eace3cc9..7d135b666 100644 --- a/resources/views/site/partial/sidebar.blade.php +++ b/resources/views/site/partial/sidebar.blade.php @@ -28,6 +28,11 @@ + @if(config('instance.contact.enabled')) + + @endif From 4bb3873c9b56ff591a854cdfe6d358b941626410 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:19:49 -0600 Subject: [PATCH 05/25] Update contact view --- resources/views/site/contact.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index 3b45cc25a..d0e78fbe5 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -3,7 +3,7 @@ @section('section')
-

Contact

+

{{__('site.contact-us')}}


From b28e6859d13cb127d162e5464fcfe2306ad5f986 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:21:06 -0600 Subject: [PATCH 06/25] Update web routes --- routes/web.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index a7ca1622e..e5f3dcb53 100644 --- a/routes/web.php +++ b/routes/web.php @@ -264,7 +264,8 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::view('privacy', 'site.privacy')->name('site.privacy'); Route::view('platform', 'site.platform')->name('site.platform'); Route::view('language', 'site.language')->name('site.language'); - + Route::get('contact', 'ContactController@show')->name('site.contact'); + Route::post('contact', 'ContactController@store'); Route::group(['prefix'=>'kb'], function() { Route::view('getting-started', 'site.help.getting-started')->name('help.getting-started'); Route::view('sharing-media', 'site.help.sharing-media')->name('help.sharing-media'); From 21e27fc75434659b7b894c724d9658416703e581 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:23:21 -0600 Subject: [PATCH 07/25] Update contact view --- resources/views/site/contact.blade.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index d0e78fbe5..fd5117289 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -8,6 +8,13 @@
@auth +

+ @if(filter_var(config('instance.email'), FILTER_VALIDATE_EMAIL) == true) + You can contact the admins by sending an email to {{config('instance.email')}} or using the form below. + @else + You can contact the admins by using the form below. + @endif +

@csrf
From 05fed84eaa296ab3ddb8b770641c43af0eb4ad8e Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:29:22 -0600 Subject: [PATCH 08/25] Update contact view --- resources/views/site/contact.blade.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index fd5117289..8daa540bf 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -15,6 +15,7 @@ You can contact the admins by using the form below. @endif

+ @if(config('instance.contact.enabled')) @csrf
@@ -28,6 +29,7 @@
+ @endif @else

@if(filter_var(config('instance.email'), FILTER_VALIDATE_EMAIL) == true) From 914681a4add2b6d32feb8e9e38ee7c2d65a591ba Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 14:29:39 -0600 Subject: [PATCH 09/25] Update ContactController --- app/Http/Controllers/ContactController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index 5b8801d17..123d68b96 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -10,7 +10,6 @@ class ContactController extends Controller { public function show(Request $request) { - abort_if(!config('instance.contact.enabled'), 404); return view('site.contact'); } From 93b9035531d8d534764af723973c2d682691f49e Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:23:48 -0600 Subject: [PATCH 10/25] Add ContactPipeline --- app/Jobs/ContactPipeline/ContactPipeline.php | 44 ++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 app/Jobs/ContactPipeline/ContactPipeline.php diff --git a/app/Jobs/ContactPipeline/ContactPipeline.php b/app/Jobs/ContactPipeline/ContactPipeline.php new file mode 100644 index 000000000..a3c9654e8 --- /dev/null +++ b/app/Jobs/ContactPipeline/ContactPipeline.php @@ -0,0 +1,44 @@ +contact = $contact; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $contact = $this->contact; + if(config('instance.contact.enabled') == false || $this->read_at !== null) { + return; + } + $email = config('instance.email'); + Mail::to($email)->send(new ContactAdmin($contact)); + } +} From fbf483366cfabe23f0d08f7f7ff6c68be4805535 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:39:29 -0600 Subject: [PATCH 11/25] Update site sidebar --- resources/views/site/partial/sidebar.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/site/partial/sidebar.blade.php b/resources/views/site/partial/sidebar.blade.php index 7d135b666..cafdb7685 100644 --- a/resources/views/site/partial/sidebar.blade.php +++ b/resources/views/site/partial/sidebar.blade.php @@ -28,7 +28,7 @@

- @if(config('instance.contact.enabled')) + @if(config('instance.contact.enabled') || config('instance.email')) From 427c4320c84d694f14a0022b24ffac6d7c0c2d43 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:39:46 -0600 Subject: [PATCH 12/25] Update contact view --- resources/views/site/contact.blade.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index 8daa540bf..56935702b 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -9,10 +9,14 @@
@auth

- @if(filter_var(config('instance.email'), FILTER_VALIDATE_EMAIL) == true) - You can contact the admins by sending an email to {{config('instance.email')}} or using the form below. - @else + @if(config('instance.email') && config('instance.contact.enabled')) + You can contact the admins by sending an email to {{config('instance.email')}} or by using the form below. + @elseif(config('instance.email') && !config('instance.contact.enabled')) + You can contact the admins by sending an email to {{config('instance.email')}}. + @elseif(!config('instance.email') && config('instance.contact.enabled')) You can contact the admins by using the form below. + @else + The admins have not set a contact email address. @endif

@if(config('instance.contact.enabled')) @@ -34,8 +38,8 @@

@if(filter_var(config('instance.email'), FILTER_VALIDATE_EMAIL) == true) You can contact the admins by sending an email to {{config('instance.email')}}. - @else - The admins have not listed any public email. Please log in to send a message. + @elseif (config('instance.contact.enabled')) + The admins have not set a contact email address. Please log in to send a message. @endif

@endauth From 50371bf349719c979a200b8f59dcf4552124f2a8 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:40:07 -0600 Subject: [PATCH 13/25] Update footer partial --- resources/views/layouts/partial/footer.blade.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/views/layouts/partial/footer.blade.php b/resources/views/layouts/partial/footer.blade.php index cf491338d..2dd360ca7 100644 --- a/resources/views/layouts/partial/footer.blade.php +++ b/resources/views/layouts/partial/footer.blade.php @@ -2,6 +2,9 @@

{{__('site.about')}} + @if(config('instance.contact.enabled') || config('instance.email')) + {{__('site.contact-us')}} + @endif {{__('site.help')}} {{__('site.opensource')}} {{__('site.terms')}} From 1bb3e0344b7d5b0360335747e88c1c7714660b88 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:49:08 -0600 Subject: [PATCH 14/25] Update ContactPipeline --- app/Jobs/ContactPipeline/ContactPipeline.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Jobs/ContactPipeline/ContactPipeline.php b/app/Jobs/ContactPipeline/ContactPipeline.php index a3c9654e8..635367051 100644 --- a/app/Jobs/ContactPipeline/ContactPipeline.php +++ b/app/Jobs/ContactPipeline/ContactPipeline.php @@ -35,10 +35,10 @@ class ContactPipeline implements ShouldQueue public function handle() { $contact = $this->contact; - if(config('instance.contact.enabled') == false || $this->read_at !== null) { + $email = config('instance.email'); + if(config('instance.contact.enabled') == false || $contact->read_at !== null || filter_var($email, FILTER_VALIDATE_EMAIL) == false) { return; } - $email = config('instance.email'); Mail::to($email)->send(new ContactAdmin($contact)); } } From 8430a8419aa23c9a24ad1f12a3707e5dbf246ad5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:49:24 -0600 Subject: [PATCH 15/25] Update ContactController --- app/Http/Controllers/ContactController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index 123d68b96..5e97d9ebd 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -5,11 +5,13 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Auth; use App\Contact; +use App\Jobs\ContactPipeline\ContactPipeline; class ContactController extends Controller { public function show(Request $request) { + abort_if(!config('instance.email') && !config('instance.contact.enabled'), 404); return view('site.contact'); } @@ -42,6 +44,8 @@ class ContactController extends Controller $contact->message = $message; $contact->save(); + ContactPipeline::dispatchNow($contact); + return redirect()->back()->with('status', 'Success - Your message has been sent to admins.'); } } From fc12f1eba537e1cd428df01eea23c87df65e47e9 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 18:49:45 -0600 Subject: [PATCH 16/25] Update contact view --- resources/views/site/contact.blade.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index 56935702b..7baaad61d 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -36,10 +36,12 @@ @endif @else

- @if(filter_var(config('instance.email'), FILTER_VALIDATE_EMAIL) == true) - You can contact the admins by sending an email to {{config('instance.email')}}. - @elseif (config('instance.contact.enabled')) + @if(config('instance.email') && config('instance.contact.enabled')) + You can contact the admins by sending an email to {{config('instance.email')}} or log in to send a message. + @elseif (!config('instance.email') && config('instance.contact.enabled')) The admins have not set a contact email address. Please log in to send a message. + @elseif (config('instance.email') && !config('instance.contact.enabled')) + You can contact the admins by sending an email to {{config('instance.email')}}. @endif

@endauth From e33dd43dc2572097938345444a27b4537cf862b3 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 18 Jun 2019 19:14:46 -0600 Subject: [PATCH 17/25] Update admin views --- resources/views/admin/apps/home.blade.php | 4 ++- resources/views/admin/home.blade.php | 6 ++-- resources/views/admin/messages/home.blade.php | 36 +++++++++++++++++++ .../views/admin/partial/topnav.blade.php | 5 +-- 4 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 resources/views/admin/messages/home.blade.php diff --git a/resources/views/admin/apps/home.blade.php b/resources/views/admin/apps/home.blade.php index 8aaeb1170..aa8dfc0f2 100644 --- a/resources/views/admin/apps/home.blade.php +++ b/resources/views/admin/apps/home.blade.php @@ -17,7 +17,8 @@

- +
+
@@ -45,4 +46,5 @@ @endforeach
#
+
@endsection \ No newline at end of file diff --git a/resources/views/admin/home.blade.php b/resources/views/admin/home.blade.php index 31d882b5f..4e49f5655 100644 --- a/resources/views/admin/home.blade.php +++ b/resources/views/admin/home.blade.php @@ -11,10 +11,10 @@
-

Alerts

-

0

+

New Messages

+

{{$data['contact']['count']}}

- +
diff --git a/resources/views/admin/messages/home.blade.php b/resources/views/admin/messages/home.blade.php new file mode 100644 index 000000000..ee0b86e6e --- /dev/null +++ b/resources/views/admin/messages/home.blade.php @@ -0,0 +1,36 @@ +@extends('admin.partial.template-full') + +@section('section') +
+

Messages

+
+ +
+
+ + + + + + + + + + + @foreach($messages as $msg) + + + + + + + @endforeach + +
#UserMessageCreated
+ + {{$msg->id}} + + {{$msg->user->username}}{{str_limit($msg->message, 40)}}{{$msg->created_at->diffForHumans()}}
+
+{{$messages->links()}} +@endsection \ No newline at end of file diff --git a/resources/views/admin/partial/topnav.blade.php b/resources/views/admin/partial/topnav.blade.php index 2e4ad6918..2a6ee4952 100644 --- a/resources/views/admin/partial/topnav.blade.php +++ b/resources/views/admin/partial/topnav.blade.php @@ -8,8 +8,8 @@ -