웹마스터 팁

우선 이 기능은 http://speller.cs.pusan.ac.kr 에서 바로 사용이 가능한 맞춤법 검사기를 XE에서 링크가 되도록 수정하였습니다.

처리 방법은

1. 게시물 작성(댓글 작성)

2. 맞춤법 검사 클릭

3. 게시물 post 방식으로 popup에 전달

4. EUC-KR로 문자 변환

5. <br><p>  / 줄바꿈 문자를 공백으로 변환

6. textarea에 내용을 자동 입력

7. 확인

8. 결과 값 확인

 

위와같은 프로세스를 가지게 됩니다.

소스는 아래와 같습니다.

1. /xe/mmodules/lang/ko.lang.php 
중간에 해당 소스 추가   (저는 27 라인 입니다.)

 // 버튼에 사용되는 언어
    $lang->cmd_board_list = '게시판 목록';
    $lang->cmd_module_config = '게시판 공통 설정';
    $lang->cmd_view_info = '게시판 정보';
    $lang->cmd_list_setting = '목록설정';
 $lang->cmd_spell = '맞춤법 검사';

2. /xe/modules/board/skins/xe_board/write_form.html
제일 아랫줄 쪽에 해당 소스 추가

<div class="fl gap1">
            <!--@if($is_logged)-->
            <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_temp_save}"  /></span>
            <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_load}"  /></span>
            <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_back}" /></span>
   <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_spell}" /></span>
            <!--@end-->
        </div>

        <div class="fr gap1">
            <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_preview}" /></span>
            <span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
        </div>

        <div class="clear"></div>
    </form>
 <form name="spell" method="post" target="SpellCheck" >
  <input type="hidden" name="CheckText" />
 </form>
<!--#include("footer.html")-->

3. /xe/modules/board/skins/xe_board/view_document.html
제일 아랫 줄 쪽에 해당 소스 추가

<div class="commentButton tRight">
   <span class="button {$btn_class}"><input type="button" value="{$lang->cmd_spell}" /></span>
            <span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>

        </div>
    </form>
 <form name="spell" method="post" target="SpellCheck" >
  <input type="hidden" name="CheckText" />
 </form>
<!--@end-->

