Merge pull request #1490 from pixelfed/frontend-ui-refactor

Update account settings, add hashtags to relationships
This commit is contained in:
daniel 2019-07-10 21:27:44 -06:00 committed by GitHub
commit 14a1496c2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 16 deletions

View file

@ -20,8 +20,8 @@ class Hashtag extends Model
); );
} }
public function url() public function url($suffix = '')
{ {
return config('routes.hashtag.base').$this->slug; return config('routes.hashtag.base').$this->slug.$suffix;
} }
} }

View file

@ -18,15 +18,29 @@ trait RelationshipSettings
public function relationshipsHome(Request $request) public function relationshipsHome(Request $request)
{ {
$mode = $request->input('mode') == 'following' ? 'following' : 'followers'; $this->validate($request, [
'mode' => 'nullable|string|in:following,followers,hashtags'
]);
$mode = $request->input('mode');
$profile = Auth::user()->profile; $profile = Auth::user()->profile;
$following = $followers = []; switch ($mode) {
case 'following':
if($mode == 'following') {
$data = $profile->following()->simplePaginate(10); $data = $profile->following()->simplePaginate(10);
} else { break;
case 'followers':
$data = $profile->followers()->simplePaginate(10); $data = $profile->followers()->simplePaginate(10);
break;
case 'hashtags':
$data = $profile->hashtagFollowing()->with('hashtag')->simplePaginate(10);
break;
default:
$data = [];
break;
} }
return view('settings.relationships.home', compact('profile', 'mode', 'data')); return view('settings.relationships.home', compact('profile', 'mode', 'data'));

View file

@ -278,4 +278,9 @@ class Profile extends Model
'hashtag_id' 'hashtag_id'
); );
} }
public function hashtagFollowing()
{
return $this->hasMany(HashtagFollow::class);
}
} }

View file

@ -9,9 +9,6 @@
<li class="nav-item pl-3 {{request()->is('settings/email')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/email')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.email')}}">Email</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.email')}}">Email</a>
</li> </li>
<li class="nav-item pl-3 {{request()->is('settings/relationships*')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.relationships')}}">Followers</a>
</li>
@if(config('pixelfed.user_invites.enabled')) @if(config('pixelfed.user_invites.enabled'))
<li class="nav-item pl-3 {{request()->is('settings/invites*')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/invites*')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.invites')}}">Invites</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.invites')}}">Invites</a>
@ -26,6 +23,9 @@
<li class="nav-item pl-3 {{request()->is('settings/privacy*')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/privacy*')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.privacy')}}">Privacy</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.privacy')}}">Privacy</a>
</li> </li>
<li class="nav-item pl-3 {{request()->is('settings/relationships*')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.relationships')}}">Relationships</a>
</li>
<li class="nav-item pl-3 {{request()->is('settings/reports*')?'active':''}}"> <li class="nav-item pl-3 {{request()->is('settings/reports*')?'active':''}}">
<a class="nav-link font-weight-light text-muted" href="{{route('settings.reports')}}">Reports</a> <a class="nav-link font-weight-light text-muted" href="{{route('settings.reports')}}">Reports</a>
</li> </li>

View file

@ -3,23 +3,50 @@
@section('section') @section('section')
<div class="title"> <div class="title">
<h3 class="font-weight-bold">Followers & Following</h3> <h3 class="font-weight-bold">Relationships</h3>
</div> </div>
<hr> <hr>
@if(empty($data))
<p class="text-center lead pt-5 mt-5">You are not {{$mode == 'following' ? 'following anyone.' : 'followed by anyone.'}}</p>
@else
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link font-weight-bold {{$mode == 'followers' ? 'active' : ''}}" href="?mode=followers&page=1">Followers</a> <a class="nav-link font-weight-bold {{!request()->has('mode') || $mode == 'followers' ? 'active' : ''}}" href="?mode=followers&page=1">Followers</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link font-weight-bold {{$mode == 'following' ? 'active' : ''}}" href="?mode=following&page=1">Following</a> <a class="nav-link font-weight-bold {{$mode == 'following' ? 'active' : ''}}" href="?mode=following&page=1">Following</a>
</li> </li>
<li class="nav-item">
<a class="nav-link font-weight-bold {{$mode == 'hashtags' ? 'active' : ''}}" href="?mode=hashtags&page=1">Hashtags</a>
</li>
</ul> </ul>
<hr> <hr>
@if(empty($data))
<p class="text-center lead pt-5 mt-5">You are not {{$mode == 'hashtags' ? 'following any hashtags.' : ($mode == 'following' ? 'following anyone.' : 'followed by anyone.')}}</p>
@else
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover">
@if($mode == 'hashtags')
<thead>
<tr>
{{-- <th scope="col" class="pt-0 pb-1 mt-0">
<input type="checkbox" name="check" class="form-control check-all">
</th> --}}
<th scope="col">Hashtag</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach($data as $hashtag)
<tr>
<td class="font-weight-bold">
<a href="{{$hashtag->hashtag->url('?src=relset')}}" class="text-decoration-none text-dark">
<p class="mb-0 pb-0">#{{$hashtag->hashtag->name}}</p>
</a>
</td>
<td class="text-center">
<a class="btn btn-outline-danger btn-sm py-0 action-btn" href="#" data-id="{{$hashtag->hashtag->name}}" data-action="unfollowhashtag">Unfollow</a>
</td>
</tr>
@endforeach
@else
<thead> <thead>
<tr> <tr>
{{-- <th scope="col" class="pt-0 pb-1 mt-0"> {{-- <th scope="col" class="pt-0 pb-1 mt-0">
@ -52,6 +79,7 @@
@endif @endif
</tr> </tr>
@endforeach @endforeach
@endif
</tbody> </tbody>
</table> </table>
</div> </div>
@ -113,6 +141,17 @@
); );
}); });
break; break;
case 'unfollowhashtag':
axios.post('/api/local/discover/tag/subscribe', {
name: id
}).then(res => {
swal(
'Unfollow Successful',
'You have successfully unfollowed that hashtag',
'success'
);
});
} }
setTimeout(function() { setTimeout(function() {
window.location.href = window.location.href; window.location.href = window.location.href;