1<?php 2 3/** 4 * DokuWiki Bootstrap3 Template: User Menu 5 * 6 * @link http://dokuwiki.org/template:bootstrap3 7 * @author Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com> 8 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 9 */ 10 11 12use dokuwiki\plugin\extension\Exception as ExtensionException; 13use dokuwiki\plugin\extension\Local; 14use dokuwiki\plugin\extension\Repository; 15 16global $INFO, $lang, $TPL; 17 18$use_avatar = $TPL->getConf('useAvatar'); 19 20$extensions_update = array(); 21$avatar_size = 96; 22$avatar_size_small = 32; 23 24if ($use_avatar) { 25 $avatar_img_small = $TPL->getAvatar($_SERVER['REMOTE_USER'], $INFO['userinfo']['mail'], $avatar_size_small); 26 $avatar_img = $TPL->getAvatar($_SERVER['REMOTE_USER'], $INFO['userinfo']['mail'], $avatar_size); 27} else { 28 $avatar_img = tpl_getMediaFile(array('images/avatar.png')); 29} 30 31$label_type = 'info'; 32$user_type = 'User'; 33 34if ($INFO['ismanager']) { 35 $label_type = 'warning'; 36 $user_type = 'Manager'; 37} 38 39if ($INFO['isadmin']) { 40 $label_type = 'danger'; 41 $user_type = 'Admin'; 42} 43 44if ($INFO['isadmin'] && $TPL->getConf('notifyExtensionsUpdate')) { 45 if (class_exists(Local::class)) { 46 // new extension manager since Librarian 47 try { 48 $extensions = (new Local())->getExtensions(); 49 Repository::getInstance()->initExtensions(array_keys($extensions)); 50 foreach ($extensions as $extension) { 51 if ($extension->isEnabled() && $extension->isUpdateAvailable()) { 52 $extensions_update[] = $extension->getDisplayName(); 53 } 54 } 55 } catch (ExtensionException $ignore) { 56 // Ignore the exception 57 } 58 } else { 59 // old extension manager until Kaos 60 /** @var $plugin_controller PluginController */ 61 global $plugin_controller; 62 if ($extension = plugin_load('helper', 'extension_extension')) { 63 64 foreach ($plugin_controller->getList('', true) as $plugin) { 65 $extension->setExtension($plugin); 66 if ($extension->updateAvailable() && $extension->isEnabled()) { 67 $extensions_update[] = $extension->getDisplayName(); 68 } 69 } 70 } 71 } 72 73 sort($extensions_update); 74} 75 76?> 77<!-- user-menu --> 78<ul class="nav navbar-nav" id="dw__user_menu"> 79 <li class="dropdown"> 80 81 <a href="<?php wl($ID) ?>" class="dropdown-toggle" data-target="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 82 <?php if ($use_avatar): ?> 83 <img alt="<?php echo hsc($_SERVER['REMOTE_USER']) ?>" src="<?php echo $avatar_img_small ?>" class="img-circle profile-image" width="<?php echo $avatar_size_small ?>" height="<?php echo $avatar_size_small ?>" /> 84 <?php else: ?> 85 <?php echo iconify('mdi:account'); ?> 86 <?php endif; ?> <span class="hidden-lg hidden-md hidden-sm"><?php echo hsc($_SERVER['REMOTE_USER']) ?></span> <span class="caret"></span> 87 </a> 88 89 <ul class="dropdown-menu" role="menu"> 90 91 <li> 92 93 <div class="container-fluid"> 94 95 <p class="text-right"> 96 <span style="cursor:help" class="label label-<?php echo $label_type; ?>" title="<?php echo tpl_getLang('user_groups'); ?>: <?php echo join(', ', $INFO['userinfo']['grps']); ?>"> 97 <?php echo $user_type; ?> 98 </span> 99 </p> 100 101 <p class="text-center"> 102 <img alt="<?php echo hsc($_SERVER['REMOTE_USER']) ?>" src="<?php echo $avatar_img ?>" class="img-circle" width="<?php echo $avatar_size ?>" height="<?php echo $avatar_size ?>" /> 103 </p> 104 105 <div class="mb-2"> 106 <div class="mb-2"> 107 <strong><?php echo hsc($INFO['userinfo']['name']) ?></strong> 108 </div> 109 <div class="small"> 110 <bdi><?php echo hsc($_SERVER['REMOTE_USER']) ?></bdi> 111 </div> 112 <div class="small"> 113 <?php echo $INFO['userinfo']['mail'] ?> 114 </div> 115 </div> 116 117 </div> 118 119 </li> 120 121 <li class="divider"></li> 122 123 <?php if ($TPL->getConf('showUserHomeLink')): ?> 124 <li class="dropdown-header">Home-Page</li> 125 <?php 126 if ($userhomepage = $TPL->getPlugin('userhomepage')): 127 echo '<li><a rel="nofollow" href="' . wl($userhomepage->getPublicID()) . '" title="'. $userhomepage->getLang('publicpage') .'">' . 128 iconify('mdi:home') . ' ' . $userhomepage->getLang('publicpage') .'</a></li>'; 129 130 echo '<li><a rel="nofollow" href="' . wl($userhomepage->getPrivateID()) . '" title="'. $userhomepage->getLang('privatenamespace') .'">' . 131 iconify('mdi:home-account') . ' ' . $userhomepage->getLang('privatenamespace') .'</a></li>'; 132 else: 133 ?> 134 135 <li> 136 <a href="<?php echo $TPL->getUserHomePageLink() ?>" title="Home-Page" rel="nofollow"> 137 <?php echo iconify('mdi:home-account'); ?> Home-Page 138 </a> 139 </li> 140 141 <?php endif; ?> 142 <li class="divider"></li> 143 <?php endif; ?> 144 145 <li class="dropdown-header"><?php echo $lang['user_tools'] ?></li> 146 147 <?php 148 149 echo $TPL->getToolMenuItemLink('user', 'profile'); 150 151 if ($INFO['isadmin']) { 152 echo $TPL->getToolMenuItemLink('user', 'admin'); 153 } 154 155 ?> 156 157 <?php if ($INFO['isadmin'] && count($extensions_update)): ?> 158 <li> 159 <a href="<?php echo wl($ID, array('do' => 'admin', 'page' => 'extension')); ?>" title=" - <?php echo implode(' - ', $extensions_update) ?>"> 160 <?php echo iconify('mdi:puzzle', array('class' => 'text-success')) ?> <?php echo tpl_getLang('extensions_update'); ?> <span class="badge"><?php echo count($extensions_update) ?></span> 161 </a> 162 </li> 163 <?php endif; ?> 164 165 <li class="divider"></li> 166 167 <?php 168 169 // Add the user menu 170 171 $usermenu_pageid = null; 172 $user_homepage_id = $TPL->getUserHomePageID(); 173 174 foreach (array("$user_homepage_id:usermenu", 'usermenu') as $id) { 175 $usermenu_pageid = page_findnearest($id, $TPL->getConf('useACL')); 176 if ($usermenu_pageid) break; 177 } 178 179 if ($usermenu_pageid) { 180 181 $html = new simple_html_dom; 182 $html->load($TPL->includePage($usermenu_pageid, true), true, false); 183 184 foreach ($html->find('h1,h2,h3,h4,h5,h6') as $elm) { 185 $elm->outertext = '<li class="dropdown-header">' . $elm->innertext . '</li>'; 186 } 187 foreach ($html->find('hr') as $elm) { 188 $elm->outertext = '<li class="divider"></li>'; 189 } 190 foreach ($html->find('ul') as $elm) { 191 $elm->outertext = '' . $elm->innertext; 192 } 193 foreach ($html->find('div') as $elm) { 194 $elm->outertext = $elm->innertext; 195 } 196 197 $content = $html->save(); 198 199 $html->clear(); 200 unset($html); 201 202 $content = str_replace('urlextern', '', $content); 203 204 echo $content; 205 echo '<li class="divider"></li>'; 206 207 } 208 ?> 209 210 <?php 211 echo $TPL->getToolMenuItemLink('user', 'logout'); 212 ?> 213 214 </ul> 215 </li> 216</ul> 217<!-- /user-menu --> 218