diff options
Diffstat (limited to 'client/src/app/+video-channels')
4 files changed, 50 insertions, 18 deletions
diff --git a/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts b/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts index f4fe14662..f32a892a4 100644 --- a/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts +++ b/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts | |||
@@ -72,7 +72,7 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On | |||
72 | .getVideoChannelVideos(this.videoChannel, newPagination, this.sort) | 72 | .getVideoChannelVideos(this.videoChannel, newPagination, this.sort) |
73 | .pipe( | 73 | .pipe( |
74 | tap(({ total }) => { | 74 | tap(({ total }) => { |
75 | this.titlePage = this.i18n(`{total, plural, =1 {Published 1 video} other {Published ${total} videos}}`, { total }) | 75 | this.titlePage = this.i18n(`{total, plural, =1 {Published 1 video} other {Published {{total}} videos}}`, { total }) |
76 | }) | 76 | }) |
77 | ) | 77 | ) |
78 | } | 78 | } |
diff --git a/client/src/app/+video-channels/video-channels.component.html b/client/src/app/+video-channels/video-channels.component.html index f0bb083ca..1087de113 100644 --- a/client/src/app/+video-channels/video-channels.component.html +++ b/client/src/app/+video-channels/video-channels.component.html | |||
@@ -7,32 +7,38 @@ | |||
7 | <div class="actor-info"> | 7 | <div class="actor-info"> |
8 | <div class="actor-names"> | 8 | <div class="actor-names"> |
9 | <div class="actor-display-name">{{ videoChannel.displayName }}</div> | 9 | <div class="actor-display-name">{{ videoChannel.displayName }}</div> |
10 | <div class="actor-name">{{ videoChannel.nameWithHost }} | 10 | <div class="actor-name"> |
11 | <button ngxClipboard [cbContent]="videoChannel.nameWithHost" (click)="activateCopiedMessage()" | 11 | <span>{{ videoChannel.nameWithHost }}</span> |
12 | <button [cdkCopyToClipboard]="videoChannel.nameWithHost" (click)="activateCopiedMessage()" | ||
12 | class="btn btn-outline-secondary btn-sm copy-button" | 13 | class="btn btn-outline-secondary btn-sm copy-button" |
13 | > | 14 | > |
14 | <span class="glyphicon glyphicon-copy"></span> | 15 | <span class="glyphicon glyphicon-copy"></span> |
15 | </button> | 16 | </button> |
16 | </div> | 17 | </div> |
18 | </div> | ||
17 | 19 | ||
18 | <div class="right-buttons"> | 20 | <div class="right-buttons"> |
19 | <a *ngIf="isChannelManageable" [routerLink]="[ '/my-account/video-channels/update', videoChannel.nameWithHost ]" class="btn btn-outline-tertiary mr-2" i18n>Manage</a> | 21 | <a *ngIf="isChannelManageable" [routerLink]="[ '/my-account/video-channels/update', videoChannel.nameWithHost ]" class="btn btn-outline-tertiary mr-2" i18n>Manage</a> |
20 | <my-subscribe-button #subscribeButton [videoChannels]="[videoChannel]"></my-subscribe-button> | 22 | <my-subscribe-button #subscribeButton [videoChannels]="[videoChannel]"></my-subscribe-button> |
21 | </div> | ||
22 | </div> | 23 | </div> |
23 | <div class="actor-followers" i18n>{videoChannel.followersCount, plural, =1 {1 subscriber} other {{{ videoChannel.followersCount }} subscribers}}</div> | ||
24 | 24 | ||
25 | <a [routerLink]="[ '/accounts', videoChannel.ownerBy ]" i18n-title title="Go the owner account page" class="actor-owner"> | 25 | <div class="actor-lower"> |
26 | <span i18n>Created by {{ videoChannel.ownerBy }}</span> | 26 | <div class="actor-followers" i18n>{videoChannel.followersCount, plural, =1 {1 subscriber} other {{{ videoChannel.followersCount }} subscribers}}</div> |
27 | <img [src]="videoChannel.ownerAvatarUrl" alt="Owner account avatar" /> | 27 | |
28 | </a> | 28 | <a [routerLink]="[ '/accounts', videoChannel.ownerBy ]" i18n-title title="Go the owner account page" class="actor-owner"> |
29 | <span i18n>Created by {{ videoChannel.ownerBy }}</span> | ||
30 | <img [src]="videoChannel.ownerAvatarUrl" alt="Owner account avatar" /> | ||
31 | </a> | ||
32 | </div> | ||
29 | </div> | 33 | </div> |
30 | </div> | 34 | </div> |
31 | 35 | ||
32 | <div class="links"> | 36 | <div class="links w-100"> |
33 | <a i18n routerLink="videos" routerLinkActive="active" class="title-page">Videos</a> | 37 | <ng-template #linkTemplate let-item="item"> |
34 | <a i18n routerLink="video-playlists" routerLinkActive="active" class="title-page">Video playlists</a> | 38 | <a [routerLink]="item.routerLink" routerLinkActive="active" class="title-page">{{ item.label }}</a> |
35 | <a i18n routerLink="about" routerLinkActive="active" class="title-page">About</a> | 39 | </ng-template> |
40 | |||
41 | <list-overflow [items]="links" [itemTemplate]="linkTemplate"></list-overflow> | ||
36 | </div> | 42 | </div> |
37 | </div> | 43 | </div> |
38 | 44 | ||
diff --git a/client/src/app/+video-channels/video-channels.component.scss b/client/src/app/+video-channels/video-channels.component.scss index 50b69e7ac..6470629f8 100644 --- a/client/src/app/+video-channels/video-channels.component.scss +++ b/client/src/app/+video-channels/video-channels.component.scss | |||
@@ -8,6 +8,21 @@ | |||
8 | width: 100%; | 8 | width: 100%; |
9 | } | 9 | } |
10 | 10 | ||
11 | .actor-info { | ||
12 | display: grid !important; | ||
13 | grid-template-columns: 1fr auto; | ||
14 | grid-template-rows: 1fr auto / 1fr auto; | ||
15 | grid-template-areas: "name buttons" "lower buttons"; | ||
16 | |||
17 | @media screen and (max-width: #{map-get($grid-breakpoints, lg)}) { | ||
18 | grid-template-areas: "name name" "lower buttons"; | ||
19 | } | ||
20 | } | ||
21 | |||
22 | .actor-names { | ||
23 | grid-area: name; | ||
24 | } | ||
25 | |||
11 | .actor-name { | 26 | .actor-name { |
12 | flex-grow: 1; | 27 | flex-grow: 1; |
13 | 28 | ||
@@ -25,6 +40,9 @@ | |||
25 | margin-left: auto; | 40 | margin-left: auto; |
26 | margin-top: 20px; | 41 | margin-top: 20px; |
27 | 42 | ||
43 | grid-row: buttons-start / span buttons-end; | ||
44 | grid-column: buttons-start; | ||
45 | |||
28 | a { | 46 | a { |
29 | @include peertube-button-outline; | 47 | @include peertube-button-outline; |
30 | line-height: 1.8; | 48 | line-height: 1.8; |
@@ -33,4 +51,4 @@ | |||
33 | my-subscribe-button { | 51 | my-subscribe-button { |
34 | height: min-content; | 52 | height: min-content; |
35 | } | 53 | } |
36 | } \ No newline at end of file | 54 | } |
diff --git a/client/src/app/+video-channels/video-channels.component.ts b/client/src/app/+video-channels/video-channels.component.ts index 7b335b13f..0889ca854 100644 --- a/client/src/app/+video-channels/video-channels.component.ts +++ b/client/src/app/+video-channels/video-channels.component.ts | |||
@@ -9,16 +9,18 @@ import { AuthService, Notifier } from '@app/core' | |||
9 | import { Hotkey, HotkeysService } from 'angular2-hotkeys' | 9 | import { Hotkey, HotkeysService } from 'angular2-hotkeys' |
10 | import { SubscribeButtonComponent } from '@app/shared/user-subscription/subscribe-button.component' | 10 | import { SubscribeButtonComponent } from '@app/shared/user-subscription/subscribe-button.component' |
11 | import { I18n } from '@ngx-translate/i18n-polyfill' | 11 | import { I18n } from '@ngx-translate/i18n-polyfill' |
12 | import { ListOverflowItem } from '@app/shared/misc/list-overflow.component' | ||
12 | 13 | ||
13 | @Component({ | 14 | @Component({ |
14 | templateUrl: './video-channels.component.html', | 15 | templateUrl: './video-channels.component.html', |
15 | styleUrls: [ './video-channels.component.scss' ] | 16 | styleUrls: [ './video-channels.component.scss' ] |
16 | }) | 17 | }) |
17 | export class VideoChannelsComponent implements OnInit, OnDestroy { | 18 | export class VideoChannelsComponent implements OnInit, OnDestroy { |
18 | @ViewChild('subscribeButton', { static: false }) subscribeButton: SubscribeButtonComponent | 19 | @ViewChild('subscribeButton') subscribeButton: SubscribeButtonComponent |
19 | 20 | ||
20 | videoChannel: VideoChannel | 21 | videoChannel: VideoChannel |
21 | hotkeys: Hotkey[] | 22 | hotkeys: Hotkey[] |
23 | links: ListOverflowItem[] = [] | ||
22 | isChannelManageable = false | 24 | isChannelManageable = false |
23 | 25 | ||
24 | private routeSub: Subscription | 26 | private routeSub: Subscription |
@@ -62,6 +64,12 @@ export class VideoChannelsComponent implements OnInit, OnDestroy { | |||
62 | }, undefined, this.i18n('Subscribe to the account')) | 64 | }, undefined, this.i18n('Subscribe to the account')) |
63 | ] | 65 | ] |
64 | if (this.isUserLoggedIn()) this.hotkeysService.add(this.hotkeys) | 66 | if (this.isUserLoggedIn()) this.hotkeysService.add(this.hotkeys) |
67 | |||
68 | this.links = [ | ||
69 | { label: this.i18n('Videos'), routerLink: 'videos' }, | ||
70 | { label: this.i18n('Video playlists'), routerLink: 'video-playlists' }, | ||
71 | { label: this.i18n('About'), routerLink: 'about' } | ||
72 | ] | ||
65 | } | 73 | } |
66 | 74 | ||
67 | ngOnDestroy () { | 75 | ngOnDestroy () { |