home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / config.php < prev    next >
Encoding:
PHP Script  |  2004-03-24  |  21.8 KB  |  592 lines

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <?php
  3. /**
  4.  * Advanced Web Interface to phpDocumentor
  5.  * @see phpdoc.php
  6.  * @package  phpDocumentor
  7.  * @filesource
  8.  */
  9. //
  10. // +------------------------------------------------------------------------+
  11. // | phpDocumentor :: docBuilder Web Interface                              |
  12. // +------------------------------------------------------------------------+
  13. // | Copyright (c) 2003 Andrew Eddie, Greg Beaver                           |
  14. // +------------------------------------------------------------------------+
  15. // | This source file is subject to version 3.00 of the PHP License,        |
  16. // | that is available at http://www.php.net/license/3_0.txt.               |
  17. // | If you did not receive a copy of the PHP license and are unable to     |
  18. // | obtain it through the world-wide-web, please send a note to            |
  19. // | license@php.net so we can mail you a copy immediately.                 |
  20. // +------------------------------------------------------------------------+
  21. //
  22.  
  23. $root_dir = 'PhpDocumentor';
  24.  
  25. if (!function_exists( 'version_compare' )) {
  26.     print "phpDocumentor requires PHP version 4.1.0 or greater to function";
  27.     exit;
  28. }
  29.  
  30. /**
  31. * common file information
  32. */
  33. include_once("PhpDocumentor/phpDocumentor/common.inc.php");
  34. include_once("C:\xampp\php\pear\data/PhpDocumentor/docbuilder/includes/utilities.php" );
  35.  
  36. // find the .ini directory by parsing phpDocumentor.ini and extracting _phpDocumentor_options[userdir]
  37. $ini = phpDocumentor_parse_ini_file('C:\xampp\php\pear\data/PhpDocumentor/phpDocumentor.ini', true);
  38. if (isset($ini['_phpDocumentor_options']['userdir'])) {
  39.     $configdir = $ini['_phpDocumentor_options']['userdir'];
  40. } else {
  41.     $configdir =  'C:\xampp\php\pear\data/PhpDocumentor/user';
  42. }
  43.  
  44. // allow the user to change this at runtime
  45. if (!empty( $_REQUEST['altuserdir'] )) {
  46.     $configdir = $_REQUEST['altuserdir'];
  47. }
  48.  
  49. // assign the available converters
  50. $converters = array(
  51.     "HTML:frames:default"            =>    'HTML:frames:default',
  52.     "HTML:frames:earthli"            =>    'HTML:frames:earthli',
  53.     "HTML:frames:l0l33t"            =>    'HTML:frames:l0l33t',
  54.     "HTML:frames:phpdoc.de"            =>    'HTML:frames:phpdoc.de',
  55.     "HTML:frames:phphtmllib"        =>    'HTML:frames:phphtmllib',
  56.     "HTML:frames:phpedit"            =>    'HTML:frames:phpedit',
  57.     "HTML:frames:DOM/default"        =>    'HTML:frames:DOM/default',
  58.     "HTML:frames:DOM/earthli"        =>    'HTML:frames:DOM/earthli',
  59.     "HTML:frames:DOM/l0l33t"        =>    'HTML:frames:DOM/l0l33t',
  60.     "HTML:frames:DOM/phpdoc.de"        =>    'HTML:frames:DOM/phpdoc.de',
  61.     "HTML:frames:DOM/phphtmllib"    =>    'HTML:frames:DOM/phphtmllib',
  62.     "HTML:Smarty:default"            =>    'HTML:Smarty:default',
  63.     "HTML:Smarty:HandS"                =>    'HTML:Smarty:HandS',
  64.     "HTML:Smarty:PHP"               =>    'HTML:Smarty:PHP',
  65.     "PDF:default:default"            =>    'PDF:default:default',
  66.     "CHM:default:default"            =>    'CHM:default:default',
  67.     "XML:DocBook/peardoc2:default"    =>    'XML:DocBook/peardoc2:default'
  68. );
  69.  
  70. // compile a list of available screen shots
  71. $convScreenShots = array();
  72.  
  73. $path = 'C:\xampp\php\pear\data/PhpDocumentor/docbuilder/images/';
  74. if ($dir = opendir($path)) {
  75.     while (($file = readdir( $dir )) !== false) { 
  76.         if ($file != '.' && $file != '..') {
  77.             if (!is_dir( $path . $file )) {
  78.                 if (strpos( $file, 'ss_' ) === 0) {
  79.                     $key = substr( $file, 3 );
  80.                     $key = str_replace( '_', ':', $key );
  81.                     $key = str_replace( '-', '/', $key );
  82.                     $key = str_replace( '.png', '', $key );
  83.                     $convScreenShots[$key] = $file;
  84.                 }
  85.             }
  86.         }
  87.     }
  88. }
  89.  
  90. ?>
  91. <html>
  92. <head>
  93.     <title>
  94.         Form to submit to phpDocumentor v<?php print PHPDOCUMENTOR_VER; ?>
  95.     </title>
  96.     <style type="text/css">
  97.         body, td, th {
  98.             font-family: verdana,sans-serif;
  99.             font-size: 9pt;
  100.         }
  101.         .text {
  102.             font-family: verdana,sans-serif;
  103.             font-size: 9pt;
  104.             border: solid 1px #000000;
  105.         }
  106.         .small {
  107.             font-size: 7pt;
  108.         }
  109.     </style>
  110.  
  111.     <script src="includes/tabpane.js" language="JavaScript" type="text/javascript"></script>
  112.     <link id="webfx-tab-style-sheet" type="text/css" rel="stylesheet" href="includes/tab.webfx.css" />
  113.  
  114. <script type="text/javascript" language="Javascript">
  115. /**
  116.    Creates some global variables
  117. */
  118. function initializate() {
  119. //
  120. //The "platform independent" newLine
  121. //
  122. //Taken from http://developer.netscape.com/docs/manuals/communicator/jsref/brow1.htm#1010426
  123.     if (navigator.appVersion.lastIndexOf('Win') != -1) {
  124.       $pathdelim="\\";
  125.       $newLine="\r\n";
  126.     } else {
  127.       $newLine="\n";
  128.       $pathdelim="/";
  129.     }
  130. }
  131.  
  132. /**Adds the contents of the help box as a directory
  133. */
  134. function addDirectory($object) {
  135.     //$a = document.helpForm.fileName.value;
  136.     $a = parent.ActionFrame.document.actionFrm.fileName.value;
  137.     $a = myReplace( $a, '\\\\', '\\' );
  138.     if ($a[$a.length - 1] == $pathdelim) {
  139.         $a = $a.substring(0, $a.length - 1);
  140.     }
  141.     if ($a.lastIndexOf('.') > 0) {
  142.         $a = $a.substring(0,$a.lastIndexOf($pathdelim));
  143.     }
  144.     $object.value = prepareString($object.value)+$a;
  145. }
  146. /**Adds the contents of the converter box to the converters list
  147. */
  148. function addConverter($object) {
  149.  $object.value = prepareString($object.value)+document.dataForm.ConverterSetting.value;
  150. }
  151. /**Replaces the converters list with the contents of the converter box
  152. */
  153. function replaceConverter($object) {
  154.  $object.value = document.dataForm.ConverterSetting.value;
  155. }
  156. /**Adds the contents of the help box as a file to the given control
  157. */
  158. function addFile($object) {
  159.     //$a = document.helpForm.fileName.value;
  160.     $a = parent.ActionFrame.document.actionFrm.fileName.value;
  161.     $a = myReplace($a,'\\\\','\\');
  162.     $object.value = prepareString($object.value)+$a;
  163. }
  164. /**Takes a given string and leaves it ready to add a new string
  165.    That is, puts the comma and the new line if needed
  166. */
  167. function prepareString($myString) {
  168.  //First verify that a comma is not at the end
  169.  if($myString.lastIndexOf(",") >= $myString.length-2) {
  170.   //We have a comma at the end
  171.   return $myString;
  172.  }
  173.  if($myString.length > 0) {
  174.   $myString+=","+$newLine;
  175.  }
  176.  return $myString;
  177. }
  178. /**Do the validation needed before sending the from and return a truth value indicating if the form can be sent
  179. */
  180.  function validate() {
  181.   //Take out all newLines and change them by nothing
  182.   //This could be done by using javascript function's replacebut that was implemented only until Navigator 4.0 and so it is better to use more backward compatible functions like substr
  183.   document.dataForm.elements[0].value= stripNewLines(document.dataForm.elements[0].value);
  184.   document.dataForm.elements[1].value= stripNewLines(document.dataForm.elements[1].value);
  185.   document.dataForm.elements[2].value= stripNewLines(document.dataForm.elements[2].value);
  186.   document.dataForm.elements[3].value= stripNewLines(document.dataForm.elements[3].value);
  187.   document.dataForm.elements[4].value= stripNewLines(document.dataForm.elements[4].value);
  188.   document.dataForm.elements[5].value= stripNewLines(document.dataForm.elements[5].value);
  189.   document.dataForm.elements[6].value= stripNewLines(document.dataForm.elements[6].value);
  190.   document.dataForm.elements[7].value= stripNewLines(document.dataForm.elements[7].value);
  191.   //By returning true we are allowing the form to be submitted
  192.   return true;
  193.  }
  194. /**Takes a string and removes all the ocurrences of new lines
  195. Could have been implemented a lot easier with replace but it's not very backwards compatible
  196. */
  197. function stripNewLines( $myString ) {
  198.     return myReplace($myString,$newLine,'');
  199. }
  200.  
  201. function myReplace($string,$text,$by) {
  202.     // Replaces text with by in string
  203.     var $strLength = $string.length, $txtLength = $text.length;
  204.     if (($strLength == 0) || ($txtLength == 0)) {
  205.         return $string;
  206.     }
  207.     var $i = $string.indexOf($text);
  208.     if ((!$i) && ($text != $string.substring(0,$txtLength))) {
  209.         return $string;
  210.     }
  211.     if ($i == -1) {
  212.         return $string;
  213.     }
  214.     var $newstr = $string.substring(0,$i) + $by;
  215.     if ($i+$txtLength < $strLength) {
  216.         $newstr += myReplace($string.substring($i+$txtLength,$strLength),$text,$by);
  217.     }
  218.     return $newstr;
  219. }
  220.  
  221. var screenShots = new Array();
  222. <?php
  223.     $temp = array();
  224.     foreach ($converters as $k=>$v) {
  225.         if (array_key_exists( $k, $convScreenShots )) {
  226.             echo "\nscreenShots['$k'] = '{$convScreenShots[$k]}'";
  227.         } else {
  228.             echo "\nscreenShots['$k'] = ''";
  229.         }
  230.     }
  231. ?>
  232.  
  233.  
  234. /** Swaps the converted screen shot image
  235. */
  236.     function swapImage( key ) {
  237.         document.screenshot.src = 'images/' + screenShots[key];
  238.     }
  239.  
  240. </script>
  241.  
  242. </head>
  243.  
  244. <body bgcolor="#ffffff" onload="javascript:initializate()" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
  245.  
  246.  
  247. <div class="tab-pane" id="tabPane1">
  248. <script type="text/javascript">
  249.     var tp1 = new WebFXTabPane( document.getElementById( "tabPane1" ));
  250. </script>
  251.  
  252.     <div class="tab-page" id="tab_intro">
  253.         <h2 class="tab">Introduction</h2>
  254.         Welcome to <b>docBuilder</b>.
  255.         <p>This is the new web-interface for running, in our opinion, the best in-code documentation compiler there is: <b>phpDocumentor</b>.</p>
  256.         <p>What's new in this release?  Heaps of things, but here are the headlines:</p>
  257.         <ul>
  258.             <li>Much greater support for PEAR on both windows and linux</li>
  259.             <li>CHM, PDF and XML:DocBook/peardoc2 converters are all stable!</li>
  260.             <li>New tokenizer-based parser is literally twice as fast as the old parser (requires PHP 4.3.0+)</li>
  261.             <li>New external user-level manual parsing and generation allows cross-linking between API docs and DocBook-format tutorials/manuals!</li>
  262.             <li>Color syntax source highlighting and cross-referencing with documentation of source code in HTML, CHM and PDF with customizable templating</li>
  263.             <li>New Configuration files simplify repetitive and complex documentation tasks</li>
  264.             <li>Brand new extensive manual - which can be generated directly from the source using makedocs.ini!</li>
  265.             <li>Many improvements to in-code API documentation including new tags, and better handling of in-code html tags</li>
  266.             <li>New XML:DocBook/peardoc converter makes generating PEAR manual formats easy for PEAR developers along with the --pear command-line switch</li>
  267.             <li>Many new HTML templates, all of them beautiful thanks to Marco von Ballmoos</li>
  268.             <li>A brand new web interface thanks to Andrew Eddie!</li>
  269.         </ul>
  270.     </div>
  271.  
  272.     <div class="tab-page" id="tab_config">
  273.         <h2 class="tab">Config</h2>
  274.         <table cellspacing="0" cellpadding="3" border="0">
  275.         <tr>
  276.             <td colspan="2"><b>Use a pre-created config file for form values.</b></td>
  277.         </tr>
  278.         <tr>
  279.             <td nowrap="nowrap">
  280.                 <b>change config directory:</b>
  281.             </td>
  282.             <td width="100%">
  283. <form name="configForm" action="config.php" method="get">
  284.                 <input size="20" type="text" name="altuserdir" value="" /><input type="SUBMIT" value="Change" name="submitButton">
  285.         <?php
  286.             if (!empty($_REQUEST['altuserdir'])) {
  287.                 print '<br><i>changed to <b>"'.$_REQUEST['altuserdir'].'"</b></i>';
  288.             }
  289.         ?>
  290. </form>
  291.             </td>
  292.         </tr>
  293.         <tr>
  294.             <td nowrap="nowrap">
  295.                 <b>Choose a config:</b>
  296.             </td>
  297.             <td>
  298. <form name="dataForm" action="builder.php" method="get" onsubmit="return validate()" target="OutputFrame">
  299.                 <select name="setting_useconfig">
  300.                       <option value="" <?php if (empty($_REQUEST['altuserdir'])) print 'selected'; ?>>don't use config file</option>
  301.                       <?php
  302.                       $dirs = array();
  303.                       $dirs = phpDocumentor_ConfigFileList($configdir);
  304.                       $path = '';
  305.                       $sel = ' selected';
  306.                       if (!empty($_REQUEST['altuserdir'])) $path = $configdir . PATH_DELIMITER;
  307.                       else $sel = '';
  308.                       foreach($dirs as $configfile)
  309.                       {
  310.                           print '<option value="'.$path.$configfile.'"'.$sel.'>'.$configfile.".ini</option>\n";
  311.                           $sel = '';
  312.                       }
  313.                       ?>
  314.                 </select>
  315.                 <input type="SUBMIT" value="Go" name="submitButton">
  316.             </td>
  317.         </tr>
  318.         <tr>
  319.             <td colspan="2">
  320.                 Normally, phpDocumentor uses the form values from this form to set up parsing.  In version 1.2, phpDocumentor allows you to "save" form values in configuration files so that you can replicate common complicated documentation tasks with only one time.  Just choose a config file below or create a new one and refresh this page to choose it.
  321.             </td>
  322.         </tr>
  323.         </table>
  324.     </div>
  325.  
  326.     <div class="tab-page" id="tab_files">
  327.         <h2 class="tab">Files</h2>
  328.         <table cellspacing="0" cellpadding="3" border="0">
  329.         <tr>
  330.             <td align="right" valign="top" nowrap="nowrap">
  331.                 <b>Files<br />to parse</b>
  332.                 <br />
  333.                 <a href="javascript:addFile(document.dataForm.setting_filename)" title="Add the file in the help box">
  334. <?php
  335.     echo showImage( 'images/rc-gui-install-24.png', '24', '24' );
  336. ?>
  337.                 </a>
  338.             </td>
  339.             <td valign="top">
  340.                 <textarea rows="5" cols="60" name="setting_filename" class="text"></textarea>
  341.             </td>
  342.             <td valign="top" class="small">
  343.                 This is a group of comma-separated names of php files or tutorials that will be processed by phpDocumentor.
  344.             </td>
  345.         </tr>
  346.         <tr>
  347.             <td align="right" valign="top" nowrap="nowrap">
  348.                 <b>Directory<br />to parse</b>
  349.                 <br />
  350.                 <a href="javascript:addFile(document.dataForm.setting_directory)" title="Add the file in the help box">
  351. <?php
  352.     echo showImage( 'images/rc-gui-install-24.png', '24', '24' );
  353. ?>
  354.                 </a>
  355.             </td>
  356.             <td valign="top">
  357.                 <textarea rows="5" cols="60" name="setting_directory" class="text" title=""></textarea>
  358.             </td>
  359.             <td valign="top" class="small">
  360.                 This is a group of comma-separated directories where php files or tutorials are found that will be processed by phpDocumentor. phpDocumentor automatically parses subdirectories
  361.             </td>
  362.         </tr>
  363.         <tr>
  364.             <td align="right" valign="top" nowrap="nowrap">
  365.                 <b>Files<br />to ignore</b>
  366.                 <br />
  367.                 <a href="javascript:addFile(document.dataForm.setting_ignore)" title="Add the file in the help box">
  368. <?php
  369.     echo showImage( 'images/rc-gui-install-24.png', '24', '24' );
  370. ?>
  371.                 </a>
  372.             </td>
  373.             <td valign="top">
  374.                 <textarea rows="5" cols="60" class="text" name="setting_ignore"></textarea>
  375.             </td>
  376.             <td valign="top" class="small">
  377.                 A list of files (full path or filename), and patterns to ignore.  Patterns may use wildcards * and ?.  To ignore all subdirectories named "test" for example, using "test/"  To ignore all files and directories with test in their name use "*test*"
  378.             </td>
  379.         </tr>
  380.         <tr>
  381.             <td align="right" valign="top" nowrap="nowrap">
  382.                 <b>Packages<br />to parse</b>
  383.             </td>
  384.             <td valign="top">
  385.                 <textarea rows="4" cols="60" class="text" name="setting_packageoutput"></textarea>
  386.             </td>
  387.             <td valign="top" class="small">
  388.                 The parameter packages is a group of comma separated names of abstract packages that will be processed by phpDocumentor. All package names must be separated by commas.
  389.             </td>
  390.         </tr>
  391.         </table>
  392.     </div>
  393.  
  394.  
  395.     <div class="tab-page" id="tab_output">
  396.         <h2 class="tab">Output</h2>
  397.         <table cellspacing="0" cellpadding="3" border="0">
  398.         <tr>
  399.             <td align="right" valign="top" nowrap="nowrap">
  400.                 <b>Target</b>
  401.                 <br />
  402.                 <a href="javascript:addFile(document.dataForm.setting_target)" title="Add the file in the help box">
  403. <?php
  404.     echo showImage( 'images/rc-gui-install-24.png', '24', '24' );
  405. ?>
  406.             </td>
  407.             <td valign="top">
  408.                 <input type="text" name="setting_target" size="60" class="text" />
  409.             </td>
  410.             <td valign="top" class="small">
  411.                 Target is the directory where the output produced by phpDocumentor will reside.
  412.             </td>
  413.         </tr>
  414.         <tr>
  415.             <td align="right" valign="top" nowrap="nowrap">
  416.                 <b>Output<br />Format</b>
  417.             </td>
  418.             <td valign="top">
  419.                 <textarea cols="60" rows="3" name="setting_output" class="text">HTML:Smarty:default</textarea>
  420.                 <br />
  421.                 Output type:Converter name:template name
  422.                 <br />
  423. <?php
  424.     echo htmlArraySelect( $converters, 'ConverterSetting', 'size="1" class="text" onchange="swapImage(this.options[this.options.selectedIndex].value);"', 'HTML:Smarty:default' );
  425. ?>
  426.                 <br />
  427.                 <a href="javascript:addConverter(document.dataForm.setting_output)">
  428.                     Add the converter in the help box
  429.                 </a>
  430.                 <br />
  431.                 <br />
  432.                 <img name="screenshot" src="images/ss_HTML_Smarty_default.png" width="200" height="200" border="2" alt="Screen Shot">
  433.             </td>
  434.             <td valign="top" class="small">
  435.                 Outputformat may be HTML, XML, PDF, or CHM (case-sensitive) in version 1.2.
  436.                 <br />There is only one Converter for both CHM and PDF:<br /><i>default</i>.
  437.                 <br />There are 2 HTML Converters:<br /><i>frames</i> or <i>Smarty</i>.
  438.                 <br /><b>frames templates</b> may be any of:
  439.                 <br />
  440.                 <i>default, earthli, l0l33t, phpdoc.de, phphtmllib, phpedit, DOM/default, DOM/earthli, DOM/l0l33t, DOM/phphtmllib, or DOM/phpdoc.de</i>.
  441.                 <br />
  442.                 <b>Smarty templates</b> may be any of:
  443.                 <br />
  444.                 <i>default, HandS, or PHP</i>
  445.                 <br />
  446.                 <strong>XML:DocBook/peardoc2:default</strong> is the only choice for XML in 1.2.2
  447.             </td>
  448.         </tr>
  449.         </table>
  450.     </div>
  451.  
  452.     <div class="tab-page" id="tab_options">
  453.         <h2 class="tab">Options</h2>
  454.         <table cellspacing="0" cellpadding="3" border="0">
  455.         <tr>
  456.             <td align="right" nowrap="nowrap">
  457.                 <b>Generated Documentation Title</b>
  458.             </td>
  459.             <td>
  460.                 <input type="text" name="setting_title" size="40" value="Generated Documentation" class="text">
  461.             </td>
  462.             <td class="small">
  463.                 Choose a title for the generated documentation
  464.             </td>
  465.         </tr>
  466.         <tr>
  467.             <td nowrap="nowrap">
  468.                 <b>Default Package Name</b>
  469.             </td>
  470.             <td>
  471.                 <input type="TEXT" name="setting_defaultpackagename" size="40" value="default" class="text" />
  472.             </td>
  473.             <td class="small">
  474.                 Choose a name for the default package
  475.             </td>
  476.         </tr>
  477.         <tr>
  478.             <td nowrap="nowrap">
  479.                 <b>Custom Tags</b>
  480.             </td>
  481.             <td>
  482.                 <input type="text" name="setting_customtags" size="40" class="text" />
  483.             </td>
  484.             <td class="small">
  485.                 Custom Tags is a comma-separated list of tags you want phpDocumentor to include as valid tags in this parse.  An example would be 'value, size' to allow @value and @size tags.
  486.             </td>
  487.         </tr>
  488.         <tr>
  489.             <td nowrap="nowrap">
  490.                 <b>Parse @access private and @internal/{@internal}}</b>
  491.             </td>
  492.             <td nowrap="nowrap">
  493.                 <input type="checkbox" name="setting_parseprivate" value="on" />
  494.             </td>
  495.             <td class="small">
  496.                 The parameter Parse @access private tells phpDocumentor whether to parse elements with an '@access private' tag in their docblock.  In addition, it will turn on parsing of @internal tags and inline {@internal}} sections
  497.             </td>
  498.         </tr>
  499.         <tr>
  500.             <td nowrap="nowrap">
  501.                 <b>Generate Highlighted Source Code</b>
  502.             </td>
  503.             <td nowrap="nowrap">
  504.                 <input type="checkbox" name="setting_sourcecode" value="on" />
  505.             </td>
  506.             <td class="small">
  507.                 The parameter Generate Highlighted Source Code tells phpDocumentor whether to generate highlighted XRef source code similar to PHP-XRef output.
  508.             </td>
  509.         </tr>
  510.         <tr>
  511.             <td nowrap="nowrap">
  512.                 <b>JavaDoc-compliant<br />Description parsing.</b>
  513.             </td>
  514.             <td>
  515.                 <input type="checkbox" name="setting_javadocdesc" value="on" />
  516.             </td>
  517.             <td class="small">
  518.                 Normally, phpDocumentor uses several rules to determine the short description.  This switch asks phpDocumentor to simply search for the first period (.) and use it to delineate the short description.  In addition, the short description will not be separated from the long description.
  519.             </td>
  520.         </tr>
  521.         <tr>
  522.             <td nowrap="nowrap">
  523.                 <b>PEAR package repository parsing</b>
  524.             </td>
  525.             <td>
  526.                 <input type="checkbox" name="setting_pear" value="on" />
  527.             </td>
  528.             <td class="small">
  529.                 PEAR package repositories have specific requirements:
  530.                 <ol>
  531.                     <li>Every package is in a directory with the same name.</li>
  532.                     <li>All private data members and methods begin with an underscore (function _privfunction()).</li>
  533.                     <li>_Classname() is a destructor</li>
  534.                 </ol>
  535.                 This option recognizes these facts and uses them to make assumptions about packaging and access levels.  Note that with PHP 5, the destructor option will be obsolete.
  536.             </td>
  537.         </tr>
  538.         </table>
  539.     </div>
  540.  
  541.     <div class="tab-page" id="tab_credits">
  542.         <h2 class="tab">Credits</h2>
  543.         phpDocumentor written by Joshua Eichorn
  544.         <br />Web Interface originally written by Juan Pablo Morales, enhanced by Greg Beaver and super-charged by Andrew Eddie
  545.         <p>
  546.         Joshua Eichorn <a href="mailto:jeichorn@phpdoc.org">jeichorn@phpdoc.org</a>
  547.         <br>Juan Pablo Morales <a href=
  548.         "mailto:ju-moral@uniandes.edu.co">ju-moral@uniandes.edu.co</a>
  549.         <br>Gregory Beaver <a href=
  550.         "mailto:cellog@users.sourceforge.net">cellog@users.sourceforge.net</a>
  551.         <br>Andrew Eddie <a href=
  552.         "mailto:eddieajau@users.sourceforge.net">eddieajau@users.sourceforge.net</a>
  553.         </p>
  554.         <p>
  555.         If you have any problems with phpDocumentor, please visit the website: <a href='http://phpdocu.sourceforge.net'>phpdocu.sourceforge.net</a> and submit a bug
  556.         </p>
  557.         <!-- Created: Tue Jun 26 18:52:40 MEST 2001 -->
  558.         <!-- hhmts start -->
  559.         <pre>
  560.         Last modified: $Date: 2003/08/13 18:37:20 $
  561.         Revision: $Revision: 1.1.2.3 $
  562.         </pre>
  563.     </div>
  564.     <div class="tab-page" id="tab_links">
  565.         <h2 class="tab">Links</h2>
  566.         <ul>
  567.             <li><a href="http://www.phpdoc.org/manual.php">phpDocumentor manual</a> - Learn how to use phpDocumentor to document your PHP source code</li>
  568.             <li><a href="http://phpdocu.sourceforge.net/">phpDocumentor homepage</a> on SourceForge</li>
  569.             <li><a href="http://freshmeat.net/projects/phpdocu">Freshmeat record</a> - subscribe here</li>
  570.         </ul>
  571.     </div>
  572. </div>
  573. <input type="hidden" name="interface" value="web">
  574. <input type="hidden" name="dataform" value="true">
  575.  
  576. </form>
  577.  
  578. <script type="text/javascript">
  579.  
  580.     tp1.addTabPage( document.getElementById( "tab_intro" ) );
  581.     tp1.addTabPage( document.getElementById( "tab_config" ) );
  582.     tp1.addTabPage( document.getElementById( "tab_files" ) );
  583.     tp1.addTabPage( document.getElementById( "tab_output" ) );
  584.     tp1.addTabPage( document.getElementById( "tab_options" ) );
  585.     tp1.addTabPage( document.getElementById( "tab_credits" ) );
  586.     tp1.addTabPage( document.getElementById( "tab_links" ) );
  587.     setupAllTabs();
  588. </script>
  589.  
  590. </body>
  591. </html>
  592.