diff options
Diffstat (limited to 'buildscripts/chmbuilder/classes/pages/ClassDoc.php')
| -rw-r--r-- | buildscripts/chmbuilder/classes/pages/ClassDoc.php | 228 | 
1 files changed, 228 insertions, 0 deletions
diff --git a/buildscripts/chmbuilder/classes/pages/ClassDoc.php b/buildscripts/chmbuilder/classes/pages/ClassDoc.php new file mode 100644 index 00000000..733cfc5b --- /dev/null +++ b/buildscripts/chmbuilder/classes/pages/ClassDoc.php @@ -0,0 +1,228 @@ +<?php
 +
 +class ClassDoc extends TPage
 +{
 +	public $Class;
 +	private $_classes;
 +
 +	public function onLoad($param)
 +	{
 +		parent::onLoad($param);
 +		$dataFile=Prado::getPathOfNamespace('Application.Data.classes','.data');
 +		$this->_classes=unserialize(file_get_contents($dataFile));
 +
 +		if(($className=$this->Request['class'])!==null && isset($this->_classes[$className]))
 +		{
 +			$this->Class=$this->_classes[$className];
 +			$this->Class['Name']=$className;
 +			$this->Title='PRADO - Documentation of '.$className;
 +		}
 +		else
 +			$this->Response->redirect('/docs/classdoc/');
 +	}
 +
 +	public function getAncestors()
 +	{
 +		$ancestors=array();
 +		$thisClass=$this->Class;
 +		while(true)
 +		{
 +			$parentClass=$thisClass['ParentClass'];
 +			if(isset($this->_classes[$parentClass]))
 +			{
 +				$ancestors[]=$parentClass;
 +				$thisClass=$this->_classes[$parentClass];
 +			}
 +			else
 +				break;
 +		}
 +		$ancestors=array_reverse($ancestors);
 +		$s='';
 +		foreach($ancestors as $ancestor)
 +			$s.="<a href=\"$ancestor.html\">$ancestor</a> »\n";
 +		if($s!=='')
 +			$s="<div class=\"doc-ancestors\">\nInheritance: $s</div>\n";
 +		return $s;
 +	}
 +
 +	public function getProperties()
 +	{
 +		$class=$this->Class;
 +		$className=$this->Class['Name'];
 +		$s='';
 +		foreach($class['Properties'] as $name=>$property)
 +		{
 +			$inherited=strcasecmp($property['class'],$className)!==0;
 +			$rowclass=$inherited?'doc-inherited':'doc-native';
 +			$s.="<tr class=\"$rowclass\">\n";
 +			$access='';
 +			if($property['readonly'])
 +				$access.='R';
 +			if($property['protected'])
 +				$access.='P';
 +			if($access==='')
 +				$access=' ';
 +			$s.="<td width=\"1\" nowrap=\"nowrap\" align=\"center\">$access</td>\n";
 +
 +			if($inherited)
 +			{
 +				$parentClass=$property['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#methodget{$name}";
 +					$s.="<td><a href=\"$url\">$name</a></td>\n";
 +				}
 +				else
 +					$s.="<td>$name</td>\n";
 +			}
 +			else
 +			{
 +				$url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#methodget{$name}";
 +				$s.="<td><a href=\"$url\">$name</a></td>\n";
 +			}
 +
 +			$type=$property['type'];
 +			if(isset($this->_classes[$type]))
 +			{
 +				$url="$type.html";
 +				$s.="<td><a href=\"$url\">$type</a></td>\n";
 +			}
 +			else
 +				$s.="<td>$type</td>\n";
 +
 +			$comments=rtrim($property['comments'],'.').'.';
 +			if($inherited)
 +			{
 +				$parentClass=$property['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="$parentClass.html";
 +					$comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
 +				}
 +				else
 +					$comments.=" (inherited from {$parentClass})";
 +			}
 +			$s.="<td>$comments</td>\n";
 +			$s.="</tr>\n";
 +		}
 +
 +		$header="<tr>\n<th> </th><th>Name</th><th>Type</th><th>Description</th>\n</tr>\n";
 +		return $s===''?'':"<div class=\"doc-properties\">\n<table>\n$header$s</table>\n</div>\n";
 +	}
 +
 +	public function getEvents()
 +	{
 +		$class=$this->Class;
 +		$className=$this->Class['Name'];
 +		$s='';
 +		foreach($class['Events'] as $name=>$event)
 +		{
 +			$inherited=strcasecmp($event['class'],$className)!==0;
 +			$rowclass=$inherited?'doc-inherited':'doc-native';
 +			$s.="<tr class=\"$rowclass\">\n";
 +
 +			$methodName=$name;
 +			$methodName[0]='o';
 +			if($inherited)
 +			{
 +				$parentClass=$event['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#method{$methodName}";
 +					$s.="<td><a href=\"$url\">$name</a></td>\n";
 +				}
 +				else
 +					$s.="<td>$name</td>\n";
 +			}
 +			else
 +			{
 +				$url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#method{$methodName}";
 +				$s.="<td><a href=\"$url\">$name</a></td>\n";
 +			}
 +
 +			$comments=rtrim($event['comments'],'.').'.';
 +			if($inherited)
 +			{
 +				$parentClass=$event['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="$parentClass.html";
 +					$comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
 +				}
 +				else
 +					$comments.=" (inherited from {$parentClass})";
 +			}
 +			$s.="<td>$comments</td>\n";
 +			$s.="</tr>\n";
 +		}
 +		$header="<tr>\n<th>Name</th><th>Description</th>\n</tr>\n";
 +		return $s===''?'':"<div class=\"doc-events\">\n<table>\n$header$s</table>\n</div>\n";
 +	}
 +
 +	public function getMethods()
 +	{
 +		$class=$this->Class;
 +		$className=$this->Class['Name'];
 +		$s='';
 +		foreach($class['Methods'] as $name=>$method)
 +		{
 +			$inherited=strcasecmp($method['class'],$className)!==0;
 +			$rowclass=$inherited?'doc-inherited':'doc-native';
 +			$s.="<tr class=\"$rowclass\">\n";
 +			$access='';
 +			if($method['static'])
 +				$access.='S';
 +			if($method['protected'])
 +				$access.='P';
 +			if($access==='')
 +				$access=' ';
 +			$s.="<td nowrap=\"nowrap\" width=\"1\" align=\"center\">$access</td>\n";
 +
 +			if($inherited)
 +			{
 +				$parentClass=$method['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#method{$name}";
 +					$s.="<td><a href=\"$url\">$name</a></td>\n";
 +				}
 +				else
 +					$s.="<td>$name</td>\n";
 +			}
 +			else
 +			{
 +				$url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#method{$name}";
 +				$s.="<td><a href=\"$url\">$name</a></td>\n";
 +			}
 +
 +			$comments=rtrim($method['comments'],'.').'.';
 +			if($inherited)
 +			{
 +				$parentClass=$method['class'];
 +				if(isset($this->_classes[$parentClass]))
 +				{
 +					$url="$parentClass.html";
 +					$comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
 +				}
 +				else
 +					$comments.=" (inherited from {$parentClass})";
 +			}
 +			$s.="<td>$comments</td>\n";
 +			$s.="</tr>\n";
 +		}
 +		$header="<tr>\n<th> </th><th>Name</th><th>Description</th>\n</tr>\n";
 +		return $s===''?'':"<div class=\"doc-methods\">\n<table>\n$header$s</table>\n</div>\n";
 +	}
 +
 +	public function getDerived()
 +	{
 +		$class=$this->Class;
 +		$s='';
 +		foreach($class['ChildClasses'] as $childName)
 +			$s.="<li><a href=\"$childName.html\">$childName</a></li>\n";
 +		return $s===''?'':"<div class=\"doc-derived\">\n<ul>\n$s</ul>\n</div>\n";
 +	}
 +
 +}
 +
 +?>
  | 
