diff --git a/client/src/app/+admin/moderation/moderation.component.scss b/client/src/app/+admin/moderation/moderation.component.scss
index 13b019c5b..89e9b47d3 100644
--- a/client/src/app/+admin/moderation/moderation.component.scss
+++ b/client/src/app/+admin/moderation/moderation.component.scss
@@ -8,18 +8,35 @@
.moderation-expanded-label {
font-weight: $font-semibold;
- min-width: 200px;
display: inline-block;
vertical-align: top;
+ text-align: right;
}
.moderation-expanded-text {
display: inline-block;
+ word-wrap: break-word;
+
+ ::ng-deep p:last-child {
+ margin-bottom: 0px !important;
+ }
}
-.moderation-expanded {
- word-wrap: break-word;
- overflow: visible !important;
- text-overflow: unset !important;
- white-space: unset !important;
+.screenratio {
+ position: relative;
+ width: 100%;
+ height: 0;
+ padding-bottom: 56%;
+
+ ::ng-deep iframe {
+ position: absolute;
+ width: 100% !important;
+ height: 100% !important;
+ left: 0;
+ top: 0;
+ }
+}
+
+.chip {
+ @include chip;
}
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
index cf7b61d2a..155d10dda 100644
--- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
+++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
@@ -24,8 +24,19 @@
-
- {{ createByString(videoAbuse.reporterAccount) }}
+
+
+
+
+ {{ videoAbuse.reporterAccount.displayName }}
+ {{ createByString(videoAbuse.reporterAccount) }}
+
+
|
@@ -50,14 +61,22 @@
-
-
- Reason:
-
-
-
- Moderation comment:
-
+
+
+
+
+ Reason:
+
+
+
+ Note:
+
+
+
+
+
|
|
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
index 2d991aae9..b135792a7 100644
--- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
+++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
@@ -10,6 +10,10 @@ import { ConfirmService } from '../../../core/index'
import { ModerationCommentModalComponent } from './moderation-comment-modal.component'
import { Video } from '../../../shared/video/video.model'
import { MarkdownService } from '@app/shared/renderer'
+import { Actor } from '@app/shared/actor/actor.model'
+import { buildVideoLink, buildVideoEmbed } from 'src/assets/player/utils'
+import { getAbsoluteAPIUrl } from '@app/shared/misc/utils'
+import { DomSanitizer } from '@angular/platform-browser'
@Component({
selector: 'my-video-abuse-list',
@@ -32,7 +36,8 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
private videoAbuseService: VideoAbuseService,
private confirmService: ConfirmService,
private i18n: I18n,
- private markdownRenderer: MarkdownService
+ private markdownRenderer: MarkdownService,
+ private sanitizer: DomSanitizer
) {
super()
@@ -42,8 +47,14 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
handler: videoAbuse => this.removeVideoAbuse(videoAbuse)
},
{
- label: this.i18n('Update moderation comment'),
- handler: videoAbuse => this.openModerationCommentModal(videoAbuse)
+ label: this.i18n('Add note'),
+ handler: videoAbuse => this.openModerationCommentModal(videoAbuse),
+ isDisplayed: videoAbuse => !videoAbuse.moderationComment
+ },
+ {
+ label: this.i18n('Update note'),
+ handler: videoAbuse => this.openModerationCommentModal(videoAbuse),
+ isDisplayed: videoAbuse => !!videoAbuse.moderationComment
},
{
label: this.i18n('Mark as accepted'),
@@ -90,6 +101,19 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
return Video.buildClientUrl(videoAbuse.video.uuid)
}
+ getVideoEmbed (videoAbuse: VideoAbuse) {
+ const absoluteAPIUrl = 'http://localhost:9000' || getAbsoluteAPIUrl()
+ const embedUrl = buildVideoLink({
+ baseUrl: absoluteAPIUrl + '/videos/embed/' + videoAbuse.video.uuid,
+ warningTitle: false
+ })
+ return buildVideoEmbed(embedUrl)
+ }
+
+ switchToDefaultAvatar ($event: Event) {
+ ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL()
+ }
+
async removeVideoAbuse (videoAbuse: VideoAbuse) {
const res = await this.confirmService.confirm(this.i18n('Do you really want to delete this abuse report?'), this.i18n('Delete'))
if (res === false) return
@@ -125,7 +149,8 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
for (const abuse of this.videoAbuses) {
Object.assign(abuse, {
reasonHtml: await this.toHtml(abuse.reason),
- moderationCommentHtml: await this.toHtml(abuse.moderationComment)
+ moderationCommentHtml: await this.toHtml(abuse.moderationComment),
+ embedHtml: this.sanitizer.bypassSecurityTrustHtml(this.getVideoEmbed(abuse))
})
}
diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
index a39e7639e..320172e37 100644
--- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
+++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
@@ -42,9 +42,9 @@
-
- Blacklist reason:
-
+ |
+ Blacklist reason:
+
|
diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html
index 15bdb6398..e9ff61283 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.html
+++ b/client/src/app/+admin/users/user-list/user-list.component.html
@@ -51,19 +51,30 @@
-
+ |
|
-
+ |
|
-
- {{ user.username }}
+
+
+
+
+ {{ user.account.displayName }}
+ {{ user.username }}
+
+
(banned)
|
diff --git a/client/src/app/+admin/users/user-list/user-list.component.scss b/client/src/app/+admin/users/user-list/user-list.component.scss
index 40f08027f..99b22aaea 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.scss
+++ b/client/src/app/+admin/users/user-list/user-list.component.scss
@@ -29,3 +29,7 @@ p-tableCheckbox {
position: relative;
top: -2.5px;
}
+
+.chip {
+ @include chip;
+}
diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts
index 0de123e93..667a0e1fd 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.ts
+++ b/client/src/app/+admin/users/user-list/user-list.component.ts
@@ -7,6 +7,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
import { ServerConfig, User } from '../../../../../../shared'
import { UserBanModalComponent } from '@app/shared/moderation'
import { DropdownAction } from '@app/shared/buttons/action-dropdown.component'
+import { Actor } from '@app/shared/actor/actor.model'
@Component({
selector: 'my-user-list',
@@ -105,6 +106,10 @@ export class UserListComponent extends RestTable implements OnInit {
this.loadData()
}
+ switchToDefaultAvatar ($event: Event) {
+ ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL()
+ }
+
async unbanUsers (users: User[]) {
const message = this.i18n('Do you really want to unban {{num}} users?', { num: users.length })
diff --git a/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts b/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts
index 153fc0127..75d6d8acd 100644
--- a/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts
+++ b/client/src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts
@@ -56,7 +56,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
display: false,
ticks: {
min: Math.max(0, this.videoChannelsMinimumDailyViews - (3 * this.videoChannelsMaximumDailyViews / 100)),
- max: this.videoChannelsMaximumDailyViews
+ max: Math.max(1, this.videoChannelsMaximumDailyViews)
}
}]
},
diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss
index 975072637..3c420f547 100644
--- a/client/src/sass/include/_mixins.scss
+++ b/client/src/sass/include/_mixins.scss
@@ -796,3 +796,57 @@
}
}
}
+
+@mixin chip {
+ $avatar-height: 1.2rem;
+
+ align-items: center;
+ border-radius: 5rem;
+ display: inline-flex;
+ font-size: 90%;
+ color: var(--mainForegroundColor);
+ height: $avatar-height;
+ line-height: .8rem;
+ margin: .1rem;
+ max-width: 320px;
+ overflow: hidden;
+ padding: .2rem .4rem;
+ text-decoration: none;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+ white-space: nowrap;
+
+ .avatar {
+ margin-left: -.4rem;
+ margin-right: .2rem;
+ height: $avatar-height;
+ width: $avatar-height;
+
+ border-radius: 50%;
+ display: inline-block;
+ line-height: 1.25;
+ position: relative;
+ vertical-align: middle;
+ }
+
+ &.two-lines {
+ $avatar-height: 1.8rem;
+
+ height: $avatar-height;
+
+ .avatar {
+ height: $avatar-height;
+ width: $avatar-height;
+ }
+
+ div {
+ display: flex;
+ flex-direction: column;
+ font-size: 80%;
+ height: $avatar-height;
+ margin-left: .1rem;
+ margin-right: .1rem;
+ justify-content: center;
+ }
+ }
+}