1dccf9898SAnika Henke<?php 2dccf9898SAnika Henke/** 3dccf9898SAnika Henke * Template Functions 4dccf9898SAnika Henke * 5dccf9898SAnika Henke * This file provides template specific custom functions that are 6dccf9898SAnika Henke * not provided by the DokuWiki core. 7dccf9898SAnika Henke * It is common practice to start each function with an underscore 8dccf9898SAnika Henke * to make sure it won't interfere with future core functions. 9dccf9898SAnika Henke */ 10dccf9898SAnika Henke 11dccf9898SAnika Henke// must be run from within DokuWiki 12dccf9898SAnika Henkeif (!defined('DOKU_INC')) die(); 13ec13a77cSLouis Ouellet 14ec13a77cSLouis Ouellet/** 15ec13a77cSLouis Ouellet * Get the logo of the wiki 16ec13a77cSLouis Ouellet * 17ec13a77cSLouis Ouellet * @return string 18ec13a77cSLouis Ouellet */ 19ec13a77cSLouis Ouelletif (!function_exists('tpl_getLogo')) { 20ec13a77cSLouis Ouellet function tpl_getLogo() 21ec13a77cSLouis Ouellet { 22ec13a77cSLouis Ouellet global $ID,$conf; 23ec13a77cSLouis Ouellet 24ec13a77cSLouis Ouellet $return = ''; 25ec13a77cSLouis Ouellet $logoSize = array(); 26ec13a77cSLouis Ouellet $logoImages = array(); 27ec13a77cSLouis Ouellet if(tpl_getConf('doLogoChangesByNamespace')){ 28ec13a77cSLouis Ouellet $namespace = ""; 29ec13a77cSLouis Ouellet $namespaces = array(); 30ec13a77cSLouis Ouellet foreach(explode(':',getNS($ID)) as $ns){ 31ec13a77cSLouis Ouellet $namespace .= "$ns:"; 32ec13a77cSLouis Ouellet $namespaces[] = $namespace; 33ec13a77cSLouis Ouellet } 34ec13a77cSLouis Ouellet foreach(array_reverse($namespaces) as $namespace){ 35ec13a77cSLouis Ouellet $logoImages[] = ":".trim($namespace,":").":logo.png"; 36ec13a77cSLouis Ouellet } 37ec13a77cSLouis Ouellet } 38ec13a77cSLouis Ouellet $logoImages[] = ':logo.png'; 39ec13a77cSLouis Ouellet $logoImages[] = ':wiki:logo.png'; 40ec13a77cSLouis Ouellet $logoImages[] = 'images/logo.png'; 41ec13a77cSLouis Ouellet $logo = tpl_getMediaFile($logoImages, false, $logoSize); 42ec13a77cSLouis Ouellet 43ec13a77cSLouis Ouellet $return .= '<a class="site-logo" href="'.wl().'" title="'.$conf['title'].'" rel="home" accesskey="h" title="[H]">'; 44ec13a77cSLouis Ouellet $return .= '<img src="'.$logo.'" '.$logoSize[3].' alt="" class="no-grav header-image" />'; 45ec13a77cSLouis Ouellet $return .= '</a>'; 46ec13a77cSLouis Ouellet 47ec13a77cSLouis Ouellet return $return; 48ec13a77cSLouis Ouellet } 49ec13a77cSLouis Ouellet} 50df5bf7f3SLouis Ouellet 51df5bf7f3SLouis Ouellet/** 52df5bf7f3SLouis Ouellet * Generate the gravatar URL for a given email 53df5bf7f3SLouis Ouellet * 54df5bf7f3SLouis Ouellet * @return string 55df5bf7f3SLouis Ouellet */ 56df5bf7f3SLouis Ouelletif (!function_exists('tpl_getGravatarURL')) { 57df5bf7f3SLouis Ouellet function tpl_getGravatarURL($email, $size = 96) 58df5bf7f3SLouis Ouellet { 59df5bf7f3SLouis Ouellet return 'https://www.gravatar.com/avatar/'.md5(strtolower(trim($email))).'?s='.$size; 60df5bf7f3SLouis Ouellet } 61df5bf7f3SLouis Ouellet} 62df5bf7f3SLouis Ouellet 63df5bf7f3SLouis Ouellet 64df5bf7f3SLouis Ouellet/** 65df5bf7f3SLouis Ouellet * Generate the HTML for a menu 66df5bf7f3SLouis Ouellet * 67df5bf7f3SLouis Ouellet * @return string 68df5bf7f3SLouis Ouellet */ 69df5bf7f3SLouis Ouelletif (!function_exists('tpl_getMenu')) { 70df5bf7f3SLouis Ouellet function tpl_getMenu($menu) 71df5bf7f3SLouis Ouellet { 72df5bf7f3SLouis Ouellet switch($menu){ 73df5bf7f3SLouis Ouellet case 'usermenu': 74df5bf7f3SLouis Ouellet return tpl_getUserMenu(); 75df5bf7f3SLouis Ouellet break; 76*7311aa0dSLouis Ouellet case 'sidebarmenu': 77*7311aa0dSLouis Ouellet return tpl_getSidebarMenu(); 78*7311aa0dSLouis Ouellet break; 79df5bf7f3SLouis Ouellet } 80df5bf7f3SLouis Ouellet } 81df5bf7f3SLouis Ouellet} 82df5bf7f3SLouis Ouellet 83df5bf7f3SLouis Ouellet/** 84df5bf7f3SLouis Ouellet * Generate the HTML for the user menu 85df5bf7f3SLouis Ouellet * 86df5bf7f3SLouis Ouellet * @return string 87df5bf7f3SLouis Ouellet */ 88df5bf7f3SLouis Ouelletif (!function_exists('tpl_getUserMenu')) { 89df5bf7f3SLouis Ouellet function tpl_getUserMenu() 90df5bf7f3SLouis Ouellet { 91df5bf7f3SLouis Ouellet global $lang,$ID,$conf,$INFO; 92df5bf7f3SLouis Ouellet 93df5bf7f3SLouis Ouellet $return = ''; 94df5bf7f3SLouis Ouellet 95df5bf7f3SLouis Ouellet $items = (new \dokuwiki\Menu\UserMenu())->getItems(); 96df5bf7f3SLouis Ouellet 97df5bf7f3SLouis Ouellet if(isset($INFO['userinfo'])){ 98df5bf7f3SLouis Ouellet $return .= '<div class="dropdown user-tools">'; 9936603110SLouis Ouellet $return .= '<a href="'.wl($ID).'" class="dropdown-toggle" title="'.$lang['user_tools'].'" data-target="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'; 100df5bf7f3SLouis Ouellet $return .= '<i class="bi bi-person"></i>'.$INFO['userinfo']['name']; 101df5bf7f3SLouis Ouellet $return .= '</a>'; 102df5bf7f3SLouis Ouellet $return .= '<ul class="dropdown-menu" role="menu">'; 103df5bf7f3SLouis Ouellet $return .= '<li>'; 104df5bf7f3SLouis Ouellet $return .= '<p class="avatar">'; 105df5bf7f3SLouis Ouellet $return .= '<img alt="'.$INFO['userinfo']['name'].'" src="'.tpl_getGravatarURL($INFO['userinfo']['mail']).'" />'; 106df5bf7f3SLouis Ouellet $return .= '</p>'; 107df5bf7f3SLouis Ouellet $return .= '</li>'; 108df5bf7f3SLouis Ouellet foreach($items as $item) { 109df5bf7f3SLouis Ouellet $return .= '<li>' 110df5bf7f3SLouis Ouellet .'<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 111df5bf7f3SLouis Ouellet .'<i></i> ' 112df5bf7f3SLouis Ouellet .$item->getLabel() 113df5bf7f3SLouis Ouellet .'</a></li>'; 114df5bf7f3SLouis Ouellet } 115df5bf7f3SLouis Ouellet $return .= '</ul>'; 116df5bf7f3SLouis Ouellet $return .= '</div>'; 117df5bf7f3SLouis Ouellet } else { 118df5bf7f3SLouis Ouellet $return .= '<div class="inline user-tools">'; 119df5bf7f3SLouis Ouellet foreach($items as $item) { 120df5bf7f3SLouis Ouellet $return .= '<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 121df5bf7f3SLouis Ouellet .'<i></i> ' 122df5bf7f3SLouis Ouellet .$item->getLabel() 123df5bf7f3SLouis Ouellet .'</a>'; 124df5bf7f3SLouis Ouellet } 125df5bf7f3SLouis Ouellet $return .= '</div>'; 126df5bf7f3SLouis Ouellet } 127df5bf7f3SLouis Ouellet 128df5bf7f3SLouis Ouellet return $return; 129df5bf7f3SLouis Ouellet } 130df5bf7f3SLouis Ouellet} 131*7311aa0dSLouis Ouellet 132*7311aa0dSLouis Ouellet/** 133*7311aa0dSLouis Ouellet * Generate the HTML for the sidebar menus 134*7311aa0dSLouis Ouellet * 135*7311aa0dSLouis Ouellet * @return string 136*7311aa0dSLouis Ouellet */ 137*7311aa0dSLouis Ouelletif (!function_exists('tpl_getSidebarMenu')) { 138*7311aa0dSLouis Ouellet function tpl_getSidebarMenu() 139*7311aa0dSLouis Ouellet { 140*7311aa0dSLouis Ouellet global $lang,$ID,$conf,$INFO; 141*7311aa0dSLouis Ouellet 142*7311aa0dSLouis Ouellet $userItems = (new \dokuwiki\Menu\UserMenu())->getItems(); 143*7311aa0dSLouis Ouellet $siteItems = (new \dokuwiki\Menu\SiteMenu())->getItems(); 144*7311aa0dSLouis Ouellet 145*7311aa0dSLouis Ouellet $return = ''; 146*7311aa0dSLouis Ouellet 147*7311aa0dSLouis Ouellet $return .= '<div id="writr__sidebar__tools">'; 148*7311aa0dSLouis Ouellet 149*7311aa0dSLouis Ouellet if(isset($INFO['userinfo'])){ 150*7311aa0dSLouis Ouellet $return .= '<div class="user-tools">'; 151*7311aa0dSLouis Ouellet $return .= '<a href="'.wl($ID).'" class="" title="'.$lang['user_tools'].'" data-target="#user-tools-menu" data-toggle="collapse" role="button" aria-haspopup="true" aria-expanded="false">'; 152*7311aa0dSLouis Ouellet $return .= '<img alt="'.$INFO['userinfo']['name'].'" src="'.tpl_getGravatarURL($INFO['userinfo']['mail'], 32).'" />'; 153*7311aa0dSLouis Ouellet $return .= '<span>'.$INFO['userinfo']['name'].'</span>'; 154*7311aa0dSLouis Ouellet $return .= '</a>'; 155*7311aa0dSLouis Ouellet $return .= '<div id="user-tools-menu" class="collapsed">'; 156*7311aa0dSLouis Ouellet $return .= '<ul class="menu" role="menu">'; 157*7311aa0dSLouis Ouellet foreach($userItems as $item) { 158*7311aa0dSLouis Ouellet $return .= '<li>' 159*7311aa0dSLouis Ouellet .'<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 160*7311aa0dSLouis Ouellet .'<i></i> ' 161*7311aa0dSLouis Ouellet .$item->getLabel() 162*7311aa0dSLouis Ouellet .'</a></li>'; 163*7311aa0dSLouis Ouellet } 164*7311aa0dSLouis Ouellet $return .= '</ul>'; 165*7311aa0dSLouis Ouellet $return .= '</div>'; 166*7311aa0dSLouis Ouellet $return .= '</div>'; 167*7311aa0dSLouis Ouellet } else { 168*7311aa0dSLouis Ouellet $return .= '<div class="user-tools">'; 169*7311aa0dSLouis Ouellet foreach($userItems as $item) { 170*7311aa0dSLouis Ouellet $return .= '<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 171*7311aa0dSLouis Ouellet .'<i></i> ' 172*7311aa0dSLouis Ouellet .$item->getLabel() 173*7311aa0dSLouis Ouellet .'</a>'; 174*7311aa0dSLouis Ouellet } 175*7311aa0dSLouis Ouellet $return .= '</div>'; 176*7311aa0dSLouis Ouellet } 177*7311aa0dSLouis Ouellet 178*7311aa0dSLouis Ouellet $return .= '</div>'; 179*7311aa0dSLouis Ouellet 180*7311aa0dSLouis Ouellet return $return; 181*7311aa0dSLouis Ouellet } 182*7311aa0dSLouis Ouellet} 183