( write_form.html  <= 글 작성폼    // view_document.html  <== 댓글 작성 폼   //  두 파일 모두 추가합니다.)

4. /xe/common/js/common.js
 line 668 함수 추가

function doDocumentSpellCheck(obj){
 var fo_obj = obj;
    while(fo_obj.nodeName != "FORM") {
        fo_obj = fo_obj.parentNode;
    }
    if(fo_obj.nodeName != "FORM") return;
    var editor_sequence = fo_obj.getAttribute('editor_sequence');
 
    var content = editorGetContent(editor_sequence);
 var sf = document.spell;
 var st = sf.CheckText;
 st.value = content;
 var wins = "about:blank";
 window.open(wins,'SpellCheck','width=450,height=800,scrollbars=yes'); 
 sf.target = 'SpellCheck';
 sf.action = '/spellCheck.php'
 sf.submit();

}

5. spellCheck.php 파일 생성

<?
 $content = $_REQUEST['CheckText'];       
 $content = iconv("UTF-8","EUC-KR", $content);
 $content = str_replace("<BR>","\r\n",strtoupper($content));
 $content = str_replace("<P>","\r\n\r\n",strtoupper($content));
 $content = str_replace("&NBSP;"," ",strtoupper($content));
 $content = strip_tags($content);
?>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html;CHARSET=ksc5601"/>
  <style type="text/css">
   /* 개발자 도구로 작성. 원본 파일을 정확하게 표현한 것이 아닐 수도 있습니다*/
   A:link {
    COLOR: slateblue; TEXT-DECORATION: underline
   }
   A:active {
    COLOR: slateblue; TEXT-DECORATION: underline
   }
   A:visited {
    COLOR: slateblue; TEXT-DECORATION: underline
   }
   A:hover {
    COLOR: blue; TEXT-DECORATION: none
   }
   TD {
    TEXT-ALIGN: center; FONT-FAMILY: 굴림; FONT-SIZE: 9pt
   }
   TEXTAREA {
    SCROLLBAR-ARROW-COLOR: #ffe384; BORDER-BOTTOM: #f2b704 1px solid; BORDER-LEFT: #f2b704 1px solid; SCROLLBAR-FACE-COLOR: #fffaef; BACKGROUND-COLOR: #fffaef; PADDING-LEFT: 2pt; PADDING-RIGHT: 2pt; SCROLLBAR-DARKSHADOW-COLOR: #fffaef; SCROLLBAR-HIGHLIGHT-COLOR: #f2b704; COLOR: #333333; SCROLLBAR-SHADOW-COLOR: #f2b704; BORDER-TOP: #f2b704 1px solid; SCROLLBAR-TRACK-COLOR: #fffaef; BORDER-RIGHT: #f2b704 1px solid; SCROLLBAR-3DLIGHT-COLOR: #fffaef; PADDING-TOP: 2pt
   }
   .but {
    BORDER-BOTTOM: #f2b704 1px solid; BORDER-LEFT: #f2b704 1px solid; BACKGROUND-COLOR: #fffaef; WIDTH: 60px; HEIGHT: 21px; COLOR: #333333; BORDER-TOP: #f2b704 1px solid; CURSOR: hand; BORDER-RIGHT: #f2b704 1px solid; PADDING-TOP: 1px
   }
  </style>
  <script type="text/javascript">
   function init() {
    window.resizeTo(450,800);
    var node = opener.editorPrevNode;
   }

   function isEnter(key) {
    keyValue = (navigator.appName=='Netscape') ? key.which : key.keyCode;
    if (keyValue==13 && key.ctrlKey ) {
     this.form.submit();
    }
   }
  </script>
 </head>
 <body>
  <form name="form" action="http://speller.cs.pusan.ac.kr/WebSpell_ISAPI.dll?Check" method="post">
  <TEXTAREA name=text1 rows=45 cols=55 STYLE = "ime-mode:active"><?=$content?></TEXTAREA><p>
  <input type="submit" value="확인하기" class="but" title="ctrl-enter">&nbsp;       
  </form>
 </body>
</html>

 

이걸로 끝!!

 

회사 업무적인 글을 게시할때는 오타 나면 지적을 많이 당해서 연동해 봤습니다;

제목 글쓴이 날짜
[주옥시리즈] 타이틀 제어 애드온 socialskyo 2013.09.09
외부페이지에서 로그인 폼 구현하기 컴퓨터매니아 2013.09.09
[주옥 시리즈]지식인XE 모바일에서도 답변보기 socialskyo 2013.09.08
[주옥시리즈]글 목록을 조회수 별로 색상 지정하기 [9] socialskyo 2013.09.06
댓글 새로고침 수정 [22] Lansi 2013.09.06
댓글 작성, 추천후 다운로드 받을수 있게 하기. [6] socialskyo 2013.09.06
위젯 페이지에서 첨부파일 100%로 파일이 업로드되지 않을 때 이온디 2013.09.04
내가 작성한 글 에서 해당 글의 댓글 수 출력하는 방법 [1] sejin7940 2013.09.03
메일링 가입 인증 폼 부터 ..가입인증 메일 제목 가입인증 메일 코드 부분의 에러로 , msg_confirm_account_title 메일 주소가 이렇게 표기되어 오던 [3] file 애드바이러스 2013.09.02
SSL 환경에서 메시지톡 쪽지 보내기, 친구 찾기, 메시지 삭제 등 안될 때 [2] Arisae 2013.09.02
모든 페이지에 공통된 내용을 적용하기. [3] 컴퓨터매니아 2013.09.01
회원가입확장 모듈 - 가입절차중 오류 발생시 처음으로 돌아가는 현상 [1] 김개발 2013.08.30
IE8에서 이미지 자동 리사이징 높이 고정 문제 해결법 GGobugi 2013.08.29
장포크님의 더보기 팁 - 소스 줄임 낭만구미호 2013.08.26
네이버 SMTP로 인증메일 보내기 [12] Neder 2013.08.26
XE 기본 메시지창에서 '로그인' 대신 '돌아가기' 나오도록 하기 [2] file 컴퓨터매니아 2013.08.25
scm player 팝업 제외하기 [1] 귀머거리하늘 2013.08.25
계정 정지된 회원에게 정지 사유 표시하기. [24] file 컴퓨터매니아 2013.08.24
카페XE를 Domain 접속으로 설정 후 관리페이지 접속 불가할때 [1] 라르게덴 2013.08.24
나름 강력할 것 같은 스팸방지 팁 [16] 꿈섬 2013.08.23