diff options
Diffstat (limited to 'buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM')
36 files changed, 3338 insertions, 0 deletions
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc new file mode 100755 index 00000000..b9679a27 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc @@ -0,0 +1,1899 @@ +<?php +/** + * CHM (Compiled Help Manual) output converter for Smarty Template. + * + * phpDocumentor :: automatic documentation generator + * + * PHP versions 4 and 5 + * + * Copyright (c) 2003-2006 Andrew Eddie, Greg Beaver + * + * LICENSE: + * + * This library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General + * Public License as published by the Free Software Foundation; + * either version 2.1 of the License, or (at your option) any + * later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @package Converters + * @subpackage CHMdefault + * @author Joshua Eichorn <jeichorn@phpdoc.org> + * @author Greg Beaver <cellog@php.net> + * @copyright 2000-2006 Joshua Eichorn, Gregory Beaver + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version CVS: $Id: CHMdefaultConverter.inc 234145 2007-04-19 20:20:57Z ashnazg $ + * @filesource + * @link http://www.phpdoc.org + * @link http://pear.php.net/PhpDocumentor + * @since 1.0rc1 + */ +/** + * Generates files that MS HTML Help Worshop can use to create a MS Windows + * compiled help file (CHM) + * + * The free MS HTML Help compiler takes the project file (phpdoc.hhp) and reads + * the table of contents file specified in the project (which is always contents.hhc + * in phpDocumentor). When the converter reaches stable state, it will also + * output an index file index.hhk. The free download for MS HTML Help Workshop + * is available below + * @link http://www.microsoft.com/downloads/release.asp?releaseid=33071 MS HTML Help Workshop download + * @package Converters + * @subpackage CHMdefault + * @author Greg Beaver <cellog@php.net> + * @since 1.0rc1 + * @version $Revision: 234145 $ + */ +class CHMdefaultConverter extends Converter +{ + /** + * CHMdefaultConverter wants elements sorted by type as well as alphabetically + * @see Converter::$sort_page_contents_by_type + * @var boolean + */ + var $sort_page_contents_by_type = true; + /** @var string */ + var $outputformat = 'CHM'; + /** @var string */ + var $name = 'default'; + /** + * indexes of elements by package that need to be generated + * @var array + */ + var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => false, 'globals' => false); + + /** + * output directory for the current procedural page being processed + * @var string + */ + var $page_dir; + + /** + * target directory passed on the command-line. + * {@link $targetDir} is malleable, always adding package/ and package/subpackage/ subdirectories onto it. + * @var string + */ + var $base_dir; + + /** + * output directory for the current class being processed + * @var string + */ + var $class_dir; + + /** + * array of converted package page names. + * Used to link to the package page in the left index + * @var array Format: array(package => 1) + */ + var $package_pages = array(); + + /** + * controls formatting of parser informative output + * + * Converter prints: + * "Converting /path/to/file.php... Procedural Page Elements... Classes..." + * Since CHMdefaultConverter outputs files while converting, it needs to send a \n to start a new line. However, if there + * is more than one class, output is messy, with multiple \n's just between class file output. This variable prevents that + * and is purely cosmetic + * @var boolean + */ + var $juststarted = false; + + /** + * contains all of the template procedural page element loop data needed for the current template + * @var array + */ + var $current; + + /** + * contains all of the template class element loop data needed for the current template + * @var array + */ + var $currentclass; + var $wrote = false; + var $ric_set = array(); + /** + * Table of Contents entry for index.hhk + * @var array + */ + var $KLinks = array(); + + /** + * sets {@link $base_dir} to $targetDir + * @see Converter() + */ + function CHMdefaultConverter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $templateDir, $title) + { + Converter::Converter($allp, $packp, $classes, $procpages,$po, $pp, $qm, $targetDir, $templateDir, $title); + $this->base_dir = $targetDir; + } + + /** + * @deprecated in favor of PHP 4.3.0+ tokenizer-based source highlighting + */ + function unmangle($sourcecode) + { + $sourcecode = str_replace('<code>','<pre>',$sourcecode); + $sourcecode = str_replace('</code>','</pre>',$sourcecode); + $sourcecode = str_replace('<br />',"\n",$sourcecode); + $sourcecode = str_replace(' ',' ',$sourcecode); + $sourcecode = str_replace('<','<',$sourcecode); + $sourcecode = str_replace('>','>',$sourcecode); + $sourcecode = str_replace('&','&',$sourcecode); + return $sourcecode; + } + + /** + * @param string full path to the source file + * @param string fully highlighted source code + */ + function writeSource($path, $value) + { + $templ = &$this->newSmarty(); + $pathinfo = $this->proceduralpages->getPathInfo($path, $this); + $templ->assign('source',$value); + $templ->assign('package',$pathinfo['package']); + $templ->assign('subpackage',$pathinfo['subpackage']); + $templ->assign('name',$pathinfo['name']); + $templ->assign('source_loc',$pathinfo['source_loc']); + $templ->assign('docs',$pathinfo['docs']); + $templ->assign("subdir",'../'); + $templ->register_outputfilter('CHMdefault_outputfilter'); + $this->setTargetDir($this->getFileSourcePath($this->base_dir)); + $this->addSourceTOC($pathinfo['name'],$this->getFileSourceName($path),$pathinfo['package'],$pathinfo['subpackage'], true); + phpDocumentor_out("\n"); + $this->setSourcePaths($path); + $this->writefile($this->getFileSourceName($path).'.html',$templ->fetch('filesource.tpl')); + } + + function writeExample($title, $path, $source) + { + $templ = &$this->newSmarty(); + $templ->assign('source',$source); + if (empty($title)) + { + $title = 'example'; + addWarning(PDERROR_EMPTY_EXAMPLE_TITLE, $path, $title); + } + $templ->assign('title',$title); + $templ->assign('file',$path); + $templ->assign("subdir",'../'); + $templ->register_outputfilter('CHMdefault_outputfilter'); + $pathinfo = $this->proceduralpages->getPathInfo($path, $this); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . '__examplesource'); + $this->addSourceTOC($title,'exsource_'.$path,$pathinfo['package'],$pathinfo['subpackage'], false); + phpDocumentor_out("\n"); + $this->writefile('exsource_'.$path.'.html',$templ->fetch('examplesource.tpl')); + } + + function getExampleLink($path, $title) + { + return $this->returnLink('{$subdir}__examplesource' . PATH_DELIMITER . 'exsource_'.$path.'.html',$title); + } + + function getSourceLink($path) + { + return $this->returnLink('{$subdir}__filesource/' . + $this->getFileSourceName($path).'.html','Source Code for this file'); + } + + /** + * Retrieve a Converter-specific anchor to a segment of a source code file + * parsed via a {@tutorial tags.filesource.pkg} tag. + * @param string full path to source file + * @param string name of anchor + * @param string link text, if this is a link + * @param boolean returns either a link or a destination based on this + * parameter + * @return string link to an anchor, or the anchor + */ + function getSourceAnchor($sourcefile,$anchor,$text = '',$link = false) + { + if ($link) { + return $this->returnLink('{$subdir}__filesource/' . + $this->getFileSourceName($sourcefile) . '.html#a' . $anchor, $text); + } else { + return '<a name="a'.$anchor.'"></a>'; + } + } + + + /** + * Return a line of highlighted source code with formatted line number + * + * If the $path is a full path, then an anchor to the line number will be + * added as well + * @param integer line number + * @param string highlighted source code line + * @param false|string full path to @filesource file this line is a part of, + * if this is a single line from a complete file. + * @return string formatted source code line with line number + */ + function sourceLine($linenumber, $line, $path = false) + { + $extra = ''; + if (strlen(str_replace("\n", '', $line)) == 0) { + $extra = ' '; + } + if ($path) + { + return '<li><div class="src-line">' . $this->getSourceAnchor($path, $linenumber) . + str_replace("\n",'',$line) . $extra . + "</div></li>\n"; + } else + { + return '<li><div class="src-line">' . str_replace("\n",'',$line) . + "$extra</div></li>\n"; + } + } + + /** + * Used to convert the <<code>> tag in a docblock + * @param string + * @param boolean + * @return string + */ + function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/, + $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/) + { + return $this->PreserveWhiteSpace(parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath)); + } + + /** + * @param string + */ + function TutorialExample($example) + { + $trans = $this->template_options['desctranslate']; + $this->template_options['desctranslate'] = array(); + $example = '<ol>' . parent::TutorialExample($example) + .'</ol>'; + $this->template_options['desctranslate'] = $trans; + if (!isset($this->template_options['desctranslate'])) return $example; + if (!isset($this->template_options['desctranslate']['code'])) return $example; + $example = $this->template_options['desctranslate']['code'] . $example; + if (!isset($this->template_options['desctranslate']['/code'])) return $example; + return $example . $this->template_options['desctranslate']['/code']; + } + + function getCurrentPageLink() + { + return $this->curname . '.html'; + } + + /** + * Uses htmlspecialchars() on the input + */ + function postProcess($text) + { + if ($this->highlightingSource) { + return str_replace(array(' ',"\t"), array(' ', ' '), + htmlspecialchars($text)); + } + return htmlspecialchars($text); + } + + /** + * Use the template tutorial_toc.tpl to generate a table of contents for HTML + * @return string table of contents formatted for use in the current output format + * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...) + */ + function formatTutorialTOC($toc) + { + $template = &$this->newSmarty(); + $template->assign('toc',$toc); + return $template->fetch('tutorial_toc.tpl'); + } + + function &SmartyInit(&$templ) + { + if (!isset($this->package_index)) + foreach($this->all_packages as $key => $val) + { + if (isset($this->pkg_elements[$key])) + { + if (!isset($start)) $start = $key; + $this->package_index[] = array('link' => "li_$key.html", 'title' => $key); + } + } + $templ->assign("packageindex",$this->package_index); + $templ->assign("subdir",''); + return $templ; + } + + + /** + * Writes out the template file of {@link $class_data} and unsets the template to save memory + * @see registerCurrentClass() + * @see parent::endClass() + */ + function endClass() + { + $a = '../'; + if (!empty($this->subpackage)) $a .= '../'; + if ($this->juststarted) + { + $this->juststarted = false; + phpDocumentor_out("\n"); + flush(); + } + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir); + $this->class_data->assign("subdir",$a); + $this->class_data->register_outputfilter('CHMdefault_outputfilter'); + $this->addTOC($this->class,$this->class,$this->package,$this->subpackage, true); + $this->writefile($this->class . '.html',$this->class_data->fetch('class.tpl')); + unset($this->class_data); + } + + /** + * Writes out the template file of {@link $page_data} and unsets the template to save memory + * @see registerCurrent() + * @see parent::endPage() + */ + function endPage() + { + $this->package = $this->curpage->package; + $this->subpackage = $this->curpage->subpackage; + $a = '../'; + if (!empty($this->subpackage)) $a .= '../'; + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->page_data->assign("package",$this->package); + $this->page_data->assign("subdir",$a); + $this->page_data->register_outputfilter('CHMdefault_outputfilter'); + $this->addTOC($this->curpage->file,$this->page,$this->package,$this->subpackage); + $this->writefile($this->page . '.html',$this->page_data->fetch('page.tpl')); + unset($this->page_data); + } + + /** + * @param string + * @param string + * @return string <a href="'.$link.'">'.$text.'</a> + */ + function returnLink($link,$text) + { + return '<a href="'.$link.'">'.$text.'</a>'; + } + + /** + * CHMdefaultConverter chooses to format both package indexes and the complete index here + * + * This function formats output for the elementindex.html and pkgelementindex.html template files. It then + * writes them to the target directory + * @see generateElementIndex(), generatePkgElementIndex() + */ + function formatPkgIndex() + { + list($package_indexes,$packages,$mletters) = $this->generatePkgElementIndexes(); + for($i=0;$i<count($package_indexes);$i++) + { + $template = &$this->newSmarty(); + $this->package = $package_indexes[$i]['package']; + $this->subpackage = ''; + $template->assign("index",$package_indexes[$i]['pindex']); + $template->assign("package",$package_indexes[$i]['package']); + $template->assign("letters",$mletters[$package_indexes[$i]['package']]); + $template->assign("title","Package ".$package_indexes[$i]['package']." Element Index"); + $template->assign("subdir",'../'); + $template->register_outputfilter('CHMdefault_outputfilter'); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $package_indexes[$i]['package']); + $this->addTOC($package_indexes[$i]['package']." Alphabetical Index",'elementindex_'.$package_indexes[$i]['package'],$package_indexes[$i]['package'],''); + $this->writefile('elementindex_'.$package_indexes[$i]['package'].'.html',$template->fetch('pkgelementindex.tpl')); + } + phpDocumentor_out("\n"); + flush(); + } + + /** + * CHMdefaultConverter uses this function to format template index.html and packages.html + * + * This function generates the package list from {@link $all_packages}, eliminating any + * packages that don't have any entries in their package index (no files at all, due to @ignore + * or other factors). Then it uses the default package name as the first package index to display. + * It sets the right pane to be either a blank file with instructions on making package-level docs, + * or the package-level docs for the default package. + * @global string Used to set the starting package to display + */ + function formatIndex() + { + global $phpDocumentor_DefaultPackageName; + list($elindex,$mletters) = $this->generateElementIndex(); + $template = &$this->newSmarty(); + $template->assign("index",$elindex); + $template->assign("letters",$mletters); + $template->assign("title","Element Index"); + $template->assign("date",date("r",time())); + $template->register_outputfilter('CHMdefault_outputfilter'); + phpDocumentor_out("\n"); + flush(); + $this->setTargetDir($this->base_dir); + $this->addTOC("Alphabetical Index Of All Elements",'elementindex',"Index",''); + $this->writefile('elementindex.html',$template->fetch('elementindex.tpl')); + usort($this->package_index,"CHMdefault_pindexcmp"); + $index = &$this->newSmarty(); + foreach($this->all_packages as $key => $val) + { + if (isset($this->pkg_elements[$key])) + { + if (!isset($start)) $start = $key; + if (!isset($this->package_pages[$key])) $this->writeNewPPage($key); + } + } + $this->setTargetDir($this->base_dir); + // Created index.html + if (isset($this->pkg_elements[$phpDocumentor_DefaultPackageName])) $start = $phpDocumentor_DefaultPackageName; + $this->package = $start; + $this->subpackage = ''; + $setalready = false; + if (isset($this->tutorials[$start]['']['pkg'])) + { + foreach($this->tutorials[$start]['']['pkg'] as $tute) + { + if ($tute->name == $start . '.pkg') + { + $setalready = true; + $this->addTOC("Start page",$start.'/tutorial_'.$tute->name,"Index",''); + } + } + } + if (!$setalready) + { + if (isset($this->package_pages[$start])) + { + $this->addTOC("Start page",'package_'.$start,"Index",''); + } + else + { + $index->assign("blank","blank"); + $blank = &$this->newSmarty(); + $blank->assign('package',$phpDocumentor_DefaultPackageName); + $this->addTOC("Start page",'blank',"Index",''); + $this->writefile("blank.html",$blank->fetch('blank.tpl')); + Converter::writefile('index.html',$blank->fetch('tutorial.tpl')); + } + } + phpDocumentor_out("\n"); + flush(); + + unset($index); + } + + function writeNewPPage($key) + { + return; + $template = &$this->newSmarty(); + $this->package = $key; + $this->subpackage = ''; + $template->assign("date",date("r",time())); + $template->assign("title",$this->title); + $template->assign("package",$key); + $template->register_outputfilter('CHMdefault_outputfilter'); + phpDocumentor_out("\n"); + flush(); + $this->setTargetDir($this->base_dir); + + $this->addTOC("$key Index","li_$key",$key,''); + $this->writefile("li_$key.html",$template->fetch('index.tpl')); + unset($template); + } + + /** + * Generate indexes for li_package.html and classtree output files + * + * This function generates the li_package.html files from the template file left.html. It does this by + * iterating through each of the $page_elements, $class_elements and $function_elements arrays to retrieve + * the pre-sorted {@link abstractLink} descendants needed for index generation. Conversion of these links to + * text is done by {@link returnSee()}. The {@link $local} parameter is set to false to ensure that paths are correct. + * + * Then it uses {@link generateFormattedClassTrees()} to create class trees from the template file classtrees.html. Output + * filename is classtrees_packagename.html. This function also unsets {@link $elements} and {@link $pkg_elements} to free + * up the considerable memory these two class vars use + * @see $page_elements, $class_elements, $function_elements + */ + function formatLeftIndex() + { + phpDocumentor_out("\n"); + flush(); + $this->setTargetDir($this->base_dir); + if (0)//!isset($this->left)) + { + debug("Nothing parsed, check the command-line"); + die(); + } + foreach($this->all_packages as $package => $rest) + { + if (!isset($this->pkg_elements[$package])) continue; + + // Create class tree page + $template = &$this->newSmarty(); + $template->assign("classtrees",$this->generateFormattedClassTrees($package)); + $template->assign("package",$package); + $template->assign("date",date("r",time())); + $template->register_outputfilter('CHMdefault_outputfilter'); + $this->addTOC("$package Class Trees","classtrees_$package",$package,''); + $this->writefile("classtrees_$package.html",$template->fetch('classtrees.tpl')); + phpDocumentor_out("\n"); + flush(); + } + // free up considerable memory + unset($this->elements); + unset($this->pkg_elements); + } + + /** + * This function takes an {@link abstractLink} descendant and returns an html link + * + * @param abstractLink a descendant of abstractlink should be passed, and never text + * @param string text to display in the link + * @param boolean this parameter is not used, and is deprecated + * @param boolean determines whether the returned text is enclosed in an <a> tag + */ + function returnSee(&$element, $eltext = false, $with_a = true) + { + if (!$element) return false; + if (!$with_a) return $this->getId($element, false); + if (!$eltext) + { + $eltext = ''; + switch($element->type) + { + case 'tutorial' : + $eltext = strip_tags($element->title); + break; + case 'method' : + case 'var' : + case 'const' : + $eltext .= $element->class.'::'; + case 'page' : + case 'define' : + case 'class' : + case 'function' : + case 'global' : + default : + $eltext .= $element->name; + if ($element->type == 'function' || $element->type == 'method') $eltext .= '()'; + break; + } + } + return '<a href="'.$this->getId($element).'">'.$eltext.'</a>'; + } + + function getId($element, $fullpath = true) + { + if (phpDocumentor_get_class($element) == 'parserdata') + { + $element = $this->addLink($element->parent); + $elp = $element->parent; + } elseif (is_a($element, 'parserbase')) + { + $elp = $element; + $element = $this->addLink($element); + } + $c = ''; + if (!empty($element->subpackage)) + { + $c = '/'.$element->subpackage; + } + $b = '{$subdir}'; + switch ($element->type) + { + case 'page' : + if ($fullpath) + return $b.$element->package.$c.'/'.$element->fileAlias.'.html'; + return 'top'; + break; + case 'define' : + case 'global' : + case 'function' : + if ($fullpath) + return $b.$element->package.$c.'/'.$element->fileAlias.'.html#'.$element->type.$element->name; + return $element->type.$element->name; + break; + case 'class' : + if ($fullpath) + return $b.$element->package.$c.'/'.$element->name.'.html'; + return 'top'; + break; + case 'method' : + case 'var' : + case 'const' : + if ($fullpath) + return $b.$element->package.$c.'/'.$element->class.'.html#'.$element->type.$element->name; + return $element->type.$element->name; + break; + case 'tutorial' : + $d = ''; + if ($element->section) + { + $d = '#'.$element->section; + } + return $b.$element->package.$c.'/tutorial_'.$element->name.'.html'.$d; + } + } + + function ConvertTodoList() + { + $todolist = array(); + foreach($this->todoList as $package => $alltodos) + { + foreach($alltodos as $todos) + { + $converted = array(); + $converted['link'] = $this->returnSee($todos[0]); + if (!is_array($todos[1])) + { + $converted['todos'][] = $todos[1]->Convert($this); + } else + { + foreach($todos[1] as $todo) + { + $converted['todos'][] = $todo->Convert($this); + } + } + $todolist[$package][] = $converted; + } + } + $templ = &$this->newSmarty(); + $templ->assign('todos',$todolist); + $templ->register_outputfilter('CHMdefault_outputfilter'); + $this->setTargetDir($this->base_dir); + $this->addTOC('Todo List','todolist','Index','',false,true); + $this->addKLink('Todo List', 'todolist', '', 'Development'); + $this->writefile('todolist.html',$templ->fetch('todolist.tpl')); + } + + /** + * Convert README/INSTALL/CHANGELOG file contents to output format + * @param README|INSTALL|CHANGELOG + * @param string contents of the file + */ + function Convert_RIC($name, $contents) + { + $template = &$this->newSmarty(); + $template->assign('contents',$contents); + $template->assign('name',$name); + $this->setTargetDir($this->base_dir); + $this->addTOC($name,'ric_'.$name,'Index','',false,true); + $this->addKLink($name, 'ric_'.$name, '', 'Development'); + $this->writefile('ric_'.$name . '.html',$template->fetch('ric.tpl')); + $this->ric_set[$name] = true; + } + + /** + * Create errors.html template file output + * + * This method takes all parsing errors and warnings and spits them out ordered by file and line number. + * @global ErrorTracker We'll be using it's output facility + */ + function ConvertErrorLog() + { + global $phpDocumentor_errors; + $allfiles = array(); + $files = array(); + $warnings = $phpDocumentor_errors->returnWarnings(); + $errors = $phpDocumentor_errors->returnErrors(); + $template = &$this->newSmarty(); + foreach($warnings as $warning) + { + $file = '##none'; + $linenum = 'Warning'; + if ($warning->file) + { + $file = $warning->file; + $allfiles[$file] = 1; + $linenum .= ' on line '.$warning->linenum; + } + $files[$file]['warnings'][] = array('name' => $linenum, 'listing' => $warning->data); + } + foreach($errors as $error) + { + $file = '##none'; + $linenum = 'Error'; + if ($error->file) + { + $file = $error->file; + $allfiles[$file] = 1; + $linenum .= ' on line '.$error->linenum; + } + $files[$file]['errors'][] = array('name' => $linenum, 'listing' => $error->data); + } + $i=1; + $af = array(); + foreach($allfiles as $file => $num) + { + $af[$i++] = $file; + } + $allfiles = $af; + usort($allfiles,'strnatcasecmp'); + $allfiles[0] = "Post-parsing"; + foreach($allfiles as $i => $a) + { + $allfiles[$i] = array('file' => $a); + } + $out = array(); + foreach($files as $file => $data) + { + if ($file == '##none') $file = 'Post-parsing'; + $out[$file] = $data; + } + $template->assign("files",$allfiles); + $template->assign("all",$out); + $template->assign("title","phpDocumentor Parser Errors and Warnings"); + $this->setTargetDir($this->base_dir); + $this->writefile("errors.html",$template->fetch('errors.tpl')); + unset($template); + phpDocumentor_out("\n\nTo view errors and warnings, look at ".$this->base_dir. PATH_DELIMITER . "errors.html\n"); + flush(); + } + + function getCData($value) + { + return '<pre>'.htmlentities($value).'</pre>'; + } + + function getTutorialId($package,$subpackage,$tutorial,$id) + { + return $id; + } + + /** + * Converts package page and sets its package as used in {@link $package_pages} + * @param parserPackagePage + */ + function convertPackagepage(&$element) + { + phpDocumentor_out("\n"); + flush(); + $this->package = $element->package; + $this->subpackage = ''; + $contents = $element->Convert($this); + $this->package_pages[$element->package] = str_replace('{$subdir}','../',$contents); + phpDocumentor_out("\n"); + flush(); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package); + $this->addTOC($element->package." Tutorial",'package_'.$element->package,$element->package,''); + $this->writeFile('package_'.$element->package.'.html',str_replace('{$subdir}','../',$contents)); + $this->setTargetDir($this->base_dir); + Converter::writefile('index.html',str_replace('{$subdir}','',$contents)); + $this->addKLink($element->package." Tutorial", 'package_'.$element->package, '', 'Tutorials'); + } + + /** + * @param parserTutorial + */ + function convertTutorial(&$element) + { + phpDocumentor_out("\n"); + flush(); + $template = &parent::convertTutorial($element); + $a = '../'; + if ($element->subpackage) $a .= '../'; + $template->assign('subdir',$a); + $template->register_outputfilter('CHMdefault_outputfilter'); + $contents = $template->fetch('tutorial.tpl'); + if ($element->package == $GLOBALS['phpDocumentor_DefaultPackageName'] && empty($element->subpackage) && ($element->name == $element->package . '.pkg')) + { + $template->assign('subdir',''); + $this->setTargetDir($this->base_dir); + Converter::writefile('index.html',$template->fetch('tutorial.tpl')); + } + $a = ''; + if ($element->subpackage) $a = PATH_DELIMITER . $element->subpackage; + phpDocumentor_out("\n"); + flush(); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package . $a); + $this->addTOC($a = strip_tags($element->getTitle($this)), 'tutorial_'.$element->name, + $element->package, $element->subpackage, false, true); + $this->writeFile('tutorial_'.$element->name.'.html',$contents); + $this->addKLink($element->getTitle($this), $element->package . $a . PATH_DELIMITER . 'tutorial_'.$element->name, + '', 'Tutorials'); + } + + /** + * Converts class for template output + * @see prepareDocBlock(), generateChildClassList(), generateFormattedClassTree(), getFormattedConflicts() + * @see getFormattedInheritedMethods(), getFormattedInheritedVars() + * @param parserClass + */ + function convertClass(&$element) + { + parent::convertClass($element); + $this->class_dir = $element->docblock->package; + if (!empty($element->docblock->subpackage)) $this->class_dir .= PATH_DELIMITER . $element->docblock->subpackage; + $a = '../'; + if ($element->docblock->subpackage != '') $a = "../$a"; + + $this->class_data->assign('subdir',$a); + $this->class_data->assign("title","Docs For Class " . $element->getName()); + $this->class_data->assign("page",$element->getName() . '.html'); + $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER . $this->class, '', 'Classes'); + } + + + /** + * Converts class variables for template output + * @see prepareDocBlock(), getFormattedConflicts() + * @param parserDefine + */ + function convertVar(&$element) + { + parent::convertVar($element, array('var_dest' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir); + $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Properties'); + } + + /** + * Converts class constants for template output + * @see prepareDocBlock(), getFormattedConflicts() + * @param parserDefine + */ + function convertConst(&$element) + { + parent::convertConst($element, array('const_dest' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir); + $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Constants'); + } + + /** + * Converts class methods for template output + * @see prepareDocBlock(), getFormattedConflicts() + * @param parserDefine + */ + function convertMethod(&$element) + { + parent::convertMethod($element, array('method_dest' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir); + $this->addKLink($element->name, $this->class_dir . PATH_DELIMITER .$this->class, $this->getId($element,false), $element->class.' Methods'); + } + + /** + * Converts function for template output + * @see prepareDocBlock(), parserFunction::getFunctionCall(), getFormattedConflicts() + * @param parserFunction + */ + function convertFunction(&$element) + { + $funcloc = $this->getId($this->addLink($element)); + parent::convertFunction($element,array('function_dest' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Functions'); + } + + /** + * Converts include elements for template output + * @see prepareDocBlock() + * @param parserInclude + */ + function convertInclude(&$element) + { + parent::convertInclude($element, array('include_file' => '_'.strtr($element->getValue(),array('"' => '', "'" => '','.' => '_')))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->addKLink(str_replace('"', '', $element->getValue()), $this->page_dir . PATH_DELIMITER . $this->page, '', ucfirst($element->name)); + } + + /** + * Converts defines for template output + * @see prepareDocBlock(), getFormattedConflicts() + * @param parserDefine + */ + function convertDefine(&$element) + { + parent::convertDefine($element, array('define_link' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Constants'); + } + + /** + * Converts global variables for template output + * @param parserGlobal + */ + function convertGlobal(&$element) + { + parent::convertGlobal($element, array('global_link' => $this->getId($element,false))); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->addKLink($element->name, $this->page_dir . PATH_DELIMITER . $this->page, $this->getId($element,false), 'Global Variables'); + } + + /** + * converts procedural pages for template output + * @see prepareDocBlock(), getClassesOnPage() + * @param parserData + */ + function convertPage(&$element) + { + parent::convertPage($element); + $this->juststarted = true; + $this->page_dir = $element->parent->package; + if (!empty($element->parent->subpackage)) $this->page_dir .= PATH_DELIMITER . $element->parent->subpackage; + // registering stuff on the template + $this->page_data->assign("page",$this->getPageName($element) . '.html'); + $this->page_data->assign("title","Docs for page ".$element->parent->getFile()); + $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir); + $this->addKLink($element->parent->file, $this->page_dir . PATH_DELIMITER . $this->page, '', 'Files'); + } + + function getPageName(&$element) + { + if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName(); + return '_'.$element->parent->getName(); + } + + /** + * returns an array containing the class inheritance tree from the root object to the class + * + * @param parserClass class variable + * @return array Format: array(root,child,child,child,...,$class) + * @uses parserClass::getParentClassTree() + */ + + function generateFormattedClassTree($class) + { + $tree = $class->getParentClassTree($this); + $out = ''; + if (count($tree) - 1) + { + $result = array($class->getName()); + $parent = $tree[$class->getName()]; + $distance[] = ''; + while ($parent) + { + $x = $parent; + if (is_object($parent)) + { + $subpackage = $parent->docblock->subpackage; + $package = $parent->docblock->package; + $x = $parent; + $x = $parent->getLink($this); + if (!$x) $x = $parent->getName(); + } + $result[] = + $x; + $distance[] = + "\n%s|\n" . + "%s--"; + if (is_object($parent)) + $parent = $tree[$parent->getName()]; + elseif (isset($tree[$parent])) + $parent = $tree[$parent]; + } + $nbsp = ' '; + for($i=count($result) - 1;$i>=0;$i--) + { + $my_nbsp = ''; + for($j=0;$j<count($result) - $i;$j++) $my_nbsp .= $nbsp; + $distance[$i] = sprintf($distance[$i],$my_nbsp,$my_nbsp); + } + return array('classes'=>array_reverse($result),'distance'=>array_reverse($distance)); + } else + { + return array('classes'=>$class->getName(),'distance'=>array('')); + } + } + + /** @access private */ + function sortVar($a, $b) + { + return strnatcasecmp($a->getName(),$b->getName()); + } + + /** @access private */ + function sortMethod($a, $b) + { + if ($a->isConstructor) return -1; + if ($b->isConstructor) return 1; + return strnatcasecmp($a->getName(),$b->getName()); + } + + /** + * returns a template-enabled array of class trees + * + * @param string $package package to generate a class tree for + * @see $roots, HTMLConverter::getRootTree() + */ + function generateFormattedClassTrees($package) + { + if (!isset($this->roots['normal'][$package]) && + !isset($this->roots['special'][$package])) { + return array(); + } + $trees = array(); + if (isset($this->roots['normal'][$package])) { + $roots = $this->roots['normal'][$package]; + for($i=0;$i<count($roots);$i++) + { + $root = $this->classes->getClassByPackage($roots[$i], $package); + if ($root && $root->isInterface()) { + continue; + } + $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n"); + } + } + if (isset($this->roots['special'][$package])) { + $roots = $this->roots['special'][$package]; + foreach ($roots as $parent => $classes) { + $thistree = ''; + foreach ($classes as $classinfo) { + $root = $this->classes->getClassByPackage($classinfo, $package); + if ($root && $root->isInterface()) { + continue; + } + $thistree .= + $this->getRootTree( + $this->getSortedClassTreeFromClass( + $classinfo, + $package, + ''), + $package, + true); + } + if (!$thistree) { + continue; + } + $trees[] = array( + 'class' => $parent, + 'class_tree' => "<ul>\n" . $thistree . "</ul>\n" + ); + } + } + return $trees; + } + + /** + * returns a template-enabled array of interface inheritance trees + * + * @param string $package package to generate a class tree for + * @see $roots, HTMLConverter::getRootTree() + */ + function generateFormattedInterfaceTrees($package) + { + if (!isset($this->roots['normal'][$package]) && + !isset($this->roots['special'][$package])) { + return array(); + } + $trees = array(); + if (isset($this->roots['normal'][$package])) { + $roots = $this->roots['normal'][$package]; + for($i=0;$i<count($roots);$i++) + { + $root = $this->classes->getClassByPackage($roots[$i], $package); + if ($root && !$root->isInterface()) { + continue; + } + $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n"); + } + } + if (isset($this->roots['special'][$package])) { + $roots = $this->roots['special'][$package]; + foreach ($roots as $parent => $classes) { + $thistree = ''; + foreach ($classes as $classinfo) { + $root = $this->classes->getClassByPackage($classinfo, $package); + if ($root && !$root->isInterface()) { + continue; + } + $thistree .= + $this->getRootTree( + $this->getSortedClassTreeFromClass( + $classinfo, + $package, + ''), + $package, + true); + } + if (!$thistree) { + continue; + } + $trees[] = array( + 'class' => $parent, + 'class_tree' => "<ul>\n" . $thistree . "</ul>\n" + ); + } + } + return $trees; + } + + /** + * return formatted class tree for the Class Trees page + * + * @param array $tree output from {@link getSortedClassTreeFromClass()} + * @param string $package package + * @param boolean $nounknownparent if true, an object's parent will not be checked + * @see Classes::$definitechild, generateFormattedClassTrees() + * @return string + */ + function getRootTree($tree, $package, $noparent = false) + { + if (!$tree) return ''; + $my_tree = ''; + $cur = '#root'; + $lastcur = array(false); + $kids = array(); + $dopar = false; + if (!$noparent && $tree[$cur]['parent']) + { + $dopar = true; + if (!is_object($tree[$cur]['parent'])) + { +// debug("parent ".$tree[$cur]['parent']." not found"); + $my_tree .= '<li>' . $tree[$cur]['parent'] .'<ul>'; + } + else + { +// debug("parent ".$this->returnSee($tree[$cur]['parent'])." in other package"); + $my_tree .= '<li>' . $this->returnSee($tree[$cur]['parent']); + if ($tree[$cur]['parent']->package != $package) $my_tree .= ' <b>(Different package)</b><ul>'; + } + } + do + { +// fancy_debug($cur,$lastcur,$kids); + if (count($tree[$cur]['children'])) + { +// debug("$cur has children"); + if (!isset($kids[$cur])) + { +// debug("set $cur kids"); + $kids[$cur] = 1; + $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']); + $my_tree .= '<ul>'."\n"; + } + array_push($lastcur,$cur); + list(,$cur) = each($tree[$cur]['children']); +// var_dump('listed',$cur); + if ($cur) + { + $cur = $cur['package'] . '#' . $cur['class']; +// debug("set cur to child $cur"); +// $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']); + continue; + } else + { +// debug("end of children for $cur"); + $cur = array_pop($lastcur); + $cur = array_pop($lastcur); + $my_tree .= '</ul></li>'."\n"; + if ($dopar && ($cur == '#root' || !$cur)) $my_tree .= '</ul></li>'; + } + } else + { +// debug("$cur has no children"); + $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link'])."</li>"; + if ($dopar && $cur == '#root') $my_tree .= '</ul></li>'; + $cur = array_pop($lastcur); + } + } while ($cur); + return $my_tree; + } + /** + * Generate indexing information for given element + * + * @param parserElement descendant of parserElement + * @see generateElementIndex() + * @return array + */ + function getIndexInformation($elt) + { + $Result['type'] = $elt->type; + $Result['file_name'] = $elt->file; + $Result['path'] = $elt->getPath(); + + if (isset($elt->docblock)) + { + $Result['description'] = $elt->docblock->getSDesc($this); + + if ($elt->docblock->hasaccess) + $Result['access'] = $elt->docblock->tags['access'][0]->value; + else + $Result['access'] = 'public'; + + $Result['abstract'] = isset ($elt->docblock->tags['abstract'][0]); + } + else + $Result['description'] = ''; + + $aa = $Result['description']; + if (!empty($aa)) $aa = "<br> $aa"; + + switch($elt->type) + { + case 'class': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Class'; + $Result['link'] = $this->getClassLink($elt->getName(), + $elt->docblock->package, + $elt->getPath(), + $elt->getName()); + $Result['listing'] = 'in file '.$elt->file.', class '.$Result['link']."$aa"; + break; + case 'define': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Constant'; + $Result['link'] = $this->getDefineLink($elt->getName(), + $elt->docblock->package, + $elt->getPath(), + $elt->getName()); + $Result['listing'] = 'in file '.$elt->file.', constant '.$Result['link']."$aa"; + break; + case 'global': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Global'; + $Result['link'] = $this->getGlobalLink($elt->getName(), + $elt->docblock->package, + $elt->getPath(), + $elt->getName()); + $Result['listing'] = 'in file '.$elt->file.', global variable '.$Result['link']."$aa"; + break; + case 'function': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Function'; + $Result['link'] = $this->getFunctionLink($elt->getName(), + $elt->docblock->package, + $elt->getPath(), + $elt->getName().'()'); + $Result['listing'] = 'in file '.$elt->file.', function '.$Result['link']."$aa"; + break; + case 'method': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Method'; + $Result['link'] = $this->getMethodLink($elt->getName(), + $elt->class, + $elt->docblock->package, + $elt->getPath(), + $elt->class.'::'.$elt->getName().'()' + ); + if ($elt->isConstructor) $Result['constructor'] = 1; + $Result['listing'] = 'in file '.$elt->file.', method '.$Result['link']."$aa"; + break; + case 'var': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Variable'; + $Result['link'] = $this->getVarLink($elt->getName(), + $elt->class, + $elt->docblock->package, + $elt->getPath(), + $elt->class.'::'.$elt->getName()); + $Result['listing'] = 'in file '.$elt->file.', variable '.$Result['link']."$aa"; + break; + case 'const': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Variable'; + $Result['link'] = $this->getConstLink($elt->getName(), + $elt->class, + $elt->docblock->package, + $elt->getPath(), + $elt->class.'::'.$elt->getName()); + $Result['listing'] = 'in file '.$elt->file.', class constant '.$Result['link']."$aa"; + break; + case 'page': + $Result['name'] = $elt->getFile(); + $Result['title'] = 'Page'; + $Result['link'] = $this->getPageLink($elt->getFile(), + $elt->package, + $elt->getPath(), + $elt->getFile()); + $Result['listing'] = 'procedural page '.$Result['link']; + break; + case 'include': + $Result['name'] = $elt->getName(); + $Result['title'] = 'Include'; + $Result['link'] = $elt->getValue(); + $Result['listing'] = 'include '.$Result['name']; + break; + } + + return $Result; + } + /** + * Generate alphabetical index of all elements + * + * @see $elements, walk() + */ + function generateElementIndex() + { + $elementindex = array(); + $letters = array(); + $used = array(); + foreach($this->elements as $letter => $nutoh) + { + foreach($this->elements[$letter] as $i => $yuh) + { + if ($this->elements[$letter][$i]->type != 'include') + { + if (!isset($used[$letter])) + { + $letters[]['letter'] = $letter; + $elindex['letter'] = $letter; + $used[$letter] = 1; + } + + $elindex['index'][] = $this->getIndexInformation($this->elements[$letter][$i]); + } + } + if (isset($elindex['index'])) + { + $elementindex[] = $elindex; + } else + { + unset($letters[count($letters) - 1]); + } + $elindex = array(); + } + return array($elementindex,$letters); + } + + function setTemplateDir($dir) + { + Converter::setTemplateDir($dir); + $this->smarty_dir = $this->templateDir; + } + + function copyMediaRecursively($media,$targetdir,$subdir = '') + { + $versionControlDirectories = array ('CVS', 'media/CVS', 'media\\CVS', '.svn', 'media/.svn', 'media\\.svn'); + if (!is_array($media)) { + return; + } + foreach($media as $dir => $files) + { + if ($dir === '/') + { + $this->copyMediaRecursively($files,$targetdir); + } else + { + if (!is_numeric($dir)) + { + if (in_array($dir, $versionControlDirectories)) + { + // skip it entirely + } + else + { + // create the subdir + phpDocumentor_out("creating $targetdir" . PATH_DELIMITER . "$dir\n"); + Converter::setTargetDir($targetdir . PATH_DELIMITER . $dir); + if (!empty($subdir)) + { + $subdir .= PATH_DELIMITER; + } + $this->copyMediaRecursively($files,"$targetdir/$dir",$subdir . $dir); + } + } + else + { + // copy the file + phpDocumentor_out("copying $targetdir" . PATH_DELIMITER . $files['file']."\n"); + $this->copyFile($files['file'],$subdir); + } + } + } + } + + /** + * calls the converter setTargetDir, and then copies any template images and the stylesheet if they haven't been copied + * @see Converter::setTargetDir() + */ + function setTargetDir($dir) + { + Converter::setTargetDir($dir); + if ($this->wrote) return; + $this->wrote = true; + $template_images = array(); + $stylesheets = array(); + $tdir = $dir; + $dir = $this->templateDir; + $this->templateDir = $this->templateDir.'templates/'; + $info = new Io; + $this->copyMediaRecursively($info->getDirTree($this->templateDir.'media',$this->templateDir),$tdir); + } + + /** + * Generate alphabetical index of all elements by package and subpackage + * + * @param string $package name of a package + * @see $pkg_elements, walk(), generatePkgElementIndexes() + */ + function generatePkgElementIndex($package) + { +// var_dump($this->pkg_elements[$package]); + $elementindex = array(); + $letters = array(); + $letterind = array(); + $used = array(); + $subp = ''; + foreach($this->pkg_elements[$package] as $subpackage => $els) + { + if (empty($els)) continue; + if (!empty($subpackage)) $subp = " (<b>subpackage:</b> $subpackage)"; else $subp = ''; + foreach($els as $letter => $yuh) + { + foreach($els[$letter] as $i => $yuh) + { + if ($els[$letter][$i]->type != 'include') + { + if (!isset($used[$letter])) + { + $letters[]['letter'] = $letter; + $letterind[$letter] = count($letters) - 1; + $used[$letter] = 1; + } + $elindex[$letter]['letter'] = $letter; + + $elindex[$letter]['index'][] = $this->getIndexInformation($els[$letter][$i]); + } + } + } + } + ksort($elindex); + usort($letters,'CHMdefault_lettersort'); + if (isset($elindex)) + { + while(list($letter,$tempel) = each($elindex)) + { + if (!isset($tempel)) + { + unset($letters[$letterind[$tempel['letter']]]); + } else + $elementindex[] = $tempel; + } + } else $letters = array(); + return array($elementindex,$letters); + } + + /** + * + * @see generatePkgElementIndex() + */ + function generatePkgElementIndexes() + { + $packages = array(); + $package_names = array(); + $pkg = array(); + $letters = array(); + foreach($this->pkg_elements as $package => $trash) + { + $pkgs['package'] = $package; + $pkg['package'] = $package; + list($pkg['pindex'],$letters[$package]) = $this->generatePkgElementIndex($package); + if (count($pkg['pindex'])) + { + $packages[] = $pkg; + $package_names[] = $pkgs; + } + unset($pkgs); + unset($pkg); + } + foreach($packages as $i => $package) + { + $pnames = array(); + for($j=0;$j<count($package_names);$j++) + { + if ($package_names[$j]['package'] != $package['package']) $pnames[] = $package_names[$j]; + } + $packages[$i]['packageindexes'] = $pnames; + } + return array($packages,$package_names,$letters); + } + + /** + * @param string name of class + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the class's documentation + * @see parent::getClassLink() + */ + function getClassLink($expr,$package, $file = false,$text = false, $with_a = true) + { + $a = Converter::getClassLink($expr,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text, $with_a); + } + + /** + * @param string name of function + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the function's documentation + * @see parent::getFunctionLink() + */ + function getFunctionLink($expr,$package, $file = false,$text = false) + { + $a = Converter::getFunctionLink($expr,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of define + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the define's documentation + * @see parent::getDefineLink() + */ + function getDefineLink($expr,$package, $file = false,$text = false) + { + $a = Converter::getDefineLink($expr,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of global variable + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the global variable's documentation + * @see parent::getGlobalLink() + */ + function getGlobalLink($expr,$package, $file = false,$text = false) + { + $a = Converter::getGlobalLink($expr,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of procedural page + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the procedural page's documentation + * @see parent::getPageLink() + */ + function getPageLink($expr,$package, $path = false,$text = false) + { + $a = Converter::getPageLink($expr,$package,$path); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of method + * @param string class containing method + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the method's documentation + * @see parent::getMethodLink() + */ + function getMethodLink($expr,$class,$package, $file = false,$text = false) + { + $a = Converter::getMethodLink($expr,$class,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of var + * @param string class containing var + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the var's documentation + * @see parent::getVarLink() + */ + function getVarLink($expr,$class,$package, $file = false,$text = false) + { + $a = Converter::getVarLink($expr,$class,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * @param string name of class constant + * @param string class containing class constant + * @param string package name + * @param string full path to look in (used in index generation) + * @param boolean deprecated + * @param boolean return just the URL, or enclose it in an html a tag + * @return mixed false if not found, or an html a link to the var's documentation + * @see parent::getVarLink() + */ + function getConstLink($expr,$class,$package, $file = false,$text = false) + { + $a = Converter::getConstLink($expr,$class,$package,$file); + if (!$a) return false; + return $this->returnSee($a, $text); + } + + /** + * does a nat case sort on the specified second level value of the array + * + * @param mixed $a + * @param mixed $b + * @return int + */ + function rcNatCmp ($a, $b) + { + $aa = strtoupper($a[$this->rcnatcmpkey]); + $bb = strtoupper($b[$this->rcnatcmpkey]); + + return strnatcasecmp($aa, $bb); + } + + /** + * does a nat case sort on the specified second level value of the array. + * this one puts constructors first + * + * @param mixed $a + * @param mixed $b + * @return int + */ + function rcNatCmp1 ($a, $b) + { + $aa = strtoupper($a[$this->rcnatcmpkey]); + $bb = strtoupper($b[$this->rcnatcmpkey]); + + if (strpos($aa,'CONSTRUCTOR') === 0) + { + return -1; + } + if (strpos($bb,'CONSTRUCTOR') === 0) + { + return 1; + } + if (strpos($aa,strtoupper($this->class)) === 0) + { + return -1; + } + if (strpos($bb,strtoupper($this->class)) === 0) + { + return -1; + } + return strnatcasecmp($aa, $bb); + } + + /** + * Write a file to disk, and add it to the {@link $hhp_files} list of files + * to include in the generated CHM + * + * {@source} + */ + function writefile($file,$contents) + { + $this->addHHP($this->targetDir . PATH_DELIMITER . $file); + Converter::writefile($file,$contents); + } + + /** + * @uses $hhp_files creates the array by adding parameter $file + */ + function addHHP($file) + { + $file = str_replace($this->base_dir . PATH_DELIMITER, '', $file); + $file = str_replace('\\',PATH_DELIMITER,$file); + $file = str_replace('//',PATH_DELIMITER,$file); + $file = str_replace(PATH_DELIMITER,'\\',$file); + $this->hhp_files[]['name'] = $file; + } + + function generateTOC() + { + $comppack = ''; + $templ = &$this->newSmarty(); + foreach($this->TOC as $package => $TOC1) + { + $comp_subs = ''; + $comp_subs1 = false; + foreach($TOC1 as $subpackage => $types) + { + $comp_types = ''; + foreach($types as $type => $files) + { + $comp = ''; + $templ1 = &$this->newSmarty(); + $templ1->assign('entry', array()); + foreach($files as $file) + { + // use book icon for classes + if ($type == 'Classes') { + $templ1->append('entry', array('paramname' => $file[0],'outputfile' => $file[1],'isclass' => 1)); + } else { + $templ1->append('entry', array('paramname' => $file[0],'outputfile' => $file[1])); + } + } + $templ = &$this->newSmarty(); + $templ->assign('tocsubentries',$templ1->fetch('tocentry.tpl')); + $templ->assign('entry', array(array('paramname' => $type))); + $comp_types .= $templ->fetch('tocentry.tpl'); + } + if (!empty($subpackage)) + { + $templ = &$this->newSmarty(); + $templ->assign('tocsubentries',$comp_types); + $templ->assign('entry', array(array('paramname' => $subpackage))); + $comp_subs .= $templ->fetch('tocentry.tpl'); + } else + { + $comp_subs1 = $comp_types; + } + } + if ($comp_subs1) + $templ->assign('tocsubentries',$comp_subs1); + if (!empty($comp_subs)) + $templ->assign('entry', array(array('paramname' => $package, 'tocsubentries' => $comp_subs))); + else + $templ->assign('entry', array(array('paramname' => $package))); + $comppack .= $templ->fetch('tocentry.tpl'); + } + return $comppack; + } + + function addSourceTOC($name, $file, $package, $subpackage, $source = false) + { + $file = str_replace($this->base_dir . PATH_DELIMITER, '', $this->targetDir) + . PATH_DELIMITER . $file . '.html'; + $file = str_replace('\\',PATH_DELIMITER,$file); + $file = str_replace('//',PATH_DELIMITER,$file); + $file = str_replace(PATH_DELIMITER,'\\',$file); + $sub = $source ? 'Source Code' : 'Examples'; + $this->TOC[$package][$subpackage][$sub][] = array($name, $file); + } + + function addTOC($name,$file,$package,$subpackage,$class = false,$tutorial = false) + { + $file = str_replace($this->base_dir . PATH_DELIMITER, '', $this->targetDir . PATH_DELIMITER) + . $file . '.html'; + $file = str_replace('\\',PATH_DELIMITER,$file); + $file = str_replace('//',PATH_DELIMITER,$file); + $file = str_replace(PATH_DELIMITER,'\\',$file); + $file = str_replace($this->base_dir . '\\', '', $file); + $sub = $class ? 'Classes' : 'Files'; + if ($tutorial) $sub = 'Manual'; + $this->TOC[$package][$subpackage][$sub][] = array($name,$file); + } + + /** + * Add an item to the index.hhk file + * @param string $name index entry name + * @param string $file filename containing index + * @param string $bookmark html anchor of location in file, if any + * @param string $group group this entry with a string + * @uses $KLinks tracks the index + * @author Andrew Eddie <eddieajau@users.sourceforge.net> + */ + function addKLink($name, $file, $bookmark='', $group='') + { + $file = $file . '.html'; + $file = str_replace('\\',PATH_DELIMITER,$file); + $file = str_replace('//',PATH_DELIMITER,$file); + $file = str_replace(PATH_DELIMITER,'\\',$file); +// debug("added $name, $file, $bookmark, $group "); + $link = $file; + $link .= $bookmark ? "#$bookmark" :''; + if ($group) { + $this->KLinks[$group]['grouplink'] = $file; + $this->KLinks[$group][] = array($name,$link); + } + $this->KLinks[] = array($name,$link); + } + + /** + * Get the table of contents for index.hhk + * @return string contents of tocentry.tpl generated from $KLinks + * @author Andrew Eddie <eddieajau@users.sourceforge.net> + */ + function generateKLinks() + { + $templ = &$this->newSmarty(); + $templ->assign('entry', array()); + foreach($this->KLinks as $group=>$link) + { + if (isset($link['grouplink'])) { + $templg = &$this->newSmarty(); + $templg->assign('entry', array()); + foreach($link as $k=>$sublink) + { + if ($k != 'grouplink') { + $templg->append('entry', array('paramname' => $sublink[0],'outputfile' => $sublink[1])); + } + } + $templ->append('entry', array('paramname' => $group, 'outputfile' => $link['grouplink'], 'tocsubentries' => $templg->fetch('tocentry.tpl') )); + } else { + $templ->append('entry', array('paramname' => $link[0],'outputfile' => $link[1])); + } + } + return $templ->fetch('tocentry.tpl'); + } + + /** + * Create the phpdoc.hhp, contents.hhc files needed by MS HTML Help Compiler + * to create a CHM file + * + * The output function generates the table of contents (contents.hhc) + * and file list (phpdoc.hhp) files used to create a .CHM by the + * free MS HTML Help compiler. + * {@internal + * Using {@link $hhp_files}, a list of all separate .html files + * is created in CHM format, and written to phpdoc.hhp. This list was + * generated by {@link writefile}. + * + * Next, a call to the table of contents: + * + * {@source 12 2} + * + * finishes things off}} + * @todo use to directly call html help compiler hhc.exe + * @link http://www.microsoft.com/downloads/release.asp?releaseid=33071 + * @uses generateTOC() assigns to the toc template variable + */ + function Output() + { + $templ = &$this->newSmarty(); + $templ->assign('files',$this->hhp_files); + $this->setTargetDir($this->base_dir); + Converter::writefile('phpdoc.hhp',$templ->fetch('hhp.tpl')); + $templ = &$this->newSmarty(); + $templ->assign('toc',$this->generateTOC()); + Converter::writefile('contents.hhc',$templ->fetch('contents.hhc.tpl')); + $templ->assign('klinks',$this->generateKLinks()); + Converter::writefile('index.hhk',$templ->fetch('index.hhk.tpl')); + phpDocumentor_out("NOTE: to create the documentation.chm file, you must now run Microsoft Help Workshop on phpdoc.hhp\n"); + phpDocumentor_out("To get the free Microsoft Help Workshop, browse to: http://go.microsoft.com/fwlink/?LinkId=14188\n"); + flush(); + } +} + +/** + * @access private + * @global string name of the package to set as the first package + */ +function CHMdefault_pindexcmp($a, $b) +{ + global $phpDocumentor_DefaultPackageName; + if ($a['title'] == $phpDocumentor_DefaultPackageName) return -1; + if ($b['title'] == $phpDocumentor_DefaultPackageName) return 1; + return strnatcasecmp($a['title'],$b['title']); +} + +/** @access private */ +function CHMdefault_lettersort($a, $b) +{ + return strnatcasecmp($a['letter'],$b['letter']); +} + +/** @access private */ +function CHMdefault_outputfilter($src, &$smarty) +{ + return str_replace('{$subdir}',$smarty->_tpl_vars['subdir'],$src); +} +?> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini new file mode 100755 index 00000000..cae1952d --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini @@ -0,0 +1,507 @@ +preservedocbooktags = false + +;; used to highlight the {@source} inline tag, @filesource tag, and @example tag +[highlightSourceTokens] +;; format: +;; T_CONSTANTNAME = open +;; /T_CONSTANTNAME = close +T_ABSTRACT = <font color="blue"> +/T_ABSTRACT = </font> +T_CLONE = <font color="blue"> +/T_CLONE = </font> +T_HALT_COMPILER = <font color="red"> +/T_HALT_COMPILER = </font> +T_PUBLIC = <font color="blue"> +/T_PUBLIC = </font> +T_PRIVATE = <font color="blue"> +/T_PRIVATE = </font> +T_PROTECTED = <font color="blue"> +/T_PROTECTED = </font> +T_FINAL = <font color="blue"> +/T_FINAL = </font> +T_IMPLEMENTS = <font color="blue"> +/T_IMPLEMENTS = </font> +T_CLASS = <font color="blue"> +/T_CLASS = </font> +T_INTERFACE = <font color="blue"> +/T_INTERFACE = </font> +T_INCLUDE = <font color="blue"> +/T_INCLUDE = </font> +T_INCLUDE_ONCE = <font color="blue"> +/T_INCLUDE_ONCE = </font> +T_REQUIRE_ONCE = <font color="blue"> +/T_REQUIRE_ONCE = </font> +T_FUNCTION = <font color="blue"> +/T_FUNCTION = </font> +T_VARIABLE = <strong> +/T_VARIABLE = </strong> +T_CONSTANT_ENCAPSED_STRING = <font color="#66cccc"> +/T_CONSTANT_ENCAPSED_STRING = </font> +T_COMMENT = <font color="green"> +/T_COMMENT = </font> +T_OBJECT_OPERATOR = <strong> +/T_OBJECT_OPERATOR = </strong> +T_RETURN = <font color="blue"> +/T_RETURN = </font> +T_STATIC = <font color="blue"> +/T_STATIC = </font> +T_SWITCH = <font color="blue"> +/T_SWITCH = </font> +T_IF = <font color="blue"> +/T_IF = </font> +T_FOREACH = <font color="blue"> +/T_FOREACH = </font> +T_FOR = <font color="blue"> +/T_FOR = </font> +T_VAR = <font color="blue"> +/T_VAR = </font> +T_EXTENDS = <font color="blue"> +/T_EXTENDS = </font> +T_RETURN = <font color="blue"> +/T_RETURN = </font> +T_GLOBAL = <font color="blue"> +/T_GLOBAL = </font> +T_DOUBLE_COLON = <strong> +/T_DOUBLE_COLON = </strong> +T_OBJECT_OPERATOR = <strong> +/T_OBJECT_OPERATOR = </strong> +T_OPEN_TAG = <strong> +/T_OPEN_TAG = </strong> +T_CLOSE_TAG = <strong> +/T_CLOSE_TAG = </strong> + +[highlightSource] +;; this is for highlighting things that aren't tokens like "&" +;; format: +;; word = open +;; /word = close +@ = <strong> +/@ = </strong> +& = <strong> +/& = </strong> +[ = <strong> +/[ = </strong> +] = <strong> +/] = </strong> +! = <strong> +/! = </strong> +";" = <strong> +/; = </strong> +( = <strong> +/( = </strong> +) = <strong> +/) = </strong> +, = <strong> +/, = </strong> +{ = <strong> +/{ = </strong> +} = <strong> +/} = </strong> +""" = <font color="#66cccc"> +/" = </font> + +[highlightDocBlockSourceTokens] +;; this is for docblock tokens, using by phpDocumentor_HighlightParser +;; tagphptype is for "string" in @param string description, for example +docblock = <font color="#009999"> +/docblock = </font> +tagphptype = <em> +/tagphptype = </em> +tagvarname = <strong> +/tagvarname = </strong> +coretag = <strong><font color = "#0099FF"> +/coretag = </font></strong> +tag = <strong><font color="#009999"> +/tag = </font></strong> +inlinetag = <em><font color="#0099FF"> +/inlinetag = </font></em> +internal = <em><font color = "#6699cc"> +/internal = </font></em> +closetemplate = <strong><font color="blue"> +/closetemplate = </font></strong> +docblocktemplate = <font color="blue"> +/docblocktemplate = </font color="blue"> + +[highlightTutorialSourceTokens] +;; this is for XML DocBook-based tutorials, highlighted by phpDocumentor_TutorialHighlightParser +;; <tag> +opentag = <span class="tute-tag"> +/opentag = </span> +;; </tag> +closetag = <span class="tute-tag"> +/closetag = </span> +;; <tag attribute="value"> +attribute = <span class="tute-attribute-name"> +/attribute = </span> +;; <tag attribute="value"> +attributevalue = <span class="tute-attribute-value"> +/attributevalue = </span> +;; &entity; +entity = <span class="tute-entity"> +/entity = </span> +;; <!-- comment --> +comment = <span class="tute-comment"> +/comment = </span> +;; {@inline tag} +itag = <span class="tute-inline-tag"> +/itag = </span> + +;; used for translation of html in DocBlocks +[desctranslate] +ul = <ul> +/ul = </ul> +ol = <ol> +/ol = </ol> +li = <li> +/li = </li> +code = +/code = +var = <var> +/var = </var> +samp = <samp> +/samp = </samp> +kbd = <kbd> +/kbd = </kbd> +pre = <pre> +/pre = </pre> +p = <p> +/p = </p> +b = <strong> +/b = </strong> +i = <em> +/i = </em> +br = <br /> + +[ppage] +;; this is the DocBook package page translation section. All DocBook tags +;; that have a corresponding html tag must be listed here +;; +;; examples: +;; 1) +;; tagname = newtagname +;; +;; This is the simplest case, where all attributes will be added into the +;; starting tag and the ending tag will be html/xml style </tranlatedtagname> +;; <tagname></tagname> becomes <newtagname></newtagname> and +;; <tagname attr="value"></tagname> becomes +;; <newtagname attr="value"></newtagname> +;; +;; 2) +;; tagname = newtagname +;; tagname->attr = newattrname +;; +;; in this case, everything will be like the first case, except tags like: +;; <tagname attr="value"></tagname> will become +;; <newtagname newattrname="value"></newtagname> +;; +;; 3) +;; tagname = newtagname +;; tagname->attr = newattrname +;; tagname->attr+value = newvalue +;; +;; in this case, the value is also translated to another. This can be useful +;; for instances such as focus="middle" changing to align="center" or something +;; of that nature. +;; <tagname attr="value"></tagname> will become +;; <newtagname newattrname="newvalue"></newtagname> +;; +;; 4) +;; tagname = newtagname +;; tagname->attr1 = newattrname +;; tagname->attr2 = newattrname +;; tagname->attr1+value|attr2+value = newvalue +;; +;; in this case, two attributes combine to make one new attribute, and the combined +;; value is translated into a new value +;; <tagname attr1="value1" attr2="value2"></tagname> will become +;; <newtagname newattrname="newvalue"></newtagname> +;; +;; 5) +;; tagname = newtagname +;; tagname!attr = dummy +;; +;; here, the attribute will be ignored. dummy is not used and may be any value +;; <tagname attr="value"></tagname> will become +;; <newtagname></newtagname> +;; +;; 6) +;; tagname = newtagname +;; tagname! = dummy +;; +;; here, all attributes will be ignored. dummy is not used and may be any value +;; <tagname attr1="value" attr2="foo"></tagname> will become +;; <newtagname></newtagname> +;; +;; 7) +;; tagname = newtagname +;; tagname/ = 1 +;; +;; here, the tag will be translated as a single tag with no closing tag, and all +;; attributes +;; <tagname attr="val">{text text}</tagname> will become +;; <newtagname attr="val" /> +;; +;; 8) +;; tagname = <starttaginfo /> +;; /tagname = closetagtext +;; +;; in this case, the text <starttaginfo> will be inserted exactly as entered for +;; <tagname> and closetagtext for </tagname> +;; <tagname attr="val"></tagname> will become +;; <starttaginfo />closetagtext +;; +;; 9) +;; $attr$my_attribute = newattrname +;; +;; tagname = newtagname +;; +;; in this case, all occurences of my_attribute in any tag will be changed to +;; newattrname. This is useful for changing things like role="php" to +;; class="php," for example. Note that the text "$attr$" MUST be on the line +;; start for phpDocumentor to recognize it. +;; +;; 10) +;; &entity; = translation text +;; " = " +;; " = """ +;; < = < +;; +;; Use this to control translation of entities to their appropriate values + + = +" = " +” = ” +“ = “ +& = & +< = < +> = > +© = © + +$attr$role = class + +abbrev = abbr + +blockquote = blockquote + +arg = span +arg->choice = class + +author = <font size="-1"><strong>by <em> +/author = </em></strong></font> +author! = 0 + +authorblurb = blockquote + +authorgroup = <strong>Authors:</strong><br /> +/authorgroup = +authorgroup! = 0 + +caution = <table border="1"><th align="center">Caution</th><tr><td> +/caution = </td></tr></table> +caution! = 0 + +command = <b class="cmd"> +/command = </b> + +cmdsynopsis = <div id="cmdsynopsis"> +/cmdsynopsis = </div> + +copyright = <em> +/copyright = </em><br /> + +emphasis = strong + +example = <table class="example" width="100%" border="1"><tr><td> +/example = </td></tr></table> +example! = 0 + +function = +/function = () + +formalpara = p + +graphic = img +graphic->fileref = src +graphic/ = + +important = u + +informalequation = blockquote + +informalexample = pre + +inlineequation = em + +itemizedlist = ul + +listitem = li + +literal = code + +literallayout = pre + +option = " " +/option = + +orderedlist = ol + +para = p + +programlisting = <table border="0" bgcolor="#E0E0E0" cellpadding="5"><tr><td><div class="src-code"> +/programlisting = </div></td></tr></table> +programlisting! = 0 + +refentry = div + +refnamediv = <div class="refname"> +/refnamediv = </div> +refnamediv! = 0 + +refname = h1 + +refpurpose = <h2 class="refpurpose"><em> +/refpurpose = </em></h2> + +refsynopsisdiv = <div class="refsynopsis"> +/refsynopsisdiv = </div> +refsynopsisdiv! = 0 + +refsect1 = span + +refsect2 = +/refsect2 = <hr /> + +refsect3 = +/refsect3 = <br /> + +releaseinfo = ( +/releaseinfo = )<br /> + +simpara = +/simpara = <br /> +simpara! = 0 + +subscript = sub + +superscript = super + +table = table + +table->colsep = rules +table->rowsep = rules +table->colsep+1|rowsep+1 = all +table->colsep+1|rowsep+0 = cols +table->colsep+0|rowsep+1 = rows + +table->frame = frame +table->frame+all = border +table->frame+none = void +table->frame+sides = vsides +table->frame+top = above +table->frame+topbot = hsides + +thead = thead + +tfoot = tfoot + +tbody = tbody + +colspec = col + +tgroup = colgroup +tgroup/ = 1 +tgroup->cols = span + +row = tr + +entry = td +entry->morerows = colspan +entry->morerows+1 = 2 +entry->morerows+2 = 3 +entry->morerows+3 = 4 +entry->morerows+4 = 5 +entry->morerows+5 = 6 +entry->morerows+6 = 7 +entry->morerows+7 = 8 +entry->morerows+8 = 9 +entry->morerows+9 = 10 +entry->morerows+10 = 11 +;; add more if you need more colspans + +warning = <table border="1"><tr><td> +/warning = </td></tr></table> +warning! = 0 + +;; now begins the attributes that should be tags in cdata +[$attr$id] +open = a +;close = /a +cdata! = true +quotevalues = true +separator = "=" +;separateall = true +$id = name + +;; now begins the sections that deal with <title> +[refsynopsisdiv_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <h1 class="title" align="center"> +close = </h1> + +[refsect1_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <h2 class="title" align="center"> +close = </h1> + +[refsect2_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <h2 class="title" align="center"> +close = </h2> + +[refsect3_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <h3 class="title" align="center"> +close = </h3> + +[para_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <strong class="title" align="center"> +close = </strong> + +[formalpara_title] +;tag_attr = true +;attr_name = title +cdata_start = true +;cdata_end = true +open = <strong class="title" align="center"> +close = </strong> + +[example_title] +;tag_attr = true +;attr_name = title +;cdata_start = true +cdata_end = true +open = </td></tr><tr><td><strong> +close = </strong> + +[table_title] +;tag_attr = true +;attr_name = true +cdata_start = true +open = <caption> +close = </caption> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl new file mode 100755 index 00000000..29a27593 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl @@ -0,0 +1,21 @@ +{section name=letter loop=$letters} + <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a> +{/section} +<table> +{section name=index loop=$index} +<tr><td colspan = "2"><a name="{$index[index].letter}"> </a> +<a href="#top">top</a><br> +<TABLE CELLPADDING='3' CELLSPACING='0' WIDTH='100%' CLASS="border"> + <TR CLASS='TableHeadingColor'> + <TD> + <FONT SIZE='+2'><B>{$index[index].letter}</B></FONT> + </TD> + </TR> +</TABLE> +</td></tr> + {section name=contents loop=$index[index].index} + <tr><td><b>{$index[index].index[contents].name}</b></td><td width="100%" align="left" valign="top">{$index[index].index[contents].listing}</td></tr> + {/section} +{/section} +</table> + diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl new file mode 100755 index 00000000..6a05f27e --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl @@ -0,0 +1,13 @@ +<html> +<head> + <title>{$maintitle}</title> + <link rel="stylesheet" href="{$subdir}media/stylesheet.css" /> + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/> +</head> +<body> +<div align="center"><h1>{$maintitle}</h1></div> +<b>Welcome to {$package}!</b><br /> +<br /> +This documentation was generated by <a href="{$phpdocwebsite}">phpDocumentor v{$phpdocversion}</a><br /> +</body> +</html>
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl new file mode 100755 index 00000000..93cd4f27 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl @@ -0,0 +1,94 @@ +{include file="header.tpl" eltype="class" hasel=true contents=$classcontents} +<!-- Start of Class Data --> +<H3> + <SPAN class="type">{if $is_interface}Interface{else}Class{/if}</SPAN> {$class_name} + <HR> +</H3> +[line <span class="linenumber">{if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>]<br /> +<pre> +{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section} +</pre> +{if $tutorial} +<div class="maintutorial">Class Tutorial: {$tutorial}</div> +{/if} +{if $children} +<SPAN class="type">Classes extended from {$class_name}:</SPAN> + {section name=kids loop=$children} + <dl> + <dt>{$children[kids].link}</dt> + <dd>{$children[kids].sdesc}</dd> + </dl> + {/section}</p> +{/if} +{if $conflicts.conflict_type}<p class="warning">Conflicts with classes:<br /> + {section name=me loop=$conflicts.conflicts} + {$conflicts.conflicts[me]}<br /> + {/section} +<p> +{/if} +<SPAN class="type">Location:</SPAN> {$source_location} +<hr> +{include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc} +<hr> +{include file="var.tpl" show="summary"} +<hr> +{include file="const.tpl" show="summary"} +<hr> +<!-- =========== INHERITED CONST SUMMARY =========== --> +<A NAME='inheritedconst_summary'><!-- --></A> +<H3>Inherited Class Constant Summary</H3> + +{section name=iconsts loop=$iconsts} +<H4>Inherited From Class {$iconsts[iconsts].parent_class}</H4> +<UL> + {section name=iconsts2 loop=$iconsts[iconsts].iconsts} + <!-- =========== Summary =========== --> + <LI><CODE>{$iconsts[iconsts].iconsts[iconsts2].link}</CODE> = <CODE class="varsummarydefault">{$iconsts[iconsts].iconsts[iconsts2].value}</CODE> + <BR> + {$iconsts[iconsts].iconsts[iconsts2].sdesc} + {/section} + </LI> +</UL> +{/section} +<hr> +<!-- =========== INHERITED VAR SUMMARY =========== --> +<A NAME='inheritedvar_summary'><!-- --></A> +<H3>Inherited Class Variable Summary</H3> + +{section name=ivars loop=$ivars} +<H4>Inherited From Class {$ivars[ivars].parent_class}</H4> +<UL> + {section name=ivars2 loop=$ivars[ivars].ivars} + <!-- =========== Summary =========== --> + <LI><CODE>{$ivars[ivars].ivars[ivars2].link}</CODE> = <CODE class="varsummarydefault">{$ivars[ivars].ivars[ivars2].default}</CODE> + <BR> + {$ivars[ivars].ivars[ivars2].sdesc} + {/section} + </LI> +</UL> +{/section} + +<hr> +{include file="method.tpl" show="summary"} +<!-- =========== INHERITED METHOD SUMMARY =========== --> +<A NAME='methods_inherited'><!-- --></A> +<H3>Inherited Method Summary</H3> + +{section name=imethods loop=$imethods} +<H4>Inherited From Class {$imethods[imethods].parent_class}</h4> +<UL> + {section name=im2 loop=$imethods[imethods].imethods} + <!-- =========== Summary =========== --> + <LI><CODE>{$imethods[imethods].imethods[im2].link}</CODE><br> + {$imethods[imethods].imethods[im2].sdesc} + {/section} +</UL> +{/section} +<hr> +{include file="method.tpl"} +<hr> +{include file="var.tpl"} +<hr> +{include file="const.tpl"} +<hr> +{include file="footer.tpl"} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl new file mode 100755 index 00000000..65d60118 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl @@ -0,0 +1,8 @@ +{foreach key=subpackage item=files from=$classleftindex} + {if $subpackage != ""}<b>{$subpackage}</b><br>{/if} + {section name=files loop=$files} + {if $files[files].link != ''}<a href="{ldelim}$subdir{rdelim}{$files[files].link}">{/if} + {$files[files].title} + {if $files[files].link != ''}</a>{/if}<br> + {/section} +{/foreach} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl new file mode 100755 index 00000000..6308aba9 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl @@ -0,0 +1,12 @@ +{capture name="title"}Class Trees for Package {$package}{/capture} +{include file="header.tpl" title=$smarty.capture.title} + +<!-- Start of Class Data --> +<H2> + {$smarty.capture.title} +</H2> +{section name=classtrees loop=$classtrees} +<SPAN class="code">Root class {$classtrees[classtrees].class}</SPAN> +<code class="vardefaultsummary">{$classtrees[classtrees].class_tree}</code> +{/section} +{include file="footer.tpl"}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl new file mode 100644 index 00000000..720a71b5 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl @@ -0,0 +1,29 @@ +{if $show=="summary"} +<!-- =========== CONST SUMMARY =========== --> +<A NAME='const_summary'><!-- --></A> +<H3>Class Constant Summary</H3> + +<UL> + {section name=consts loop=$consts} + <!-- =========== Summary =========== --> + <LI><CODE><a href="{$consts[consts].id}">{$consts[consts].const_name}</a></CODE> = <CODE class="varsummarydefault">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> + <BR> + {$consts[consts].sdesc} + {/section} +</UL> +{else} +<!-- ============ VARIABLE DETAIL =========== --> + +<A NAME='variable_detail'></A> + +<H3>Class Constant Detail</H3> + +<UL> +{section name=consts loop=$consts} +<A NAME="{$consts[consts].const_dest}"><!-- --></A> +<LI><SPAN class="code">{$consts[consts].const_name}</SPAN> = <CODE class="varsummarydefault">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> [line <span class="linenumber">{if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}</span>]</LI> +{include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags} +<BR> +{/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl new file mode 100755 index 00000000..44938319 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl @@ -0,0 +1,11 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<HTML> +<HEAD> +<meta name="GENERATOR" content="phpDocumentor version {$phpdocversion}"> +<!-- Sitemap 1.0 --> +</HEAD><BODY> +<OBJECT type="text/site properties"> + <param name="ImageType" value="Folder"> +</OBJECT> +{$toc} +</BODY></HTML> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl new file mode 100755 index 00000000..4a3a64e9 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl @@ -0,0 +1,33 @@ +{if $summary} +<!-- =========== CONSTANT SUMMARY =========== --> +<A NAME='constant_summary'><!-- --></A> +<H3>Constant Summary</H3> + +<UL> + {section name=def loop=$defines} + <LI><CODE><A HREF="{$defines[def].id}">{$defines[def].define_name}</A></CODE> = <CODE class="varsummarydefault">{$defines[def].define_value}</CODE> + <BR>{$defines[def].sdesc} + {/section} +</UL> +{else} +<!-- ============ CONSTANT DETAIL =========== --> + +<A NAME='constant_detail'></A> +<H3>Constant Detail</H3> + +<UL> + {section name=def loop=$defines} + <A NAME="{$defines[def].define_link}"><!-- --></A> + <LI><SPAN class="code">{$defines[def].define_name}</SPAN> = <CODE class="varsummarydefault">{$defines[def].define_value}</CODE> [line <span class="linenumber">{if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}</span>]<br /> + {if $defines[def].define_conflicts.conflict_type} + <p><b>Conflicts with defines:</b> + {section name=me loop=$defines[def].define_conflicts.conflicts} + {$defines[def].define_conflicts.conflicts[me]}<br /> + {/section} + </p> + {/if} +<BR><BR> + {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags} + {/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl new file mode 100755 index 00000000..ef621b9b --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl @@ -0,0 +1,31 @@ +<!-- ========== Info from phpDoc block ========= --> +{if $function} + {if $params} + <p class="label"><b>Parameters</b></p> + {section name=params loop=$params} + <p class=dt><i>{$params[params].var}</i></p> + <p class=indent>{$params[params].data}</p> + {/section} + {/if} +{/if} +{section name=tags loop=$tags} +{if $tags[tags].keyword == 'return'} + <p class="label"><b>Returns</b></p> + <p class=indent>{$tags[tags].data}</p> +{/if} +{/section} +{if $sdesc || $desc} +<p class="label"><b>Remarks</b></p> +{/if} +{if $sdesc} +<p>{$sdesc}</p> +{/if} +{if $desc} +<p>{$desc}</p> +{/if} +{section name=tags loop=$tags} +{if $tags[tags].keyword != 'return'} + <p class="label"><b>{$tags[tags].keyword}</b></p> + <p class=indent>{$tags[tags].data}</p> +{/if} +{/section}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl new file mode 100755 index 00000000..755f33c7 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl @@ -0,0 +1,9 @@ +{include file="header.tpl" noleftindex=true} +<a name="top"></a> +<h1>Index of All Elements</h1> +<b>Indexes by package:</b><br> +{section name=p loop=$packageindex} +<a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a><br> +{/section}<br> +{include file="basicindex.tpl" indexname="elementindex"} +{include file="footer.tpl"} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl new file mode 100755 index 00000000..0f526584 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl @@ -0,0 +1,21 @@ +{include file="header.tpl" noleftindex=true} +{section name=files loop=$files} +<a href="#{$files[files].file}">{$files[files].file}</a><br> +{/section} +{foreach key=file item=issues from=$all} +<a name="{$file}"></a> +<h1>{$file}</h1> +{if count($issues.warnings)} +<h2>Warnings:</h2><br> +{section name=warnings loop=$issues.warnings} +<b>{$issues.warnings[warnings].name}</b> - {$issues.warnings[warnings].listing}<br> +{/section} +{/if} +{if count($issues.errors)} +<h2>Errors:</h2><br> +{section name=errors loop=$issues.errors} +<b>{$issues.errors[errors].name}</b> - {$issues.errors[errors].listing}<br> +{/section} +{/if} +{/foreach} +{include file="footer.tpl"} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl new file mode 100755 index 00000000..45bcf945 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl @@ -0,0 +1,8 @@ +{foreach key=subpackage item=files from=$fileleftindex} + {if $subpackage != ""}subpackage <b>{$subpackage}</b><br>{/if} + {section name=files loop=$files} + {if $files[files].link != ''}<a href="{ldelim}$subdir{rdelim}{$files[files].link}">{/if} + {$files[files].title} + {if $files[files].link != ''}</a>{/if}<br> + {/section} +{/foreach} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl new file mode 100755 index 00000000..55c826b9 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl @@ -0,0 +1,6 @@ +{capture name="tutle"}File Source for {$name}{/capture} +{include file="header.tpl" title=$smarty.capture.tutle} +<h1 align="center">Source for file {$name}</h1> +<p>Documentation is available at {$docs}</p> +{$source} +{include file="footer.tpl"}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl new file mode 100755 index 00000000..157bb1cd --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl @@ -0,0 +1,8 @@ +{if !$index} + <div id="credit"> + <hr> + Documentation generated on {$date} by <a href="{$phpdocwebsite}" target="_blank">phpDocumentor {$phpdocversion}</a> + </div> +{/if} +</body> +</html> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl new file mode 100755 index 00000000..895e8ab4 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl @@ -0,0 +1,44 @@ +{if $summary} +<!-- =========== FUNCTION SUMMARY =========== --> +<A NAME='function_summary'><!-- --></A> +<H3>Function Summary</H3> + +<UL> + {section name=func loop=$functions} + <!-- =========== Summary =========== --> + <LI><CODE><A HREF="{$functions[func].id}">{$functions[func].function_return} {$functions[func].function_name}()</A></CODE> + <BR>{$functions[func].sdesc} + {/section} +</UL> +{else} +<!-- ============ FUNCTION DETAIL =========== --> + +<A NAME='function_detail'></A> +<H3>Function Detail</H3> + +<UL> +{section name=func loop=$functions} +<A NAME="{$functions[func].function_dest}"><!-- --></A> + +<LI><SPAN class="code">{$functions[func].function_return} {$functions[func].function_name}()</SPAN> [line <span class="linenumber">{if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}</span>]<br /> +<BR><BR> +<SPAN class="type">Usage:</SPAN> <SPAN class="code">{if $functions[func].ifunction_call.returnsref}&{/if}{$functions[func].function_name}( +{if count($functions[func].ifunction_call.params)} +{section name=params loop=$functions[func].ifunction_call.params} +{if $smarty.section.params.iteration != 1}, {/if}{if $functions[func].ifunction_call.params[params].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if} +{/section} +{/if})</SPAN> +<BR><BR> +{if $functions[func].function_conflicts.conflict_type} +<p><b>Conflicts with functions:</b> +{section name=me loop=$functions[func].function_conflicts.conflicts} +{$functions[func].function_conflicts.conflicts[me]}<br /> +{/section} +</p> +{/if} +{include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags params=$functions[func].params function=true} +<BR> +<p class="top">[ <a href="#top">Top</a> ]</p> +{/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl new file mode 100755 index 00000000..113a67ab --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl @@ -0,0 +1,32 @@ +{if $summary} +<!-- =========== GLOBAL VARIABLE SUMMARY =========== --> +<A NAME='global_summary'><!-- --></A> +<H3>Global Variable Summary</H3> + +<UL> + {section name=glob loop=$globals} + <LI><CODE><A HREF="{$globals[glob].id}">{$globals[glob].global_name}</A></CODE> = <CODE class="varsummarydefault">{$globals[glob].global_value}</CODE> + <BR>{$globals[glob].sdesc} + {/section} +</UL> + +{else} +<!-- ============ GLOBAL VARIABLE DETAIL =========== --> + +<A NAME='global_detail'></A> +<H3>Global Variable Detail</H3> + +<UL> + {section name=glob loop=$globals} + <A NAME="{$globals[glob].global_link}"><!-- --></A> + <LI><i>{$globals[glob].global_type}</i> <SPAN class="code">{$globals[glob].global_name}</SPAN> = <CODE class="varsummarydefault">{$globals[glob].global_value}</CODE> [line <span class="linenumber">{if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}</span>]<br /> + {if $globals[glob].global_conflicts.conflict_type} + <p><b>Conflicts with globals:</b> + {section name=me loop=$globals[glob].global_conflicts.conflicts} + {$globals[glob].global_conflicts.conflicts[me]}<br /> + {/section} + {/if}<BR><BR> + {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags} + {/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl new file mode 100755 index 00000000..30fad6bb --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl @@ -0,0 +1,22 @@ +<!-- + IE 6 makes the page to wide with the following doctype. I accept + standards if they help me, not if they make anything even harder! +//--> +<!--<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN' 'http://www.w3.org/TR/REC-html40/loose.dtd'>//--> +<!--NewPage--> +<HTML> +<HEAD> + <!-- Generated by PhpDoc date: '{$date}' --> + <TITLE>{$title}</TITLE> +<LINK REL ='stylesheet' TYPE='text/css' HREF='{$subdir}media/stylesheet.css' TITLE='Style'> +{if $bgleft} +<STYLE type="text/css"><!-- + BODY {ldelim} + background-image : url("{$subdir}media/bg_left.png"); + background-repeat : repeat-y; + {rdelim} +//--></STYLE> +{/if} +</HEAD> +<BODY {if !$bgleft}BGCOLOR='white'{/if}> +<a name="top"><!-- --></a>
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl new file mode 100755 index 00000000..c82846a8 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl @@ -0,0 +1,17 @@ +[OPTIONS] +Compatibility=1.1 or later +Compiled file=documentation.chm +Contents file=contents.hhc +Default topic=index.html +Display compile progress=No +Index file=Index.hhk +Language=0x409 English (United States) +Title={$maintitle} + +[FILES] +{section name=files loop=$files} +{$files[files].name} +{/section} + +[INFOTYPES] + diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl new file mode 100755 index 00000000..db76e4dc --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl @@ -0,0 +1,26 @@ +{if $summary} +<!-- =========== INCLUDE SUMMARY =========== --> +<A NAME='include_summary'><!-- --></A> +<H3>Include Statements Summary</H3> + +<UL> + {section name=includes loop=$includes} + <LI><CODE><A HREF="#{$includes[includes].include_file}">{$includes[includes].include_name}</A></CODE> = <CODE class="varsummarydefault">{$includes[includes].include_value}</CODE> + <BR>{$includes[includes].sdesc} + {/section} +</UL> +{else} +<!-- ============ INCLUDE DETAIL =========== --> + +<A NAME='include_detail'></A> +<H3>Include Statements Detail</H3> + +<UL> + {section name=includes loop=$includes} + <A NAME="{$includes[includes].include_file}"><!-- --></A> + <LI><SPAN class="code">{$includes[includes].include_name} file:</SPAN> = <CODE class="varsummarydefault">{$includes[includes].include_value}</CODE> [line <span class="linenumber">{if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}</span>]<br /> + <BR><BR> + {include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags} + {/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl new file mode 100755 index 00000000..94cbd18e --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl @@ -0,0 +1,8 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<HTML> +<HEAD> +<meta name="GENERATOR" content="phpDocumentor {$phpdocversion} {$phpdocwebsite}"> +<!-- Sitemap 1.0 --> +</HEAD><BODY> +{$klinks} +</BODY></HTML> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl new file mode 100755 index 00000000..4e053097 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> +<!--NewPage--> +<HTML> +<HEAD> + <!-- Generated by PhpDoc on {$date} --> + <TITLE>{$title}</TITLE> +</HEAD> +<FRAMESET cols='220,*'> +{if $package_count > 1} + <FRAMESET rows='220,*'> + <FRAME src='packages.html' name='left_top'> +{/if} + <FRAME src='{$start}' name='left_bottom'> +{if $package_count > 1} + </FRAMESET> +{/if} + <FRAME src='{$blank}.html' name='right'> + <NOFRAMES> + <H2>Frame Alert</H2> + <P>This document is designed to be viewed using the frames feature. + If you see this message, you are using a non-frame-capable web client.</P> + </NOFRAMES> +</FRAMESET> +</HTML> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png Binary files differnew file mode 100755 index 00000000..19fdf05d --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.png diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css new file mode 100755 index 00000000..aa245bfa --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css @@ -0,0 +1,130 @@ +BODY, DIV, SPAN, PRE, CODE, TD, TH { + line-height: 140%; + font-size: 10pt; + font-family: verdana,arial,sans-serif; +} + +H1 { + font-size: 12pt; +} + +H4 { + font-size: 10pt; + font-weight: bold; +} + +P.label { + margin-bottom: 5px; +} +P.dt { + margin-top: 0px; + margin-bottom: 0px; +} +P.indent { + margin-top: 0px; + margin-left: 20px; + margin-bottom: 0px; +} +P.method { + background-color: #f0f0f0; + padding: 2px; + border: 1px #cccccc solid; +} + +A { + text-decoration: none; +} + +A:link{ + color: #336699; +} + +A:visited { + color: #003366; +} + +A:active, A:hover { + color: #6699CC; +} + +A:hover{ + text-decoration: underline; +} + +SPAN.type { + color: #336699; + font-size: xx-small; + font-weight: normal; + } + +PRE { + background-color: #EEEEEE; + padding: 10px; + border-width: 1px; + border-color: #336699; + border-style: solid; +} + +HR { + color: #336699; + background-color: #336699; + border-width: 0px; + height: 1px; + filter: Alpha (opacity=100,finishopacity=0,style=1); +} + +DIV.sdesc { + font-weight: bold; + background-color: #EEEEEE; + padding: 10px; + border-width: 1px; + border-color: #336699; + border-style: solid; +} + +DIV.desc { + font-family: monospace; + background-color: #EEEEEE; + padding: 10px; + border-width: 1px; + border-color: #336699; + border-style: solid; +} + +SPAN.code { + font-family: monospace; +} + +CODE.varsummarydefault{ + padding: 1px; + border-width: 1px; + border-style: dashed; + border-color: #336699; +} + +UL.tute { + margin: 0px; + padding: 0px; + padding-left: 5px; + } + +LI.tute { + line-height: 140%; + font-size: 10pt; + text-indent: -15px; + padding-bottom: 2px; + padding-left: 14px; +} + +.small{ + font-size: 9pt; +} + + +.tute-tag { color: #009999 } +.tute-attribute-name { color: #0000FF } +.tute-attribute-value { color: #0099FF } +.tute-entity { font-weight: bold; } +.tute-comment { font-style: italic } +.tute-inline-tag { color: #636311; font-weight: bold } +.src-code { font-family: 'Courier New', Courier, monospace; font-weight: normal; } diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl new file mode 100755 index 00000000..4816c4f9 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl @@ -0,0 +1,126 @@ +{if $show == 'summary'} +<!-- =========== METHOD SUMMARY =========== --> +<A NAME='method_summary'><!-- --></A> +<H3>Method Summary</H3> + +<UL> + {section name=methods loop=$methods} + {if $methods[methods].static} + <!-- =========== Summary =========== --> + <LI><CODE>static <A HREF='{$methods[methods].id}'>{$methods[methods].function_return} {$methods[methods].function_name}()</A></CODE> + <BR>{$methods[methods].sdesc} + {/if} + {/section} + {section name=methods loop=$methods} + {if $methods[methods].static} + <!-- =========== Summary =========== --> + <LI><CODE><A HREF='{$methods[methods].id}'>{$methods[methods].function_return} {$methods[methods].function_name}()</A></CODE> + <BR>{$methods[methods].sdesc} + {/if} + {/section} +</UL> + +{else} +<!-- ============ METHOD DETAIL =========== --> + +<A NAME='method_detail'></A> +<H3>Method Detail</H3> + +<UL> +{section name=methods loop=$methods} +{if $methods[methods].static} +<A NAME='{$methods[methods].method_dest}'><!-- --></A> + +<h1><A name="{$methods[methods].function_name}"></A>static {$class_name}::{$methods[methods].function_name}</h1> + +<p class=method> +<b>static {if $methods[methods].ifunction_call.returnsref}&{/if}{$methods[methods].function_name}(</b> +{if count($methods[methods].ifunction_call.params)} +{section name=params loop=$methods[methods].ifunction_call.params} +{if $smarty.section.params.iteration != 1}, {/if} +{if $methods[methods].ifunction_call.params[params].hasdefault}[{/if}<b>{$methods[methods].ifunction_call.params[params].type}</b> +<i>{$methods[methods].ifunction_call.params[params].name}</i>{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if} +{/section} +{/if}<b> );</b> +</p> + +{if $methods[methods].descmethod} + <p>Overridden in child classes as:<br /> + {section name=dm loop=$methods[methods].descmethod} + <dl> + <dt>{$methods[methods].descmethod[dm].link}</dt> + <dd>{$methods[methods].descmethod[dm].sdesc}</dd> + </dl> + {/section}</p> +{/if} +{if $methods[methods].method_overrides} +<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p> +{/if} + {if $methods[methods].method_implements} + <hr class="separator" /> + <div class="notes">Implementation of:</div> + {section name=imp loop=$methods[methods].method_implements} + <dl> + <dt>{$methods[methods].method_implements[imp].link}</dt> + {if $methods[methods].method_implements[imp].sdesc} + <dd>{$methods[methods].method_implements[imp].sdesc}</dd> + {/if} + </dl> + {/section} + {/if} + +{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true} + <p class="top">[ <a href="#top">Top</a> ]</p> +<BR> +{/if} +{/section} + +{section name=methods loop=$methods} +{if !$methods[methods].static} +<A NAME='{$methods[methods].method_dest}'><!-- --></A> + +<h1><A name="{$methods[methods].function_name}"></A>{$class_name}::{$methods[methods].function_name}</h1> + +<p class=method> +<b>{if $methods[methods].ifunction_call.returnsref}&{/if}{$methods[methods].function_name}(</b> +{if count($methods[methods].ifunction_call.params)} +{section name=params loop=$methods[methods].ifunction_call.params} +{if $smarty.section.params.iteration != 1}, {/if} +{if $methods[methods].ifunction_call.params[params].hasdefault}[{/if}<b>{$methods[methods].ifunction_call.params[params].type}</b> +<i>{$methods[methods].ifunction_call.params[params].name}</i>{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if} +{/section} +{/if}<b> );</b> +</p> + +{if $methods[methods].descmethod} + <p>Overridden in child classes as:<br /> + {section name=dm loop=$methods[methods].descmethod} + <dl> + <dt>{$methods[methods].descmethod[dm].link}</dt> + <dd>{$methods[methods].descmethod[dm].sdesc}</dd> + </dl> + {/section}</p> +{/if} +{if $methods[methods].method_overrides} +<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p> +{/if} + {if $methods[methods].method_implements} + <hr class="separator" /> + <div class="notes">Implementation of:</div> + {section name=imp loop=$methods[methods].method_implements} + <dl> + <dt>{$methods[methods].method_implements[imp].link}</dt> + {if $methods[methods].method_implements[imp].sdesc} + <dd>{$methods[methods].method_implements[imp].sdesc}</dd> + {/if} + </dl> + {/section} + {/if} + +{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true} + <p class="top">[ <a href="#top">Top</a> ]</p> +<BR> +{/if} +{/section} +</UL> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl new file mode 100755 index 00000000..0967e6e7 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl @@ -0,0 +1,3 @@ +{section name=packages loop=$packages} +<a href="{$packages[packages].link}">{$packages[packages].title}</a> +{/section}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl new file mode 100755 index 00000000..39f4823a --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl @@ -0,0 +1,34 @@ +{include file="header.tpl" eltype="Procedural file"} +<h3><SPAN class="type">File:</SPAN> {$source_location}<HR> +</h3> +{if $tutorial} +<div class="maintutorial">Main Tutorial: {$tutorial}</div> +{/if} +{include file="docblock.tpl" desc=$desc sdesc=$sdesc tags=$tags} +Classes in this file: +<dl> +{section name=classes loop=$classes} +<dt>{$classes[classes].link}</dt> + <dd>{$classes[classes].sdesc}</dd> +{/section} +</dl> +<hr> +{include file="include.tpl" summary=true} +<hr> +{include file="global.tpl" summary=true} +<hr> +{include file="define.tpl" summary=true} +<hr> +{include file="function.tpl" summary=true} +<hr> +{include file="include.tpl"} +<hr> +{include file="global.tpl"} +<hr> +{include file="define.tpl"} +<hr> +{include file="function.tpl"} +<hr> +{include file="footer.tpl"} + +</HTML>
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl new file mode 100755 index 00000000..f3a90ab3 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl @@ -0,0 +1,14 @@ +{include file="header.tpl"} +<a name="top"></a> +<h1>Element index for package {$package}</h1> +{if count($packageindex) > 1} +<b>Indexes by package:</b><br> +{/if} +{section name=p loop=$packageindex} +{if $packageindex[p].title != $package} +<a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a><br> +{/if} +{/section}<br> +<a href="elementindex.html"><b>Index of all elements</b></a><br> +{include file="basicindex.tpl" indexname=elementindex_$package} +{include file="footer.tpl"} diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl new file mode 100755 index 00000000..eff734c1 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl @@ -0,0 +1,6 @@ +{include file="header.tpl"} +<h1 align="center">{$name}</h1> +<pre> +{$contents|htmlentities} +</pre> +{include file="footer.tpl"}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl new file mode 100755 index 00000000..dd0669b5 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl @@ -0,0 +1,11 @@ +<UL> +{section name=entry loop=$entry} + <LI> <OBJECT type="text/sitemap"> + <param name="Name" value="{$entry[entry].paramname}"> +{if $entry[entry].isclass} <param name="ImageNumber" value="1"> +{/if}{if $entry[entry].outputfile} <param name="Local" value="{$entry[entry].outputfile}"> +{/if} </OBJECT> + {if $entry[entry].tocsubentries}{$entry[entry].tocsubentries}{/if} +{/section} + {$tocsubentries} +</UL> diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl new file mode 100755 index 00000000..f929ccdb --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl @@ -0,0 +1,14 @@ +{include file="header.tpl" title="Todo List"} +<div align="center"><h1>Todo List</h1></div> +{foreach from=$todos key=todopackage item=todo} +<h2>{$todopackage}</h2> +{section name=todo loop=$todo} +<h3>{$todo[todo].link}</h3> +<ul> +{section name=t loop=$todo[todo].todos} + <li>{$todo[todo].todos[t]}</li> +{/section} +</ul> +{/section} +{/foreach} +{include file="footer.tpl"}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl new file mode 100755 index 00000000..a943522c --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl @@ -0,0 +1,32 @@ +{include file="header.tpl" title=$title} +{if $nav} +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="10%" align="left" valign="bottom">{if $prev}<a href= +"{$prev}">{/if}Prev{if $prev}</a>{/if}</td> +<td width="80%" align="center" valign="bottom"></td> +<td width="10%" align="right" valign="bottom">{if $next}<a href= +"{$next}">{/if}Next{if $next}</a>{/if}</td> +</tr> +</table> +{/if} +{$contents} +{if $nav} +<table width="100%" border="0" cellpadding="0" cellspacing="0"> +<tr> +<td width="33%" align="left" valign="top">{if $prev}<a href="{$prev}">{/if} +Prev{if $prev}</a>{/if}</td> +<td width="34%" align="center" valign="top">{if $up}<a href= +"{$up}">Up</a>{else} {/if}</td> +<td width="33%" align="right" valign="top">{if $next}<a href= +"{$next}">{/if}Next{if $next}</a>{/if}</td> +</tr> + +<tr> +<td width="33%" align="left" valign="top">{if $prevtitle}{$prevtitle}{/if}</td> +<td width="34%" align="center" valign="top">{if $uptitle}{$uptitle}{/if}</td> +<td width="33%" align="right" valign="top">{if $nexttitle}{$nexttitle}{/if}</td> +</tr> +</table> +{/if} +{include file="footer.tpl"}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl new file mode 100755 index 00000000..3d22d403 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl @@ -0,0 +1,29 @@ +{if count($toc)} +<h1 align="center">Table of Contents</h1> +<ul> +{section name=toc loop=$toc} +{if $toc[toc].tagname == 'refsect1'} +{assign var="context" value="refsect1"} +{$toc[toc].link}<br /> +{/if} +{if $toc[toc].tagname == 'refsect2'} +{assign var="context" value="refsect2"} + {$toc[toc].link}<br /> +{/if} +{if $toc[toc].tagname == 'refsect3'} +{assign var="context" value="refsect3"} + {$toc[toc].link}<br /> +{/if} +{if $toc[toc].tagname == 'table'} +{if $context == 'refsect2'} {/if} +{if $context == 'refsect3'} {/if} +Table: {$toc[toc].link} +{/if} +{if $toc[toc].tagname == 'example'} +{if $context == 'refsect2'} {/if} +{if $context == 'refsect3'} {/if} +Table: {$toc[toc].link} +{/if} +{/section} +</ul> +{/if}
\ No newline at end of file diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl new file mode 100755 index 00000000..de907179 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl @@ -0,0 +1,5 @@ +<ul> + <li><a href="{$main.link}" target="right">{$main.title|strip_tags}</a> +{if $kids}{$kids}</li>{/if} +</ul> + diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl new file mode 100755 index 00000000..eeefcc51 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl @@ -0,0 +1,51 @@ +{if $show=="summary"} +<!-- =========== VAR SUMMARY =========== --> +<A NAME='var_summary'><!-- --></A> +<H3>Class Variable Summary</H3> + +<UL> + {section name=vars loop=$vars} + {if $vars[vars].static} + <!-- =========== Summary =========== --> + <LI><CODE>static <a href="{$vars[vars].id}">{$vars[vars].var_name}</a></CODE> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> + <BR> + {$vars[vars].sdesc} + {/if} + {/section} + {section name=vars loop=$vars} + {if !$vars[vars].static} + <!-- =========== Summary =========== --> + <LI><CODE><a href="{$vars[vars].id}">{$vars[vars].var_name}</a></CODE> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> + <BR> + {$vars[vars].sdesc} + {/if} + {/section} +</UL> +{else} +<!-- ============ VARIABLE DETAIL =========== --> + +<A NAME='variable_detail'></A> + +<H3>Variable Detail</H3> + +<UL> +{section name=vars loop=$vars} +{if $vars[vars].static} +<A NAME="{$vars[vars].var_dest}"><!-- --></A> +<LI><SPAN class="code">static {$vars[vars].var_name}</SPAN> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> [line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>]</LI> +<LI><b>Data type:</b> <CODE class="varsummarydefault">{$vars[vars].var_type}</CODE>{if $vars[vars].var_overrides}<b>Overrides:</b> {$vars[vars].var_overrides}<br>{/if}</LI> +{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags} +<BR> +{/if} +{/section} +{section name=vars loop=$vars} +{if !$vars[vars].static} +<A NAME="{$vars[vars].var_dest}"><!-- --></A> +<LI><SPAN class="code">{$vars[vars].var_name}</SPAN> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":" "|replace:"\t":" "}</CODE> [line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>]</LI> +<LI><b>Data type:</b> <CODE class="varsummarydefault">{$vars[vars].var_type}</CODE>{if $vars[vars].var_overrides}<b>Overrides:</b> {$vars[vars].var_overrides}<br>{/if}</LI> +{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags} +<BR> +{/if} +{/section} +</UL> +{/if}
\ No newline at end of file |