안녕하세요.
지난번에 KBoard를 이용하여 SNS 스타일 폼을 만들고 있다고 했었던 개발자 입니다.
그런데, ajax를 통해 컨텐츠를 받아오면
/pathname?parameter 대신에
/wp-admin/admin-ajax.php?parameter 로 변경되는 문제가 있습니다.
그래서 jQuery에서 텍스트를 강제로 /pathname?parameter 로 변경하였습니다.
그렇게 하니, 정상적으로 게시물 수정, 삭제, 코멘트 수정, 삭제는 가능한데, 코멘트 작성 시 권한이 없다고 합니다. 디버깅 해 보니,
KBCommentController.class.php 파일, insert() 함수 안에 첫째줄
if(isset($_POST['kboard-comments-execute-nonce']) && wp_verify_nonce($_POST['kboard-comments-execute-nonce'], 'kboard-comments-execute'))
에서 false가 발생하더라구요...
아마... ajax로 리스트를 받아올 때, 객체 정보 없이 html태그만 가져왔기 때문에
댓글 폼의 kboard_comment_insert action 부분에서 정확한 정보가 전달이 안된 것 같은데....
어떤 해결방안이 있을까요..ㅠ_ㅠ
https://firstmake.co/star
테스트용 아이디 패스워드는 test/test 입니다.
추가적으로 제가 ajax로 데이터를 가져온 방법은
기존에 KBoard 플러그인의 index.php 의 kboard_ajax_builder() 를 이용하지 않고, ( $board_builder->getListArray() 가 array만 전달해 줘서... html로 변환 과정이 어려워서)
새로 함수를 정의하여, KBoardBuilder 클래스의 buliderList 를 커스터마이징한 함수를 호출하여 다음 리스트 페이지를 호출하여 해당 html만 가져와서 아래에 append 시켰습니다.
안녕하세요~^^
페이지 완성되면 구경 가겠습니다.
KBoard와 코스모스팜 홍보 부탁드려요. ㅎㅎ
고맙습니다.
KBoard를 활용하여 멋진 프로젝트 꼭 성공시켜보도록 하겠습니다~!
스레드봇님 감사합니다^^
안녕하세요 위의 문제를 해결하였습니다.
<form></form> 내부에는 이상이 없었고, 제가 스킨(리스트 부분)을 수정하면서, 겉에 table tr이 있었는데, 이것을 그대로 놓고 tr에 form을 작성했었나 봅니다.
tr에 form을 넣는것은 illegal이라고 알려주네요
아래 링크 참조 하세요^^;;
https://stackoverflow.com/questions/5967564/form-inside-a-table
올려주신 코드에서 아래의 코드 중 "uid" 부분을 "data-uid"로 수정해주셔야 할 듯합니다.
<textarea class="kboard-comments-textarea" uid="<?php echo $content_uid?>" name="comment_content" placeholder="<?php echo __('Add a comment', 'kboard-comments')?>..." required><?php echo $temporary->content?></textarea>
스킨 파일을 직접 수정하신 부분이 많다면
저희 쪽에서 도움을 드리기 어려울 수도 있습니다.
추가, 수정하신 코드에 오타나 빠진 부분이 있는지 하나 씩 확인해보셔야 할 듯합니다.
이상하네요... 크롬에서 소스보기(마우스 우클릭 - 페이지소스보기) 에서는 </form>이 정상적으로 아래에 표시가 되네요 ㅠ_ㅠ......... 무슨문제 일까요..ㅠㅠ
<추가>
ajax 결과도 동일하게 </form>이 아래쪽에 오네요.....
페이지 렌더링 과정에서 </form>이 움직일 수도 있나요..
<form id="kboard-comments-form-<?php echo $content_uid?>" method="post" onsubmit="return kboard_comments_execute(this);" action="<?php echo $commentURL->getInsertURL()?>">
<input type="hidden" name="content_uid" value="<?php echo $content_uid?>">
<input type="hidden" name="member_uid" value="<?php echo $member_uid?>">
<div class="kboard-comments-form">
<?php wp_nonce_field('kboard-comments-execute', 'kboard-comments-execute-nonce')?>
<div class="comments-field">
<textarea class="kboard-comments-textarea" uid="<?php echo $content_uid?>" name="comment_content" placeholder="<?php echo __('Add a comment', 'kboard-comments')?>..." required><?php echo $temporary->content?></textarea>
</div>
</div>
</form>
이상하네요 ㅠ_ㅠ....
처음부터 위와 같이 정상적으로 </form>이 아래쪽에 있었는데......
아무리 바꿔도 잘 되지 않네요... 스킨을 다시 만들어야하나...
그런데 이상하네요 ㅠ_ㅠ list.php에는 아래쪽 <!-- 댓글 입력 폼 끝 --> 부분에 </form> 이 있는데....
어쨌든 한번 확인 해 보겠습니다 ㅠ_ㅠ
어랏....... 그러네요!!! 한번 해 보겠습니다!! 감사합니다~
안녕하세요~^^
올려주신 페이지 주소 확인해보니 직접 추가하신 코드에 문제가 있는 듯합니다.
어디 쪽 태그에 문제가 있는지는 저희 쪽에서 알 수 없지만
아래의 코드처럼 <form> 태그 밖에 content_uid, member_uid 등이 표시되고 있습니다.
<form id="kboard-comments-form-666" method="post" action="https://firstmake.co/?action=kboard_comment_insert" onsubmit="return kboard_comments_execute(this);"></form>
<input type="hidden" name="content_uid" value="666">
<input type="hidden" name="member_uid" value="1196">
...
직접 커스터마이징하신 코드를 좀 더 자세히 살펴보셔야 할 듯합니다.
고맙습니다.