mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-04 18:34:27 +02:00
add plugin html_table
This commit is contained in:
85
libs/plugins/function.html_table.php
Normal file
85
libs/plugins/function.html_table.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Smarty plugin
|
||||
* -------------------------------------------------------------
|
||||
* Type: function
|
||||
* Name: html_table
|
||||
* Version: 1.0
|
||||
* Date: Feb 17, 2003
|
||||
* Author: Monte Ohrt <monte@ispi.net>
|
||||
* Purpose: make an html table from an array of data
|
||||
* Input: 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)
|
||||
* cellpad = value to pad trailing cells with
|
||||
*
|
||||
* Examples: {table loop=$data}
|
||||
* {$table loop=$data cols=4 tr_attr='"bgcolor=red"'}
|
||||
* {$table loop=$data cols=4 tr_attr=$colors}
|
||||
* -------------------------------------------------------------
|
||||
*/
|
||||
function smarty_function_html_table($params, &$smarty)
|
||||
{
|
||||
$table_attr = 'border=1';
|
||||
$tr_attr = '';
|
||||
$td_attr = '';
|
||||
$cols = 3;
|
||||
$cellpad = ' ';
|
||||
|
||||
extract($params);
|
||||
|
||||
if (!isset($loop)) {
|
||||
$smarty->trigger_error("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) . ">$cellpad</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: */
|
||||
|
||||
?>
|
85
plugins/function.html_table.php
Normal file
85
plugins/function.html_table.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Smarty plugin
|
||||
* -------------------------------------------------------------
|
||||
* Type: function
|
||||
* Name: html_table
|
||||
* Version: 1.0
|
||||
* Date: Feb 17, 2003
|
||||
* Author: Monte Ohrt <monte@ispi.net>
|
||||
* Purpose: make an html table from an array of data
|
||||
* Input: 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)
|
||||
* cellpad = value to pad trailing cells with
|
||||
*
|
||||
* Examples: {table loop=$data}
|
||||
* {$table loop=$data cols=4 tr_attr='"bgcolor=red"'}
|
||||
* {$table loop=$data cols=4 tr_attr=$colors}
|
||||
* -------------------------------------------------------------
|
||||
*/
|
||||
function smarty_function_html_table($params, &$smarty)
|
||||
{
|
||||
$table_attr = 'border=1';
|
||||
$tr_attr = '';
|
||||
$td_attr = '';
|
||||
$cols = 3;
|
||||
$cellpad = ' ';
|
||||
|
||||
extract($params);
|
||||
|
||||
if (!isset($loop)) {
|
||||
$smarty->trigger_error("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) . ">$cellpad</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: */
|
||||
|
||||
?>
|
Reference in New Issue
Block a user