Unsere GitLab-Installation wurde aktualisiert (Informationen zu den Neuerungen).

Update class usage in the html files.

parent 5b881764
Pipeline #10826 passed with stages
in 3 minutes and 10 seconds
This diff is collapsed.
......@@ -12,6 +12,8 @@
"start": "ng serve --host 0.0.0.0 --port 4200 --disable-host-check --aot",
"build:DEV": "ng serve --host 0.0.0.0 --port 4200 --disable-host-check --prod --aot --build-optimizer",
"build:PROD": "ng build --output-path=dist/ --no-sourcemap --prod --aot --build-optimizer",
"build:PROD-STATS": "ng build --output-path=dist/ --no-sourcemap --prod --aot --build-optimizer --stats-json",
"bundle-report": "webpack-bundle-analyzer dist/stats.json",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
......@@ -26,15 +28,15 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^5.0.2",
"@angular/common": "^5.0.2",
"@angular/compiler": "^5.0.2",
"@angular/core": "^5.0.2",
"@angular/forms": "^5.0.2",
"@angular/http": "^5.0.2",
"@angular/platform-browser": "^5.0.2",
"@angular/platform-browser-dynamic": "^5.0.2",
"@angular/router": "^5.0.2",
"@angular/animations": "^5.0.3",
"@angular/common": "^5.0.3",
"@angular/compiler": "^5.0.3",
"@angular/core": "^5.0.3",
"@angular/forms": "^5.0.3",
"@angular/http": "^5.0.3",
"@angular/platform-browser": "^5.0.3",
"@angular/platform-browser-dynamic": "^5.0.3",
"@angular/router": "^5.0.3",
"@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.5",
"@ngx-translate/core": "^8.0.0",
"@ngx-translate/http-loader": "^2.0.0",
......@@ -53,9 +55,9 @@
"zone.js": "^0.8.18"
},
"devDependencies": {
"@angular/cli": "1.5.0",
"@angular/compiler-cli": "^5.0.2",
"@angular/language-service": "^5.0.2",
"@angular/cli": "^1.5.4",
"@angular/compiler-cli": "^5.0.3",
"@angular/language-service": "^5.0.3",
"@types/jasmine": "^2.8.2",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^8.0.53",
......@@ -75,7 +77,7 @@
"protractor": "~5.2.0",
"raw-loader": "^0.5.1",
"rimraf": "^2.6.2",
"sass-loader": "^6.0.6",
"sass-loader": "^6.0.3",
"sw-precache": "^5.2.0",
"ts-node": "~3.3.0",
"tslint": "~5.8.0",
......
......@@ -3,7 +3,9 @@
role="navigation">
<input class="hidden" id="upload-session" type="file" (change)="fileChange($event)" accept="application/json" multiple="multiple"/>
<div *ngFor="let elem of footerElements"
[class]="'footerElement py-sm-2 px-sm-1 justify-content-center justify-content-sm-start ' + (elem.selectable ? elem.isActive ? 'success' : 'error' : '')"
class="footerElement py-sm-2 px-sm-1 justify-content-center justify-content-sm-start"
[class.success]="elem.selectable && elem.isActive"
[class.error]="elem.selectable && !elem.isActive"
[id]="elem.id"
[routerLink]="getLinkTarget(elem)"
[attr.data-intro]="elem.showIntro ? (('region.footer.footer_bar.description.' + elem.id) | translate) : null"
......
......@@ -63,35 +63,45 @@
<div class="modal-body">
<ul class="p-0">
<li>
<i [class]="'fa ' + (connectionService.serverAvailable ? 'fa-check-square-o' : 'fa-square')"></i>
<i class="fa"
[class.fa-check-quare-o]="connectionService.serverAvailable"
[class.fa-quare]="!connectionService.serverAvailable"></i>
<p class="mb-0 d-inline">
<span>Server: </span>
<span>{{'region.header.connection_status.server_status.' + (connectionService.serverAvailable ? 'available' : 'not_available') | translate}}</span>
</p>
</li>
<li>
<i [class]="'fa ' + (connectionService.websocketAvailable ? 'fa-check-square-o' : 'fa-square')"></i>
<i class="fa"
[class.fa-check-quare-o]="connectionService.websocketAvailable"
[class.fa-quare]="!connectionService.websocketAvailable"></i>
<p class="mb-0 d-inline">
<span>Websocket: </span>
<span>{{'region.header.connection_status.websocket_status.' + (connectionService.websocketAvailable ? 'connected' : 'not_connected') | translate}}</span>
</p>
</li>
<li>
<i [class]="'fa ' + (localStorageAvailable ? 'fa-check-square-o' : 'fa-square')"></i>
<i class="fa"
[class.fa-check-quare-o]="localStorageAvailable"
[class.fa-quare]="!localStorageAvailable"></i>
<p class="mb-0 d-inline">
<span>LocalStorage: </span>
<span>{{'region.header.connection_status.localStorage_status.' + (localStorageAvailable ? 'writable' : 'non_writable') | translate}}</span>
</p>
</li>
<li>
<i [class]="'fa ' + (sessionStorageAvailable ? 'fa-check-square-o' : 'fa-square')"></i>
<i class="fa"
[class.fa-check-quare-o]="sessionStorageAvailable"
[class.fa-quare]="!sessionStorageAvailable"></i>
<p class="mb-0 d-inline">
<span>SessionStorage: </span>
<span>{{'region.header.connection_status.sessionStorage_status.' + (sessionStorageAvailable ? 'writable' : 'non_writable') | translate}}</span>
</p>
</li>
<li>
<i [class]="'fa ' + (connectionService.rtt < 300 && connectionService.serverAvailable ? 'fa-check-square-o' : 'fa-square')"></i>
<i class="fa"
[class.fa-check-quare-o]="connectionService.rtt < 300 && connectionService.serverAvailable"
[class.fa-quare]="connectionService.rtt > 300 || !connectionService.serverAvailable"></i>
<p class="mb-0 d-inline">
<span>Round-Trip-Time: </span>
<span>{{connectionService.serverAvailable ? (connectionService.rtt + 'ms') : ('region.header.connection_status.server_status.not_available' | translate)}}</span>
......
<div [class]="'row'">
<div class="row">
<h4 *ngIf="!leaderBoardCorrect.length"
class="col-12 mt-5 text-center"
[innerHTML]="'component.leaderboard.no_attendee_correct' + (isGlobalRanking ? '_global' : '') | translate"></h4>
......@@ -10,8 +10,11 @@
class="col-12">{{'component.leaderboard.title.all_questions' | translate }}</h4>
<div *ngFor="let attendee of leaderBoardCorrect; let i = index"
[class]="(!i ? 'col-12' : 'col-sm-6')">
<div [class]="'leaderboard-item rounded p-2 my-2 ' + (!i ? 'own-nick text-center' : attendeeService.isOwnNick(attendee.name) ? 'own-nick' : '')">
[class.col-12]="!i"
[class.col-sm-6]="!!i">
<div class="leaderboard-item rounded p-2 my-2"
[class.own-nick]="!i || attendeeService.isOwnNick(attendee.name)"
[class.text-center]="!i">
<i *ngIf="!i"
class="fa fa-trophy"
aria-hidden="true"></i>
......@@ -24,7 +27,7 @@
<hr/>
<div [class]="'row'">
<div class="row">
<h4 *ngIf="!leaderBoardPartiallyCorrect.length"
class="col-12 text-center"
[innerHTML]="'component.leaderboard.no_attendee_partially_correct' + (isGlobalRanking ? '_global' : '') | translate"></h4>
......@@ -37,9 +40,11 @@
<div *ngFor="let attendee of leaderBoardPartiallyCorrect; let i = index"
class="ml-3">
<div [class]="'partially-correct-leaderboard-item rounded p-2 my-2 ' + (attendeeService.isOwnNick(attendee.name) ? 'own-nick' : '')">
<div class="partially-correct-leaderboard-item rounded p-2 my-2"
[class.own-nick]="attendeeService.isOwnNick(attendee.name)">
<span>{{attendee.name}}&nbsp;-&nbsp;</span>
<span>{{roundResponseTime(attendee.responseTime, 2)}}&nbsp;{{'component.leaderboard.second' | translate:{COUNT:2} }}</span>
</div>
</div>
</div>
......@@ -7,7 +7,9 @@
class="mb-1 col-sm-4 col-md-3">
<div [id]="elem.id"
(click)="currentQuizService.isOwner ? openKickMemberModal(removeMemberModal, elem.name) : return"
[class]="'member-wrapper ' + (currentQuizService.isOwner ? 'pointer ' : '') + (attendeeService.isOwnNick(elem.name) ? 'own-nick' : '')"
class="member-wrapper"
[class.pointer]="currentQuizService.isOwner"
[class.own-nick]="attendeeService.isOwnNick(elem.name)"
[style.color]="'#' + sanitizeHTML(transformForegroundColor(hexToRgb(elem.colorCode)))"
[style.background-color]="'#' + sanitizeHTML(elem.colorCode)">
<p class="mb-0"
......@@ -20,7 +22,9 @@
qrc-class="qrCodeContent"
qrc-errorCorrectionLevel="L"
qrc-element-type="img"
[class]="(!showQrCode ? 'd-none' : 'd-flex') + ' justify-content-center align-items-center qr-code-element'">
class="justify-content-center align-items-center qr-code-element"
[class.d-flex]="showQrCode"
[class.d-none]="!showQrCode">
</ngx-qrcode>
<ng-template #removeMemberModal let-c="close" let-d="dismiss">
......@@ -28,12 +32,26 @@
<button type="button" class="close" data-dismiss="modal" aria-label="Close" (click)="d()">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>{{'component.lobby.kick_member_confirmation' | translate:{NAME: _nickToRemove} }}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal" (click)="kickMember(_nickToRemove)" [innerHTML]="'global.yes' | translate"></button>
<button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="d()" [innerHTML]="'global.no' | translate"></button>
<button type="button"
class="btn btn-danger"
data-dismiss="modal"
(click)="kickMember(_nickToRemove)"
[innerHTML]="'global.yes' | translate"></button>
<button type="button"
class="btn btn-secondary"
data-dismiss="modal"
(click)="d()"
[innerHTML]="'global.no' | translate"></button>
</div>
</ng-template>
......@@ -15,18 +15,21 @@
<div class="my-3 btn-group">
<button *ngIf="showStartQuizButton()"
(click)="startQuiz()"
[class]="'btn btn-default pointer ' + (currentQuizService.getVisibleQuestions().length ? '' : 'w-100')">
class="btn btn-default pointer"
[class.w-100]="currentQuizService.getVisibleQuestions().length">
<span [innerHTML]="('component.liveResults.' + (currentQuizService.quiz.sessionConfig.readingConfirmationEnabled ? currentQuizService.readingConfirmationRequested ? 'start_round' : 'show_question' : 'start_round')) | translate"></span>
<i class="fa fa-paper-plane"></i>
</button>
<button *ngIf="countdown && countdown.isRunning && countdown.remainingTime"
(click)="stopQuiz()"
[class]="'btn btn-default pointer ' + (currentQuizService.getVisibleQuestions().length ? '' : 'w-100')">
class="btn btn-default pointer"
[class.w-100]="!currentQuizService.getVisibleQuestions().length">
<span [innerHTML]="'component.liveResults.abort_countdown' | translate"></span>
<i class="fa fa-paper-plane"></i>
</button>
<button *ngFor="let question of currentQuizService.getVisibleQuestions(); let i = index"
[class]="'btn btn-default ' + (i === selectedQuestionIndex ? 'disabled' : 'pointer')"
class="btn btn-default pointer"
[class.disabled]="i === selectedQuestionIndex"
[disabled]="i === selectedQuestionIndex"
(click)="modifyVisibleQuestion(i)">
<span>{{'component.liveResults.question_number' | translate}} {{i + 1}}</span>
......
......@@ -15,7 +15,8 @@
class="d-flex justify-content-around align-items-center flex-wrap">
<div *ngFor="let elem of answers; let i = index"
[id]="i"
[class]="'answer-option-element d-flex justify-content-center align-items-center rounded m-2 pointer ' + (isSelected(i) ? 'selected' : '')"
class="answer-option-element d-flex justify-content-center align-items-center rounded m-2 pointer"
[class.selected]="isSelected(i)"
(click)="toggleSelectAnswer(i)"
[style.flex-basis]="currentQuizService.currentQuestion().showOneAnswerPerRow ? '100%' : 'auto'">
<p *ngIf="currentQuizService.currentQuestion().displayAnswerText"
......
<div class="row">
<div [class]="'col-12 nickCategoryWrapper ' + (hasSelectedCategory() ? 'col-sm-4' : '')">
<div class="col-12 nickCategoryWrapper"
[class.col-sm-4]="hasSelectedCategory()">
<div class="row">
<div *ngFor="let cat of availableNickCategories()"
[class]="'nickCategory pointer col-6 ' + (hasSelectedCategory(cat) ? 'selectedCategory' : '') + ' ' + (hasSelectedCategory() ? 'col-sm-12' : 'col-sm-6')"
class="nickCategory pointer col-6"
[class.selectedCategory]="hasSelectedCategory(cat)"
[class.col-sm-12]="hasSelectedCategory()"
[class.col-sm-6]="!hasSelectedCategory()"
(click)="toggleSelectedCategory(cat)">
<div class="nickCategoryText">
<p class="mb-0" [innerHTML]="('component.nickname_categories.category.' + cat) | translate"></p>
......@@ -14,11 +18,14 @@
<div *ngIf="hasSelectedCategory()"
class="col-12 col-sm-8 nickNameWrapper pt-2 mt-2 mt-sm-0">
<button [innerHTML]="('component.nickname_categories.' + (hasSelectedAllNicks() ? 'remove' : 'choose') + '_all') | translate"
[class]="'btn btn-block pointer ' + (hasSelectedAllNicks() ? 'btn-warning' : 'btn-success') "
class="btn btn-block pointer"
[class.btn-warning]="hasSelectedAllNicks()"
[class.btn-success]="!hasSelectedAllNicks()"
(click)="toggleAllNicks()"></button>
<div *ngFor="let nick of availableNicks[selectedCategory]"
(click)="selectNick(nick)"
[class]="'nickStyle nickName pointer ' + (hasSelectedNick(nick) ? 'selectedNickName' : '')">
class="nickStyle nickName pointer"
[class.selectedNickName]="hasSelectedNick(nick)">
<span [innerHTML]="nick" class="nickName"></span>
</div>
</div>
......
......@@ -30,8 +30,10 @@
(propertychange)="updateAnswerValue($event, i)">
<i class="fa fa-trash delete-icon pointer"
(click)="deleteAnswer(i)"></i>
<label [class]="'btn pointer mb-0 btn-' + (elem.isCorrect ? 'success' : 'danger')"
*ngIf="question.TYPE !== 'SurveyQuestion'">
<label *ngIf="question.TYPE !== 'SurveyQuestion'"
class="btn pointer mb-0"
[class.btn-success]="elem.isCorrect"
[class.btn-danger]="!elem.isCorrect">
<input type="checkbox"
class="hidden"
[attr.aria-label]="'component.answeroptions.description.is_correct' | translate"
......@@ -53,7 +55,9 @@
<p class="mb-0 mr-2 text-light align-self-center"
style="width: 100%;line-height: 1.2;"
[innerHTML]="'component.answeroptions.show_answer_content_on_buttons' | translate"></p>
<label [class]="'btn pointer mb-0 align-self-center btn-' + (question.displayAnswerText ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="question.displayAnswerText"
[class.btn-danger]="!question.displayAnswerText">
<input type="checkbox"
class="hidden"
id="config_showAnswerContentOnButtons_switch"
......@@ -71,7 +75,9 @@
<p class="mb-0 mr-2 text-light align-self-center"
style="width: 100%;line-height: 1.2;"
[innerHTML]="'component.answeroptions.show_one_answer_per_row' | translate"></p>
<label [class]="'btn pointer mb-0 align-self-center btn-' + (question.showOneAnswerPerRow ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="question.showOneAnswerPerRow"
[class.btn-danger]="!question.showOneAnswerPerRow">
<input type="checkbox"
class="hidden"
id="config_showOneAnswerPerRow_switch"
......@@ -90,7 +96,9 @@
<p class="mb-0 mr-2 text-light align-self-center"
style="width: 100%;line-height: 1.2;"
[innerHTML]="'component.answeroptions.multiple_selection_survey' | translate"></p>
<label [class]="'btn pointer mb-0 align-self-center btn-' + (question.multipleSelectionEnabled ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="question.multipleSelectionEnabled"
[class.btn-danger]="!question.multipleSelectionEnabled">
<input type="checkbox"
class="hidden"
id="config_multipleSelectionSurvey_switch"
......
......@@ -23,14 +23,15 @@
<div *ngFor="let elem of answer"
class="col-12 col-sm-6 mb-2 d-flex answerOptionConfig"
[attr.data-intro]="elem.configTitle | translate">
<p class="mb-0 mr-2 text-light align-self-center"
style="width: 100%;line-height: 1.2;">
<p class="mb-0 mr-2 text-light align-self-center config-label">
<span [innerHTML]="elem.configTitle | translate"></span>&#58;&nbsp;
</p>
<label [class]="'btn pointer mb-0 align-self-center btn-' + (elem.enabled ? 'success' : 'danger')">
<input type="checkbox"
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="elem.enabled"
[class.btn-danger]="!elem.enabled">
<input [id]="elem.id"
type="checkbox"
class="hidden"
[id]="elem.id"
[attr.aria-label]="elem.configTitle | translate"
autocomplete="off"
role="switch"
......@@ -56,7 +57,9 @@
[placeholder]="'component.answeroptions.free_text_question.text_placeholder' | translate"></textarea>
<div *ngIf="hasTestInput()"
class="center-block mt-4 mb-0">
<h4 [class]="'text-center text-' + (testInputCorrect() ? 'success' : 'danger')"
<h4 class="text-center"
[class.text-success]="testInputCorrect()"
[class.text-danger]="!testInputCorrect()"
[innerHTML]="'component.answeroptions.free_text_question.check_' + (!testInputCorrect() ? 'in' : '') + 'correct' | translate"></h4>
</div>
</div>
......
......@@ -6,3 +6,7 @@ textarea {
}
.config-label {
width: 100%;
line-height: 1.2;
}
\ No newline at end of file
......@@ -2,8 +2,9 @@
[attr.data-intro]="'view.question_type.description.type_wrapper' | translate"
[attr.aria-label]="'view.question_type.description.type_wrapper' | translate">
<li *ngFor="let elem of selectableQuestionTypes"
[class]="'col-12 col-sm-6 ' + (isActiveQuestionType(elem.id) ? 'active' : '')"
[id]="elem.id"
class="col-12 col-sm-6"
[class.active]="isActiveQuestionType(elem.id)"
[attr.aria-selected]="isActiveQuestionType(elem.id)"
(click)="morphToQuestionType(elem.id)">
<div class="wrapper rounded pointer p-3 text-light">
......
......@@ -14,7 +14,9 @@
<span [innerHTML]="'component.quiz_summary.quiz_url' | translate"></span>
<span id="sessionUrl" [innerHTML]="document.location.origin + '/quiz/' + questionGroupItem.hashtag"></span>
</p>
<div [class]="'overflow-wrapper ' + (showMoreOrLess.indexOf('more') > -1 ? 'overflow-active' : '')" (click)="switchShowMoreOrLess()">
<div class="overflow-wrapper"
[class.overflow-active]="showMoreOrLess.indexOf('more') > -1"
(click)="switchShowMoreOrLess()">
<p role="listitem">
<span [innerHTML]="'component.quiz_summary.question_amount' | translate"></span>&#58;&nbsp;
<span [innerHTML]="questionGroupItem.questionList.length"></span>
......
......@@ -63,7 +63,9 @@
<div class="col-12 col-sm-6">
<div class="col-12 mb-2 d-flex"
[attr.data-intro]="'component.answeroptions.description.multiple_selection_survey' | translate">
<label [class]="'btn pointer mb-0 align-self-center btn-' + (config.volumeConfig.useGlobalVolume ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="config.volumeConfig.useGlobalVolume"
[class.btn-danger]="!config.volumeConfig.useGlobalVolume">
<input type="checkbox"
class="hidden"
id="toggle-global-volume"
......@@ -87,10 +89,12 @@
</div>
<div class="col-12 mb-2 d-flex"
[attr.data-intro]="'component.answeroptions.description.multiple_selection_survey' | translate">
<label [class]="'btn pointer mb-0 align-self-center btn-' + (config.enabled.lobby ? 'success' : 'danger')">
<input type="checkbox"
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="config.enabled.lobby"
[class.btn-danger]="!config.enabled.lobby">
<input id="toggle-lobby-music"
type="checkbox"
class="hidden"
id="toggle-lobby-music"
[attr.aria-label]="'Activate/Deactivate Lobby Music Button'"
autocomplete="off"
role="switch"
......@@ -161,7 +165,9 @@
<div class="col-12 col-sm-6">
<div class="col-12 mb-2 d-flex"
[attr.data-intro]="'component.answeroptions.description.multiple_selection_survey' | translate">
<label [class]="'btn pointer mb-0 align-self-center btn-' + (config.enabled.countdownRunning ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="config.enabled.countdownRunning"
[class.btn-danger]="!config.enabled.countdownRunning">
<input type="checkbox"
class="hidden"
id="toggle-countdown-running-music"
......@@ -214,7 +220,9 @@
<div class="col-12 col-sm-6">
<div class="col-12 mb-2 d-flex"
[attr.data-intro]="'component.answeroptions.description.multiple_selection_survey' | translate">
<label [class]="'btn pointer mb-0 align-self-center btn-' + (config.enabled.countdownEnd ? 'success' : 'danger')">
<label class="btn pointer mb-0 align-self-center"
[class.btn-success]="config.enabled.countdownEnd"
[class.btn-danger]="!config.enabled.countdownEnd">
<input type="checkbox"
class="hidden"
id="toggle-countdown-end-music"
......
<div [class]="'session-management row ' + (!sessions.length ? 'center-vertical' : '')">
<div class="session-management row"
[class.center-vertical]="!sessions.length">
<div class="col-12">
<h2 class="text-center text-light" *ngIf="sessions.length === 0" [innerHTML]="'component.hashtag_management.no_sessions' | translate"></h2>
<h2 *ngIf="sessions.length === 0"
class="text-center text-light"
[innerHTML]="'component.hashtag_management.no_sessions' | translate"></h2>
</div>
<div class="col-12">
<div class="row" *ngFor="let elem of sessions; let i = index" [id]="elem">
<div *ngFor="let elem of sessions; let i = index"
[id]="elem"
class="row">
<div class="col-12">
<p class="hashtag-name">{{elem}}</p>
</div>
......
......@@ -32,7 +32,8 @@
<div class="row">
<div class="col-6 col-join-session px-1">
<button id="joinSession"
[class]="'btn btn-success btn-block ' + (!canJoinQuiz ? 'disabled' : '')"
class="btn btn-success btn-block"
[class.disabled]="!canJoinQuiz"
[routerLink]="['/quiz', enteredSessionName]"
[disabled]="!canJoinQuiz">
<i class="fa fa-thumbs-up"></i>
......@@ -40,32 +41,33 @@
</button>
</div>
<div class="col-6 col-create-session px-1">
<button id="addSession"
[class]="'btn btn-success btn-block ' + (!canAddQuiz ? 'disabled' : '')"
*ngIf="!canEditQuiz && !isAddingDemoQuiz && !isAddingABCDQuiz"
<button *ngIf="!canEditQuiz && !isAddingDemoQuiz && !isAddingABCDQuiz"
id="addSession"
class="btn btn-success btn-block"
[class.disabled]="!canAddQuiz"
(click)="setActiveQuestionGroup(['/quiz', 'manager', 'overview'])"
[disabled]="!canAddQuiz">
<span [innerHTML]="'component.hashtag_management.create_session' | translate"></span>
<i class="fa fa-edit"></i>
</button>
<button id="editSession"
<button *ngIf="canEditQuiz"
id="editSession"
class="btn btn-success btn-block"
(click)="setActiveQuestionGroup(['/quiz', 'manager', 'overview'])"
*ngIf="canEditQuiz">
(click)="setActiveQuestionGroup(['/quiz', 'manager', 'overview'])">
<span [innerHTML]="'component.hashtag_management.edit_session' | translate"></span>
<i class="fa fa-edit"></i>
</button>
<button id="runDemoQuizSession"
<button *ngIf="isAddingDemoQuiz"
id="runDemoQuizSession"
class="btn btn-success btn-block"
(click)="setActiveQuestionGroup(['/quiz', 'flow', 'lobby'])"
*ngIf="isAddingDemoQuiz">
(click)="setActiveQuestionGroup(['/quiz', 'flow', 'lobby'])">
<span [innerHTML]="'component.hashtag_management.create_demo_session' | translate"></span>
<i class="fa fa-send"></i>
</button>
<button id="runABCDQuizSession"
<button *ngIf="isAddingABCDQuiz"
id="runABCDQuizSession"
class="btn btn-success btn-block"
(click)="setActiveQuestionGroup(['/quiz', 'flow', 'lobby'])"
*ngIf="isAddingABCDQuiz">
(click)="setActiveQuestionGroup(['/quiz', 'flow', 'lobby'])">
<span [innerHTML]="'component.hashtag_management.create_abcd_session' | translate"></span>
<i class="fa fa-send"></i>
</button>
......
<div class="text-light">
<div class="btn-group btn-header mb-4 overflow-auto" data-toggle="buttons"
role="group" [attr.aria-label]="'component.quiz_manager.details.aria.btn_group' | translate">
<button type="button"
[class]="'btn btn-' + (currentData === 'about' ? 'secondary' : 'default')"
[routerLink]="['/info', 'about']">
<span [innerHTML]="'region.footer.footer_bar.info' | translate"></span>
</button>
<button type="button"
[class]="'btn btn-' + (currentData === 'tos' ? 'secondary' : 'default')"
[routerLink]="['/info', 'tos']">
<span [innerHTML]="'region.footer.footer_bar.tos' | translate"></span>
<div class="btn-group btn-header mb-4 overflow-auto"
data-toggle="buttons"
role="group"
[attr.aria-label]="'component.quiz_manager.details.aria.btn_group' | translate">
<button *ngFor="let elem of infoButtons"
type="button"
class="btn"
[class.btn-secondary]="currentData === elem"
[class.btn-default]="currentData !== elem"
[routerLink]="['/info', elem]">
<span [innerHTML]="('region.footer.footer_bar.' + elem) | translate"></span>
</button>
<button type="button"
[class]="'btn btn-' + (currentData === 'imprint' ? 'secondary' : 'default')"
[routerLink]="['/info', 'imprint']">
<span [innerHTML]="'region.footer.footer_bar.imprint' | translate"></span>
</button>
<button type="button"
[class]="'btn btn-' + (currentData === 'dataprivacy' ? 'secondary' : 'default')"
data-toggle="collapse"
[routerLink]="['/info', 'dataprivacy']">
<span [innerHTML]="'region.footer.footer_bar.data_privacy' | translate"></span>
</button>
<button type="button" class="btn btn-default" onclick="window.open('https://arsnova.eu/blog');">
class="btn btn-default"
onclick="window.open('https://arsnova.eu/blog');">
<span [innerHTML]="'region.footer.footer_bar.blog' | translate"></span>
</button>
</div>
......
......@@ -15,6 +15,7 @@ export class InfoComponent implements OnInit, OnDestroy {
private _routerSubscription: Subscription;
public currentData: string;
public readonly infoButtons = ['about', 'tos', 'imprint', 'dataprivacy'];
constructor(
private footerBarService: FooterBarService,
......
<div class="row center-vertical">
<div class="col-12">
<div class="row" role="list">
<div *ngFor="let elem of availableLanguages"
class="col-xs-12 col-md-6 col-sm-6 col-lg-6 mb-2 available_translations"
role="listitem">
<button type="button"
[id]="'translation_' + elem.tag"
[class]="'btn btn-block ' + (i18nService.currentLanguage === elem.tag ? 'selectedLanguageButton btn-success' : 'btn-grey')"
(click)="changeLanguage(elem.tag)"
>{{elem.text}}
<button [id]="'translation_' + elem.tag"
type="button"
class="btn btn-block"
[class.selectedLanguageButton]="i18nService.currentLanguage === elem.tag"
[class.btn-success]="i18nService.currentLanguage === elem.tag"
[class.btn-grey]="i18nService.currentLanguage !== elem.tag"
(click)="changeLanguage(elem.tag)">
<span>{{elem.text}}</span>
</button>
</div>
</div>
</div>
</div>
<div *ngFor="let elem of themesService.themes"
[class]="'themePreview d-flex align-items-center mb-2 flex-wrap flex-sm-nowrap ' + (isThemeSelected(elem.id) ? 'selectedTheme' : '')"
class="themePreview d-flex align-items-center mb-2 flex-wrap flex-sm-nowrap"
[class.selected]="isThemeSelected(elem.id)"
[id]="elem.id" role="listitem">
<img [src]="getThemePreviewUrl(elem.id)"
[alt]="'Preview of theme ' + (elem.name | translate)"
......
......@@ -34,7 +34,7 @@
"home": "Home",
"tos": "ToS",
"imprint": "Imprint",
"data_privacy": "Data Privacy",
"dataprivacy": "Data Privacy",
"blog": "Blog",
"languages": "Languages",
"style": "Styles",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment