mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-04 16:20:55 +02:00
100 lines
2.3 KiB
PHP
100 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* Smarty plugin
|
|
* @package Smarty
|
|
* @subpackage plugins
|
|
*/
|
|
|
|
|
|
/**
|
|
* Smarty {html_table} function plugin
|
|
*
|
|
* Type: function<br>
|
|
* Name: html_table<br>
|
|
* Date: Feb 17, 2003<br>
|
|
* Purpose: make an html table from an array of data<br>
|
|
* Input:<br>
|
|
* - loop = array to loop through
|
|
* - cols = number of columns
|
|
* - table_attr = table attributes
|
|
* - tr_attr = table row attributes (arrays are cycled)
|
|
* - td_attr = table cell attributes (arrays are cycled)
|
|
* - trailpad = value to pad trailing cells with
|
|
*
|
|
* Examples:
|
|
* <pre>
|
|
* {table loop=$data}
|
|
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
|
|
* {table loop=$data cols=4 tr_attr=$colors}
|
|
* </pre>
|
|
* @author Monte Ohrt <monte@ispi.net>
|
|
* @version 1.0
|
|
* @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table}
|
|
* (Smarty online manual)
|
|
* @param array
|
|
* @param Smarty
|
|
* @return string
|
|
*/
|
|
function smarty_function_html_table($params, &$smarty)
|
|
{
|
|
$table_attr = 'border="1"';
|
|
$tr_attr = '';
|
|
$td_attr = '';
|
|
$cols = 3;
|
|
$trailpad = ' ';
|
|
|
|
extract($params);
|
|
|
|
if (!isset($loop)) {
|
|
$smarty->trigger_error("html_table: missing 'loop' parameter");
|
|
return;
|
|
}
|
|
|
|
$output = "<table $table_attr>\n";
|
|
$output .= "<tr " . smarty_function_html_table_cycle('tr', $tr_attr) . ">\n";
|
|
|
|
for($x = 0, $y = count($loop); $x < $y; $x++) {
|
|
$output .= "<td " . smarty_function_html_table_cycle('td', $td_attr) . ">" . $loop[$x] . "</td>\n";
|
|
if((!(($x+1) % $cols)) && $x < $y-1) {
|
|
// go to next row
|
|
$output .= "</tr>\n<tr " . smarty_function_html_table_cycle('tr', $tr_attr) . ">\n";
|
|
}
|
|
if($x == $y-1) {
|
|
// last row, pad remaining cells
|
|
$cells = $cols - $y % $cols;
|
|
if($cells != $cols) {
|
|
for($padloop = 0; $padloop < $cells; $padloop++) {
|
|
$output .= "<td " . smarty_function_html_table_cycle('td', $td_attr) . ">$trailpad</td>\n";
|
|
}
|
|
}
|
|
$output .= "</tr>\n";
|
|
}
|
|
}
|
|
|
|
$output .= "</table>\n";
|
|
|
|
return $output;
|
|
}
|
|
|
|
function smarty_function_html_table_cycle($name, $var) {
|
|
static $names = array();
|
|
|
|
if(!is_array($var)) {
|
|
return $var;
|
|
}
|
|
|
|
if(!isset($names[$name]) || $names[$name] == count($var)-1) {
|
|
$names[$name] = 0;
|
|
return $var[0];
|
|
}
|
|
|
|
$names[$name]++;
|
|
return $var[$names[$name]];
|
|
|
|
}
|
|
|
|
|
|
/* vim: set expandtab: */
|
|
|
|
?>
|