1 <nav id="topMenu" class="userPanel{if $__wcf->user->userID} userPanelLoggedIn{/if}">
2 {if $__wcf->user->userID}
3 <span class="userPanelAvatar" aria-hidden="true">{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)}</span>
5 <a href="{link controller='Login' url=$__wcf->getRequestURI()}{/link}" class="userPanelLoginLink jsTooltip" title="{lang}wcf.user.loginOrRegister{/lang}">
6 <span class="icon icon32 fa-sign-in" aria-hidden="true"></span>
10 <ul class="userPanelItems">
11 {if $__wcf->user->userID}
16 href="{$__wcf->user->getLink()}"
17 title="{lang}wcf.user.controlPanel{/lang}"
23 {@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)} <span>{lang}wcf.user.userNote{/lang}</span>
25 <div class="userMenu userMenuControlPanel" data-origin="userMenu" tabindex="-1" hidden>
26 <div class="userMenuHeader">
27 <div class="userMenuTitle">{lang}wcf.user.controlPanel{/lang}</div>
29 <div class="userMenuContent">
30 <div class="userMenuItem{if !MODULE_USER_RANK} userMenuItemSingleLine{/if}">
31 <div class="userMenuItemImage">
32 {@$__wcf->getUserProfileHandler()->getUserProfile()->getAvatar()->getImageTag(48)}
34 <div class="userMenuItemContent">
35 {* This is the unformatted username, custom styles might not work nicely here and
36 the consistent styling is used to provide visual anchors to identify links. *}
37 <a href="{$__wcf->user->getLink()}" class="userMenuItemLink">{$__wcf->user->username}</a>
40 <div class="userMenuItemMeta">
41 {if $__wcf->getUserProfileHandler()->getUserTitle()}
42 <span class="badge userTitleBadge{if $__wcf->getUserProfileHandler()->getRank() && $__wcf->getUserProfileHandler()->getRank()->cssClassName} {@$__wcf->getUserProfileHandler()->getRank()->cssClassName}{/if}">{$__wcf->getUserProfileHandler()->getUserTitle()}</span>
44 {if $__wcf->getUserProfileHandler()->getRank() && $__wcf->getUserProfileHandler()->getRank()->rankImage}
45 <span class="userRankImage">{@$__wcf->getUserProfileHandler()->getRank()->getImage()}</span>
51 <div class="userMenuContentDivider"></div>
52 <div class="userMenuContent">
53 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine">
54 <div class="userMenuItemImage">
55 <span class="icon icon32 fa-user-circle-o"></span>
57 <div class="userMenuItemContent">
58 <a href="{$__wcf->user->getLink()}" class="userMenuItemLink">{lang}wcf.user.myProfile{/lang}</a>
61 {if $__wcf->session->getPermission('admin.general.canUseAcp')}
62 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine">
63 <div class="userMenuItemImage">
64 <span class="icon icon32 fa-wrench"></span>
66 <div class="userMenuItemContent">
67 <a href="{link isACP=true}{/link}" class="userMenuItemLink">{lang}wcf.global.acp{/lang}</a>
72 <div class="userMenuContentDivider"></div>
73 <div class="userMenuContent userMenuContentScrollable">
74 {foreach from=$__wcf->getUserMenu()->getUserMenuItems() item=menuItem}
75 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine" data-category="{$menuItem[category]->menuItem}">
76 <div class="userMenuItemImage">
77 <span class="icon icon32 {$menuItem[category]->getIconClassName()}"></span>
79 <div class="userMenuItemContent">
80 <a href="{$menuItem[link]}" class="userMenuItemLink">
81 {$menuItem[category]->getTitle()}
87 <div class="userMenuFooter">
88 <form method="post" action="{link controller='Logout'}{/link}">
89 <a href="#" class="userMenuFooterLink" role="button">{lang}wcf.user.logout{/lang}</a>
94 <script data-relocate="true">
95 require(["WoltLabSuite/Core/Ui/User/Menu/ControlPanel"], ({ setup }) => setup());
99 <!-- user notifications -->
100 {if !$__hideUserMenu|isset}
101 <li id="userNotifications" data-count="{#$__wcf->getUserNotificationHandler()->getNotificationCount()}" data-title="Benachrichtigungen">
104 href="{link controller='NotificationList'}{/link}"
105 title="{lang}wcf.user.notification.notifications{/lang}"
109 aria-expanded="false"
111 <span class="icon icon32 fa-bell-o"></span> <span>{lang}wcf.user.notification.notifications{/lang}</span>{if $__wcf->getUserNotificationHandler()->getNotificationCount()} <span class="badge badgeUpdate">{#$__wcf->getUserNotificationHandler()->getNotificationCount()}</span>{/if}
113 {if !OFFLINE || $__wcf->session->getPermission('admin.general.canViewPageDuringOfflineMode')}
114 <script data-relocate="true">
115 require(["WoltLabSuite/Core/Language", "WoltLabSuite/Core/Ui/User/Menu/Data/Notification"], (Language, { setup }) => {
117 "wcf.user.notification.enableDesktopNotifications": "{jslang}wcf.user.notification.enableDesktopNotifications{/jslang}",
118 "wcf.user.notification.enableDesktopNotifications.button": "{jslang}wcf.user.notification.enableDesktopNotifications.button{/jslang}",
122 noItems: '{jslang}wcf.user.notification.noMoreNotifications{/jslang}',
123 settingsLink: '{link controller='NotificationSettings' encode=false}{/link}',
124 settingsTitle: '{jslang}wcf.user.notification.settings{/jslang}',
125 showAllLink: '{link controller='NotificationList' encode=false}{/link}',
126 showAllTitle: '{jslang}wcf.user.notification.showAll{/jslang}',
127 title: '{jslang}wcf.user.notification.notifications{/jslang}',
135 {if $__wcf->getLanguage()->getLanguages()|count > 1}
136 <li id="pageLanguageContainer">
137 <script data-relocate="true">
138 require(['WoltLabSuite/Core/Language/Chooser'], function(LanguageChooser) {
140 {implode from=$__wcf->getLanguage()->getLanguages() item=_language}
141 '{@$_language->languageID}': {
142 iconPath: '{@$_language->getIconPath()|encodeJS}',
143 languageName: '{@$_language|encodeJS}',
144 languageCode: '{@$_language->languageCode|encodeJS}'
149 var callback = function(listItem) {
151 var languageCode = elData(listItem, 'language-code');
152 var link = elBySel('link[hreflang="' + languageCode + '"]');
154 location = link.href;
157 location = window.location.toString().replace(/#.*/, '').replace(/(\?|&)l=[0-9]+/g, '');
160 var delimiter = (location.indexOf('?') == -1) ? '?' : '&';
161 window.location = location + delimiter + 'l=' + elData(listItem, 'language-id') + window.location.hash;
164 LanguageChooser.init('pageLanguageContainer', 'pageLanguageID', {@$__wcf->getLanguage()->languageID}, languages, callback);
170 <a class="loginLink" href="{link controller='Login' url=$__wcf->getRequestURI()}{/link}">{lang}wcf.user.loginOrRegister{/lang}</a>
174 {if !$__hideUserMenu|isset}
175 {if $__wcf->user->userID && $__wcf->session->getPermission('mod.general.canUseModeration')}
176 <li id="outstandingModeration" data-count="{#$__wcf->getModerationQueueManager()->getUnreadModerationCount()}">
179 href="{link controller='ModerationList'}{/link}"
180 title="{lang}wcf.moderation.moderation{/lang}"
184 aria-expanded="false"
186 <span class="icon icon32 fa-exclamation-triangle"></span>
187 <span>{lang}wcf.moderation.moderation{/lang}</span>
188 {if $__wcf->getModerationQueueManager()->getUnreadModerationCount()}<span class="badge badgeUpdate">{#$__wcf->getModerationQueueManager()->getUnreadModerationCount()}</span>{/if}
190 {if !OFFLINE || $__wcf->session->getPermission('admin.general.canViewPageDuringOfflineMode')}
191 <script data-relocate="true">
192 require(["WoltLabSuite/Core/Ui/User/Menu/Data/ModerationQueue"], ({ setup }) => {
194 deletedContent: '{jslang}wcf.moderation.showDeletedContent{/jslang}',
195 deletedContentLink: '{link controller='DeletedContentList' encode=false}{/link}',
196 noItems: '{jslang}wcf.moderation.noMoreItems{/jslang}',
197 showAllLink: '{link controller='ModerationList' encode=false}{/link}',
198 showAllTitle: '{jslang}wcf.moderation.showAll{/jslang}',
199 title: '{jslang}wcf.moderation.moderation{/jslang}'
207 {event name='menuItems'}
212 <a href="{link controller='Search'}{/link}" id="userPanelSearchButton" class="jsTooltip" title="{lang}wcf.global.search{/lang}"><span class="icon icon32 fa-search"></span> <span>{lang}wcf.global.search{/lang}</span></a>