📄 html.php
字号:
{
echo ' <div class="patTemplateTmplContent">';
echo ' <div class="patTemplateCol">Comments</div>';
echo ' <div style="margin-bottom:7px;">';
echo implode( '<br>', $tmpl['comments'] );
echo ' </div>';
echo ' </div>';
}
/**
* ------------------------------------------------------------------
* display template content
*/
echo ' <div class="patTemplateTmplContent">';
switch( $tmpl['attributes']['type'] )
{
case 'condition':
case 'modulo':
$this->_displayConditions( $tmpl, $name, $vars );
break;
default:
echo ' <div class="patTemplateCol">Content</div>';
echo ' <div class="patTemplateSource"><pre>'.$this->_highlightVars( htmlspecialchars( $tmpl['content'] ), $vars[$name] ).'</pre></div>';
break;
}
echo ' </div>';
echo ' </div>';
echo '</div>';
}
echo '</div>';
}
function _displayVariables( $tmpl, $tmplName, $setVars, $vars )
{
if( empty( $setVars ) )
{
echo '<i class="patTemplate">[none]</i>';
return true;
}
echo '<table border="0" cellpadding="3" cellpadding="0" class="patTemplate">';
$this->_useBorders( true );
$this->_displayHead( 'Name', 'Assigned value', 'Modifier' );
foreach( $setVars as $var )
{
if( isset( $vars[$tmplName][$var] ) )
$value = $vars[$tmplName][$var];
else
$value = '<i class="patTemplate">[no value set]</i>';
if( isset( $tmpl['modifyVars'][$var] ) )
{
$params = array();
foreach( $tmpl['modifyVars'][$var]['params'] as $n => $val )
{
array_push( $params, $n.'="'.$val.'"' );
}
$modifier = sprintf( '%s( %s )', $tmpl['modifyVars'][$var]['mod'], implode( ', ', $params ) );
}
else
{
$modifier = '<i class="patTemplate">[none]</i>';
}
$this->_displayLine( $var, $value, $modifier );
}
echo '</table>';
$this->_useBorders( false );
}
function _displayConditions( $tmpl, $tmplName, $vars )
{
foreach( $tmpl['subtemplates'] as $cond => $spec )
{
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>';
echo ' <div class="patTemplateData" id="tmpl-Cond'.$cond.'" style="margin-bottom:15px;">';
echo ' <script language="JavaScript1.2" type="text/javascript">';
echo ' patTemplateAddTmpl( \'Cond'.$cond.'\' );';
echo ' </script>';
if( !empty( $spec['comments'] ) )
{
echo ' <div class="patTemplateCol">Comments</div>';
echo ' <div style="margin-bottom:7px;">';
echo implode( '<br>', $spec['comments'] );
echo ' </div>';
}
echo ' <div class="patTemplateCol">Dependencies</div>';
echo ' <div style="margin-bottom:7px;">';
if( !empty( $spec['dependencies'] ) )
{
$dependencies = array();
foreach( $spec['dependencies'] as $dependency )
array_push( $dependencies, '<a href="javascript:jump( \''.$dependency.'\' );" class="patTemplate">'.$dependency.'</a>' );
echo implode( ', ', $dependencies );
}
else
{
echo '<i class="patTemplate">[none]</i>';
}
echo ' </div>';
echo ' <div class="patTemplateCol">Content</div>';
echo ' <div class="patTemplateSource"><pre>'.$this->_highlightVars( htmlspecialchars( $spec['data'] ), $vars[$tmplName] ).'</pre></div>';
echo ' </div>';
}
}
/**
* display the attributes of a template
*
* @access private
* @param array template data
* @param string name of the template
*/
function _displayAttributes( $tmpl, $tmplName = null )
{
echo '<div class="patTemplateCol">Attributes</div>';
echo '<table border="0" cellpadding="0" cellpadding="0">';
/**
* type
*/
switch( $tmpl['attributes']['type'] )
{
case 'modulo':
if( $tmpl['attributes']['modulo'] == 2 )
$type = 'OddEven';
else
$type = 'modulo (' . $tmpl['attributes']['modulo'] . ')';
case 'condition':
if( !isset( $type ) )
$type = 'condition';
$this->_displayLine( 'Type', $tmpl['attributes']['type'] );
/**
* condition variable, only used in condition templates
*/
if( isset( $tmpl['attributes']['conditionvar'] ) )
{
if( isset( $tmpl['attributes']['conditiontmpl'] ) )
$this->_displayLine( 'ConditionVar', $tmpl['attributes']['conditiontmpl'].'.'.$tmpl['attributes']['conditionvar'] );
elseif( isset( $tmpl['attributes']['useglobals'] ) && $tmpl['attributes']['useglobals'] == 'yes' )
$this->_displayLine( 'ConditionVar', '__globals.'.$tmpl['attributes']['conditionvar'] );
else
$this->_displayLine( 'ConditionVar', $tmpl['attributes']['conditionvar'] );
}
break;
case 'simplecondition':
$this->_displayLine( 'Type', 'simplecondition' );
$requiredvars = array();
foreach ($tmpl['attributes']['requiredvars'] as $tmp) {
if ($tmp[0] !== $tmplName) {
$var = $tmp[0] . '.' . $tmp[1];
} else {
$var = $tmp[1];
}
if ($tmp[2] !== null) {
$var = $var . '='.$tmp[2];
}
array_push($requiredvars, $var);
}
$this->_displayLine( 'RequiredVars', implode( ', ', $requiredvars ) );
break;
default:
$this->_displayLine( 'Type', $tmpl['attributes']['type'] );
}
/**
* standard attributes
*/
$this->_displayLine( 'Visibility', $tmpl['attributes']['visibility'] );
$this->_displayLine( 'WhiteSpace', $tmpl['attributes']['whitespace'] );
$this->_displayLine( 'AddSystemVars', $tmpl['attributes']['addsystemvars'] );
$this->_displayLine( 'UnusedVars', $tmpl['attributes']['unusedvars'] );
/**
* external source
*/
if( isset( $tmpl['attributes']['src'] ) )
$this->_displayLine( 'External Src', $tmpl['attributes']['src'] );
/**
* varscope
*/
if (isset($tmpl['attributes']['varscope'])) {
if (is_array($tmpl['attributes']['varscope'])) {
$this->_displayLine( 'Varscope', implode(', ', $tmpl['attributes']['varscope'] ) );
} else {
$this->_displayLine( 'Varscope', $tmpl['attributes']['varscope'] );
}
}
echo ' </table>';
}
function _displayTemplateState( $tmpl )
{
echo ' <div class="patTemplateCol">States</div>';
echo ' <table border="0" cellpadding="0" cellpadding="0">';
$this->_displayLine( 'Loaded', $tmpl['loaded'] );
$this->_displayLine( 'Parsed', $tmpl['parsed'] );
echo ' </table>';
}
/**
* hilight variables in a template
*
* @access private
* @param string template content
* @return string template content
*/
function _highlightVars( $template, $vars )
{
$pattern = '/('.$this->_tmpl->getStartTag().'TMPL\:([^a-z]+)'.$this->_tmpl->getEndTag().')/U';
$template = preg_replace( $pattern, '<span class="patTemplateTmpl" onclick="jump(\'\2\')" title="Click to view the dependency \'\2\'.">\1</span>', $template );
$pattern = '/('.$this->_tmpl->getStartTag().'([^a-z:]+)'.$this->_tmpl->getEndTag().')/U';
$matches = array();
preg_match_all( $pattern, $template, $matches );
for( $i = 0; $i < count( $matches[1] ); $i++ )
{
if( isset( $vars[$matches[2][$i]] ) )
{
$value = $vars[$matches[2][$i]];
}
else
{
$value = '[No value set]';
}
$replace = '<span class="patTemplateVar" title="'.$value.'">'.$matches[1][$i].'</span>';
$template = str_replace( $matches[1][$i], $replace, $template );
}
return $template;
}
/**
* display a table header
*
* @access private
* @param string property
* @param mixed value, you may pass more than one value
*/
function _displayHead()
{
$args = func_get_args();
echo ' <tr valign="top">';
foreach( $args as $head )
{
printf( ' <td class="'.$this->_getClassName( 'patTemplateProp' ).'">%s</td>', $head );
}
echo ' </tr>';
}
function _getClassName( $class )
{
if( !$this->_useBorders )
return $class;
return $class .= 'Border';
}
/**
* sets whether to draw borders in the tables generated via the
* {@link _displayHead()} and {@link _displayLine()} methods.
*
* @access private
* @param bool $state Whether to draw the borders. true=draw, false=don't draw
*/
function _useBorders( $state )
{
$this->_useBorders = $state;
}
/**
* display a line in a table
*
* @access private
* @param string property
* @param mixed value, you may pass more than one value
*/
function _displayLine( $prop, $value )
{
$args = func_get_args();
$prop = array_shift( $args );
echo ' <tr valign="top">';
printf( ' <td class="'.$this->_getClassName( 'patTemplateProp' ).'">%s</td>', $prop );
if( count( $args ) == 1 )
{
echo ' <td class="'.$this->_getClassName( 'patTemplateVal' ).'"> : </td>';
}
foreach( $args as $value )
{
if( is_bool( $value ) )
{
$value = ( $value === true ) ? 'yes' : 'no';
}
printf( ' <td class="'.$this->_getClassName( 'patTemplateVal' ).'">%s</td>', $value );
}
echo ' </tr>';
}
/**
* display the footer
*
* @access public
*/
function displayFooter()
{
echo ' </div>';
echo ' </body>';
echo '</html>';
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -