function activity() { $this->_validate_user('manage/activity'); $this->load->module_model(FUEL_FOLDER, 'logs_model'); $this->load->library('pagination'); $this->load->library('data_table'); $this->load->helper('convert'); $this->nav_selected = 'manage/activity'; $page_state = $this->_get_page_state(); /* PROCESS PARAMS BEGIN */ $filters = array(); $defaults = array(); $defaults['col'] = 'entry_date'; $defaults['order'] = 'asc'; $defaults['offset'] = 0; $defaults['limit'] = 25; $defaults['search_term'] = ''; $defaults['precedence'] = NULL; $uri_params = uri_safe_batch_decode(fuel_uri_segment(4), '|', TRUE); $uri_params = array(); if (fuel_uri_segment(4)) { $uri_params['offset'] = (int) fuel_uri_segment(4); } $posted = array(); if (!empty($_POST)) { if ($this->input->post('col')) { $posted['col'] = $this->input->post('col'); } if ($this->input->post('order')) { $posted['order'] = $this->input->post('order'); } if ($this->input->post('limit')) { $posted['limit'] = $this->input->post('limit'); } if ($this->input->post('limit')) { $posted['offset'] = (int) $this->input->post('offset'); } $posted['search_term'] = $this->input->post('search_term'); } //$params = array_merge($defaults, $uri_params, $posted); $params = array_merge($defaults, $page_state, $uri_params, $posted); if ($params['search_term'] == lang('label_search')) { $params['search_term'] = NULL; } /* PROCESS PARAMS END */ $seg_params = $params; unset($seg_params['offset']); $seg_params = uri_safe_batch_encode($seg_params, '|', TRUE); // if (!is_ajax() AND !empty($_POST)) // { // $uri = fuel_url('manage/activity/offset/'.$params['offset']); // redirect($uri); // } $filters['first_name'] = $params['search_term']; $filters['last_name'] = $params['search_term']; $filters['message'] = $params['search_term']; $filters['entry_date'] = $params['search_term']; $this->logs_model->add_filters($filters); // pagination $config['base_url'] = fuel_url('manage/activity/offset/'); $config['total_rows'] = $this->logs_model->list_items_total(); $config['uri_segment'] = fuel_uri_index(4); $config['per_page'] = $params['limit']; $config['page_query_string'] = FALSE; $config['num_links'] = 5; $config['prev_link'] = lang('pagination_prev_page'); $config['next_link'] = lang('pagination_next_page'); $config['first_link'] = lang('pagination_first_link'); $config['last_link'] = lang('pagination_last_link'); $this->pagination->initialize($config); $this->_save_page_state($params); // data table $vars['params'] = $params; $vars['table'] = ''; if (is_ajax()) { $items = $this->logs_model->list_items($params['limit'], $params['offset'], $params['col'], $params['order']); $this->data_table->row_alt_class = 'alt'; $this->data_table->id = 'activity_data_table'; // change this so that it doesn't have clickable rows' $this->data_table->only_data_cols = array('id'); $this->data_table->set_sorting($params['col'], $params['order']); $this->data_table->auto_sort = TRUE; $this->data_table->sort_js_func = 'page.sortList'; $headers = array('entry_date' => lang('form_label_entry_date'), 'name' => lang('form_label_name'), 'message' => lang('form_label_message')); $this->data_table->assign_data($items, $headers); $vars['table'] = $this->data_table->render(); $this->load->view('_blocks/module_list_table', $vars); return; } else { $this->load->library('form_builder'); $this->js_controller_params['method'] = 'activity'; $vars['table'] = $this->load->view('_blocks/module_list_table', $vars, TRUE); $vars['pagination'] = $this->pagination->create_links(); // for extra module filters $field_values = array(); $this->_render('manage/activity', $vars); } }
function items() { $this->load->library('data_table'); $params = $this->_list_process(); $seg_params = $params; unset($seg_params['offset']); $seg_params = uri_safe_batch_encode($seg_params, '|', TRUE); // save page state $this->_save_page_state($params); if (!is_ajax() and !empty($_POST)) { //$uri = $this->config->item('fuel_path', 'fuel').$this->module.'/items/params/'.$seg_params.'/offset/'.$params['offset']; $uri = $this->config->item('fuel_path', 'fuel') . $this->module . '/items/offset/' . $params['offset']; redirect($uri); } // create search filter $filters[$this->display_field] = $params['search_term']; //$filters = array(); // sort of hacky here... to make it easy for the model to just filter on the search term (like the users model) $this->model->filter_value = $params['search_term']; foreach ($this->filters as $key => $val) { $filters[$key] = $params[$key]; } // set model filters before pagination and setting table data if (method_exists($this->model, 'add_filters')) { $this->model->add_filters($filters); } $this->config->set_item('enable_query_strings', FALSE); // pagination $config['base_url'] = fuel_url($this->module) . '/items/offset/'; $config['total_rows'] = $this->model->list_items_total(); $config['uri_segment'] = fuel_uri_index(4); $config['per_page'] = (int) $params['limit']; $config['page_query_string'] = FALSE; $config['num_links'] = 5; $this->pagination->initialize($config); if (method_exists($this->model, 'tree')) { //$vars['tree'] = "Loading...\n<ul></ul>\n"; $vars['tree'] = "\n<ul></ul>\n"; } // set vars $vars['params'] = $params; $vars['table'] = ''; // reload table if (is_ajax()) { // data table items... check col value to know if we want to send sorting parameter if (empty($params['col']) or empty($params['order'])) { $items = $this->model->list_items($params['limit'], $params['offset']); } else { $items = $this->model->list_items($params['limit'], $params['offset'], $params['col'], $params['order']); } // set data table actions... look first for item_actions set in the fuel_modules foreach ($this->table_actions as $key => $val) { if (!is_int($key)) { $action_type = 'url'; $action_val = $this->table_actions[$key]; if (is_array($val)) { $action_type = key($val); $action_val = current($val); } $this->data_table->add_action($key, $action_val, $action_type); } else { if (strtoupper($val) == 'DELETE') { $delete_func = ' $CI =& get_instance(); $link = ""; if ($CI->fuel_auth->has_permission($CI->permission, "delete")) { $url = site_url("/".$CI->config->item("fuel_path", "fuel").$CI->module_uri."/delete/".$cols[$CI->model->key_field()]); $link = "<a href=\\"".$url."\\">DELETE</a>"; $link .= " <input type=\\"checkbox\\" name=\\"delete[".$cols[$CI->model->key_field()]."]\\" value=\\"1\\" id=\\"delete_".$cols[$CI->model->key_field()]."\\" class=\\"multi_delete\\"/>"; } return $link;'; $delete_func = create_function('$cols', $delete_func); $this->data_table->add_action($val, $delete_func, 'func'); } else { if (strtoupper($val) != 'VIEW' or !empty($this->preview_path) and strtoupper($val) == 'VIEW') { $this->data_table->add_action($val, site_url('/' . $this->config->item('fuel_path', 'fuel') . $this->module_uri . '/' . strtolower($val) . '/{' . $this->model->key_field() . '}'), 'url'); } } } } if (!$this->rows_selectable) { $this->data_table->id = 'data_table_noselect'; $this->data_table->row_action = FALSE; } else { $this->data_table->row_action = TRUE; } $this->data_table->row_alt_class = 'alt'; $this->data_table->only_data_fields = array($this->model->key_field()); $this->data_table->set_sorting($params['col'], $params['order']); $this->data_table->auto_sort = TRUE; $this->data_table->actions_field = 'last'; $this->data_table->no_data_str = lang('no_data'); $_unpub_func = ' $CI =& get_instance(); $can_publish = $CI->fuel_auth->has_permission($CI->permission, "publish"); $is_publish = (isset($cols[\'published\'])) ? TRUE : FALSE; if ((isset($cols[\'published\']) AND $cols[\'published\'] == "no") OR (isset($cols[\'active\']) AND $cols[\'active\'] == "no")) { $text_class = ($can_publish) ? "publish_text unpublished toggle_publish": "published"; $action_class = ($can_publish) ? "publish_action unpublished hidden": "unpublished hidden"; $col_txt = ($is_publish) ? \'click to publish\' : \'click to activate\'; return "<span class=\\"publish_hover\\"><span class=\\"".$text_class."\\" id=\\"row_published_".$cols["' . $this->model->key_field() . '"]."\\">no</span><span class=\\"".$action_class."\\">".$col_txt."</span></span>"; } else { $text_class = ($can_publish) ? "publish_text published toggle_unpublish": "published"; $action_class = ($can_publish) ? "publish_action published hidden": "published hidden"; $col_txt = ($is_publish) ? \'click to unpublish\' : \'click to deactivate\'; return "<span class=\\"publish_hover\\"><span class=\\"".$text_class."\\" id=\\"row_published_".$cols["' . $this->model->key_field() . '"]."\\">yes</span><span class=\\"".$action_class."\\">".$col_txt."</span></span>"; }'; $_unpublished = create_function('$cols', $_unpub_func); $this->data_table->add_field_formatter('published', $_unpublished); $this->data_table->add_field_formatter('active', $_unpublished); $this->data_table->auto_sort = TRUE; $this->data_table->sort_js_func = 'page.sortList'; $this->data_table->assign_data($items); $vars['table'] = $this->data_table->render(); $this->load->module_view(FUEL_FOLDER, '_blocks/module_list_table', $vars); return; } else { $this->load->library('form_builder'); $this->js_controller_params['method'] = 'items'; $vars['table'] = $this->load->module_view(FUEL_FOLDER, '_blocks/module_list_table', $vars, TRUE); $vars['pagination'] = $this->pagination->create_links(); // for extra module 'filters' $field_values = array(); foreach ($this->filters as $key => $val) { $field_values[$key] = $params[$key]; } $this->form_builder->question_keys = array(); //$this->form_builder->hidden = (array) $this->model->key_field(); $this->form_builder->label_layout = 'left'; $this->form_builder->form->validator =& $this->model->get_validation(); $this->form_builder->submit_value = null; $this->form_builder->use_form_tag = FALSE; $this->form_builder->set_fields($this->filters); $this->form_builder->display_errors = FALSE; $this->form_builder->css_class = 'more_filters'; $this->form_builder->set_field_values($field_values); $vars['more_filters'] = $this->form_builder->render(); $this->_render($this->views['list'], $vars); } }