示例#1
0
 /**
  * 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';
 }