Initial Commit
This commit is contained in:
159
database/php/pear/PHP/UML/Output/HtmlNew/DocIndex.php
Normal file
159
database/php/pear/PHP/UML/Output/HtmlNew/DocIndex.php
Normal file
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP_UML
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* @category PHP
|
||||
* @package PHP_UML
|
||||
* @author Baptiste Autin <ohlesbeauxjours@yahoo.fr>
|
||||
* @license http://www.gnu.org/licenses/lgpl.html LGPL License 3
|
||||
* @version SVN: $Revision: 176 $
|
||||
* @link http://pear.php.net/package/PHP_UML
|
||||
* @since $Date: 2011-09-19 00:03:11 +0200 (lun., 19 sept. 2011) $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implementation of the HTML renderer for the Index page
|
||||
*
|
||||
* @category PHP
|
||||
* @package PHP_UML
|
||||
* @subpackage Output
|
||||
* @subpackage HtmlNew
|
||||
* @author Baptiste Autin <ohlesbeauxjours@yahoo.fr>
|
||||
* @license http://www.gnu.org/licenses/lgpl.html LGPL License 3
|
||||
*/
|
||||
class PHP_UML_Output_HtmlNew_DocIndex extends PHP_UML_Output_HtmlNew_DocMenu
|
||||
{
|
||||
/**
|
||||
* Temporary structure to store all the elements (in order to sort them)
|
||||
* @var array First index: the element, Second index: filepath to detail page, Third index: true only for operations/attributes of a Package (procedural code)
|
||||
*/
|
||||
private $elements = array();
|
||||
|
||||
/**
|
||||
* Generates and saves the HTML code for the Index page
|
||||
*
|
||||
* @param PHP_UML_Metamodel_Package $p Package to render
|
||||
*/
|
||||
public function render($p)
|
||||
{
|
||||
$tpl = $this->getTemplate(self::INDEXALL_FILENAME.'.'.self::FILE_EXT);
|
||||
|
||||
$nav = $this->getNavigationBlock();
|
||||
|
||||
$str = '<ul id="MainList" class="indexAll">';
|
||||
$str .= $this->getContent($p);
|
||||
$str .= '</ul>';
|
||||
|
||||
$tmp = str_replace('#NAVIG', $nav, $tpl);
|
||||
$str = str_replace('#INDEX', $str, $tmp);
|
||||
|
||||
$this->save(self::INDEXALL_FILENAME, $str);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the HTML code for an Index page
|
||||
*
|
||||
* @param PHP_UML_Metamodel_Package $p Starting package
|
||||
*
|
||||
* @return string HTML code
|
||||
*/
|
||||
private function getContent(PHP_UML_Metamodel_Package $p)
|
||||
{
|
||||
$this->readPackage($p);
|
||||
$str = '';
|
||||
usort($this->elements, array('self', 'compareElt'));
|
||||
foreach ($this->elements as $x) {
|
||||
list($elt, $path, $pkgElt) = $x;
|
||||
switch(get_class($elt)) {
|
||||
case self::META_CLASS:
|
||||
case self::META_INTERFACE:
|
||||
$str .= $this->getClassifierItem($elt, $path, 0);
|
||||
break;
|
||||
case self::META_OPERATION:
|
||||
if ($pkgElt)
|
||||
$str .= $this->getPackageOperationItem($elt, $path);
|
||||
else
|
||||
$str .= $this->getOperationItem($elt, $path);
|
||||
break;
|
||||
case self::META_PROPERTY:
|
||||
if ($pkgElt)
|
||||
$str .= $this->getPackagePropertyItem($elt, $path);
|
||||
else
|
||||
$str .= $this->getPropertyItem($elt, $path);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
static private function compareElt($a, $b)
|
||||
{
|
||||
return strcasecmp($a[0]->name, $b[0]->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the elements[] property with the API data of a package
|
||||
*
|
||||
* @param PHP_UML_Metamodel_Package $p Package
|
||||
* @param string $path Relative path to the current package
|
||||
* @param string $level Recursion level
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function readPackage(PHP_UML_Metamodel_Package $p, $path='', $level=0)
|
||||
{
|
||||
foreach ($p->nestedPackage as $np) {
|
||||
$npDir = $path.$np->name;
|
||||
$this->readPackage($np, $npDir.'/', $level+1);
|
||||
}
|
||||
foreach ($p->ownedType as $c) {
|
||||
$this->elements[] = array($c, $path, false);
|
||||
foreach ($c->ownedOperation as $o) {
|
||||
$this->elements[] = array($o, $path, false);
|
||||
}
|
||||
if (isset($c->ownedAttribute)) {
|
||||
foreach ($c->ownedAttribute as $a) {
|
||||
$this->elements[] = array($a, $path, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($p->ownedOperation as $o) {
|
||||
$this->elements[] = array($o, $path, true);
|
||||
}
|
||||
foreach ($p->ownedAttribute as $a) {
|
||||
$this->elements[] = array($a, $path, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the HTML code for the navigation bar
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function getNavigationBlock()
|
||||
{
|
||||
$str = '<ul class="navig">';
|
||||
$str .= $this->getCommonLinks();
|
||||
$str .= '</ul>';
|
||||
return $str;
|
||||
}
|
||||
|
||||
protected function getPropertyItem(PHP_UML_Metamodel_Property $p, $path)
|
||||
{
|
||||
return '<li>'.
|
||||
'<a href="'.$path.self::getObjPrefix($p->class).$p->class->name.'.'.self::FILE_EXT.'#'.$p->name.
|
||||
'" class="'.$this->getPropertyStyle($p->visibility).'" target="main">'.$p->name.'</a>'.
|
||||
'</li>';
|
||||
}
|
||||
|
||||
protected function getOperationItem(PHP_UML_Metamodel_Operation $o, $path)
|
||||
{
|
||||
return '<li>'.
|
||||
'<a href="'.$path.self::getObjPrefix($o->class).$o->class->name.'.'.self::FILE_EXT.'#f'.$o->id.
|
||||
'" class="'.$this->getFunctionStyle($o->visibility).'" target="main">'.$o->name.$this->getParameterList($o).'</a>'.
|
||||
'</li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user