cheditor 설정시 스마트폰에서 글쓰기가 안되는 문제 > 그누4 질문답변

그누4 질문답변

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

cheditor 설정시 스마트폰에서 글쓰기가 안되는 문제 정보

cheditor 설정시 스마트폰에서 글쓰기가 안되는 문제

본문

아이폰이나 갤럭시S에서 접속테스트를 해본 결과 cheditor 설정을 해놓은 게시판은 글쓰기가 안된다는 문제점이 있다는걸 알았습니다.
글쓰기를 누르면 텍스트부분으로 넘어가지 않거나 아예 그부분만 뜨질 않더라구요ㅠ
기존 게시판에서는 에디터를 꼭 사용해야하기때문에 dhtml 체크 해제를 할수 없는 상태입니다.

현재 PC홈/모바일홈은 아래 Meijiuniv님이 올려주신 팁을 보고 스킨을 나눠둔 상태구요

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=23849&sca=&sfl=wr_subject&stx=%BE%C6%C0%CC%C6%F9&sop=and

활용팁방 가서 이것저것 검색해보니까
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2125&sca=&sfl=wr_subject&stx=%BF%A1%B5%F0%C5%CD&sop=and

이런식으로 html 혹은 에디터 사용을 선택적으로 하는 방법이 있더라구요..
근데 소스가 그누보드 업데이트 되기 이전꺼라 그런지 저같은 초보자가 적용하기엔 조금 무리가 있어서 이렇게 글을 올리게 되었습니다.

사실 제가 가장 필요한 방법은 저렇게 선택적으로 사용하는것도 아닌
모바일홈으로 접속했을때 글쓰기를 누르면 dhtml 설정 자체를 무시하고
에디터가 아닌 일반적인 글쓰기창으로 뜨게 하는건데요..

writer.skin.php에서

