'); //// hash to retrieve the headers and options as passed at table-creation time // this means that table_id's need to be different across the page, // which is required anyway for the search and pagesize areas to work properly $plc_table_hash=array(); //////////////////////////////////////// function plc_table_cell($cell) { printf (' %s ',$cell); } //////////////////////////////////////// // table_id: 's id tag // headers: an associative array "label"=>"type" // column_sort: the column to sort on at load-time // options : an associative array to override options (should be passed to both _stsart and _end) // - search_area : boolean (default true) // - notes_area : boolean (default true) // - notes : an array of additional notes // - pagesize: the initial pagination size // - pagesize_def: the page size when one clicks the pagesize reset button // - max_pages: the max number of pages to display in the paginator // - footers: a list of table rows ( will be added) for building the table's tfoot area function plc_table_start ($table_id, $headers, $column_sort, $options=NULL) { if ( ! $options ) $options = array(); global $plc_table_hash; $plc_table_hash[$table_id]=array($headers,$options); $search_area = array_key_exists('search_area',$options) ? $options['search_area'] : true; $max_pages = array_key_exists('max_pages',$options) ? $options['max_pages'] : 10; $pagesize = array_key_exists('pagesize',$options) ? $options['pagesize'] : 25; $pagesize_def = array_key_exists('pagesize_def',$options) ? $options['pagesize_def'] : 999; if ($search_area) plc_table_search_area($table_id,$pagesize,$pagesize_def); plc_table_head($table_id,$headers,$column_sort,$max_pages,$pagesize); } // for convenience, the options that apply to the footer only can be passed in plc_table_end() // they add up to the ones provided to the begin clause // makes code more readable, as preparing the footer before the table is displayed is confusing function plc_table_end ($table_id,$options_end=NULL) { global $plc_table_hash; list($headers,$options) = $plc_table_hash[$table_id]; if ($options_end) $options=array_merge($options,$options_end); plc_table_foot($options); $notes_area = array_key_exists('notes_area',$options) ? $options['notes_area'] : true; if ($notes_area) plc_table_notes($options); } //////////////////// function plc_table_search_area ($table_id,$pagesize,$pagesize_def) { $pagesize_text_id = $table_id . "_pagesize"; $search_text_id = $table_id . "_search"; $search_reset_id = $table_id . "_search_reset"; $search_and_id = $table_id . "_search_and"; print <<< EOF
EOF; } //////////////////////////////////////// function plc_table_head ($table_id,$headers,$column_sort,$max_pages,$pagesize) { $paginator=$table_id."_paginator"; $classname="paginationcallback-".$paginator; $classname.=" max-pages-" . $max_pages; $classname.=" paginate-" . $pagesize; print <<< EOF
EOF; foreach ($headers as $label => $type) { if ($type == "none" ) { $class=""; } else { if ($type == "string") $type=""; if ($type == "int") $type=""; if ($type == "float") $type=""; $class="sortable"; if ( ! empty($type)) $class .= "-sort" . $type; } printf ('',$class,$label); } print <<< EOF EOF; } //////////////////////////////////////// function plc_table_foot ($options) { print ""; if ($options['footers']) foreach ($options['footers'] as $footer) print " $footer "; print "
%s
\n"; } //////////////////////////////////////// function plc_table_notes ($options) { print <<< EOF

Notes: Enter & or | in the search area to alternate between AND and OR search modes
Hold down the shift key to select multiple columns to sort EOF; if (array_key_exists('notes',$options)) { foreach ($options['notes'] as $line) { print "
" . $line . "\n"; } } print "

"; } //////////////////////////////////////// function plc_table_title ($text) { print "

$text

\n"; } function plc_table_row_start ($id="") { if ( $id) { printf ('',$id); } else { print ''; } } function plc_table_row_end () { print "\n"; } function plc_table_td_text ($text,$colspan=0,$align=NULL) { $result=""; $result .= "