diff --git a/src/app/components/creator/_dialogs/comment-settings/comment-settings.component.ts b/src/app/components/creator/_dialogs/comment-settings/comment-settings.component.ts index 3e4d7a1fa12f7180582e0d745977c08d81d55d57..50d2da5cae3fa560365dedf03134eef4fe89ee7f 100644 --- a/src/app/components/creator/_dialogs/comment-settings/comment-settings.component.ts +++ b/src/app/components/creator/_dialogs/comment-settings/comment-settings.component.ts @@ -23,7 +23,7 @@ export class CommentSettingsComponent implements OnInit { roomId: string; comments: Comment[]; - commentThreshold = -10; + commentThreshold = -50; editRoom: Room; settingThreshold = false; enableCommentModeration = false; diff --git a/src/app/components/creator/room-creator-page/room-creator-page.component.html b/src/app/components/creator/room-creator-page/room-creator-page.component.html index 7c3a322e1f66488f58608a6bb1611038ac929af7..5faa92d3cef593cee5211b2287d4f932d3d601d7 100644 --- a/src/app/components/creator/room-creator-page/room-creator-page.component.html +++ b/src/app/components/creator/room-creator-page/room-creator-page.component.html @@ -10,9 +10,9 @@ <h2>{{ room.name }}</h2> </mat-card-title> <mat-card-subtitle fxLayoutAlign="center"> - <h3> + <span class="room-short-id"> {{ 'room-page.session-id' | translate}}: {{ room.shortId.slice(0, 4) }} {{ room.shortId.slice(4, 8) }} - </h3> + </span> <button id="copy" mat-icon-button (click)="copyShortId()"> <mat-icon class="copy" matTooltip="{{ 'room-page.copy-session-id' | translate}}">cloud_download</mat-icon> </button> diff --git a/src/app/components/creator/room-creator-page/room-creator-page.component.scss b/src/app/components/creator/room-creator-page/room-creator-page.component.scss index 53229158df2d9b02ad0e4fc64c4a3883ec7719c8..11ae898cc3556657ad0565ff1fe67b4336dd1a25 100644 --- a/src/app/components/creator/room-creator-page/room-creator-page.component.scss +++ b/src/app/components/creator/room-creator-page/room-creator-page.component.scss @@ -63,6 +63,13 @@ mat-card-content > :first-child { line-height: 100%!important; } +.room-short-id { + font-size: larger; + font-weight: bold; + color: var(--on-surface)!important; + margin: 5% 5% 0 0; +} + mat-grid-list { margin-bottom: 5px !important; } @@ -95,6 +102,7 @@ mat-card-header { mat-card-title { height: 40%; + min-width: 200px; } mat-card-subtitle { diff --git a/src/app/components/creator/room-creator-page/room-creator-page.component.ts b/src/app/components/creator/room-creator-page/room-creator-page.component.ts index 0a64a29af2e1fd98456184b8afa661ab1dabf61e..76695d3517406530c866df988d809b3e7a197c0f 100644 --- a/src/app/components/creator/room-creator-page/room-creator-page.component.ts +++ b/src/app/components/creator/room-creator-page/room-creator-page.component.ts @@ -28,6 +28,7 @@ export class RoomCreatorPageComponent extends RoomPageComponent implements OnIni updCommentThreshold: number; deviceType = localStorage.getItem('deviceType'); viewModuleCount = 1; + moderatorCommentCounter: number; constructor(protected roomService: RoomService, protected notification: NotificationService, @@ -53,7 +54,11 @@ export class RoomCreatorPageComponent extends RoomPageComponent implements OnIni afterRoomLoadHook() { if (this.moderationEnabled) { this.viewModuleCount = this.viewModuleCount + 1; + this.commentService.countByRoomId(this.room.id, false).subscribe(commentCounter => { + this.moderatorCommentCounter = commentCounter; + }); } + } updateGeneralSettings() { @@ -77,6 +82,7 @@ export class RoomCreatorPageComponent extends RoomPageComponent implements OnIni } this.moderationEnabled = settings.enableModeration; + localStorage.setItem('moderationEnabled', String(this.moderationEnabled)); } resetThreshold(): void { diff --git a/src/app/components/moderator/room-moderator-page/room-moderator-page.component.ts b/src/app/components/moderator/room-moderator-page/room-moderator-page.component.ts index 1374b69277d4f4e86f4f42241870b1f898d996d4..cdcc59889e896c40c065e7f93a2846d298464145 100644 --- a/src/app/components/moderator/room-moderator-page/room-moderator-page.component.ts +++ b/src/app/components/moderator/room-moderator-page/room-moderator-page.component.ts @@ -45,14 +45,14 @@ export class RoomModeratorPageComponent extends RoomPageComponent implements OnI } this.room = room; this.isLoading = false; - this.commentService.countByRoomId(this.room.id, true) - .subscribe(commentCounter => { + this.commentService.countByRoomId(this.room.id, true).subscribe(commentCounter => { this.commentCounter = commentCounter; - }); - - this.commentService.countByRoomId(this.room.id, false).subscribe(commentCounter => { - this.moderatorCommentCounter = commentCounter; }); + if (this.moderationEnabled) { + this.commentService.countByRoomId(this.room.id, false).subscribe(commentCounter => { + this.moderatorCommentCounter = commentCounter; + }); + } this.wsCommentService.getCommentStream(this.room.id).subscribe((message: Message) => { const msg = JSON.parse(message.body); diff --git a/src/app/components/shared/comment/comment.component.html b/src/app/components/shared/comment/comment.component.html index 0ff20ce30497060e19154241cdc7cc1e969deb19..d9724cab53ff89ad62429c5ba60f9d4e8bb26bd3 100644 --- a/src/app/components/shared/comment/comment.component.html +++ b/src/app/components/shared/comment/comment.component.html @@ -31,7 +31,7 @@ matTooltip="{{ 'comment-page.delete' | translate }}">delete </mat-icon> </button> - <button mat-icon-button *ngIf="!isStudent" [disabled]="isStudent" (click)="setAck(comment)"> + <button mat-icon-button *ngIf="!isStudent && moderationEnabled" [disabled]="isStudent" (click)="setAck(comment)"> <mat-icon [ngClass]="{'read-icon': comment.read, 'not-marked' : !comment.read}" matTooltip="{{ 'comment-page.acknowledge' | translate }}">gavel </mat-icon> diff --git a/src/app/components/shared/comment/comment.component.ts b/src/app/components/shared/comment/comment.component.ts index 320e88cc0956997ef20d9624990a68b65799a407..2a1df9eb23177256b9f22d287c6201ec340032bb 100644 --- a/src/app/components/shared/comment/comment.component.ts +++ b/src/app/components/shared/comment/comment.component.ts @@ -44,6 +44,7 @@ export class CommentComponent implements OnInit { hasVoted = 0; language: string; animationState: string; + moderationEnabled: boolean; constructor(protected authenticationService: AuthenticationService, private route: ActivatedRoute, @@ -66,6 +67,7 @@ export class CommentComponent implements OnInit { } this.language = localStorage.getItem('currentLang'); this.translateService.use(this.language); + this.moderationEnabled = (localStorage.getItem('moderationEnabled') === 'true') ? true : false; } startAnimation(state_: any): void { diff --git a/src/app/components/shared/header/header.component.html b/src/app/components/shared/header/header.component.html index b4febe73250f22f90964442aa53b5bc3c8ee07fd..953fc63a533ce4f6c83f87fb8af189be6fb510c0 100644 --- a/src/app/components/shared/header/header.component.html +++ b/src/app/components/shared/header/header.component.html @@ -11,6 +11,16 @@ </h3> <span class="fill-remaining-space" *ngIf="router.url.includes('comments')"></span> + + <span + *ngIf="router.url.includes('comments') && moderationEnabled && deviceType === 'desktop'" + class="moderation-enabled" + fxLayoutAlign="center center" + > + <mat-icon matTooltip="{{ 'header.moderation-enabled' | translate }}"> + gavel + </mat-icon> + </span> <h3 *ngIf="router.url.includes('comments')" fxLayoutAlign="center center"> {{'header.id' | translate}}: {{ shortId.slice(0,4) }} {{ shortId.slice(4,8) }} </h3> diff --git a/src/app/components/shared/header/header.component.scss b/src/app/components/shared/header/header.component.scss index 5cf23c9056cfa8092c16b417c55c5b29b7fe94d8..f9e023037bdaaad38c7b44f041cb95d923788891 100644 --- a/src/app/components/shared/header/header.component.scss +++ b/src/app/components/shared/header/header.component.scss @@ -29,6 +29,13 @@ mat-toolbar { color: var(--light-green); } +.moderation-enabled { + color: var(--on-surface); + margin-left: 5px; + font-size: medium; + font-weight: bold; +} + .color-button { width: 100%; height: 100%; diff --git a/src/app/components/shared/header/header.component.ts b/src/app/components/shared/header/header.component.ts index 751cc79827a5fcfe6beb43ae14e8b361ef6059b1..0ec582d1eccfbe49a785e1940d261cd089eee538 100644 --- a/src/app/components/shared/header/header.component.ts +++ b/src/app/components/shared/header/header.component.ts @@ -22,6 +22,7 @@ export class HeaderComponent implements OnInit { cTime: string; shortId: string; deviceType: string; + moderationEnabled: boolean; constructor(public location: Location, private authenticationService: AuthenticationService, @@ -73,6 +74,7 @@ export class HeaderComponent implements OnInit { }); } }); + this.moderationEnabled = (localStorage.getItem('moderationEnabled') === 'true') ? true : false; } getTime(time: Date) { diff --git a/src/app/components/shared/room-page/room-page.component.ts b/src/app/components/shared/room-page/room-page.component.ts index 7e739e63768dbeeed2a035a9c1a15a7c05a8647f..e515028e40faf4ad914e69fbf150fa70b4bc69c6 100644 --- a/src/app/components/shared/room-page/room-page.component.ts +++ b/src/app/components/shared/room-page/room-page.component.ts @@ -43,8 +43,10 @@ export class RoomPageComponent implements OnInit { if (this.room && this.room.extensions && this.room.extensions['comments']) { if (this.room.extensions['comments'].enableModeration !== null) { this.moderationEnabled = this.room.extensions['comments'].enableModeration; + // ToDo: make room data cache that's available for components that manages data flow and put that there } } + localStorage.setItem('moderationEnabled', String(this.moderationEnabled)); this.commentService.countByRoomId(this.room.id, true) .subscribe(commentCounter => { this.commentCounter = commentCounter; diff --git a/src/assets/i18n/home/de.json b/src/assets/i18n/home/de.json index 5d611b0fd8d5fcd3be50fa1ec791b50d9fed2c98..20fb588e050fa931447d1d8ef3559d67486e847b 100644 --- a/src/assets/i18n/home/de.json +++ b/src/assets/i18n/home/de.json @@ -16,7 +16,8 @@ "dark": "Dunkler Hintergrund", "bright": "Heller Hintergrund", "beamer": "Für den Beamer optimiert (in Arbeit)", - "wai": "Barrierefrei nach WCAG 2.0 (in Arbeit)" + "wai": "Barrierefrei nach WCAG 2.0 (in Arbeit)", + "moderation-enabled": "Moderiert" }, "login-page": { "creator": "Dozent/in", diff --git a/src/assets/i18n/home/en.json b/src/assets/i18n/home/en.json index 1bfb3b5219f620a5d6913dc72eac57f145bf7428..3c70f764d9706190c5774315d97dbfcf79a6f017 100644 --- a/src/assets/i18n/home/en.json +++ b/src/assets/i18n/home/en.json @@ -16,7 +16,8 @@ "dark": "Dark background", "bright": "Bright background", "beamer": "Optimized for the projector (work in progress)", - "wai": "Accessible according to WCAG 2.0 (work in progress)" + "wai": "Accessible according to WCAG 2.0 (work in progress)", + "moderation-enabled": "Moderated" }, "login-page": { "creator": "Professor",