Browse Source

Merge branch 'master' of http://git.wheeparam.com/wheeparam/WheeparamBoard

# Conflicts:
#	public_html/assets/css/admin.min.css.map
#	public_html/assets/css/desktop.min.css.map
#	public_html/assets/css/mobile.min.css.map
master
장선근 5 years ago
parent
commit
b45c939420
  1. 1
      wheeparam/application/controllers/admin/Board.php
  2. 145
      wheeparam/application/libraries/Boardlib.php
  3. 1
      wheeparam/config/wheeparam.sql
  4. 10
      wheeparam/views/themes/admin/board/form.php
  5. 8
      wheeparam/views/themes/admin/board/lists.php

1
wheeparam/application/controllers/admin/Board.php

@ -37,6 +37,7 @@ class Board extends WB_Controller
if( $this->form_validation->run() != FALSE ) if( $this->form_validation->run() != FALSE )
{ {
$data['brd_key'] = $this->input->post('brd_key', TRUE); $data['brd_key'] = $this->input->post('brd_key', TRUE);
$data['brd_type'] = $this->input->post('brd_type',TRUE,'list');
$data['brd_title'] = $this->input->post('brd_title', TRUE,''); $data['brd_title'] = $this->input->post('brd_title', TRUE,'');
$data['brd_keywords'] = $this->input->post('brd_keywords', TRUE); $data['brd_keywords'] = $this->input->post('brd_keywords', TRUE);
$data['brd_description'] = $this->input->post('brd_description', TRUE); $data['brd_description'] = $this->input->post('brd_description', TRUE);

145
wheeparam/application/libraries/Boardlib.php

@ -479,8 +479,14 @@ class Boardlib {
if( $this->CI->form_validation->run() != FALSE ) if( $this->CI->form_validation->run() != FALSE )
{ {
// 비회원이로 리캡쳐 설정이 되있을 경우 구글 리캡챠 확인
// 수정글이면 기존 글의 정보를 가져온다.
$post = array();
if( $post_idx ) {
$post = $this->get_post($brd_key, $post_idx, FALSE);
}
// 비회원이로 리캡쳐 설정이 되있을 경우 구글 리캡챠 확인
if( ! $this->CI->member->is_login() ) if( ! $this->CI->member->is_login() )
{ {
// 비회원이고 리캡쳐 설정이 되있을 경우 경우 구글 리캡챠확인 // 비회원이고 리캡쳐 설정이 되있을 경우 경우 구글 리캡챠확인
@ -498,8 +504,6 @@ class Boardlib {
// 비회원일이고 수정일 경우 입력한 패스워드와 기존 패스워드 확인 // 비회원일이고 수정일 경우 입력한 패스워드와 기존 패스워드 확인
if( $post_idx ) if( $post_idx )
{ {
$post = $this->get_post($brd_key, $post_idx, FALSE);
if( get_password_hash( $this->CI->input->post('post_password', TRUE) ) != $post['post_password'] ) if( get_password_hash( $this->CI->input->post('post_password', TRUE) ) != $post['post_password'] )
{ {
alert('잘못된 비밀번호 입니다.'); alert('잘못된 비밀번호 입니다.');
@ -596,7 +600,7 @@ class Boardlib {
} }
else else
{ {
$filedata = $this->upload->data();
$filedata = $this->CI->upload->data();
$upload_array[] = array( $upload_array[] = array(
"att_target_type" => 'BOARD', "att_target_type" => 'BOARD',
"att_origin" => $filedata['orig_name'], "att_origin" => $filedata['orig_name'],
@ -622,70 +626,6 @@ class Boardlib {
} }
} }
// 게시글의 대표 이미지를 가져온다.
if ( count($upload_array) > 0 ) {
// 첨부파일중에 이미지가 있으면 그중에 가장 먼저나오는걸 설정
foreach($upload_array as $row) {
if($row['att_is_image'] == 'Y') {
$data['post_thumbnail'] = $row['att_filepath'];
break;
}
}
// 첨부파일중에 없다면 HTML 코드에서 이미지를 찾아낸다.
if( empty($data['post_thumbnail']) ) {
$matches = get_editor_image($data['post_content']);
if(! empty($matches)) {
$img = element(0, element(1, $matches));
if(! empty($img)) {
preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
$src = isset($m[1]) ? $m[1] : '';
if(! empty($src)) {
$data['post_thumbnail'] = $src;
}
}
}
}
$matches = null;
// 거기서도 없으면 본문내용에 포함된 iframe 동영상에서..
if( empty($data['post_thumbnail']) ) {
preg_match_all("/<iframe[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i", $data['post_content'], $matches);
for ($i = 0; $i < count($matches[1]); $i++) {
if (!isset($matches[1][$i])) continue;
$video = get_video_info($matches[1][$i]);
// 비디오 타입이 아니거나, 알려지지 않은 비디오 일경우 건너뛴다.
if (!$video['type'] OR !$video['thumb']) continue;
if ($video['thumb']) {
$data['post_thumbnail'] = $video['thumb'];
}
}
}
// 그래도 없으면 embed 태그 포함여부 확인해서..
$matches = null;
if( empty($data['post_thumbnail']) ) {
preg_match_all("/<embed[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i", $data['post_content'], $matches);
for($i=0; $i<count($matches[1]); $i++) {
if(! isset($matches[1][$i]) ) continue;
$video = get_video_info( $matches[1][$i] );
// 비디오 타입이 아니거나, 알려지지 않은 비디오 일경우 건너뛴다.
if(! $video['type'] OR ! $video['thumb']) continue;
if($video['thumb']) {
$data['post_thumbnail'] = $video['thumb'];
}
}
}
}
// 수정이냐 신규냐에 따른 값 결정 // 수정이냐 신규냐에 따른 값 결정
if( empty($post_idx) ) { if( empty($post_idx) ) {
$data['reg_user'] = $data['upd_user']; $data['reg_user'] = $data['upd_user'];
@ -764,6 +704,74 @@ class Boardlib {
$this->CI->db->insert_batch("attach", $upload_array); $this->CI->db->insert_batch("attach", $upload_array);
} }
// 게시글의 대표 이미지를 가져온다.
$attach_list = $this->get_attach_list($data['brd_key'], $post_idx);
if ( count($attach_list) > 0 ) {
foreach($attach_list as $row) {
if($row['att_is_image'] == 'Y') {
$data['post_thumbnail'] = base_url($row['att_filepath']);
break;
}
}
}
// 첨부파일중에 없다면 HTML 코드에서 이미지를 찾아낸다.
if( empty($data['post_thumbnail']) ) {
$matches = get_editor_image($data['post_content']);
if(! empty($matches)) {
$img = element(0, element(1, $matches));
if(! empty($img)) {
preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
$src = isset($m[1]) ? $m[1] : '';
if(! empty($src)) {
$data['post_thumbnail'] = str_replace(base_url()."/", "", $src);
}
}
}
}
$matches = null;
// 거기서도 없으면 본문내용에 포함된 iframe 동영상에서..
if( empty($data['post_thumbnail']) ) {
preg_match_all("/<iframe[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i", $data['post_content'], $matches);
for ($i = 0; $i < count($matches[1]); $i++) {
if (!isset($matches[1][$i])) continue;
$video = get_video_info($matches[1][$i]);
// 비디오 타입이 아니거나, 알려지지 않은 비디오 일경우 건너뛴다.
if (!$video['type'] OR !$video['thumb']) continue;
if ($video['thumb']) {
$data['post_thumbnail'] = $video['thumb'];
}
}
}
// 그래도 없으면 embed 태그 포함여부 확인해서..
$matches = null;
if( empty($data['post_thumbnail']) ) {
preg_match_all("/<embed[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i", $data['post_content'], $matches);
for($i=0; $i<count($matches[1]); $i++) {
if(! isset($matches[1][$i]) ) continue;
$video = get_video_info( $matches[1][$i] );
// 비디오 타입이 아니거나, 알려지지 않은 비디오 일경우 건너뛴다.
if(! $video['type'] OR ! $video['thumb']) continue;
if($video['thumb']) {
$data['post_thumbnail'] = $video['thumb'];
}
}
}
$this->CI->db->where('post_idx', $post_idx)->set('post_thumbnail', $data['post_thumbnail'])->update('board_post');
// 자신의 글은 비밀글이더라도 바로 보거나, 아니면 수정/삭제를 할수 있도록 세션처리 // 자신의 글은 비밀글이더라도 바로 보거나, 아니면 수정/삭제를 할수 있도록 세션처리
if($this->CI->member->is_login() ) { if($this->CI->member->is_login() ) {
if( ! PAGE_ADMIN && ! $this->CI->member->is_super() ) if( ! PAGE_ADMIN && ! $this->CI->member->is_super() )
@ -1393,5 +1401,4 @@ class Boardlib {
$this->CI->db->where('brd_key', $brd_key)->where('post_idx', $post_idx)->set('post_count_comment', (int)$count); $this->CI->db->where('brd_key', $brd_key)->where('post_idx', $post_idx)->set('post_count_comment', (int)$count);
return $this->CI->db->update('board_post'); return $this->CI->db->update('board_post');
} }
} }

1
wheeparam/config/wheeparam.sql

@ -74,6 +74,7 @@ CREATE TABLE `wb_banner_group` (
DROP TABLE IF EXISTS `wb_board`; DROP TABLE IF EXISTS `wb_board`;
CREATE TABLE `wb_board` ( CREATE TABLE `wb_board` (
`brd_key` varchar(20) NOT NULL DEFAULT '', `brd_key` varchar(20) NOT NULL DEFAULT '',
`brd_type` enum('list','gallery','webzine') NOT NULL DEFAULT 'list',
`brd_title` varchar(30) NOT NULL DEFAULT '', `brd_title` varchar(30) NOT NULL DEFAULT '',
`brd_skin_l` varchar(100) NOT NULL DEFAULT '', `brd_skin_l` varchar(100) NOT NULL DEFAULT '',
`brd_skin_l_m` varchar(100) NOT NULL DEFAULT '', `brd_skin_l_m` varchar(100) NOT NULL DEFAULT '',

10
wheeparam/views/themes/admin/board/form.php

@ -28,6 +28,16 @@
<input class="form-control" name="brd_title" maxlength="30" value="<?=element('brd_title', $view)?>" required> <input class="form-control" name="brd_title" maxlength="30" value="<?=element('brd_title', $view)?>" required>
</div> </div>
</div> </div>
<div data-ax-td>
<div data-ax-td-label>게시판 형태</div>
<div data-ax-td-wrap>
<select class="form-control" name="brd_type">
<option value="list" <?=element('brd_type', $view)=='list'?'selected':''?>>목록형</option>
<option value="gallery" <?=element('brd_type', $view)=='gallery'?'selected':''?>>앨범형</option>
<option value="webzine" <?=element('brd_type', $view)=='webzine'?'selected':''?>>웹진형</option>
</select>
</div>
</div>
</div> </div>
<div data-ax-tr> <div data-ax-tr>
<div data-ax-td class="width-100"> <div data-ax-td class="width-100">

8
wheeparam/views/themes/admin/board/lists.php

@ -15,6 +15,14 @@
columns: [ columns: [
{caption:'고유KEY', dataField:'brd_key', width:80, alignment:'left'}, {caption:'고유KEY', dataField:'brd_key', width:80, alignment:'left'},
{caption:'게시판이름', dataField:'brd_title', minWidth:100, alignment:'left'}, {caption:'게시판이름', dataField:'brd_title', minWidth:100, alignment:'left'},
{
caption:'타입', dataField:'brd_type', width:60, alignment:'center',
customizeText:function(cell) {
if(cell.value == 'list') return '목록형';
else if (cell.value == 'gallery') return '앨범형';
else if (cell.value == 'webzine') return '웹진형';
}
},
{ {
caption:'스킨', caption:'스킨',
columns: [ columns: [

Loading…
Cancel
Save