📄 table.class.inc
字号:
<?php/** * @copyright Intermesh 2005 * @author Merijn Schering <mschering@intermesh.nl> * @version $Revision: 1.50 $ $Date: 2006/11/21 16:25:34 $ * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * @package Framework * @subpackage Controls *//** * Creates a table that uses tabs to show multiple screens * * @package Framework * @subpackage Controls * * @access public */require_once($GO_CONFIG->class_path.'base/controls/html_element.class.inc'); class table extends html_element{ var $rows = array(); var $headings = array(); var $hover_effect=false; function table($id='') { $this->tagname = 'table'; $this->set_linebreak("\n"); if($id != '') { $this->set_attribute('id', $id); } } function set_hover_effect() { $this->hover_effect=true; } function add_column($heading) { $this->headings[] = $heading; } function add_row($row) { //$row->table= &$this; if($this->hover_effect) { $row->set_attribute('onmouseover','javascript:table_glow_row(this);'); $row->set_attribute('onmouseout','javascript:table_unglow_row(this);'); } if(isset($this->attributes['id'])) { $row->table_id=$this->attributes['id']; } $this->rows[] = $row; } function get_html() { $html = '<table'; foreach($this->attributes as $name=>$value) { $html .= ' '.$name.'="'.$value.'"'; } $html .= '><tbody>'.$this->lb; $html .= $this->get_headings(); $html .= $this->get_rows(); $html .= '</tbody></table>'.$this->lb; return $this->outerHTML.$html; } function get_headings() { global $GO_THEME; $headings = ''; if(count($this->headings) > 0) { foreach($this->headings as $key=>$heading) { $headings .= '<th'; foreach($heading->attributes as $name=>$value) { $headings .= ' '.$name.'="'.$value.'"'; } $headings .= '>'.$heading->name.'</th>'.$this->lb; } $headings = '<tr>'.$this->lb.$headings.'</tr>'.$this->lb; } return $headings; } function get_rows() { $rows = ''; foreach($this->rows as $row) { $rows .= $row->get_html(); } return $rows; }}class table_row extends html_element{ var $id; var $cells = array(); var $table; var $selected = false; var $ignore_configuration=false; /* * Constructor. * * @param id id tag of the tr element. Must be unique * @param value Often the same as id but sometimes you want to have duplicate values. * * @return void */ function table_row($id='', $value= '', $ignore_configuration=false) { if($value == '') { $value = $id; } $this->value = $value; $this->tagname = 'tr'; $this->set_linebreak("\n"); if($id != '') { $this->set_attribute('id', $id); } $this->ignore_configuration=$ignore_configuration; } function set_selected() { $this->selected = true; } function add_cell($cell) { $this->cells[] = $cell; } function unshift_cell($cell) { array_unshift($this->cells, $cell); } function get_html() { $row = ''; if(!empty($this->attributes['id']) && isset($this->table)) { $checkbox = new checkbox('dtcb_'.$this->attributes['id'], $this->table->attributes['id'].'[selected][]', $this->value); $checkbox->set_attribute('onclick', 'javascript:table_update_class(this, \''.addslashes($this->attributes['id']).'\')'); if($this->selected) { $checkbox->set_attribute('checked','checked'); $this->set_attribute('class', 'SelectedRow'); } $checkbox->set_attribute('style', 'display:none;'); $row .=$checkbox->get_html().$this->lb; } $row .= '<tr'; if(!empty($this->attributes['id']) && !isset($this->attributes['onclick']) && isset($this->table) ) { $this->set_attribute('onclick', 'javascript:table_select(event, \''. $this->table->form_name.'\',\''. $this->table->attributes['id'].'\',\''. addslashes($this->attributes['id']).'\','. ($this->table->multiselect ? 'true' : 'false').','. $_SESSION['GO_SESSION']['use_checkbox_select'].');'); } foreach($this->attributes as $name=>$value) { $row .= ' '.$name.'="'.$value.'"'; } $row .= '>'.$this->lb; /* Removed foreach statement because this caused a lot of memory usage Too bad the state of the object is lost when get_html() is called now*/ //foreach($this->cells as $cell) $key=0; $cells=array(); /*if(isset($this->table) && $this->table->allow_configuration) { while($cell = array_shift($this->cells)) { if( in_array($key, $this->table->enabled_columns)) { $cells[]=$cell; } $key++; } $this->cells=&$cells; }*/ if(isset($this->table->enabled_columns) && count($this->table->enabled_columns) && !$this->ignore_configuration) { //var_dump($this->cells); $cellcount = count($this->table->enabled_columns); $count=0; foreach($this->table->enabled_columns as $column_index) { $count++; if(!isset($this->cells[$column_index])) { break; } $cell = $this->cells[$column_index]; unset($this->cells[$column_index]); if($count==$cellcount && isset($this->table) && $this->table->allow_configuration) { if(isset($cell->attributes['colspan'])) { $cell->attributes['colspan']++; }else { $cell->attributes['colspan']=2; } } $row .= $cell->get_html(); } }else { while($cell=array_shift($this->cells)) { $row .= $cell->get_html(); } } $row .= '</tr>'.$this->lb; return $row; }}class table_cell extends html_element{ var $sort_name = ''; var $innerHTML = ''; function table_cell($sort_name='', $innerHTML='') { $this->tagname = 'td'; $this->set_linebreak("\n"); $this->sort_name = $sort_name; $this->innerHTML = empty($innerHTML) ? $sort_name : $innerHTML; } function get_html() { $html = '<td'; foreach($this->attributes as $name=>$value) { $html .= ' '.$name.'="'.$value.'"'; } $html .= '>'.$this->lb.$this->innerHTML.'</td>'.$this->lb; return $html; }}class table_heading extends html_element{ var $sort_name = ''; var $name = ''; var $config_name = ''; function table_heading($name='', $sort_name='', $config_name='') { if(empty($config_name)) { $config_name=$name; } $this->tagname = 'th'; $this->set_linebreak("\n"); $this->sort_name = $sort_name; $this->name = $this->innerHTML = $name; $this->config_name = $config_name; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -