Support Joomla!

Joomla! 1.5 Documentation

Packages

Package: patTemplate

Developer Network License

The Joomla! Developer Network content is © copyright 2006 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution- NonCommercial- ShareAlike 2.5
Source code for file /pattemplate/patTemplate/Dump/Html.php

Documentation is available at Html.php

  1. <?PHP
  2. /**
  3.  * Dumps templates as HTML
  4.  *
  5.  * $Id: Html.php 356 2005-01-04 19:30:59Z schst $
  6.  *
  7.  * @package        patTemplate
  8.  * @subpackage    Dump
  9.  * @author        Sebastian Mordziol <[email protected]>
  10.  * @author        Stephan Schmidt <[email protected]>
  11.  */
  12.  
  13. // Check to ensure this file is within the rest of the framework
  14. defined('JPATH_BASE'or die();
  15.  
  16. /**
  17.  * Dumps templates as HTML
  18.  *
  19.  * @package        patTemplate
  20.  * @subpackage    Dump
  21.  * @author        Sebastian Mordziol <[email protected]>
  22.  * @author        Stephan Schmidt <[email protected]>
  23.  *
  24.  * @todo        move this into patTemplate_Dump_Dhtml and keep it free from javascript
  25.  */
  26. {
  27.     var $colors    =    array(
  28.         'borders'            =>    'C8D3DA',
  29.         'headerFills'        =>    'E1E7EB',
  30.         'subHeaderFills'    =>    'F0F2F4',
  31.         'source'            =>    'F5F7F8',
  32.         'linkNormal'        =>    '8CA0B4',
  33.         'linkHover'            =>    '8BC3E0',
  34.     );
  35.  
  36.     var $_useBorders    =    false;
  37.  
  38.    /**
  39.     * display the header
  40.     *
  41.     * @access    public
  42.     */
  43.     function displayHeader()
  44.     {
  45.         echo '<html>';
  46.         echo ' <head>';
  47.         echo '  <style type="text/css">';
  48.         echo '   BODY,TD{';
  49.         echo '        font-family: Arial, Tahoma, sans-serif;';
  50.         echo '        font-size: 12px;';
  51.         echo '   }';
  52.         echo '   TABLE.patTemplate{';
  53.         echo '      border-collapse:collapse;';
  54.         echo '   }';
  55.         echo '   A.patTemplate{';
  56.         echo '        color:#'.$this->colors['linkNormal'].';';
  57.         echo '   }';
  58.         echo '   A.patTemplate:hover{';
  59.         echo '        color:#'.$this->colors['linkHover'].';';
  60.         echo '   }';
  61.         echo '   H1.patTemplate{';
  62.         echo '        margin: 0px;';
  63.         echo '        padding: 4px;';
  64.         echo '        font-size: 18px;';
  65.         echo '   }';
  66.         echo '   I.patTemplate{';
  67.         echo '        font-style:italic;';
  68.         echo '        color:#777777;';
  69.         echo '   }';
  70.         echo '   H2.patTemplate{';
  71.         echo '        background-color: #'.$this->colors['headerFills'].';';
  72.         echo '        margin: 0px;';
  73.         echo '        margin-bottom: 15px;';
  74.         echo '        padding: 4px;';
  75.         echo '        border-bottom: 1px dashed #'.$this->colors['borders'].';';
  76.         echo '        border-top: 1px dashed #'.$this->colors['borders'].';';
  77.         echo '        font-size: 14px;';
  78.         echo '   }';
  79.         echo '   H3.patTemplate,H3.patTemplateSub{';
  80.         echo '        background-color: #'.$this->colors['headerFills'].';';
  81.         echo '        margin: 0px;';
  82.         echo '        padding: 4px;';
  83.         echo '        border-bottom: 1px dashed #'.$this->colors['borders'].';';
  84.         echo '        border-top: 1px dashed #'.$this->colors['borders'].';';
  85.         echo '        font-size: 12px;';
  86.         echo '        font-weight: bold;';
  87.         echo '   }';
  88.         echo '   H3.patTemplateSub{';
  89.         echo '        background-color: #'.$this->colors['subHeaderFills'].';';
  90.         echo '        border:1px dashed #'.$this->colors['borders'].';';
  91.         echo '        font-weight:normal;';
  92.         echo '        margin-bottom:3px;';
  93.         echo '   }';
  94.         echo '   #patTemplateContent{';
  95.         echo '        width: 100%;';
  96.         echo '        background-color:#ffffff;';
  97.         echo '        border:dashed 1px #'.$this->colors['borders'].';';
  98.         echo '        padding:0px;';
  99.         echo '   }';
  100.         echo '   .patTemplateSection{';
  101.         echo '      margin-bottom:20px;';
  102.         echo '   }';
  103.         echo '   .patTemplateSubSection{';
  104.         echo '      margin-bottom:3px;';
  105.         echo '   }';
  106.         echo '   .patTemplateData{';
  107.         echo '      display:none;';
  108.         echo '   }';
  109.         echo '   .patTemplatePropBorder{';
  110.         echo '      white-space:nowrap;';
  111.         echo '        font-weight:bold;';
  112.         echo '      color:#333333;';
  113.         echo '      border:solid 1px #C8D3DA;';
  114.         echo '   }';
  115.         echo '   .patTemplateProp{';
  116.         echo '      white-space:nowrap;';
  117.         echo '        font-weight:bold;';
  118.         echo '      color:#333333;';
  119.         echo '   }';
  120.         echo '   .patTemplateSign{';
  121.         echo '      font-family:monospace;';
  122.         echo '   }';
  123.         echo '   .patTemplateClick{';
  124.         echo '      cursor:pointer;';
  125.         echo '   }';
  126.         echo '   .patTemplateCol{';
  127.         echo '      margin-bottom:8px;';
  128.         echo '      font-weight:bold;';
  129.         echo '   }';
  130.         echo '   .patTemplateTblCol{';
  131.         echo '      padding:8px;';
  132.         echo '      padding-right:15px;';
  133.         echo '      border-right:dashed 1px #'.$this->colors['borders'].';';
  134.         echo '   }';
  135.         echo '   .patTemplateTmplContent{';
  136.         echo '      padding:8px;';
  137.         echo '      border-top:dashed 1px #'.$this->colors['borders'].';';
  138.         echo '   }';
  139.         echo '   .patTemplateSource{';
  140.         echo '      padding:5px;';
  141.         echo '      font-family:monospace;';
  142.         echo '      background-color:#'.$this->colors['source'].';';
  143.         echo '      margin-bottom:8px;';
  144.         echo '   }';
  145.         echo '   .patTemplateVar{';
  146.         echo '        color: #009900;';
  147.         echo '      font-weight:bold;';
  148.         echo '   }';
  149.         echo '   .patTemplateVarBorder{';
  150.         echo '        color: #009900;';
  151.         echo '      font-weight:bold;';
  152.         echo '      border:solid 1px #C8D3DA;';
  153.         echo '   }';
  154.         echo '   .patTemplateVal{';
  155.         echo '        color:#333333;';
  156.         echo '   }';
  157.         echo '   .patTemplateValBorder{';
  158.         echo '        color: #333333;';
  159.         echo '      border:solid 1px #C8D3DA;';
  160.         echo '   }';
  161.         echo '   .patTemplateTmpl {';
  162.         echo '        color: #990000;';
  163.         echo '      font-weight:bold;';
  164.         echo '      cursor:pointer;';
  165.         echo '   }';
  166.         echo '  </style>';
  167.         echo ' <script language="JavaScript1.2" type="text/javascript">';
  168.         echo '   var tmpls = new Array();';
  169.         echo '   function patTemplateToggle( tmplName )';
  170.         echo '   {';
  171.         echo '      var el = document.getElementById( \'tmpl-\' + tmplName );';
  172.         echo '      if( el.style.display == \'block\' )';
  173.         echo '        patTemplateCollapse( tmplName );';
  174.         echo '      else';
  175.         echo '        patTemplateExpand( tmplName );';
  176.         echo '   }';
  177.         echo '   function jump( tmplName )';
  178.         echo '   {';
  179.         echo '      tmplName = tmplName.toLowerCase();';
  180.         echo '      patTemplateExpand( tmplName );';
  181.         echo '      document.location = \'#\' + tmplName';
  182.         echo '   }';
  183.         echo '   function patTemplateExpandAll()';
  184.         echo '   {';
  185.         echo '         for( var i = 0; i < tmpls.length; i++ )';
  186.         echo '        patTemplateExpand( tmpls[i] );';
  187.         echo '   }';
  188.         echo '   function patTemplateCollapseAll()';
  189.         echo '   {';
  190.         echo '         for( var i = 0; i < tmpls.length; i++ )';
  191.         echo '        patTemplateCollapse( tmpls[i] );';
  192.         echo '   }';
  193.         echo '   function patTemplateExpand( tmplName )';
  194.         echo '   {';
  195.         echo '      var el1 = document.getElementById( \'tmpl-\' + tmplName );';
  196.         echo '      var el2 = document.getElementById( \'tmpl-\' + tmplName + \'-sign\' );';
  197.         echo '      el1.style.display = \'block\';';
  198.         echo '      el2.innerHTML = \'[-]\';';
  199.         echo '   }';
  200.         echo '   function patTemplateCollapse( tmplName )';
  201.         echo '   {';
  202.         echo '      var el1 = document.getElementById( \'tmpl-\' + tmplName );';
  203.         echo '      var el2 = document.getElementById( \'tmpl-\' + tmplName + \'-sign\' );';
  204.         echo '      el1.style.display = \'none\';';
  205.         echo '      el2.innerHTML = \'[+]\';';
  206.         echo '   }';
  207.         echo '   function patTemplateAddTmpl( tmplName )';
  208.         echo '   {';
  209.         echo '      tmpls.push( tmplName );';
  210.         echo '   }';
  211.         echo ' </script>';
  212.         echo ' </head>';
  213.         echo '<body>';
  214.         echo ' <div id="patTemplateContent">';
  215.         echo ' <h1 class="patTemplate">patTemplate Dump</h1>';
  216.     }
  217.  
  218.    /**
  219.     * dump the global variables
  220.     *
  221.     * @access    public
  222.     * @param    array        array containing all global variables
  223.     */
  224.     function dumpGlobals$globals )
  225.     {
  226.         echo '<div class="patTemplateSection"><h2 class="patTemplate">Global template variables ('.count$globals ).')</h2>';
  227.         if!empty$globals ) )
  228.         {
  229.             echo '<div class="patTemplateSubSection" style="padding:5px;">';
  230.             echo '  <table border="0" cellpadding="0" cellpadding="0" class="patTemplate">';
  231.             foreach$globals as $key => $value )
  232.             {
  233.                 $this->_displayLine$key$value );
  234.             }
  235.             echo '  </table>';
  236.             echo '</div></div>';
  237.         }
  238.     }
  239.  
  240.    /**
  241.     * dump the templates
  242.     *
  243.     * @access    public
  244.     * @param    array    templates
  245.     */
  246.     function dumpTemplates$templates$vars )
  247.     {
  248.         $templates array_reverse$templates );
  249.  
  250.         echo '<div class="patTemplateSection"><h2 class="patTemplate">Templates ('.count$templates ).') &nbsp; <span style="font-size:12px;font-weight:normal;"><a href="javascript:patTemplateExpandAll();" class="patTemplate">Expand all</a> | <a href="javascript:patTemplateCollapseAll();" class="patTemplate">Collapse all</a></span></h2>';
  251.         echo '<div class="patTemplateData">Dumping selected templates...</div>';
  252.  
  253.         foreach$templates as $name => $tmpl )
  254.         {
  255.             if!isset$vars[$name) )
  256.                 $vars[$namearray();
  257.  
  258.             $vars[$name$this->_flattenVars$vars[$name);
  259.  
  260.             echo '<div class="patTemplateSubSection">';
  261.             echo '  <h3 class="patTemplate" onclick="patTemplateToggle(\''.$name.'\');" style="cursor:pointer;"><span id="tmpl-'.$name.'-sign" class="patTemplateSign">[+]</span> Template <a name="'.$name.'">"'.$name.'"</a></h3>';
  262.             echo '  <div class="patTemplateData" id="tmpl-'.$name.'">';
  263.             echo '    <script language="JavaScript1.2" type="text/javascript">';
  264.             echo '      patTemplateAddTmpl( \''.$name.'\' );';
  265.             echo '    </script>';
  266.             echo '    <table cellpadding="0" cellspacing="0" border="0">';
  267.             echo '      <tr valign="top">';
  268.             echo '        <td style="width:200px;" class="patTemplateTblCol">';
  269.  
  270.                             $this->_displayAttributes$tmpl$name );
  271.  
  272.             echo '        </td>';
  273.             echo '        <td class="patTemplateTblCol" style="width:130px;">';
  274.  
  275.                             $this->_displayTemplateState$tmpl );
  276.  
  277.             echo '        </td>';
  278.             echo '        <td class="patTemplateTblCol" style="width:130px;">';
  279.             echo '          <div class="patTemplateCol">Dependencies</div>';
  280.  
  281.                             if!empty$tmpl['dependencies') )
  282.                             {
  283.                                 $dependencies array();
  284.                                 foreach$tmpl['dependencies'as $dependency )
  285.                                     array_push$dependencies'<a href="javascript:jump( \''.$dependency.'\' );" class="patTemplate">'.$dependency.'</a>' );
  286.  
  287.                                 echo implode'<br>'$dependencies );
  288.                             }
  289.                             else
  290.                             {
  291.                                 echo '<i class="patTemplate">[none]</i>';
  292.                             }
  293.  
  294.             echo '        </td>';
  295.             echo '      </tr>';
  296.             echo '    </table>';
  297.  
  298.  
  299.             /**
  300.              * ------------------------------------------------------------------
  301.              * display variables
  302.              */
  303.             $nestedTypes array(
  304.                 'condition',
  305.                 'modulo',
  306.             );
  307.  
  308.             ifin_array$tmpl['attributes']['type']$nestedTypes ) )
  309.             {
  310.                 $content '';
  311.  
  312.                 foreach$tmpl['subtemplates'as $subName => $subDetails )
  313.                 {
  314.                     $content .= $subDetails['data'];
  315.                 }
  316.             }
  317.             else
  318.             {
  319.                 $content $tmpl['content'];
  320.             }
  321.  
  322.             $setVars $this->_extractVars$content );
  323.  
  324.             echo '<div class="patTemplateTmplContent">';
  325.             echo '  <div class="patTemplateCol">Variables</div>';
  326.                     $this->_displayVariables$tmpl$name$setVars$vars );
  327.             echo '</div>';
  328.  
  329.             if!empty$tmpl['comments') )
  330.             {
  331.                 echo '    <div class="patTemplateTmplContent">';
  332.                 echo '      <div class="patTemplateCol">Comments</div>';
  333.                 echo '      <div style="margin-bottom:7px;">';
  334.                               echo implode'<br>'$tmpl['comments');
  335.                 echo '      </div>';
  336.                 echo '    </div>';
  337.             }
  338.  
  339.             /**
  340.              * ------------------------------------------------------------------
  341.              * display template content
  342.              */
  343.             echo '    <div class="patTemplateTmplContent">';
  344.             switch$tmpl['attributes']['type')
  345.             {
  346.                 case 'condition':
  347.                 case 'modulo':
  348.                     $this->_displayConditions$tmpl$name$vars );
  349.                     break;
  350.  
  351.                 default:
  352.                     echo '      <div class="patTemplateCol">Content</div>';
  353.                     echo '      <div class="patTemplateSource"><pre>'.$this->_highlightVarshtmlspecialchars$tmpl['content')$vars[$name).'</pre></div>';
  354.                     break;
  355.             }
  356.  
  357.             echo '    </div>';
  358.             echo '  </div>';
  359.             echo '</div>';
  360.         }
  361.  
  362.         echo '</div>';
  363.     }
  364.  
  365.     function _displayVariables$tmpl$tmplName$setVars$vars )
  366.     {
  367.         ifempty$setVars ) )
  368.         {
  369.             echo '<i class="patTemplate">[none]</i>';
  370.             return true;
  371.         }
  372.  
  373.         echo '<table border="0" cellpadding="3" cellpadding="0" class="patTemplate">';
  374.         $this->_useBorderstrue );
  375.         $this->_displayHead'Name''Assigned value''Modifier' );
  376.  
  377.         foreach$setVars as $var )
  378.         {
  379.             ifisset$vars[$tmplName][$var) )
  380.                 $value $vars[$tmplName][$var];
  381.             else
  382.                 $value '<i class="patTemplate">[no value set]</i>';
  383.  
  384.             ifisset$tmpl['modifyVars'][$var) )
  385.             {
  386.                 $params    =    array();
  387.                 foreach$tmpl['modifyVars'][$var]['params'as $n => $val )
  388.                 {
  389.                     array_push$params$n.'="'.$val.'"' );
  390.                 }
  391.                 $modifier sprintf'%s( %s )'$tmpl['modifyVars'][$var]['mod']implode', '$params ) );
  392.             }
  393.             else
  394.             {
  395.                 $modifier '<i class="patTemplate">[none]</i>';
  396.             }
  397.  
  398.             $this->_displayLine$var$value$modifier );
  399.         }
  400.         echo '</table>';
  401.  
  402.         $this->_useBordersfalse );
  403.     }
  404.  
  405.     function _displayConditions$tmpl$tmplName$vars )
  406.     {
  407.         foreach$tmpl['subtemplates'as $cond => $spec )
  408.         {
  409.             echo '  <h3 class="patTemplateSub" onclick="patTemplateToggle(\'Cond'.$cond.'\');" style="cursor:pointer;"><span id="tmpl-Cond'.$cond.'-sign" class="patTemplateSign">[+]</span> Subtemplate <a name="Cond'.$cond.'">"'.$cond.'"</a></h3>';
  410.             echo '  <div class="patTemplateData" id="tmpl-Cond'.$cond.'" style="margin-bottom:15px;">';
  411.             echo '    <script language="JavaScript1.2" type="text/javascript">';
  412.             echo '      patTemplateAddTmpl( \'Cond'.$cond.'\' );';
  413.             echo '    </script>';
  414.  
  415.             if!empty$spec['comments') )
  416.             {
  417.                 echo '    <div class="patTemplateCol">Comments</div>';
  418.                 echo '    <div style="margin-bottom:7px;">';
  419.                             echo implode'<br>'$spec['comments');
  420.                 echo '    </div>';
  421.             }
  422.  
  423.                 echo '    <div class="patTemplateCol">Dependencies</div>';
  424.                 echo '    <div style="margin-bottom:7px;">';
  425.             if!empty$spec['dependencies') )
  426.             {
  427.                 $dependencies array();
  428.                 foreach$spec['dependencies'as $dependency )
  429.                     array_push$dependencies'<a href="javascript:jump( \''.$dependency.'\' );" class="patTemplate">'.$dependency.'</a>' );
  430.  
  431.                 echo implode', '$dependencies );
  432.             }
  433.             else
  434.             {
  435.                 echo '<i class="patTemplate">[none]</i>';
  436.             }
  437.                 echo '    </div>';
  438.  
  439.             echo '    <div class="patTemplateCol">Content</div>';
  440.             echo '    <div class="patTemplateSource"><pre>'.$this->_highlightVarshtmlspecialchars$spec['data')$vars[$tmplName).'</pre></div>';
  441.             echo '  </div>';
  442.         }
  443.     }
  444.  
  445.    /**
  446.     * display the attributes of a template
  447.     *
  448.     * @access   private
  449.     * @param    array       template data
  450.     * @param    string      name of the template
  451.     */
  452.     function _displayAttributes$tmpl$tmplName null )
  453.     {
  454.         echo '<div class="patTemplateCol">Attributes</div>';
  455.         echo '<table border="0" cellpadding="0" cellpadding="0">';
  456.  
  457.         /**
  458.          * type
  459.          */
  460.         switch$tmpl['attributes']['type')
  461.         {
  462.             case 'modulo':
  463.                 if$tmpl['attributes']['modulo'== )
  464.                     $type 'OddEven';
  465.                 else
  466.                     $type 'modulo (' $tmpl['attributes']['modulo'')';
  467.             case 'condition':
  468.                 if!isset$type ) )
  469.                     $type    =    'condition';
  470.  
  471.                 $this->_displayLine'Type'$tmpl['attributes']['type');
  472.                 /**
  473.                  * condition variable, only used in condition templates
  474.                  */
  475.                 ifisset$tmpl['attributes']['conditionvar') )
  476.                 {
  477.                     ifisset$tmpl['attributes']['conditiontmpl') )
  478.                         $this->_displayLine'ConditionVar'$tmpl['attributes']['conditiontmpl'].'.'.$tmpl['attributes']['conditionvar');
  479.                     elseifisset$tmpl['attributes']['useglobals'&& $tmpl['attributes']['useglobals'== 'yes' )
  480.                         $this->_displayLine'ConditionVar''__globals.'.$tmpl['attributes']['conditionvar');
  481.                     else
  482.                         $this->_displayLine'ConditionVar'$tmpl['attributes']['conditionvar');
  483.                 }
  484.                 break;
  485.  
  486.             case 'simplecondition':
  487.                 $this->_displayLine'Type''simplecondition' );
  488.                 $requiredvars array();
  489.                 foreach ($tmpl['attributes']['requiredvars'as $tmp{
  490.                     if ($tmp[0!== $tmplName{
  491.                         $var $tmp[0'.' $tmp[1];
  492.                     else {
  493.                         $var $tmp[1];
  494.                     }
  495.                     if ($tmp[2!== null{
  496.                         $var $var '='.$tmp[2];
  497.                     }
  498.                     array_push($requiredvars$var);
  499.                 }
  500.  
  501.                 $this->_displayLine'RequiredVars'implode', '$requiredvars ) );
  502.  
  503.                 break;
  504.             default:
  505.                 $this->_displayLine'Type'$tmpl['attributes']['type');
  506.         }
  507.  
  508.         /**
  509.          * standard attributes
  510.          */
  511.         $this->_displayLine'Visibility'$tmpl['attributes']['visibility');
  512.         $this->_displayLine'WhiteSpace'$tmpl['attributes']['whitespace');
  513.         $this->_displayLine'AddSystemVars'$tmpl['attributes']['addsystemvars');
  514.         $this->_displayLine'UnusedVars'$tmpl['attributes']['unusedvars');
  515.  
  516.         /**
  517.          * external source
  518.          */
  519.         ifisset$tmpl['attributes']['src') )
  520.             $this->_displayLine'External Src'$tmpl['attributes']['src');
  521.         /**
  522.          * varscope
  523.          */
  524.         if (isset($tmpl['attributes']['varscope'])) {
  525.             if (is_array($tmpl['attributes']['varscope'])) {
  526.                 $this->_displayLine'Varscope'implode(', '$tmpl['attributes']['varscope') );
  527.             else {
  528.                 $this->_displayLine'Varscope'$tmpl['attributes']['varscope');
  529.             }
  530.         }
  531.  
  532.         echo '          </table>';
  533.     }
  534.  
  535.     function _displayTemplateState$tmpl )
  536.     {
  537.             echo '          <div class="patTemplateCol">States</div>';
  538.             echo '          <table border="0" cellpadding="0" cellpadding="0">';
  539.                             $this->_displayLine'Loaded'$tmpl['loaded');
  540.                             $this->_displayLine'Parsed'$tmpl['parsed');
  541.             echo '          </table>';
  542.     }
  543.  
  544.    /**
  545.     * hilight variables in a template
  546.     *
  547.     * @access    private
  548.     * @param    string        template content
  549.     * @return    string        template content
  550.     */
  551.     function _highlightVars$template$vars )
  552.     {
  553.         $pattern  '/('.$this->_tmpl->getStartTag().'TMPL\:([^a-z]+)'.$this->_tmpl->getEndTag().')/U';
  554.         $template preg_replace$pattern'<span class="patTemplateTmpl" onclick="jump(\'\2\')" title="Click to view the dependency \'\2\'.">\1</span>'$template );
  555.  
  556.         $pattern '/('.$this->_tmpl->getStartTag().'([^a-z:]+)'.$this->_tmpl->getEndTag().')/U';
  557.         $matches array();
  558.         preg_match_all$pattern$template$matches );
  559.         for$i 0$i count$matches[1)$i++ )
  560.         {
  561.             ifisset$vars[$matches[2][$i]] ) )
  562.             {
  563.                 $value $vars[$matches[2][$i]];
  564.             }
  565.             else
  566.             {
  567.                 $value '[No value set]';
  568.             }
  569.             $replace  '<span class="patTemplateVar" title="'.$value.'">'.$matches[1][$i].'</span>';
  570.             $template str_replace$matches[1][$i]$replace$template );
  571.         }
  572.         return $template;
  573.     }
  574.  
  575.    /**
  576.     * display a table header
  577.     *
  578.     * @access    private
  579.     * @param    string        property
  580.     * @param    mixed        value, you may pass more than one value
  581.     */
  582.     function _displayHead()
  583.     {
  584.         $args        =    func_get_args();
  585.  
  586.         echo '  <tr valign="top">';
  587.         foreach$args as $head )
  588.         {
  589.             printf'   <td class="'.$this->_getClassName'patTemplateProp' ).'">%s</td>'$head );
  590.         }
  591.         echo '  </tr>';
  592.     }
  593.  
  594.     function _getClassName$class )
  595.     {
  596.         if!$this->_useBorders )
  597.             return $class;
  598.  
  599.         return $class .= 'Border';
  600.     }
  601.  
  602.    /**
  603.     * sets whether to draw borders in the tables generated via the
  604.     * {@link _displayHead()} and {@link _displayLine()} methods.
  605.     *
  606.     * @access    private
  607.     * @param    bool        $state    Whether to draw the borders. true=draw, false=don't draw
  608.     */
  609.     function _useBorders$state )
  610.     {
  611.         $this->_useBorders = $state;
  612.     }
  613.  
  614.    /**
  615.     * display a line in a table
  616.     *
  617.     * @access    private
  618.     * @param    string        property
  619.     * @param    mixed        value, you may pass more than one value
  620.     */
  621.     function _displayLine$prop$value )
  622.     {
  623.         $args    =    func_get_args();
  624.         $prop    =    array_shift$args );
  625.  
  626.         echo '  <tr valign="top">';
  627.         printf'   <td class="'.$this->_getClassName'patTemplateProp' ).'">%s</td>'$prop );
  628.         ifcount$args == )
  629.         {
  630.             echo '   <td class="'.$this->_getClassName'patTemplateVal' ).'">&nbsp;:&nbsp;</td>';
  631.         }
  632.  
  633.         foreach$args as $value )
  634.         {
  635.             ifis_bool$value ) )
  636.             {
  637.                 $value $value === true 'yes' 'no';
  638.             }
  639.  
  640.             printf'   <td class="'.$this->_getClassName'patTemplateVal' ).'">%s</td>'$value );
  641.         }
  642.         echo '  </tr>';
  643.     }
  644.  
  645.    /**
  646.     * display the footer
  647.     *
  648.     * @access    public
  649.     */
  650.     function displayFooter()
  651.     {
  652.         echo ' </div>';
  653.         echo ' </body>';
  654.         echo '</html>';
  655.     }
  656. }
  657. ?>

Documentation generated on Mon, 05 Mar 2007 21:06:45 +0000 by phpDocumentor 1.3.1