Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
    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);
        }
    }