그누보드 게시글 작성중 select 관련 문의 입니다.
본문
글 작성시 selete 기능을 통해 아래의 내용을 추가하고자 합니다
<select name='wr_1' disabled>
<option value='답변대기' selected><? if($write[wr_1] == 답변대기) echo "selected"; ?>답변대기</option>
<option value='답변완료'><? if($write[wr_1] == 답변완료) echo "selected"; ?>답변완료</option>
</select>
일반 유저가 글을 작성시 disabled를 통해 답변대기값을 defalut로 설정하여 인위적으로 답변완료를 선택못하게 한뒤 글을 작성하게 하려고 합니다.
이떄 관리자가 게시글에 답변을 한 다음 해당문의글의 수정버튼 클릭시 disabled 되어있는 select 항목을 풀고 관리자가 직접 답변완료를 선택한뒤 저장하게끔 기능을 설정하고 싶습니다.
write.skin.php 파일에서 어떤식으로 코드를 작성하면 될지 노하우 공유좀 부탁드립니다.
답변 4
<?php if ($is_admin) { ?>
<select name="wr_1">
<option value="답변대기" <?php if ($write['wr_1'] == '답변대기') echo "selected"; ?>>답변대기</option>
<option value="답변완료" <?php if ($write['wr_1'] == '답변완료') echo "selected"; ?>>답변완료</option>
</select>
<?php } else { ?>
<select name="wr_1">
<option value="답변대기" <?php if ($write['wr_1'] == '답변대기') echo "selected"; ?>>답변대기</option>
</select>
<?php } ?>
<select name='wr_1'>
<option value='답변대기' selected><? if($write[wr_1] == 답변대기) echo "selected"; ?>답변대기</option>
<?php if($is_admin):?>
<option value='답변완료'><? if($write[wr_1] == 답변완료) echo "selected"; ?>답변완료</option>
<?php }?>
</select>
disabled 속성을 지정해도 사용자에 의한 조작으로 값은 넘길수 있습니다.
다음 코드는 값을 보내는 페이지 에서의 $is_admin 글로벌 변수를 활용해
관리자의 경우만 설정을 허용하는 방법입니다.
<?php if (empty($is_admin) == false) { ?>
<select name='wr_1'>
<option value='답변대기' selected><?php if($write['wr_1'] == '답변대기') echo "selected"; ?>답변대기</option>
<option value='답변완료'><?php if($write['wr_1'] == '답변완료') echo "selected"; ?>답변완료</option>
</select>
<?php } ?>
값을 받는 페이지 에서도 유효성 체크를 하는 방법을 추천드립니다.
https://github.com/gnuboard/gnuboard5/blob/master/bbs/write_update.php#L134
@include_once($board_skin_path.'/write_update.head.skin.php');
또는
https://github.com/gnuboard/gnuboard5/blob/master/bbs/write_update.php#L136
run_event('write_update_before', $board, $wr_id, $w, $qstr);
<?php
if (empty($is_admin) == false) {
if ($wr_1 != '답변대기' && $wr_1 != '답변완료') {
$wr_1 = '답변대기';
}
} else {
$wr_1 = '답변대기';
if (isset($wr) == true && $wr['wr_1'] == '답변완료') {
$wr_1 = '답변완료';
}
}
?>
답변들 감사드립니다!