2019-08-20 14:57:20 +02:00
|
|
|
<div class="offline-banner" *ngIf="isOffline"><mat-icon>cloud_off</mat-icon><span translate>Offline mode</span></div>
|
2018-11-09 13:44:39 +01:00
|
|
|
<div class="history-mode-indicator" *ngIf="OSStatus.isInHistoryMode">
|
|
|
|
<span translate>You are using the history mode of OpenSlides. Changes will not be saved.</span>
|
2019-02-25 14:19:56 +01:00
|
|
|
<span>({{ getHistoryTimestamp() }})</span>
|
2018-11-09 13:44:39 +01:00
|
|
|
<a (click)="timeTravel.resumeTime()" translate>Exit</a>
|
|
|
|
</div>
|
2019-02-26 15:30:16 +01:00
|
|
|
<mat-sidenav-container
|
|
|
|
#siteContainer
|
|
|
|
class="main-container"
|
|
|
|
(backdropClick)="toggleSideNav()"
|
|
|
|
(touchstart)="swipe($event, 'start')"
|
|
|
|
(touchend)="swipe($event, 'end')"
|
|
|
|
>
|
2018-11-07 08:43:48 +01:00
|
|
|
<mat-sidenav
|
|
|
|
#sideNav
|
2019-01-19 11:07:37 +01:00
|
|
|
[mode]="vp.isMobile ? 'over' : 'side'"
|
2018-11-07 08:43:48 +01:00
|
|
|
[opened]="!vp.isMobile"
|
|
|
|
disableClose="!vp.isMobile"
|
|
|
|
class="side-panel"
|
|
|
|
>
|
2019-01-16 15:54:34 +01:00
|
|
|
<div class="nav-toolbar">
|
2018-06-29 17:24:44 +02:00
|
|
|
<!-- logo -->
|
2019-01-16 15:54:34 +01:00
|
|
|
<a routerLink="/" (click)="toggleSideNav()">
|
2019-04-08 10:57:43 +02:00
|
|
|
<os-logo class="os-logo-container" [footer]="false"></os-logo>
|
2019-01-16 15:54:34 +01:00
|
|
|
</a>
|
|
|
|
</div>
|
2018-06-25 17:03:52 +02:00
|
|
|
|
2018-06-29 17:24:44 +02:00
|
|
|
<!-- User Menu -->
|
2018-11-07 08:43:48 +01:00
|
|
|
<mat-expansion-panel class="user-menu mat-elevation-z0">
|
2019-01-09 08:31:13 +01:00
|
|
|
<mat-expansion-panel-header class="username">
|
2018-07-06 09:38:25 +02:00
|
|
|
<!-- Get the username from operator -->
|
2019-03-20 12:45:34 +01:00
|
|
|
<span *ngIf="username">{{ username }}</span>
|
2018-06-29 17:24:44 +02:00
|
|
|
</mat-expansion-panel-header>
|
2018-08-03 11:05:21 +02:00
|
|
|
<mat-nav-list>
|
2018-08-09 13:45:48 +02:00
|
|
|
<a mat-list-item [matMenuTriggerFor]="languageMenu">
|
2018-10-11 14:03:44 +02:00
|
|
|
<mat-icon>language</mat-icon>
|
2019-03-11 10:38:18 +01:00
|
|
|
<span>{{ getLangName() }}</span>
|
2018-08-09 13:45:48 +02:00
|
|
|
</a>
|
2019-01-21 12:12:57 +01:00
|
|
|
<div *ngIf="isLoggedIn">
|
2019-03-20 12:45:34 +01:00
|
|
|
<a
|
|
|
|
[routerLink]="operator.user ? ['/users/', operator.user.id] : []"
|
|
|
|
(click)="mobileAutoCloseNav()"
|
|
|
|
mat-list-item
|
|
|
|
>
|
2019-01-21 12:12:57 +01:00
|
|
|
<mat-icon>person</mat-icon>
|
2019-01-31 08:20:15 +01:00
|
|
|
<span translate>Show profile</span>
|
2019-01-21 12:12:57 +01:00
|
|
|
</a>
|
2019-01-23 17:14:28 +01:00
|
|
|
<a
|
|
|
|
*osPerms="'users.can_change_password'"
|
|
|
|
routerLink="/users/password"
|
|
|
|
(click)="mobileAutoCloseNav()"
|
|
|
|
mat-list-item
|
|
|
|
>
|
2019-01-21 12:12:57 +01:00
|
|
|
<mat-icon>vpn_key</mat-icon>
|
|
|
|
<span translate>Change password</span>
|
|
|
|
</a>
|
|
|
|
<a *ngIf="isLoggedIn" (click)="logout()" mat-list-item>
|
|
|
|
<mat-icon>exit_to_app</mat-icon>
|
|
|
|
<span translate>Logout</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div *ngIf="!isLoggedIn">
|
|
|
|
<a routerLink="/login" mat-list-item>
|
|
|
|
<mat-icon>exit_to_app</mat-icon>
|
|
|
|
<span translate>Login</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
2018-08-03 11:05:21 +02:00
|
|
|
</mat-nav-list>
|
2018-06-29 17:24:44 +02:00
|
|
|
</mat-expansion-panel>
|
2018-08-09 13:45:48 +02:00
|
|
|
<mat-menu #languageMenu="matMenu">
|
2019-02-14 22:17:16 +01:00
|
|
|
<button mat-menu-item (click)="selectLang('en')">{{ getLangName('en') }}</button>
|
|
|
|
<button mat-menu-item (click)="selectLang('de')">{{ getLangName('de') }}</button>
|
|
|
|
<button mat-menu-item (click)="selectLang('cs')">{{ getLangName('cs') }}</button>
|
2018-08-09 13:45:48 +02:00
|
|
|
</mat-menu>
|
2018-06-25 17:03:52 +02:00
|
|
|
|
2018-06-29 17:24:44 +02:00
|
|
|
<!-- navigation -->
|
2018-11-07 08:43:48 +01:00
|
|
|
<mat-nav-list class="main-nav">
|
2018-09-20 13:03:51 +02:00
|
|
|
<span *ngFor="let entry of mainMenuService.entries">
|
2018-11-07 08:43:48 +01:00
|
|
|
<a
|
|
|
|
[@navItemAnim]
|
|
|
|
*osPerms="entry.permission"
|
|
|
|
mat-list-item
|
2019-01-19 11:07:37 +01:00
|
|
|
(click)="mobileAutoCloseNav()"
|
2018-11-07 08:43:48 +01:00
|
|
|
[routerLink]="entry.route"
|
|
|
|
routerLinkActive="active"
|
|
|
|
[routerLinkActiveOptions]="{ exact: entry.route === '/' }"
|
|
|
|
>
|
2018-10-05 16:34:08 +02:00
|
|
|
<mat-icon>{{ entry.icon }}</mat-icon>
|
2018-11-07 08:43:48 +01:00
|
|
|
<span>{{ entry.displayName | translate }}</span>
|
2018-09-20 13:03:51 +02:00
|
|
|
</a>
|
|
|
|
</span>
|
2019-01-09 08:31:13 +01:00
|
|
|
<mat-divider></mat-divider>
|
2019-07-11 14:06:01 +02:00
|
|
|
<a [@navItemAnim] *ngIf="vp.isMobile" mat-list-item routerLinkActive="active" (click)="toggleSearch()">
|
2019-01-09 08:31:13 +01:00
|
|
|
<mat-icon>search</mat-icon>
|
|
|
|
<span translate>Search</span>
|
|
|
|
</a>
|
|
|
|
<a
|
|
|
|
[@navItemAnim]
|
|
|
|
mat-list-item
|
|
|
|
routerLink="/legalnotice"
|
|
|
|
routerLinkActive="active"
|
2019-01-19 11:07:37 +01:00
|
|
|
(click)="mobileAutoCloseNav()"
|
2019-01-09 08:31:13 +01:00
|
|
|
>
|
|
|
|
<mat-icon>info</mat-icon>
|
|
|
|
<span translate>Legal notice</span>
|
|
|
|
</a>
|
|
|
|
<a
|
|
|
|
[@navItemAnim]
|
|
|
|
mat-list-item
|
|
|
|
routerLink="/privacypolicy"
|
|
|
|
routerLinkActive="active"
|
2019-01-19 11:07:37 +01:00
|
|
|
(click)="mobileAutoCloseNav()"
|
2019-01-09 08:31:13 +01:00
|
|
|
>
|
|
|
|
<mat-icon>security</mat-icon>
|
|
|
|
<span translate>Privacy policy</span>
|
|
|
|
</a>
|
|
|
|
<a
|
|
|
|
[@navItemAnim]
|
|
|
|
mat-list-item
|
|
|
|
href="https://openslides.org"
|
|
|
|
target="_blank"
|
2019-01-19 11:07:37 +01:00
|
|
|
(click)="mobileAutoCloseNav()"
|
2019-01-09 08:31:13 +01:00
|
|
|
>
|
2019-01-21 12:12:57 +01:00
|
|
|
<span>
|
|
|
|
<small><os-copyright-sign></os-copyright-sign> Copyright by OpenSlides</small>
|
|
|
|
</span>
|
2019-01-09 08:31:13 +01:00
|
|
|
</a>
|
2019-04-08 10:57:43 +02:00
|
|
|
<div class="os-footer-logo-container">
|
|
|
|
<os-logo [footer]="true"></os-logo>
|
|
|
|
</div>
|
2018-06-29 17:24:44 +02:00
|
|
|
</mat-nav-list>
|
2019-07-11 18:03:13 +02:00
|
|
|
<!-- Toggle-button -->
|
|
|
|
<div class="nav-toggle-button-container" *ngIf="!vp.isMobile">
|
|
|
|
<button *ngIf="sideNav.opened" mat-raised-button (click)="toggleSideNav()" class="nav-toggle-button left">
|
|
|
|
<mat-icon>arrow_back_ios</mat-icon>
|
|
|
|
</button>
|
|
|
|
</div>
|
2018-06-29 17:24:44 +02:00
|
|
|
</mat-sidenav>
|
2018-10-05 16:34:08 +02:00
|
|
|
<mat-sidenav-content>
|
2019-07-11 18:03:13 +02:00
|
|
|
<!-- Toggle-button -->
|
|
|
|
<div class="nav-toggle-button-container" *ngIf="!vp.isMobile">
|
|
|
|
<button *ngIf="!sideNav.opened" mat-raised-button (click)="toggleSideNav()" class="nav-toggle-button right">
|
|
|
|
<mat-icon>arrow_forward_ios</mat-icon>
|
|
|
|
</button>
|
|
|
|
</div>
|
2018-10-05 16:34:08 +02:00
|
|
|
<div (touchstart)="swipe($event, 'start')" (touchend)="swipe($event, 'end')" class="content">
|
2019-01-09 08:31:13 +01:00
|
|
|
<main [@pageTransition]="o.isActivated ? o.activatedRoute : ''">
|
|
|
|
<router-outlet #o="outlet"></router-outlet>
|
|
|
|
</main>
|
2018-09-04 11:35:50 +02:00
|
|
|
</div>
|
2018-10-05 16:34:08 +02:00
|
|
|
</mat-sidenav-content>
|
2018-08-23 16:49:51 +02:00
|
|
|
</mat-sidenav-container>
|
2019-07-11 14:06:01 +02:00
|
|
|
|
|
|
|
<os-global-spinner></os-global-spinner>
|