|
|
|
|
@ -174,21 +174,21 @@ class SortableTable extends HTML_Table |
|
|
|
|
$this->per_page = isset($_SESSION[$this->param_prefix.'per_page']) ? intval($_SESSION[$this->param_prefix.'per_page']) : $default_items_per_page; |
|
|
|
|
$this->per_page = isset($_GET[$this->param_prefix.'per_page']) ? intval($_GET[$this->param_prefix.'per_page']) : $this->per_page; |
|
|
|
|
|
|
|
|
|
$_SESSION[$this->param_prefix.'per_page'] = $this->per_page; |
|
|
|
|
$_SESSION[$this->param_prefix.'direction'] = $this->direction ; |
|
|
|
|
$_SESSION[$this->param_prefix.'page_nr'] = $this->page_nr; |
|
|
|
|
$_SESSION[$this->param_prefix.'column'] = $this->column; |
|
|
|
|
$this->pager = null; |
|
|
|
|
$this->default_items_per_page = $default_items_per_page; |
|
|
|
|
$this->total_number_of_items = -1; |
|
|
|
|
$this->get_total_number_function = $get_total_number_function; |
|
|
|
|
$this->get_data_function = $get_data_function; |
|
|
|
|
$this->column_filters = array(); |
|
|
|
|
$this->form_actions = array(); |
|
|
|
|
$this->checkbox_name = null; |
|
|
|
|
$this->td_attributes = array(); |
|
|
|
|
$this->th_attributes = array(); |
|
|
|
|
$this->other_tables = array(); |
|
|
|
|
$_SESSION[$this->param_prefix.'per_page'] = $this->per_page; |
|
|
|
|
$_SESSION[$this->param_prefix.'direction'] = $this->direction; |
|
|
|
|
$_SESSION[$this->param_prefix.'page_nr'] = $this->page_nr; |
|
|
|
|
$_SESSION[$this->param_prefix.'column'] = $this->column; |
|
|
|
|
$this->pager = null; |
|
|
|
|
$this->default_items_per_page = $default_items_per_page; |
|
|
|
|
$this->total_number_of_items = -1; |
|
|
|
|
$this->get_total_number_function = $get_total_number_function; |
|
|
|
|
$this->get_data_function = $get_data_function; |
|
|
|
|
$this->column_filters = array(); |
|
|
|
|
$this->form_actions = array(); |
|
|
|
|
$this->checkbox_name = null; |
|
|
|
|
$this->td_attributes = array(); |
|
|
|
|
$this->th_attributes = array(); |
|
|
|
|
$this->other_tables = array(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -197,23 +197,23 @@ class SortableTable extends HTML_Table |
|
|
|
|
public function get_pager() |
|
|
|
|
{ |
|
|
|
|
if (is_null($this->pager)) { |
|
|
|
|
$total_number_of_items = $this->get_total_number_of_items(); |
|
|
|
|
$params['mode'] = 'Sliding'; |
|
|
|
|
$params['perPage'] = $this->per_page; |
|
|
|
|
$params['totalItems'] = $total_number_of_items; |
|
|
|
|
$params['urlVar'] = $this->param_prefix.'page_nr'; |
|
|
|
|
$params['currentPage'] = $this->page_nr; |
|
|
|
|
$icon_attributes = array('style' => 'vertical-align: middle;'); |
|
|
|
|
$params['prevImg'] = Display :: return_icon('action_prev.png', get_lang('PreviousPage'), $icon_attributes); |
|
|
|
|
$params['nextImg'] = Display :: return_icon('action_next.png', get_lang('NextPage'), $icon_attributes); |
|
|
|
|
$params['firstPageText'] = Display :: return_icon('action_first.png', get_lang('FirstPage'), $icon_attributes); |
|
|
|
|
$params['lastPageText'] = Display :: return_icon('action_last.png', get_lang('LastPage'), $icon_attributes); |
|
|
|
|
$params['firstPagePre'] = ''; |
|
|
|
|
$params['lastPagePre'] = ''; |
|
|
|
|
$total_number_of_items = $this->get_total_number_of_items(); |
|
|
|
|
$params['mode'] = 'Sliding'; |
|
|
|
|
$params['perPage'] = $this->per_page; |
|
|
|
|
$params['totalItems'] = $total_number_of_items; |
|
|
|
|
$params['urlVar'] = $this->param_prefix.'page_nr'; |
|
|
|
|
$params['currentPage'] = $this->page_nr; |
|
|
|
|
$icon_attributes = array('style' => 'vertical-align: middle;'); |
|
|
|
|
$params['prevImg'] = Display:: return_icon('action_prev.png', get_lang('PreviousPage'), $icon_attributes); |
|
|
|
|
$params['nextImg'] = Display:: return_icon('action_next.png', get_lang('NextPage'), $icon_attributes); |
|
|
|
|
$params['firstPageText'] = Display:: return_icon('action_first.png', get_lang('FirstPage'), $icon_attributes); |
|
|
|
|
$params['lastPageText'] = Display:: return_icon('action_last.png', get_lang('LastPage'), $icon_attributes); |
|
|
|
|
$params['firstPagePre'] = ''; |
|
|
|
|
$params['lastPagePre'] = ''; |
|
|
|
|
$params['firstPagePost'] = ''; |
|
|
|
|
$params['lastPagePost'] = ''; |
|
|
|
|
$params['lastPagePost'] = ''; |
|
|
|
|
$params['spacesBeforeSeparator'] = ''; |
|
|
|
|
$params['spacesAfterSeparator'] = ''; |
|
|
|
|
$params['spacesAfterSeparator'] = ''; |
|
|
|
|
$query_vars = array_keys($_GET); |
|
|
|
|
$query_vars_needed = array ($this->param_prefix.'column', $this->param_prefix.'direction', $this->param_prefix.'per_page'); |
|
|
|
|
if (count($this->additional_parameters) > 0) { |
|
|
|
|
@ -231,9 +231,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
*/ |
|
|
|
|
public function display() |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
echo $this->return_table(); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -243,7 +241,6 @@ class SortableTable extends HTML_Table |
|
|
|
|
public function return_table() |
|
|
|
|
{ |
|
|
|
|
$empty_table = false; |
|
|
|
|
|
|
|
|
|
$content = $this->get_table_html(); |
|
|
|
|
if ($this->get_total_number_of_items() == 0) { |
|
|
|
|
$cols = $this->getColCount(); |
|
|
|
|
@ -299,21 +296,21 @@ class SortableTable extends HTML_Table |
|
|
|
|
|
|
|
|
|
if (count($this->form_actions) > 0) { |
|
|
|
|
$html .= '<div class="btn-toolbar">'; |
|
|
|
|
$html .= '<div class="btn-group">'; |
|
|
|
|
$html .= '<a class="btn btn-default" href="?'.$params.'&'.$this->param_prefix.'selectall=1" onclick="javascript: setCheckbox(true, \''.$table_id.'\'); return false;">'.get_lang('SelectAll').'</a>'; |
|
|
|
|
$html .= '<a class="btn btn-default" href="?'.$params.'" onclick="javascript: setCheckbox(false, \''.$table_id.'\'); return false;">'.get_lang('UnSelectAll').'</a> '; |
|
|
|
|
$html .= '</div>'; |
|
|
|
|
$html .= '<div class="btn-group"> |
|
|
|
|
<button class="btn btn-default" onclick="javascript:return false;">'.get_lang('Actions').'</button> |
|
|
|
|
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"> |
|
|
|
|
<span class="caret"></span> |
|
|
|
|
</button>'; |
|
|
|
|
$html .= '<ul class="dropdown-menu">'; |
|
|
|
|
foreach ($this->form_actions as $action => & $label) { |
|
|
|
|
$html .= '<li><a data-action ="'.$action.'" href="#" onclick="javascript:action_click(this, \''.$table_id.'\');">'.$label.'</a></li>'; |
|
|
|
|
} |
|
|
|
|
$html .= '</ul>'; |
|
|
|
|
$html .= '</div>';//btn-group |
|
|
|
|
$html .= '<div class="btn-group">'; |
|
|
|
|
$html .= '<a class="btn btn-default" href="?'.$params.'&'.$this->param_prefix.'selectall=1" onclick="javascript: setCheckbox(true, \''.$table_id.'\'); return false;">'.get_lang('SelectAll').'</a>'; |
|
|
|
|
$html .= '<a class="btn btn-default" href="?'.$params.'" onclick="javascript: setCheckbox(false, \''.$table_id.'\'); return false;">'.get_lang('UnSelectAll').'</a> '; |
|
|
|
|
$html .= '</div>'; |
|
|
|
|
$html .= '<div class="btn-group"> |
|
|
|
|
<button class="btn btn-default" onclick="javascript:return false;">'.get_lang('Actions').'</button> |
|
|
|
|
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"> |
|
|
|
|
<span class="caret"></span> |
|
|
|
|
</button>'; |
|
|
|
|
$html .= '<ul class="dropdown-menu">'; |
|
|
|
|
foreach ($this->form_actions as $action => & $label) { |
|
|
|
|
$html .= '<li><a data-action ="'.$action.'" href="#" onclick="javascript:action_click(this, \''.$table_id.'\');">'.$label.'</a></li>'; |
|
|
|
|
} |
|
|
|
|
$html .= '</ul>'; |
|
|
|
|
$html .= '</div>';//btn-group |
|
|
|
|
$html .= '</div>'; //toolbar |
|
|
|
|
} else { |
|
|
|
|
$html .= $form; |
|
|
|
|
@ -336,7 +333,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
$html .= '</form>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return '<div class="table-responsive">' . $html . '</div>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -346,7 +343,6 @@ class SortableTable extends HTML_Table |
|
|
|
|
**/ |
|
|
|
|
public function display_grid() |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
$empty_table = false; |
|
|
|
|
if ($this->get_total_number_of_items() == 0) { |
|
|
|
|
$cols = $this->getColCount(); |
|
|
|
|
@ -358,7 +354,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
$html = ''; |
|
|
|
|
if (!$empty_table) { |
|
|
|
|
$form = $this->get_page_select_form(); |
|
|
|
|
$nav = $this->get_navigation_html(); |
|
|
|
|
$nav = $this->get_navigation_html(); |
|
|
|
|
|
|
|
|
|
// @todo This style css must be moved to default.css only for dev |
|
|
|
|
echo '<style> |
|
|
|
|
@ -558,11 +554,12 @@ class SortableTable extends HTML_Table |
|
|
|
|
*/ |
|
|
|
|
public function get_navigation_html() |
|
|
|
|
{ |
|
|
|
|
$pager = $this->get_pager(); |
|
|
|
|
$pager_links = $pager->getLinks(); |
|
|
|
|
$nav = $pager_links['first'].' '.$pager_links['back']; |
|
|
|
|
$nav .= ' '.$pager->getCurrentPageId().' / '.$pager->numPages().' '; |
|
|
|
|
$nav .= $pager_links['next'].' '.$pager_links['last']; |
|
|
|
|
$pager = $this->get_pager(); |
|
|
|
|
$pager_links = $pager->getLinks(); |
|
|
|
|
$nav = $pager_links['first'].' '.$pager_links['back']; |
|
|
|
|
$nav .= ' '.$pager->getCurrentPageId().' / '.$pager->numPages().' '; |
|
|
|
|
$nav .= $pager_links['next'].' '.$pager_links['last']; |
|
|
|
|
|
|
|
|
|
return $nav; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -583,6 +580,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
$count = 1; |
|
|
|
|
foreach ($table_data as & $row) { |
|
|
|
|
$row = $this->filter_data($row); |
|
|
|
|
|
|
|
|
|
$newRow = array(); |
|
|
|
|
if (!empty($this->columnsToHide)) { |
|
|
|
|
$counter = 0; |
|
|
|
|
@ -613,6 +611,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
foreach ($this->td_attributes as $column => $attributes) { |
|
|
|
|
$this->setColAttributes($column, $attributes); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->toHTML(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -623,9 +622,9 @@ class SortableTable extends HTML_Table |
|
|
|
|
*/ |
|
|
|
|
public function get_clean_html($sort = true) |
|
|
|
|
{ |
|
|
|
|
$pager = $this->get_pager(); |
|
|
|
|
$offset = $pager->getOffsetByPageId(); |
|
|
|
|
$from = $offset[0] - 1; |
|
|
|
|
$pager = $this->get_pager(); |
|
|
|
|
$offset = $pager->getOffsetByPageId(); |
|
|
|
|
$from = $offset[0] - 1; |
|
|
|
|
|
|
|
|
|
$table_data = $this->get_table_data($from, null, null, null, $sort); |
|
|
|
|
|
|
|
|
|
@ -636,6 +635,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
$new_table_data[] = $row; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $new_table_data; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -685,6 +685,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
{ |
|
|
|
|
$pager = $this->get_pager(); |
|
|
|
|
$showed_items = $pager->getOffsetByPageId(); |
|
|
|
|
|
|
|
|
|
return $showed_items[0].' - '.$showed_items[1].' / '.$this->get_total_number_of_items(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -763,8 +764,13 @@ class SortableTable extends HTML_Table |
|
|
|
|
* @param string $td_attributes Additional attributes for the td-tags of the |
|
|
|
|
* column |
|
|
|
|
*/ |
|
|
|
|
public function set_header($column, $label, $sortable = true, $th_attributes = array('class' => 'th-header'), $td_attributes = null) |
|
|
|
|
{ |
|
|
|
|
public function set_header( |
|
|
|
|
$column, |
|
|
|
|
$label, |
|
|
|
|
$sortable = true, |
|
|
|
|
$th_attributes = array('class' => 'th-header'), |
|
|
|
|
$td_attributes = null |
|
|
|
|
) { |
|
|
|
|
$this->headers[$column] = array( |
|
|
|
|
'label' => $label, |
|
|
|
|
'sortable' => $sortable, |
|
|
|
|
@ -810,8 +816,9 @@ class SortableTable extends HTML_Table |
|
|
|
|
foreach ($param as $key => & $value) { |
|
|
|
|
$param_string_parts[] = urlencode($key).'='.urlencode($value); |
|
|
|
|
} |
|
|
|
|
if (count($param_string_parts) > 0) |
|
|
|
|
if (count($param_string_parts) > 0) { |
|
|
|
|
$result .= '&'.implode('&', $param_string_parts); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
|
@ -831,6 +838,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
$param_string_parts[] = urlencode($key).'='.urlencode($value); |
|
|
|
|
} |
|
|
|
|
$res = implode('&', $param_string_parts); |
|
|
|
|
|
|
|
|
|
return $res; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -901,10 +909,10 @@ class SortableTable extends HTML_Table |
|
|
|
|
*/ |
|
|
|
|
public function filter_data($row) |
|
|
|
|
{ |
|
|
|
|
$url_params = $this->get_sortable_table_param_string().'&'.$this->get_additional_url_paramstring(); |
|
|
|
|
$url_params = $this->get_sortable_table_param_string().'&'.$this->get_additional_url_paramstring(); |
|
|
|
|
|
|
|
|
|
foreach ($this->column_filters as $column => & $function) { |
|
|
|
|
$firstParam = isset($row[$column]) ? $row[$column] : 0; |
|
|
|
|
|
|
|
|
|
$row[$column] = call_user_func($function, $firstParam, $url_params, $row); |
|
|
|
|
} |
|
|
|
|
if (count($this->form_actions) > 0) { |
|
|
|
|
@ -923,6 +931,7 @@ class SortableTable extends HTML_Table |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $row; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -966,8 +975,6 @@ class SortableTable extends HTML_Table |
|
|
|
|
|
|
|
|
|
return $data; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -1032,7 +1039,6 @@ class SortableTableFromArray extends SortableTable |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Sortable table which can be used for data available in an array |
|
|
|
|
* |
|
|
|
|
|