diff --git a/Modules/CircleXO/App/Http/Controllers/ProfileController.php b/Modules/CircleXO/App/Http/Controllers/ProfileController.php index 27c33ab..7f2723c 100644 --- a/Modules/CircleXO/App/Http/Controllers/ProfileController.php +++ b/Modules/CircleXO/App/Http/Controllers/ProfileController.php @@ -198,6 +198,73 @@ public function updateInfo(Request $request) return redirect()->back(); } + public function socialStore(Request $request) + { + $request->validate([ + "name" => "required|string", + "link" => "required|string|url|max:255", + "label" => "required|string|max:255" + ]); + + $account = auth('accounts')->user(); + $social = $account->meta('social'); + $social[] = [ + 'name' => $request->get('name'), + 'link' => $request->get('link'), + 'label' => $request->get('label'), + ]; + $account->meta('social', $social); + + Toast::success('Social account added successfully')->autoDismiss(2); + return redirect()->back(); + } + + public function socialEdit($network) + { + $network = collect(auth('accounts')->user()->meta('social'))->where('name', $network)->first(); + return view('circle-xo::profile.edit.social-edit', compact('network')); + } + + public function socialUpdate(Request $request, $network) + { + $request->validate([ + "name" => "required|string", + "link" => "required|string|url|max:255", + "label" => "required|string|max:255" + ]); + + $account = auth('accounts')->user(); + $social = $account->meta('social'); + foreach ($social as $key=>$item){ + if($item['name'] === $network){ + $social[$key] = [ + 'name' => $request->get('name'), + 'link' => $request->get('link'), + 'label' => $request->get('label'), + ]; + } + } + $account->meta('social', $social); + + Toast::success('Social account updated successfully')->autoDismiss(2); + return redirect()->back(); + } + + public function socialDestroy(Request $request, $network) + { + $account = auth('accounts')->user(); + $social = $account->meta('social'); + foreach ($social as $key=>$item){ + if($item['name'] === $network){ + unset($social[$key]); + } + } + $account->meta('social', $social); + + Toast::success('Social account removed successfully')->autoDismiss(2); + return redirect()->back(); + } + public function updateMeta(Request $request) { $account = auth('accounts')->user(); diff --git a/Modules/CircleXO/App/Providers/CircleXOServiceProvider.php b/Modules/CircleXO/App/Providers/CircleXOServiceProvider.php index 3a4332d..688fbf2 100644 --- a/Modules/CircleXO/App/Providers/CircleXOServiceProvider.php +++ b/Modules/CircleXO/App/Providers/CircleXOServiceProvider.php @@ -50,6 +50,8 @@ public function registerComponents(): void \Modules\CircleXO\App\View\Components\Logo::class, \Modules\CircleXO\App\View\Components\ListingCard::class, \Modules\CircleXO\App\View\Components\ListingFilterItem::class, + \Modules\CircleXO\App\View\Components\SocialItem::class, + \Modules\CircleXO\App\View\Components\SocialLinks::class, ]); } diff --git a/Modules/CircleXO/App/View/Components/SocialItem.php b/Modules/CircleXO/App/View/Components/SocialItem.php new file mode 100644 index 0000000..ebe444b --- /dev/null +++ b/Modules/CircleXO/App/View/Components/SocialItem.php @@ -0,0 +1,28 @@ + @if(auth('accounts')->user()->meta('social')) - @foreach(auth('accounts')->user()->meta('social') as $social) - - - @if($social['name'] !== 'website') - - @else - - @endif - - - @endforeach + @endif
@@ -110,17 +100,7 @@ @if(auth('accounts')->user()->meta('social')) - @foreach(auth('accounts')->user()->meta('social') as $social) - - - @if($social['name'] !== 'website') - - @else - - @endif - - - @endforeach + @endif
diff --git a/Modules/CircleXO/resources/views/components/layout/public-profile.blade.php b/Modules/CircleXO/resources/views/components/layout/public-profile.blade.php index 1924354..4674f61 100644 --- a/Modules/CircleXO/resources/views/components/layout/public-profile.blade.php +++ b/Modules/CircleXO/resources/views/components/layout/public-profile.blade.php @@ -14,19 +14,7 @@
@@ -81,19 +69,7 @@ @endif
- @if($account->meta('social')) - @foreach($account->meta('social') as $social) - - - @if($social['name'] !== 'website') - - @else - - @endif - - - @endforeach - @endif +
{{ $slot }} diff --git a/Modules/CircleXO/resources/views/components/social-item.blade.php b/Modules/CircleXO/resources/views/components/social-item.blade.php new file mode 100644 index 0000000..c8fc75b --- /dev/null +++ b/Modules/CircleXO/resources/views/components/social-item.blade.php @@ -0,0 +1,6 @@ + diff --git a/Modules/CircleXO/resources/views/components/social-links.blade.php b/Modules/CircleXO/resources/views/components/social-links.blade.php new file mode 100644 index 0000000..0a61b6a --- /dev/null +++ b/Modules/CircleXO/resources/views/components/social-links.blade.php @@ -0,0 +1,25 @@ +@if($account->meta('social')) + @foreach($account->meta('social') as $social) + @if($edit) + + + @if($social['name'] !== 'website') + + @else + + @endif + + + @else + + + @if($social['name'] !== 'website') + + @else + + @endif + + + @endif + @endforeach +@endif diff --git a/Modules/CircleXO/resources/views/profile/edit/social-edit.blade.php b/Modules/CircleXO/resources/views/profile/edit/social-edit.blade.php new file mode 100644 index 0000000..af75354 --- /dev/null +++ b/Modules/CircleXO/resources/views/profile/edit/social-edit.blade.php @@ -0,0 +1,44 @@ + + + {{ __('Update Social Network') }} + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+
diff --git a/Modules/CircleXO/resources/views/profile/edit/social.blade.php b/Modules/CircleXO/resources/views/profile/edit/social.blade.php index e24a17a..11d39b1 100644 --- a/Modules/CircleXO/resources/views/profile/edit/social.blade.php +++ b/Modules/CircleXO/resources/views/profile/edit/social.blade.php @@ -1,27 +1,41 @@ - {{ __('Update Info') }} + {{ __('Select Social Network') }} - - -
- - - - - - - - - - - - -
-
+ +
+ + + + + + + + + + + + + + + + + + + + + - +
+ + + + +
diff --git a/Modules/CircleXO/routes/web.php b/Modules/CircleXO/routes/web.php index 209d297..55b7ff0 100644 --- a/Modules/CircleXO/routes/web.php +++ b/Modules/CircleXO/routes/web.php @@ -63,6 +63,10 @@ Route::get('/edit/info', [ProfileController::class, 'info'])->name('info.show'); Route::post('/edit/info', [ProfileController::class, 'updateInfo'])->name('info.update'); Route::get('/edit/social', [ProfileController::class, 'social'])->name('social.show'); + Route::post('/edit/social', [ProfileController::class, 'socialStore'])->name('social.store'); + Route::get('/edit/social/{network}', [ProfileController::class, 'socialEdit'])->name('social.edit'); + Route::post('/edit/social/{network}', [ProfileController::class, 'socialUpdate'])->name('social.update'); + Route::delete('/edit/social/{network}', [ProfileController::class, 'socialDestroy'])->name('social.destroy'); Route::post('/edit/meta', [ProfileController::class, 'updateMeta'])->name('meta.update'); Route::post('/edit/media', [ProfileController::class, 'updateMedia'])->name('media.update'); Route::post('/logout', [ProfileController::class, 'logout'])->name('logout');