/** * joosAutoadmin::listing() * * Генерация таблицы с записями * * @param object joosModel $obj * @param array $obj_list * @param object joosAdminPagenator $pagenav * @param array $fields_list * @param string $group_by Используется для указания границ сортировки (для сортировки в пределах определенного значения. Например, в модулях, сортировка происходит в границах позиции модуля (за пределы группы нельзя перетащить строку в процессе сортировки)) */ public static function listing(joosModel $obj, array $obj_list, joosAdminPagenator $pagenav, array $fields_list, $group_by = '') { // получаем название текущего компонента $option = joosRequest::param('option'); $task = joosRequest::param('task'); $fields_info = $obj->get_fieldinfo(); $header = $obj->get_tableinfo(); $header_extra = self::get_extrainfo($obj); $header_extra = self::prepare_extra($obj, $header_extra); joosAdminView::set_param('component_title', isset($header['header_main']) ? $header['header_main'] : ''); joosAdminView::set_param('component_header', $header['header_list']); $class = self::$active_actions_class; joosAdminView::set_param('submenu', $class::get_submenu()); joosAdminView::set_param('current_model', self::get_active_menu_name()); //для подсчёта количества столбцов таблицы $fields_to_table = array(); $table_headers = ''; //сюда будем складывать заголовки //перебор полей для вывода в виде заголовков столбцов foreach ($fields_list as $field) { //если этот столбец нужно выводить if (isset($fields_info[$field]['in_admintable']) && $fields_info[$field]['in_admintable'] == TRUE) { //ширина столбца $width = isset($fields_info[$field]['html_table_element_param']['width']) ? ' width="' . $fields_info[$field]['html_table_element_param']['width'] . '"' : ''; //дополнительный класс $class = isset($fields_info[$field]['html_table_element_param']['class']) ? ' class="' . $fields_info[$field]['html_table_element_param']['class'] . '"' : ''; $table_headers .= '<th ' . $width . $class . '>' . $fields_info[$field]['name'] . '</th>'; $fields_to_table[] = $field; } } joosAdminView::set_listing_param('table_headers', $table_headers); //сюда соберём содержимое таблички $table_body = ''; $n = count($fields_to_table); $k = 1; $i = 0; foreach ($obj_list as $values) { $dop_class = $group_by ? $group_by . '-' . $values->{$group_by} : ''; $table_body .= '<tr class="row-' . $k . '" ' . ($group_by ? ' data-obj-ordering="' . $values->ordering . '"' : '') . ' data-obj-id="' . $values->{$obj->get_key_field()} . '" id="adminlist-row-' . $values->{$obj->get_key_field()} . '" rel="' . $dop_class . '">'; $table_body .= '<td align="center">' . joosHtml::id_box($i, $values->{$obj->get_key_field()}) . '</td>'; for ($index = 0; $index < $n; $index++) { $current_value = isset($values->{$fields_to_table}[$index]) ? $values->{$fields_to_table}[$index] : null; $data = joosAutoadmin::get_listing_html_element($obj, $fields_info[$fields_to_table[$index]], $fields_to_table[$index], $current_value, $values, $option); $class = isset($fields_info[$fields_to_table[$index]]['html_table_element_param']['class']) ? ' class="' . $fields_info[$fields_to_table[$index]]['html_table_element_param']['class'] . '"' : ''; $align = isset($fields_info[$fields_to_table[$index]]['html_table_element_param']['align']) ? ' align="' . $fields_info[$fields_to_table[$index]]['html_table_element_param']['align'] . '" ' : ''; $table_body .= '<td ' . $align . $class . '>' . $data . '</td>'; } $table_body .= '</tr>'; $k = 1 - $k; ++$i; } joosAdminView::set_listing_param('table_body', $table_body); //Подключаем шаблон листинга //@todo Хочу красивше чтобы было *Ирина require_once JTEMPLATE_ADMIN_BASE . DS . 'html' . DS . 'listing.php'; }