]>
Commit | Line | Data |
---|---|---|
8afc19a6 | 1 | <div class="menu-wrapper"> |
17119e4a | 2 | <menu [ngClass]="{ 'is-logged-in': isLoggedIn }"> |
8afc19a6 C |
3 | <div class="top-menu"> |
4 | <div *ngIf="isLoggedIn" class="logged-in-block"> | |
17119e4a | 5 | <div> |
27bc9586 C |
6 | <div |
7 | class="logged-in-more" ngbDropdown #dropdown="ngbDropdown" placement="bottom-left auto" | |
8 | [container]="dropdownContainer" (openChange)="onDropdownOpenChange($event)" autoClose="outside" | |
9 | > | |
51a83970 | 10 | <div ngbDropdownToggle> |
87fdea2f C |
11 | <my-actor-avatar [actor]="user.account" actorType="account" size="34"></my-actor-avatar> |
12 | ||
51a83970 K |
13 | <div class="logged-in-info"> |
14 | <div class="logged-in-display-name">{{ user.account?.displayName }}</div> | |
15 | ||
16 | <div class="logged-in-username">@{{ user.username }}</div> | |
17 | </div> | |
18 | ||
19 | <div class="dropdown-toggle-indicator"> | |
c2faa073 | 20 | <span class="chevron-down"></span> |
51a83970 K |
21 | </div> |
22 | </div> | |
17119e4a C |
23 | |
24 | <div ngbDropdownMenu> | |
27bc9586 C |
25 | <a |
26 | *ngIf="user.account" ngbDropdownItem ngbDropdownToggle class="dropdown-item" [routerLink]="[ '/a', user.account.nameWithHost ]" | |
27 | #profile (click)="onActiveLinkScrollToAnchor(profile)" | |
28 | > | |
17119e4a C |
29 | <my-global-icon iconName="go" aria-hidden="true"></my-global-icon> <ng-container i18n>Public profile</ng-container> |
30 | </a> | |
31 | ||
32 | <div class="dropdown-divider"></div> | |
33 | ||
28c65567 | 34 | <a |
35 | myPluginSelector pluginSelectorId="menu-user-dropdown-language-item" | |
36 | ngbDropdownItem ngbDropdownToggle class="dropdown-item" (click)="openLanguageChooser()" | |
37 | > | |
17119e4a C |
38 | <my-global-icon iconName="language" aria-hidden="true"></my-global-icon> |
39 | <span i18n>Interface:</span> | |
4c8749cb | 40 | <span class="ms-auto muted">{{ currentInterfaceLanguage }}</span> |
17119e4a C |
41 | </a> |
42 | ||
43 | <a ngbDropdownItem ngbDropdownToggle class="dropdown-item" routerLink="/my-account/settings" fragment="video-languages-subtitles" | |
f3081d64 | 44 | #settingsLanguagesSubtitles (click)="onActiveLinkScrollToAnchor(settingsLanguagesSubtitles)"> |
17119e4a C |
45 | <my-global-icon iconName="video-lang" aria-hidden="true"></my-global-icon> |
46 | <span i18n>Videos:</span> | |
4c8749cb | 47 | <span class="ms-auto muted">{{ videoLanguages.join(', ') }}</span> |
17119e4a C |
48 | </a> |
49 | ||
51a83970 | 50 | <a ngbDropdownItem ngbDropdownToggle class="dropdown-item settings-sensitive" routerLink="/my-account/settings" |
17119e4a | 51 | fragment="video-sensitive-content-policy" #settingsSensitiveContentPolicy |
f1ac6348 C |
52 | (click)="onActiveLinkScrollToAnchor(settingsSensitiveContentPolicy)" |
53 | > | |
dc1296a9 C |
54 | <my-global-icon class="hover-display-toggle" [hidden]="user.nsfwPolicy === 'display'" iconName="eye-open" aria-hidden="true"></my-global-icon> |
55 | <my-global-icon class="hover-display-toggle" [hidden]="user.nsfwPolicy !== 'display'" iconName="eye-close" aria-hidden="true"></my-global-icon> | |
17119e4a | 56 | <span i18n>Sensitive:</span> |
4c8749cb | 57 | <span class="ms-auto muted">{{ nsfwPolicy }}</span> |
17119e4a C |
58 | </a> |
59 | ||
60 | <a ngbDropdownItem class="dropdown-item" (click)="toggleUseP2P()"> | |
61 | <my-global-icon iconName="p2p" aria-hidden="true"></my-global-icon> | |
62 | <ng-container i18n>Help share videos</ng-container> | |
4f926722 | 63 | |
4c8749cb | 64 | <my-input-switch class="ms-auto" [checked]="user.p2pEnabled"></my-input-switch> |
17119e4a C |
65 | </a> |
66 | ||
67 | <div class="dropdown-divider"></div> | |
68 | ||
51a83970 | 69 | <a *ngIf="!isInMobileView" ngbDropdownItem ngbDropdownToggle class="dropdown-item" (click)="openHotkeysCheatSheet()"> |
805bec52 C |
70 | <my-global-icon iconName="command" aria-hidden="true"></my-global-icon> |
71 | <ng-container i18n>Keyboard shortcuts</ng-container> | |
17119e4a C |
72 | </a> |
73 | ||
74 | <a ngbDropdownItem ngbDropdownToggle (click)="logout($event)" class="dropdown-item" href="#"> | |
805bec52 C |
75 | <my-global-icon iconName="sign-out" aria-hidden="true"></my-global-icon> |
76 | <ng-container i18n>Log out</ng-container> | |
17119e4a C |
77 | </a> |
78 | </div> | |
63347a0f | 79 | </div> |
51a83970 K |
80 | |
81 | <my-notification (navigate)="onActiveLinkScrollToAnchor($event)"></my-notification> | |
8afc19a6 | 82 | </div> |
17119e4a C |
83 | |
84 | <div class="logged-in-menu"> | |
f1ac6348 | 85 | <a class="menu-link" routerLink="/my-account" routerLinkActive="active" #settingsLink (click)="onActiveLinkScrollToAnchor(settingsLink)"> |
17119e4a C |
86 | <my-global-icon iconName="user" aria-hidden="true"></my-global-icon> |
87 | <ng-container i18n>My account</ng-container> | |
88 | </a> | |
89 | ||
f1ac6348 | 90 | <a class="menu-link" routerLink="/my-library" routerLinkActive="active" #libraryLink (click)="onActiveLinkScrollToAnchor(libraryLink)"> |
77662dae | 91 | <my-global-icon class="channel-icon" iconName="channel" aria-hidden="true"></my-global-icon> |
17119e4a C |
92 | <ng-container i18n>My library</ng-container> |
93 | </a> | |
94 | ||
f1ac6348 | 95 | <a class="menu-link" *ngIf="userHasAdminAccess" [routerLink]="getFirstAdminRouteAvailable()" routerLinkActive="active"> |
17119e4a C |
96 | <my-global-icon iconName="cog" aria-hidden="true"></my-global-icon> |
97 | <ng-container i18n>Administration</ng-container> | |
98 | </a> | |
99 | </div> | |
8afc19a6 C |
100 | </div> |
101 | ||
17119e4a | 102 | <div *ngIf="!isLoggedIn" class="login-buttons-block"> |
0bc53e20 C |
103 | <a i18n *ngIf="!getExternalLoginHref()" routerLink="/login" class="peertube-button-link orange-button">Login</a> |
104 | <a i18n *ngIf="getExternalLoginHref()" [href]="getExternalLoginHref()" class="peertube-button-link orange-button">Login</a> | |
105 | ||
9589907c C |
106 | <a *ngIf="isRegistrationAllowed()" routerLink="/signup" class="peertube-button-link create-account-button"> |
107 | <my-signup-label [requiresApproval]="requiresApproval"></my-signup-label> | |
108 | </a> | |
8afc19a6 | 109 | </div> |
b33f657c | 110 | |
8beea2d3 C |
111 | <ng-container *ngFor="let menuSection of menuSections" > |
112 | <div [ngClass]="[ menuSection.key, 'menu-block' ]"> | |
113 | <div i18n class="block-title">{{ menuSection.title }}</div> | |
a55052c9 | 114 | |
8beea2d3 | 115 | <a class="menu-link" *ngFor="let link of menuSection.links" [routerLink]="link.path" routerLinkActive="active"> |
77662dae | 116 | <my-global-icon *ngIf="link.icon" [iconName]="link.icon" [ngClass]="link.iconClass" aria-hidden="true"></my-global-icon> |
8beea2d3 C |
117 | <ng-container>{{ link.shortLabel }}</ng-container> |
118 | </a> | |
119 | </div> | |
120 | </ng-container> | |
d3217560 | 121 | </div> |
066e94c5 | 122 | |
d3217560 | 123 | <div class="footer"> |
17119e4a | 124 | <div class="footer-block"> |
f1ac6348 | 125 | <a *ngIf="!isLoggedIn" class="menu-link" (click)="openQuickSettings()"> |
6ad971d5 | 126 | <my-global-icon iconName="cog" aria-hidden="true"></my-global-icon> |
dfed7846 | 127 | <ng-container i18n>My settings</ng-container> |
d3217560 | 128 | </a> |
17119e4a | 129 | |
f1ac6348 | 130 | <a class="menu-link" routerLink="/about" routerLinkActive="active"> |
6ad971d5 | 131 | <my-global-icon iconName="help" aria-hidden="true"></my-global-icon> |
8afc19a6 C |
132 | <ng-container i18n>About</ng-container> |
133 | </a> | |
134 | </div> | |
ffb321be | 135 | |
f1ac6348 | 136 | <div class="footer-bottom"> |
14f83c68 | 137 | |
d3217560 | 138 | <div class="footer-links"> |
ba24a31c | 139 | <span *ngIf="isLoggedIn === false" role="button" (click)="openLanguageChooser()" class="c-hand" i18n>Interface: {{ currentInterfaceLanguage }}</span> |
14f83c68 C |
140 | |
141 | <div> | |
142 | <a i18n routerLink="/about/instance">Contact</a> | |
143 | <a i18n href="https://joinpeertube.org/help" i18n-title title="Get help using PeerTube" target="_blank" rel="noopener noreferrer">Help</a> | |
144 | <a i18n href="https://joinpeertube.org/faq" i18n-title title="Frequently asked questions about PeerTube" target="_blank" rel="noopener noreferrer">FAQ</a> | |
145 | <a i18n routerLink="/about/instance" fragment="statistics">Stats</a> | |
146 | <a i18n href="https://docs.joinpeertube.org/api-rest-reference.html" i18n-title title="API documentation" target="_blank" rel="noopener noreferrer">API</a> | |
090d100c | 147 | <a role="button" (click)="openHotkeysCheatSheet()" class="c-hand" i18n>Keyboard shortcuts</a> |
14f83c68 | 148 | </div> |
d3217560 | 149 | </div> |
14f83c68 | 150 | |
376d8f13 | 151 | <div class="footer-copyleft" i18n-title title="powered by PeerTube - CopyLeft 2015-2023"> |
090d100c | 152 | <a href="https://joinpeertube.org" class="me-1" target="_blank" rel="noopener noreferrer" i18n>powered by PeerTube</a> |
14f83c68 | 153 | |
090d100c | 154 | <a href="https://github.com/Chocobozzz/PeerTube/blob/develop/LICENSE" target="_blank" rel="noopener noreferrer"> |
376d8f13 | 155 | <span aria-label="copyleft" class="d-inline-block" style="transform: rotateY(180deg)">©</span> 2015-2023 |
090d100c | 156 | </a> |
d3217560 RK |
157 | </div> |
158 | </div> | |
8afc19a6 C |
159 | </div> |
160 | </menu> | |
161 | </div> | |
36f9424f | 162 | |
2f1548fd | 163 | <my-language-chooser #languageChooserModal></my-language-chooser> |
d3217560 | 164 | <my-quick-settings #quickSettingsModal></my-quick-settings> |