<% function get_dir_title($file) { $cur_url = dirname($_SERVER['PHP_SELF']); if ($file == "..") return "Go up"; elseif (file_exists($file . '/.title')) { if ($fp = fopen($file.'/.title','r')) { $buf = fgets($fp, 4096); fclose($fp); return $buf; } else return '{{' . $file . '}}'; } elseif ($file == ".") return $cur_url; else return "$cur_url/$file"; } function load_file_info($file) { if ($fp = fopen($file, "r")) { while (!feof($fp)) { $buf = fgets($fp, 4096); list($tok,$val) = preg_split("/\s+/", $buf, 2); $file_info[$tok] = $val; } fclose($fp); } return $file_info; } function get_file_info($file) { $val = $file_info[$file]; if ($val) return $val; else return $file.'[foo]'; } function a($file,$label) { return '' . $label . ''; } function table($rows) { $buf = ''; $buf .= $rows; $buf .= '
'; return $buf; } function cell($val,$width=0) { $td = $width > 0 ? "" : ''; return $td.$val.''; } function row($str, $bgcolor='-NONE-') { $tr = $bgcolor == '-NONE-' ? '' : ""; return $tr . $str . "\n"; } function dirs_table($dirs) { $flip = 0; $ODD = '#DDDDDD'; $EVEN = '#FFFFFF'; foreach ($dirs as $val) { if ($val == '.') continue; if ($val != '..' && substr($val,0,1) == '.') continue; $flip = 1 - $flip; $rows .= row( cell(a($val."/", $val."/")) . cell('   ') . cell(get_dir_title($val)), ($flip ? $ODD : $EVEN) ); } return table($rows); } %> <%= get_dir_title('.') %> <% if ($dir = @opendir(".")) { while ($file = readdir($dir)) { if (is_dir($file)) { $dirs[] = $file; $dir_title[$file] = get_dir_title($file); } elseif (is_file($file)) { if ($file == ".info") { $file_info = load_file_info($file); } elseif (substr($file,0,1) == ".") { continue; } elseif ($file == "index.php") { continue; } else { $files[] = $file; } } } closedir($dir); if ($dirs) asort($dirs); if ($files) asort($files); } %>

<%= get_dir_title('.') %>

<%= $file_info['.'] %>

Links

<%= dirs_table($dirs) %> <% if ($files) { %>

Files

<% $flip = 0; $ODD = '#DDDDDD'; $EVEN = '#FFFFFF'; foreach ($files as $tok => $val) { $flip = 1 - $flip; $label = $file_info[$tok] ? $file_info[$tok] : "Description not provided for $val"; print row( cell(a($val, $val)) . cell($label, '50%'), ($flip ? $ODD : $EVEN) ); } %>
<% } # end if files %>