<?php /* This code is part of FusionDirectory (http://www.fusiondirectory.org/) Copyright (C) 2003-2010 Cajus Pollmeier Copyright (C) 2011-2018 FusionDirectory 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ /*! * \file class_divSelectBox.inc * Source code for class divSelectBox */ /*! * \brief This class contains all the functions to * manage select box */ class divSelectBox { protected $headers = FALSE; protected $a_entries; protected $s_summary; protected $cols; protected $id; protected $height = '200px'; /*! * \brief Default divSelectBox constructor */ function __construct ($id) { $this->s_summary = ''; $this->a_entries = []; $this->cols = 0; $this->id = $id; } /*! * \brief Set new height value * * \param integer $h Height */ function setHeight ($h) { if (is_numeric($h)) { $this->height = $h.'px'; } else { $this->height = $h; } } /*! * \brief Add an entry * * \param array $a_entriedata */ function addEntry ($a_entriedata) { $this->a_entries[] = $a_entriedata; } /*! * \brief Set column headers * * \param array $headers */ function setHeaders ($headers) { $this->headers = $headers; } /*! * \brief Draw the list */ function drawList () { $s_return = ''; $s_return .= '<div style="border:1px solid rgb(170,170,170);padding-right:1px;height:'.$this->height.';width:100%">'."\n"; $s_return .= '<div style="overflow:auto; width:100%; height:100%;">'."\n"; $s_return .= '<table '. 'class="listingTable" '. 'id="'.$this->id.'" '. 'style="overflow:scroll; '. 'height:98%; '. 'width:100%; '. 'border:none; '. '"'. ">\n"; $s_return .= $this->generatePage(); $s_return .= '</table></div></div>'; if ($this->headers !== FALSE) { $s_return .= '<script> var sorter'.$this->id.' = tsorter.create(\''.$this->id.'\'); </script>'; } return $s_return; } /*! * \brief Set summary * * \param string $msg */ function setSummary ($msg) { $this->s_summary = $msg; } /*! * \brief Generate the page */ protected function generatePage () { $display = ''; if ($this->headers !== FALSE) { $display .= '<thead><tr>'; foreach ($this->headers as $header) { if ($header === '') { $header = ' '; } $display .= '<th>'.$header.'</th>'; } $display .= '</tr></thead>'."\n"; } return $display.'<tbody>'.$this->generateBody().'</tbody>'; } /*! * \brief Generate the body */ protected function generateBody () { /* If divselectbox is empty, append a single white entry */ if (count($this->a_entries) == 0) { $str = ''; if ($this->headers !== FALSE) { $this->cols = count($this->headers); $str .= '<tr>'; for ($i = 0; $i < ($this->cols); $i++) { if ($i >= ($this->cols - 1)) { $str .= '<td style="height:100%;border:0px;"> </td>'; } else { $str .= '<td style="height:100%;"> </td>'; } } $str .= '</tr>'; } else { $str .= '<tr><td style="height:100%; border-right:0px;"> </td></tr>'; } return $str; } $s_return = ''; $i = count($this->a_entries); foreach ($this->a_entries as $s_value) { $i--; $s_return .= "\n<tr>"; $cnt = 0; $this->cols = count($s_value); foreach ($s_value as $s_value2) { $cnt++; if (!isset($s_value2['class'])) { $class = ""; } else { $class = "class='".$s_value2['class']."'"; } if (!isset($s_value2['attach'])) { $style = ""; } else { $style = " ".$s_value2['attach']." "; } $s_return .= "\n<td".$style.$class.">"; if (isset($s_value2['string'])) { if ($s_value2['string'] === '') { $s_return .= ' '; } else { $s_return .= htmlescape($s_value2['string']); } } else { $s_return .= $s_value2['html']; } $s_return .= '</td>'; } $s_return .= "\n</tr>"; } $s_return .= "\n<tr>"; for ($i = 0; $i < ($this->cols); $i++) { if ($i >= ($this->cols - 1)) { $s_return .= '<td style="height:100%;border:0px;"><div style="font-size:1px;"> </div></td>'; } else { $s_return .= '<td style="height:100%;"><div style="font-size:1px;"> </div></td>'; } } $s_return .= '</tr>'; return $s_return; } }