diff --git a/proxy.conf.json b/proxy.conf.json index 86e0c8f7a51a795c65c599fc11653a4008994b31..64aac1fae4c1ba022285310c6df4fadf402edbd7 100644 --- a/proxy.conf.json +++ b/proxy.conf.json @@ -15,6 +15,14 @@ }, "logLevel": "debug" }, + "/api/bonustoken": { + "target": "http://localhost:8088", + "secure": false, + "pathRewrite": { + "^/api": "" + }, + "logLevel": "debug" + }, "/api/settings": { "target": "http://localhost:8088", "secure": false, diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 75d38da8e968e9955baa865528047cc149bf2a2f..7720c73aca2fd1f54c9c2cc65c12b655f9825028 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -41,6 +41,7 @@ import { DemoVideoComponent } from './components/home/_dialogs/demo-video/demo-v import { HomeCreatorPageComponent } from './components/home/home-creator-page/home-creator-page.component'; import { HomeParticipantPageComponent } from './components/home/home-participant-page/home-participant-page.component'; import { CommentSettingsService } from './services/http/comment-settings.service'; +import { BonusTokenService } from './services/http/bonus-token.service'; import { ModeratorModule } from './components/moderator/moderator.module'; import { ImprintComponent } from './components/home/_dialogs/imprint/imprint.component'; import { DataProtectionComponent } from './components/home/_dialogs/data-protection/data-protection.component'; @@ -150,6 +151,7 @@ export function initializeApp(appConfig: AppConfig) { VoteService, ModeratorService, CommentSettingsService, + BonusTokenService, WsConnectorService, { provide: MatDialogRef, diff --git a/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.html b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0bf87b73ce8ab524580ed75266029ba3ea56fd35 --- /dev/null +++ b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.html @@ -0,0 +1,9 @@ +<div mat-dialog-content> + <h1>{{'room-page.bonus-token-header' | translate }}</h1> + <mat-divider></mat-divider> + <div fxLayout="row" *ngFor="let bonusToken of bonusTokens"> + <h2> + {{bonusToken.token}} + </h2> + </div> +</div> diff --git a/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.scss b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..1ca5302796251bf2d66dd74a6cf6e228464b83ad --- /dev/null +++ b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.scss @@ -0,0 +1,3 @@ +h1,h2,h3,h4,h5,p{ + color: var(--on-surface); +} diff --git a/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.ts b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f270f68dcdd1d977265ab74a954be4eae6f1c59d --- /dev/null +++ b/src/app/components/creator/_dialogs/bonus-token/bonus-token.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from '@angular/core'; +import { BonusTokenService } from '../../../../services/http/bonus-token.service'; +import { BonusToken } from '../../../../models/bonus-token'; + +@Component({ + selector: 'app-bonus-token', + templateUrl: './bonus-token.component.html', + styleUrls: ['./bonus-token.component.scss'] +}) +export class BonusTokenComponent implements OnInit { + roomId: string; + bonusTokens: BonusToken[] = []; + + constructor( + private bonusTokenService: BonusTokenService + ) { + + } + + ngOnInit() { + this.bonusTokenService.getTokensByRoomId(this.roomId).subscribe( list => { + this.bonusTokens = list; + }); + } +} 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 5204e34e3e52c897c9b33ded2463a60352140cdd..a5571f0eb5719c8a5def773dd6c007b8c4ca2852 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 @@ -7,10 +7,12 @@ import { TranslateService } from '@ngx-translate/core'; import { RoomService } from '../../../../services/http/room.service'; import { Router } from '@angular/router'; import { CommentService } from '../../../../services/http/comment.service'; +import { BonusTokenService } from '../../../../services/http/bonus-token.service'; import { CommentSettingsService } from '../../../../services/http/comment-settings.service'; import { DeleteCommentsComponent } from '../delete-comments/delete-comments.component'; import { CommentExportComponent } from '../comment-export/comment-export.component'; import { Room } from '../../../../models/room'; +import { CommentBonusTokenMixin } from '../../../../models/comment-bonus-token-mixin'; import { CommentSettings } from '../../../../models/comment-settings'; import { CommentSettingsDialog } from '../../../../models/comment-settings-dialog'; @@ -22,13 +24,14 @@ import { CommentSettingsDialog } from '../../../../models/comment-settings-dialo export class CommentSettingsComponent implements OnInit { roomId: string; - comments: Comment[]; + comments: CommentBonusTokenMixin[]; commentThreshold = -100; editRoom: Room; settingThreshold = false; enableCommentModeration = false; directSend = true; + constructor( public dialogRef: MatDialogRef<RoomCreatorPageComponent>, public dialog: MatDialog, @@ -38,6 +41,7 @@ export class CommentSettingsComponent implements OnInit { public router: Router, public commentService: CommentService, public commentSettingsService: CommentSettingsService, + private bonusTokenService: BonusTokenService, @Inject(MAT_DIALOG_DATA) public data: any ) { } @@ -93,23 +97,42 @@ export class CommentSettingsComponent implements OnInit { export(delimiter: string, date: string): void { this.commentService.getAckComments(this.roomId) .subscribe(comments => { - this.comments = comments; - const exportComments = JSON.parse(JSON.stringify(this.comments)); - let csv: string; - let valueFields = ''; - const keyFields = ['Frage', 'Zeitstempel', 'Präsentiert', 'Favorit', 'Richtig/Falsch', 'Zugestellt', 'Score', '\r\n']; - exportComments.forEach(element => { - element.body = '"' + element.body.replace(/[\r\n]/g, ' ').replace(/ +/g, ' ').replace(/"/g, '""') + '"'; - valueFields += Object.values(element).slice(3).join(delimiter) + '\r\n'; + this.bonusTokenService.getTokensByRoomId(this.roomId).subscribe( list => { + this.comments = comments.map(comment => { + const commentWithToken: CommentBonusTokenMixin = <CommentBonusTokenMixin>comment; + for (const bt of list) { + if (commentWithToken.creatorId === bt.userId) { + commentWithToken.bonusToken = bt.token; + } + } + return commentWithToken; + }); + const exportComments = JSON.parse(JSON.stringify(this.comments)); + let csv: string; + let valueFields = ''; + const keyFields = [ + 'Frage', + 'Zeitstempel', + 'Präsentiert', + 'Favorit', + 'Richtig/Falsch', + 'Zugestellt', + 'Score', + 'Bonus Token', + '\r\n' + ]; + exportComments.forEach(element => { + element.body = '"' + element.body.replace(/[\r\n]/g, ' ').replace(/ +/g, ' ').replace(/"/g, '""') + '"'; + valueFields += Object.values(element).slice(3).join(delimiter) + '\r\n'; + }); + csv = keyFields + valueFields; + const myBlob = new Blob([csv], { type: 'text/csv' }); + const link = document.createElement('a'); + const fileName = 'comments_' + date + '.csv'; + link.setAttribute('download', fileName); + link.href = window.URL.createObjectURL(myBlob); + link.click(); }); - csv = keyFields + valueFields; - console.log(csv); - const myBlob = new Blob([csv], { type: 'text/csv' }); - const link = document.createElement('a'); - const fileName = 'comments_' + date + '.csv'; - link.setAttribute('download', fileName); - link.href = window.URL.createObjectURL(myBlob); - link.click(); }); } diff --git a/src/app/components/creator/creator.module.ts b/src/app/components/creator/creator.module.ts index 049446dea46f00237b10a7f811c3b77c2431542c..b6ec2e716b7c1a2c85e344ab1f5620fe5eee073a 100644 --- a/src/app/components/creator/creator.module.ts +++ b/src/app/components/creator/creator.module.ts @@ -23,6 +23,7 @@ import { ContentEditComponent } from './_dialogs/content-edit/content-edit.compo import { ContentPresentationComponent } from './content-presentation/content-presentation.component'; import { CommentExportComponent } from './_dialogs/comment-export/comment-export.component'; import { ModeratorsComponent } from './_dialogs/moderators/moderators.component'; +import { BonusTokenComponent } from './_dialogs/bonus-token/bonus-token.component'; import { CommentSettingsComponent } from './_dialogs/comment-settings/comment-settings.component'; import { ModeratorDeleteComponent } from './_dialogs/moderator-delete/moderator-delete.component'; import { DeleteCommentComponent } from './_dialogs/delete-comment/delete-comment.component'; @@ -59,6 +60,7 @@ import { DeleteCommentsComponent } from './_dialogs/delete-comments/delete-comme ContentPresentationComponent, CommentExportComponent, ModeratorsComponent, + BonusTokenComponent, CommentSettingsComponent, ModeratorDeleteComponent, DeleteCommentsComponent, @@ -77,6 +79,7 @@ import { DeleteCommentsComponent } from './_dialogs/delete-comments/delete-comme ContentEditComponent, CommentExportComponent, ModeratorsComponent, + BonusTokenComponent, CommentSettingsComponent, ModeratorDeleteComponent, DeleteCommentsComponent, 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 0c0c5543a6cd1ed6bbfc9ddf0fed4ab884b6b002..f0f4c815087cc77be517c68994ebe2d6bbce2ea3 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 @@ -35,6 +35,10 @@ <mat-icon>gavel</mat-icon> {{ 'room-page.moderators' | translate}} </button> + <button mat-menu-item (click)="showBonusTokenDialog()" aria-labelledby= "person"> + <mat-icon>grade</mat-icon> + {{ 'room-page.bonus-token' | translate}} + </button> </mat-menu> <button id="settings-menu" mat-icon-button class="corner-icons" [matMenuTriggerFor]="settingsMenu" aria-labelledby="settings"> 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 fa6f258398399ad74357c924dd170665b3441f49..a21e930f5e76d8317b134d86634e5ce93794b275 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 @@ -14,6 +14,7 @@ import { TSMap } from 'typescript-map'; import { WsCommentServiceService } from '../../../services/websockets/ws-comment-service.service'; import { CommentService } from '../../../services/http/comment.service'; import { ModeratorsComponent } from '../_dialogs/moderators/moderators.component'; +import { BonusTokenComponent } from '../_dialogs/bonus-token/bonus-token.component'; import { CommentSettingsComponent } from '../_dialogs/comment-settings/comment-settings.component'; import { LiveAnnouncer } from '@angular/cdk/a11y'; import { EventService } from '../../../services/util/event.service'; @@ -202,6 +203,13 @@ export class RoomCreatorPageComponent extends RoomPageComponent implements OnIni dialogRef.componentInstance.roomId = this.room.id; } + showBonusTokenDialog(): void { + const dialogRef = this.dialog.open(BonusTokenComponent, { + width: '400px' + }); + dialogRef.componentInstance.roomId = this.room.id; + } + copyShortId(): void { const selBox = document.createElement('textarea'); selBox.style.position = 'fixed'; diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts index 62f54c8aa1c51ef248f2d440fa4ed1a0dd4fa259..f48f539b34918b74c128cf724318cc5965c8a855 100644 --- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts +++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts @@ -56,7 +56,7 @@ export class CreateCommentComponent implements OnInit { const comment = new Comment(); comment.roomId = localStorage.getItem(`roomId`); comment.body = body; - comment.userId = this.user.id; + comment.creatorId = this.user.id; comment.createdFromLecturer = this.user.role === 1; this.dialogRef.close(comment); } diff --git a/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.html b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6584f5b1de946ac9e3748e70b4b665a5211d10bf --- /dev/null +++ b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.html @@ -0,0 +1,9 @@ +<div mat-dialog-content> + <h1>{{'user-bonus-token-dialog.header' | translate }}</h1> + <mat-divider></mat-divider> + <div fxLayout="row" *ngFor="let bonusToken of bonusTokens"> + <h2> + {{bonusToken.token}} + </h2> + </div> +</div> diff --git a/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.scss b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..1ca5302796251bf2d66dd74a6cf6e228464b83ad --- /dev/null +++ b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.scss @@ -0,0 +1,3 @@ +h1,h2,h3,h4,h5,p{ + color: var(--on-surface); +} diff --git a/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.ts b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e9cab7ee728e1424e830fb68aa58f49d3133843e --- /dev/null +++ b/src/app/components/shared/_dialogs/user-bonus-token/user-bonus-token.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from '@angular/core'; +import { BonusTokenService } from '../../../../services/http/bonus-token.service'; +import { BonusToken } from '../../../../models/bonus-token'; + +@Component({ + selector: 'app-user-bonus-token', + templateUrl: './user-bonus-token.component.html', + styleUrls: ['./user-bonus-token.component.scss'] +}) +export class UserBonusTokenComponent implements OnInit { + userId: string; + bonusTokens: BonusToken[] = []; + + constructor( + private bonusTokenService: BonusTokenService + ) { + + } + + ngOnInit() { + this.bonusTokenService.getTokensByUserId(this.userId).subscribe( list => { + this.bonusTokens = list; + }); + } +} diff --git a/src/app/components/shared/comment-list/comment-list.component.ts b/src/app/components/shared/comment-list/comment-list.component.ts index 45bf1a4bc90443258026753bf51968a52d9e2c24..d24eb3271adc0b8eb4a059c1aafd0065071fa553 100644 --- a/src/app/components/shared/comment-list/comment-list.component.ts +++ b/src/app/components/shared/comment-list/comment-list.component.ts @@ -194,6 +194,12 @@ export class CommentListComponent implements OnInit { break; case this.favorite: this.comments[i].favorite = <boolean>value; + console.log(this.comments[i]); + if (this.user.id === this.comments[i].creatorId && <boolean>value) { + this.translateService.get('comment-list.comment-got-favorited').subscribe(ret => { + this.notificationService.show(ret); + }); + } break; case 'score': this.comments[i].score = <number>value; diff --git a/src/app/components/shared/header/header.component.html b/src/app/components/shared/header/header.component.html index 2787fecc6b79c305f1a721693e403231ccc366c1..29c3faa3c7a14304a28900e8c76ee85df985f34f 100644 --- a/src/app/components/shared/header/header.component.html +++ b/src/app/components/shared/header/header.component.html @@ -34,6 +34,10 @@ <span *ngIf="!user.isGuest">{{'header.my-sessions' | translate}}</span> <span *ngIf="user.isGuest" svgIcon="meeting_room">{{'header.visited-sessions' | translate}}</span> </button> + <button mat-menu-item *ngIf="user" (click)="openUserBonusTokenDialog()"> + <mat-icon color="warn">grade</mat-icon> + <span>{{'header.user-bonus-token' | translate}}</span> + </button> <button mat-menu-item *ngIf="user && !user.isGuest" (click)="openDeleteUserDialog()"> <mat-icon color="warn">delete</mat-icon> <span>{{'header.delete-account' | translate}}</span> diff --git a/src/app/components/shared/header/header.component.ts b/src/app/components/shared/header/header.component.ts index 9ebd8deabae25f21d07ef6dc6e8eae502efd3c19..16ad1a1fce8799c76f6c50e85b4c63241d7fac46 100644 --- a/src/app/components/shared/header/header.component.ts +++ b/src/app/components/shared/header/header.component.ts @@ -15,6 +15,7 @@ import { AppComponent } from '../../../app.component'; import { Rescale } from '../../../models/rescale'; import { KeyboardUtils } from '../../../utils/keyboard'; import { KeyboardKey } from '../../../utils/keyboard/keys'; +import { UserBonusTokenComponent } from '../_dialogs/user-bonus-token/user-bonus-token.component'; @Component({ selector: 'app-header', @@ -151,6 +152,13 @@ export class HeaderComponent implements OnInit { }); } + openUserBonusTokenDialog() { + const dialogRef = this.dialog.open(UserBonusTokenComponent, { + width: '600px' + }); + dialogRef.componentInstance.userId = this.user.id; + } + cookiesDisabled(): boolean { return localStorage.getItem('cookieAccepted') === 'false'; } diff --git a/src/app/components/shared/shared.module.ts b/src/app/components/shared/shared.module.ts index 215e162dc5b3f7945410fe3b26c3f9927776a885..b35a47dba07aca62db06b77f0385f6637b7bf0fa 100644 --- a/src/app/components/shared/shared.module.ts +++ b/src/app/components/shared/shared.module.ts @@ -19,6 +19,7 @@ import { ChartsModule } from 'ng2-charts'; import { StatisticComponent } from './statistic/statistic.component'; import { RoomJoinComponent } from './room-join/room-join.component'; import { RoomCreateComponent } from './_dialogs/room-create/room-create.component'; +import { UserBonusTokenComponent } from './_dialogs/user-bonus-token/user-bonus-token.component'; import { LoginComponent } from './login/login.component'; import { StatisticHelpComponent } from './_dialogs/statistic-help/statistic-help.component'; import { CommentComponent } from './comment/comment.component'; @@ -54,6 +55,7 @@ import { MatRippleModule } from '@angular/material'; ListStatisticComponent, StatisticComponent, RoomCreateComponent, + UserBonusTokenComponent, LoginComponent, StatisticHelpComponent, CommentComponent, @@ -88,7 +90,8 @@ import { MatRippleModule } from '@angular/material'; StatisticHelpComponent, CreateCommentComponent, PresentCommentComponent, - DeleteAccountComponent + DeleteAccountComponent, + UserBonusTokenComponent ] }) export class SharedModule { diff --git a/src/app/models/bonus-token.ts b/src/app/models/bonus-token.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c1ac3fd2cb3dada67b59926076f0f22b1205001 --- /dev/null +++ b/src/app/models/bonus-token.ts @@ -0,0 +1,15 @@ +export class BonusToken { + roomId: string; + userId: string; + token: string; + + constructor( + roomId: string, + userId: string, + token: string + ) { + this.roomId = roomId; + this.userId = userId; + this.token = token; + } +} diff --git a/src/app/models/comment-bonus-token-mixin.ts b/src/app/models/comment-bonus-token-mixin.ts new file mode 100644 index 0000000000000000000000000000000000000000..961890a2ca2ce8116ba3e1ee1232a0ccd33dc33d --- /dev/null +++ b/src/app/models/comment-bonus-token-mixin.ts @@ -0,0 +1,5 @@ +import { Comment } from './comment'; + +export class CommentBonusTokenMixin extends Comment { + bonusToken: string; +} diff --git a/src/app/models/comment.ts b/src/app/models/comment.ts index 51308497b63173c3fd82e5b424ddec59f65f36d1..22062ef8c5a170d517121d00b29003c1213e1d28 100644 --- a/src/app/models/comment.ts +++ b/src/app/models/comment.ts @@ -3,7 +3,7 @@ import { CorrectWrong } from './correct-wrong.enum'; export class Comment { id: string; roomId: string; - userId: string; + creatorId: string; revision: string; body: string; read: boolean; @@ -16,7 +16,7 @@ export class Comment { ack: boolean; constructor(roomId: string = '', - userId: string = '', + creatorId: string = '', body: string = '', read: boolean = false, correct: CorrectWrong = CorrectWrong.NULL, @@ -28,7 +28,7 @@ export class Comment { ack: boolean = true) { this.id = ''; this.roomId = roomId; - this.userId = userId; + this.creatorId = creatorId; this.revision = ''; this.body = body; this.read = read; diff --git a/src/app/services/http/bonus-token.service.ts b/src/app/services/http/bonus-token.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e85583249af7624fe545d01be0bef5b2ffa16354 --- /dev/null +++ b/src/app/services/http/bonus-token.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { BonusToken } from '../../models/bonus-token'; +import { catchError, tap } from 'rxjs/operators'; +import { BaseHttpService } from './base-http.service'; + +const httpOptions = { + headers: new HttpHeaders({ 'Content-Type': 'application/json' }) +}; + +@Injectable() +export class BonusTokenService extends BaseHttpService { + private apiUrl = { + base: '/api', + bonustoken: '/bonustoken', + find: '/find' + }; + + constructor(private http: HttpClient) { + super(); + } + + getTokensByRoomId(roomId: string): Observable<BonusToken[]> { + const connectionUrl = `${this.apiUrl.base + this.apiUrl.bonustoken + this.apiUrl.find}`; + return this.http.post<BonusToken[]>(connectionUrl, { + properties: { + roomId: roomId + } + }).pipe( + tap(() => ''), + catchError(this.handleError<BonusToken[]>(`get bonus token by roomid = ${roomId}`)) + ); + } + + getTokensByUserId(userId: string): Observable<BonusToken[]> { + const connectionUrl = `${this.apiUrl.base + this.apiUrl.bonustoken + this.apiUrl.find}`; + return this.http.post<BonusToken[]>(connectionUrl, { + properties: { + userId: userId + } + }).pipe( + tap(() => ''), + catchError(this.handleError<BonusToken[]>(`get bonus token by userId = ${userId}`)) + ); + } +} diff --git a/src/app/services/websockets/ws-comment-service.service.ts b/src/app/services/websockets/ws-comment-service.service.ts index 8694fe84b68c9f2452cdc89fe267f5f7aac03f6d..4333dc7417abfb1793f47a7b1a346fbda628513c 100644 --- a/src/app/services/websockets/ws-comment-service.service.ts +++ b/src/app/services/websockets/ws-comment-service.service.ts @@ -20,7 +20,7 @@ export class WsCommentServiceService { constructor(private wsConnector: WsConnectorService) { } add(comment: Comment): void { - const message = new CreateComment(comment.roomId, comment.userId, comment.body); + const message = new CreateComment(comment.roomId, comment.creatorId, comment.body); this.wsConnector.send(`/queue/comment.command.create`, JSON.stringify(message)); } diff --git a/src/assets/i18n/creator/de.json b/src/assets/i18n/creator/de.json index a6ab5c4157284b65506f923cd5d72f84a88a828d..963dc92333449be586e63a57e675925dfc2b5019 100644 --- a/src/assets/i18n/creator/de.json +++ b/src/assets/i18n/creator/de.json @@ -161,6 +161,8 @@ "a11y-threshold": "Schieberegler zum Einstellen des Schwellenwerts für sichtbare Fragen", "abort": "Abbrechen", "answer-statistics": "Statistiken", + "bonus-token": "Tokens für Bonuspunkte", + "bonus-token-header": "Tokens für Bonuspunkte", "cancel": "Abbrechen", "cancel-description": "Abbrechen", "changes-successful": "Änderungen gespeichert.", diff --git a/src/assets/i18n/creator/en.json b/src/assets/i18n/creator/en.json index 8213a39016821a2453d9aca055f73972feba0e45..3d501f59f634efd176566b1fb1f32485e0db9c4f 100644 --- a/src/assets/i18n/creator/en.json +++ b/src/assets/i18n/creator/en.json @@ -162,6 +162,8 @@ "a11y-threshold": "Slider for setting the threshold for visible questions", "abort": "Abort", "answer-statistics": "Statistics", + "bonus-token": "Tokens for bonus points", + "bonus-token-header": "Tokens for bonus points", "cancel": "Cancel", "cancel-description": "Cancel", "changes-successful": "Successfully updated.", diff --git a/src/assets/i18n/home/de.json b/src/assets/i18n/home/de.json index 8de49a45f45baeaad5095ba68b7dffb055ede5f2..4fe7a1d4bcb84ac317e525236275346ab5cf6f5c 100644 --- a/src/assets/i18n/home/de.json +++ b/src/assets/i18n/home/de.json @@ -59,6 +59,7 @@ "my-sessions": "Meine Sitzungen", "really-delete-account": "Willst du dein Konto mit allen Sitzungen unwiderruflich löschen?", "sure": "Bist du sicher?", + "user-bonus-token": "Zu deinen Bonus Tokens", "visited-sessions": "Besuchte Sitzungen" }, "help": { @@ -220,5 +221,8 @@ "activation-key-input-description": "Gib hier den Aktivierungs-Schlüssel ein, den du per E-Mail zugesendet bekommen hast.", "cancel": "Abbrechen", "cancel-description": "Abbrechen" + }, + "user-bonus-token": { + "header": "Tokens für Bonuspunkte" } } diff --git a/src/assets/i18n/home/en.json b/src/assets/i18n/home/en.json index df04f9c154b1c0c5e1454ec5c1ca19b53c5560f8..7c38513ef3b39a493e481bebfb847865b9779fcb 100644 --- a/src/assets/i18n/home/en.json +++ b/src/assets/i18n/home/en.json @@ -60,6 +60,7 @@ "my-sessions": "My sessions", "really-delete-account": "Do you really want to irrevocably delete your account with the associated sessions?", "sure": "Are you sure?", + "user-bonus-token": "See your bonus tokens", "visited-sessions": "Visited sessions" }, "help": { @@ -222,5 +223,8 @@ "activation-key-input-description": "Enter the activation key that you received by e-mail.", "cancel": "Cancel", "cancel-description": "Cancel" + }, + "user-bonus-token-dialog": { + "header": "Tokens for bonus points" } } diff --git a/src/assets/i18n/participant/de.json b/src/assets/i18n/participant/de.json index 7e9017645d1fc45f5bb0f3e6d8161d0cf72eaf5f..b94578f761cd9698e4397678739bd3649b648154 100644 --- a/src/assets/i18n/participant/de.json +++ b/src/assets/i18n/participant/de.json @@ -28,6 +28,7 @@ "add-comment": "Stell deine Frage!", "pause-comments": "Pausiere den Fragen-Stream", "play-comments": "Starte den Fragen-Stream", + "comment-got-favorited": "Eine Frage von dir wurde favorisiert!", "comment-stream-stopped": "Der Fragen-Stream wurde gestoppt.", "comment-stream-started": "Der Fragen-Stream wurde gestartet.", "comment-sent": "Die Frage wurde veröffentlicht.", diff --git a/src/assets/i18n/participant/en.json b/src/assets/i18n/participant/en.json index bd5132264bf36261ef94a6fb4ef82057c140b992..cd14fcfe3172c88dd8d2582e313caefb8bd9ab4d 100644 --- a/src/assets/i18n/participant/en.json +++ b/src/assets/i18n/participant/en.json @@ -28,6 +28,7 @@ "add-comment": "Ask a question!", "pause-comments": "Pause the question stream", "play-comments": "Start the question stream", + "comment-got-favorited": "A question of yours got favorited!", "comment-stream-stopped": "Question stream has been stopped.", "comment-stream-started": "Question stream has been started.", "comment-sent": "The question has been published.",