if ($is_dhtml_editor) {
    include_once("$g4[path]/lib/cheditor4.lib.php");
    echo "<script src='$g4[cheditor4_path]/cheditor.js'></script>";
    echo cheditor1('wr_content', '100%', '250');

이 부분을 주석처리 해버렸더니 글쓰기 누르니까 글쓰기창 부분이 아예 안뜨더라구요..

현재 write.skin.php 파일은 저 위 Meijiuniv님 팁에서 보시는바와 같이
모바일홈용/PC홈용으로 나눠져 있는 상태구요
모바일홈용 부분을 고치려고 하는데..
드릴포인트는 없지만 도움 주실분 계신가요?ㅠ 부탁드립니다!!

아래는 write.skin.php  모바일용 스킨 소스입니다.
----------------------------------------------------------------------------------

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if ($is_dhtml_editor) {
    include_once("$g4[path]/lib/cheditor4.lib.php");
    echo "<script src='$g4[cheditor4_path]/cheditor.js'></script>";
    echo cheditor1('wr_content', '100%', '250');
}
?>

<? include_once("$board_skin_path/top.skin.php"); ?>

<script language="javascript">
// 글자수 제한
var char_min = parseInt(<?=$write_min?>); // 최소
var char_max = parseInt(<?=$write_max?>); // 최대
</script>


<!-- 게시판 게시물 수 -->

<div style="color:#333; padding:7px; font-size:14px; font-family:'맑은 고딕','돋움','굴림', tahoma,areal; text-align:center; border-bottom:1px solid #ccc; background-color:#f9f9f9; ">*글쓰기</div>


<form name="fwrite" method="post" onsubmit="return fwrite_submit(this);" enctype="multipart/form-data" style="margin:0px;">
<input type=hidden name=null>
<input type=hidden name=w        value="<?=$w?>">
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=wr_id    value="<?=$wr_id?>">
<input type=hidden name=sca      value="<?=$sca?>">
<input type=hidden name=sfl      value="<?=$sfl?>">
<input type=hidden name=stx      value="<?=$stx?>">
<input type=hidden name=spt      value="<?=$spt?>">
<input type=hidden name=sst      value="<?=$sst?>">
<input type=hidden name=sod      value="<?=$sod?>">
<input type=hidden name=page    value="<?=$page?>">








<table width="100%" border="0" cellspacing="4" cellpadding="0">


<? if ($is_name) { ?>
<tr>
    <td class="mobilecore2_write_head">이 름</td>
    <td><input class='ed' maxlength=20 size=15 name=wr_name itemname="이름" style="font-size:16px; padding:4px; " required value="<?=$name?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_password) { ?>
<tr>
    <td class="mobilecore2_write_head">패스워드</td>
    <td><input class='ed' type=password maxlength=20 size=15 name=wr_password itemname="패스워드"  style="font-size:16px; padding:4px; "  <?=$password_required?>></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>





<?
$option = "";
$option_hidden = "";
if ($is_notice || $is_html || $is_secret || $is_mail) {
    $option = "";
    if ($is_notice) {
        $option .= "<input type=checkbox name=notice value='1' $notice_checked>공지&nbsp;";
    }

  if ($is_html) {
        if ($is_dhtml_editor) {
            $option_hidden .= "<input type=hidden value='html1' name='html'>";
        } else {
            $option .= "<input onclick='html_auto_br(this);' type=checkbox value='$html_value' name='html' $html_checked><span class=w_title>html</span>&nbsp;";
        }
    }

    if ($is_secret) {
        if ($is_admin || $is_secret==1) {
            $option .= "<input type=checkbox value='secret' name='secret' $secret_checked><span class=w_title>비밀글</span>&nbsp;";
        } else {
            $option_hidden .= "<input type=hidden value='secret' name='secret'>";
        }
    }
   
    if ($is_mail) {
        $option .= "<input type=checkbox value='mail' name='mail' $recv_email_checked>답변메일받기&nbsp;";
    }
}

echo $option_hidden;
if ($option) {
?>
<tr>
    <td class="mobilecore2_write_head">옵 션</td>
    <td class="mobilecore2_write_body"><?=$option?></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_category) { ?>
<tr>
    <td class="mobilecore2_write_head">분 류</td>
    <td><select name=ca_name required itemname="분류"><option value="">선택하세요<?=$category_option?></select></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<tr>
    <td class="mobilecore2_write_head">제 목</td>
    <td><input  style="width:100%;" name=wr_subject id="wr_subject" itemname="제목"  style="font-size:16px; padding:4px; "  required value="<?=$subject?>" ></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<tr>
    <td class="mobilecore2_write_head" >내용</td>
    <td style='padding:5 0 5 0;'>
        <? if ($is_dhtml_editor) { ?>
           
<?=cheditor2('wr_content', $content);?>
        <? } else { ?>
 
        <textarea id="wr_content" name="wr_content"  style='width:100%; word-break:break-all;' rows=5 itemname="내용"  style="font-size:16px; "  required
        <? if ($write_min || $write_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<? } ?>><?=$content?></textarea>
        <? if ($write_min || $write_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script> <? } ?>
        <? } ?>
    </td>
</tr>

</table>




<div style="padding:5px; border-top:1px solid #ccc;">
<table border="0" cellspacing="0" cellpadding="0" align="center" style="border:1px #aaa solid;" Width="250">
  <tr style=" background-image:url(<?=$board_skin_path?>/img/write_button_bg.gif); background-position:center; background-repeat:repeat-x;">
    <td class="mobilecore2_button_link" ><span onclick="add_file();" style="cursor:pointer;">파일추가</span></td>
<td Width="1" valign="middle"><img src="<?=$board_skin_path?>/img/top_partition.gif"></td>
    <td class="mobilecore2_button_link" ><span onclick="del_file();" style="cursor:pointer;">파일제거</span></td>
  </tr>
</table>


<table id="variableFiles" cellpadding=0 cellspacing="4" align="center">
<?// print_r2($file); ?>
        <script language="JavaScript">
        var flen = 0;
        function add_file(delete_code)
        {
            var upload_count = <?=(int)$board[bo_upload_count]?>;
            if (upload_count && flen >= upload_count)
            {
                alert("이 게시판은 "+upload_count+"개 까지만 파일 업로드가 가능합니다.");
                return;
            }

            var objTbl;
            var objRow;
            var objCell;
            if (document.getElementById)
                objTbl = document.getElementById("variableFiles");
            else
                objTbl = document.all["variableFiles"];

            objRow = objTbl.insertRow(objTbl.rows.length);
            objCell = objRow.insertCell(0);

            objCell.innerHTML = "<input type='file' class='ed' name='bf_file[]' style='height:30px;'  title='파일 용량 <?=$upload_max_filesize?> 이하만 업로드 가능'>";
            if (delete_code)
                objCell.innerHTML += delete_code;
            else
            {
                <? if ($is_file_content) { ?>
                objCell.innerHTML += "<br><input type='text' class='ed' size=40 name='bf_content[]' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.'>";
                <? } ?>
                ;
            }

            flen++;
        }

        <?=$file_script; //수정시에 필요한 스크립트?>

        function del_file()
        {
            // file_length 이하로는 필드가 삭제되지 않아야 합니다.
            var file_length = <?=(int)$file_length?>;
            var objTbl = document.getElementById("variableFiles");
            if (objTbl.rows.length - 1 > file_length)
            {
                objTbl.deleteRow(objTbl.rows.length - 1);
                flen--;
            }
        }
        </script>

</table>

</div>




<? if ($is_guest) { ?>
<table  border="0" cellspacing="4" cellpadding="0" align="center">
<tr>
<td class=" mobilecore2_write_head ">아래 그림속의 글자를 입력하세요. </td>
</tr>
<tr>
<td class="mobilecore2_write_head"><img id='kcaptcha_image' border='0' width=120 height=60 onclick="imageClick();" style="cursor:pointer;" title="글자가 잘안보이는 경우 클릭하시면 새로운 글자가 나옵니다."></td>
</tr>
<tr>
<td align="center"><input class='ed' type=input size=10 name=wr_key itemname="자동등록방지" style="font-size: 14px; height: 22px;" required></td>
</tr>

</table>
<? } ?>


<table  border="0" cellspacing="10" cellpadding="0" align="center">
<tr>
<td  valign="top" >
        <input type=image id="btn_submit" src="<?=$board_skin_path?>/img/btn_write.gif" border=0 accesskey='s'></td>
<td  > 
        <a href="./board.php?bo_table=<?=$bo_table?>"><img id="btn_list" src="<?=$board_skin_path?>/img/btn_list.gif" border=0></a></td>
</tr>
</table>

</form>

<script type="text/javascript"> var md5_norobot_key = ''; </script>
<script type="text/javascript" src="<?="$g4[path]/js/prototype.js"?>"></script>
<script type="text/javascript">
function imageClick() {
    var url = "<?=$g4[bbs_path]?>/kcaptcha_session.php";
    var para = "";
    var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            asynchronous: true,
            parameters: para,
            onComplete: imageClickResult
        });
}

function imageClickResult(req) {
    var result = req.responseText;
    var img = document.createElement("IMG");
    img.setAttribute("src", "<?=$g4[bbs_path]?>/kcaptcha_image.php?t=" + (new Date).getTime());
    document.getElementById('kcaptcha_image').src = img.getAttribute('src');

    md5_norobot_key = result;
}

<? if (!$is_member) { ?>Event.observe(window, "load", imageClick);<? } ?>

<?
// 관리자라면 분류 선택에 '공지' 옵션을 추가함
if ($is_admin)
{
    echo "
    if (typeof(document.fwrite.ca_name) != 'undefined')
    {
        document.fwrite.ca_name.options.length += 1;
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].value = '공지';
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].text = '공지';
    }";
}
?>

