write_skin.php 에서 여유필드(wr_3) 와 링크(wr_link1)을 연계한 스크립트 작성시.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

write_skin.php 에서 여유필드(wr_3) 와 링크(wr_link1)을 연계한 스크립트 작성시.. 정보

write_skin.php 에서 여유필드(wr_3) 와 링크(wr_link1)을 연계한 스크립트 작성시..

본문

참고. 그누버젼은 최신버젼이고 스킨도 기본스킨으로 작업중 !!

게시판스킨의 write.skin.php 파일내 라인(150~)부분에
wr_3 여유필드값을 추가하고 checkbox를 하나 만들어 넣었습니다.
그리고 링크부분을 1개만 사용가능하도록 수정했고요.

wr_3의 값이 체크된경우,
chklink()를 실행해서 '링크주소'를 입력하라는 스크립트 창을 띄워주고
'wr_link1'에 커서가 위치하도록 했습니다.

... 위 까지는 별 이상없이 됩니다만,

문제는
wr_3이 체크된경우에는 '링크(wr_link1)'에도 반드시 값이 입력되도록하고 싶은데 그게 안되는군요

현재는 wr_3 의 체크유무와 상관없이 wr_link1 의 값이 있던 없던간에
글쓰기확인버튼을 누르면 게시물이 그냥 저장됩니다.

wr_3 의 체크박스가 체크된경우, wr_link1 에도 반드시 값을 입력하고
그렇지 않으면 글쓰기가 되지 않도록 처리하려면 어떻게 해야할런지요??

도움글을 부탁드려봅니다.


----------- 아래는 관련 코드 내용 입니다 -----------------



<script type="text/javascript">
function chklink(a){

  if(a.checked){
  alert('게시물링크를 선택하셨습니다\n아래의 링크주소에 \"게시물 원래주소\"를 복사해서 붙여넣기 해주세요');
  document.fwrite.wr_link1.focus();
  // document.fwrite.wr_link1.style.backgroundColor='#333;';  (?? 잘못된코드)
  return false;
 }
}
</script>

<tr>
 <td>외부링크</td>
 <td>
    <input type=checkbox name='wr_3' value='1'  <? if($write[wr_3] == "1")  echo "checked"; ?> onclick="chklink(this);">
  &nbsp;- 저작권이 의심되는 자료(이미지, 뉴스글, 기타) 는 링크만 걸어주세요 (제목과 내용은 간단히 기입)<br />
</td>
</tr>
<? } ?>

<? if ($is_link) { // 링크 1개만 표시 ?>
<tr>
 <td>링크</td>
 <td><input type='text' class='ed' size=50 name='wr_link1' itemname='링크' value='<?=$write["wr_link1"]?>'></td>
</tr>

댓글 전체

참고로,
write.skin.php 하단 스크립트 부분(라인 360~)에 관련 체크값 스크립트를 넣어보면
'wr_3이 정의되지 않았습니다'라는 스크립트 에러창이 실행되고 이어서,
'글쓰기시에는 $wr_id 값을 사용하지 않습니다'라는 메세지가 출력되어
제대로 처리가 안되는군요. 코드의 위치문제인지.. -_- ;; ......



------ 원래코드 ---------------

    if (subject) {
        alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
        f.wr_subject.focus();
        return false;
    }

    if (content) {
        alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
        if (typeof(ed_wr_content) != "undefined")
            ed_wr_content.returnFalse();
        else
            f.wr_content.focus();
        return false;
    }



--------- 수정(추가) 코드 ---------------------------

    if (subject) {
        alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
        f.wr_subject.focus();
        return false;
    }

    if (content) {
        alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
        if (typeof(ed_wr_content) != "undefined")
            ed_wr_content.returnFalse();
        else
            f.wr_content.focus();
        return false;
    }


if(wr_3.checked && !f.wr_link1) {
  alert("링크주소를 입력하세요");
  return false;
}
댓글 감사합니다. ^^
폼네임을 생각하지 못했네요 ^^.... 어쨋던 알려주신 코드를 적용해봤습니다만,
스크립트 에러 메세지는 사라지긴 했는데
alert 창도 실행이 되지 않을뿐더러 ... 해당코드를 체크하지 않고 그냥 넘어가 버리는군요....

여전히 뭔가 문제가 있는거 같습니다.
질문책택후, 약간의 문제가 하나 생겨서 글 올립니다. -_- ;;

맨처음 코드에서 .... 회원레벨 지정을 통해서 (질문시 레별관련 코드 한줄이 빠져있었네요..)
지정된 레벨이상에게만 'wr_3'의 기능을 사용할수 있도록 지정했을경우, (아래)


<? if ($member[mb_level] >= 3) { // 외부링크(wr_3) 사용권한 지정  ?>
<tr>
 <td>외부링크</td>
 <td>
    <input type=checkbox name='wr_3' value='1'  <? if($write[wr_3] == "1")  echo "checked"; ?> onclick="chklink(this);">
  &nbsp;- 저작권이 의심되는 자료(이미지, 뉴스글, 기타) 는 링크만 걸어주세요 (제목과 내용은 간단히 기입)<br />
</td>
</tr>
<? } ?>


그런데... wr_3 사용권한이 없는 경우 글쓰기를 하면 도움주신 아래 코드에서 다시 에러를 일으킵니다


if(f.wr_3.checked == !f.wr_link1.value) {
  alert("링크주소를 입력하세요");
  f.wr_link1.focus();
  return false;
}



스크립트 에러창에 나타나는 내용은 ...
'checked'속성값을 가져올수 없습니다'
'$wr_id'값을 사용할수 없습니다......... 가 다시 나타나는군요.


지정된 권한보다 낮은 경우,
'wr_3'의 내용값 자체가 보여지지 않음으로 인해서
위의 'if(f.wr_3.checked == !f.wr_link1.value) { .....' 와 관련한 스크립트 코드를 처리하지 못하는 문제와

권한지정 해주어도 wr_3의 체크값을 주지않고 '링크주소'만 입력했을경우...
선택사항인 'wr_3' 을 무조건 체크해야만 하는 문제가 발생하는듯합니다.


도움을 좀 주시겠습니까????
wr_3 값이 아예 노출 되지 않는 경우
if (typeof f.wr_3 != 'undefined') {
if(f.wr_3.checked == true && !f.wr_link1.value) {
  alert("링크주소를 입력하세요");
  return false;
}
}

위와 같이 undefined 체크해서 존재할경우만 스크립트 실행하도록 하시면 됩니다.
뭔가 안풀리면...하루종일 집착하게 되는데.........
...시원하게 뚫어주셨네요 ^^ (테스트결과, 아무문제 없어서 아래처럼 약간만 정리를 했습니다)

정말 큰 도움되었습니다. 그리고 진심으로 감사드립니다. ^^

if (typeof(f.wr_3) != 'undefined') {
if((f.wr_3.checked == true) && !f.wr_link1.value) {
  alert("링크주소를 입력하세요");
f.wr_link1.focus();
  return false;
}
}
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT