묻고답하기
2015년 1월 1일 이전 게시물에는 댓글 / 추천을 할 수 없게 하고 싶어요.
2015.02.14 17:15
안녕 하세요!
제 사이트는 포인트로 사이트의 활성화를 해보려 합니다
그런데
오래된 게시물에 의미없는 댓글과 추천을 하면서 포인트를 획득한다면 그것도 문제라 생각 됩니다
하여
2015년 1월 1일 이전 게시물에는 댓글 / 추천을 할 수 없게 하고 싶어요.
위와 비슷한 애드온을 어디서 본듯도 한데 아무리 찾아도 없네요
아니면 고수님들께서
XE 수정을 통한 방법을 알려 주시면 안됄까요?
고수 회원님들께 자문을 구해봅니다
감사합니다
즐거운 설 명절 되세요~
XE 1.7.8
모듈스킨 스켓치북 최신버전.
댓글 17
-
꾸링
2015.02.15 17:57
-
아기나옹이
2015.02.15 18:23
꾸링님 관심 감사드립니다
저는 개인적으로 제일 아래 소스 수정이 제일 마음에 드네요 ^^
수정 파일이
/modules/document/document.controller.php
이 맞나요?
저는 XE 1.7.8을 쓰는데
function procDocumentVoteDown()
{
if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request');$document_srl = Context::get('target_srl');
if(!$document_srl) return new Object(-1, 'msg_invalid_request');$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
$module_srl = $oDocument->get('module_srl');
if(!$module_srl) return new Object(-1, 'msg_invalid_request');$oModuleModel = getModel('module');
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
if($document_config->use_vote_down=='N') return new Object(-1, 'msg_invalid_request');//////////////////////////////////
이런 부분이 있어 여길 수정 하는게 맞나요?
첫 소스 부터 약간 달라서..
function procDocumentVoteDown()
저는 이렇게 되어 있는데
꾸링님 말씀 처럼 위의 다운이라는 글짜도
function procDocumentVoteUp()
요렇게 바꾸어 주는건가요?
감사합니다
-
꾸링
2015.02.15 18:30
function procDocumentVoteUp() 이부분입니다. UP이 추천이고 DOWN이 비추천입니다.
이 부분 소스를 아래와 같이 변경하세요.
function procDocumentVoteUp()
{
if(!Context::get('is_logged')) return new Object(-1, 'msg_invalid_request');
$document_srl = Context::get('target_srl');
if(!$document_srl) return new Object(-1, 'msg_invalid_request');
//게시물 작성날짜 < 2015년 1월 1일 (작성날짜가 1월 1일보다 작을경우, return)
if($oDocument->get('regdate')) < date('YmdHis', strtotime('2015-01-01 00:00:00')) return new Object(-1, 'msg_invalid_request');
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
$module_srl = $oDocument->get('module_srl');
if(!$module_srl) return new Object(-1, 'msg_invalid_request');
$oModuleModel = getModel('module');
$document_config = $oModuleModel->getModulePartConfig('document',$module_srl);
if($document_config->use_vote_up=='N') return new Object(-1, 'msg_invalid_request');
$point = 1;
$output = $this->updateVotedCount($document_srl, $point);
$this->add('voted_count', $output->get('voted_count'));
return $output;
}
-
아기나옹이
2015.02.15 18:53
애써주셔 감사한데요..
오래된 게시물이나 신규 작성 게시물이나
추천 자체가 먹통이 되어 버리네요?
알려 주신 부분을 찾아서 정확히 수정 하였거든요?
-
꾸링
2015.02.15 19:15
미안합니다.
괄호가 잘못됬네요
1.7.10에서 테스트해본결과 정상작동됩니다.
document.controller.php 에
function procDocumentVoteUp()
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
$module_srl = $oDocument->get('module_srl');
밑에
//게시물 작성날짜 < 2015년 1월 1일 (작성날짜가 1월 1일보다 작을경우, return)
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, 'msg_invalid_request');
추가해보세요.추가하고, 2015년 1월 1일 이전 게시물을 추천하시면
잘못된 요청입니다. 경고창이 뜨는걸 보실겁니다. (이후 게시물은 정상 추천되구요.)
차후 코어 업데이트시 해당 부분이 누락되므로 저장해뒀다가 코어 업데이트이후 다시 추가해줘야합니다.
-
아기나옹이
2015.02.15 19:31
미안하긴요~
별말씀 다하십니다
저 때문에 애써주시는데 감사하죠
말씀해주신데로 잘 작동 합니다
그런데 약간 의문점은
저는 1.7.8을 쓰는데
//////////////////////////
$module_srl = $oDocument->get('module_srl');
//게시물 작성날짜 < 2015년 1월 1일 (작성날짜가 1월 1일보다 작을경우, return)
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, 'msg_invalid_request');
if(!$module_srl) return new Object(-1, 'msg_invalid_request');////////////////////////////////////////////////
위와 같이 저기 사이에다 넣었습니다
그런데 if(!$module_srl) return new Object(-1, 'msg_invalid_request');
이 부분을 지우는것인지
그냥 내비두는지가 의문입니다
일단 그냥 내비두었습니다
꾸링님 너무 감사합니다
잘 해결 되었어요
설 명절 즐겁게 보내세요~
-
꾸링
2015.02.15 19:32
1.7.8이나 10이나
해당 소스 부분은 동일합니다.
기존 내용은 건들이지마시고 해당 부분만 추가하는 것입니다.
-
아기나옹이
2015.02.15 19:36
아~
그렇군요~
건들지 않고 내비 두었습니다
꾸링님 수고 많으셨습니다
좋은날 되세요~
-
꾸링
2015.02.15 18:39
그리고 댓글 작성도 금지는
document가 아니라
comment.controller.php 에서
function insertComment($obj, $manual_inserted = FALSE)
// get the original posting if(!$manual_inserted) { $oDocument = $oDocumentModel->getDocument($document_srl);
밑에
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, 'msg_invalid_request');
부분 밑에
같은소스 한줄을 넣으면되는데
이 부분은 애드온이 이미 있어서 애드온으로 제어하시는 편이 나을 것으로 보입니다.
-
아기나옹이
2015.02.15 19:35
꾸링님 이왕 애써주시는길에
염치 없지만
이 부분은 1.7.8에서는 소스가 많이 바뀌었나봐요
1.7.8에서 정확한 위치좀 찝어 주시면 감사하겠습니다
^^
죄송합니다~
-
꾸링
2015.02.15 19:37
comment/comment.controller.php
//찾기 Line 420
// insert comment
$output = executeQuery('comment.insertComment', $obj);
if(!$output->toBool())
{
$oDB->rollback(); return $output;
}
//찾기 끝
//추가
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, 'msg_invalid_request');
//추가 끝
-
아기나옹이
2015.02.15 20:11
꾸링님 감사합니다!
날짜도 정확하게 감지 하여 잘 작동 합니다~
지식을 베풀어 주셔서
감사의 마음 깊이 간직 하겠습니다
새해 복 많이 받으시고
설 명절 즐겁게 보내세요~
감사합니다!!
-
아기나옹이
2015.02.16 13:32
꾸링님 안녕 하세요~
어제 애써주셔서 오늘 또 말씀 드리기가 뭐해서 무척 망설였습니다
하지만 오류 보고까지는 드려보자 하여 이리 다시 댓글 달아 봅니다
comment/comment.controller.php
를 알려 주신데로 수정 하면 작동은 잘됩니다
그러나 코멘트와 관련된것을 수정해 주셨는데
우째된일인지 신규 게시물 작성 시
에러를 일으키네요?
신규 게시물을 작성 할때
와 같이 빈메시지를 보여 주며 게시판이 멈춤?니다
원래는 리로딩이 되면서 신규 게시물이 작성이 되어야 하잖아요?
리로딩이 안돼면서 위의 메시지만 보여 주며 가만히 있습니다
그런데 신기한것은 게시물 목록으로 와보면 게시물은 작성이 되어 있구요
그래서 뭐가 문제인가 찾다가
XE 1.7.8 버전을 새로 다운 받아
comment/comment.controller.php 파일을 새로이 수정안한 원본을 올려 주면
신규 게시물 작성이 정상 작동 되구요...ㅠㅠ
꾸링님
어제 애써주신것으로 충분합니다
감사하고요
혹시 시간이 되시면 살펴 봐주시구요
바쁘시면 그냥 무시하고 넘어가주세요
좋은날 되시고
설 명절 즐겁게 보내세요
감사합니다
-
꾸링
2015.02.20 18:43
comment.controller.php 를 다시 아래와 같이 수정해보세요.
//찾기 시작
// input the member's information if logged-in
if(Context::get('is_logged'))
{
$logged_info = Context::get('logged_info');
$obj->member_srl = $logged_info->member_srl;// user_id, user_name and nick_name already encoded
$obj->user_id = htmlspecialchars_decode($logged_info->user_id);
$obj->user_name = htmlspecialchars_decode($logged_info->user_name);
$obj->nick_name = htmlspecialchars_decode($logged_info->nick_name);
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
}//찾기 끝
//추가
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, "2015년 1월 1일 이전 게시물에는 댓글을 작성하실 수 없습니다.");
//추가 끝 -
아기나옹이
2015.02.20 20:41
꾸링님~
설명절 즐겁게 보내셨지요 ^^
마찬가지네요
게시물 신규 작성에 영향을 줘요
꾸링님~
그냥 댓글은 오래된 게시물에 작성해도 포인트를 조금 주는것으로 방침을 바꾸려 해요
끝까지 어떻게든 해결해주실려고 애쓰셔서 너무 감사했습니다~
늘 즐겁고 행복 가득한 일만 가득 하세요~
-
아기나옹이
2015.02.21 12:22
꾸링님!
답을 찾았습니다!
제가 쓰고 있는 버전은 1.7.8 입니다
그래서 제 동호인 사이트는 1.7.11 이어서 거기다 테스트 하여 보니 거기서는 작동 잘됩니다
다만 1.7.11에서는 우리나라말이 안먹혀서 영어로
if($oDocument->get('regdate') < date('YmdHis', strtotime('2015-01-01 00:00:00'))) return new Object(-1, "aaaaaaaaaaaaaaaaaa.");
넣어 주어야 합니다
그건 그렇고
그냥 포기 하려 했는데..
이제 원인을 알았으니까
1.7.8에서 가능한 소스좀 짜주시면 안됄까요?
감사합니다
즐거운 주말 되세요!
-
bluedream
2015.02.20 21:38
http request를 일반사람들이 쉽게 할 수 없을 꺼라 생각하는데.. 모듈수정 말고 게시판 스킨파일에서 수정하시는게 장기적으로 좋을 거라 생각합니다. xe 기본모듈들을 변경하면 나중에 계속 수정해줘야 해서요.
//게시물 작성날짜 < 2015년 1월 1일 (작성날짜가 1월 1일보다 작을경우, return)
if($oDocument->get('regdate')) < date('YmdHis', strtotime('2015-01-01 00:00:00')) {