Hi Richard,
There are a couple out there... I created one for
myself (V1."un") that does something similar... It
relies on a couple of support files for mime-types and
icons. Here's the code... if you like the idea, I can
zip up the icons and extension-to-mime folders and
send it to ya. My website (www.jwfarrell.com) is
supposed to be online later this afternoon (after a
week of promises from my ISP), so you'll be able to
look at the code in action.
B
listtree.php
<?php
$MetaTitle = "Locally-Mirrored Documentation";
$MetaDescription ="Answerbase for Multivalue
Programmers";
$MetaKeywords = "UNIVERSE, UNIDATA, APACHE PERL, HTML
REFERENCE, CSS, CASCADING STYLE SHEET, REFERENCE,
SEARCH";
include( "style/htmlhead.php" );
$SuppressSearch = false;
$OnLoad = "";
include("style/bodytemplate_top.php");
// user config
$Gaol = "$DocRoot/help"; // set a ceiling so people
don't prowl the system
$GaolURL = "/help"; // ceiling in URLspace
$IconsFolder = "$DocRoot/graphics/icons"; // directory
for icons
$MimeTypeFolder = "$DocRoot/ext2mime"; //
extension-to-icon map
$Subdirectories = array();
$SimpleFiles = array();
$TitleStart = "ThEtItLe";
$TitleReplacement = MV_FM . $TitleStart . MV_FM;
$TitleEnd = MV_FM;
//echo "Method is $Method<br>\n";
?>
<h2>Browse the Documentation Tree</h2>
<form action="/listtree.php" method="POST">
<fieldset style="width: 500px; text-align: left;
text-indent: 0em;">
<table border="0" cellpadding="0" cellspacing="0"
width="100%">
<col style="width: 20px;">
<col style="width: 20px;">
<col>
<caption>Folder contents</caption>
<?php
unset( $DocDirectory );
if ( $Method == "POST" ) {
$TargetFolder = $Folder;
if ( substr( $TargetFolder, -2 ) != '..' ) {
if ( $TargetFolder == $GaolURL ) { $TargetFolder =
""; }
//echo "Setting folders from $TargetFolder<br>\n";
$DocArray = explode( '/', $TargetFolder );
$DocDirectoryArray = array_slice( $DocArray, 1 );
$DocDirectory = implode( '/', $DocDirectoryArray );
$CurrentFolder = "$TargetFolder";
//echo "Doc Directory is $DocDirectory<br>\n";
$FullPath = explode( '/', $DocDirectory );
$PreviousDirectoryArray = array_slice( $FullPath, 0,
count( $FullPath ) - 2 );
$PreviousDirectory = implode( '/',
$PreviousDirectoryArray );
$FullURL = explode( '/', $CurrentFolder );
$PreviousFolderArray = array_slice( $FullURL, 0,
count( $FullURL ) - 1 );
$PreviousFolder = implode( '/', $PreviousFolderArray
);
}
}
// init tree - disallow attempts to go above gaol
if ( ( !isset( $DocDirectory ) ) | ( strlen(
$DocDirectory ) < strlen( $GaolURL ) ) ) {
$DocDirectory = $Gaol;
$DocDirectoryArray = array( $DocDirectory );
$CurrentFolder = $GaolURL;
$PreviousFolderArray = array( "" );
$PreviousFolder = "";
}
if ( ( $Docs = opendir( $DocDirectory ) ) === false )
{ die( "$DocDirectory doesn't exist!" ); }
while ( false !== ( $Subdir = readdir( $Docs ) ) ) {
if ( ( substr( $Subdir, 0, 1 ) != "." ) ) {
if ( is_dir( "$DocDirectory/$Subdir" ) ) {
array_push( $Subdirectories, $Subdir );
} else {
array_push( $SimpleFiles, $Subdir );
}
}
}
sort( $Subdirectories );
sort( $SimpleFiles );
?>
<tr>
<th> </th>
<th> </th>
<th>Name</th>
<th>Size</th>
</tr>
<?php
$Level = 0; // how many t-bars in?
echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\"
style=\"line-height: 125%;\"><a href=\"/help\"><img
style=\"border: none;background: transparent;
line-height: 110%;\" height=\"16\"
src=\"/graphics/icons/folder_home.png\"></td>\n";
echo "<td> </td>\n";
echo "<td>Documentation Home Page</td>\n";
echo "</tr>\n";
echo "<tr><td> </td></td>\n";
if ( $DocDirectory != $Gaol ) {
echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\"><input
name=\"Folder\" style=\"border: none;background:
transparent;\" type=\"image\" height=\"16\" value=\"\"
src=\"/graphics/icons/mark_top.gif\"></td>\n";
echo "<td> </td>\n";
echo "<td>Top of the Tree</td>\n";
echo "</tr>\n";
echo "<tr><td> </td></tr>\n";
echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\"><input
name=\"Folder\" style=\"border: none;background:
transparent;\" type=\"image\" height=\"16\"
value=\"$PreviousFolder\"
src=\"/graphics/icons/back.gif\"></td>\n";
echo "<td> </td>\n";
echo "<td>Up one level to $PreviousFolder</td>\n";
echo "</tr>\n";
echo "<tr><td> </td></tr>\n";
}
?>
<tr>
<td align="left" valign="top"><img
src="/graphics/icons/folder_open.png"></td>
<td> </td>
<td align="left"><?php echo $CurrentFolder; ?></td>
</tr>
<?php
$LastFolder = $Subdirectories[ count( $Subdirectories
) - 1 ];
$LastFile = $SimpleFiles[ count( $SimpleFiles ) - 1 ];
foreach ( $Subdirectories as $Subdir ) {
echo "<tr>\n";
if ( ( $Subdir == $LastFolder ) & ( $LastFile == "" )
) {
echo "<td align=\"left\" valign=\"top\"><img
src=\"/graphics/icons/tree_f.gif\"></td>\n";
} else {
echo "<td align=\"left\" valign=\"top\"><img
src=\"/graphics/icons/tree_e.gif\"></td>\n";
}
echo "<td align=\"left\" valign=\"top\"><input
style=\"border: none;background: transparent;\"
value=\"$CurrentFolder/$Subdir\" name=\"Folder\"
type=\"image\"
src=\"/graphics/icons/folder_blue.png\"></td>\n";
echo "<td align=\"left\"
valign=\"top\">$CurrentFolder/$Subdir</td>\n";
echo "</tr>\n";
}
foreach ( $SimpleFiles as $SimpleFile ) {
echo "<tr>\n";
if ( $SimpleFile == $LastFile ) {
echo "<td align=\"left\" valign=\"top\"><img
src=\"/graphics/icons/tree_f.gif\"></td>\n";
} else {
echo "<td align=\"left\" valign=\"top\"><img
src=\"/graphics/icons/tree_e.gif\"></td>\n";
}
// find the right icon for the file type
unset( $Icon );
$SplitName = explode( '.', $SimpleFile );
$NameParts = count( $SplitName );
if ( $NameParts == 1 ) {
$Icon = "generic.gif";
} else {
$NameParts--;
$Extension = $SplitName[ $NameParts ];
if ( is_file( "$MimeTypeFolder/$Extension" ) ) {
list( $MimeType, $TheRest ) = file(
"$MimeTypeFolder/$Extension" );
$MimeType = rtrim( $MimeType );
if ( is_file( "$IconsFolder/mime_$MimeType.gif" ) )
{
$Icon = "mime_$MimeType.gif";
}
}
}
if ( !isset( $Icon ) ) { $Icon = "generic.gif"; }
echo "<td align=\"left\" valign=\"top\"><img
src=\"/graphics/icons/$Icon\" height=\"16\"></td>\n";
echo "<td align=\"left\" valign=\"top\"><a
href=\"$CurrentFolder/$SimpleFile\">$CurrentFolder/$SimpleFile</a></td>\n";
echo "<td align=\"right\" valign=\"top\">" .
filesize( "$DocRoot/$CurrentFolder/$SimpleFile" ) .
"</td>";
echo "</tr>\n";
}
?>
</table>
<input type="hidden" name="CurrentFolder" value="<?php
echo $CurrentFolder; ?>">
</fieldset>
</form>
<?php
//include( "$DocRoot/searchbody.php" );
?>
<?php
include("$DocRoot/style/bodytemplate_bottom.php");?>
=====
Bill Farrell
Multivalue and *nix Support Specialist
Phone: (828) 667-2245
Fax: (928) 563-5189
Web: http://www.jwfarrell.com
__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php