diff options
Diffstat (limited to 'client/src/app/videos')
3 files changed, 34 insertions, 15 deletions
diff --git a/client/src/app/videos/+video-watch/video-watch.component.html b/client/src/app/videos/+video-watch/video-watch.component.html index 97f3a336e..a700907ea 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.html +++ b/client/src/app/videos/+video-watch/video-watch.component.html | |||
@@ -62,7 +62,8 @@ | |||
62 | <div | 62 | <div |
63 | [ngbPopover]="getRatePopoverText()" [ngClass]="{ 'activated': userRating === 'like' }" (click)="setLike()" | 63 | [ngbPopover]="getRatePopoverText()" [ngClass]="{ 'activated': userRating === 'like' }" (click)="setLike()" |
64 | class="action-button action-button-like" role="button" [attr.aria-pressed]="userRating === 'like'" | 64 | class="action-button action-button-like" role="button" [attr.aria-pressed]="userRating === 'like'" |
65 | i18n-title title="Like this video" | 65 | [ngbTooltip]="tooltipLike" |
66 | placement="bottom auto" | ||
66 | > | 67 | > |
67 | <my-global-icon iconName="like"></my-global-icon> | 68 | <my-global-icon iconName="like"></my-global-icon> |
68 | <span *ngIf="video.likes" class="count">{{ video.likes }}</span> | 69 | <span *ngIf="video.likes" class="count">{{ video.likes }}</span> |
@@ -71,13 +72,17 @@ | |||
71 | <div | 72 | <div |
72 | [ngbPopover]="getRatePopoverText()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()" | 73 | [ngbPopover]="getRatePopoverText()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()" |
73 | class="action-button action-button-dislike" role="button" [attr.aria-pressed]="userRating === 'dislike'" | 74 | class="action-button action-button-dislike" role="button" [attr.aria-pressed]="userRating === 'dislike'" |
74 | i18n-title title="Dislike this video" | 75 | [ngbTooltip]="tooltipDislike" |
76 | placement="bottom auto" | ||
75 | > | 77 | > |
76 | <my-global-icon iconName="dislike"></my-global-icon> | 78 | <my-global-icon iconName="dislike"></my-global-icon> |
77 | <span *ngIf="video.dislikes" class="count">{{ video.dislikes }}</span> | 79 | <span *ngIf="video.dislikes" class="count">{{ video.dislikes }}</span> |
78 | </div> | 80 | </div> |
79 | 81 | ||
80 | <div *ngIf="video.support" (click)="showSupportModal()" class="action-button"> | 82 | <div *ngIf="video.support" (click)="showSupportModal()" class="action-button" |
83 | [ngbTooltip]="tooltipSupport" | ||
84 | placement="bottom auto" | ||
85 | > | ||
81 | <my-global-icon iconName="heart"></my-global-icon> | 86 | <my-global-icon iconName="heart"></my-global-icon> |
82 | <span class="icon-text" i18n>Support</span> | 87 | <span class="icon-text" i18n>Support</span> |
83 | </div> | 88 | </div> |
@@ -90,6 +95,8 @@ | |||
90 | <div | 95 | <div |
91 | class="action-dropdown" ngbDropdown placement="top" role="button" autoClose="outside" | 96 | class="action-dropdown" ngbDropdown placement="top" role="button" autoClose="outside" |
92 | *ngIf="isUserLoggedIn()" (openChange)="addContent.openChange($event)" | 97 | *ngIf="isUserLoggedIn()" (openChange)="addContent.openChange($event)" |
98 | [ngbTooltip]="tooltipSaveToPlaylist" | ||
99 | placement="bottom auto" | ||
93 | > | 100 | > |
94 | <div class="action-button action-button-save" ngbDropdownToggle role="button"> | 101 | <div class="action-button action-button-save" ngbDropdownToggle role="button"> |
95 | <my-global-icon iconName="playlist-add"></my-global-icon> | 102 | <my-global-icon iconName="playlist-add"></my-global-icon> |
@@ -102,7 +109,7 @@ | |||
102 | </div> | 109 | </div> |
103 | 110 | ||
104 | <my-video-actions-dropdown | 111 | <my-video-actions-dropdown |
105 | placement="top" buttonDirection="horizontal" [buttonStyled]="true" [video]="video" | 112 | placement="top auto" buttonDirection="horizontal" [buttonStyled]="true" [video]="video" |
106 | (videoRemoved)="onVideoRemoved()" (modalOpened)="onModalOpened()" | 113 | (videoRemoved)="onVideoRemoved()" (modalOpened)="onModalOpened()" |
107 | ></my-video-actions-dropdown> | 114 | ></my-video-actions-dropdown> |
108 | </div> | 115 | </div> |
@@ -131,9 +138,8 @@ | |||
131 | 138 | ||
132 | <div class="pt-3 border-top video-info-channel"> | 139 | <div class="pt-3 border-top video-info-channel"> |
133 | <a [routerLink]="[ '/video-channels', video.byVideoChannel ]" i18n-title title="Go the channel page"> | 140 | <a [routerLink]="[ '/video-channels', video.byVideoChannel ]" i18n-title title="Go the channel page"> |
134 | {{ video.channel.displayName }} | ||
135 | |||
136 | <img [src]="video.videoChannelAvatarUrl" alt="Video channel avatar" /> | 141 | <img [src]="video.videoChannelAvatarUrl" alt="Video channel avatar" /> |
142 | {{ video.channel.displayName }} | ||
137 | </a> | 143 | </a> |
138 | 144 | ||
139 | <my-subscribe-button #subscribeButton [videoChannel]="video.channel" size="small"></my-subscribe-button> | 145 | <my-subscribe-button #subscribeButton [videoChannel]="video.channel" size="small"></my-subscribe-button> |
@@ -141,15 +147,15 @@ | |||
141 | 147 | ||
142 | <div class="video-info-by"> | 148 | <div class="video-info-by"> |
143 | <a [routerLink]="[ '/accounts', video.byAccount ]" i18n-title title="Go to the account page"> | 149 | <a [routerLink]="[ '/accounts', video.byAccount ]" i18n-title title="Go to the account page"> |
144 | <span i18n>By {{ video.byAccount }}</span> | ||
145 | <img [src]="video.accountAvatarUrl" alt="Account avatar" /> | 150 | <img [src]="video.accountAvatarUrl" alt="Account avatar" /> |
151 | <span i18n>By {{ video.byAccount }}</span> | ||
146 | </a> | 152 | </a> |
147 | </div> | 153 | </div> |
148 | </div> | 154 | </div> |
149 | 155 | ||
150 | </div> | 156 | </div> |
151 | 157 | ||
152 | <div class="video-info-description"> | 158 | <div class="video-info-description ml-4"> |
153 | <div class="video-info-description-html" [innerHTML]="videoHTMLDescription"></div> | 159 | <div class="video-info-description-html" [innerHTML]="videoHTMLDescription"></div> |
154 | 160 | ||
155 | <div class="video-info-description-more" *ngIf="completeDescriptionShown === false && video.description?.length >= 250" (click)="showMoreDescription()"> | 161 | <div class="video-info-description-more" *ngIf="completeDescriptionShown === false && video.description?.length >= 250" (click)="showMoreDescription()"> |
@@ -164,7 +170,7 @@ | |||
164 | </div> | 170 | </div> |
165 | </div> | 171 | </div> |
166 | 172 | ||
167 | <div class="video-attributes"> | 173 | <div class="video-attributes mb-3 ml-4"> |
168 | <div class="video-attribute"> | 174 | <div class="video-attribute"> |
169 | <span i18n class="video-attribute-label">Privacy</span> | 175 | <span i18n class="video-attribute-label">Privacy</span> |
170 | <span class="video-attribute-value">{{ video.privacy.label }}</span> | 176 | <span class="video-attribute-value">{{ video.privacy.label }}</span> |
@@ -211,7 +217,7 @@ | |||
211 | </div> | 217 | </div> |
212 | </div> | 218 | </div> |
213 | 219 | ||
214 | <my-video-comments [video]="video" [user]="user"></my-video-comments> | 220 | <my-video-comments class="border-top" [video]="video" [user]="user"></my-video-comments> |
215 | </div> | 221 | </div> |
216 | 222 | ||
217 | <my-recommended-videos | 223 | <my-recommended-videos |
diff --git a/client/src/app/videos/+video-watch/video-watch.component.scss b/client/src/app/videos/+video-watch/video-watch.component.scss index 7b134a4dc..314f9849d 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.scss +++ b/client/src/app/videos/+video-watch/video-watch.component.scss | |||
@@ -176,7 +176,7 @@ $player-factor: 1.7; // 16/9 | |||
176 | img { | 176 | img { |
177 | @include avatar(18px); | 177 | @include avatar(18px); |
178 | 178 | ||
179 | margin: -2px 2px 0 5px; | 179 | margin: -2px 5px 0 0; |
180 | } | 180 | } |
181 | } | 181 | } |
182 | 182 | ||
@@ -199,11 +199,14 @@ $player-factor: 1.7; // 16/9 | |||
199 | opacity: 0.8; | 199 | opacity: 0.8; |
200 | } | 200 | } |
201 | 201 | ||
202 | span { | ||
203 | margin-left: 2px; | ||
204 | } | ||
205 | |||
202 | img { | 206 | img { |
203 | @include avatar(18px); | 207 | @include avatar(18px); |
204 | 208 | ||
205 | margin-top: -2px; | 209 | margin: -2px 5px 0 0; |
206 | margin-left: 7px; | ||
207 | } | 210 | } |
208 | } | 211 | } |
209 | 212 | ||
@@ -397,7 +400,7 @@ $player-factor: 1.7; // 16/9 | |||
397 | 400 | ||
398 | .video-miniature { | 401 | .video-miniature { |
399 | display: flex; | 402 | display: flex; |
400 | width: $other-videos-width; | 403 | width: max-content; |
401 | height: 100%; | 404 | height: 100%; |
402 | margin-bottom: 20px; | 405 | margin-bottom: 20px; |
403 | flex-wrap: wrap; | 406 | flex-wrap: wrap; |
diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts index 890b7996f..8378e83b8 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts | |||
@@ -72,6 +72,11 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
72 | remoteServerDown = false | 72 | remoteServerDown = false |
73 | hotkeys: Hotkey[] = [] | 73 | hotkeys: Hotkey[] = [] |
74 | 74 | ||
75 | tooltipLike = '' | ||
76 | tooltipDislike = '' | ||
77 | tooltipSupport = '' | ||
78 | tooltipSaveToPlaylist = '' | ||
79 | |||
75 | private nextVideoUuid = '' | 80 | private nextVideoUuid = '' |
76 | private currentTime: number | 81 | private currentTime: number |
77 | private paramsSub: Subscription | 82 | private paramsSub: Subscription |
@@ -102,7 +107,12 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
102 | private hooks: HooksService, | 107 | private hooks: HooksService, |
103 | private location: PlatformLocation, | 108 | private location: PlatformLocation, |
104 | @Inject(LOCALE_ID) private localeId: string | 109 | @Inject(LOCALE_ID) private localeId: string |
105 | ) {} | 110 | ) { |
111 | this.tooltipLike = this.i18n('Like this video') | ||
112 | this.tooltipDislike = this.i18n('Dislike this video') | ||
113 | this.tooltipSupport = this.i18n('Support options for this video') | ||
114 | this.tooltipSaveToPlaylist = this.i18n('Save to playlist') | ||
115 | } | ||
106 | 116 | ||
107 | get user () { | 117 | get user () { |
108 | return this.authService.getUser() | 118 | return this.authService.getUser() |