1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<?php
3/**
4 * phpDocumentor :: docBuilder Web Interface
5 *
6 * Advanced Web Interface to phpDocumentor
7 *
8 * PHP versions 4 and 5
9 *
10 * Copyright (c) 2003-2006 Andrew Eddie, Greg Beaver
11 *
12 * LICENSE:
13 *
14 * This library is free software; you can redistribute it
15 * and/or modify it under the terms of the GNU Lesser General
16 * Public License as published by the Free Software Foundation;
17 * either version 2.1 of the License, or (at your option) any
18 * later version.
19 *
20 * This library is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * Lesser General Public License for more details.
24 *
25 * You should have received a copy of the GNU Lesser General Public
26 * License along with this library; if not, write to the Free Software
27 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 *
29 * @package    phpDocumentor
30 * @author     Andrew Eddie
31 * @author     Greg Beaver <cellog@php.net>
32 * @copyright  2003-2006 Andrew Eddie, Greg Beaver
33 * @license    http://www.opensource.org/licenses/lgpl-license.php LGPL
34 * @version    CVS: $Id: file_dialog.php 231860 2007-03-14 12:48:37Z ashnazg $
35 * @filesource
36 * @see phpdoc.php
37 */
38if (!function_exists( 'version_compare' )) {
39    print "phpDocumentor requires PHP version 4.1.0 or greater to function";
40    exit;
41}
42
43if ('@WEB-DIR@' != '@'.'WEB-DIR@')
44{
45    /**
46    * common file information
47    */
48    require_once 'PhpDocumentor/phpDocumentor/common.inc.php';
49    require_once 'PhpDocumentor/HTML_TreeMenu-1.1.2/TreeMenu.php';
50    require_once( '@WEB-DIR@' . PATH_DELIMITER . 'PhpDocumentor/docbuilder/includes/utilities.php' );
51
52    define(PHPDOC_WEBROOT_DIR, 'PhpDocumentor');
53
54    // set up include path so we can find all files, no matter what
55    $GLOBALS['_phpDocumentor_install_dir'] = PHPDOC_WEBROOT_DIR;
56
57    // find the .ini directory by parsing phpDocumentor.ini and extracting _phpDocumentor_options[userdir]
58    $ini = phpDocumentor_parse_ini_file('@DATA-DIR@' . PATH_DELIMITER . 'PhpDocumentor/phpDocumentor.ini', true);
59    if (isset($ini['_phpDocumentor_options']['userdir'])) {
60        $configdir = $ini['_phpDocumentor_options']['userdir'];
61    } else {
62        $configdir = '@DATA-DIR@' . PATH_DELIMITER . 'PhpDocumentor/user';
63    }
64} else {
65
66    define(PHPDOC_WEBROOT_DIR, dirname(dirname(__FILE__)));
67    /**
68    * common file information
69    */
70    include_once(PHPDOC_WEBROOT_DIR . "/phpDocumentor/common.inc.php");
71	include_once(PHPDOC_WEBROOT_DIR . "/HTML_TreeMenu-1.1.2/TreeMenu.php");
72	include_once(PHPDOC_WEBROOT_DIR . "/docbuilder/includes/utilities.php" );
73
74    // set up include path so we can find all files, no matter what
75    $GLOBALS['_phpDocumentor_install_dir'] = dirname(dirname( realpath( __FILE__ ) ));
76    // add my directory to the include path, and make it first, should fix any errors
77    if (substr(PHP_OS, 0, 3) == 'WIN') {
78    	ini_set('include_path',$GLOBALS['_phpDocumentor_install_dir'].';'.ini_get('include_path'));
79    } else {
80    	ini_set('include_path',$GLOBALS['_phpDocumentor_install_dir'].':'.ini_get('include_path'));
81    }
82
83    // find the .ini directory by parsing phpDocumentor.ini and extracting _phpDocumentor_options[userdir]
84    $ini = phpDocumentor_parse_ini_file($_phpDocumentor_install_dir . PATH_DELIMITER . 'phpDocumentor.ini', true);
85    if (isset($ini['_phpDocumentor_options']['userdir'])) {
86        $configdir = $ini['_phpDocumentor_options']['userdir'];
87    } else {
88        $configdir = $_phpDocumentor_install_dir . '/user';
89    }
90}
91
92// allow the user to change this at runtime
93if (!empty( $_REQUEST['altuserdir'] )) {
94	$configdir = $_REQUEST['altuserdir'];
95}
96?>
97<html>
98<head>
99	<title>
100		File browser
101	</title>
102	<style type="text/css">
103		body, td, th, select, input {
104			font-family: verdana,sans-serif;
105			font-size: 9pt;
106		}
107		.text {
108			font-family: verdana,sans-serif;
109			font-size: 9pt;
110			border: solid 1px #000000;
111		}
112		.button {
113			border: solid 1px #000000;
114		}
115		.small {
116			font-size: 7pt;
117		}
118	</style>
119
120	<script src="../HTML_TreeMenu-1.1.2/TreeMenu.js" language="JavaScript" type="text/javascript"></script>
121
122<?php
123	set_time_limit(0);    // six minute timeout
124	ini_set("memory_limit","256M");
125
126	/**
127	 * Directory Node
128	 * @package HTML_TreeMenu
129	 */
130	class DirNode extends HTML_TreeNode
131	{
132		/**
133		* full path to this node
134		* @var string
135		*/
136		var $path;
137
138		function DirNode($text = false, $link = false, $icon = false, $path, $events = array())
139		{
140			$this->path = $path;
141			$options = array();
142			if ($text) $options['text'] = $text;
143			if ($link) $options['link'] = $link;
144			if ($icon) $options['icon'] = $icon;
145			HTML_TreeNode::HTML_TreeNode($options,$events);
146		}
147	}
148
149
150	$menu  = new HTML_TreeMenu();
151	$filename = '';
152	if (isset($_GET) && isset($_GET['fileName'])) {
153		$filename = $_GET['fileName'];
154	}
155	$filename = realpath($filename);
156	$pd = (substr(PHP_OS, 0, 3) == 'WIN') ? '\\' : '/';
157	$test = ($pd == '/') ? '/' : 'C:\\';
158	if (empty($filename) || ($filename == $test)) {
159		$filename = ($pd == '/') ? '/' : 'C:\\';
160		$node = false;
161        getDir($filename,$node);
162    } else {
163        flush();
164//            if ($pd != '/') $pd = $pd.$pd;
165        $anode = false;
166        switchDirTree($filename,$anode);
167//            recurseDir($filename,$anode);
168        $node = new HTML_TreeNode(array('text' => "Click to view ".addslashes($filename),'link' => "",'icon' => 'branchtop.gif'));
169        $node->addItem($anode);
170    };
171    $menu->addItem($node);
172    if ('@WEB-DIR@' != '@'.'WEB-DIR@')
173    {
174    	$DHTMLmenu = &new HTML_TreeMenu_DHTML($menu,
175                        array('images' => '../HTML_TreeMenu-1.1.2/images'));
176    } else {
177       $DHTMLmenu = &new HTML_TreeMenu_DHTML($menu,
178                        array('images' => str_replace('/docbuilder/file_dialog.php','',$_SERVER['PHP_SELF']) .
179                              '/HTML_TreeMenu-1.1.2/images'));
180    }
181?>
182<script type="text/javascript" language="Javascript">
183/**
184   Creates some global variables
185*/
186function initializate() {
187//
188//The "platform independent" newLine
189//
190//Taken from http://developer.netscape.com/docs/manuals/communicator/jsref/brow1.htm#1010426
191	if (navigator.appVersion.lastIndexOf( 'Win' ) != -1) {
192		$pathdelim="\\";
193		$newLine="\r\n";
194	} else {
195		$newLine="\n";
196		$pathdelim="/";
197	}
198	/* for($a=0;$a<document.dataForm.elements.length;$a++) {
199	 alert("The name is '"+document.dataForm.elements[$a].name+"' "+$a);
200	 }
201	*/
202}
203/** Sets the contents of the help box, and submits the form
204*/
205function setHelp( $str ) {
206	document.helpForm.fileName.value = $str;
207	document.helpForm.submit();
208}
209
210/** Sets the contents of the help box only
211*/
212function setHelpVal( $str ) {
213	document.helpForm.fileName.value = $str;
214}
215/**Takes a given string and leaves it ready to add a new string
216   That is, puts the comma and the new line if needed
217*/
218function prepareString($myString) {
219 //First verify that a comma is not at the end
220 if($myString.lastIndexOf(",") >= $myString.length-2) {
221  //We have a comma at the end
222  return $myString;
223 }
224 if($myString.length > 0) {
225  $myString+=","+$newLine;
226 }
227 return $myString;
228}
229
230
231 function myReplace($string,$text,$by) {
232 // Replaces text with by in string
233     var $strLength = $string.length, $txtLength = $text.length;
234     if (($strLength == 0) || ($txtLength == 0)) return $string;
235
236     var $i = $string.indexOf($text);
237     if ((!$i) && ($text != $string.substring(0,$txtLength))) return $string;
238     if ($i == -1) return $string;
239
240     var $newstr = $string.substring(0,$i) + $by;
241
242     if ($i+$txtLength < $strLength)
243         $newstr += myReplace($string.substring($i+$txtLength,$strLength),$text,$by);
244
245     return $newstr;
246 }
247</script>
248
249</head>
250
251<body bgcolor="#ffffff" onload="javascript:initializate()">
252<strong>Directory Browser</strong>
253
254<table cellpadding="1" cellspacing="1" border="0" width="100%">
255
256<form name="helpForm" action="<?php print $_SERVER['PHP_SELF']; ?>" method="get" enctype="multipart/form-data">
257<tr>
258	<td colspan="2" width="100%">
259		Use this to find directories and files which can be used below:
260	</td>
261</tr>
262<tr>
263	<td align="right">
264		<a href="javascript:document.helpForm.submit();" title="browse tree">
265<?php
266	echo showImage( 'images/rc-gui-install-24.png', '24', '24' );
267?>
268		</a>
269	</td>
270	<td>
271		<input size="60" type="text" name="fileName" value="<?php print $filename;?>" class="text" />
272	</td>
273</tr>
274<tr>
275	<td>
276		<input type="submit" name="helpdata" value="close" class="button" onclick="window.close();" />
277	</td>
278	<td align="right">
279		<input type="submit" name="helpdata" value="accept" class="button" onclick="opener.setFile(document.helpForm.fileName.value);window.close();" />
280	</td>
281</tr>
282<tr>
283	<td colspan="2">
284		<div id='menuLayer'></div>
285		<?php $DHTMLmenu->printMenu(); ?>
286	</td>
287</tr>
288</form>
289
290</table>
291
292</body>
293</html>
294