diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index b78b60816..40d910f0b 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -37,14 +37,20 @@ $module = 'install'; $mid = NULL; - // mid가 없이 document_srl만 있다면 document_srl로 mid를 찾음 - } elseif(!$module) { + // 설치가 되어 있을시에 요청받은 모듈을 확인 (없으면 기본 모듈, 기본 모듈도 없으면 에러 출력) + } else { // document_srl만 있다면 mid를 구해옴 if(!$mid && $document_srl) $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl); - // mid 값에 대한 모듈 정보를 추출 - if(!$module_info) $module_info = $oModuleModel->getModuleInfoByMid($mid); + // document_srl에 의한 모듈 찾기가 안되었거나 document_srl이 없을시 처리 + if(!$module_info) { + // mid 값이 있으면 모듈을 찾기 + if($mid) $module_info = $oModuleModel->getModuleInfoByMid($mid); + + // mid값이 없고 module지정이 없을시 + elseif(!$module) $module_info = $oModuleModel->getModuleInfoByMid($mid); + } // 모듈 정보에서 module 이름을 구해움 $module = $module_info->module; diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index 08d8437b1..0e6ee73ca 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -43,7 +43,6 @@ * @brief 모듈의 정보 세팅 **/ function setModuleInfo($module_info, $xml_info) { - // 기본 변수 설정 $this->mid = $module_info->mid; $this->module = $module_info->module; diff --git a/common/js/xml_js_filter.js b/common/js/xml_js_filter.js index 1dbf50be7..5c236909b 100644 --- a/common/js/xml_js_filter.js +++ b/common/js/xml_js_filter.js @@ -15,7 +15,7 @@ function filterAlertMessage(ret_obj) { var message = ret_obj["message"]; var redirect_url = ret_obj["redirect_url"]; var url = location.href; - if(typeof(message)!='undefined'&&message) alert(message); + if(typeof(message)!='undefined'&&message&&message!='success') alert(message); if(typeof(redirect_url)!='undefined'&&redirect_url) url = redirect_url; location.href = url; } diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index b67e5303c..972bddc54 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -11,8 +11,6 @@ * @brief 초기화 **/ function init() { - // 파일 업로드일 경우 $act값을 procUploadFile() 로 변경 - if(Context::isUploaded() && $this->grant->fileupload) Context::set('act', 'procUploadFile'); } /** @@ -25,7 +23,8 @@ // member모듈 controller 객체 생성 $oMemberController = &getController('member'); - return $oMemberController->doLogin($user_id, $password); + $output = $oMemberController->doLogin($user_id, $password); + if(!$output->toBool()) return $output; } /** @@ -41,6 +40,7 @@ * @brief 문서 입력 **/ function procInsertDocument() { + // 글작성시 필요한 변수를 세팅 $obj = Context::getRequestVars(); $obj->module_srl = $this->module_srl; @@ -53,7 +53,7 @@ $oDocumentController = &getController('document'); // 이미 존재하는 글인지 체크 - $document = $oDocumentModel->getDocument($obj->document_srl); + $document = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager); // 이미 존재하는 경우 수정 if($document->document_srl == $obj->document_srl) { @@ -66,6 +66,7 @@ $msg_code = 'success_registed'; $obj->document_srl = $output->get('document_srl'); } + if(!$output->toBool()) return $output; // 트랙백 발송 $trackback_url = Context::get('trackback_url'); @@ -75,10 +76,9 @@ $oTrackbackController->sendTrackback($obj, $trackback_url, $trackback_charset); } - if(!$output->toBool()) return $output; - $this->setMessage($msg_code); $this->add('mid', Context::get('mid')); $this->add('document_srl', $output->get('document_srl')); + $this->setMessage($msg_code); } /** @@ -270,6 +270,9 @@ * @brief 첨부파일 업로드 **/ function procUploadFile() { + // 업로드 권한이 없거나 정보가 없을시 종료 + if(!Context::isUploaded() || !$this->grant->fileupload) exit(); + // 기본적으로 필요한 변수인 document_srl, module_srl을 설정 $document_srl = Context::get('document_srl'); $module_srl = $this->module_srl; diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 1fac5f186..c08f2d30c 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -104,7 +104,7 @@ // 지정된 글이 없다면 (신규) 새로운 번호를 만든다 if($document_srl) { - $document = $oDocumentModel->getDocument($document_srl); + $document = $oDocumentModel->getDocument($document_srl, $this->grant->manager); if(!$document) { unset($document_srl); Context::set('document_srl',''); diff --git a/modules/board/skins/default/comment.html b/modules/board/skins/default/comment.html index bd706044e..7f69ee08a 100644 --- a/modules/board/skins/default/comment.html +++ b/modules/board/skins/default/comment.html @@ -34,9 +34,9 @@ - [{$lang->cmd_modify}] - [{$lang->cmd_reply}] - [{$lang->cmd_delete}] + [{$lang->cmd_modify}] + [{$lang->cmd_reply}] + [{$lang->cmd_delete}] diff --git a/modules/board/skins/default/delete_trackback_form.html b/modules/board/skins/default/delete_trackback_form.html index bdeb3a4ae..4ce1d6cf5 100644 --- a/modules/board/skins/default/delete_trackback_form.html +++ b/modules/board/skins/default/delete_trackback_form.html @@ -1,7 +1,7 @@ - + -
+ diff --git a/modules/board/skins/default/filter/logout.xml b/modules/board/skins/default/filter/logout.xml index 75e933e64..f1c877dbd 100644 --- a/modules/board/skins/default/filter/logout.xml +++ b/modules/board/skins/default/filter/logout.xml @@ -1,12 +1,7 @@ - - - - - diff --git a/modules/board/skins/default/js/board.js b/modules/board/skins/default/js/board.js index 2d9eb9927..d9a784976 100644 --- a/modules/board/skins/default/js/board.js +++ b/modules/board/skins/default/js/board.js @@ -17,13 +17,6 @@ function completeDocumentInserted(ret_obj) { location.href = url; } - - - - - - - /* 글 삭제 */ function procDeleteDocument(ret_obj, response_tags) { var error = ret_obj['error']; diff --git a/modules/board/skins/default/login_form.html b/modules/board/skins/default/login_form.html index 006d279c0..3ffecd69b 100644 --- a/modules/board/skins/default/login_form.html +++ b/modules/board/skins/default/login_form.html @@ -1,9 +1,8 @@ - +
- diff --git a/modules/board/skins/default/logout.html b/modules/board/skins/default/logout.html index 2fec8f877..0a6a83abe 100644 --- a/modules/board/skins/default/logout.html +++ b/modules/board/skins/default/logout.html @@ -1,9 +1,8 @@ - + -
diff --git a/modules/board/skins/default/trackback.html b/modules/board/skins/default/trackback.html index 1af1d6107..ec34e7d9a 100644 --- a/modules/board/skins/default/trackback.html +++ b/modules/board/skins/default/trackback.html @@ -38,7 +38,7 @@
{$lang->cmd_logout}
- [{$lang->cmd_delete}] + [{$lang->cmd_delete}]
diff --git a/modules/board/skins/default/view_document.html b/modules/board/skins/default/view_document.html index b45b6e11e..a0dd5fc2e 100644 --- a/modules/board/skins/default/view_document.html +++ b/modules/board/skins/default/view_document.html @@ -41,7 +41,7 @@ {$lang->content} - {Document::transContent($document->content)} + {$document->content} @@ -92,8 +92,8 @@ diff --git a/modules/board/skins/default/write_form.html b/modules/board/skins/default/write_form.html index 1d011c9d8..a8fc9257a 100644 --- a/modules/board/skins/default/write_form.html +++ b/modules/board/skins/default/write_form.html @@ -3,7 +3,7 @@ fileupload)-->enctype="multipart/form-data"> - + diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 5a43d1916..c8ce57a51 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -77,6 +77,8 @@ * @brief 문서 수정 **/ function updateDocument($source_obj, $obj) { + $oDB = &DB::getInstance(); + // 기본 변수들 정리 if($obj->is_secret!='Y') $obj->is_secret = 'N'; if($obj->allow_comment!='Y') $obj->allow_comment = 'N'; @@ -91,16 +93,18 @@ // 카테고리가 변경되었으면 검사후 없는 카테고리면 0으로 세팅 if($source_obj->category_srl!=$obj->category_srl) { - $category_list = $this->getCategoryList($obj->module_srl); + $oDocumentModel = &getModel('document'); + $category_list = $oDocumentModel->getCategoryList($obj->module_srl); if(!$category_list[$obj->category_srl]) $obj->category_srl = 0; } // 태그 처리 - $oTagController = &getController('tag'); - $obj->tags = $oTagController->insertTag($obj->module_srl, $obj->document_srl, $obj->tags); + if($source_obj->tags != $obj->tags) { + $oTagController = &getController('tag'); + $obj->tags = $oTagController->insertTag($obj->module_srl, $obj->document_srl, $obj->tags); + } // 수정 - $oDB = &DB::getInstance(); $obj->update_order = $oDB->getNextSequence() * -1; // 공지사항일 경우 list_order에 무지막지한 값을, 그렇지 않으면 document_srl*-1값을 @@ -111,7 +115,6 @@ // DB에 입력 $output = $oDB->executeQuery('document.updateDocument', $obj); - if(!$output->toBool()) return $output; // 성공하였을 경우 category_srl이 있으면 카테고리 update @@ -189,14 +192,26 @@ $document_srl = $document->document_srl; // session에 정보로 조회수를 증가하였다고 생각하면 패스 - if($_SESSION['readed_document'][$document_srl]) return; + if($_SESSION['readed_document'][$document_srl]) return false; - // member model 객체 생성 - $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getLoggedMemberSrl(); + // 글의 작성 ip와 현재 접속자의 ip가 동일하면 패스 + if($document->ipaddress == $_SERVER['REMOTE_ADDR']) { + $_SESSION['readed_document'][$document_srl] = true; + return false; + } - // 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스 - if($member_srl && $member_srl == $document->member_srl) return $_SESSION['readed_document'][$document_srl] = true; + // document의 작성자가 회원일때 조사 + if($document->member_srl) { + // member model 객체 생성 + $oMemberModel = &getModel('member'); + $member_srl = $oMemberModel->getLoggedMemberSrl(); + + // 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스 + if($member_srl && $member_srl == $document->member_srl) { + $_SESSION['readed_document'][$document_srl] = true; + return false; + } + } // DB 객체 생성 $oDB = &DB::getInstance(); @@ -207,6 +222,7 @@ } else { $args->ipaddress = $_SERVER['REMOTE_ADDR']; } + $args->document_srl = $document_srl; $output = $oDB->executeQuery('document.getDocumentReadedLogInfo', $args); // 로그 정보에 조회 로그가 있으면 세션 등록후 패스 @@ -219,7 +235,7 @@ $output = $oDB->executeQuery('document.insertDocumentReadedLog', $args); // 세션 정보에 남김 - $_SESSION['readed_document'][$document_srl] = true; + return $_SESSION['readed_document'][$document_srl] = true; } /** diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 47fb5af66..e97919bba 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -30,20 +30,12 @@ $output = $oDB->executeQuery('document.getDocument', $args); $document = $output->data; - if(!$get_extra_info) return $document; - - // document controller 객체 생성 - $oDocumentController = &getController('document'); - - // 조회수 업데이트 - $oDocumentController->updateReadedCount($document); - // 이 문서에 대한 권한이 있는지 확인 if($this->isGranted($document->document_srl) || $is_admin) { $document->is_granted = true; } elseif($document->member_srl) { $oMemberModel = &getMemberModel('member'); - $member_srl = $oMemberModel->getMemberSrl(); + $member_srl = $oMemberModel->getLoggedMemberSrl(); if($member_srl && $member_srl ==$document->member_srl) $document->is_granted = true; } @@ -51,6 +43,18 @@ if($document->is_secret=='Y' && !$document->is_granted) { $document->title = $document->content = Context::getLang('msg_is_secret'); } + + // 내용 변경 + $document->content = $this->transContent($document->content); + + // 확장 정보(코멘트나 기타 등등) 플래그가 false이면 기본 문서 정보만 return + if(!$get_extra_info) return $document; + + // document controller 객체 생성 + $oDocumentController = &getController('document'); + + // 조회수 업데이트 + if($buff = $oDocumentController->updateReadedCount($document)) $document->readed_count++; // 댓글 가져오기 if($document->comment_count && $document->allow_comment == 'Y') { @@ -89,7 +93,7 @@ // 권한 체크 $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getMemberSrl(); + $member_srl = $oMemberModel->getLoggedMemberSrl(); $document_count = count($document_list); for($i=0;$i<$document_count;$i++) { @@ -159,7 +163,7 @@ // 권한 체크 $oMemberModel = &getModel('member'); - $member_srl = $oMemberModel->getMemberSrl(); + $member_srl = $oMemberModel->getLoggedMemberSrl(); foreach($output->data as $key => $document) { $is_granted = false; diff --git a/modules/document/queries/insertDocumentReadedLog.xml b/modules/document/queries/insertDocumentReadedLog.xml index 9b6df1d60..15e238f90 100644 --- a/modules/document/queries/insertDocumentReadedLog.xml +++ b/modules/document/queries/insertDocumentReadedLog.xml @@ -5,7 +5,7 @@ - + diff --git a/modules/document/schemas/document_readed_log.xml b/modules/document/schemas/document_readed_log.xml index d8256336d..9aecafed1 100644 --- a/modules/document/schemas/document_readed_log.xml +++ b/modules/document/schemas/document_readed_log.xml @@ -1,5 +1,5 @@
- +