1*f3f0262cSandi<? 2*f3f0262cSandiinclude_once("inc/format.php"); 3*f3f0262cSandi 4*f3f0262cSandi/** 5*f3f0262cSandi * Convenience function to quickly build a wikilink 6*f3f0262cSandi */ 7*f3f0262cSandifunction html_wikilink($url,$name='',$search=''){ 8*f3f0262cSandi global $conf; 9*f3f0262cSandi $link = array(); 10*f3f0262cSandi $link['url'] = $url; 11*f3f0262cSandi $link['name'] = $name; 12*f3f0262cSandi $link = format_link_wiki($link); 13*f3f0262cSandi 14*f3f0262cSandi if($search){ 15*f3f0262cSandi ($conf['userewrite']) ? $link['url'].='?s=' : $link['url'].='&s='; 16*f3f0262cSandi $link['url'] .= urlencode($search); 17*f3f0262cSandi } 18*f3f0262cSandi 19*f3f0262cSandi return format_link_build($link); 20*f3f0262cSandi} 21*f3f0262cSandi 22*f3f0262cSandi/** 23*f3f0262cSandi * The loginform 24*f3f0262cSandi */ 25*f3f0262cSandifunction html_login(){ 26*f3f0262cSandi global $lang; 27*f3f0262cSandi global $conf; 28*f3f0262cSandi global $ID; 29*f3f0262cSandi 30*f3f0262cSandi print parsedLocale('login'); 31*f3f0262cSandi ?> 32*f3f0262cSandi <div align="center"> 33*f3f0262cSandi <form action="<?=script()?>" accept-charset="<?=$lang['encoding']?>" method="post"> 34*f3f0262cSandi <fieldset> 35*f3f0262cSandi <legend><?=$lang['btn_login']?></legend> 36*f3f0262cSandi <input type="hidden" name="id" value="<?=$ID?>" /> 37*f3f0262cSandi <input type="hidden" name="do" value="login" /> 38*f3f0262cSandi <label> 39*f3f0262cSandi <span><?=$lang['user']?></span> 40*f3f0262cSandi <input type="text" name="u" value="<?=formText($_REQUEST['u'])?>" class="edit" /> 41*f3f0262cSandi </label><br /> 42*f3f0262cSandi <label> 43*f3f0262cSandi <span><?=$lang['pass']?></span> 44*f3f0262cSandi <input type="password" name="p" class="edit" /> 45*f3f0262cSandi </label><br /> 46*f3f0262cSandi <input type="submit" value="<?=$lang['btn_login']?>" class="button" /> 47*f3f0262cSandi </fieldset> 48*f3f0262cSandi </form> 49*f3f0262cSandi <? 50*f3f0262cSandi if($conf['openregister']){ 51*f3f0262cSandi print '<p>'; 52*f3f0262cSandi print $lang['reghere']; 53*f3f0262cSandi print ': <a href="'.wl($ID,'do=register').'" class="wikilink1">'.$lang['register'].'</a>'; 54*f3f0262cSandi print '</p>'; 55*f3f0262cSandi } 56*f3f0262cSandi ?> 57*f3f0262cSandi </div> 58*f3f0262cSandi <? 59*f3f0262cSandi if(@file_exists('includes/login.txt')){ 60*f3f0262cSandi print io_cacheParse('includes/login.txt'); 61*f3f0262cSandi } 62*f3f0262cSandi} 63*f3f0262cSandi 64*f3f0262cSandi/** 65*f3f0262cSandi * shows the edit/source/show button dependent on current mode 66*f3f0262cSandi */ 67*f3f0262cSandifunction html_editbutton(){ 68*f3f0262cSandi global $ID; 69*f3f0262cSandi global $REV; 70*f3f0262cSandi global $ACT; 71*f3f0262cSandi global $INFO; 72*f3f0262cSandi 73*f3f0262cSandi if($ACT == 'show' || $ACT == 'search'){ 74*f3f0262cSandi if($INFO['writable']){ 75*f3f0262cSandi if($INFO['exists']){ 76*f3f0262cSandi $r = html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post'); 77*f3f0262cSandi }else{ 78*f3f0262cSandi $r = html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post'); 79*f3f0262cSandi } 80*f3f0262cSandi }else{ 81*f3f0262cSandi $r = html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post'); 82*f3f0262cSandi } 83*f3f0262cSandi }else{ 84*f3f0262cSandi $r = html_btn('show',$ID,'v',array('do' => 'show')); 85*f3f0262cSandi } 86*f3f0262cSandi return $r; 87*f3f0262cSandi} 88*f3f0262cSandi 89*f3f0262cSandifunction html_secedit_button($section,$p){ 90*f3f0262cSandi global $ID; 91*f3f0262cSandi global $lang; 92*f3f0262cSandi $secedit = ''; 93*f3f0262cSandi if($p) $secedit .= "</p>\n"; 94*f3f0262cSandi $secedit .= '<div class="secedit">'; 95*f3f0262cSandi $secedit .= html_btn('secedit',$ID,'', 96*f3f0262cSandi array('do' => 'edit', 97*f3f0262cSandi 'lines' => "$section"), 98*f3f0262cSandi 'post'); 99*f3f0262cSandi $secedit .= '</div>'; 100*f3f0262cSandi if($p) $secedit .= "\n<p>"; 101*f3f0262cSandi return $secedit; 102*f3f0262cSandi} 103*f3f0262cSandi 104*f3f0262cSandifunction html_secedit($text,$show=true){ 105*f3f0262cSandi global $INFO; 106*f3f0262cSandi if($INFO['writable'] && $show){ 107*f3f0262cSandi $text = preg_replace('#<!-- SECTION \[(\d+-\d+)\] -->#e', 108*f3f0262cSandi "html_secedit_button('\\1',true)", 109*f3f0262cSandi $text); 110*f3f0262cSandi $text = preg_replace('#<!-- SECTION \[(\d+-)\] -->#e', 111*f3f0262cSandi "html_secedit_button('\\1',false)", 112*f3f0262cSandi $text); 113*f3f0262cSandi }else{ 114*f3f0262cSandi $text = preg_replace('#<!-- SECTION \[(\d*-\d*)\] -->#e','',$text); 115*f3f0262cSandi } 116*f3f0262cSandi return $text; 117*f3f0262cSandi} 118*f3f0262cSandi 119*f3f0262cSandi/** 120*f3f0262cSandi * displays the breadcrumbs trace 121*f3f0262cSandi */ 122*f3f0262cSandifunction html_breadcrumbs(){ 123*f3f0262cSandi global $lang; 124*f3f0262cSandi global $conf; 125*f3f0262cSandi 126*f3f0262cSandi //check if enabled 127*f3f0262cSandi if(!$conf['breadcrumbs']) return; 128*f3f0262cSandi 129*f3f0262cSandi $crumbs = breadcrumbs(); //setup crumb trace 130*f3f0262cSandi print '<div class="breadcrumbs">'; 131*f3f0262cSandi print $lang['breadcrumb'].':'; 132*f3f0262cSandi foreach ($crumbs as $crumb){ 133*f3f0262cSandi print ' » '; 134*f3f0262cSandi print '<a href="'.wl($crumb).'" class="breadcrumbs" onclick="return svchk()" onkeypress="return svchk()" title="'.$crumb.'">'.noNS($crumb).'</a>'; 135*f3f0262cSandi } 136*f3f0262cSandi print '</div>'; 137*f3f0262cSandi} 138*f3f0262cSandi 139*f3f0262cSandi/** 140*f3f0262cSandi * display the HTML head and metadata 141*f3f0262cSandi */ 142*f3f0262cSandifunction html_head(){ 143*f3f0262cSandi global $ID; 144*f3f0262cSandi global $ACT; 145*f3f0262cSandi global $INFO; 146*f3f0262cSandi global $conf; 147*f3f0262cSandi global $lang; 148*f3f0262cSandi 149*f3f0262cSandi print '<'.'?xml version="1.0"?'.">\n"; 150*f3f0262cSandi print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'; 151*f3f0262cSandi print ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; 152*f3f0262cSandi print "\n"; 153*f3f0262cSandi?> 154*f3f0262cSandi <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?=$conf['lang']?>" lang="<?=$conf['lang']?>" dir="ltr"> 155*f3f0262cSandi <head> 156*f3f0262cSandi <title><?=$ID?> [<?=$conf['title']?>]</title> 157*f3f0262cSandi <meta http-equiv="Content-Type" content="text/html; charset=<?=$lang['encoding']?>" /> 158*f3f0262cSandi <meta name="generator" content="DokuWiki <?=DOKUWIKIVERSION?>" /> 159*f3f0262cSandi <link rel="stylesheet" media="screen" type="text/css" href="<?=getBaseURL()?>style.css" /> 160*f3f0262cSandi <link rel="stylesheet" media="print" type="text/css" href="<?=getBaseURL()?>print.css" /> 161*f3f0262cSandi <link rel="shortcut icon" href="<?=getBaseURL()?>images/favicon.ico" /> 162*f3f0262cSandi <link rel="start" href="<?=wl()?>" /> 163*f3f0262cSandi <link rel="contents" href="<?=wl($ID,'do=index')?>" title="<?=$lang['index']?>" /> 164*f3f0262cSandi <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="<?=getBaseURL()?>feed.php" /> 165*f3f0262cSandi <link rel="alternate" type="application/rss+xml" title="Current Namespace" href="<?=getBaseURL()?>feed.php?mode=list&ns=<?=$INFO['namespace']?>" /> 166*f3f0262cSandi <link rel="alternate" type="text/html" title="Plain HTML" href="<?=wl($ID,'do=export_html')?>" /> 167*f3f0262cSandi <link rel="alternate" type="text/plain" title="Wiki Markup" href="<?=wl($ID, 'do=export_raw')?>" /> 168*f3f0262cSandi<? 169*f3f0262cSandi if($ACT=='show' || $ACT=='export_html'){ 170*f3f0262cSandi if($INFO['exists']){ 171*f3f0262cSandi print ' <meta name="robots" content="index,follow" />'."\n"; 172*f3f0262cSandi print ' <meta name="date" content="'.date('Y-m-d\TH:i:sO',$INFO['lastmod']).'" />'."\n"; 173*f3f0262cSandi }else{ 174*f3f0262cSandi print ' <meta name="robots" content="noindex,follow" />'."\n"; 175*f3f0262cSandi } 176*f3f0262cSandi }else{ 177*f3f0262cSandi print ' <meta name="robots" content="noindex,nofollow" />'."\n"; 178*f3f0262cSandi } 179*f3f0262cSandi?> 180*f3f0262cSandi 181*f3f0262cSandi <script language="JavaScript" type="text/javascript"> 182*f3f0262cSandi var alertText = '<?=$lang['qb_alert']?>'; 183*f3f0262cSandi var notSavedYet = '<?=$lang['notsavedyet']?>'; 184*f3f0262cSandi var baseURL = '<?=getBaseURL()?>'; 185*f3f0262cSandi </script> 186*f3f0262cSandi <script language="JavaScript" type="text/javascript" src="<?=getBaseURL()?>script.js"></script> 187*f3f0262cSandi 188*f3f0262cSandi <!--[if gte IE 5]> 189*f3f0262cSandi <style type="text/css"> 190*f3f0262cSandi /* that IE 5+ conditional comment makes this only visible in IE 5+ */ 191*f3f0262cSandi img { behavior: url("<?=getBaseURL()?>pngbehavior.htc"); } /* IE bugfix for transparent PNGs */ 192*f3f0262cSandi </style> 193*f3f0262cSandi <![endif]--> 194*f3f0262cSandi 195*f3f0262cSandi <?@include("includes/meta.html")?> 196*f3f0262cSandi </head> 197*f3f0262cSandi<? 198*f3f0262cSandi} 199*f3f0262cSandi 200*f3f0262cSandi/** 201*f3f0262cSandi * Displays a button (using it's own form) 202*f3f0262cSandi */ 203*f3f0262cSandifunction html_btn($name,$id,$akey,$params,$method='get'){ 204*f3f0262cSandi global $conf; 205*f3f0262cSandi global $lang; 206*f3f0262cSandi 207*f3f0262cSandi $label = $lang['btn_'.$name]; 208*f3f0262cSandi 209*f3f0262cSandi $ret = ''; 210*f3f0262cSandi 211*f3f0262cSandi $id = idfilter($id); 212*f3f0262cSandi 213*f3f0262cSandi //make nice URLs even for buttons 214*f3f0262cSandi $link = getBaseURL().'/'; 215*f3f0262cSandi $link = preg_replace('#//$#','/',$link); 216*f3f0262cSandi if(!$conf['userewrite']){ 217*f3f0262cSandi $script = $link.'doku.php'; 218*f3f0262cSandi $params['id'] = $id; 219*f3f0262cSandi }else{ 220*f3f0262cSandi $script = $link.$id; 221*f3f0262cSandi } 222*f3f0262cSandi 223*f3f0262cSandi $ret .= '<form class="button" method="'.$method.'" action="'.$script.'" onsubmit="return svchk()">'; 224*f3f0262cSandi 225*f3f0262cSandi reset($params); 226*f3f0262cSandi while (list($key, $val) = each($params)) { 227*f3f0262cSandi $ret .= '<input type="hidden" name="'.$key.'" '; 228*f3f0262cSandi $ret .= 'value="'.htmlspecialchars($val).'" />'; 229*f3f0262cSandi } 230*f3f0262cSandi 231*f3f0262cSandi $ret .= '<input type="submit" value="'.htmlspecialchars($label).'" class="button" '; 232*f3f0262cSandi if($akey){ 233*f3f0262cSandi $ret .= 'title="ALT+'.strtoupper($akey).'" '; 234*f3f0262cSandi $ret .= 'accesskey="'.$akey.'" '; 235*f3f0262cSandi } 236*f3f0262cSandi $ret .= '/>'; 237*f3f0262cSandi $ret .= '</form>'; 238*f3f0262cSandi 239*f3f0262cSandi return $ret; 240*f3f0262cSandi} 241*f3f0262cSandi 242*f3f0262cSandi/** 243*f3f0262cSandi * Check for the given permission or prints an error 244*f3f0262cSandi */ 245*f3f0262cSandifunction html_acl($perm){ 246*f3f0262cSandi global $INFO; 247*f3f0262cSandi if($INFO['perm'] >= $perm) return true; 248*f3f0262cSandi 249*f3f0262cSandi print parsedLocale('denied'); 250*f3f0262cSandi return false; 251*f3f0262cSandi} 252*f3f0262cSandi 253*f3f0262cSandi/** 254*f3f0262cSandi * Displays the page header and calls html_head() 255*f3f0262cSandi */ 256*f3f0262cSandifunction html_header(){ 257*f3f0262cSandi global $ID; 258*f3f0262cSandi global $REV; 259*f3f0262cSandi global $lang; 260*f3f0262cSandi global $conf; 261*f3f0262cSandi html_head(); 262*f3f0262cSandi?> 263*f3f0262cSandi<body> 264*f3f0262cSandi <div class="all"> 265*f3f0262cSandi <? 266*f3f0262cSandi html_msgarea(); 267*f3f0262cSandi @include("includes/topheader.html") 268*f3f0262cSandi ?> 269*f3f0262cSandi <div class="header"> 270*f3f0262cSandi <div class="pagename"> 271*f3f0262cSandi [[<a href="<?=wl($ID,'do=backlink')?>" onclick="return svchk()" onkeypress="return svchk()"><?=$ID?></a>]] 272*f3f0262cSandi </div> 273*f3f0262cSandi <div class="logo"> 274*f3f0262cSandi <a href="<?=wl()?>" name="top" accesskey="h" title="[ALT+H]" onclick="return svchk()" onkeypress="return svchk()"><?=$conf['title']?></a> 275*f3f0262cSandi </div> 276*f3f0262cSandi </div> 277*f3f0262cSandi <?@include("includes/header.html")?> 278*f3f0262cSandi 279*f3f0262cSandi <div class="bar" id="bar_top"> 280*f3f0262cSandi <div class="bar-left" id="bar_topleft"> 281*f3f0262cSandi <?=html_editbutton()?> 282*f3f0262cSandi <?=html_btn(revs,$ID,'r',array('do' => 'revisions'))?> 283*f3f0262cSandi </div> 284*f3f0262cSandi 285*f3f0262cSandi <div class="bar-right" id="bar_topright"> 286*f3f0262cSandi <?=html_btn(recent,'','r',array('do' => 'recent'))?> 287*f3f0262cSandi <form action="<?=wl()?>" accept-charset="<?=$lang['encoding']?>"> 288*f3f0262cSandi <input type="hidden" name="do" value="search" /> 289*f3f0262cSandi <input type="text" name="id" class="edit" /> 290*f3f0262cSandi <input type="submit" value="<?=$lang['btn_search']?>" class="button" /> 291*f3f0262cSandi </form> 292*f3f0262cSandi </div> 293*f3f0262cSandi </div> 294*f3f0262cSandi 295*f3f0262cSandi <? 296*f3f0262cSandi flush(); 297*f3f0262cSandi html_breadcrumbs(); 298*f3f0262cSandi @include("includes/pageheader.html"); 299*f3f0262cSandi ?> 300*f3f0262cSandi <div class="page"> 301*f3f0262cSandi <!-- wikipage start --> 302*f3f0262cSandi<? 303*f3f0262cSandi} 304*f3f0262cSandi 305*f3f0262cSandi/** 306*f3f0262cSandi * Displays some Metadata like who's logged in and the last modified 307*f3f0262cSandi * date - do not confuse this with the HTML meta header. 308*f3f0262cSandi */ 309*f3f0262cSandifunction html_metainfo(){ 310*f3f0262cSandi global $conf; 311*f3f0262cSandi global $lang; 312*f3f0262cSandi global $INFO; 313*f3f0262cSandi global $REV; 314*f3f0262cSandi 315*f3f0262cSandi $fn = $INFO['filepath']; 316*f3f0262cSandi if(!$conf['fullpath']){ 317*f3f0262cSandi if($REV){ 318*f3f0262cSandi $fn = str_replace(realpath($conf['olddir']).DIRECTORY_SEPARATOR,'',$fn); 319*f3f0262cSandi }else{ 320*f3f0262cSandi $fn = str_replace(realpath($conf['datadir']).DIRECTORY_SEPARATOR,'',$fn); 321*f3f0262cSandi } 322*f3f0262cSandi } 323*f3f0262cSandi $date = date($conf['dformat'],$INFO['lastmod']); 324*f3f0262cSandi 325*f3f0262cSandi print '<div class="meta">'; 326*f3f0262cSandi if($_SERVER['REMOTE_USER']){ 327*f3f0262cSandi print '<div class="user">'; 328*f3f0262cSandi print $lang['loggedinas'].': '.$_SERVER['REMOTE_USER']; 329*f3f0262cSandi print '</div>'; 330*f3f0262cSandi } 331*f3f0262cSandi print ' '; 332*f3f0262cSandi if($INFO['exists']){ 333*f3f0262cSandi print $fn; 334*f3f0262cSandi print ' · '; 335*f3f0262cSandi print $lang['lastmod']; 336*f3f0262cSandi print ': '; 337*f3f0262cSandi print $date; 338*f3f0262cSandi if($INFO['locked']){ 339*f3f0262cSandi print ' · '; 340*f3f0262cSandi print $lang['lockedby']; 341*f3f0262cSandi print ': '; 342*f3f0262cSandi print $INFO['locked']; 343*f3f0262cSandi } 344*f3f0262cSandi } 345*f3f0262cSandi print '</div>'; 346*f3f0262cSandi} 347*f3f0262cSandi 348*f3f0262cSandifunction html_footer(){ 349*f3f0262cSandi global $ID; 350*f3f0262cSandi global $REV; 351*f3f0262cSandi global $INFO; 352*f3f0262cSandi global $lang; 353*f3f0262cSandi global $conf; 354*f3f0262cSandi?> 355*f3f0262cSandi <!-- wikipage stop --> 356*f3f0262cSandi </div> 357*f3f0262cSandi <div class="clearer"> </div> 358*f3f0262cSandi <? 359*f3f0262cSandi flush(); 360*f3f0262cSandi @include("includes/pagefooter.html"); 361*f3f0262cSandi html_metainfo(); 362*f3f0262cSandi ?> 363*f3f0262cSandi <div class="bar" id="bar_bottom"> 364*f3f0262cSandi <div class="bar-left" id="bar_bottomleft"> 365*f3f0262cSandi <?=html_editbutton()?> 366*f3f0262cSandi <?=html_btn(revs,$ID,'r',array('do' => 'revisions'))?> 367*f3f0262cSandi </div> 368*f3f0262cSandi 369*f3f0262cSandi <div class="bar-right" id="bar_bottomright"> 370*f3f0262cSandi <? 371*f3f0262cSandi if($conf['useacl']){ 372*f3f0262cSandi if($_SERVER['REMOTE_USER']){ 373*f3f0262cSandi print html_btn('logout',$ID,'',array('do' => 'logout',)); 374*f3f0262cSandi }else{ 375*f3f0262cSandi print html_btn('login',$ID,'',array('do' => 'login')); 376*f3f0262cSandi } 377*f3f0262cSandi } 378*f3f0262cSandi ?> 379*f3f0262cSandi <?=html_btn(index,$ID,'x',array('do' => 'index'))?> 380*f3f0262cSandi <a href="#top"><input type="button" class="button" value="<?=$lang['btn_top']?>" /></a> 381*f3f0262cSandi </div> 382*f3f0262cSandi </div> 383*f3f0262cSandi <?@include("includes/footer.html")?> 384*f3f0262cSandi </div> 385*f3f0262cSandi </body> 386*f3f0262cSandi </html> 387*f3f0262cSandi<? 388*f3f0262cSandi} 389*f3f0262cSandi 390*f3f0262cSandifunction html_toc($toc){ 391*f3f0262cSandi global $lang; 392*f3f0262cSandi $ret = ''; 393*f3f0262cSandi $ret .= '<div class="toc">'; 394*f3f0262cSandi $ret .= '<div class="tocheader">'; 395*f3f0262cSandi $ret .= $lang['toc']; 396*f3f0262cSandi $ret .= ' <script type="text/javascript">'; 397*f3f0262cSandi $ret .= 'showTocToggle("+","-")'; 398*f3f0262cSandi $ret .= '</script>'; 399*f3f0262cSandi $ret .= '</div>'; 400*f3f0262cSandi $ret .= '<div id="tocinside">'; 401*f3f0262cSandi $ret .= html_buildlist($toc,'toc','html_list_toc'); 402*f3f0262cSandi $ret .= '</div>'; 403*f3f0262cSandi $ret .= '</div>'; 404*f3f0262cSandi return $ret; 405*f3f0262cSandi} 406*f3f0262cSandi 407*f3f0262cSandi/** 408*f3f0262cSandi * User function for html_buildlist() 409*f3f0262cSandi */ 410*f3f0262cSandifunction html_list_toc($item){ 411*f3f0262cSandi $ret = ''; 412*f3f0262cSandi $ret .= '<a href="#'.$item['id'].'" class="toc">'; 413*f3f0262cSandi $ret .= $item['name']; 414*f3f0262cSandi $ret .= '</a>'; 415*f3f0262cSandi return $ret; 416*f3f0262cSandi} 417*f3f0262cSandi 418*f3f0262cSandifunction html_show($text=''){ 419*f3f0262cSandi global $ID; 420*f3f0262cSandi global $REV; 421*f3f0262cSandi global $HIGH; 422*f3f0262cSandi //disable section editing for old revisions or in preview 423*f3f0262cSandi if($text || $REV){ 424*f3f0262cSandi global $parser; 425*f3f0262cSandi $parser['secedit'] = false; 426*f3f0262cSandi } 427*f3f0262cSandi 428*f3f0262cSandi if ($text){ 429*f3f0262cSandi //PreviewHeader 430*f3f0262cSandi print parsedLocale('preview'); 431*f3f0262cSandi print '<div class="preview">'; 432*f3f0262cSandi print html_secedit(parse($text),false); 433*f3f0262cSandi print '</div>'; 434*f3f0262cSandi }else{ 435*f3f0262cSandi if ($REV) print parsedLocale('showrev'); 436*f3f0262cSandi $html = parsedWiki($ID,$REV,true); 437*f3f0262cSandi $html = html_secedit($html); 438*f3f0262cSandi print html_hilight($html,$HIGH); 439*f3f0262cSandi } 440*f3f0262cSandi} 441*f3f0262cSandi 442*f3f0262cSandi/** 443*f3f0262cSandi * Highlights searchqueries in HTML code 444*f3f0262cSandi */ 445*f3f0262cSandifunction html_hilight($html,$query){ 446*f3f0262cSandi $queries = preg_split ("/\s/",$query,-1,PREG_SPLIT_NO_EMPTY); 447*f3f0262cSandi foreach ($queries as $q){ 448*f3f0262cSandi $q = preg_quote($q,'/'); 449*f3f0262cSandi $html = preg_replace("/((<[^>]*)|$q)/ie", '"\2"=="\1"? "\1":"<span class=\"search_hit\">\1</span>"', $html); 450*f3f0262cSandi } 451*f3f0262cSandi return $html; 452*f3f0262cSandi} 453*f3f0262cSandi 454*f3f0262cSandi/** 455*f3f0262cSandi * This function runs a search and displays the result 456*f3f0262cSandi */ 457*f3f0262cSandifunction html_search(){ 458*f3f0262cSandi require_once("inc/search.php"); 459*f3f0262cSandi global $conf; 460*f3f0262cSandi global $QUERY; 461*f3f0262cSandi global $ID; 462*f3f0262cSandi global $lang; 463*f3f0262cSandi 464*f3f0262cSandi print parsedLocale('searchpage'); 465*f3f0262cSandi flush(); 466*f3f0262cSandi 467*f3f0262cSandi //do quick pagesearch 468*f3f0262cSandi $data = array(); 469*f3f0262cSandi search($data,$conf['datadir'],'search_pagename',array(query => $QUERY)); 470*f3f0262cSandi if(count($data)){ 471*f3f0262cSandi sort($data); 472*f3f0262cSandi print '<div class="search_quickresult">'; 473*f3f0262cSandi print '<b>'.$lang[quickhits].':</b><br />'; 474*f3f0262cSandi foreach($data as $row){ 475*f3f0262cSandi print '<div class="search_quickhits">'; 476*f3f0262cSandi print html_wikilink(':'.$row['id'],$row['id']); 477*f3f0262cSandi print '</div> '; 478*f3f0262cSandi } 479*f3f0262cSandi //clear float (see http://www.complexspiral.com/publications/containing-floats/) 480*f3f0262cSandi print '<div class="clearer"> </div>'; 481*f3f0262cSandi print '</div>'; 482*f3f0262cSandi } 483*f3f0262cSandi flush(); 484*f3f0262cSandi 485*f3f0262cSandi //do fulltext search 486*f3f0262cSandi $data = array(); 487*f3f0262cSandi search($data,$conf['datadir'],'search_fulltext',array(query => $QUERY)); 488*f3f0262cSandi if(count($data)){ 489*f3f0262cSandi usort($data,'sort_search_fulltext'); 490*f3f0262cSandi foreach($data as $row){ 491*f3f0262cSandi print '<div class="search_result">'; 492*f3f0262cSandi print html_wikilink(':'.$row['id'],$row['id'],$QUERY); 493*f3f0262cSandi print ': <span class="search_cnt">'.$row['count'].' '.$lang['hits'].'</span><br />'; 494*f3f0262cSandi print '<div class="search_snippet">'.$row['snippet'].'</div>'; 495*f3f0262cSandi print '</div>'; 496*f3f0262cSandi } 497*f3f0262cSandi }else{ 498*f3f0262cSandi print '<div align="center">'.$lang['nothingfound'].'</div>'; 499*f3f0262cSandi } 500*f3f0262cSandi} 501*f3f0262cSandi 502*f3f0262cSandifunction html_locked($ip){ 503*f3f0262cSandi global $ID; 504*f3f0262cSandi global $conf; 505*f3f0262cSandi global $lang; 506*f3f0262cSandi 507*f3f0262cSandi $locktime = filemtime(wikiFN($ID).'.lock'); 508*f3f0262cSandi $expire = @date($conf['dformat'], $locktime + $conf['locktime'] ); 509*f3f0262cSandi $min = round(($conf['locktime'] - (time() - $locktime) )/60); 510*f3f0262cSandi 511*f3f0262cSandi print parsedLocale('locked'); 512*f3f0262cSandi print '<ul>'; 513*f3f0262cSandi print '<li><b>'.$lang['lockedby'].':</b> '.$ip.'</li>'; 514*f3f0262cSandi print '<li><b>'.$lang['lockexpire'].':</b> '.$expire.' ('.$min.' min)</li>'; 515*f3f0262cSandi print '</ul>'; 516*f3f0262cSandi} 517*f3f0262cSandi 518*f3f0262cSandifunction html_revisions(){ 519*f3f0262cSandi global $ID; 520*f3f0262cSandi global $INFO; 521*f3f0262cSandi global $conf; 522*f3f0262cSandi global $lang; 523*f3f0262cSandi $revisions = getRevisions($ID); 524*f3f0262cSandi $date = @date($conf['dformat'],$INFO['lastmod']); 525*f3f0262cSandi 526*f3f0262cSandi print parsedLocale('revisions'); 527*f3f0262cSandi print '<ul>'; 528*f3f0262cSandi if($INFO['exists']){ 529*f3f0262cSandi print '<li>'.$date.' <a class="wikilink1" href="'.wl($ID).'">'.$ID.'</a> ('.$lang['current'].')</li>'; 530*f3f0262cSandi } 531*f3f0262cSandi 532*f3f0262cSandi foreach($revisions as $rev){ 533*f3f0262cSandi $date = date($conf['dformat'],$rev); 534*f3f0262cSandi print '<li>'; 535*f3f0262cSandi print $date.' <a class="wikilink1" href="'.wl($ID,"rev=$rev").'">'.$ID.'</a> '; 536*f3f0262cSandi print '<a href="'.wl($ID,"rev=$rev,do=diff").'">['.$lang['diff'].']</a>'; 537*f3f0262cSandi print '</li>'; 538*f3f0262cSandi } 539*f3f0262cSandi print '</ul>'; 540*f3f0262cSandi} 541*f3f0262cSandi 542*f3f0262cSandifunction html_recent(){ 543*f3f0262cSandi global $conf; 544*f3f0262cSandi $recents = getRecents(0,true); 545*f3f0262cSandi 546*f3f0262cSandi print parsedLocale('recent'); 547*f3f0262cSandi print '<ul>'; 548*f3f0262cSandi foreach(array_keys($recents) as $id){ 549*f3f0262cSandi $date = date($conf['dformat'],$recents[$id]['date']); 550*f3f0262cSandi print '<li>'; 551*f3f0262cSandi print $date.' '.html_wikilink($id,$id); 552*f3f0262cSandi print ' '.htmlspecialchars($recents[$id]['sum']); 553*f3f0262cSandi print ' <span class="user">('; 554*f3f0262cSandi print $recents[$id]['ip']; 555*f3f0262cSandi if($recents[$id]['user']) print ' '.$recents[$id]['user']; 556*f3f0262cSandi print ')</span>'; 557*f3f0262cSandi print '</li>'; 558*f3f0262cSandi } 559*f3f0262cSandi print '</ul>'; 560*f3f0262cSandi} 561*f3f0262cSandi 562*f3f0262cSandifunction html_index($ns){ 563*f3f0262cSandi require_once("inc/search.php"); 564*f3f0262cSandi global $conf; 565*f3f0262cSandi global $ID; 566*f3f0262cSandi $dir = $conf['datadir']; 567*f3f0262cSandi $ns = cleanID($ns); 568*f3f0262cSandi if(empty($ns)){ 569*f3f0262cSandi $ns = dirname(str_replace(':','/',$ID)); 570*f3f0262cSandi if($ns == '.') $ns =''; 571*f3f0262cSandi } 572*f3f0262cSandi $ns = str_replace(':','/',$ns); 573*f3f0262cSandi 574*f3f0262cSandi print parsedLocale('index'); 575*f3f0262cSandi 576*f3f0262cSandi $data = array(); 577*f3f0262cSandi search($data,$conf['datadir'],'search_index',array('ns' => $ns)); 578*f3f0262cSandi print html_buildlist($data,'idx','html_list_index'); 579*f3f0262cSandi} 580*f3f0262cSandi 581*f3f0262cSandi/** 582*f3f0262cSandi * User function for html_buildlist() 583*f3f0262cSandi */ 584*f3f0262cSandifunction html_list_index($item){ 585*f3f0262cSandi $ret = ''; 586*f3f0262cSandi $base = ':'.$item['id']; 587*f3f0262cSandi $base = substr($base,strrpos($base,':')+1); 588*f3f0262cSandi if($item['type']=='d'){ 589*f3f0262cSandi $ret .= '<a href="'.wl($ID,'idx='.$item['id']).'" class="idx_dir">'; 590*f3f0262cSandi $ret .= $base; 591*f3f0262cSandi $ret .= '</a>'; 592*f3f0262cSandi }else{ 593*f3f0262cSandi $ret .= html_wikilink(':'.$item['id']); 594*f3f0262cSandi } 595*f3f0262cSandi return $ret; 596*f3f0262cSandi} 597*f3f0262cSandi 598*f3f0262cSandi/** 599*f3f0262cSandi * Build an unordered list from the given $data array 600*f3f0262cSandi * Each item in the array has to have a 'level' property 601*f3f0262cSandi * the item itself gets printed by the given $func user 602*f3f0262cSandi * function 603*f3f0262cSandi */ 604*f3f0262cSandifunction html_buildlist($data,$class,$func){ 605*f3f0262cSandi $level = 0; 606*f3f0262cSandi $opens = 0; 607*f3f0262cSandi $ret = ''; 608*f3f0262cSandi 609*f3f0262cSandi foreach ($data as $item){ 610*f3f0262cSandi 611*f3f0262cSandi if( $item['level'] > $level ){ 612*f3f0262cSandi //open new list 613*f3f0262cSandi $ret .= "\n<ul class=\"$class\">\n"; 614*f3f0262cSandi }elseif( $item['level'] < $level ){ 615*f3f0262cSandi //close last item 616*f3f0262cSandi $ret .= "</li>\n"; 617*f3f0262cSandi for ($i=0; $i<($level - $item['level']); $i++){ 618*f3f0262cSandi //close higher lists 619*f3f0262cSandi $ret .= "</ul>\n</li>\n"; 620*f3f0262cSandi } 621*f3f0262cSandi }else{ 622*f3f0262cSandi //close last item 623*f3f0262cSandi $ret .= "</li>\n"; 624*f3f0262cSandi } 625*f3f0262cSandi 626*f3f0262cSandi //remember current level 627*f3f0262cSandi $level = $item['level']; 628*f3f0262cSandi 629*f3f0262cSandi //print item 630*f3f0262cSandi $ret .= '<li class="level'.$item['level'].'">'; 631*f3f0262cSandi $ret .= '<span class="li">'; 632*f3f0262cSandi $ret .= $func($item); //user function 633*f3f0262cSandi $ret .= '</span>'; 634*f3f0262cSandi } 635*f3f0262cSandi 636*f3f0262cSandi //close remaining items and lists 637*f3f0262cSandi for ($i=0; $i < $level; $i++){ 638*f3f0262cSandi $ret .= "</li></ul>\n"; 639*f3f0262cSandi } 640*f3f0262cSandi 641*f3f0262cSandi return $ret; 642*f3f0262cSandi} 643*f3f0262cSandi 644*f3f0262cSandifunction html_backlinks(){ 645*f3f0262cSandi require_once("inc/search.php"); 646*f3f0262cSandi global $ID; 647*f3f0262cSandi global $conf; 648*f3f0262cSandi 649*f3f0262cSandi if(preg_match('#^(.*):(.*)$#',$ID,$matches)){ 650*f3f0262cSandi $opts['ns'] = $matches[1]; 651*f3f0262cSandi $opts['name'] = $matches[2]; 652*f3f0262cSandi }else{ 653*f3f0262cSandi $opts['ns'] = ''; 654*f3f0262cSandi $opts['name'] = $ID; 655*f3f0262cSandi } 656*f3f0262cSandi 657*f3f0262cSandi print parsedLocale('backlinks'); 658*f3f0262cSandi 659*f3f0262cSandi $data = array(); 660*f3f0262cSandi search($data,$conf['datadir'],'search_backlinks',$opts); 661*f3f0262cSandi sort($data); 662*f3f0262cSandi 663*f3f0262cSandi print '<ul class="idx">'; 664*f3f0262cSandi foreach($data as $row){ 665*f3f0262cSandi print '<li>'; 666*f3f0262cSandi print html_wikilink(':'.$row['id'],$row['id']); 667*f3f0262cSandi print '</li>'; 668*f3f0262cSandi } 669*f3f0262cSandi print '</ul>'; 670*f3f0262cSandi} 671*f3f0262cSandi 672*f3f0262cSandifunction html_diff($text='',$intro=true){ 673*f3f0262cSandi require_once("inc/DifferenceEngine.php"); 674*f3f0262cSandi global $ID; 675*f3f0262cSandi global $REV; 676*f3f0262cSandi global $lang; 677*f3f0262cSandi global $conf; 678*f3f0262cSandi if($text){ 679*f3f0262cSandi $df = new Diff(split("\n",htmlspecialchars(rawWiki($ID,''))), 680*f3f0262cSandi split("\n",htmlspecialchars(cleanText($text)))); 681*f3f0262cSandi $left = '<a class="wikilink1" href="'.wl($ID).'">'. 682*f3f0262cSandi $ID.' '.date($conf['dformat'],@filemtime(wikiFN($ID))).'</a>'. 683*f3f0262cSandi $lang['current']; 684*f3f0262cSandi $right = $lang['yours']; 685*f3f0262cSandi }else{ 686*f3f0262cSandi $df = new Diff(split("\n",htmlspecialchars(rawWiki($ID,$REV))), 687*f3f0262cSandi split("\n",htmlspecialchars(rawWiki($ID,'')))); 688*f3f0262cSandi $left = '<a class="wikilink1" href="'.wl($ID,"rev=$REV").'">'. 689*f3f0262cSandi $ID.' '.date($conf['dformat'],$REV).'</a>'; 690*f3f0262cSandi $right = '<a class="wikilink1" href="'.wl($ID).'">'. 691*f3f0262cSandi $ID.' '.date($conf['dformat'],@filemtime(wikiFN($ID))).'</a> '. 692*f3f0262cSandi $lang['current']; 693*f3f0262cSandi } 694*f3f0262cSandi $tdf = new TableDiffFormatter(); 695*f3f0262cSandi if($intro) print parsedLocale('diff'); 696*f3f0262cSandi ?> 697*f3f0262cSandi <table class="diff" width="100%"> 698*f3f0262cSandi <tr> 699*f3f0262cSandi <td colspan="2" width="50%" class="diff-header"> 700*f3f0262cSandi <?=$left?> 701*f3f0262cSandi </td> 702*f3f0262cSandi <td colspan="2" width="50%" class="diff-header"> 703*f3f0262cSandi <?=$right?> 704*f3f0262cSandi </td> 705*f3f0262cSandi </tr> 706*f3f0262cSandi <?=$tdf->format($df)?> 707*f3f0262cSandi </table> 708*f3f0262cSandi <? 709*f3f0262cSandi} 710*f3f0262cSandi 711*f3f0262cSandifunction html_conflict($text,$summary){ 712*f3f0262cSandi global $ID; 713*f3f0262cSandi global $lang; 714*f3f0262cSandi 715*f3f0262cSandi print parsedLocale('conflict'); 716*f3f0262cSandi ?> 717*f3f0262cSandi <form name="editform" method="post" action="<?=script()?>" accept-charset="<?=$lang['encoding']?>"> 718*f3f0262cSandi <input type="hidden" name="id" value="<?=$ID?>" /> 719*f3f0262cSandi <input type="hidden" name="wikitext" value="<?=formText($text)?>" /> 720*f3f0262cSandi <input type="hidden" name="summary" value="<?=formText($summary)?>" /> 721*f3f0262cSandi 722*f3f0262cSandi <div align="center"> 723*f3f0262cSandi <input class="button" type="submit" name="do" value="<?=$lang['btn_save']?>" accesskey="s" title="[ALT+S]" /> 724*f3f0262cSandi <input class="button" type="submit" name="do" value="<?=$lang['btn_cancel']?>" /> 725*f3f0262cSandi </div> 726*f3f0262cSandi </form> 727*f3f0262cSandi <br /><br /><br /><br /> 728*f3f0262cSandi <? 729*f3f0262cSandi} 730*f3f0262cSandi 731*f3f0262cSandi/** 732*f3f0262cSandi * Prints the glovbal message array 733*f3f0262cSandi */ 734*f3f0262cSandifunction html_msgarea(){ 735*f3f0262cSandi global $MSG; 736*f3f0262cSandi 737*f3f0262cSandi if(!isset($MSG)) return; 738*f3f0262cSandi 739*f3f0262cSandi foreach($MSG as $msg){ 740*f3f0262cSandi print '<div class="'.$msg['lvl'].'">'; 741*f3f0262cSandi print $msg['msg']; 742*f3f0262cSandi print '</div>'; 743*f3f0262cSandi } 744*f3f0262cSandi} 745*f3f0262cSandi 746*f3f0262cSandi/** 747*f3f0262cSandi * Prints the registration form 748*f3f0262cSandi */ 749*f3f0262cSandifunction html_register(){ 750*f3f0262cSandi global $lang; 751*f3f0262cSandi global $ID; 752*f3f0262cSandi 753*f3f0262cSandi print parsedLocale('register'); 754*f3f0262cSandi?> 755*f3f0262cSandi <div align="center"> 756*f3f0262cSandi <form name="register" method="post" action="<?=wl($ID)?>" accept-charset="<?=$lang['encoding']?>"> 757*f3f0262cSandi <input type="hidden" name="do" value="register" /> 758*f3f0262cSandi <input type="hidden" name="save" value="1" /> 759*f3f0262cSandi <fieldset> 760*f3f0262cSandi <legend><?=$lang['register']?></legend> 761*f3f0262cSandi <label> 762*f3f0262cSandi <?=$lang['user']?> 763*f3f0262cSandi <input type="text" name="login" class="edit" size="50" value="<?=formText($_POST['login'])?>" /> 764*f3f0262cSandi </label><br /> 765*f3f0262cSandi <label> 766*f3f0262cSandi <?=$lang['fullname']?> 767*f3f0262cSandi <input type="text" name="fullname" class="edit" size="50" value="<?=formText($_POST['fullname'])?>" /> 768*f3f0262cSandi </label><br /> 769*f3f0262cSandi <label> 770*f3f0262cSandi <?=$lang['email']?> 771*f3f0262cSandi <input type="text" name="email" class="edit" size="50" value="<?=formText($_POST['email'])?>" /> 772*f3f0262cSandi </label><br /> 773*f3f0262cSandi <input type="submit" class="button" value="<?=$lang['register']?>" /> 774*f3f0262cSandi </fieldset> 775*f3f0262cSandi </form> 776*f3f0262cSandi </div> 777*f3f0262cSandi<? 778*f3f0262cSandi} 779*f3f0262cSandi 780*f3f0262cSandi/** 781*f3f0262cSandi * This displays the edit form (lots of logic included) 782*f3f0262cSandi */ 783*f3f0262cSandifunction html_edit($text=null,$include='edit'){ //FIXME: include needed? 784*f3f0262cSandi global $ID; 785*f3f0262cSandi global $REV; 786*f3f0262cSandi global $DATE; 787*f3f0262cSandi global $RANGE; 788*f3f0262cSandi global $PRE; 789*f3f0262cSandi global $SUF; 790*f3f0262cSandi global $INFO; 791*f3f0262cSandi global $SUM; 792*f3f0262cSandi global $lang; 793*f3f0262cSandi global $conf; 794*f3f0262cSandi 795*f3f0262cSandi //check for create permissions first 796*f3f0262cSandi if(!$INFO['exists'] && !html_acl(AUTH_CREATE)) return; 797*f3f0262cSandi 798*f3f0262cSandi //set summary default 799*f3f0262cSandi if(!$SUM){ 800*f3f0262cSandi if($REV){ 801*f3f0262cSandi $SUM = $lang['restored']; 802*f3f0262cSandi }elseif(!$INFO['exists']){ 803*f3f0262cSandi $SUM = $lang['created']; 804*f3f0262cSandi } 805*f3f0262cSandi } 806*f3f0262cSandi 807*f3f0262cSandi //no text? Load it! 808*f3f0262cSandi if(!isset($text)){ 809*f3f0262cSandi $pr = false; //no preview mode 810*f3f0262cSandi if($RANGE){ 811*f3f0262cSandi list($PRE,$text,$SUF) = rawWikiSlices($RANGE,$ID,$REV); 812*f3f0262cSandi }else{ 813*f3f0262cSandi $text = rawWiki($ID,$REV); 814*f3f0262cSandi } 815*f3f0262cSandi }else{ 816*f3f0262cSandi $pr = true; //preview mode 817*f3f0262cSandi } 818*f3f0262cSandi 819*f3f0262cSandi $wr = $INFO['writable']; 820*f3f0262cSandi if($wr){ 821*f3f0262cSandi if ($REV) print parsedLocale('editrev'); 822*f3f0262cSandi print parsedLocale($include); 823*f3f0262cSandi }else{ 824*f3f0262cSandi print parsedLocale('read'); 825*f3f0262cSandi $ro='readonly="readonly"'; 826*f3f0262cSandi } 827*f3f0262cSandi if(!$DATE) $DATE = $INFO['lastmod']; 828*f3f0262cSandi?> 829*f3f0262cSandi <form name="editform" method="post" action="<?=script()?>" accept-charset="<?=$lang['encoding']?>" onsubmit="return svchk()"> 830*f3f0262cSandi <input type="hidden" name="id" value="<?=$ID?>" /> 831*f3f0262cSandi <input type="hidden" name="rev" value="<?=$REV?>" /> 832*f3f0262cSandi <input type="hidden" name="date" value="<?=$DATE?>" /> 833*f3f0262cSandi <input type="hidden" name="prefix" value="<?=formText($PRE)?>" /> 834*f3f0262cSandi <input type="hidden" name="suffix" value="<?=formText($SUF)?>" /> 835*f3f0262cSandi <table style="width:99%"> 836*f3f0262cSandi <tr> 837*f3f0262cSandi <td class="toolbar" colspan="3"> 838*f3f0262cSandi <?if($wr){?> 839*f3f0262cSandi <script language="JavaScript" type="text/javascript"> 840*f3f0262cSandi <?/* sets changed to true when previewed */?> 841*f3f0262cSandi textChanged = <? ($pr) ? print 'true' : print 'false' ?>; 842*f3f0262cSandi 843*f3f0262cSandi formatButton('images/bold.png','<?=$lang['qb_bold']?>','**','**','<?=$lang['qb_bold']?>','b'); 844*f3f0262cSandi formatButton('images/italic.png','<?=$lang['qb_italic']?>',"\/\/","\/\/",'<?=$lang['qb_italic']?>','i'); 845*f3f0262cSandi formatButton('images/underline.png','<?=$lang['qb_underl']?>','__','__','<?=$lang['qb_underl']?>','u'); 846*f3f0262cSandi formatButton('images/code.png','<?=$lang['qb_code']?>','\'\'','\'\'','<?=$lang['qb_code']?>','c'); 847*f3f0262cSandi 848*f3f0262cSandi formatButton('images/fonth1.png','<?=$lang['qb_h1']?>','====== ',' ======\n','<?=$lang['qb_h1']?>','1'); 849*f3f0262cSandi formatButton('images/fonth2.png','<?=$lang['qb_h2']?>','===== ',' =====\n','<?=$lang['qb_h2']?>','2'); 850*f3f0262cSandi formatButton('images/fonth3.png','<?=$lang['qb_h3']?>','==== ',' ====\n','<?=$lang['qb_h3']?>','3'); 851*f3f0262cSandi formatButton('images/fonth4.png','<?=$lang['qb_h4']?>','=== ',' ===\n','<?=$lang['qb_h4']?>','4'); 852*f3f0262cSandi formatButton('images/fonth5.png','<?=$lang['qb_h5']?>','== ',' ==\n','<?=$lang['qb_h5']?>','5'); 853*f3f0262cSandi 854*f3f0262cSandi formatButton('images/link.png','<?=$lang['qb_link']?>','[[',']]','<?=$lang['qb_link']?>','l'); 855*f3f0262cSandi formatButton('images/extlink.png','<?=$lang['qb_extlink']?>','[[',']]','http://www.example.com|<?=$lang['qb_extlink']?>'); 856*f3f0262cSandi 857*f3f0262cSandi formatButton('images/list.png','<?=$lang['qb_ol']?>',' - ','\n','<?=$lang['qb_ol']?>'); 858*f3f0262cSandi formatButton('images/list_ul.png','<?=$lang['qb_ul']?>',' * ','\n','<?=$lang['qb_ul']?>'); 859*f3f0262cSandi 860*f3f0262cSandi insertButton('images/rule.png','<?=$lang['qb_hr']?>','----\n'); 861*f3f0262cSandi mediaButton('images/image.png','<?=$lang['qb_media']?>','m','<?=$INFO['namespace']?>'); 862*f3f0262cSandi 863*f3f0262cSandi <? 864*f3f0262cSandi if($conf['useacl'] && $_SERVER['REMOTE_USER']){ 865*f3f0262cSandi echo "insertButton('images/sig.png','".$lang['qb_sig']."','".html_signature()."','y');"; 866*f3f0262cSandi } 867*f3f0262cSandi ?> 868*f3f0262cSandi </script> 869*f3f0262cSandi <?}?> 870*f3f0262cSandi </td> 871*f3f0262cSandi </tr> 872*f3f0262cSandi <tr> 873*f3f0262cSandi <td colspan="3"> 874*f3f0262cSandi <textarea name="wikitext" id="wikitext" <?=$ro?> cols="80" rows="10" class="edit" onchange="textChanged = true;" tabindex="1"><?="\n".formText($text)?></textarea> 875*f3f0262cSandi </td> 876*f3f0262cSandi </tr> 877*f3f0262cSandi <tr> 878*f3f0262cSandi <td> 879*f3f0262cSandi <?if($wr){?> 880*f3f0262cSandi <input class="button" type="submit" name="do" value="<?=$lang['btn_save']?>" accesskey="s" title="[ALT+S]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="3" /> 881*f3f0262cSandi <input class="button" type="submit" name="do" value="<?=$lang['btn_preview']?>" accesskey="p" title="[ALT+P]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="4" /> 882*f3f0262cSandi <input class="button" type="submit" name="do" value="<?=$lang['btn_cancel']?>" tabindex="5" /> 883*f3f0262cSandi <?}?> 884*f3f0262cSandi </td> 885*f3f0262cSandi <td> 886*f3f0262cSandi <?if($wr){?> 887*f3f0262cSandi <?=$lang['summary']?>: 888*f3f0262cSandi <input type="text" class="edit" name="summary" size="50" value="<?=formText($SUM)?>" tabindex="2" /> 889*f3f0262cSandi <?}?> 890*f3f0262cSandi </td> 891*f3f0262cSandi <td align="right"> 892*f3f0262cSandi <script type="text/javascript"> 893*f3f0262cSandi showSizeCtl(); 894*f3f0262cSandi <?if($wr){?> 895*f3f0262cSandi init_locktimer(<?=$conf['locktime']-60?>,'<?=$lang['willexpire']?>'); 896*f3f0262cSandi document.editform.wikitext.focus(); 897*f3f0262cSandi <?}?> 898*f3f0262cSandi </script> 899*f3f0262cSandi </td> 900*f3f0262cSandi </tr> 901*f3f0262cSandi </table> 902*f3f0262cSandi </form> 903*f3f0262cSandi<? 904*f3f0262cSandi} 905*f3f0262cSandi 906*f3f0262cSandi/** 907*f3f0262cSandi * prepares the signature string as configured in the config 908*f3f0262cSandi */ 909*f3f0262cSandifunction html_signature(){ 910*f3f0262cSandi global $conf; 911*f3f0262cSandi global $INFO; 912*f3f0262cSandi 913*f3f0262cSandi $sig = $conf['signature']; 914*f3f0262cSandi $sig = strftime($sig); 915*f3f0262cSandi $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig); 916*f3f0262cSandi $sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig); 917*f3f0262cSandi $sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig); 918*f3f0262cSandi $sig = str_replace('@DATE@',date($conf['dformat']),$sig); 919*f3f0262cSandi return $sig; 920*f3f0262cSandi} 921*f3f0262cSandi 922*f3f0262cSandi/** 923*f3f0262cSandi * prints some debug info 924*f3f0262cSandi */ 925*f3f0262cSandifunction html_debug(){ 926*f3f0262cSandi global $conf; 927*f3f0262cSandi 928*f3f0262cSandi print '<html><body>'; 929*f3f0262cSandi 930*f3f0262cSandi print '<p>When reporting bugs please send all the following '; 931*f3f0262cSandi print 'output as a mail to andi@splitbrain.org '; 932*f3f0262cSandi print 'The best way to do this is to save this page in your browser</p>'; 933*f3f0262cSandi 934*f3f0262cSandi print '<b>$_SERVER:</b><pre>'; 935*f3f0262cSandi print_r($_SERVER); 936*f3f0262cSandi print '</pre>'; 937*f3f0262cSandi 938*f3f0262cSandi print '<b>$conf:</b><pre>'; 939*f3f0262cSandi print_r($conf); 940*f3f0262cSandi print '</pre>'; 941*f3f0262cSandi 942*f3f0262cSandi print '<b>abs baseURL:</b><pre>'; 943*f3f0262cSandi print getBaseURL(true); 944*f3f0262cSandi print '</pre>'; 945*f3f0262cSandi 946*f3f0262cSandi print '<b>rel baseURL:</b><pre>'; 947*f3f0262cSandi print dirname($_SERVER['PHP_SELF']).'/'; 948*f3f0262cSandi print '</pre>'; 949*f3f0262cSandi 950*f3f0262cSandi print '<b>PHP Version:</b><pre>'; 951*f3f0262cSandi print phpversion(); 952*f3f0262cSandi print '</pre>'; 953*f3f0262cSandi 954*f3f0262cSandi print '<b>locale:</b><pre>'; 955*f3f0262cSandi print setlocale(LC_ALL,0); 956*f3f0262cSandi print '</pre>'; 957*f3f0262cSandi 958*f3f0262cSandi print '<b>Environment:</b><pre>'; 959*f3f0262cSandi print_r($_ENV); 960*f3f0262cSandi print '</pre>'; 961*f3f0262cSandi 962*f3f0262cSandi print '<b>PHP settings:</b><pre>'; 963*f3f0262cSandi $inis = ini_get_all(); 964*f3f0262cSandi print_r($inis); 965*f3f0262cSandi print '</pre>'; 966*f3f0262cSandi 967*f3f0262cSandi print '</body></html>'; 968*f3f0262cSandi} 969*f3f0262cSandi 970*f3f0262cSandi?> 971