From 3add15e1cb7a3b83941ddff88fb2b9402a03e861 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Mau=C3=9F?= <lukas.mauss@mni.thm.de>
Date: Sun, 7 Jul 2019 21:12:31 +0200
Subject: [PATCH] Add submit dialog for removing moderators

---
 .../delete-comment.component.html             |  1 +
 .../moderator-delete.component.html           | 12 +++++++++
 .../moderator-delete.component.scss           | 23 +++++++++++++++++
 .../moderator-delete.component.spec.ts        | 25 +++++++++++++++++++
 .../moderator-delete.component.ts             | 24 ++++++++++++++++++
 .../moderators/moderators.component.html      |  2 +-
 .../moderators/moderators.component.ts        | 15 +++++++++++
 .../room-delete/room-delete.component.html    |  1 +
 src/app/components/creator/creator.module.ts  |  7 ++++--
 src/assets/i18n/creator/de.json               |  1 +
 src/assets/i18n/creator/en.json               |  1 +
 11 files changed, 109 insertions(+), 3 deletions(-)
 create mode 100644 src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.html
 create mode 100644 src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.scss
 create mode 100644 src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.spec.ts
 create mode 100644 src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.ts

diff --git a/src/app/components/creator/_dialogs/delete-comment/delete-comment.component.html b/src/app/components/creator/_dialogs/delete-comment/delete-comment.component.html
index 9b81130f0..3ad5c141c 100644
--- a/src/app/components/creator/_dialogs/delete-comment/delete-comment.component.html
+++ b/src/app/components/creator/_dialogs/delete-comment/delete-comment.component.html
@@ -1,4 +1,5 @@
 <h3>{{ 'room-page.sure' | translate }}</h3>
+<mat-divider></mat-divider>
 <p>{{ 'room-page.really-delete-comments' | translate }}</p>
 <div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="10px">
   <button mat-raised-button class="abort" (click)="close('abort')">
diff --git a/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.html b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.html
new file mode 100644
index 000000000..626d7d52c
--- /dev/null
+++ b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.html
@@ -0,0 +1,12 @@
+<h2>{{ 'room-page.sure' | translate }}</h2>
+<mat-divider></mat-divider>
+<h3>{{ 'room-page.really-remove-moderator' | translate }}</h3>
+<p>{{loginId}}</p>
+<div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="10px">
+  <button mat-raised-button class="abort" (click)="close('abort')">
+    {{ 'content.abort' | translate }}
+  </button>
+  <button mat-raised-button class="delete" (click)="close('delete')">
+    {{ 'content.delete' | translate }}
+  </button>
+</div>
diff --git a/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.scss b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.scss
new file mode 100644
index 000000000..9b78e8b53
--- /dev/null
+++ b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.scss
@@ -0,0 +1,23 @@
+h2 {
+  color: var(--on-surface);
+}
+
+h3 {
+  color: var(--on-surface);
+}
+
+p {
+  color: var(--on-surface);
+  font-weight: bold;
+  text-align: center;
+}
+
+.delete {
+  background-color: var(--red);
+  color: var(--on-secondary);
+}
+
+.abort {
+  background-color: var(--secondary);
+  color: var(--on-secondary);
+}
diff --git a/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.spec.ts b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.spec.ts
new file mode 100644
index 000000000..93d29ea73
--- /dev/null
+++ b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.spec.ts
@@ -0,0 +1,25 @@
+/*import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ModeratorDeleteComponent } from './moderator-delete.component';
+
+describe('ModeratorDeleteComponent', () => {
+  let component: ModeratorDeleteComponent;
+  let fixture: ComponentFixture<ModeratorDeleteComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ModeratorDeleteComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ModeratorDeleteComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});*/
diff --git a/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.ts b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.ts
new file mode 100644
index 000000000..3cabf6917
--- /dev/null
+++ b/src/app/components/creator/_dialogs/moderator-delete/moderator-delete.component.ts
@@ -0,0 +1,24 @@
+import { Component, Inject, OnInit } from '@angular/core';
+import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
+import { ModeratorsComponent } from '../moderators/moderators.component';
+
+@Component({
+  selector: 'app-moderator-delete',
+  templateUrl: './moderator-delete.component.html',
+  styleUrls: ['./moderator-delete.component.scss']
+})
+export class ModeratorDeleteComponent implements OnInit {
+
+  loginId: string;
+
+  constructor(public dialogRef: MatDialogRef<ModeratorsComponent>,
+              @Inject(MAT_DIALOG_DATA) public data: any) { }
+
+  ngOnInit() {
+  }
+
+  close(type: string): void {
+    this.dialogRef.close(type);
+  }
+
+}
diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.html b/src/app/components/creator/_dialogs/moderators/moderators.component.html
index 1d27bca5a..87b47dc8d 100644
--- a/src/app/components/creator/_dialogs/moderators/moderators.component.html
+++ b/src/app/components/creator/_dialogs/moderators/moderators.component.html
@@ -18,7 +18,7 @@
         {{i+1}}. {{moderator.loginId}}
       </h3>
       <span class="fill-remaining-space"></span>
-      <button mat-icon-button class="close" (click)="removeModerator(moderator.userId, i)">
+      <button mat-icon-button class="close" (click)="openDeleteRoomDialog(moderator)">
         <mat-icon class="close-icon">close</mat-icon>
       </button>
     </div>
