Fix broken `HtmlNodeUnfurlLink.class.php`
[GitHub/WoltLab/WCF.git] / com.woltlab.wcf / templates / pageHeaderUser.tpl
CommitLineData
0a6f84dc 1<nav id="topMenu" class="userPanel{if $__wcf->user->userID} userPanelLoggedIn{/if}">
b8eab696
AE
2 <ul class="userPanelItems">
3 {if $__wcf->user->userID}
4 <!-- user menu -->
5 <li id="userMenu">
677bdb69
AE
6 <a
7 class="jsTooltip"
8 href="{$__wcf->user->getLink()}"
9 title="{lang}wcf.user.controlPanel{/lang}"
10 role="button"
11 tabindex="0"
12 aria-haspopup="true"
13 aria-expanded="false"
14 >
04e04bfb 15 {@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32, false)} <span>{lang}wcf.user.userNote{/lang}</span>
677bdb69
AE
16 </a>
17 <div class="userMenu userMenuControlPanel" data-origin="userMenu" tabindex="-1" hidden>
18 <div class="userMenuHeader">
19 <div class="userMenuTitle">{lang}wcf.user.controlPanel{/lang}</div>
b8eab696 20 </div>
677bdb69 21 <div class="userMenuContent">
9b76f5bb 22 <div class="userMenuItem{if !MODULE_USER_RANK} userMenuItemSingleLine userMenuItemUserHeader{/if}">
677bdb69
AE
23 <div class="userMenuItemImage">
24 {@$__wcf->getUserProfileHandler()->getUserProfile()->getAvatar()->getImageTag(48)}
25 </div>
26 <div class="userMenuItemContent">
27 {* This is the unformatted username, custom styles might not work nicely here and
28 the consistent styling is used to provide visual anchors to identify links. *}
29 <a href="{$__wcf->user->getLink()}" class="userMenuItemLink">{$__wcf->user->username}</a>
677bdb69 30 </div>
f9ea63e5 31 {if MODULE_USER_RANK}
677bdb69 32 <div class="userMenuItemMeta">
f9ea63e5
AE
33 {if $__wcf->getUserProfileHandler()->getUserTitle()}
34 <span class="badge userTitleBadge{if $__wcf->getUserProfileHandler()->getRank() && $__wcf->getUserProfileHandler()->getRank()->cssClassName} {@$__wcf->getUserProfileHandler()->getRank()->cssClassName}{/if}">{$__wcf->getUserProfileHandler()->getUserTitle()}</span>
35 {/if}
36 {if $__wcf->getUserProfileHandler()->getRank() && $__wcf->getUserProfileHandler()->getRank()->rankImage}
37 <span class="userRankImage">{@$__wcf->getUserProfileHandler()->getRank()->getImage()}</span>
38 {/if}
677bdb69 39 </div>
f9ea63e5 40 {/if}
677bdb69
AE
41 </div>
42 </div>
ec44bfad
MW
43 {hascontent}
44 <div class="userMenuContentDivider"></div>
45 <div class="userMenuContent">
46 {content}
47 {if $__wcf->getUserProfileHandler()->canEditOwnProfile()}
48 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine">
49 <div class="userMenuItemImage">
d333ec38 50 {icon size=16 name='pencil'}
ec44bfad
MW
51 </div>
52 <div class="userMenuItemContent">
53 <a href="{link controller='User' object=$__wcf->user editOnInit=true}{/link}" class="userMenuItemLink">{lang}wcf.user.editProfile{/lang}</a>
54 </div>
55 </div>
56 {/if}
57 {if $__wcf->session->getPermission('admin.general.canUseAcp')}
58 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine">
59 <div class="userMenuItemImage">
d333ec38 60 {icon size=16 name='wrench'}
ec44bfad
MW
61 </div>
62 <div class="userMenuItemContent">
63 <a href="{link isACP=true}{/link}" class="userMenuItemLink">{lang}wcf.global.acp{/lang}</a>
64 </div>
65 </div>
66 {/if}
67 {/content}
677bdb69 68 </div>
ec44bfad 69 {/hascontent}
677bdb69 70 <div class="userMenuContentDivider"></div>
4996d792 71 <div class="userMenuContent userMenuContentScrollable">
677bdb69 72 {foreach from=$__wcf->getUserMenu()->getUserMenuItems() item=menuItem}
f9ea63e5 73 <div class="userMenuItem userMenuItemNarrow userMenuItemSingleLine" data-category="{$menuItem[category]->menuItem}">
677bdb69 74 <div class="userMenuItemImage">
d333ec38 75 {@$menuItem[category]->getIcon()->toHtml(16)}
677bdb69
AE
76 </div>
77 <div class="userMenuItemContent">
78 <a href="{$menuItem[link]}" class="userMenuItemLink">
79 {$menuItem[category]->getTitle()}
80 </a>
81 </div>
677bdb69
AE
82 </div>
83 {/foreach}
84 </div>
85 <div class="userMenuFooter">
372f863c 86 <form method="post" action="{link controller='Logout'}{/link}">
91dd324e 87 <button type="submit" class="userMenuFooterLink">{lang}wcf.user.logout{/lang}</button>
372f863c
AE
88 {csrfToken}
89 </form>
b8eab696 90 </div>
b8eab696 91 </div>
51547f2c 92 <script data-relocate="true">
677bdb69 93 require(["WoltLabSuite/Core/Ui/User/Menu/ControlPanel"], ({ setup }) => setup());
51547f2c 94 </script>
b8eab696
AE
95 </li>
96
b8eab696
AE
97 <!-- user notifications -->
98 {if !$__hideUserMenu|isset}
18b442af 99 <li id="userNotifications" data-count="{#$__wcf->getUserNotificationHandler()->getNotificationCount()}">
ea0c0ef6
AE
100 <a
101 class="jsTooltip"
102 href="{link controller='NotificationList'}{/link}"
103 title="{lang}wcf.user.notification.notifications{/lang}"
104 role="button"
105 tabindex="0"
106 aria-haspopup="true"
107 aria-expanded="false"
108 >
912c5656 109 {icon size=32 name='bell' type='solid'} <span>{lang}wcf.user.notification.notifications{/lang}</span>{if $__wcf->getUserNotificationHandler()->getNotificationCount()} <span class="badge badgeUpdate">{#$__wcf->getUserNotificationHandler()->getNotificationCount()}</span>{/if}
ea0c0ef6 110 </a>
b8eab696
AE
111 {if !OFFLINE || $__wcf->session->getPermission('admin.general.canViewPageDuringOfflineMode')}
112 <script data-relocate="true">
f99a0caf
AE
113 require(["WoltLabSuite/Core/Language", "WoltLabSuite/Core/Ui/User/Menu/Data/Notification"], (Language, { setup }) => {
114 Language.addObject({
115 "wcf.user.notification.enableDesktopNotifications": "{jslang}wcf.user.notification.enableDesktopNotifications{/jslang}",
116 "wcf.user.notification.enableDesktopNotifications.button": "{jslang}wcf.user.notification.enableDesktopNotifications.button{/jslang}",
117 });
118
8eaab6e0 119 setup({
9f663473 120 noItems: '{jslang}wcf.user.notification.noMoreNotifications{/jslang}',
b8eab696 121 settingsLink: '{link controller='NotificationSettings' encode=false}{/link}',
8eaab6e0 122 settingsTitle: '{jslang}wcf.user.notification.settings{/jslang}',
b8eab696 123 showAllLink: '{link controller='NotificationList' encode=false}{/link}',
8eaab6e0
AE
124 showAllTitle: '{jslang}wcf.user.notification.showAll{/jslang}',
125 title: '{jslang}wcf.user.notification.notifications{/jslang}',
677bdb69 126 });
b8eab696 127 });
b8eab696 128 </script>
320f4a6d 129 {/if}
b8eab696
AE
130 </li>
131 {/if}
132 {else}
d4e8bc05
AE
133 {if $__wcf->getLanguage()->getLanguages()|count > 1}
134 <li id="pageLanguageContainer">
135 <script data-relocate="true">
6e5b3652 136 require(['WoltLabSuite/Core/Language/Chooser'], function(LanguageChooser) {
d4e8bc05 137 var languages = {
fb062f13
MS
138 {implode from=$__wcf->getLanguage()->getLanguages() item=_language}
139 '{@$_language->languageID}': {
140 iconPath: '{@$_language->getIconPath()|encodeJS}',
141 languageName: '{@$_language|encodeJS}',
142 languageCode: '{@$_language->languageCode|encodeJS}'
d4e8bc05
AE
143 }
144 {/implode}
145 };
ff110591 146
d4e8bc05 147 var callback = function(listItem) {
ff110591
MW
148 var location;
149 var languageCode = elData(listItem, 'language-code');
150 var link = elBySel('link[hreflang="' + languageCode + '"]');
151 if (link !== null) {
152 location = link.href;
153 }
154 else {
155 location = window.location.toString().replace(/#.*/, '').replace(/(\?|&)l=[0-9]+/g, '');
156 }
d4e8bc05 157
ff110591 158 var delimiter = (location.indexOf('?') == -1) ? '?' : '&';
d4e8bc05
AE
159 window.location = location + delimiter + 'l=' + elData(listItem, 'language-id') + window.location.hash;
160 };
161
51ab1086 162 LanguageChooser.init('pageLanguageContainer', 'pageLanguageID', {@$__wcf->getLanguage()->languageID}, languages, callback);
b2e0e0cd 163 });
b8eab696
AE
164 </script>
165 </li>
166 {/if}
6e5b3652 167 <li id="userLogin">
0400ce37
TD
168 <a
169 class="loginLink"
170 href="{link controller='Login' url=$__wcf->getRequestURI()}{/link}"
171 rel="nofollow"
8ede3ad5 172 >{lang}wcf.user.button.login{/lang}</a>
e57fef1c 173 </li>
f5bd2a21 174 {if $__userAuthConfig->canRegister}
8ede3ad5
MW
175 <li id="userRegistration">
176 <a
177 class="registrationLink"
178 href="{link controller='Register'}{/link}"
179 rel="nofollow"
180 >{lang}wcf.user.button.register{/lang}</a>
181 </li>
182 {/if}
b8eab696
AE
183 {/if}
184
185 {if !$__hideUserMenu|isset}
186 {if $__wcf->user->userID && $__wcf->session->getPermission('mod.general.canUseModeration')}
0882d872 187 <li id="outstandingModeration" data-count="{#$__wcf->getModerationQueueManager()->getUnreadModerationCount()}">
ea0c0ef6
AE
188 <a
189 class="jsTooltip"
190 href="{link controller='ModerationList'}{/link}"
191 title="{lang}wcf.moderation.moderation{/lang}"
192 role="button"
193 tabindex="0"
194 aria-haspopup="true"
195 aria-expanded="false"
196 >
b54e4ff8 197 {icon size=32 name='triangle-exclamation'}
b8eab696 198 <span>{lang}wcf.moderation.moderation{/lang}</span>
e2368a74 199 {if $__wcf->getModerationQueueManager()->getUnreadModerationCount()}<span class="badge badgeUpdate">{#$__wcf->getModerationQueueManager()->getUnreadModerationCount()}</span>{/if}
b8eab696
AE
200 </a>
201 {if !OFFLINE || $__wcf->session->getPermission('admin.general.canViewPageDuringOfflineMode')}
202 <script data-relocate="true">
cf9e11c3
AE
203 require(["WoltLabSuite/Core/Ui/User/Menu/Data/ModerationQueue"], ({ setup }) => {
204 setup({
9f663473 205 deletedContent: '{jslang}wcf.moderation.showDeletedContent{/jslang}',
b8eab696 206 deletedContentLink: '{link controller='DeletedContentList' encode=false}{/link}',
9f663473 207 noItems: '{jslang}wcf.moderation.noMoreItems{/jslang}',
b8eab696 208 showAllLink: '{link controller='ModerationList' encode=false}{/link}',
cf9e11c3 209 showAllTitle: '{jslang}wcf.moderation.showAll{/jslang}',
9f663473 210 title: '{jslang}wcf.moderation.moderation{/jslang}'
677bdb69 211 });
b8eab696 212 });
b8eab696
AE
213 </script>
214 {/if}
215 </li>
51547f2c 216 {/if}
b8eab696
AE
217
218 {event name='menuItems'}
219 {/if}
74029e21
AE
220
221 <!-- page search -->
e7500593 222 <li>
b54e4ff8 223 <a href="{link controller='Search'}{/link}" id="userPanelSearchButton" class="jsTooltip" title="{lang}wcf.global.search{/lang}">{icon size=32 name='magnifying-glass'} <span>{lang}wcf.global.search{/lang}</span></a>
ee983961 224 </li>
b8eab696 225 </ul>
bf1461c2 226</nav>
dcf86f92 227{if $__wcf->user->userID}
eecd78e1 228 <button type="button" class="pageHeaderUserMobile" aria-expanded="false" aria-label="{lang}wcf.menu.user{/lang}">
dcf86f92
AE
229 <span class="pageHeaderUserMobileInactive">
230 {@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32, false)}
231 </span>
232 <span class="pageHeaderUserMobileActive">
233 {icon size=32 name='xmark'}
234 </span>
235 </button>
236{else}
fa0bbbca
TD
237 <a
238 href="{link controller='Login' url=$__wcf->getRequestURI()}{/link}"
239 class="userPanelLoginLink jsTooltip"
8ede3ad5 240 title="{lang}wcf.user.button.login{/lang}"
fa0bbbca
TD
241 rel="nofollow"
242 >
dcf86f92
AE
243 {icon size=32 name='arrow-right-to-bracket'}
244 </a>
245{/if}