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/** 15*a5bfa42cSLouis Ouellet * Generate the HTML for the Site-Branding Area 16ec13a77cSLouis Ouellet * 17ec13a77cSLouis Ouellet * @return string 18ec13a77cSLouis Ouellet */ 19*a5bfa42cSLouis Ouelletif (!function_exists('tpl_getSiteBranding')) { 20*a5bfa42cSLouis Ouellet function tpl_getSiteBranding() 21ec13a77cSLouis Ouellet { 22*a5bfa42cSLouis Ouellet // Retrieve the global variables 23ec13a77cSLouis Ouellet global $ID,$conf; 24ec13a77cSLouis Ouellet 25*a5bfa42cSLouis Ouellet // Initialize the return value 26ec13a77cSLouis Ouellet $return = ''; 27*a5bfa42cSLouis Ouellet 28*a5bfa42cSLouis Ouellet // Initialize the logo size and images 29ec13a77cSLouis Ouellet $logoSize = array(); 30ec13a77cSLouis Ouellet $logoImages = array(); 31ec13a77cSLouis Ouellet if(tpl_getConf('doLogoChangesByNamespace')){ 32ec13a77cSLouis Ouellet $namespace = ""; 33ec13a77cSLouis Ouellet $namespaces = array(); 34ec13a77cSLouis Ouellet foreach(explode(':',getNS($ID)) as $ns){ 35ec13a77cSLouis Ouellet $namespace .= "$ns:"; 36ec13a77cSLouis Ouellet $namespaces[] = $namespace; 37ec13a77cSLouis Ouellet } 38ec13a77cSLouis Ouellet foreach(array_reverse($namespaces) as $namespace){ 39ec13a77cSLouis Ouellet $logoImages[] = ":".trim($namespace,":").":logo.png"; 40ec13a77cSLouis Ouellet } 41ec13a77cSLouis Ouellet } 42ec13a77cSLouis Ouellet $logoImages[] = ':logo.png'; 43ec13a77cSLouis Ouellet $logoImages[] = ':wiki:logo.png'; 44ec13a77cSLouis Ouellet $logoImages[] = 'images/logo.png'; 45ec13a77cSLouis Ouellet $logo = tpl_getMediaFile($logoImages, false, $logoSize); 46633ba5c6SLouis Ouellet $link = wl(); 47633ba5c6SLouis Ouellet if(tpl_getConf('doLogoLinkChangesByNamespace')){ 4857925973SLouis Ouellet $link = str_replace(['/_media','logo.png'],['',$conf['start']],$logo); 49633ba5c6SLouis Ouellet } 50ec13a77cSLouis Ouellet 51633ba5c6SLouis Ouellet $return .= '<a class="site-logo" href="'.$link.'" title="'.$conf['title'].'" rel="home" accesskey="h" title="[H]">'; 52ec13a77cSLouis Ouellet $return .= '<img src="'.$logo.'" '.$logoSize[3].' alt="" class="no-grav header-image" />'; 53ec13a77cSLouis Ouellet $return .= '</a>'; 54ec13a77cSLouis Ouellet 55*a5bfa42cSLouis Ouellet // Initialize the site branding 56*a5bfa42cSLouis Ouellet $title = $conf['title']; 57*a5bfa42cSLouis Ouellet if(tpl_getConf('doTitleChangesByNamespace')){ 58*a5bfa42cSLouis Ouellet $nstitle = tpl_include_page('nstitle', 0, 1); 59*a5bfa42cSLouis Ouellet if ($nstitle) { 60*a5bfa42cSLouis Ouellet $title = $nstitle; 61*a5bfa42cSLouis Ouellet } 62*a5bfa42cSLouis Ouellet } 63*a5bfa42cSLouis Ouellet $tagline = $conf['tagline']; 64*a5bfa42cSLouis Ouellet if(tpl_getConf('doTaglineChangesByNamespace')){ 65*a5bfa42cSLouis Ouellet $nstagline = tpl_include_page('nstagline', 0, 1); 66*a5bfa42cSLouis Ouellet if ($nstagline) { 67*a5bfa42cSLouis Ouellet $tagline = $nstagline; 68*a5bfa42cSLouis Ouellet } 69*a5bfa42cSLouis Ouellet } 70*a5bfa42cSLouis Ouellet $return .= '<div class="site-branding">'; 71*a5bfa42cSLouis Ouellet $return .= '<h1 class="site-title"><a href="'.$link.'" rel="home" accesskey="h" title="[H]">'.$title.'</a></h1>'; 72*a5bfa42cSLouis Ouellet if($tagline){ 73*a5bfa42cSLouis Ouellet $return .= '<h2 class="site-description">'.$tagline.'</h2>'; 74*a5bfa42cSLouis Ouellet } 75*a5bfa42cSLouis Ouellet $return .= '</div>'; 76*a5bfa42cSLouis Ouellet 77ec13a77cSLouis Ouellet return $return; 78ec13a77cSLouis Ouellet } 79ec13a77cSLouis Ouellet} 80df5bf7f3SLouis Ouellet 81df5bf7f3SLouis Ouellet/** 82df5bf7f3SLouis Ouellet * Generate the gravatar URL for a given email 83df5bf7f3SLouis Ouellet * 84df5bf7f3SLouis Ouellet * @return string 85df5bf7f3SLouis Ouellet */ 86df5bf7f3SLouis Ouelletif (!function_exists('tpl_getGravatarURL')) { 87df5bf7f3SLouis Ouellet function tpl_getGravatarURL($email, $size = 96) 88df5bf7f3SLouis Ouellet { 89df5bf7f3SLouis Ouellet return 'https://www.gravatar.com/avatar/'.md5(strtolower(trim($email))).'?s='.$size; 90df5bf7f3SLouis Ouellet } 91df5bf7f3SLouis Ouellet} 92df5bf7f3SLouis Ouellet 93df5bf7f3SLouis Ouellet 94df5bf7f3SLouis Ouellet/** 95df5bf7f3SLouis Ouellet * Generate the HTML for a menu 96df5bf7f3SLouis Ouellet * 97df5bf7f3SLouis Ouellet * @return string 98df5bf7f3SLouis Ouellet */ 99df5bf7f3SLouis Ouelletif (!function_exists('tpl_getMenu')) { 100df5bf7f3SLouis Ouellet function tpl_getMenu($menu) 101df5bf7f3SLouis Ouellet { 102df5bf7f3SLouis Ouellet switch($menu){ 103df5bf7f3SLouis Ouellet case 'usermenu': 104df5bf7f3SLouis Ouellet return tpl_getUserMenu(); 105df5bf7f3SLouis Ouellet break; 1067311aa0dSLouis Ouellet case 'sidebarmenu': 1077311aa0dSLouis Ouellet return tpl_getSidebarMenu(); 1087311aa0dSLouis Ouellet break; 109df5bf7f3SLouis Ouellet } 110df5bf7f3SLouis Ouellet } 111df5bf7f3SLouis Ouellet} 112df5bf7f3SLouis Ouellet 113df5bf7f3SLouis Ouellet/** 114df5bf7f3SLouis Ouellet * Generate the HTML for the user menu 115df5bf7f3SLouis Ouellet * 116df5bf7f3SLouis Ouellet * @return string 117df5bf7f3SLouis Ouellet */ 118df5bf7f3SLouis Ouelletif (!function_exists('tpl_getUserMenu')) { 119df5bf7f3SLouis Ouellet function tpl_getUserMenu() 120df5bf7f3SLouis Ouellet { 121df5bf7f3SLouis Ouellet global $lang,$ID,$conf,$INFO; 122df5bf7f3SLouis Ouellet 123df5bf7f3SLouis Ouellet $return = ''; 124df5bf7f3SLouis Ouellet 125df5bf7f3SLouis Ouellet $items = (new \dokuwiki\Menu\UserMenu())->getItems(); 126df5bf7f3SLouis Ouellet 127df5bf7f3SLouis Ouellet if(isset($INFO['userinfo'])){ 128df5bf7f3SLouis Ouellet $return .= '<div class="dropdown user-tools">'; 12936603110SLouis 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">'; 130df5bf7f3SLouis Ouellet $return .= '<i class="bi bi-person"></i>'.$INFO['userinfo']['name']; 131df5bf7f3SLouis Ouellet $return .= '</a>'; 132df5bf7f3SLouis Ouellet $return .= '<ul class="dropdown-menu" role="menu">'; 133df5bf7f3SLouis Ouellet $return .= '<li>'; 134df5bf7f3SLouis Ouellet $return .= '<p class="avatar">'; 135df5bf7f3SLouis Ouellet $return .= '<img alt="'.$INFO['userinfo']['name'].'" src="'.tpl_getGravatarURL($INFO['userinfo']['mail']).'" />'; 136df5bf7f3SLouis Ouellet $return .= '</p>'; 137df5bf7f3SLouis Ouellet $return .= '</li>'; 138df5bf7f3SLouis Ouellet foreach($items as $item) { 139df5bf7f3SLouis Ouellet $return .= '<li>' 140df5bf7f3SLouis Ouellet .'<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 141df5bf7f3SLouis Ouellet .'<i></i> ' 142df5bf7f3SLouis Ouellet .$item->getLabel() 143df5bf7f3SLouis Ouellet .'</a></li>'; 144df5bf7f3SLouis Ouellet } 145df5bf7f3SLouis Ouellet $return .= '</ul>'; 146df5bf7f3SLouis Ouellet $return .= '</div>'; 147df5bf7f3SLouis Ouellet } else { 148df5bf7f3SLouis Ouellet $return .= '<div class="inline user-tools">'; 149df5bf7f3SLouis Ouellet foreach($items as $item) { 150df5bf7f3SLouis Ouellet $return .= '<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 151df5bf7f3SLouis Ouellet .'<i></i> ' 152df5bf7f3SLouis Ouellet .$item->getLabel() 153df5bf7f3SLouis Ouellet .'</a>'; 154df5bf7f3SLouis Ouellet } 155df5bf7f3SLouis Ouellet $return .= '</div>'; 156df5bf7f3SLouis Ouellet } 157df5bf7f3SLouis Ouellet 158df5bf7f3SLouis Ouellet return $return; 159df5bf7f3SLouis Ouellet } 160df5bf7f3SLouis Ouellet} 1617311aa0dSLouis Ouellet 1627311aa0dSLouis Ouellet/** 1637311aa0dSLouis Ouellet * Generate the HTML for the sidebar menus 1647311aa0dSLouis Ouellet * 1657311aa0dSLouis Ouellet * @return string 1667311aa0dSLouis Ouellet */ 1677311aa0dSLouis Ouelletif (!function_exists('tpl_getSidebarMenu')) { 1687311aa0dSLouis Ouellet function tpl_getSidebarMenu() 1697311aa0dSLouis Ouellet { 1707311aa0dSLouis Ouellet global $lang,$ID,$conf,$INFO; 1717311aa0dSLouis Ouellet 1727311aa0dSLouis Ouellet $userItems = (new \dokuwiki\Menu\UserMenu())->getItems(); 1737311aa0dSLouis Ouellet $siteItems = (new \dokuwiki\Menu\SiteMenu())->getItems(); 1747311aa0dSLouis Ouellet 1757311aa0dSLouis Ouellet $return = ''; 1767311aa0dSLouis Ouellet 1777311aa0dSLouis Ouellet $return .= '<div id="writr__sidebar__tools">'; 1787311aa0dSLouis Ouellet 1797311aa0dSLouis Ouellet if(isset($INFO['userinfo'])){ 1807311aa0dSLouis Ouellet $return .= '<div class="user-tools">'; 1817311aa0dSLouis 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">'; 1827311aa0dSLouis Ouellet $return .= '<img alt="'.$INFO['userinfo']['name'].'" src="'.tpl_getGravatarURL($INFO['userinfo']['mail'], 32).'" />'; 1837311aa0dSLouis Ouellet $return .= '<span>'.$INFO['userinfo']['name'].'</span>'; 1847311aa0dSLouis Ouellet $return .= '</a>'; 1857311aa0dSLouis Ouellet $return .= '<div id="user-tools-menu" class="collapsed">'; 1867311aa0dSLouis Ouellet $return .= '<ul class="menu" role="menu">'; 1877311aa0dSLouis Ouellet foreach($userItems as $item) { 1887311aa0dSLouis Ouellet $return .= '<li>' 1897311aa0dSLouis Ouellet .'<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 1907311aa0dSLouis Ouellet .'<i></i> ' 1917311aa0dSLouis Ouellet .$item->getLabel() 1927311aa0dSLouis Ouellet .'</a></li>'; 1937311aa0dSLouis Ouellet } 1947311aa0dSLouis Ouellet $return .= '</ul>'; 1957311aa0dSLouis Ouellet $return .= '</div>'; 1967311aa0dSLouis Ouellet $return .= '</div>'; 1977311aa0dSLouis Ouellet } else { 1987311aa0dSLouis Ouellet $return .= '<div class="user-tools">'; 1997311aa0dSLouis Ouellet foreach($userItems as $item) { 2007311aa0dSLouis Ouellet $return .= '<a href="'.$item->getLink().'" class="action '.strtolower($item->getType()).'" rel="nofollow" title="'.$item->getTitle().'">' 2017311aa0dSLouis Ouellet .'<i></i> ' 2027311aa0dSLouis Ouellet .$item->getLabel() 2037311aa0dSLouis Ouellet .'</a>'; 2047311aa0dSLouis Ouellet } 2057311aa0dSLouis Ouellet $return .= '</div>'; 2067311aa0dSLouis Ouellet } 2077311aa0dSLouis Ouellet 2087311aa0dSLouis Ouellet $return .= '</div>'; 2097311aa0dSLouis Ouellet 2107311aa0dSLouis Ouellet return $return; 2117311aa0dSLouis Ouellet } 2127311aa0dSLouis Ouellet} 213