diff --git a/app/Http/Controllers/Web/Follow/FollowsController.php b/app/Http/Controllers/Web/Follow/FollowsController.php index 486ad24..1d280d6 100644 --- a/app/Http/Controllers/Web/Follow/FollowsController.php +++ b/app/Http/Controllers/Web/Follow/FollowsController.php @@ -4,7 +4,6 @@ use App\Http\Controllers\Controller; use App\Models\User; -use Illuminate\Http\Request; class FollowsController extends Controller { @@ -14,7 +13,7 @@ public function follow(User $user) { 'status' => true ]); } - + auth()->user()->toggleFollow($user); return response()->json([ diff --git a/app/Http/Controllers/Web/Search/SearchController.php b/app/Http/Controllers/Web/Search/SearchController.php new file mode 100644 index 0000000..e3de7f2 --- /dev/null +++ b/app/Http/Controllers/Web/Search/SearchController.php @@ -0,0 +1,22 @@ +get('q'); + + if(!$query || strlen($query) < 1 || strlen($query) > 255) return redirect('/'); + + $data = User::where('username', 'like', "%$query%") + ->orWhere('name', 'like', "%$query%") + ->limit(30)->get(); + + return view('pages/other/search', compact('data'), ['query' => $query]); + } +} diff --git a/public/js/script.js b/public/js/script.js index d1274e3..a10bb7d 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -375,31 +375,32 @@ function parsePostDate(date) { return formatter.format(date); } -new Tabs( - [ +if(window.location.pathname === '/profile') { + new Tabs( + [ + { + id: 'main', + triggerEl: document.querySelector('#main_tab-tab'), + targetEl: document.querySelector('#main_tab') + }, + { + id: 'follows', + triggerEl: document.querySelector('#follows_tab-tab'), + targetEl: document.querySelector('#follows_tab') + }, + { + id: 'followers', + triggerEl: document.querySelector('#followers_tab-tab'), + targetEl: document.querySelector('#followers_tab') + }, + ], { - id: 'main', - triggerEl: document.querySelector('#main_tab-tab'), - targetEl: document.querySelector('#main_tab') - }, - { - id: 'follows', - triggerEl: document.querySelector('#follows_tab-tab'), - targetEl: document.querySelector('#follows_tab') - }, - { - id: 'followers', - triggerEl: document.querySelector('#followers_tab-tab'), - targetEl: document.querySelector('#followers_tab') - }, - ], - { - defaultTabId: 'follows', - activeClasses: 'border-b-4 dark:border-cyan-300', - inactiveClasses: '_', - } -); - + defaultTabId: 'main', + activeClasses: 'border-b-4 dark:border-cyan-300', + inactiveClasses: '_', + } + ); +} function createToast(data) { let toasts_block = $("#toasts"); diff --git a/resources/assets/js/tabs.js b/resources/assets/js/tabs.js index 0c59967..2f6d504 100644 --- a/resources/assets/js/tabs.js +++ b/resources/assets/js/tabs.js @@ -1,25 +1,26 @@ -new Tabs( - [ +if(window.location.pathname === '/profile') { + new Tabs( + [ + { + id: 'main', + triggerEl: document.querySelector('#main_tab-tab'), + targetEl: document.querySelector('#main_tab') + }, + { + id: 'follows', + triggerEl: document.querySelector('#follows_tab-tab'), + targetEl: document.querySelector('#follows_tab') + }, + { + id: 'followers', + triggerEl: document.querySelector('#followers_tab-tab'), + targetEl: document.querySelector('#followers_tab') + }, + ], { - id: 'main', - triggerEl: document.querySelector('#main_tab-tab'), - targetEl: document.querySelector('#main_tab') - }, - { - id: 'follows', - triggerEl: document.querySelector('#follows_tab-tab'), - targetEl: document.querySelector('#follows_tab') - }, - { - id: 'followers', - triggerEl: document.querySelector('#followers_tab-tab'), - targetEl: document.querySelector('#followers_tab') - }, - ], - { - defaultTabId: 'follows', - activeClasses: 'border-b-4 dark:border-cyan-300', - inactiveClasses: '_', - } -); - + defaultTabId: 'main', + activeClasses: 'border-b-4 dark:border-cyan-300', + inactiveClasses: '_', + } + ); +} diff --git a/resources/views/includes/_follows-list.blade.php b/resources/views/includes/_follows-list.blade.php index 75de6e7..9d7a25c 100644 --- a/resources/views/includes/_follows-list.blade.php +++ b/resources/views/includes/_follows-list.blade.php @@ -1,20 +1,22 @@
- @if($user->avatar) - avatar + @if($u->avatar) + avatar @else avatar @endif
-
{{$user->name}}
- {{"@$user->username"}} +
{{$u->name}}
+ {{"@$u->username"}}
-
- @if($isFollowing) - - @else - - @endif -
+ @if(auth()->user()->isNot($u)) +
+ @if($isFollowing) + + @else + + @endif +
+ @endif
diff --git a/resources/views/includes/_nav-links.blade.php b/resources/views/includes/_nav-links.blade.php index bbe4b0b..ed92f67 100644 --- a/resources/views/includes/_nav-links.blade.php +++ b/resources/views/includes/_nav-links.blade.php @@ -12,7 +12,7 @@ - Home + Главная
  • @@ -52,7 +52,7 @@ - Profile + Профиль
  • diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php index 7141cc1..6b68433 100644 --- a/resources/views/layouts/default.blade.php +++ b/resources/views/layouts/default.blade.php @@ -22,7 +22,7 @@ @yield('content')
    -
    +
    @@ -30,7 +30,7 @@
    -
    diff --git a/resources/views/pages/account/profile.blade.php b/resources/views/pages/account/profile.blade.php index 5446737..a274ad6 100644 --- a/resources/views/pages/account/profile.blade.php +++ b/resources/views/pages/account/profile.blade.php @@ -194,7 +194,7 @@
    @php $follows = auth()->user()->follows @endphp - @forelse($follows as $user) + @forelse($follows as $u) @include('includes/_follows-list', ['isFollowing' => true]) @empty
    @@ -206,9 +206,9 @@
    @php $followers = auth()->user()->followers @endphp - @forelse($followers as $user) + @forelse($followers as $u) @php - $isFollowing = $follows->contains($user); + $isFollowing = $follows->contains($u); @endphp @include('includes/_follows-list', ['isFollowing' => $isFollowing]) @empty @@ -222,5 +222,5 @@ @endsection @section('scripts') - + @endsection diff --git a/resources/views/pages/other/search.blade.php b/resources/views/pages/other/search.blade.php new file mode 100644 index 0000000..ead049d --- /dev/null +++ b/resources/views/pages/other/search.blade.php @@ -0,0 +1,26 @@ +@extends('layouts/default') + +@section('title', 'Поиск') + +@section('content') +
    +
    +

    Результаты поиска: {{$query}}

    +
    +
    + @php $follows = auth()->user()->follows @endphp + @forelse($data as $u) + @php + $isFollowing = $follows->contains($u); + @endphp + @include('includes/_follows-list' , ['isFollowing' => $isFollowing]) + @empty +

    Ничего не найдено

    + @endforelse +
    +
    +@endsection + +@section('scripts') + +@endsection diff --git a/routes/web.php b/routes/web.php index 0c257a0..a43baf1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Web\Follow\FollowsController; use App\Http\Controllers\Web\IndexController; use App\Http\Controllers\Web\Posts\PostsController; +use App\Http\Controllers\Web\Search\SearchController; use Illuminate\Support\Facades\Route; @@ -37,6 +38,8 @@ Route::post('newpassword', [SettingsController::class, 'newPassword'])->name('newpassword'); }); + Route::get('/search', [SearchController::class, 'search'])->name('search'); + Route::get('/logout', [LoginController::class, 'logout'])->name('logout'); });