1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
<?php
/*
* Copyright 2005-2016 OCSInventory-NG/OCSInventory-ocsreports contributors.
* See the Contributors file for more details about them.
*
* This file is part of OCSInventory-NG/OCSInventory-ocsreports.
*
* OCSInventory-NG/OCSInventory-ocsreports 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.
*
* OCSInventory-NG/OCSInventory-ocsreports 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 OCSInventory-NG/OCSInventory-ocsreports. if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
class TableRenderer {
private static $jsIncluded = false;
public function show($table, $records, $options = array()) {
$options = array_merge_recursive(array(
'paginate' => array(
'offset' => 0,
'limit' => -1
),
'visible' => array()
), $options);
$this->includeJS();
$this->callJS($table, $options);
}
private function includeJS() {
global $l;
if (!self::$jsIncluded) {
$lang = array(
"sEmptyTable" => $l->g(1334),
"sInfo" => $l->g(1335),
"sInfoEmpty" => $l->g(1336),
"sInfoFiltered" => $l->g(1337),
"sInfoPostFix" => "",
"sInfoThousands" => $l->g(1350),
"decimal" => $l->g(1351),
"sLengthMenu" => $l->g(1338),
"sLoadingRecords" => $l->g(1339),
"sProcessing" => $l->g(1340),
"sSearch" => $l->g(1341),
"sZeroRecords" => $l->g(1342),
"oPaginate" => array(
"sFirst" => $l->g(1343),
"sLast" => $l->g(1344),
"sNext" => $l->g(1345),
"sPrevious" => $l->g(1346),
),
"oAria" => array(
"sSortAscending" => ": " . $l->g(1347),
"sSortDescending" => ": " . $l->g(1348),
)
);
echo '<script>';
require 'require/tables/tables.js';
echo 'tables.language = ' . json_encode($lang) . ';';
echo '</script>';
self::$jsIncluded = true;
}
}
private function callJS($table, $options) {
global $protectedPost;
$tableName = json_encode(htmlspecialchars($table->getName()));
$csrfNumber = json_encode(htmlspecialchars($_SESSION['OCS']['CSRFNUMBER']));
$url = isset($_SERVER['QUERY_STRING']) ? "ajax.php?" . $_SERVER['QUERY_STRING'] : "";
$url = json_encode($url . '&no_header=true&no_footer=true');
$postData = json_encode($protectedPost);
$columns = json_encode($this->showColumns($table, $options));
require 'require/tables/table.html.php';
}
private function showColumns($table, $options) {
$columns = array();
foreach ($table->getColumns() as $name => $col) {
$columns [] = $this->showColumn($name, $col, $options);
}
return $columns;
}
public function showColumn($name, $col, $options) {
$visible = $col->isRequired() || in_array($name, $options['visible']);
$sortable = $col->isSortable();
$searchable = $col->isSearchable();
return array(
'data' => $name,
'class' => 'column-' . $name,
'name' => $name,
'defaultContent' => ' ',
'orderable' => $sortable,
'searchable' => $searchable,
'visible' => $visible
);
}
}
?>
|