cvs: php4 /pear/PHPDoc/apidoc/keep empty.html index2.html phpdoc.css phpdoc.dtd /pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php
PhpdocHTMLDocumentRenderer.php PhpdocHTMLIndexRenderer.php PhpdocHTMLModuleRenderer.php PhpdocHTMLRenderer.php PhpdocHTMLRendererManager.php
PhpdocHTMLWarningRenderer.php /pear/PHPDoc/renderer/html/templates class.html classtree.html elementlist.html frame_packageelementlist.html
frame_packagelist.html
| From: | Sebastian Bergmann | Date: | Sun, 08 Oct 2000 10:05:13 +0000 |
| Subject: | cvs: php4 /pear/PHPDoc/apidoc/keep empty.html index2.html phpdoc.css phpdoc.dtd /pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php PhpdocHTMLDocumentRenderer.php PhpdocHTMLIndexRenderer.php PhpdocHTMLModuleRenderer.php PhpdocHTMLRenderer.php PhpdocHTMLRendererManager.php PhpdocHTMLWarningRenderer.php /pear/PHPDoc/renderer/html/templates class.html classtree.html elementlist.html frame_packageelementlist.html frame_packagelist.html |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-1952@lists.php.net to get a copy of this message | ||
sbergmann Sun Oct 8 03:05:13 2000 EDT
Added files:
/php4/pear/PHPDoc/apidoc/keep empty.html index2.html phpdoc.css
phpdoc.dtd
/php4/pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php
PhpdocHTMLDocumentRenderer.php
PhpdocHTMLIndexRenderer.php
PhpdocHTMLModuleRenderer.php
PhpdocHTMLRenderer.php
PhpdocHTMLRendererManager.php
PhpdocHTMLWarningRenderer.php
/php4/pear/PHPDoc/renderer/html/templates class.html classtree.html
elementlist.html
frame_packageelementlist.html
frame_packagelist.html
Log:
Initial commit for Ulf Wendel's PHPDoc. I hope I haven't forgot a directory or file
along the way...
Index: php4/pear/PHPDoc/apidoc/keep/empty.html
+++ php4/pear/PHPDoc/apidoc/keep/empty.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<title>Empty</title>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>:)</h1>
</body>
</html>
Index: php4/pear/PHPDoc/apidoc/keep/index2.html
+++ php4/pear/PHPDoc/apidoc/keep/index2.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PHPDoc 1.0beta</title>
</head>
<!-- frames -->
<frameset cols="20%,*">
<frameset rows="20%,*">
<frame src="frame_packagelist.html" name="packagelist"
scrolling="Auto" marginwidth="0" marginheight="0">
<frame src="empty.html" name="packageelements" frameborder="0"
scrolling="Auto" marginwidth="0" marginheight="0">
</frameset>
<frame src="phpdoc_packagelist.html" name="main"
frameborder="0" scrolling="Auto" marginwidth="0"
marginheight="0">
</frameset>
<body>
Sorry, frames required.
</body>
</html>
Index: php4/pear/PHPDoc/apidoc/keep/phpdoc.css
+++ php4/pear/PHPDoc/apidoc/keep/phpdoc.css
BODY {
background-color : #F0F0F0;
color : #000000;
font-family : Arial, Tahoma, Helvetica, sans-serif;
font-size : 10pt;
margin-left : 1em;
margin-right : 0;
}
A:LINK, A:VISITED {
color : #000099;
}
A:HOVER {
background-color : #FFFFFF;
color : #00009F;
}
H1 {
color : Black;
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size : 16pt;
padding-bottom : 5px;
padding-top : 5px;
padding-left : 5px;
}
H2 {
color : Black;
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size : 14pt;
margin-top : 2em;
}
H3 {
color : Navy;
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size : 12pt;
margin-top :1em;
}
H4 {
color : Navy;
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size : 11pt;
background-color : #E6E6FA;
padding-bottom : 2px;
padding-top : 2px;
padding-left : 2px;
}
H5 {
color : Navy;
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size : 10pt;
font-weight : 900;
margin-bottom : -1em;
}
H6 {
color : #000000;
font-family : Arial, Helvetica, sans-serif;
font-size : 10pt;
font-weight : 800;
margin-bottom : -1em;
}
BLOCKQUOTE {
margin-left : 0;
}
CAPTION {
font-family : Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-weight : 800;
}
TH {
background-color : #FFFFFF;
}
TD {
background-color : #F0F0F0;
font-size : 10pt;
}
CODE {
font-size: 8pt;
}
Index: php4/pear/PHPDoc/apidoc/keep/phpdoc.dtd
+++ php4/pear/PHPDoc/apidoc/keep/phpdoc.dtd
<!ENTITY % name 'name CDATA #REQUIRED'>
<!ENTITY % undoc 'undoc (true | false) "false"'>
<!ENTITY % access 'access (public | private) "private"'>
<!ENTITY % abstract 'abstract (true | false) "false"'>
<!ENTITY % static 'static (true | false) "false"'>
<!ENTITY % final 'final (true | false) "false"'>
<!ENTITY % type 'type CDATA'>
<!ENTITY % file 'file CDATA'>
<!ENTITY % package 'package CDATA'>
<!ENTITY % group 'group CDATA'>
<!ELEMENT phpdoc (class|module)*>
<!ELEMENT class (file, doc?, function*, variable*, uses*, constant*, inherited*, overriden*,
path*, baseclass*, subclasses*)>
<!ATTLIST class
%name;
extends CDATA
%undoc;
%access;
%abstract;
%static;
%final;
%package;>
<!ELEMENT module (file, doc?, function*, uses*, constant*)>
<!ATTLIST module
%name;
%group;
%undoc;
%access;
%package;>
<!ELEMENT variable (#PCDATA, doc?)>
<!ATTLIST variable
%name;
%access;
%type;
%static;
%final;>
<!ELEMENT path (parent?)>
<!ELEMENT parent (#PCDATA)>
<!ELEMENT subclasses (subclass?)>
<!ELEMENT subclass (#PCDATA)>
<!ELEMENT doc ( link |
author |
see |
parameter |
return |
throws |
global |
inherited |
overriden |
description |
shortdescription |
version |
since |
deprecated |
copyright |
exclude |
brother |
magic
)*>
<!ELEMENT function (#PCDATA)>
<!ATTLIST function
%name;
%undoc;
%access;
%abstract;
%static;>
<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant
%name;
%undoc;
%access;
case CDATA>
<!ELEMENT uses (#PCDATA)>
<!ATTLIST uses
%type;
%file;
%undoc;>
<!ELEMENT baseclass (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ATTLIST link
url CDATA>
<!ELEMENT author (PANIK)>
<!ATTLIST author
email CDATA>
<!ELEMENT see (#PCDATA)>
<!ATTLIST see
type CDATA #REQUIRED
group CDATA>
<!ELEMENT parameter (#PCDATA?)>
<!ATTLIST parameter
%name;
%type;
value CDATA
%undoc;>
<!ELEMENT return (#PCDATA)>
<!ATTLIST return
name CDATA
%type; #REQUIRED>
<!ELEMENT throws (#PCDATA)>
<!ELEMENT global (#PCDATA)>
<!ATTLIST global
name CDATA
%type; #REQUIRED>
<!ELEMENT inherited (element)*>
<!ATTLIST inherited
type CDATA
src CDATA>
<!ELEMENT element (#PCDATA)>
<!ELEMENT overriden (element)*>
<!ATTLIST overriden
type CDATA
src CDATA>
<!ELEMENT description (#PCDATA)>
<!ELEMENT shortdescription (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT since (#PCDATA)>
<!ELEMENT deprecated (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT exclude (#PCDATA)>
<!ELEMENT brother (#PCDATA)>
<!ELEMENT magic (#PCDATA)>
<!ELEMENT file (#PCDATA)>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php
<?php
/**
* Renders classes.
*/
class PhpdocHTMLClassRenderer extends PhpdocHTMLDocumentRenderer {
/**
* Internal array of " " strings to format HTML output.
* @var array $indent
*/
var $indent = array();
/**
* Array of variables found in the xml document.
* @var array $variables
*/
var $variables = array();
/**
* Sets the xml and template root directory.
*
* @param string XML file path
* @param string Template file path
* @param string Name of the current application
* @see setPath(), setTemplateRoot()
*/
function PhpdocHTMLClassRenderer($path, $templateRoot, $application) {
$this->setPath($path);
$this->setTemplateRoot($templateRoot);
$this->application = $application;
$this->accessor = new PhpdocClassAccessor;
$this->tpl = new IntegratedTemplate($this->templateRoot);
$this->fileHandler = new PhpdocFileHandler;
} // end constructor
/**
* Renders a class
* @param string XML source file
* @param string Name of the HTML target file.
* @access public
*/
function renderClass($xmlfile, $htmlfile="") {
$this->tpl->loadTemplatefile("class.html");
if (""==$htmlfile)
$htmlfile = substr($xmlfile, 6, -4).".html";
$this->accessor->loadXMLFile($this->path.$xmlfile);
$this->renderSubclasses();
$this->renderInherited();
$this->renderFunctions();
$this->renderVariables();
$this->renderUses();
$this->renderConstants();
$class = $this->accessor->getClassdata();
$tplvars = array();
$tplvars["CLASS_FILE"] = $class["file"]["value"];
$tplvars["CLASS_NAME"] = $class["name"];
$tplvars["CLASS_ACCESS"] = $class["access"];
$tplvars["CLASS_PACKAGE"] = $class["package"];
if (""!=$class["extends"])
$tplvars["CLASS_EXTENDS"] = sprintf('extends <a
href="%s.html">%s</a>',
$class["extends"],
$class["extends"]
);
$tplvars["CLASS_UNDOC"] = ("true" == $class["undoc"]) ?
$this->undocumented : "";
$tplvars["CLASS_ABSTRACT"]= ("true" == $class["abstract"]) ?
"abstract" : "";
$tplvars["CLASS_STATIC"] = ("true" == $class["static"]) ?
"static" : "";
$tplvars["CLASS_FINAL"] = ("true" == $class["final"]) ?
"final" : "";
$tplvars["CLASS_TREE"] = $this->getClasstree($class["name"]);
if (isset($class["doc"]["link"]))
$this->renderLinks($class["doc"]["link"], "class_");
if (isset($class["doc"]["author"]))
$this->renderAuthors($class["doc"]["author"], "class_");
if (isset($class["doc"]["see"]))
$this->renderSee($class["doc"]["see"], "class_");
$fields = array( "version", "deprecated", "copyright" ,
"since", "magic");
reset($fields);
while (list($k, $field)=each($fields))
if (isset($class["doc"][$field])) {
$this->tpl->setCurrentBlock("class_".strtolower($field));
$this->tpl->setVariable(strtoupper($field),
$class["doc"][$field]["value"]);
$this->tpl->parseCurrentBlock();
}
$fields = array( "description", "shortdescription" );
reset($fields);
while (list($k, $field)=each($fields))
if (isset($class["doc"][$field]))
$tplvars["CLASS_".strtoupper($field)] =
$this->encode($class["doc"][$field]["value"]);
$this->tpl->setCurrentBlock("__global__");
$this->tpl->setVariable($tplvars);
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() );
$this->tpl->free();
} // end func renderClass
/**
* Renders a list of inherited elements.
* @see renderInheritedElements()
*/
function renderInherited() {
$this->renderInheritedElements( $this->accessor->getInheritedFunctions(),
"inheritedfunctions",
"function"
);
$this->renderInheritedElements( $this->accessor->getInheritedVariables(),
"inheritedvariables",
"variable"
);
$this->renderInheritedElements( $this->accessor->getInheritedConstants(),
"inheritedconstants",
"constant"
);
$this->renderInheritedElements( $this->accessor->getInheritedUses(),
"inheriteduses",
"uses"
);
} // end func renderInherited
/**
* Renders a list of a certain inherited element.
* @see renderInheritedElements()
*/
function renderInheritedElements($inherited, $block, $type) {
if (0==count($inherited))
return;
$this->tpl->setCurrentBlock($block);
reset($inherited);
while (list($source, $elements)=each($inherited)) {
$value = "";
reset($elements);
while (list($k, $element)=each($elements))
$value.= sprintf('<a href="%s.html#%s_%s">%s</a>, ',
$source,
$type,
$element,
$element
);
$value = substr($value, 0, -2);
$this->tpl->setVariable("SOURCE", $source);
$this->tpl->setVariable("ELEMENTS", $value);
$this->tpl->parseCurrentBlock();
}
} // end func renderInheritedElements
/**
* Renders a list of direct known subclasses.
*/
function renderSubclasses() {
$subclasses = $this->accessor->getSubclasses();
if (0==count($subclasses))
return;
$elements = "";
reset($subclasses);
while (list($k, $subclass)=each($subclasses))
$elements.= sprintf('<a href="%s.html">%s</a>, ', $subclass,
$subclass);
$elements = substr($elements, 0, -2);
if (""!=$elements) {
$this->tpl->setCurrentBlock("subclasses");
$this->tpl->setVariable("ELEMENTS", $elements);
$this->tpl->parseCurrentBlock();
}
} // end func renderSubclasses
/**
* Adds a summary and a detailed list of all variables to the template.
* @see renderVariableSummary(), renderVariableDetail()
*/
function renderVariables() {
$this->variables["private"] =
$this->accessor->getVariablesByAccess("private");
$this->variables["public"] =
$this->accessor->getVariablesByAccess("public");
if (0==count($this->variables["private"]) &&
0==count($this->variables["public"]))
return;
$this->renderVariableSummary();
$this->renderVariableDetail();
$this->variables = array();
} // end func renderVariables
/**
* Adds a summary of all variables to the template.
*
* The function assumes that there is a block named "variablesummary" and
* within it a block names "variablesummay_loop" in the template.
*
* @see renderVariableDetail()
*/
function renderVariableSummary() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->variables[$access]))
continue;
$this->tpl->setCurrentBlock("variablesummary_loop");
reset($this->variables[$access]);
while (list($name, $variable)=each($this->variables[$access])) {
$this->tpl->setVariable("NAME", $name);
$this->tpl->setVariable("TYPE", $variable["type"]);
if (isset($variable["doc"]["shortdescription"]))
$this->tpl->setVariable("SHORTDESCRIPTION",
$this->encode($variable["doc"]["shortdescription"]["value"]));
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("variablesummary");
$this->tpl->setVariable("ACCESS", ucfirst($access));
$this->tpl->parseCurrentBlock();
}
} // end func renderVariableSummary
/**
* Adds a detailed list of all variables to the template.
*
* The function assumes that there is a block named "variabledetails"
* and within it a block names "variablesdetails_loop" in the template.
*
* @see renderVariableSummary()
*/
function renderVariableDetail() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->variables[$access]))
continue;
reset($this->variables[$access]);
while (list($name, $variable)=each($this->variables[$access])) {
$tplvars = array();
$tplvars["NAME"] = $variable["name"];
$tplvars["ACCESS"] = $variable["access"];
$tplvars["TYPE"] = $variable["type"];
$tplvars["VALUE"] = htmlentities($variable["value"]);
if ("true"==$variable["undoc"])
$tplvars["UNDOC"] = $this->undocumented;
if ("true"==$variable["static"])
$tplvars["STATIC"] = "static";
if ("true"==$variable["final"])
$tplvars["FINAL"] = "final";
if (isset($variable["doc"]["shortdescription"]))
$tplvars["SHORTDESCRIPTION"] =
$this->encode($variable["doc"]["shortdescription"]["value"]);
if (isset($variable["doc"]["description"]))
$tplvars["DESCRIPTION"] =
$this->encode($variable["doc"]["description"]["value"]);
$this->renderCommonDocfields("variabledetails_", $variable);
$this->tpl->setCurrentBlock("variabledetails_loop");
$this->tpl->setVariable($tplvars);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("variabledetails");
$this->tpl->setVariable("ACCESS", ucfirst($access) );
$this->tpl->parseCurrentBlock();
}
} // end func renderVariableDetail
/**
* Returns a html string that shows the class tree.
* @param string name of the current class
* @return string HTML that shows the tree
*/
function getClasstree($class) {
$path = $this->accessor->getClasstree();
$level = 0;
$num = count($path)-1;
for ($i = $num; $i>=0; $i--) {
$indent = $this->getIndent($level);
if ($level>0)
$value.= sprintf("%s |<br>%s+-- ", $indent, $indent);
$value.= sprintf('<a href="%s.html">%s</a><br>',
$path[$i],
$path[$i]
);
$level++;
}
$indent = $this->getIndent($level);
if ($level>0)
$value.= sprintf("%s |<br>%s+-- ", $indent, $indent);
$value.= sprintf('%s<br>', $class);
return $value;
} // end func getClasstree
/**
* Returns a certain number of " "s.
* @param int number of " " required.
* @see $indent
* @return string A string with the requested number of nunbreakable html spaces
*/
function getIndent($level) {
if (!isset($this->indent[$level])) {
$html = "";
for ($i=0; $i<$level; $i++)
$html.= " ";
$this->indent[$level] = $html;
}
return $this->indent[$level];
} // end func getIndent
} // end class PhpdocHTMLClassRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php
<?php
/**
* Provides functioninality to render modules and classes.
*/
class PhpdocHTMLDocumentRenderer extends PhpdocHTMLRenderer {
/**
* Message displayed if an object lacks documentation.
* @var string $undocumented
* @access public
*/
var $undocmented = "Warning: documentation is missing.";
/**
* Array of functions found in the xml document.
* @var array $functions
*/
var $functions = array();
/**
* Array of included files.
* @var array $uses
*/
var $uses = array();
/**
* Array of constants.
* @var array $constants
*/
var $constants = array();
/**
* Array of access modifiers.
* @var array $accessModifiers
*/
var $accessModifiers = array("public", "private");
/**
* Array of doc container fields that get mapped directly to templateblocks.
* @var array $simpleDocfields
* @see renderVariableDetail()
*/
var $simpleDocfields = array(
"VERSION" => "version",
"SINCE" => "since",
"DEPRECATED" => "deprecated",
"COPYRIGHT" => "copyright",
"MAGIC" => "magic"
);
/**
* Known types for @include.
* @var array $usesTypes
* @see renderUses()
*/
var $usesTypes = array( "include", "include_once", "require",
"require_once" );
/**
* Adds a summary and a detailed list of all constants to the template.
* @see renderConstantSummary(), renderConstantDetail()
*/
function renderConstants() {
$this->constants["public"] =
$this->accessor->getConstantsByAccess("public");
$this->constants["private"] =
$this->accessor->getConstantsByAccess("private");
if (0==count($this->constants["public"]) &&
0==count($this->constants["private"]))
return;
$this->renderConstantSummary();
$this->renderConstantDetail();
$this->constants = array();
} // end func renderConstants
/**
* Adds a summary of all constants to the template.
*
* The function assumes that there is a block called "constantssummary" and
* withing this block a bock called "constantssummary_loop" in the template.
*
* @see renderConstantDetail()
*/
function renderConstantSummary() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->constants[$access]))
continue;
$this->tpl->setCurrentBlock("constantssummary_loop");
reset($this->constants[$access]);
while (list($name, $const)=each($this->constants[$access])) {
$this->tpl->setVariable("NAME", $name);
$this->tpl->setVariable("VALUE", htmlentities($const["value"]));
if (isset($const["doc"]["shortdescription"]))
$this->tpl->setVariable("SHORTDESCRIPTION",
$this->encode($const["doc"]["shortdescription"]["value"]));
if ("true" == $const["undoc"])
$this->tpl->setVariable("UNDOC", $this->undocumented);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("constantssummary");
$this->tpl->setVariable("ACCESS", ucfirst($access));
$this->tpl->parseCurrentBlock();
}
} // end func renderConstantSummary
/**
* Adds a detailed list of all constants to the template.
*
* The function assumes that there is a block named "constantdetails" and
* withing it another block named "constantdetails_loop".
*
* @see renderConstantSummary()
*/
function renderConstantDetail() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->constants[$access]))
continue;
reset($this->constants[$access]);
while (list($name, $constant)=each($this->constants[$access])) {
$tplvars = array();
$tplvars["NAME"] = $name;
$tplvars["CASE"] = $constant["case"];
$tplvars["VALUE"] = htmlentities($constant["value"]);
if ("true" == $constant["undoc"])
$tplvars["UNDOC"] = $this->undocumented;
if (isset($constant["doc"]["shortdescription"]))
$tplvars["SHORTDESCRIPTION"] =
$this->encode($constant["doc"]["shortdescription"]["value"]);
if (isset($constant["doc"]["description"]))
$tplvars["DESCRIPTION"] =
$this->encode($constant["doc"]["description"]["value"]);
$this->renderCommonDocfields("constantdetails_", $constant);
$this->tpl->setCurrentBlock("constantdetails_loop");
$this->tpl->setVariable($tplvars);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("constantdetails");
$this->tpl->setVariable("ACCESS", ucfirst($access));
$this->tpl->parseCurrentBlock();
}
} // end func renderConstantsDetail
/**
* Adds a summary and a detailed list of included files to the template.
* @see renderUsesSummary(), renderUsesDetail()
*/
function renderUses() {
$found = false;
reset($this->usesTypes);
while (list($k, $type)=each($this->usesTypes)) {
$this->uses[$type] = $this->accessor->getUsesByType($type);
if (!$found && 0!=count($this->uses[$type]))
$found = true;
}
if (!$found)
return;
$this->renderUsesSummary();
$this->renderUsesDetail();
$this->uses = array();
} // end func renderUses
/**
* Adds a detailed list of all @included files to the template.
*
* The function assumes that there is a block names "usesdetail" and within the block
* a block names "usesdetail_loop" in the template.
*
* @see renderUsesSummary()
*/
function renderUsesDetail() {
reset($this->usesTypes);
while (list($k, $type)=each($this->usesTypes)) {
if (0==count($this->uses[$type]))
continue;
reset($this->uses[$type]);
while (list($file, $uses)=each($this->uses[$type])) {
$tplvars = array();
$tplvars["FILE"] = $uses["file"];
$tplvars["TYPE"] = $type;
if ("true"==$uses["undoc"])
$tplvars["UNDOC"] = $this->undocumented;
if (isset($uses["doc"]["shortdescription"]))
$tplvars["SHORTDESCRIPTION"] =
$this->encode($uses["doc"]["shortdescription"]["value"]);
if (isset($uses["doc"]["description"]))
$tplvars["DESCRIPTION"] =
$this->encode($uses["doc"]["description"]["value"]);
$this->renderCommonDocfields("usesdetails_", $uses);
$this->tpl->setCurrentBlock("usesdetails_loop");
$this->tpl->setVariable($tplvars);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("usesdetails");
$this->tpl->setVariable("TYPE", $type);
$this->tpl->parseCurrentBlock();
}
} // end func renderUsesDetail
/**
* Adds a summary of all @included files to the template.
*
* The function assumes that there is a block names "usessummary" and within
* the block another block names "usessummary_loop" in the template.
*
* @see renderUsesDetail()
*/
function renderUsesSummary() {
reset($this->usesTypes);
while (list($k, $type)=each($this->usesTypes)) {
if (0==count($this->uses[$type]))
continue;
$this->tpl->setCurrentBlock("usessummary_loop");
reset($this->uses[$type]);
while (list($file, $uses)=each($this->uses[$type])) {
$this->tpl->setVariable("FILE", $file);
if (isset($uses["doc"]["shortdescription"]))
$this->tpl->setVariable("SHORTDESCRIPTION",
$this->encode($uses["doc"]["shortdescription"]["value"]));
if ("true"==$uses["undoc"])
$this->tpl->setVariable("UNDOC", $this->undocumented);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("usessummary");
$this->tpl->setVariable("TYPE", $type);
$this->tpl->parseCurrentBlock();
}
} // end func renderUsesSummary
/**
* Adds a summary and a detailed list of all functions to the template.
* @see renderFunctionSummary(), renderFunctionDetail(), $functions
*/
function renderFunctions() {
$this->functions["private"] =
$this->accessor->getFunctionsByAccess("private");
$this->functions["public"] =
$this->accessor->getFunctionsByAccess("public");
if (0==count($this->functions["private"]) &&
0==count($this->functions["public"]))
return;
$this->renderFunctionSummary();
$this->renderFunctionDetail();
$this->functions = array();
} // end func renderFunctions
/**
* Adds a function summary to the template.
*
* The function assumes that there is ablock names "functionsummary" and
* within it a block names "functionsummary_loop" in the template.
*
* @see renderFunctionDetail(), renderFunctions(), $functions, $accessModifiers
*/
function renderFunctionSummary() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->functions[$access]))
continue;
$this->tpl->setCurrentBlock("functionsummary_loop");
reset($this->functions[$access]);
while (list($name, $function)=each($this->functions[$access])) {
$this->tpl->setVariable("NAME", $name);
if (isset($function["doc"]["parameter"]))
$this->tpl->setVariable("PARAMETER",
$this->getParameter($function["doc"]["parameter"]));
if (isset($function["doc"]["shortdescription"]))
$this->tpl->setVariable("SHORTDESCRIPTION",
$this->encode($function["doc"]["shortdescription"]["value"]));
if (isset($function["doc"]["return"]))
$this->tpl->setVariable("RETURNTYPE",
$function["doc"]["return"]["type"]);
else
$this->tpl->setVariable("RETURNTYPE", "void");
if ("true"==$function["undoc"])
$this->tpl->setVariable("UNDOC", $this->undocumented);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("functionsummary");
$this->tpl->setVariable("ACCESS", ucfirst($access) );
$this->tpl->parseCurrentBlock();
}
} // end func renderFunctionSummary
/**
* Adds a detailed list of functions to the template.
*
* The function assumes that there is a block named "functiondetails" and
* within it a bloc "functiondetails_loop" in the template.
*
* @see renderFunctions(), renderFunctionSummary(), $functions, $accessModifiers
*/
function renderFunctionDetail() {
reset($this->accessModifiers);
while (list($k, $access)=each($this->accessModifiers)) {
if (0==count($this->functions[$access]))
continue;
reset($this->functions[$access]);
while (list($name, $function)=each($this->functions[$access])) {
$tplvars = array();
$tplvars["NAME"] = $function["name"];
$tplvars["ACCESS"] = $function["access"];
if ("true"==$function["undoc"])
$tplvars["UNDOC"] = $this->undocumented;
if ("true"==$function["abstract"])
$tplvars["ABSTRACT"] = "abstract";
if ("true"==$function["static"])
$tplvars["STATIC"] = "static";
if (isset($function["doc"]["shortdescription"]))
$tplvars["SHORTDESCRIPTION"] =
$this->encode($function["doc"]["shortdescription"]["value"]);
if (isset($function["doc"]["description"]))
$tplvars["DESCRIPTION"] =
$this->encode($function["doc"]["description"]["value"]);
$this->renderCommonDocfields("functiondetails_", $function);
if (isset($function["doc"]["parameter"])) {
$tplvars["PARAMETER"] =
$this->getParameter($function["doc"]["parameter"]);
$this->renderParameterDetail($function["doc"]["parameter"]);
}
if (isset($function["doc"]["throws"]))
$this->renderThrows($function["doc"]["throws"],
"functiondetails_");
if (isset($function["doc"]["global"]))
$this->renderGlobals($function["doc"]["global"],
"functiondetails_");
if (isset($function["doc"]["return"])) {
$tplvars["RETURNTYPE"] =
$function["doc"]["return"]["type"];
$this->tpl->setCurrentBlock("functiondetails_return");
$this->tpl->setVariable("TYPE",
$function["doc"]["return"]["type"]);
$this->tpl->setVariable("DESCRIPTION",
$this->encode($function["doc"]["return"]["value"]));
if (isset($function["doc"]["return"]["name"]))
$this->tpl->setVariable("NAME",
$function["doc"]["return"]["name"]);
$this->tpl->parseCurrentBlock();
} else {
$tplvars["RETURNTYPE"] = "void";
}
$this->tpl->setCurrentBlock("functiondetails_loop");
$this->tpl->setVariable($tplvars);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("functiondetails");
$this->tpl->setVariable("ACCESS", ucfirst($access) );
$this->tpl->parseCurrentBlock();
}
} // end func renderFunctionDetail
/**
* Renders a detailed list of function parameters.
*
* The function assumes that there is a block named "functiondetails_parameter" in
* the template and within it a block named "functiondetails_parameter_loop".
*
* @param array Parameter
*/
function renderParameterDetail($parameter) {
if (!isset($parameter[0]))
$parameter = array($parameter);
$this->tpl->setCurrentBlock("functiondetails_parameter_loop");
reset($parameter);
while (list($k, $param)=each($parameter)) {
$this->tpl->setVariable("NAME", $param["name"]);
$this->tpl->setVariable("DESCRIPTION",
$this->encode($param["value"]));
if (isset($param["type"]))
$this->tpl->setVariable("TYPE", $param["type"]);
if (isset($param["default"]))
$this->tpl->setVariable("DEFAULT", "=
>>".htmlentities($param["default"])."<<");
if ("true" == $param["undoc"])
$this->tpl->setVariable("UNDOC", $this->undocumented);
$this->tpl->parseCurrentBlock();
}
} // end func renderParameterDetail
/**
* Converts the XML parameter array into formatted string.
* @param array XML parameter array
* @return string Formatted parameter string
*/
function getParameter($parameter) {
if (!is_array($parameter))
return "void";
$value = "";
if (!isset($parameter[0])) {
if (!isset($parameter["default"]))
$value.= $parameter["type"]." ".$parameter["name"];
else
$value.= "[ ".$parameter["type"]."
".$parameter["name"]." ]";
} else {
$flag_optional = false;
reset($parameter);
while (list($k, $param)=each($parameter)) {
if (!isset($param["default"])) {
if ($flag_optional) {
$value = substr($value, 0, -2)." ], ";
$flag_optional = false;
}
} else {
if (!$flag_optional) {
$value.= "[ ";
$flag_optional = true;
}
}
$value.= $param["type"]." ".$param["name"].", ";
}
$value = substr($value, 0, -2);
if ($flag_optional)
$value.= " ]";
}
return $value;
} // end func getParameter
/**
* Renders a block with references to other source elements, @see.
* @param array XML references array
* @param string optional template blockname prefix
*/
function renderSee($references, $prefix="") {
$value = "";
if (!isset($references[0])) {
if (isset($references["group"]))
$value.= sprintf('<a href="%s.html#%s_%s">%s::%s</a>',
$this->nameToUrl($references["group"]),
$references["type"],
$references["value"],
$references["group"],
$references["value"]
);
else
$value.= sprintf('<a href="#%s_%s">%s</a>',
$references["type"],
$references["value"],
$references["value"]
);
} else {
reset($references);
while (list($k, $reference)=each($references)) {
if (isset($reference["group"]))
$value.= sprintf('<a href="%s.html#%s_%s">%s::%s</a>, ',
$this->nameToUrl($reference["group"]),
$reference["type"],
$reference["value"],
$reference["group"],
$reference["value"]
);
else
$value.= sprintf('<a href="#%s_%s">%s</a>, ',
$reference["type"],
$reference["value"],
$reference["value"]
);
}
$value = substr($value, 0, -2);
}
$this->tpl->setCurrentBlock(strtolower($prefix)."see");
$this->tpl->setVariable("SEE", $value);
$this->tpl->parseCurrentBlock();
} // end func renderSee
/**
* Renders an author list, @author.
* @param array XML author array
* @param string optional template blockname prefix
*/
function renderAuthors($authors, $prefix="") {
$value = "";
if (!isset($authors[0])) {
if (isset($authors["email"]))
$value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ',
$authors["value"], $authors["email"], $authors["email"]);
else
$value.= $authors["email"].", ";
} else {
reset($authors);
while (list($k, $author)=each($authors)) {
if (isset($author["email"]))
$value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ',
$author["value"], $author["email"], $author["email"]);
else
$value.= $author["email"].", ";
}
}
$value = substr($value, 0, -2);
$this->tpl->setCurrentBlock(strtolower($prefix)."authors");
$this->tpl->setVariable("AUTHOR", $value);
$this->tpl->parseCurrentBlock();
} // end func renderAuthors
/**
* Renders a list of external links, @link.
* @param array XML link array
* @param string optional template blockname prefix
*/
function renderLinks($links, $prefix="") {
$value= "";
if (!isset($links[0])) {
$value.= sprintf('<a href="%s">%s</a>%s, ',
$links["url"],
$links["url"],
(""!=$links["description"]) ? " -
".$links["description"] : ""
);
} else {
reset($links);
while (list($k, $link)=each($links)) {
$value.= sprintf('<a href="%s">%s</a>%s, ',
$link["url"],
$link["url"],
(""!=$link["description"]) ? " -
".$links["description"] : ""
);
}
}
$value = substr($value, 0, 2);
$this->tpl->setCurrentBlock(strtolower($prefix)."links");
$this->tpl->setVariable("LINK", $value);
$this->tpl->parseCurrentBlock();
} // end func renderLinks
/**
* Renders a list of exceptions, @throws.
* @param array XML array
* @param string optional template blockname prefix
*/
function renderThrows($throws, $prefix="") {
$value = "";
if (!isset($throws[0])) {
$value = $throws["value"];
} else {
reset($throws);
while (list($k, $exception)=each($throws))
$value.= sprintf("%s, ", $exception["value"]);
$value = substr($value, 0, -2);
}
$this->tpl->setCurrentBlock(strtolower($prefix)."throws");
$this->tpl->setVariable("EXCEPTIONS", $value);
$this->tpl->parseCurrentBlock();
} // end func renderThrows
/**
* Renders a list of global elements, @global
* @param array XML globals array
* @param string optional template blockname prefix
*/
function renderGlobals($globals, $prefix="") {
$prefix = strtolower($prefix);
$this->tpl->setCurrentBlock($prefix."globals_loop");
if (!isset($globals[0])) {
$this->tpl->setVariable("NAME", $globals["name"]);
$this->tpl->setVariable("DESCRIPTION",
$this->encode($globals["value"]));
if (isset($globals["type"]))
$this->tpl->setVariable("TYPE", $globals["type"]);
$this->tpl->parseCurrentBlock();
} else {
reset($globals);
while (list($k, $global)=each($globals)) {
$this->tpl->setVariable("NAME", $global["name"]);
$this->tpl->setVariable("DESCRIPTION",
$this->encode($global["value"]));
if (isset($globals["type"]))
$this->tpl->setVariable("TYPE", $globals["type"]);
$this->tpl->parseCurrentBlock();
}
}
} // end func renderGlobals
/**
* Adds some tags to the template that are allowed nearly everywhere.
* @param string template blockname prefixs
* @param array
* @see $simpleDocfields, renderLinks(), renderAuthors(), renderSee()
*/
function renderCommonDocfields($block, &$data) {
reset($this->simpleDocfields);
while (list($varname, $field)=each($this->simpleDocfields)) {
if (isset($data["doc"][$field])) {
$this->tpl->setCurrentBlock($block.$field);
$this->tpl->setVariable($varname,
htmlentities($data["doc"][$field]["value"]));
$this->tpl->parseCurrentBlock();
}
}
if (isset($data["doc"]["link"]))
$this->renderLinks($data["doc"]["link"], $block);
if (isset($data["doc"]["author"]))
$this->renderAuthors($data["doc"]["author"], $block);
if (isset($data["doc"]["see"]))
$this->renderSee($data["doc"]["see"], $block);
} // end func renderCommonDocfields
} // end func PhpdocHTMLDocumentRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php
<?php
/**
* Renders Index lists.
*/
class PhpdocHTMLIndexRenderer extends PhpdocHTMLRenderer {
/**
* Some container in the package list.
* @var array
* @see renderPackagelist()
*/
var $packageFields = array("class", "module");
/**
* Packagelist from the PhpdocIndexAccessor
* @var array
*/
var $packages = array();
/**
* Array with classtree informations
* @var array
*/
var $classtree = array();
/**
* IntegratedTemplate Object used be renderClasstree()
*
* @var object IntegratedTemplate
* @see renderClasstree()
*/
var $treeTpl;
/**
* IntegratedTemplateObject used by renderModulegroup()
*
* @var object IntegratedTemplate
* @see renderModulegroup()
*/
var $moduleTpl;
/**
* Sets the xml and template root directory.
*
* @param string XML file path
* @param string Template file path
* @param string Name of the application
* @see setPath(), setTemplateRoot()
*/
function PhpdocHTMLIndexRenderer($path, $templateRoot, $application) {
$this->setPath($path);
$this->setTemplateRoot($templateRoot);
$this->application = $application;
$this->accessor = new PhpdocIndexAccessor;
$this->tpl = new IntegratedTemplate($this->templateRoot);
$this->fileHandler = new PhpdocFileHandler;
} // end constructor
/**
* Builds all index files phpdoc needs assuming that the xml files have default names
*
* @access public
* @see renderElementlist(), renderPackagelist(), renderFramelementlist(),
renderFramePackageSummary()
*/
function generate() {
$this->renderElementlist("elementlist.xml");
$this->renderFrameElementlist("elementlist.xml");
$this->renderPackagelist("packagelist.xml");
$this->renderFramePackageSummary("packagelist.xml");
$this->renderFrameElementlist("packagelist.xml");
} // end function generate
/**
* Saves the generated classtree summary to disk.
*
* @see renderClasstree()
* @access public
*/
function finishClasstree() {
if (!is_object($this->treeTpl))
return;
$this->treeTpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."phpdoc_classtree.html",
$this->treeTpl->get() );
$this->treeTpl = "";
} // end func finishClasstree
/**
* Adds a classtree to the classtree summary template.
*
* @param string XML Classtree file
* @see finishClasstree()
* @access public
*/
function addClasstree($xmlfile) {
$this->accessor->loadXMLFile($this->path.$xmlfile);
if (!is_object($this->treeTpl)) {
$this->treeTpl = new IntegratedTemplate($this->templateRoot);
$this->treeTpl->loadTemplatefile("classtree.html");
}
$this->classtree = $this->accessor->getClasstree();
$this->treeTpl->setCurrentBlock("classtree");
$this->treeTpl->setVariable("BASECLASS",
$this->classtree["baseclass"]);
$this->treeTpl->setVariable("TREE",
"<ul>".$this->buildClasstreeHTML($this->classtree["baseclass"])."</ul>");
$this->treeTpl->parseCurrentBlock();
return true;
} // end func addClasstree
function finishModulegroup() {
if (!is_object($this->moduleTpl))
return;
$this->moduleTpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."phpdoc_modulegroup.html",
$this->moduleTpl->get() );
$this->moduleTpl = "";
} // end func finishModulegroups
/**
* Renders a modulegroup xml file.
* @param string XML File
*/
function addModulegroup($xmlfile) {
$this->accessor->loadXMLFile($this->path.$xmlfile);
if (!is_object($this->moduleTpl)) {
$this->moduleTpl = new IntegratedTemplate($this->templateRoot);
$this->moduleTpl->loadTemplateFile("modulegroup.html");
}
$modulegroup = $this->accessor->getModulegroup();
$modules = "<ul>";
reset($modulegroup["modules"]);
while (list($k, $module)=each($modulegroup["modules"]))
$modules.= sprintf('<li><a href="%s.html">%s</a>',
$this->nameToUrl($module), $module);
$modules.= "</ul>";
$this->moduleTpl->setCurrentBlock("modulegroup");
$this->moduleTpl->setVariable("MODULEGROUP", $modulegroup["group"]);
$this->moduleTpl->setVariable("MODULES", $modules);
$this->moduleTpl->parseCurrentBlock();
} // end func addModulegroup
/**
* Renders the element index list.
*
* @param string XML file
* @access public
* @see generate()
*/
function renderElementlist($xmlfile) {
$this->accessor->loadXMLFile($this->path.$xmlfile);
$this->tpl->loadTemplatefile("elementlist.html");
$chapters = $this->accessor->getChapternames();
if (0!=count($chapters)) {
$this->tpl->setCurrentBlock("chaptersummary_loop");
reset($chapters);
while (list($k, $chapter)=each($chapters)) {
$this->tpl->setVariable("CHAPTER", $chapter);
$this->tpl->parseCurrentBlock();
}
$chapters = $this->accessor->getChapters();
reset($chapters);
while (list($name, $elements)=each($chapters)) {
if (!isset($elements["element"][0]))
$elements["element"] = array($elements["element"]);
$this->tpl->setCurrentBlock("chapter_loop");
reset($elements["element"]);
while (list($k, $element)=each($elements["element"])) {
switch($element["type"]) {
case "package":
$desc = "Package";
break;
case "class":
$desc = sprintf('Class <a href="%s.html">%s</a>.',
$this->nameToUrl($element["name"]),
$element["name"]
);
break;
case "module":
$desc = sprintf('Module <a href="%s.html">%s</a>.',
$this->nameToUrl($element["name"]),
$element["name"]
);
break;
case "functions":
$desc = sprintf('Function in %s <a href="%s.html">%s</a>',
$element["sourcetype"],
$this->nameToUrl($element["source"]),
$element["source"]
);
break;
case "variables":
$desc = sprintf('Variable in Class <a href="%s.html">%s</a>',
$this->nameToUrl($element["source"]),
$element["source"]
);
break;
case "uses":
$desc = sprintf('Included file in %s <a
href="%s.html">%s</a>',
$element["sourcetype"],
$this->nameToUrl($element["source"]),
$element["source"]
);
break;
break;
case "consts":
$desc = sprintf('Constant defined in %s <a
href="%s.html">%s</a>',
$element["sourcetype"],
$this->nameToUrl($element["source"]),
$element["source"]
);
break;
}
$this->tpl->setVariable("ELEMENTNAME", $element["name"]);
$this->tpl->setVariable("ELEMENT", $desc);
$this->tpl->setVariable("SHORTDESCRIPTION", $element["value"]);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("chapter");
$this->tpl->setVariable("CHAPTER", $name);
$this->tpl->parseCurrentBlock();
}
}
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."phpdoc_elementlist.html",
$this->tpl->get() );
$this->tpl->free();
} // end func renderElementlist
/**
* Renders a complete packagelist.
*
* @param string XML file
* @access public
* @see renderFrameElementlist(), renderFramePackagesummary()
*/
function renderPackagelist($xmlfile) {
$this->loadPackagelist($xmlfile);
$this->tpl->loadTemplatefile("packagelist.html");
reset($this->packages);
while (list($packagename, $package)=each($this->packages)) {
reset($this->packageFields);
while (list($k, $field)=each($this->packageFields)) {
if (!isset($package[$field]))
continue;
$this->tpl->setCurrentBlock("package_".$field."_loop");
reset($package[$field]);
while (list($k, $element)=each($package[$field])) {
$this->tpl->setVariable("ELEMENT", sprintf('<a
href="%s.html">%s</a>',
$this->nameToUrl($element),
$element
)
);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("package_".$field);
$this->tpl->setVariable("EMPTY", "");
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("package");
$this->tpl->setVariable("PACKAGE_NAME", $packagename);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."phpdoc_packagelist.html",
$this->tpl->get() );
$this->tpl->free();
} // end func renderPackagelist
/**
* Renders files for the lower left frame with the elements of a certain file.
*
* @param string This function needs the packagelist.xml to work!
* @access public
* @see renderFramePackagesummary(), renderPackagelist()
*/
function renderFrameElementlist($xmlfile) {
$this->loadPackagelist($xmlfile);
reset($this->packages);
while (list($packagename, $package)=each($this->packages)) {
$this->tpl->loadTemplatefile("frame_packageelementlist.html");
reset($this->packageFields);
while (list($k, $field)=each($this->packageFields)) {
if (!isset($package[$field]))
continue;
$this->tpl->setCurrentBlock("package_".$field."_loop");
reset($package[$field]);
while (list($k, $element)=each($package[$field])) {
$this->tpl->setVariable("ELEMENT", sprintf('<a href="%s.html"
target="main">%s</a>',
$this->nameToUrl($element),
$element
)
);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("package_".$field);
$this->tpl->setVariable("EMPTY", "");
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("package");
$this->tpl->setVariable("PACKAGE_NAME", $packagename);
$this->tpl->parseCurrentBlock();
$this->tpl->setVariable("APPNAME", $this->application);
$packagename = $this->nameToUrl($packagename);
$this->fileHandler->createFile($this->path."packageelementlist_".$packagename.".html",
$this->tpl->get() );
}
$this->tpl->free();
} // end func renderFrameElementlist
/**
* Renders a Packagesummary for the frameset.
*
* @param string XML file.
* @access public
* @see renderPackagelist(), renderFrameElementlist()
*/
function renderFramePackagesummary($xmlfile) {
$this->loadPackagelist($xmlfile);
$this->tpl->loadTemplatefile("frame_packagelist.html");
$this->tpl->setCurrentBlock("package");
reset($this->packages);
while (list($packagename, $v)=each($this->packages)) {
$this->tpl->setVariable("PACKAGE", sprintf('<a
href="packageelementlist_%s.html"
target="packageelements">%s</a>',
$this->nameToUrl($packagename),
$packagename )
);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."frame_packagelist.html",
$this->tpl->get() );
$this->tpl->free();
} // end func renderFramePackagesummary
/**
* Imports the packagelist from the PhpdocIndexAccessor if not done previously.
*
* @param string XMl file.
* @see $packages
*/
function loadPackagelist($xmlfile) {
if (0==count($this->packages)) {
$this->accessor->loadXMLFile($this->path.$xmlfile);
$this->packages = $this->accessor->getPackagelist();
}
} // end func loadPackagelist
/**
* Recursivly builds an HTML class tree using <ul><li></ul>.
*
* @param string Name of the class the recursive loop starts with
* @see renderClasstree()
*/
function buildClasstreeHTML($class) {
$html = "";
if (0==count($this->classtree["classes"][$class])) {
$html.= sprintf('<li><a href="%s.html">%s</a>',
$this->nameToUrl($class), $class);
} else {
$html.= sprintf('<li><a href="%s.html">%s</a>',
$this->nameToUrl($class), $class);
$html.= "<ul>";
reset($this->classtree["classes"][$class]);
while (list($k, $subclass)=each($this->classtree["classes"][$class]))
$html.= $this->buildClasstreeHTML($subclass);
$html.= "</ul>";
}
return $html;
} // end func buildClasstreeHTML
} // end class PhpdocHTMLIndexRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php
<?php
/**
* Renders modules.
*/
class PhpdocHTMLModuleRenderer extends PhpdocHTMLDocumentRenderer {
/**
* Sets the xml and template root directory.
*
* @param string XML file path
* @param string Template file path
* @param string Name of the current application
* @see setPath(), setTemplateRoot()
*/
function PhpdocHTMLModuleRenderer($path, $templateRoot, $application) {
$this->setPath($path);
$this->setTemplateRoot($templateRoot);
$this->application = $application;
$this->accessor = new PhpdocModuleAccessor;
$this->tpl = new IntegratedTemplate($this->templateRoot);
$this->fileHandler = new PhpdocFileHandler;
} // end constructor
/**
* Renders a module
* @param string XML source file
* @param string Name of the HTML target file.
* @access public
*/
function renderModule($xmlfile, $htmlfile="") {
$this->tpl->loadTemplatefile("module.html");
if (""==$htmlfile)
$htmlfile = substr($xmlfile, 7, -4).".html";
$this->accessor->loadXMLFile($this->path.$xmlfile);
$module = $this->accessor->getModuledata();
$this->renderFunctions();
$this->renderUses();
$this->renderConstants();
$tplvars = array();
$tplvars["MODULE_FILE"] = $module["file"]["value"];
$tplvars["MODULE_NAME"] = $module["name"];
$tplvars["MODULE_GROUP"] = $module["group"];
$tplvars["MODULE_ACCESS"] = $module["access"];
$tplvars["MODULE_PACKAGE"] = $module["package"];
$tplvars["MODULE_UNDOC"] = ("true" == $module["undoc"]) ?
$this->undocumented : "";
if (isset($module["doc"]["link"]))
$this->renderLinks($module["doc"]["link"], "class_");
if (isset($module["doc"]["author"]))
$this->renderAuthors($module["doc"]["author"], "class_");
if (isset($module["doc"]["see"]))
$this->renderSee($module["doc"]["see"], "class_");
$fields = array( "version", "deprecated", "copyright" ,
"since", "magic");
reset($fields);
while (list($k, $field)=each($fields))
if (isset($module["doc"][$field])) {
$this->tpl->setCurrentBlock("module_".strtolower($field));
$this->tpl->setVariable(strtoupper($field),
$module["doc"][$field]["value"]);
$this->tpl->parseCurrentBlock();
}
$fields = array( "description", "shortdescription" );
reset($fields);
while (list($k, $field)=each($fields))
if (isset($module["doc"][$field]))
$tplvars["MODULE_".strtoupper($field)] =
$this->encode($module["doc"][$field]["value"]);
$this->tpl->setCurrentBlock("__global__");
$this->tpl->setVariable($tplvars);
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() );
$this->tpl->free();
} // end func renderModule
} // end class PhpdocHTMLModuleRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php
<?php
/**
* Default HTML Renderer based on templates.
*/
class PhpdocHTMLRenderer extends PhpdocRendererObject {
/**
* Template object
* @var object IntegratedTemplates $tpl
*/
var $tpl;
/**
* XML data accessor object.
* @var object PhpdocAccessor
*/
var $accessor;
/**
* Rootpath for Templatefiles.
* @var string $templateRoot
* @see setTemplateRoot()
*/
var $templateRoot = "";
/**
* Directory path prefix.
* @var string $path
*/
var $path = "";
/**
* Sets a directory path prefix.
*
* @param string
*/
function setPath($path) {
if (""!=$path && "/"!=substr($path, -1))
$path.="/";
$this->path = $path;
} // end func path
/**
* Sets the template directory.
*
* @param string
*/
function setTemplateRoot($templateRoot) {
if (""!=$path && "/"!=substr($templateRoot, -1))
$templateRoot.="/";
$this->templateRoot = $templateRoot;
} // end func setTemplateRoot
/**
* Encodes the given string.
*
* This function gets used to encode all userdependend
* elements of the phpdoc xml files. Use it to
* customize your rendering result: beware newlines (nl2br()),
* strip tags etc.
*
* @param string String to encode
* @return string $string Encoded string
*/
function encode($string) {
return nl2br(htmlspecialchars($string));
} // end func encode
} // end class PhpdocHTMLRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php
<?php
/**
* Controls the HTML Renderer objects.
*
*/
class PhpdocHTMLRendererManager extends PhpdocObject {
/**
* @var object PhpdocHTMLIndexRenderer
*/
var $indexrenderer;
/**
* @var object PhpdocHTMLClassRenderer
*/
var $classrenderer;
/**
* @var object PhpdocHTMLModuleRenderer
*/
var $modulerenderer;
/**
* @var object PhpdocHTMLWarningRenderer
*/
var $warningrenderer;
/**
* Creates all necessary renderer objects
*
* @param string Name of the target directory
* @param string Name of the directory with the templates.
* @param string Name of the current application
*/
function PhpdocHTMLRendererManager($target, $template, $application) {
$this->indexrenderer = new PhpdocHTMLIndexRenderer($target, $template, $application);
$this->indexrenderer->generate();
$this->classrenderer = new PhpdocHTMLClassRenderer($target, $template, $application);
$this->modulerenderer = new PhpdocHTMLModuleRenderer($target, $template, $application);
$this->warningrenderer = new PhpdocHTMLWarningRenderer($target, $template, $application);
} // end constructor
/**
* Renders the given xml file.
*
* @param string XML file.
* @param string Content of the XML file: class, classtree,
* module, modulegroup, warnings, indexdata
* @access public
*/
function render($xmlfile, $type) {
switch(strtolower($type)) {
case "class":
$this->classrenderer->renderClass($xmlfile);
break;
case "classtree":
$this->indexrenderer->addClasstree($xmlfile);
break;
case "module":
$this->modulerenderer->renderModule($xmlfile);
break;
case "modulegroup":
$this->indexrenderer->addModulegroup($xmlfile);
break;
case "warning":
$this->warningrenderer->addWarnings($xmlfile);
break;
}
} // end func render
/**
* Finishes the rendering process.
*
* Finish means here: write the classtree and modulegroup overview to disk.
*
* @access public
*/
function finish() {
$this->indexrenderer->finishClasstree();
$this->indexrenderer->finishModulegroup();
$this->warningrenderer->finishWarnings();
} // end func finish
} // end class PhpdocHTMLRendererManager
?>
Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php
+++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php
<?php
/**
* Renders files with warnings.
*/
class PhpdocHTMLWarningRenderer extends PhpdocHTMLRenderer {
/**
* Sets the xml and template root directory.
*
* @param string XML file path
* @param string Template file path
* @param string Name of the application
* @see setPath(), setTemplateRoot()
*/
function PhpdocHTMLWarningRenderer($path, $templateRoot, $application) {
$this->setPath($path);
$this->setTemplateRoot($templateRoot);
$this->application = $application;
$this->accessor = new PhpdocWarningAccessor;
$this->fileHandler = new PhpdocFileHandler;
} // end constructor
/**
* Saves the generated report.
*
* @see addWarnings()
* @access public
*/
function finishWarnings() {
if (!is_object($this->tpl))
return;
$this->tpl->setVariable("APPNAME", $this->application);
$this->fileHandler->createFile($this->path."phpdoc_warnings.html",
$this->tpl->get() );
$this->tpl = "";
} // end func finishWarnings
/**
* Adds file with warnings to the warning list.
*
* @param string XML file
* @see finishWarnings()
* @access public
*/
function addWarnings($xmlfile) {
$data = $this->accessor->getWarnings($this->path.$xmlfile);
if (!is_object($this->tpl)) {
$this->tpl = new IntegratedTemplate($this->templateRoot);
$this->tpl->loadTemplateFile("warnings.html");
}
reset($data);
while (list($file, $warnings)=each($data)) {
$this->tpl->setCurrentBlock("warning_loop");
reset($warnings);
while (list($k, $warning)=each($warnings)) {
$this->tpl->setVariable("WARNINGTYPE", $warning["type"]);
$this->tpl->setVariable("WARNING",
$this->encode($warning["value"]));
$this->tpl->setVariable("ELEMENT", htmlentities($warning["name"]));
$this->tpl->setVariable("ELEMENTTYPE", $warning["elementtype"]);
$this->tpl->parseCurrentBlock();
}
$this->tpl->setCurrentBlock("warning");
$this->tpl->setVariable("FILE", $file);
$this->tpl->setVariable("NUMWARNINGS", count($warnings));
$this->tpl->parseCurrentBlock();
}
return true;
} // end func addWarnings
} // end class PhpdocHTMLIndexRenderer
?>
Index: php4/pear/PHPDoc/renderer/html/templates/class.html
+++ php4/pear/PHPDoc/renderer/html/templates/class.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<title>{APPNAME} - {CLASS_PACKAGE} - Class: {CLASS_NAME}</title>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0">
<tr>
<td align="left" valign="top" bgcolor="#B0BAFF">
<table width="100%">
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" align="left"
valign="top"><hr></td>
</tr>
<tr>
<td align="left" valign="top">
File: <a href="file://{CLASS_FILE}"
target="_new">{CLASS_FILE}</a>
<h5>{APPNAME} - {CLASS_PACKAGE}</h5>
<h1>{CLASS_NAME}</h1>
{CLASS_TREE}
<p>
{CLASS_SHORTDESCRIPTION}{CLASS_UNDOC}
<p>
</td>
</tr>
<tr>
<td align="left" valign="top">
<h4>{CLASS_ACCESS} {CLASS_ABSTRACT} {CLASS_STATIC} {CLASS_FINAL} class {CLASS_NAME}
{CLASS_EXTENDS}</h4>
{CLASS_DESCRIPTION}
<p>
<table>
<!-- BEGIN class_see --><tr><td align="left"
valign="top">See Also</td><td align="left"
valign="top">{SEE}</td></tr><!-- END class_see -->
<!-- BEGIN class_links --><tr><td align="left"
valign="top">Links</td><td align="left"
valign="top">{LINK}</td></tr><!-- END class_links -->
<!-- BEGIN class_authors --><tr><td align="left"
valign="top">Authors</td><td align="left"
valign="top">{AUTHOR}</td></tr><!-- END class_authors -->
<!-- BEGIN class_since --><tr><td align="left"
valign="top">Since</td><td align="left"
valign="top">{SINCE}</td></tr><!-- END class_since -->
<!-- BEGIN class_version --><tr><td align="left"
valign="top">Version</td><td align="left"
valign="top">{VERSION}</td></tr><!-- END class_version -->
<!-- BEGIN class_deprecated --><tr><td align="left"
valign="top">Deprecated</td><td align="left"
valign="top">{DEPRECATED}</td></tr><!-- END class_deprecated -->
<!-- BEGIN class_copyright --><tr><td align="left"
valign="top">Copyright</td><td align="left"
valign="top">{COPYRIGHT}</td></tr><!-- END class_copyright -->
<!-- BEGIN class_magic --><tr><td align="left"
valign="top">Magic</td><td align="left"
valign="top">{MAGIC}</td></tr><!-- END class_magic -->
</table>
</td>
</tr>
<tr>
<td height="10" align="left"
valign="top"> </td>
</tr>
<!-- BEGIN subclasses -->
<tr>
<td align="left" valign="top">
<b>Direct known subclasses:</b> {ELEMENTS}
</td>
</tr>
<!-- END subclasses -->
<tr>
<td height="20" align="left"
valign="top"><hr></td>
</tr>
<!-- BEGIN inheritedfunctions -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top"><h3>Methods inherited from
{SOURCE}</h3></td>
</tr>
<tr>
<td align="left" valign="top">{ELEMENTS}</td>
</tr>
</table>
</td>
</tr>
<!-- END inheritedfunctions -->
<!-- BEGIN functionsummary -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>{ACCESS} Method Summary</h2></td>
</tr>
<!-- BEGIN functionsummary_loop -->
<tr>
<td align="right" valign="top">{RETURNTYPE}</td>
<td align="left" valign="top" width="100%"><a
href="#function_{NAME}"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td>
</tr>
<!-- END functionsummary_loop -->
</table>
</td>
</tr>
<!-- END functionsummary -->
<!-- BEGIN inheritedvariables -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top"><h3>Fields inherited from
{SOURCE}</h3></td>
</tr>
<tr>
<td align="left" valign="top">{ELEMENTS}</td>
</tr>
</table>
</td>
</tr>
<!-- END inheritedvariables -->
<!-- BEGIN variablesummary -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>{ACCESS} Field Summary</h2></td>
</tr>
<!-- BEGIN variablesummary_loop -->
<tr>
<td align="right" valign="top">{TYPE}</td>
<td align="left" valign="top" width="100%"><a
href="#variable_{NAME}"><h4>{NAME}</h4></a>{SHORTDESCRIPTION}{UNDOC}</td>
</tr>
<!-- END variablesummary_loop -->
</table>
</td>
</tr>
<!-- END variablesummary -->
<!-- BEGIN inheritedconstants -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top"><h3>Constants inherited from
{SOURCE}</h3></td>
</tr>
<tr>
<td align="left" valign="top">{ELEMENTS}</td>
</tr>
</table>
</td>
</tr>
<!-- END inheritedconstants -->
<!-- BEGIN constantssummary -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top" colspan=3><h3>{ACCESS} Constant
Summary</h3></td>
</tr>
<!-- BEGIN constantssummary_loop -->
<tr>
<td align="left" valign="top"><a
href="#constants_{NAME}">{NAME}</a></td>
<td align="left"
valign="top">>><code>{VALUE}</code><<</td>
<td align="left" valign="top"
width="100%">{SHORTDESCRIPTION}{UNDOC}</td>
</tr>
<!-- END constantssummary_loop -->
</table>
</td>
</tr>
<!-- END constantssummary -->
<!-- BEGIN inheriteduses -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top"><h3>Included files inherited from
{SOURCE}</h3></td>
</tr>
<tr>
<td align="left" valign="top">{ELEMENTS}</td>
</tr>
</table>
</td>
</tr>
<!-- END inheriteduses -->
<!-- BEGIN usessummary -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td align="left" valign="top" colspan=2><h3>Included files
Summary, Type: {TYPE}</h3></td>
</tr>
<!-- BEGIN usessummary_loop -->
<tr>
<td align="left" valign="top"><a
href="#uses_{FILE}">{FILE}</a></td>
<td align="left" valign="top" width="100%"><a
href="#uses_{FILE}">{SHORTDESCRIPTION}{UNDOC}</a></td>
</tr>
<!-- END usessummary_loop -->
</table>
</td>
</tr>
<!-- END usessummary -->
<!-- BEGIN functiondetails -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>{ACCESS} Method Details</h2></td>
</tr>
<!-- BEGIN functiondetails_loop -->
<tr><td colspan="2" align="left" valign="top"><a
name="function_{NAME}"><h4>{NAME}</h4></a></td></tr>
<tr>
<td colspan="2" align="left" valign="top">
<b>{ACCESS} {ABSTRACT} {STATIC} {FINAL} {RETURNTYPE} {NAME}( {PARAMETER}
)</b><p>
</td>
</tr>
<tr>
<td width="10" align="left"
valign="top"> </td>
<td align="left" valign="top">
{DESCRIPTION}
<p>
{UNDOC}
</td>
</tr>
<!-- BEGIN functiondetails_parameter -->
<tr>
<td colspan="2" align="left"
valign="top">Parameter</td>
</tr>
<!-- BEGIN functiondetails_parameter_loop -->
<tr>
<td></td>
<td align="left" valign="top">
<table>
<tr>
<td align="left" valign="top">{TYPE}</td>
<td align="left" valign="top">{NAME}</td>
<td align="left"
valign="top"><code>{DEFAULT}</code></td>
</tr>
<tr>
<td></td>
<td colspan="2" align="left"
valign="top">{DESCRIPTION}{UNDOC}</td>
</tr>
</table>
</td>
</tr>
<!-- END functiondetails_parameter_loop -->
<!-- END functiondetails_parameter -->
<!-- BEGIN functiondetails_return -->
<tr>
<td align="left" valign="top">Returns</td>
<td>{TYPE} {NAME}<p>{DESCRIPTION}</td>
</tr>
<!-- END functiondetails_return -->
<!-- BEGIN functiondetails_throws -->
<tr>
<td align="left" valign="top">Throws</td>
<td align="left" valign="top">{EXCEPTIONS}</td>
</tr>
<!-- END functiondetails_throws -->
<!-- BEGIN functiondetails_globals -->
<tr>
<td colspan="2" align="left" valign="top">Required global
variables</td>
</tr>
<!-- BEGIN functiondetails_globals_loop -->
<tr>
<td align="left" valign="top"></td>
<td align="left" valign="top">
<table>
<tr>
<td align="left" valign="top">{TYPE} {NAME}</td>
<td align="left" valign="top">{DESCRIPTION}</td>
</tr>
</table>
</td>
</tr>
<!-- END functiondetails_globals_loop -->
<!-- END functiondetails_globals -->
<!-- BEGIN functiondetails_version -->
<tr>
<td align="left" valign="top">Version</td>
<td align="left" valign="top">{VERSION}</td>
</tr>
<!-- END functiondetails_version -->
<!-- BEGIN functiondetails_since -->
<tr>
<td align="left" valign="top">Since</td>
<td align="left" valign="top">{SINCE}</td>
</tr>
<!-- END functiondetails_since -->
<!-- BEGIN functiondetails_deprecated -->
<tr>
<td align="left" valign="top">Deprecated</td>
<td align="left" valign="top">{DEPRECATED}</td>
</tr>
<!-- END functiondetails_deprecated -->
<!-- BEGIN functiondetails_copyright -->
<tr>
<td align="left" valign="top">Copyright</td>
<td align="left" valign="top">{COPYRIGHT}</td>
</tr>
<!-- END functiondetails_copyright -->
<!-- BEGIN functiondetails_magic -->
<tr>
<td align="left" valign="top">Magic</td>
<td align="left" valign="top">{MAGIC}</td>
</tr>
<!-- END functiondetails_magic -->
<!-- BEGIN functiondetails_brother -->
<tr>
<td align="left" valign="top">Brother</td>
<td align="left" valign="top">{BROTHER}</td>
</tr>
<!-- END functiondetails_brother -->
<!-- BEGIN functiondetails_see -->
<tr>
<td align="left" valign="top">See Also</td>
<td align="left" valign="top">{SEE}</td>
</tr>
<!-- END functiondetails_see -->
<!-- BEGIN functiondetails_links -->
<tr>
<td align="left" valign="top">Links</td>
<td align="left" valign="top">{LINK}</td>
</tr>
<!-- END functiondetails_links -->
<!-- BEGIN functiondetails_authors -->
<tr>
<td align="left" valign="top">Author(s)</td>
<td align="left" valign="top">{AUTHOR}</td>
</tr>
<!-- END functiondetails_authors -->
<tr>
<td colspan="2" align="left"
valign="top"><hr></td>
</tr>
<!-- END functiondetails_loop -->
</table>
</tr>
<!-- END functiondetails -->
<!-- BEGIN variabledetails -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>{ACCESS} Field Details</h2></td>
</tr>
<!-- BEGIN variabledetails_loop -->
<tr><td colspan="2" align="left" valign="top"><a
name="variable_{NAME}"><h4>{NAME}</h4></a></td></tr>
<tr>
<td colspan="2" align="left" valign="top">
<b>{ACCESS} {STATIC} {FINAL} {TYPE} {NAME}</b><p>
>><code>{VALUE}</code><<
</td>
</tr>
<!-- BEGIN variabledetails_version -->
<tr>
<td align="left" valign="top">Version</td>
<td align="left" valign="top">{VERSION}</td>
</tr>
<!-- END variabledetails_version -->
<!-- BEGIN variabledetails_since -->
<tr>
<td align="left" valign="top">Since</td>
<td align="left" valign="top">{SINCE}</td>
</tr>
<!-- END variabledetails_since -->
<!-- BEGIN variabledetails_deprecated -->
<tr>
<td align="left" valign="top">Deprecated</td>
<td align="left" valign="top">{DEPRECATED}</td>
</tr>
<!-- END variabledetails_deprecated -->
<!-- BEGIN variabledetails_copyright -->
<tr>
<td align="left" valign="top">Copyright</td>
<td align="left" valign="top">{COPYRIGHT}</td>
</tr>
<!-- END variabledetails_copyright -->
<!-- BEGIN variabledetails_magic -->
<tr>
<td align="left" valign="top">Magic</td>
<td align="left" valign="top">{MAGIC}</td>
</tr>
<!-- END variabledetails_magic -->
<!-- BEGIN variabledetails_brother -->
<tr>
<td align="left" valign="top">Brother</td>
<td align="left" valign="top">{BROTHER}</td>
</tr>
<!-- END variabledetails_brother -->
<!-- BEGIN variabledetails_see -->
<tr>
<td align="left" valign="top">See Also</td>
<td align="left" valign="top">{SEE}</td>
</tr>
<!-- END variabledetails_see -->
<!-- BEGIN variabledetails_links -->
<tr>
<td align="left" valign="top">Links</td>
<td align="left" valign="top">{LINK}</td>
</tr>
<!-- END variabledetails_links -->
<!-- BEGIN variabledetails_authors -->
<tr>
<td align="left" valign="top">Author(s)</td>
<td align="left" valign="top">{AUTHOR}</td>
</tr>
<!-- END variabledetails_authors -->
<tr>
<td colspan="2" align="left"
valign="top"><hr></td>
</tr>
<!-- END variabledetails_loop -->
</table>
</tr>
<!-- END variabledetails -->
<!-- BEGIN constantdetails -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>{ACCESS} Constant Details</h2></td>
</tr>
<!-- BEGIN constantdetails_loop -->
<tr>
<td colspan="2" align="left" valign="top">
<a name="constant_{NAME}"><h4>{NAME}</h4></a>
<code>define( {NAME}, >>{VALUE}<< )</code><br>
Case: {CASE}
</td>
</tr>
<!-- BEGIN constantdetails_version -->
<tr>
<td align="left" valign="top">Version</td>
<td align="left" valign="top">{VERSION}</td>
</tr>
<!-- END constantdetails_version -->
<!-- BEGIN constantdetails_since -->
<tr>
<td align="left" valign="top">Since</td>
<td align="left" valign="top">{SINCE}</td>
</tr>
<!-- END constantdetails_since -->
<!-- BEGIN constantdetails_deprecated -->
<tr>
<td align="left" valign="top">Deprecated</td>
<td align="left" valign="top">{DEPRECATED}</td>
</tr>
<!-- END constantdetails_deprecated -->
<!-- BEGIN constantdetails_copyright -->
<tr>
<td align="left" valign="top">Copyright</td>
<td align="left" valign="top">{COPYRIGHT}</td>
</tr>
<!-- END constantdetails_copyright -->
<!-- BEGIN constantdetails_magic -->
<tr>
<td align="left" valign="top">Magic</td>
<td align="left" valign="top">{MAGIC}</td>
</tr>
<!-- END constantdetails_magic -->
<!-- BEGIN constantdetails_brother -->
<tr>
<td align="left" valign="top">Brother</td>
<td align="left" valign="top">{BROTHER}</td>
</tr>
<!-- END constantdetails_brother -->
<!-- BEGIN constantdetails_see -->
<tr>
<td align="left" valign="top">See Also</td>
<td align="left" valign="top">{SEE}</td>
</tr>
<!-- END constantdetails_see -->
<!-- BEGIN constantdetails_links -->
<tr>
<td align="left" valign="top">Links</td>
<td align="left" valign="top">{LINK}</td>
</tr>
<!-- END constantdetails_links -->
<!-- BEGIN constantdetails_authors -->
<tr>
<td align="left" valign="top">Author(s)</td>
<td align="left" valign="top">{AUTHOR}</td>
</tr>
<!-- END constantdetails_authors -->
<tr>
<td colspan="2" align="left"
valign="top"><hr></td>
</tr>
<!-- END constantdetails_loop -->
</table>
</tr>
<!-- END constantdetails -->
<!-- BEGIN usesdetails -->
<tr>
<td align="left" valign="top">
<table width="100%" border="0">
<tr>
<td colspan="2" align="left"
valign="top"><h2>Included Files, Type: {TYPE}</h2></td>
</tr>
<!-- BEGIN usesdetails_loop -->
<tr><td colspan="2" align="left" valign="top"><a
name="uses_{FILE}"><h4>{FILE}</h4></a></td></tr>
<tr>
<td colspan="2" align="left" valign="top">
<b>{TYPE}( {FILE} )</b>
</td>
</tr>
<!-- BEGIN usesdetails_version -->
<tr>
<td align="left" valign="top">Version</td>
<td align="left" valign="top">{VERSION}</td>
</tr>
<!-- END usesdetails_version -->
<!-- BEGIN usesdetails_since -->
<tr>
<td align="left" valign="top">Since</td>
<td align="left" valign="top">{SINCE}</td>
</tr>
<!-- END usesdetails_since -->
<!-- BEGIN usesdetails_deprecated -->
<tr>
<td align="left" valign="top">Deprecated</td>
<td align="left" valign="top">{DEPRECATED}</td>
</tr>
<!-- END usesdetails_deprecated -->
<!-- BEGIN usesdetails_copyright -->
<tr>
<td align="left" valign="top">Copyright</td>
<td align="left" valign="top">{COPYRIGHT}</td>
</tr>
<!-- END usesdetails_copyright -->
<!-- BEGIN usesdetails_magic -->
<tr>
<td align="left" valign="top">Magic</td>
<td align="left" valign="top">{MAGIC}</td>
</tr>
<!-- END usesdetails_magic -->
<!-- BEGIN usesdetails_brother -->
<tr>
<td align="left" valign="top">Brother</td>
<td align="left" valign="top">{BROTHER}</td>
</tr>
<!-- END usesdetails_brother -->
<!-- BEGIN usesdetails_see -->
<tr>
<td align="left" valign="top">See Also</td>
<td align="left" valign="top">{SEE}</td>
</tr>
<!-- END usesdetails_see -->
<!-- BEGIN usesdetails_links -->
<tr>
<td align="left" valign="top">Links</td>
<td align="left" valign="top">{LINK}</td>
</tr>
<!-- END usesdetails_links -->
<!-- BEGIN usesdetails_authors -->
<tr>
<td align="left" valign="top">Author(s)</td>
<td align="left" valign="top">{AUTHOR}</td>
</tr>
<!-- END usesdetails_authors -->
<tr>
<td colspan="2" align="left"
valign="top"><hr></td>
</tr>
<!-- END usesdetails_loop -->
</table>
</tr>
<!-- END usesdetails -->
<tr>
<td height="10" align="left"
valign="top"><hr></td>
</tr>
<tr>
<td align="left" valign="top" bgcolor="#C0C0C0">
<table>
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top">PHPDoc 1.0beta</td>
</tr>
</table>
</body>
</html>
Index: php4/pear/PHPDoc/renderer/html/templates/classtree.html
+++ php4/pear/PHPDoc/renderer/html/templates/classtree.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<title>{APPNAME} - Classtrees</title>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0">
<tr>
<td align="left" valign="top" bgcolor="#B0BAFF">
<table width="100%">
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" align="left"
valign="top"><hr></td>
</tr>
<tr>
<td align="left" valign="top"><h1>Classtrees</h1></td>
</tr
<!-- BEGIN classtree -->
<tr>
<td height="10" align="left"
valign="top"> </td>
</tr>
<tr>
<td align="left" valign="top">
<h4>{BASECLASS}</h4>
{TREE}
</td>
</tr>
<!-- END classtree -->
<tr>
<td height="10" align="left"
valign="top"><hr></td>
</tr>
<tr>
<td align="left" valign="top" bgcolor="#B0BAFF">
<table width="100%">
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top">PHPDoc 1.0beta</td>
</tr>
</table>
</body>
</html>
Index: php4/pear/PHPDoc/renderer/html/templates/elementlist.html
+++ php4/pear/PHPDoc/renderer/html/templates/elementlist.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<title>{APPNAME} - Elementlist</title>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0">
<tr>
<td align="left" valign="top" bgcolor="#B0BAFF"
colspan="2">
<table width="100%">
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">
<!-- BEGIN chaptersummary_loop --><a href="#{CHAPTER}">{CHAPTER}</a>
<!-- END chaptersummary_loop -->
</td>
</tr>
<!-- BEGIN chapter -->
<tr>
<td colspan="2" align="left" valign="top"><h4><a
name="{CHAPTER}">{CHAPTER}</a></h4></td>
</tr>
<!-- BEGIN chapter_loop -->
<tr>
<td>{ELEMENTNAME}</td>
<td width="100%" align="left" valign="top">
{ELEMENT}<br>
{SHORTDESCRIPTION}
</td>
</tr>
<!-- END chapter_loop -->
<!-- END chapter -->
<tr>
<td colspan="2" align="left" valign="top"
bgcolor="Silver">
<table>
<tr>
<td align="left" valign="top"><a
href="phpdoc_packagelist.html">Packageindex</a></td>
<td align="left" valign="top"><a
href="phpdoc_classtree.html">Classtrees</a></td>
<td align="left" valign="top"><a
href="phpdoc_modulegroup.html">Modulegroups</a></td>
<td align="left" valign="top"><a
href="phpdoc_elementlist.html">Elementlist</a></td>
<td align="left" valign="top"><a
href="phpdoc_warnings.html">Report</a></td>
<td align="left" valign="top"><a
href="phpdoc_xmlfiles.html">XML Files</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">PHPDoc
1.0beta</td>
</tr>
</table>
</body>
</html>
Index: php4/pear/PHPDoc/renderer/html/templates/frame_packageelementlist.html
+++ php4/pear/PHPDoc/renderer/html/templates/frame_packageelementlist.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
<title>{APPNAME} - Frameset Packageelements</title>
</head>
<body>
<table width="100%">
<tr>
<td colspan=3 align="left" valign="top">
<h3>Packagelist</h3>
</td>
</tr>
<!-- BEGIN package -->
<tr>
<td colspan="3" align="left"
valign="top"><h4>{PACKAGE_NAME}</h4></td>
</tr>
<!-- BEGIN package_class -->
<tr>
<td align="left" valign="top"> </td>
<td colspan="2" align="left"
valign="top"><h5>Classes</h5>{EMPTY}</td>
</tr>
<!-- BEGIN package_class_loop -->
<tr>
<td colspan="2" align="left"
valign="top"> </td>
<td align="left" valign="top">{ELEMENT}</td>
</tr>
<!-- END package_class_loop -->
<!-- END package_class -->
<!-- BEGIN package_module -->
<tr>
<td align="left" valign="top"> </td>
<td colspan="2" align="left"
valign="top"><h5>Modules</h5>{EMPTY}</td>
</tr>
<!-- BEGIN package_module_loop -->
<tr>
<td colspan="2" align="left"
valign="top"> </td>
<td align="left" valign="top">{ELEMENT}</td>
</tr>
<!-- END package_module_loop -->
<!-- END package_module -->
<!-- END package -->
</table>
</body>
</html>
Index: php4/pear/PHPDoc/renderer/html/templates/frame_packagelist.html
+++ php4/pear/PHPDoc/renderer/html/templates/frame_packagelist.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- Generated with PHPDoc, http://www.phpdoc.de -->
<html>
<head>
<title>{APPNAME} - Frameset Packagelist</title>
<link href="phpdoc.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%">
<tr>
<td align="left"
valign="top"><h4>Packagelist</h4></td>
</tr>
<!-- BEGIN package -->
<tr>
<td align="left" valign="top">{PACKAGE}</td>
</tr>
<!-- END package -->
</table>
</body>
</html>