xref: /template/writr/tpl_functions.php (revision 7311aa0db741977fa6d8926c0a64cb10b17ec388)
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