16d5babb2Snicolasprigent<?php 26d5babb2Snicolasprigent 36d5babb2Snicolasprigentclass Kiwiki_Functions { 46d5babb2Snicolasprigent 5b5b95f16Snicolasprigent 6b5b95f16Snicolasprigent /** 7b5b95f16Snicolasprigent * Edit icon button 8b5b95f16Snicolasprigent */ 9b5b95f16Snicolasprigent public static function _edit_icon($what){ 10b5b95f16Snicolasprigent global $ACT; 11*aae5d272SNicolas Prigent global $INFO; 12*aae5d272SNicolas Prigent $rev = ($INFO['rev']) ? '&rev='.$INFO['rev'] : ''; 13b5b95f16Snicolasprigent if ($ACT == 'show'){ 14b5b95f16Snicolasprigent $editicon = (new \dokuwiki\Menu\KiwikiEdit())->getListItems('kiwiki-',true); 15b5b95f16Snicolasprigent if (!empty($what)){ 1635d8c223SNicolas Prigent $editicon = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.DOKU_BASE.'doku.php?id='.$what.'&do=edit"$3>',$editicon); 17*aae5d272SNicolas Prigent }else{ 18*aae5d272SNicolas Prigent $editicon = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.DOKU_BASE.'doku.php?id='.$INFO['id'].'&do=edit'.$rev.'"$3>',$editicon); 196d5babb2Snicolasprigent } 20b5b95f16Snicolasprigent return $editicon; 216d5babb2Snicolasprigent } 22f155da6aSAzurCrystal } 236d5babb2Snicolasprigent 24cc57aeb6Snicolasprigent 25cc57aeb6Snicolasprigent /** 26cc57aeb6Snicolasprigent * Go bottom button 27cc57aeb6Snicolasprigent */ 28cc57aeb6Snicolasprigent 2947612ce1SNicolas Prigent public static function html_bottombtn() { 30cc57aeb6Snicolasprigent global $lang; 31cc57aeb6Snicolasprigent 32cc57aeb6Snicolasprigent return '<a class="nolink" href="#dokuwiki__bottom">' 33cc57aeb6Snicolasprigent .'<button class="button" onclick="window.scrollTo(0, 0)" title="'. $lang['btn_bottom'] .'">' 34cc57aeb6Snicolasprigent . $lang['btn_bottom'] 35cc57aeb6Snicolasprigent .'</button></a>'; 3647612ce1SNicolas Prigent } 37cc57aeb6Snicolasprigent 38477069bfSnicolasprigent /** 39477069bfSnicolasprigent * Custom ACL Informations in footer 40477069bfSnicolasprigent * Original code from Chris75 41477069bfSnicolasprigent * https://forum.dokuwiki.org/d/21636-acl-deny-a-user-group-to-a-namespace/13 42477069bfSnicolasprigent */ 43cc57aeb6Snicolasprigent 44046cd792Snicolasprigent public static function tpl_aclinfo() { 45477069bfSnicolasprigent global $ID, $AUTH_ACL, $INFO; 46cc57aeb6Snicolasprigent 47477069bfSnicolasprigent if ((auth_quickaclcheck($ID) == 0) ||(!$INFO['editable'])) 48cc57aeb6Snicolasprigent return; // no rights to view, no rights to get this info 49cc57aeb6Snicolasprigent 50cc57aeb6Snicolasprigent $page_acls = array(); 51cc57aeb6Snicolasprigent $namespaces = array(); 52cc57aeb6Snicolasprigent 53cc57aeb6Snicolasprigent $ns = getNS($ID); 54cc57aeb6Snicolasprigent while ($ns) { 55cc57aeb6Snicolasprigent array_unshift($namespaces,$ns . ':*'); 56cc57aeb6Snicolasprigent $ns = getNS($ns); 57cc57aeb6Snicolasprigent } 58cc57aeb6Snicolasprigent array_unshift($namespaces,'*'); // root 59cc57aeb6Snicolasprigent 60cc57aeb6Snicolasprigent $namespaces[] = $ID; 61cc57aeb6Snicolasprigent 62cc57aeb6Snicolasprigent // check matches 63cc57aeb6Snicolasprigent foreach ($namespaces as $level) { 64cc57aeb6Snicolasprigent $matches = preg_grep('/^'.preg_quote($level,'/').'\s+\S+\s+\d+\s*$/',$AUTH_ACL); 65cc57aeb6Snicolasprigent $this_acls = array(); 66cc57aeb6Snicolasprigent foreach($matches as $match){ 67cc57aeb6Snicolasprigent $match = preg_replace('/#.*$/','',$match); //ignore comments 68cc57aeb6Snicolasprigent $acl = preg_split('/\s+/',$match); 69cc57aeb6Snicolasprigent $this_acls[urldecode($acl[1])] = $acl[2]; 70cc57aeb6Snicolasprigent if ($acl[1] == "@ALL") // overwrites stuff from upper level 71cc57aeb6Snicolasprigent $page_acls = array(); 72cc57aeb6Snicolasprigent } 73cc57aeb6Snicolasprigent $page_acls = array_merge($page_acls,$this_acls); 74cc57aeb6Snicolasprigent } 75cc57aeb6Snicolasprigent 76cc57aeb6Snicolasprigent // check if visible to everyone: 77477069bfSnicolasprigent /*if (($page_acls['@ALL'] !== false) && $page_acls['@ALL'] > 0) 78477069bfSnicolasprigent return; // page is visible to everyone*/ 79cc57aeb6Snicolasprigent 80cc57aeb6Snicolasprigent $list = array(); 81cc57aeb6Snicolasprigent foreach ($page_acls as $user => $right) { 82cc57aeb6Snicolasprigent if ($right > 0 && $user != "@admin" ) // admins can see everything 83cc57aeb6Snicolasprigent array_push($list,$user); 84cc57aeb6Snicolasprigent } 85cc57aeb6Snicolasprigent if (count($list)) { 86cc57aeb6Snicolasprigent sort($list); 87593242adSnicolasprigent print tpl_getLang('Visible to'); 88477069bfSnicolasprigent print join(', ',$list); 89cc57aeb6Snicolasprigent } 90cc57aeb6Snicolasprigent 91cc57aeb6Snicolasprigent // Uncomment this, if you want to display users/groups who cannot access this page, too: 92cc57aeb6Snicolasprigent $list = array(); 93cc57aeb6Snicolasprigent foreach ($page_acls as $user => $right) { 94cc57aeb6Snicolasprigent if ($right == 0) 95cc57aeb6Snicolasprigent array_push($list,$user); 96cc57aeb6Snicolasprigent } 97cc57aeb6Snicolasprigent if (count($list)) { 98cc57aeb6Snicolasprigent sort($list); 99593242adSnicolasprigent print " • "; 100593242adSnicolasprigent print tpl_getLang('Hidden to'); 101477069bfSnicolasprigent print join(', ',$list); 102cc57aeb6Snicolasprigent } 103cc57aeb6Snicolasprigent } 1046d5babb2Snicolasprigent} 105