diff --git a/src/app/components/creator/_dialogs/moderators/moderators.component.ts b/src/app/components/creator/_dialogs/moderators/moderators.component.ts
index 16343b9c4..e506335aa 100644
--- a/src/app/components/creator/_dialogs/moderators/moderators.component.ts
+++ b/src/app/components/creator/_dialogs/moderators/moderators.component.ts
@@ -6,6 +6,8 @@ import { ModeratorService } from '../../../../services/http/moderator.service';
 import { RoomCreatorPageComponent } from '../../room-creator-page/room-creator-page.component';
 import { LanguageService } from '../../../../services/util/language.service';
 import { Moderator } from '../../../../models/moderator';
+import { RoomDeleteComponent } from '../room-delete/room-delete.component';
+import { ModeratorDeleteComponent } from '../moderator-delete/moderator-delete.component';
 
 @Component({
   selector: 'app-moderators',
@@ -62,6 +64,19 @@ export class ModeratorsComponent implements OnInit {
     });
   }
 
+  openDeleteRoomDialog(moderator: Moderator): void {
+    const dialogRef = this.dialog.open(ModeratorDeleteComponent, {
+      width: '400px'
+    });
+    dialogRef.componentInstance.loginId = moderator.loginId;
+    dialogRef.afterClosed()
+      .subscribe(result => {
+        if (result === 'delete') {
+          this.removeModerator(moderator.userId, this.moderators.indexOf(moderator));
+        }
+      });
+  }
+
   removeModerator(userId: string, index: number) {
     this.moderatorService.delete(this.roomId, userId).subscribe();
     this.translationService.get('room-page.moderator-removed').subscribe(msg => {
diff --git a/src/app/components/creator/_dialogs/room-delete/room-delete.component.html b/src/app/components/creator/_dialogs/room-delete/room-delete.component.html
index 0edb8b68e..f4ea308d4 100644
--- a/src/app/components/creator/_dialogs/room-delete/room-delete.component.html
+++ b/src/app/components/creator/_dialogs/room-delete/room-delete.component.html
@@ -1,4 +1,5 @@
 <h3>{{ 'room-page.sure' | translate }}</h3>
+<mat-divider></mat-divider>
 <p>{{ 'room-page.reallySession' | translate}}<strong>{{room.name}}</strong>{{ 'room-page.really2' | translate}}</p>
 <div fxLayout="row" fxLayoutAlign="center" fxLayoutGap="10px">
   <button mat-raised-button class="abort" (click)="onNoClick()">
diff --git a/src/app/components/creator/creator.module.ts b/src/app/components/creator/creator.module.ts
index d1e478d51..1f37d69db 100644
--- a/src/app/components/creator/creator.module.ts
+++ b/src/app/components/creator/creator.module.ts
@@ -24,6 +24,7 @@ import { ContentPresentationComponent } from './content-presentation/content-pre
 import { CommentExportComponent } from './_dialogs/comment-export/comment-export.component';
 import { ModeratorsComponent } from './_dialogs/moderators/moderators.component';
 import { CommentSettingsComponent } from './_dialogs/comment-settings/comment-settings.component';
+import { ModeratorDeleteComponent } from './_dialogs/moderator-delete/moderator-delete.component';
 
 @NgModule({
   imports: [
@@ -56,7 +57,8 @@ import { CommentSettingsComponent } from './_dialogs/comment-settings/comment-se
     ContentPresentationComponent,
     CommentExportComponent,
     ModeratorsComponent,
-    CommentSettingsComponent
+    CommentSettingsComponent,
+    ModeratorDeleteComponent
   ],
   entryComponents: [
     RoomDeleteComponent,
@@ -70,7 +72,8 @@ import { CommentSettingsComponent } from './_dialogs/comment-settings/comment-se
     ContentEditComponent,
     CommentExportComponent,
     ModeratorsComponent,
-    CommentSettingsComponent
+    CommentSettingsComponent,
+    ModeratorDeleteComponent
   ]
 })
 export class CreatorModule {
diff --git a/src/assets/i18n/creator/de.json b/src/assets/i18n/creator/de.json
index 132e5ee12..01aa691fe 100644
--- a/src/assets/i18n/creator/de.json
+++ b/src/assets/i18n/creator/de.json
@@ -28,6 +28,7 @@
     "moderator-not-found": "Kein Benutzer mit dieser E-Mail gefunden.",
     "moderator-added": "Moderator wurde hinzugefügt.",
     "moderator-removed": "Moderator wurde entfernt.",
+    "really-remove-moderator": "Wollen sie folgenden Moderator wirklich entfernen?",
     "session-settings": "Session-Verwaltung",
     "general": "Allgemein",
     "threshold": "Schwellenwert für sichtbare Kommentare: ",
diff --git a/src/assets/i18n/creator/en.json b/src/assets/i18n/creator/en.json
index f82d1155b..9a9a12dc4 100644
--- a/src/assets/i18n/creator/en.json
+++ b/src/assets/i18n/creator/en.json
@@ -28,6 +28,7 @@
     "moderator-not-found": "No user was found with this E-Mail.",
     "moderator-added": "Moderator was added.",
     "moderator-removed": "Moderator has been removed.",
+    "really-remove-moderator": "Do you really want to remove the following moderator?",
     "session-settings": "Session administration",
     "general": "General",
     "threshold": "Threshold for visible comments: ",
-- 
GitLab