with (document.fwrite)
{
    if (typeof(wr_name) != "undefined")
        wr_name.focus();
    else if (typeof(wr_subject) != "undefined")
        wr_subject.focus();
    else if (typeof(wr_content) != "undefined")
        wr_content.focus();

    if (typeof(ca_name) != "undefined")
        if (w.value == "u")
            ca_name.value = "<?=$write[ca_name]?>";
}

function html_auto_br(obj)
{
    if (obj.checked) {
        result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if (result)
            obj.value = "html2";
        else
            obj.value = "html1";
    }
    else
        obj.value = "";
}

function fwrite_submit(f)
{
    var s = "";
    if (s = word_filter_check(f.wr_subject.value)) {
        alert("제목에 금지단어('"+s+"')가 포함되어있습니다");
        return false;
    }

    if (s = word_filter_check(f.wr_content.value)) {
        alert("내용에 금지단어('"+s+"')가 포함되어있습니다");
        return false;
    }

    if (document.getElementById('char_count')) {
        if (char_min > 0 || char_max > 0) {
            var cnt = parseInt(document.getElementById('char_count').innerHTML);
            if (char_min > 0 && char_min > cnt) {
                alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
                return false;
            }
            else if (char_max > 0 && char_max < cnt) {
                alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
                return false;
            }
        }
    }

    <?
    if ($is_dhtml_editor) echo cheditor3('wr_content');
    ?>

    if (document.getElementById('tx_wr_content')) {
        if (!ed_wr_content.outputBodyText()) {
            alert('내용을 입력하십시오.');
            ed_wr_content.returnFalse();
            return false;
        }
    }

    if (typeof(f.wr_key) != 'undefined') {
      if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert('자동등록방지용 글자가 제대로 입력되지 않았습니다.');
            f.wr_key.select();
            f.wr_key.focus();
            return false;
        }
    }

    document.getElementById('btn_submit').disabled = true;
    document.getElementById('btn_list').disabled = true;

    <?
    if ($g4[https_url])
        echo "f.action = '$g4[https_url]/$g4[bbs]/write_update.php';";
    else
        echo "f.action = './write_update.php';";
    ?>
   
    return true;
}
</script>

<script language="JavaScript" src="<?="$g4[path]/js/board.js"?>"></script>
<script language="JavaScript"> window.onload=function() { drawFont(); } </script>



------------------------------------------------------------------------------------------

소스 중간에 주석처리한게 또 있길래 수정했습니다ㅠㅠ
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로