56 changed files with 1798 additions and 931 deletions
			
			
		- 
					99_src/admin/js/admin.js
 - 
					9_src/admin/js/modules/datagrid.js
 - 
					24_src/admin/js/modules/member.js
 - 
					16_src/admin/scss/plugins/_plugins_custom.scss
 - 
					2_src/common/js/modules/components.js
 - 
					0_src/common/js/plugins/jquery.tmpl.js
 - 
					2public_html/assets/css/admin.min.css
 - 
					2public_html/assets/css/admin.min.css.map
 - 
					2public_html/assets/css/desktop.min.css
 - 
					2public_html/assets/css/desktop.min.css.map
 - 
					2public_html/assets/css/mobile.min.css
 - 
					2public_html/assets/css/mobile.min.css.map
 - 
					BINpublic_html/assets/images/admin/help/naver_syndi01.png
 - 
					BINpublic_html/assets/images/admin/help/naver_syndi02.png
 - 
					BINpublic_html/assets/images/admin/help/naver_syndi03.png
 - 
					2public_html/assets/js/admin.min.js
 - 
					2public_html/assets/js/admin.min.js.map
 - 
					2public_html/assets/js/desktop.min.js
 - 
					2public_html/assets/js/desktop.min.js.map
 - 
					2public_html/assets/js/mobile.min.js
 - 
					2public_html/assets/js/mobile.min.js.map
 - 
					2source.info.json
 - 
					2wheeparam/application/config/routes.php
 - 
					77wheeparam/application/controllers/Board.php
 - 
					88wheeparam/application/controllers/Helptool.php
 - 
					1wheeparam/application/controllers/admin/Board.php
 - 
					131wheeparam/application/controllers/admin/Management.php
 - 
					134wheeparam/application/controllers/admin/Members.php
 - 
					63wheeparam/application/controllers/admin/ajax/Management.php
 - 
					186wheeparam/application/controllers/admin/ajax/Members.php
 - 
					62wheeparam/application/controllers/ajax/Members.php
 - 
					154wheeparam/application/controllers/customer/Qna.php
 - 
					18wheeparam/application/libraries/Member.php
 - 
					146wheeparam/config/wheeparam.sql
 - 
					9wheeparam/views/themes/admin/board/form.php
 - 
					34wheeparam/views/themes/admin/help/naver_syndi.php
 - 
					4wheeparam/views/themes/admin/management/banner.php
 - 
					41wheeparam/views/themes/admin/management/banner_form.php
 - 
					179wheeparam/views/themes/admin/management/qna.php
 - 
					79wheeparam/views/themes/admin/management/qna_category.php
 - 
					15wheeparam/views/themes/admin/management/qna_category_form.php
 - 
					72wheeparam/views/themes/admin/management/qna_view.php
 - 
					146wheeparam/views/themes/admin/members/info.php
 - 
					200wheeparam/views/themes/admin/members/lists.php
 - 
					140wheeparam/views/themes/admin/members/log.php
 - 
					4wheeparam/views/themes/admin/members/login.php
 - 
					130wheeparam/views/themes/admin/members/modify.php
 - 
					31wheeparam/views/themes/admin/members/password.php
 - 
					151wheeparam/views/themes/admin/members/point.php
 - 
					33wheeparam/views/themes/admin/members/point_form.php
 - 
					136wheeparam/views/themes/admin/members/points.php
 - 
					3wheeparam/views/themes/admin/setting/admin.php
 - 
					2wheeparam/views/themes/admin/statics/visit.php
 - 
					2wheeparam/views/themes/admin/theme.php
 - 
					41wheeparam/views/themes/desktop/customer/qna/lists.php
 - 
					39wheeparam/views/themes/desktop/customer/qna/write.php
 
						
							
						
						
							2
	
						
						public_html/assets/css/admin.min.css
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/css/admin.min.css.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/css/desktop.min.css
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/css/desktop.min.css.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/css/mobile.min.css
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/css/mobile.min.css.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						| 
		 Before Width: 700 | Height: 381 | Size: 19 KiB  | 
| 
		 Before Width: 700 | Height: 538 | Size: 67 KiB  | 
