Add manage buttons for own channels and account, video counts (#2421)

* Add manage buttons for own channels and account, video counts

* Change manage button color and introduce secondary color
This commit is contained in:
Rigel Kent 2020-01-21 09:35:23 +01:00 committed by Chocobozzz
parent a56053a2a4
commit aa0f19635a
13 changed files with 82 additions and 6 deletions

View File

@ -25,16 +25,18 @@
<my-user-moderation-dropdown
buttonSize="small" [account]="account" [user]="user" placement="bottom-right auto"
(userChanged)="onUserChanged()" (userDeleted)="onUserDeleted()"
>
</my-user-moderation-dropdown>
></my-user-moderation-dropdown>
</div>
<div class="actor-followers" i18n-title [title]="subscribersDisplayFor(account.followersCount) + ' to the account actor'">
{{ subscribersDisplayFor(naiveAggregatedSubscribers) }}
</div>
</div>
<div class="right-buttons">
<a *ngIf="isManageable" routerLink="/my-account" class="btn btn-outline-tertiary mr-2" i18n>Manage</a>
<my-subscribe-button *ngIf="videoChannels" [account]="account" [videoChannels]="videoChannels"></my-subscribe-button>
</div>
</div>
<div class="links">
<a i18n routerLink="video-channels" routerLinkActive="active" class="title-page">Video channels</a>

View File

@ -9,10 +9,21 @@
}
}
my-subscribe-button {
.right-buttons {
display: flex;
height: max-content;
margin-left: auto;
margin-top: 20px;
a {
@include peertube-button-outline;
height: auto;
line-height: 32px;
}
my-subscribe-button {
height: min-content;
}
}
my-user-moderation-dropdown,

View File

@ -65,6 +65,11 @@ export class AccountsComponent implements OnInit, OnDestroy {
)
}
get isManageable () {
if (!this.authService.isLoggedIn()) return false
return this.user.id === this.authService.getUser().id
}
onUserChanged () {
this.getUserIfNeeded(this.account)
}

View File

@ -1,3 +1,7 @@
<div>
<h4 i18n>Playlists <span class="badge badge-secondary">{{ pagination.totalItems }}</span></h4>
</div>
<div class="video-playlists-header">
<input type="text" placeholder="Search your playlists" i18n-placeholder [(ngModel)]="videoPlaylistsSearch" (ngModelChange)="onVideoPlaylistSearchChanged()" />

View File

@ -1,3 +1,7 @@
<div>
<h4 i18n>Videos <span class="badge badge-secondary">{{ pagination.totalItems }}</span></h4>
</div>
<div class="videos-header">
<input type="text" placeholder="Search your videos" i18n-placeholder [(ngModel)]="videosSearch" (ngModelChange)="onVideosSearchChanged()" />
</div>

View File

@ -86,6 +86,9 @@ export class MyAccountVideosComponent implements OnInit, DisableForReuseHook {
const newPagination = immutableAssign(this.pagination, { currentPage: page })
return this.videoService.getMyVideos(newPagination, sort, this.videosSearch)
.pipe(
tap(res => this.pagination.totalItems = res.total)
)
}
async deleteSelectedVideos () {

View File

@ -15,8 +15,11 @@
</button>
</div>
<div class="right-buttons">
<a *ngIf="isManageable" [routerLink]="[ '/my-account/video-channels/update', videoChannel.nameWithHost ]" class="btn btn-outline-tertiary mr-2" i18n>Manage</a>
<my-subscribe-button #subscribeButton [videoChannels]="[videoChannel]"></my-subscribe-button>
</div>
</div>
<div i18n class="actor-followers">{{ videoChannel.followersCount }} subscribers</div>
<a [routerLink]="[ '/accounts', videoChannel.ownerBy ]" i18n-title title="Go the owner account page" class="actor-owner">

View File

@ -18,3 +18,19 @@
}
}
}
.right-buttons {
display: flex;
height: max-content;
margin-left: auto;
margin-top: 20px;
a {
@include peertube-button-outline;
line-height: 1.8;
}
my-subscribe-button {
height: min-content;
}
}

View File

@ -64,6 +64,11 @@ export class VideoChannelsComponent implements OnInit, OnDestroy {
return this.authService.isLoggedIn()
}
get isManageable () {
if (!this.isUserLoggedIn()) return false
return this.videoChannel.ownerAccount.userId === this.authService.getUser().id
}
activateCopiedMessage () {
this.notifier.success(this.i18n('Username copied'))
}

View File

@ -26,6 +26,7 @@ body {
--mainHoverColor: #{$orange-hover-color};
--mainBackgroundColor: #{$bg-color};
--mainForegroundColor: #{$fg-color};
--secondaryColor: #{$cyan-color};
--menuBackgroundColor: #{$menu-background};
--menuForegroundColor: #{$menu-color};

View File

@ -170,3 +170,13 @@ ngb-tabset.bootstrap {
ngb-modal-backdrop {
z-index: 10000 !important;
}
.btn-outline-tertiary {
color: var(--secondaryColor);
border-color: var(--secondaryColor);
&:hover {
color: var(--mainBackgroundColor);
background-color: var(--secondaryColor);
}
}

View File

@ -179,6 +179,15 @@
@include peertube-button;
}
@mixin peertube-button-outline {
display: inline-block;
@include disable-default-a-behaviour;
@include peertube-button;
border: 1px solid;
}
@mixin button-with-icon($width: 20px, $margin-right: 3px, $top: -1px) {
my-global-icon {
position: relative;
@ -453,7 +462,7 @@
}
@mixin sub-menu-with-actor {
height: 160px;
height: max-content;
display: flex;
flex-direction: column;
align-items: flex-start;

View File

@ -14,6 +14,8 @@ $grey-foreground-hover-color: #303030;
$orange-color: #F1680D;
$orange-hover-color: #F97D46;
$cyan-color: hsl(187, 77%, 34%);
$support-button: inherit;
$support-button-heart: #e83e8c;
@ -73,6 +75,7 @@ $variables: (
--mainHoverColor: var(--mainHoverColor),
--mainBackgroundColor: var(--mainBackgroundColor),
--mainForegroundColor: var(--mainForegroundColor),
--secondaryColor: var(--secondaryColor),
--menuBackgroundColor: var(--menuBackgroundColor),
--menuForegroundColor: var(--menuForegroundColor),