%
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 %>