| 
		 Before Width: 920 | Height: 109 | Size: 27 KiB  | 
						
							
						
						
							2
	
						
						public_html/assets/js/admin.min.js
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/js/admin.min.js.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/js/desktop.min.js
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/js/desktop.min.js.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/js/mobile.min.js
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						
						
							
						
						
							2
	
						
						public_html/assets/js/mobile.min.js.map
						
							File diff suppressed because it is too large
							
							
								
									View File
								
							
						
					
				File diff suppressed because it is too large
							
							
								
									View File
								
							
						@ -0,0 +1,186 @@ | 
			
		|||||
 | 
				<?php | 
			
		||||
 | 
				defined('BASEPATH') OR exit('No direct script access allowed'); | 
			
		||||
 | 
				require APPPATH . '/libraries/REST_Controller.php'; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				class Members extends REST_Controller | 
			
		||||
 | 
				{ | 
			
		||||
 | 
				    /************************************************************** | 
			
		||||
 | 
				     * 사용자 목록 | 
			
		||||
 | 
				     ***************************************************************/ | 
			
		||||
 | 
				    function index_get() | 
			
		||||
 | 
				    { | 
			
		||||
 | 
				        $page_rows = $this->get('take', TRUE); | 
			
		||||
 | 
				        $start = $this->get('skip', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $sdate = $this->input->get('sdate', TRUE); | 
			
		||||
 | 
				        $startdate = $this->input->get('startdate', TRUE); | 
			
		||||
 | 
				        $enddate = $this->input->get('enddate', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(! empty($sdate) && !empty($startdate)) $this->db->where('mem_'.$sdate.' >=', $startdate.' 00:00:00'); | 
			
		||||
 | 
				        if(! empty($sdate) && !empty($enddate)) $this->db->where('mem_'.$sdate.' <=', $enddate.' 23:59:59'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(empty($page_rows)) $this->db->limit($page_rows, $start); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $order_by = 'mem_idx DESC'; | 
			
		||||
 | 
				        $this->db->order_by($order_by); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->db->select("SQL_CALC_FOUND_ROWS *", FALSE); | 
			
		||||
 | 
				        $this->db->from('member'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $result = $this->db->get(); | 
			
		||||
 | 
				        $return['lists'] = $result->result_array(); | 
			
		||||
 | 
				        $return['totalCount'] = (int)$this->db->query("SELECT FOUND_ROWS() AS cnt")->row(0)->cnt; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        foreach($return['lists'] as $i=>&$row) { | 
			
		||||
 | 
				            $row['nums'] = $return['totalCount'] - (int)$start - $i; | 
			
		||||
 | 
				            $row['mem_regip'] = long2ip((int)$row['mem_regip']); | 
			
		||||
 | 
				            $row['mem_logip'] = long2ip((int)$row['mem_logip']); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->response($return, 200); | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				     | 
			
		||||
 | 
				    /************************************************************** | 
			
		||||
 | 
				     * 사용자 상태 변경 | 
			
		||||
 | 
				     ***************************************************************/ | 
			
		||||
 | 
				    function status_post() | 
			
		||||
 | 
				    { | 
			
		||||
 | 
				        if(! $this->member->is_super() ) | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'권한이 없습니다.'), 400); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $mem_idx = $this->post('mem_idx', TRUE); | 
			
		||||
 | 
				        $current_status = $this->post('current_status', TRUE); | 
			
		||||
 | 
				        $change_status = $this->post('change_status', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(empty($mem_idx)) | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'관리자로 설정할 회원이 존재하지 않습니다.'), 400); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(! $mem = $this->member->get_member($mem_idx,'mem_idx') ) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'존재하지 않는 회원입니다.'), 400); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if( $mem['mem_status'] != $current_status ) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'변경전 회원상태가 실제 DB상 회원상태와 일치하지 않습니다.'), 400); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if( ! in_array($change_status, array('Y','N','D','H'))) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'변경하려는 회원상태가 올바르지 않습니다.'), 400); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->db->trans_start(); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if( $change_status == 'Y' ) { | 
			
		||||
 | 
				            $this->db->set('mem_leavetime', '0000-00-00 00:00:00'); | 
			
		||||
 | 
				            $this->db->set('mem_bantime', '0000-00-00 00:00:00'); | 
			
		||||
 | 
				            $this->db->set('mem_htime', '0000-00-00 00:00:00'); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				        else if ($change_status == 'B') { | 
			
		||||
 | 
				            $this->db->set('mem_bantime', date('Y-m-d H:i:s')); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				        else if ($change_status == 'N') { | 
			
		||||
 | 
				            $this->db->set('mem_leavetime', date('Y-m-d H:i:s')); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				        else if ($change_status == 'H') { | 
			
		||||
 | 
				            $this->db->set('mem_htime', date('Y-m-d H:i:s')); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->db->set('mem_status', $change_status)->where('mem_idx', $mem_idx)->update('member'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if ($this->db->trans_status() === FALSE) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $this->db->trans_rollback(); | 
			
		||||
 | 
				            $this->response(array('status'=>FALSE, 'message'=>'시스템 오류가 발생하였습니다.'), 500); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				        else | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $this->db->trans_commit(); | 
			
		||||
 | 
				            $this->response(array('status'=>TRUE, 'message'=>'회원 상태변경이 완료되었습니다.'), 200); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				     | 
			
		||||
 | 
				    function logs_get() | 
			
		||||
 | 
				    { | 
			
		||||
 | 
				        $page_rows = $this->get('take', TRUE); | 
			
		||||
 | 
				        $start = $this->get('skip', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $start_date = $this->input->get('startdate', TRUE, date('Y-m-d', strtotime("-1 month", time()))); | 
			
		||||
 | 
				        $end_date = $this->input->get('enddate', TRUE, date('Y-m-d')); | 
			
		||||
 | 
				        $st   = $this->input->get('st', TRUE); | 
			
		||||
 | 
				        $sc  = $this->input->get('sc', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if ( !empty($st) && !empty($sc) ) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            if( $sc ==  'nickname' OR $sc ==  'userid') | 
			
		||||
 | 
				            { | 
			
		||||
 | 
				                $sc = "member_log.mem_" . $sc; | 
			
		||||
 | 
				                $this->db->like($sc, $st); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				            else if ( $sc == 'idx' ) | 
			
		||||
 | 
				            { | 
			
		||||
 | 
				                $this->db->where('member_log.mem_idx', $st); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(! empty($start_date)) $this->db->where('mlg_regtime >=',$start_date . " 00:00:00"); | 
			
		||||
 | 
				        if(! empty($end_date)) $this->db->where('mlg_regtime <=',$end_date . " 23:59:59"); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if(! empty($page_rows)) $this->db->limit($page_rows, $start); | 
			
		||||
 | 
				        $this->db->select("SQL_CALC_FOUND_ROWS *", FALSE); | 
			
		||||
 | 
				        $this->db->from('member_log'); | 
			
		||||
 | 
				        $this->db->join('member','member.mem_idx=member_log.mem_idx','inner'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $result = $this->db->get(); | 
			
		||||
 | 
				        $return['lists'] = $result->result_array(); | 
			
		||||
 | 
				        $return['totalCount'] = (int)$this->db->query("SELECT FOUND_ROWS() AS cnt")->row(0)->cnt; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        foreach($return['lists'] as $i=>&$row) { | 
			
		||||
 | 
				            $row['nums'] = $return['totalCount'] - $i - $start; | 
			
		||||
 | 
				            $row['mlg_is_mobile'] = $row['mlg_is_mobile'] == 'Y'; | 
			
		||||
 | 
				            $row['mlg_ip'] =  long2ip((int)$row['mlg_ip']); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->response($return, 200); | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    /************************************************************** | 
			
		||||
 | 
				     * 포인트 목록 | 
			
		||||
 | 
				     ***************************************************************/ | 
			
		||||
 | 
				    function points_get() | 
			
		||||
 | 
				    { | 
			
		||||
 | 
				        $start_date = $this->get('startdate', TRUE); | 
			
		||||
 | 
				        $end_date = $this->get('enddate', TRUE); | 
			
		||||
 | 
				        $target_type = $this->get('target_type', TRUE); | 
			
		||||
 | 
				        $mem_idx = $this->get('mem_idx', TRUE); | 
			
		||||
 | 
				        $page_rows = $this->get('take', TRUE); | 
			
		||||
 | 
				        $start = $this->get('skip', TRUE); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        if( ! empty($target_type) ) $this->db->where('target_type', $target_type); | 
			
		||||
 | 
				        if( ! empty($start_date)) $this->db->where('reg_datetime >= ', $start_date . ' 00:00:00'); | 
			
		||||
 | 
				        if( ! empty($end_date)) $this->db->where('reg_datetime <= ', $end_date . ' 23:59:59'); | 
			
		||||
 | 
				        if( ! empty($mem_idx)) $this->db->where('MP.mem_idx', $mem_idx); | 
			
		||||
 | 
				        if( ! empty($page_rows)) $this->db->limit($page_rows, $start); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->db->order_by('mpo_idx DESC'); | 
			
		||||
 | 
				        $this->db->select("SQL_CALC_FOUND_ROWS MP.*, M.*", FALSE); | 
			
		||||
 | 
				        $this->db->from('member_point AS MP'); | 
			
		||||
 | 
				        $this->db->join('member AS M','M.mem_idx=MP.mem_idx','inner'); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $result = $this->db->get(); | 
			
		||||
 | 
				        $return['lists'] = $result->result_array(); | 
			
		||||
 | 
				        $return['totalCount'] = (int)$this->db->query("SELECT FOUND_ROWS() AS cnt")->row(0)->cnt; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        foreach($return['lists'] as $i=>&$row) | 
			
		||||
 | 
				        { | 
			
		||||
 | 
				            $row['nums'] = $return['totalCount'] - $i - $start; | 
			
		||||
 | 
				            $row['target_type'] = point_type($row['target_type']); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $this->response($return, 200); | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				} | 
			
		||||
@ -1,34 +0,0 @@ | 
			
		|||||
<div class="col-xs-12"> | 
				 | 
			
		||||
    <div class="page-header"> | 
				 | 
			
		||||
        <h2 class="page-title"><i class="far fa-question-circle" style="display:inline"></i> 네이버 신디케이션 API 등록방법</h2> | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
    <div class="admin-help-wrap"> | 
				 | 
			
		||||
        <ul> | 
				 | 
			
		||||
            <li> | 
				 | 
			
		||||
                <p class="MT20 MB20">1. NAVER 웹마스터도구 페이지로 이동합니다. <a href="http://webmastertool.naver.com/" target="_blank"  class="point-color">NAVER 웹마스터도구 페이지 바로가기</a></p> | 
				 | 
			
		||||
                <img src="/assets/images/admin/help/naver_ownership01.jpg" alt=""> | 
				 | 
			
		||||
            </li> | 
				 | 
			
		||||
            <li> | 
				 | 
			
		||||
                <p class="MT20 MB20"> | 
				 | 
			
		||||
                    2. 로그인 후 <span class="point-color">연동 사이트 목록</span>페이지로 이동됩니다.<br> | 
				 | 
			
		||||
                    연동된 사이트를 더블클릭 합니다. | 
				 | 
			
		||||
                </p> | 
				 | 
			
		||||
                <img src="/assets/images/admin/help/naver_syndi01.png" alt=""> | 
				 | 
			
		||||
            </li> | 
				 | 
			
		||||
            <li> | 
				 | 
			
		||||
                <p class="MT20 MB20"> | 
				 | 
			
		||||
                    3. 왼쪽 메뉴에  <span class="point-color">설정</span>메뉴 부분을 클릭하여  <span class="point-color">신디케이션 인증키</span>를 복사합니다. | 
				 | 
			
		||||
                </p> | 
				 | 
			
		||||
                <img src="/assets/images/admin/help/naver_syndi02.png" alt=""> | 
				 | 
			
		||||
            </li> | 
				 | 
			
		||||
            <li> | 
				 | 
			
		||||
                <p class="MT20 MB20"> | 
				 | 
			
		||||
                    4. 휘파람 관리자 페이지로 돌아와 <span class="point-color">[신디케이션 인증키]</span>코드를 휘파람 보드 관리자 -> <span class="point-color">네이버 신디케이션 API KEY</span>에 붙여 넣습니다. | 
				 | 
			
		||||
                </p> | 
				 | 
			
		||||
                <img src="/assets/images/admin/help/naver_syndi03.png" alt=""> | 
				 | 
			
		||||
                <br> | 
				 | 
			
		||||
                <br> | 
				 | 
			
		||||
            </li> | 
				 | 
			
		||||
        </ul> | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
@ -0,0 +1,179 @@ | 
			
		|||||
 | 
				<div class="page-header" data-fit-aside> | 
			
		||||
 | 
				    <h1 class="page-title">Q&A 관리</h1> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<form data-grid-search onsubmit="grid.refresh(1);return false;" data-fit-aside autocomplete="off"> | 
			
		||||
 | 
				    <div data-ax-tbl> | 
			
		||||
 | 
				        <div data-ax-tr> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>작성 기간 검색</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" data-chained-datepicker="[name='enddate']" name="startdate" data-toggle="datepicker" value=""> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" name="enddate" data-toggle="datepicker" value=""> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>답변여부</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <select class="form-control" name="qna_ans_status"> | 
			
		||||
 | 
				                        <option value="">전체보기</option> | 
			
		||||
 | 
				                        <option value="N">미답변</option> | 
			
		||||
 | 
				                        <option value="Y">답변완료</option> | 
			
		||||
 | 
				                    </select> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>검색어 입력</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <select class="form-control form-control-inline" name="sc"> | 
			
		||||
 | 
				                        <option value="qna_title">질문 제목</option> | 
			
		||||
 | 
				                        <option value="qna_name">작성자</option> | 
			
		||||
 | 
				                        <option value="qna_phone">연락처</option> | 
			
		||||
 | 
				                        <option value="qna_email">이메일</option> | 
			
		||||
 | 
				                    </select> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" name="st" value=""> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <button class="btn btn-default btn-sm"><i class="fal fa-search"></i> 필터적용</button> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				            <div data-ax-td class="right"> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <button type="button" class="btn btn-default btn-sm" data-button="qna-category"><i class="fal fa-sitemap"></i> Q&A 유형 관리</button> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				</form> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<div class="H10" data-fit-aside></div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<div class="grid-wrapper" data-fit-content> | 
			
		||||
 | 
				    <div class="grid-container" id="grid-container"></div> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
				    var grid = new GRID('#grid-container', { | 
			
		||||
 | 
				        paging: { | 
			
		||||
 | 
				            pageSize: 20 | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        columns: [ | 
			
		||||
 | 
				            {caption:'번호', dataField:'nums', alignment:'right', width:60, dataType:'number', format:'fixedPoint'}, | 
			
		||||
 | 
				            {caption:'질문일시', dataField:'reg_datetime', alignment:'center', width:120}, | 
			
		||||
 | 
				            {caption:'Q&A유형', dataField:'qnc_title', alignment:'center', width:120}, | 
			
		||||
 | 
				            {caption:'질문제목', dataField:'qna_title', alignment:'left'}, | 
			
		||||
 | 
				            {caption:'질문자', dataField:'qna_name', alignment:'center', width:80}, | 
			
		||||
 | 
				            {caption:'구분', dataField:'reg_user', alignment:'center', width:80, customizeText:function(cell) {return cell.value > 0 ?'회원':'비회원'}}, | 
			
		||||
 | 
				            {caption:'연락처', dataField:'qna_phone', alignment:'center', width:120}, | 
			
		||||
 | 
				            {caption:'E-mail', dataField:'qna_email', alignment:'left', width:180}, | 
			
		||||
 | 
				            {caption:'답변여부', dataField:'qna_ans_status', alignment:'center', width:60, customizeText:function(cell) {return cell.value == 'Y' ?'답변완료':''}}, | 
			
		||||
 | 
				            {caption:'답변자', dataField:'qna_ans_upd_username', alignment:'center', width:80}, | 
			
		||||
 | 
				            {caption:'답변일시', dataField:'qna_ans_upd_datetime', alignment:'center', width:120, customizeText:function(cell) {return cell.value != '0000-00-00 00:00:00' ?cell.value:''}} | 
			
		||||
 | 
				        ], | 
			
		||||
 | 
				        dataSource: new DevExpress.data.DataSource({ | 
			
		||||
 | 
				            key : 'qna_idx', | 
			
		||||
 | 
				            load: function(loadOptions) { | 
			
		||||
 | 
				                var d = $.Deferred(); | 
			
		||||
 | 
				                var params = grid.getSearchParam(loadOptions); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				                $.ajax({ | 
			
		||||
 | 
				                    url : base_url + '/admin/ajax/management/qna', | 
			
		||||
 | 
				                    type: 'GET', | 
			
		||||
 | 
				                    async: false, | 
			
		||||
 | 
				                    cache: false, | 
			
		||||
 | 
				                    data: params | 
			
		||||
 | 
				                }).done(function(res) { | 
			
		||||
 | 
				                    d.resolve(res.lists, { | 
			
		||||
 | 
				                        totalCount : res.totalCount | 
			
		||||
 | 
				                    }); | 
			
		||||
 | 
				                }); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				                return d.promise(); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }), | 
			
		||||
 | 
				        onContextMenuPreparing: function(e) { | 
			
		||||
 | 
				            if (e.row.rowType === "data") { | 
			
		||||
 | 
				                e.items = [ | 
			
		||||
 | 
				                    { | 
			
		||||
 | 
				                        icon : 'search', | 
			
		||||
 | 
				                        text: '내용보기', | 
			
		||||
 | 
				                        onItemClick: function () { | 
			
		||||
 | 
				                            grid.form(e.row.data.qna_idx); | 
			
		||||
 | 
				                        } | 
			
		||||
 | 
				                    }, | 
			
		||||
 | 
				                    { | 
			
		||||
 | 
				                        icon : 'trash', | 
			
		||||
 | 
				                        text: "삭제", | 
			
		||||
 | 
				                        onItemClick: function () { | 
			
		||||
 | 
				                            grid.delete(e.row.data); | 
			
		||||
 | 
				                        } | 
			
		||||
 | 
				                    } | 
			
		||||
 | 
				                ] | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        onRowDblClick: function(e) { | 
			
		||||
 | 
				            grid.form(e.data.qna_idx); | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				    }); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    grid.form = function(qna_idx) { | 
			
		||||
 | 
				        APP.MODAL.callback = function() { | 
			
		||||
 | 
				            grid.refresh(); | 
			
		||||
 | 
				            APP.MODAL.close(); | 
			
		||||
 | 
				        } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        APP.MODAL.open({ | 
			
		||||
 | 
				            iframe: { | 
			
		||||
 | 
				                url: base_url + '/admin/management/qna_view/' + qna_idx | 
			
		||||
 | 
				            }, | 
			
		||||
 | 
				            width:800, | 
			
		||||
 | 
				            height:600, | 
			
		||||
 | 
				            header: { | 
			
		||||
 | 
				                title: 'Q&A 내용보기' | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }) | 
			
		||||
 | 
				    }; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    grid.delete = function(data) { | 
			
		||||
 | 
				        if(! confirm('선택하신 데이타를 삭제하시겠습니까?\n제목: '+data.qna_title + '\n작성자: ' + data.qna_name)) return false; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $.ajax({ | 
			
		||||
 | 
				            url: base_url + '/admin/ajax/management/qna', | 
			
		||||
 | 
				            type: 'DELETE', | 
			
		||||
 | 
				            data: { | 
			
		||||
 | 
				                qna_idx: data.qna_idx | 
			
		||||
 | 
				            }, | 
			
		||||
 | 
				            success:function() { | 
			
		||||
 | 
				                toastr.success('삭제되었습니다.'); | 
			
		||||
 | 
				                grid.refresh(); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }) | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    $(function() { | 
			
		||||
 | 
				        grid.init(); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $('[data-button="qna-category"]').click(function() { | 
			
		||||
 | 
				            APP.MODAL.open({ | 
			
		||||
 | 
				                iframe: { | 
			
		||||
 | 
				                    url: base_url + '/admin/management/qna_category' | 
			
		||||
 | 
				                }, | 
			
		||||
 | 
				                width: 800, | 
			
		||||
 | 
				                height: 600, | 
			
		||||
 | 
				                header: { | 
			
		||||
 | 
				                    title: 'Q&A 유형 관리' | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            }) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        }); | 
			
		||||
 | 
				    }) | 
			
		||||
 | 
				</script> | 
			
		||||
@ -0,0 +1,79 @@ | 
			
		|||||
 | 
				<div class="ax-button-group"> | 
			
		||||
 | 
				    <div class="left"> | 
			
		||||
 | 
				        <h4>Q&A 분류 관리</h4> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				    <div class="right"> | 
			
		||||
 | 
				        <button type="button" class="btn btn-default" data-button="form-qna-category" data-idx=""><i class="fal fa-plus-circle"></i> 신규 등록</button> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<div class="grid"> | 
			
		||||
 | 
				    <table> | 
			
		||||
 | 
				        <thead> | 
			
		||||
 | 
				        <tr> | 
			
		||||
 | 
				            <th class="W20"></th> | 
			
		||||
 | 
				            <th>분류 이름</th> | 
			
		||||
 | 
				            <th class="W80">관리</th> | 
			
		||||
 | 
				        </tr> | 
			
		||||
 | 
				        </thead> | 
			
		||||
 | 
				        <tbody data-toggle="sortable" data-key="qnc_idx" data-sort="sort" data-table="qna_category"> | 
			
		||||
 | 
				        <?php foreach($lists as $row):?>
 | 
			
		||||
 | 
				        <tr> | 
			
		||||
 | 
				            <td class="text-center"> | 
			
		||||
 | 
				                <span class="move-grip"></span> | 
			
		||||
 | 
				                <input type="hidden" name="qnc_idx[]" value="<?=$row['qnc_idx']?>"> | 
			
		||||
 | 
				            </td> | 
			
		||||
 | 
				            <td><?=$row['qnc_title']?></td>
 | 
			
		||||
 | 
				            <td class="text-center"> | 
			
		||||
 | 
				                <button type="button" class="btn btn-default btn-xs MR5" data-button="form-qna-category" data-idx="<?=$row['qnc_idx']?>"><i class="fal fa-pencil"></i></button> | 
			
		||||
 | 
				                <button type="button" class="btn btn-danger btn-xs" data-button="delete-qna-category" data-idx="<?=$row['qnc_idx']?>"><i class="fal fa-trash"></i></button> | 
			
		||||
 | 
				            </td> | 
			
		||||
 | 
				        </tr> | 
			
		||||
 | 
				        <?php endforeach;?>
 | 
			
		||||
 | 
				        <?php if(count($lists) == 0) :?>
 | 
			
		||||
 | 
				        <tr> | 
			
		||||
 | 
				            <td colspan="3" class="empty">등록된 분류가 없습니다.</td> | 
			
		||||
 | 
				        </tr> | 
			
		||||
 | 
				        <?php endif;?>
 | 
			
		||||
 | 
				        </tbody> | 
			
		||||
 | 
				    </table> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
				    $(function() { | 
			
		||||
 | 
				        $('[data-button="form-qna-category"]').click(function (e) { | 
			
		||||
 | 
				            var idx = $(this).data('idx'); | 
			
		||||
 | 
				            idx = typeof idx != 'undefined' && idx ? idx :''; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				            APP.MODAL2.callback = function() { | 
			
		||||
 | 
				                location.reload(); | 
			
		||||
 | 
				            }; | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				            APP.MODAL2.open({ | 
			
		||||
 | 
				                iframe: { | 
			
		||||
 | 
				                    url: base_url + '/admin/management/qna_category_form/' + idx, | 
			
		||||
 | 
				                }, | 
			
		||||
 | 
				                width: 340, | 
			
		||||
 | 
				                height: 200 | 
			
		||||
 | 
				            }); | 
			
		||||
 | 
				        }); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        $('[data-button="delete-qna-category"]').click(function(e) { | 
			
		||||
 | 
				            var idx = $(this).data('idx'); | 
			
		||||
 | 
				            idx = typeof idx != 'undefined' && idx ? idx : false; | 
			
		||||
 | 
				            if(! idx) return; | 
			
		||||
 | 
				            if(! confirm('해당 분류를 삭제하시겠습니까?')) return; | 
			
		||||
 | 
				            $.ajax({ | 
			
		||||
 | 
				                url: base_url + '/admin/ajax/management/qna-category', | 
			
		||||
 | 
				                type:'DELETE', | 
			
		||||
 | 
				                data: { | 
			
		||||
 | 
				                    qnc_idx:idx | 
			
		||||
 | 
				                }, | 
			
		||||
 | 
				                success:function() { | 
			
		||||
 | 
				                    location.reload(); | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            }) | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				        }); | 
			
		||||
 | 
				    }) | 
			
		||||
 | 
				</script> | 
			
		||||
@ -0,0 +1,15 @@ | 
			
		|||||
 | 
				<?=form_open(NULL, array('autocomplete'=>'off'))?>
 | 
			
		||||
 | 
				<div data-ax-tbl> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td class="width-100"> | 
			
		||||
 | 
				            <div data-ax-td-label>분류 이름</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <input class="form-control" name="qnc_title" value="<?=element('qnc_title', $view)?>" autofocus required> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				<div class="text-center MT15"> | 
			
		||||
 | 
				    <button class="btn btn-primary"><i class="fal fa-save"></i> 저장하기</button> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				<?=form_close()?>
 | 
			
		||||
@ -0,0 +1,72 @@ | 
			
		|||||
 | 
				<?=form_open()?>
 | 
			
		||||
 | 
				<div data-ax-tbl> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td class="width-100"> | 
			
		||||
 | 
				            <div data-ax-td-label>제목</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_title']?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>작성자</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_name']?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>연락처</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_phone']?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>E-mail</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_email']?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td class="width-100"> | 
			
		||||
 | 
				            <div data-ax-td-label>내용</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=nl2br($view['qna_content'])?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>답변작성여부</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_ans_status']=='Y'?'답변완료':'미답변'?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>답변작성자</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_ans_status']=='Y'?$view['qna_ans_upd_username']:''?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>답변작성시간</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$view['qna_ans_status']=='Y'?$view['qna_ans_upd_datetime']:''?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td class="width-100"> | 
			
		||||
 | 
				            <div data-ax-td-label>답변 작성</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <textarea class="form-control" name="qna_ans_content" data-autosize rows="4"><?=$view['qna_ans_content']?></textarea>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				<div class="text-center MT15"> | 
			
		||||
 | 
				    <button class="btn btn-primary">답변 작성하기</button> | 
			
		||||
 | 
				</div> | 
			
		||||
 | 
				<?=form_close()?>
 | 
			
		||||
@ -1,94 +1,96 @@ | 
			
		|||||
<div class="ax-button-group"> | 
				 | 
			
		||||
    <div class="left"> | 
				 | 
			
		||||
        <h4><?=$mem['mem_nickname']?>님의 회원정보</h4>
 | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
 | 
				 | 
			
		||||
<div class="form-flex"> | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">아이디</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_userid']?>" readonly> | 
				 | 
			
		||||
 | 
				<div data-ax-tbl> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>닉네임</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <input class="form-control" value="<?=$mem['mem_nickname']?>" readonly> | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				 | 
			
		||||
 | 
				
 | 
			
		||||
    <?php if(! USE_EMAIL_ID) :?>
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">E-mail</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_email']?>" readonly> | 
				 | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>상태</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <?php | 
			
		||||
 | 
				                if($mem['mem_status'] == 'Y') : | 
			
		||||
 | 
				                    $status = '정상'; | 
			
		||||
 | 
				                elseif($mem['mem_status'] == 'D') : | 
			
		||||
 | 
				                    $status = '접근금지'; | 
			
		||||
 | 
				                elseif($mem['mem_status'] == 'H') : | 
			
		||||
 | 
				                    $status = '휴면'; | 
			
		||||
 | 
				                else : | 
			
		||||
 | 
				                    $status = '탈퇴'; | 
			
		||||
 | 
				                endif; | 
			
		||||
 | 
				                ?>
 | 
			
		||||
 | 
				                <p class="form-control-static"><?=$status?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <?php if($mem['mem_status'] == 'H') : ?>
 | 
			
		||||
 | 
				                    <a href="#" class="btn btn-default btn-sm" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','Y')"><i class="far fa-user-secret"></i> 휴면 해제</a> | 
			
		||||
 | 
				                <?php elseif( $mem['mem_status'] == 'Y' ) :?>
 | 
			
		||||
 | 
				                    <a href="#" class="btn btn-default btn-sm" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','D')"><i class="far fa-ban"></i> 로그인 금지</a> | 
			
		||||
 | 
				                <?php elseif( $mem['mem_status'] == 'D' ) :?>
 | 
			
		||||
 | 
				                    <a href="#" class="btn btn-default btn-sm" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','Y')"><i class="far fa-ban"></i> 로그인 금지 해제</a> | 
			
		||||
 | 
				                <?php endif;?>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
    <?php endif;?>
 | 
				 | 
			
		||||
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">닉네임</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_nickname']?>" readonly> | 
				 | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>아이디</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap><input class="form-control" value="<?=$mem['mem_userid']?>" readonly></div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				 | 
			
		||||
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">휴대폰</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_phone']?>" readonly> | 
				 | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>비밀번호</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <a href="<?=base_url('admin/members/password/'.$mem['mem_idx'])?>" class="btn btn-default btn-sm"><i class="fal fa-lock"></i> 비밀번호 변경</a> | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">성별</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_gender']=='M'?'남':($mem['mem_gender']=='F'?'여':'미공개')?>" readonly> | 
				 | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>E-mail</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> <input class="form-control" value="<?=$mem['mem_email']?>" readonly></div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				 | 
			
		||||
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">권한 레벨</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_auth']?>" readonly> | 
				 | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>휴대폰</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <input class="form-control" value="<?=$mem['mem_phone']?>" readonly> | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				
 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">E-mail 수신</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_recv_email']=='Y'?'수신':'거부'?>" readonly> | 
				 | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>성별</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <input class="form-control" value="<?=$mem['mem_gender']=='M'?'남':($mem['mem_gender']=='F'?'여':'미공개')?>" readonly> | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
        <label class="control-label control-label-sm">SMS 수신</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <input class="form-control" value="<?=$mem['mem_recv_sms']=='Y'?'수신':'거부'?>" readonly> | 
				 | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>권한 레벨</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static"><?=$mem['mem_auth']?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
 | 
				 | 
			
		||||
    <div class="form-group"> | 
				 | 
			
		||||
        <label class="control-label control-label-sm">상태</label> | 
				 | 
			
		||||
        <div class="controls"> | 
				 | 
			
		||||
            <?php | 
				 | 
			
		||||
            if($mem['mem_status'] == 'Y') : | 
				 | 
			
		||||
                $status = '정상'; | 
				 | 
			
		||||
            elseif($mem['mem_status'] == 'D') : | 
				 | 
			
		||||
                $status = '접근금지'; | 
				 | 
			
		||||
            elseif($mem['mem_status'] == 'H') : | 
				 | 
			
		||||
                $status = '휴면'; | 
				 | 
			
		||||
            else : | 
				 | 
			
		||||
                $status = '탈퇴'; | 
				 | 
			
		||||
            endif; | 
				 | 
			
		||||
            ?>
 | 
				 | 
			
		||||
            <input class="form-control" value="<?=$status?>" readonly> | 
				 | 
			
		||||
 | 
				    <div data-ax-tr> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>E-mail</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static">수신 <?=$mem['mem_recv_email']=='Y'?'동의':'거부'?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				        <div data-ax-td> | 
			
		||||
 | 
				            <div data-ax-td-label>SMS</div> | 
			
		||||
 | 
				            <div data-ax-td-wrap> | 
			
		||||
 | 
				                <p class="form-control-static">수신 <?=$mem['mem_recv_sms']=='Y'?'동의':'거부'?></p>
 | 
			
		||||
 | 
				            </div> | 
			
		||||
        </div> | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
</div> | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
<div class="H20"></div> | 
				<div class="H20"></div> | 
			
		||||
<div class="text-center"> | 
				<div class="text-center"> | 
			
		||||
    <a href="<?=base_url('admin/members/password/'.$mem['mem_idx'])?>" class="btn btn-default"><i class="far fa-lock"></i> 비밀번호 변경</a> | 
				 | 
			
		||||
    <a href="<?=base_url('admin/members/modify/'.$mem['mem_idx'])?>" class="btn btn-default"><i class="far fa-pencil"></i> 정보 수정</a> | 
				 | 
			
		||||
    <?php if($mem['mem_status'] == 'H') : ?>
 | 
				 | 
			
		||||
    <a href="#" class="btn btn-warning" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','Y')"><i class="far fa-user-secret"></i> 휴면 해제</a> | 
				 | 
			
		||||
    <?php elseif( $mem['mem_status'] == 'Y' ) :?>
 | 
				 | 
			
		||||
    <a href="#" class="btn btn-warning" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','D')"><i class="far fa-ban"></i> 로그인 금지</a> | 
				 | 
			
		||||
    <?php elseif( $mem['mem_status'] == 'D' ) :?>
 | 
				 | 
			
		||||
    <a href="#" class="btn btn-warning" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','Y')"><i class="far fa-ban"></i> 로그인 금지 해제</a> | 
				 | 
			
		||||
    <?php endif;?>
 | 
				 | 
			
		||||
 | 
				    <a href="<?=base_url('admin/members/modify/'.$mem['mem_idx'])?>" class="btn btn-default MR10"><i class="far fa-pencil"></i> 정보 수정</a> | 
			
		||||
    <a href="#" class="btn btn-danger" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','N')"><i class="far fa-user-secret"></i> 회원 탈퇴</a> | 
				    <a href="#" class="btn btn-danger" onclick="APP.MEMBER.STATUS_CHANGE('<?=$mem['mem_idx']?>','<?=$mem['mem_status']?>','N')"><i class="far fa-user-secret"></i> 회원 탈퇴</a> | 
			
		||||
</div> | 
				</div> | 
			
		||||
@ -1,72 +1,86 @@ | 
			
		|||||
<div class="page-header"> | 
				 | 
			
		||||
 | 
				<div class="page-header" data-fit-aside> | 
			
		||||
    <h1 class="page-title">회원 로그인 기록<small>회원 관리 > 회원 로그인 기록</small></h1> | 
				    <h1 class="page-title">회원 로그인 기록<small>회원 관리 > 회원 로그인 기록</small></h1> | 
			
		||||
</div> | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
<?=form_open(NULL, array("method"=>'get', 'class'=>'form-flex'))?>
 | 
				 | 
			
		||||
<div class="form-group"> | 
				 | 
			
		||||
    <label class="control-label control-label-sm">기간검색</label> | 
				 | 
			
		||||
    <div class="controls"> | 
				 | 
			
		||||
        <input class="form-control form-control-inline" name="startdate" data-toggle="datepicker" value="<?=$startdate?>"> | 
				 | 
			
		||||
        <input class="form-control form-control-inline" name="enddate" data-toggle="datepicker" value="<?=$enddate?>"> | 
				 | 
			
		||||
 | 
				<form data-grid-search onsubmit="grid.refresh(1);return false;" data-fit-aside autocomplete="off"> | 
			
		||||
 | 
				    <div data-ax-tbl> | 
			
		||||
 | 
				        <div data-ax-tr> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>기간 검색</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" data-chained-datepicker="[name='enddate']" name="startdate" data-toggle="datepicker" value="<?=date('Y-m-d',strtotime('-1 month'))?>"> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" name="enddate" data-toggle="datepicker" value="<?=date('Y-m-d')?>"> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>검색어 입력</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <select class="form-control form-control-inline" name="sc"> | 
			
		||||
 | 
				                        <option value="userid" <?=$sc=='userid'?'selected':''?>>아이디</option>
 | 
			
		||||
 | 
				                        <option value="nickname" <?=$sc=='nickname'?'selected':''?>>닉네임</option>
 | 
			
		||||
 | 
				                        <option value="idx" <?=$sc=='idx'?'selected':''?>>회원번호</option>
 | 
			
		||||
 | 
				                    </select> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" name="st" value="<?=$st?>"> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <button class="btn btn-default btn-sm"><i class="fal fa-search"></i> 필터적용</button> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
    </div> | 
				    </div> | 
			
		||||
</div> | 
				 | 
			
		||||
<div class="form-group"> | 
				 | 
			
		||||
    <label class="control-label control-label-sm">검색어 입력</label> | 
				 | 
			
		||||
    <div class="controls"> | 
				 | 
			
		||||
        <select class="form-control form-control-inline" name="sc"> | 
				 | 
			
		||||
            <option value="userid" <?=$sc=='userid'?'selected':''?>>아이디</option>
 | 
				 | 
			
		||||
            <option value="nickname" <?=$sc=='nickname'?'selected':''?>>닉네임</option>
 | 
				 | 
			
		||||
            <option value="idx" <?=$sc=='idx'?'selected':''?>>회원번호</option>
 | 
				 | 
			
		||||
        </select> | 
				 | 
			
		||||
        <input class="form-control form-control-inline" name="st" value="<?=$st?>"> | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
<div class="form-group"> | 
				 | 
			
		||||
    <label class="control-label control-label-sm"></label> | 
				 | 
			
		||||
    <div class="controls"> | 
				 | 
			
		||||
        <button class="btn btn-primary"><i class="fal fa-search"></i> 필터적용</button> | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
<?=form_close()?>
 | 
				 | 
			
		||||
 | 
				</form> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<div class="H10" data-fit-aside></div> | 
			
		||||
 | 
				
 | 
			
		||||
<div class="H10"></div> | 
				 | 
			
		||||
<div class="grid"> | 
				 | 
			
		||||
    <table> | 
				 | 
			
		||||
        <thead> | 
				 | 
			
		||||
        <tr> | 
				 | 
			
		||||
            <th>일시</th> | 
				 | 
			
		||||
            <th>아이디</th> | 
				 | 
			
		||||
            <th>닉네임</th> | 
				 | 
			
		||||
            <th>브라우져</th> | 
				 | 
			
		||||
            <th>버젼</th> | 
				 | 
			
		||||
            <th>OS</th> | 
				 | 
			
		||||
            <th>모바일</th> | 
				 | 
			
		||||
            <th>접속 IP</th> | 
				 | 
			
		||||
        </tr> | 
				 | 
			
		||||
        </thead> | 
				 | 
			
		||||
        <tbody> | 
				 | 
			
		||||
        <?php foreach($log_list['list'] as $row) :?>
 | 
				 | 
			
		||||
            <tr> | 
				 | 
			
		||||
                <td class="text-center"><?=$row['mlg_regtime']?></td>
 | 
				 | 
			
		||||
                <td class="text-center"><?=$row['mem_userid']?></td>
 | 
				 | 
			
		||||
                <td class="text-center"><?=$row['mem_nickname']?><?=display_member_menu($row['mem_idx'], "<i class='far fa-cog'></i>", $row['mem_status'])?></td>
 | 
				 | 
			
		||||
                <td><?=$row['mlg_browser']?></td>
 | 
				 | 
			
		||||
                <td><?=$row['mlg_version']?></td>
 | 
				 | 
			
		||||
                <td><?=$row['mlg_platform']?></td>
 | 
				 | 
			
		||||
                <td><?=$row['mlg_is_mobile']?></td>
 | 
				 | 
			
		||||
                <td><?=long2ip($row['mlg_ip'])?></td>
 | 
				 | 
			
		||||
            </tr> | 
				 | 
			
		||||
        <?php endforeach;?>
 | 
				 | 
			
		||||
        </tbody> | 
				 | 
			
		||||
    </table> | 
				 | 
			
		||||
 | 
				<div class="grid-wrapper" data-fit-content> | 
			
		||||
 | 
				    <div id="grid-container" class="grid-wrapper"></div> | 
			
		||||
</div> | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
<div class="H10"></div> | 
				 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
				    var grid = new GRID('#grid-container', { | 
			
		||||
 | 
				        paging: { | 
			
		||||
 | 
				          pageSize:15 | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        columns: [ | 
			
		||||
 | 
				            {caption:'순번', dataField:'nums', alignment:'right', width:80, dataType:'number', format:'fixedPoint'}, | 
			
		||||
 | 
				            {caption:'일시', dataField:'mlg_regtime', alignment:'center', width:160}, | 
			
		||||
 | 
				            {caption:'아이디', dataField:'mem_userid', alignment:'left', width:160}, | 
			
		||||
 | 
				            {caption:'이름', dataField:'mem_nickanem', alignment:'left', width:100}, | 
			
		||||
 | 
				            {caption:'브라우져', dataField:'mlg_browser', alignment:'left', width:80}, | 
			
		||||
 | 
				            {caption:'OS', dataField:'mlg_platform', alignment:'left', width:80}, | 
			
		||||
 | 
				            {caption:'모바일', dataField:'mlg_is_mobile', alignment:'center', width:60}, | 
			
		||||
 | 
				            {caption:'IP', dataField:'mlg_ip', alignment:'center', width:120}, | 
			
		||||
 | 
				            {caption:'', calculateCellValue:function(e) {return ''}} | 
			
		||||
 | 
				        ], | 
			
		||||
 | 
				        dataSource: new DevExpress.data.DataSource({ | 
			
		||||
 | 
				            key : 'mlg_idx', | 
			
		||||
 | 
				            load: function(loadOptions) { | 
			
		||||
 | 
				                var d = $.Deferred(); | 
			
		||||
 | 
				                var params = grid.getSearchParam(loadOptions); | 
			
		||||
 | 
				
 | 
			
		||||
<div class="ax-button-group ax-button-group-bottom"> | 
				 | 
			
		||||
    <div class="left"> | 
				 | 
			
		||||
        <?=$pagination?>
 | 
				 | 
			
		||||
    </div> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
 | 
				                $.ajax({ | 
			
		||||
 | 
				                    url : base_url + '/admin/ajax/members/logs', | 
			
		||||
 | 
				                    type: 'GET', | 
			
		||||
 | 
				                    async: false, | 
			
		||||
 | 
				                    cache: false, | 
			
		||||
 | 
				                    data: params | 
			
		||||
 | 
				                }).done(function(res) { | 
			
		||||
 | 
				                    d.resolve(res.lists, { | 
			
		||||
 | 
				                        totalCount : res.totalCount | 
			
		||||
 | 
				                    }); | 
			
		||||
 | 
				                }); | 
			
		||||
 | 
				
 | 
			
		||||
<div class="H30"></div> | 
				 | 
			
		||||
 | 
				                return d.promise(); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }), | 
			
		||||
 | 
				    }) | 
			
		||||
 | 
				    $(function() { | 
			
		||||
 | 
				        grid.init(); | 
			
		||||
 | 
				    }); | 
			
		||||
 | 
				</script> | 
			
		||||
@ -1,37 +1,109 @@ | 
			
		|||||
<div class="page-header"> | 
				 | 
			
		||||
 | 
				<div class="page-header" data-fit-aside> | 
			
		||||
    <h2 class="page-title"><?=$this->site->config('point_name')?> 관리</h2>
 | 
				    <h2 class="page-title"><?=$this->site->config('point_name')?> 관리</h2>
 | 
			
		||||
</div> | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
<div class="grid"> | 
				 | 
			
		||||
    <table> | 
				 | 
			
		||||
        <thead> | 
				 | 
			
		||||
        <tr> | 
				 | 
			
		||||
            <th class="W100">#</th>
 | 
				 | 
			
		||||
            <th class="W150">일시</th> | 
				 | 
			
		||||
            <th class="W150">사용자</th> | 
				 | 
			
		||||
            <th class="W100"><?=$this->site->config('point_name')?></th>
 | 
				 | 
			
		||||
            <th>내용</th> | 
				 | 
			
		||||
        </tr> | 
				 | 
			
		||||
        </thead> | 
				 | 
			
		||||
        <tbody> | 
				 | 
			
		||||
        <?php foreach($list['list'] as $row) :?>
 | 
				 | 
			
		||||
        <tr> | 
				 | 
			
		||||
            <td class="text-right"><?=number_format($row['nums'])?></td>
 | 
				 | 
			
		||||
            <td class="text-center"><?=$row['mpo_regtime']?></td>
 | 
				 | 
			
		||||
            <td class="text-center"><?=$row['mem_nickname']?><?=display_member_menu($row['mem_idx'], '<i class="far fa-cog"></i>', $row['mem_status'])?></td>
 | 
				 | 
			
		||||
            <td class="text-right"><?=$row['mpo_value']>0?'+':''?><?=$row['mpo_value']?></td>
 | 
				 | 
			
		||||
            <td><?=$row['mpo_description']?></td>
 | 
				 | 
			
		||||
        </tr> | 
				 | 
			
		||||
        <?php endforeach;?>
 | 
				 | 
			
		||||
        <?php if(count($list['list']) == 0) :?>
 | 
				 | 
			
		||||
        <tr> | 
				 | 
			
		||||
            <td class="empty" colspan="5">검색된 내역이 없습니다.</td> | 
				 | 
			
		||||
        </tr> | 
				 | 
			
		||||
        <?php endif;?>
 | 
				 | 
			
		||||
        </tbody> | 
				 | 
			
		||||
    </table> | 
				 | 
			
		||||
</div> | 
				 | 
			
		||||
 | 
				<form data-grid-search onsubmit="grid.refresh(1);return false;" data-fit-aside autocomplete="off"> | 
			
		||||
 | 
				    <div data-ax-tbl> | 
			
		||||
 | 
				        <div data-ax-tr> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label><?=$this->site->config('point_name')?> 유형</div>
 | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <select class="form-control form-control-inline" name="target_type"> | 
			
		||||
 | 
				                        <option value="">전체보기</option> | 
			
		||||
 | 
				                        <?php foreach($point_type as $key=>$val) :?>
 | 
			
		||||
 | 
				                            <option value="<?=$key?>" <?=$target_type==$key?'selected':''?>><?=$val?></option>
 | 
			
		||||
 | 
				                        <?php endforeach;?>
 | 
			
		||||
 | 
				                    </select> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td> | 
			
		||||
 | 
				                <div data-ax-td-label>기간검색</div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" data-chained-datepicker="[name='enddate']" name="startdate" data-toggle="datepicker" value=""> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <input class="form-control" name="enddate" data-toggle="datepicker" value=""> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				            <div data-ax-td class="W100"> | 
			
		||||
 | 
				                <div data-ax-td-wrap> | 
			
		||||
 | 
				                    <button class="btn btn-default btn-sm"><i class="fal fa-search"></i> 필터적용</button> | 
			
		||||
 | 
				                </div> | 
			
		||||
 | 
				            </div> | 
			
		||||
 | 
				        </div> | 
			
		||||
 | 
				    </div> | 
			
		||||
 | 
				</form> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<div class="H10" data-fit-aside></div> | 
			
		||||
 | 
				
 | 
			
		||||
<div class="text-center MT10"> | 
				 | 
			
		||||
    <?=$pagination?>
 | 
				 | 
			
		||||
 | 
				<div class="grid-wrapper" data-fit-content> | 
			
		||||
 | 
				    <div class="grid-container" id="grid-container"></div> | 
			
		||||
</div> | 
				</div> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
				    var grid = new GRID('#grid-container', { | 
			
		||||
 | 
				        paging: { | 
			
		||||
 | 
				            pageSize: 20 | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        columns: [ | 
			
		||||
 | 
				            {caption:'번호', dataField:'nums', alignment:'right', width:60, dataType:'number', format:'fixedPoint'}, | 
			
		||||
 | 
				            {caption:'일시', dataField:'reg_datetime', alignment:'center', width:120}, | 
			
		||||
 | 
				            {caption:'회원명', dataField:'mem_nickname', alignment:'center', width:80}, | 
			
		||||
 | 
				            {caption:'회원ID', dataField:'mem_userid', alignment:'left', width:180}, | 
			
		||||
 | 
				            {caption:'구분', dataField:'target_type', alignment:'center', width:120}, | 
			
		||||
 | 
				            { | 
			
		||||
 | 
				                caption: '증가', name:'mpo_value_plus', dataField:'mpo_value', alignment:'right', dataType:'number', format:'fixedPoint', width:120, | 
			
		||||
 | 
				                calculateCellValue: function(cell) { | 
			
		||||
 | 
				                    if(cell.mpo_flag == 1) return cell.mpo_value.numberFormat() | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            }, | 
			
		||||
 | 
				            { | 
			
		||||
 | 
				                caption: '감소',name:'mpo_value_minus', dataField:'mpo_value', alignment:'right', dataType:'number', format:'fixedPoint', width:120, | 
			
		||||
 | 
				                calculateCellValue: function(cell) { | 
			
		||||
 | 
				                    if(cell.mpo_flag == -1) return cell.mpo_value.numberFormat() | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            }, | 
			
		||||
 | 
				            {caption:'내용', dataField:'mpo_description', alignment:'left', minWidth:120}, | 
			
		||||
 | 
				        ], | 
			
		||||
 | 
				        onCellPrepared: function(e) { | 
			
		||||
 | 
				            if(e.rowType == 'data') { | 
			
		||||
 | 
				                if(e.column.name == 'mpo_value_plus') { | 
			
		||||
 | 
				                    e.cellElement.css("color", '#3498db'); | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				                else if (e.column.name == 'mpo_value_minus') { | 
			
		||||
 | 
				                    e.cellElement.css("color", '#e32815'); | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        onContextMenuPreparing: function(e) { | 
			
		||||
 | 
				            if (e.row.rowType === "data") { | 
			
		||||
 | 
				                e.items = APP.memberMenuObject(e, <?=$this->site->config('point_use')=='Y'?'"'.$this->site->config('point_name').'"':'false'?>);
 | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }, | 
			
		||||
 | 
				        dataSource: new DevExpress.data.DataSource({ | 
			
		||||
 | 
				            key : 'mpo_idx', | 
			
		||||
 | 
				            load: function(loadOptions) { | 
			
		||||
 | 
				                var d = $.Deferred(); | 
			
		||||
 | 
				                var params = grid.getSearchParam(loadOptions); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				                $.ajax({ | 
			
		||||
 | 
				                    url : base_url + '/admin/ajax/members/points', | 
			
		||||
 | 
				                    type: 'GET', | 
			
		||||
 | 
				                    async: false, | 
			
		||||
 | 
				                    cache: false, | 
			
		||||
 | 
				                    data: params | 
			
		||||
 | 
				                }).done(function(res) { | 
			
		||||
 | 
				                    d.resolve(res.lists, { | 
			
		||||
 | 
				                        totalCount : res.totalCount | 
			
		||||
 | 
				                    }); | 
			
		||||
 | 
				                }); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				                return d.promise(); | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				        }), | 
			
		||||
 | 
				    }); | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    $(function() { | 
			
		||||
 | 
				        grid.init(); | 
			
		||||
 | 
				    }) | 
			
		||||
 | 
				</script> | 
			
		||||
@ -0,0 +1,41 @@ | 
			
		|||||
 | 
				<form class="form-inline" autocomplete="off" method="get" accept-charset="UTF-8"> | 
			
		||||
 | 
				    <select class="form-control"> | 
			
		||||
 | 
				        <option value="title">질문제목</option> | 
			
		||||
 | 
				        <option value="name">질문자</option> | 
			
		||||
 | 
				    </select> | 
			
		||||
 | 
				    <input class="form-control" required> | 
			
		||||
 | 
				    <button class="btn btn-default"><i class="fal fa-search"></i> 검색하기</button> | 
			
		||||
 | 
				</form> | 
			
		||||
 | 
				<table class="table"> | 
			
		||||
 | 
				    <thead> | 
			
		||||
 | 
				    <tr> | 
			
		||||
 | 
				        <th>순번</th> | 
			
		||||
 | 
				        <th>질문유형</th> | 
			
		||||
 | 
				        <th>질문제목</th> | 
			
		||||
 | 
				        <th>질문자</th> | 
			
		||||
 | 
				        <th>답변여부</th> | 
			
		||||
 | 
				        <th>작성일시</th> | 
			
		||||
 | 
				    </tr> | 
			
		||||
 | 
				    </thead> | 
			
		||||
 | 
				    <tbody> | 
			
		||||
 | 
				    <?php if(count($lists) == 0) :?>
 | 
			
		||||
 | 
				    <tr> | 
			
		||||
 | 
				        <td colspan="5" class="text-center empty">등록된 질문이 없습니다.</td> | 
			
		||||
 | 
				    </tr> | 
			
		||||
 | 
				    <?php endif;?>
 | 
			
		||||
 | 
				    <?php foreach($lists as $row):?>
 | 
			
		||||
 | 
				    <tr> | 
			
		||||
 | 
				        <td class="text-right"><?=$row['nums']?></td>
 | 
			
		||||
 | 
				        <td class="text-right"><?=$row['qnc_title']?></td>
 | 
			
		||||
 | 
				        <td class="text-left"> | 
			
		||||
 | 
				            <a href="<?=base_url('customer/qna/'.$row['qna_idx'])?>"><i class="fal fa-lock"></i> <?=$row['qna_title']?></a>
 | 
			
		||||
 | 
				        </td> | 
			
		||||
 | 
				        <td class="text-center"><?=$row['qna_name']?></td>
 | 
			
		||||
 | 
				        <td class="text-center"><?=$row['is_answered']?'답변완료':'미답변'?></td>
 | 
			
		||||
 | 
				        <td class="text-center"><?=$row['reg_datetime']?></td>
 | 
			
		||||
 | 
				    </tr> | 
			
		||||
 | 
				    <?php endforeach;?>
 | 
			
		||||
 | 
				    </tbody> | 
			
		||||
 | 
				</table> | 
			
		||||
 | 
				<div class="text-center"><?=$pagination?></div>
 | 
			
		||||
 | 
				<a href="<?=base_url('customer/qna/write')?>"><i class="fal fa-pencil"></i> 질문작성하기</a> | 
			
		||||
@ -0,0 +1,39 @@ | 
			
		|||||
 | 
				<?=form_open_multipart()?>
 | 
			
		||||
 | 
				    <?=validation_errors('<p class="alert alert-danger">')?>
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <?php if(! $this->member->is_login()) :?>
 | 
			
		||||
 | 
				    <input placeholder="작성자" name="qna_name" required> | 
			
		||||
 | 
				    <input type="password" placeholder="비밀번호" name="qna_password" required> | 
			
		||||
 | 
				    <?php endif;?>
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <input placeholder="연락처" data-regex="phone-number" name="qna_phone" value="<?=$this->member->info('phone')?>" required> | 
			
		||||
 | 
				    <input placeholder="E-mail" data-regex="email-address" name="qna_email" value="<?=$this->member->info('email')?>" required> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <?php if(count($qna_category) > 0) :?>
 | 
			
		||||
 | 
				    <select name="qnc_idx"> | 
			
		||||
 | 
				        <?php foreach($qna_category as $row):?>
 | 
			
		||||
 | 
				        <option value="<?=$row['qnc_idx']?>"><?=$row['qnc_title']?></option>
 | 
			
		||||
 | 
				        <?php endforeach;?>
 | 
			
		||||
 | 
				    </select> | 
			
		||||
 | 
				    <?php endif;?>
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <input placeholder="질문 제목" name="qna_title" required> | 
			
		||||
 | 
				    <textarea placeholder="질문 내용" name="qna_content" rows="10" required></textarea> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <div data-container="file-input"></div> | 
			
		||||
 | 
				    <script id="tmpl-file-input" type="text/x-jquery-tmpl"> | 
			
		||||
 | 
				        <input type="file" name="userfile[]"> | 
			
		||||
 | 
				    </script> | 
			
		||||
 | 
				    <button type="button" data-button="add-file-input"><i class="fal fa-plus"></i> 파일 추가</button> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				    <button>질문 등록하기</button> | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<?=form_close()?>
 | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				<script> | 
			
		||||
 | 
				    $(function() { | 
			
		||||
 | 
				        $('[data-button="add-file-input"]').click(function() { | 
			
		||||
 | 
				            $('[data-container="file-input"]').append( $('#tmpl-file-input').tmpl() ); | 
			
		||||
 | 
				        }); | 
			
		||||
 | 
				    }); | 
			
		||||
 | 
				</script> | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue