load->library(array('pagination', 'querystring')); } /** * 목록을 가져오는 메소드입니다 */ public function index() { $view = array(); $view['view'] = array(); /** * 페이지에 숫자가 아닌 문자가 입력되거나 1보다 작은 숫자가 입력되면 에러 페이지를 보여줍니다. */ $param =& $this->querystring; $app_id = $this->input->get('app_id'); if ($app_id) { $where = array( 'cat_parent' => '0', 'app_id' => $app_id, ); $result = $this->{$this->modelname}->get('', '', $where, '', '', 'cat_sort', 'desc'); $view['view']['data'] = $result; } $view['view']['applist'] = $this->Apps_model->app_list(); /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout', 'skin' => 'index'); $view['layout'] = $this->layoutlib->admin($layoutconfig, $this->configlib->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); } /** * 게시판 글쓰기 또는 수정 페이지를 가져오는 메소드입니다 */ public function write($app_id = 0, $pid = 0) { $view = array(); $view['view'] = array(); /** * 프라이머리키에 숫자형이 입력되지 않으면 에러처리합니다 */ if ($pid) { $pid = (int) $pid; if (empty($pid) OR $pid < 1) { show_404(); } } $primary_key = $this->{$this->modelname}->primary_key; /** * 수정 페이지일 경우 기존 데이터를 가져옵니다 */ $getdata = array(); if ($pid) { $getdata = $this->{$this->modelname}->get_one($pid); } /** * Validation 라이브러리를 가져옵니다 */ $this->load->library('form_validation'); /** * 전송된 데이터의 유효성을 체크합니다 */ $config = array( array( 'field' => 'cat_code', 'label' => '분류코드', 'rules' => 'trim|required|alpha_numeric', ), array( 'field' => 'cat_name', 'label' => '카테고리명', 'rules' => 'trim|required', ), array( 'field' => 'cat_parent', 'label' => 'Parent', 'rules' => 'trim|numeric', ), array( 'field' => 'cat_sort', 'label' => '정렬순서', 'rules' => 'trim|numeric', ), ); $this->form_validation->set_rules($config); /** * 유효성 검사를 하지 않는 경우, 또는 유효성 검사에 실패한 경우입니다. * 즉 글쓰기나 수정 페이지를 보고 있는 경우입니다 */ if ($this->form_validation->run() === false) { $parent = ''; if ($cat_parent = (int) $this->input->get('cat_parent') OR $cat_parent = element('cat_parent', $getdata)) { $pwhere = array( 'app_id' => $app_id, 'cat_id' => $cat_parent, ); $parent = $this->{$this->modelname}->get_one('', '', $pwhere); if ( ! element('cat_id', $parent)) { alert_close('잘못된 접근입니다.'); } } $view['view']['data'] = $getdata; $view['view']['parent'] = $parent; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $primary_key; /** * 어드민 레이아웃을 정의합니다 */ $layoutconfig = array('layout' => 'layout_popup', 'skin' => 'write'); $view['layout'] = $this->layoutlib->admin($layoutconfig, $this->configlib->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); } else { /** * 유효성 검사를 통과한 경우입니다. * 즉 데이터의 insert 나 update 의 process 처리가 필요한 상황입니다 */ /** * 게시물을 수정하는 경우입니다 */ if ($this->input->post($primary_key)) { $uniqwhere = array( 'app_id' => $app_id, 'cat_code' => $this->input->post('cat_code'), 'cat_id <>' => $this->input->post($primary_key), ); $uniqcheck = $this->{$this->modelname}->get_one('', '', $uniqwhere); if (element('cat_id', $uniqcheck)) { alert('중복된 코드가 존재합니다.'); } $updatedata = array( 'cat_code' => $this->input->post('cat_code'), 'cat_name' => $this->input->post('cat_name'), 'cat_sort' => $this->input->post('cat_sort'), 'cat_publish_time' => $this->input->post('cat_publish_time'), ); $this->{$this->modelname}->update($this->input->post($primary_key), $updatedata); $cat_parent = (int) $this->input->post('cat_parent'); alert_refresh_close('정상적으로 수정되었습니다', admin_url('appmanage/appcats?app_id=' . $app_id . '&cat1_id=' . $cat_parent)); } else { $uniqwhere = array( 'app_id' => $app_id, 'cat_code' => $this->input->post('cat_code'), ); $uniqcheck = $this->{$this->modelname}->get_one('', '', $uniqwhere); if (element('cat_id', $uniqcheck)) { alert('중복된 코드가 존재합니다.'); } $cat_parent = (int) $this->input->post('cat_parent'); if ($cat_parent) { $pwhere = array( 'app_id' => $app_id, 'cat_id' => $cat_parent, ); $parent = $this->{$this->modelname}->get_one('', '', $pwhere); if ( ! element('cat_id', $parent)) { alert_close('잘못된 접근입니다.'); } $cat_depth = element('cat_depth', $parent) + 1; } else { $cat_depth = 1; } $updatedata = array( 'app_id' => $app_id, 'cat_parent' => $cat_parent, 'cat_depth' => $cat_depth, 'cat_code' => $this->input->post('cat_code'), 'cat_name' => $this->input->post('cat_name'), 'cat_sort' => $this->input->post('cat_sort'), 'cat_publish_time' => $this->input->post('cat_publish_time'), ); /** * 게시물을 새로 입력하는 경우입니다 */ $insert_id = $this->{$this->modelname}->insert($updatedata); alert_refresh_close('정상적으로 입력되었습니다', admin_url('appmanage/appcats?app_id=' . $app_id . '&cat1_id=' . $cat_parent)); } } } public function getcategory($app_id= '', $parent_id = '', $depth = '') { if ( ! $app_id) show_404(); if ( ! $parent_id) show_404(); if ( ! $depth) show_404(); if ($depth != '2' && $depth != '3' && $depth != '4') show_404(); $view = array(); $view['view'] = array(); $where = array( 'app_id' => $app_id, 'cat_parent' => $parent_id, 'cat_depth' => $depth, ); $result = $this->{$this->modelname}->get('', '', $where, '', '', 'cat_sort', 'desc'); $nextdepth = $depth + 1; /** * primary key 정보를 저장합니다 */ $view['view']['primary_key'] = $this->{$this->modelname}->primary_key; $html = '
  • '; $cattitle = ''; if ($depth == '2') { $cattitle = '2차분류'; } else if ($depth == '3') { $cattitle = '소분류'; } else if ($depth == '4') { $cattitle = '세분류'; } $html .= $cattitle . '
  • '; if ($result) { foreach ($result as $key => $value) { $html .= '
  • '; if ($nextdepth < 5) { $html .= ''; } $html .= html_escape(element('cat_name', $value)); if ($nextdepth < 5) { $html .= ''; } $html .= ' ('. html_escape(element('cat_code', $value)) . ')'; $html .= '' . element('cat_sort', $value) . ''; $html .= '
  • '; } } $html .= '
    '; echo $html; } /** * 삭제를 하는 경우 실행되는 메소드입니다 */ public function delete($id='') { if ( ! $id) show_404(); $data = $this->{$this->modelname}->get_one($id); if ( ! element('app_id', $data)) { alert_close('잘못된 접근입니다.'); } /** * 체크한 게시물의 삭제를 실행합니다 */ $this->_recursiveDelete(element('app_id', $data), $id); alert_refresh_close('정상적으로 삭제되었습니다'); } public function _recursiveDelete($app_id, $id) { $result=$this->{$this->modelname}->get('', '', array('app_id' => $app_id, 'cat_parent' => $id)); if (count($result)) { foreach($result as $current) { $this->_recursiveDelete($app_id, element('cat_id', $current)); } } $this->{$this->modelname}->delete($id); return true; } }