다음오픈에디터 적용 | Other

다음 오픈 에디터가 오픈 웹에디터들 중 그나마 사용성이 좋을 거 같아 php 게시판 등에 적용해봤다.

다운로드는 http://code.google.com/p/daumopeneditor/ 에서 하면 되는데, 메뉴얼이 영~~

톰캣을 설치하라고 메뉴얼에 나와 있길래 첨에 포기할려다가 어짜피 자바스크립트로 구동될꺼 그냥 바로 적용시켜 봤는데.. 잘 된다..

 

우선 다운 받은 파일을 디렉토리명을 바꿔서 ftp로 업로드.

/editor 라는 디렉토리명으로 해서 게시판, 폼메일 등 아무 곳에서나 include 해서 사용할 수 있게 수정한다.

 

1. 에디터 디렉토리에서 예제로 올려놓은 daumeditor.html 파일을 editor.php 파일로 변경 후 수정.

 

/editor.php

<!--quote_txt--><link rel="stylesheet" href="/editor/css/editor.css" type="text/css"  charset="euc-kr"/>
<script src="/editor/js/editor.js" type="text/javascript" charset="euc-kr"></script>
<script src="/editor/js/editor_sample.js" type="text/javascript" charset="euc-kr"></script>

 

<!-- 에디터 컨테이너 시작 -->
<div id="tx_trex_container" class="tx-editor-container">

..

..

..

</div>
<!-- 에디터 컨테이너 끝 -->

 

/*

daumeditor.html에서 css와 js 파일 링크 부분과 에디터의 몸체에 해당하는 위의 부분까지 복사.

<!-- 편집영역 시작 --> 이라는 부분의 loading2.png 파일의 경로를 절대 경로로 변경 (/editor/images/icon/loading2.png)

그다음으로 에디터의 초기 설정을 로딩시키는 아래 부분 복사.

*/

 

<script type="text/javascript">
// <![CDATA[

/*-------- 에디터 로드 시작 ----------*/
new Editor({
txHost: '', /* 런타임 시 리소스들을 로딩할 때 필요한 부분으로, 경로가 변경되면 이 부분 수정이 필요. 
txPath: '/editor/', /* 런타임 시 리소스들을 로딩할 때 필요한 부분으로, 경로가 변경되면 이 부분 수정이 필요. */
txVersion: '5.4.0', /* 수정필요없음. */
txService: 'sample', /* 수정필요없음. */
txProject: 'sample', /* 수정필요없음. 프로젝트가 여러개일 경우만 수정한다. */
initializedId: "", /* 대부분의 경우에 빈문자열 */
wrapper: "tx_trex_container"+"", /* 에디터를 둘러싸고 있는 레이어 이름(에디터 컨테이너) */
form: 'frmWrite'+"", /* 등록하기 위한 Form 이름 */
txIconPath: "/editor/images/icon/", /*에디터에 사용되는 이미지 디렉터리, 필요에 따라 수정한다. */
txDecoPath: "/editor/images/deco/", /*본문에 사용되는 이미지 디렉터리, 서비스에서 사용할 때는 완성된 컨텐츠로 배포되기 위해 절대경로로 수정한다. */
canvas: {
 styles: {
    color: "#5a5a5a", /* 기본 글자색 */
    fontFamily: "굴림", /* 기본 글자체 */
    fontSize: "9pt", /* 기본 글자크기 */
    backgroundColor: "#fff", /*기본 배경색 */
    lineHeight: "1.5", /*기본 줄간격 */
    padding: "5px" /* 위지윅 영역의 여백 */
   }
  },  
  
  sidebar: {
   attacher: {
    image: {
           multiple: true,
           multipleuse: false,
           checksize: false,
           boxonly: false,
           wysiwygonly: true,
           objattr: {width: 680},
           features: { left:250, top:65, width:600, height:310, scrollbars:0},
           popPageUrl: "/editor/pAttachPhoto.php"
    },
    file: {
           multiple: true,
           multipleuse: false,
           checksize: true,
           boxonly: true,
           wysiwygonly: false,
           features: { left:250, top:65, width:600, height:235, scrollbars:0},
           popPageUrl: "/editor/pAttachFile.php"
    }
   }
  }
 });
 /*-------- 에디터 로드 끝 ----------*/
// ]]>
</script>

 

/*

붉은 색 부분은 자기 환경에 맞게 적절히 수정.

 

txPath : 외부 디렉토리에서 include 사용할 것이기 때문에 에디터 디렉토리의 절대경로를 입력.

form : 게시판 등에서 사용되어지는 form 네임. 나는 주로 폼이름을 frmWrite로 사용해서 frmWrite로 설정.

txIconPath, txDecoPath : 절대 경로로 입력.

 

attacher 설정은 파일 첨부시의 설정을 위한 것이다.(image업로드와 파일 업로드로 나누어 설정)

image부분의 objattr: {width: 680}은 뷰페이지에서 이미지의 가로사이즈를 680픽셀로 적용시켜준다.

popPageUrl : 이미지 및 파일 업로드 팝업 페이지

 

file 부분의 boxonly: true, wysiwygonly: false 로 설정한 것은 일반 파일 첨부는 내용에 표시되지 않도록 하기 위한 것.

*/

<!--/quote_txt-->

 

2. 게시판 form (/bbs/write.php)

일반적으로 사용되는 쓰기 페이지의 form에서 에디터를 include 해서 본문 쓰기와 파일 업로드를 적용.

<!--quote_txt--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="<A class=con_link href="http://www.w3.org/1999/xhtml" target=_blank>http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>게시판</title>

</head>

<body>

 

<script type="text/javascript">

 function fnCheckInput() {
  Editor.save();
 }


 function validForm(editor) {  
  if($tx('chTitle').value == ""){
   alert('제목을 입력하세요'); return false;
  }

 

  /* 본문 내용이 입력되었는지 검사하는 부분 */
  var _validator = new Trex.Validator();
  var _content = editor.getContent();
  if(!_validator.exists(_content)) {
   alert('내용을 입력하세요');
   return false;
  }
   
  return true;
 }
  
 function setForm(editor) {
  var _formGen = editor.getForm();
  
  var _content = editor.getContent();
  _formGen.createField(
   tx.textarea({
    /* 본문 내용을 필드를 생성하여 값을 할당하는 부분 */
    'name': "tx_content",
    'style': { 'display': "none" }
   },
   _content)
  );
  
  // 이미지 첨부 첵크
  var nCount = 0;
  var _attachments = editor.getAttachments('image');
  for(var i=0; i<_attachments.length; i++) {
   /* existStage는 현재 본문에 존재하는지 여부 */
   if (_attachments[i].existStage) {
    /* data는 팝업에서 execAttach 등을 통해 넘긴 데이터 */
    //alert(_attachments[i].data);
    _formGen.createField(
     tx.input({'name': 'aFile[' + i + ']', 'type': 'hidden', 'value': _attachments[i].data.filename})
    );
    _formGen.createField(
     tx.input({'name': 'aFileType[' + i + ']', 'type': 'hidden', 'value': 'image'})
    );
    nCount ++;
   }
  }
  
  // 파일 첨부 첵크
  var _attachments = editor.getAttachments('file', true);
  for(var i=0; i<_attachments.length; i++) {
   _formGen.createField(
    tx.input({'name': 'aFile[' + (nCount+i) + ']', 'type': 'hidden', 'value': _attachments[i].data.filename})
   );
   _formGen.createField(
    tx.input({'name': 'aFileType[' + (nCount+i) + ']', 'type': 'hidden', 'value': 'file'})
   );
  }
  
  return true;
 }
</script>

 

<form name="frmWrite" id="frmWrite" method="post" action="register.php">

 

<table width="100%" bordercolor="#e9e9e9" frame="hsides" rules="all">

    <tr>

        <td>제목 : </td>

        <td><input name="chTitle" id="chTitle" type="text" style="width:90%;" /></td>

    <tr>

</table>

<div>

<?

    include $DOCUMENT_ROOT."/editor/editor.php";

?>

</div>

<div>

    <img src="/images/btn/btn_submit.gif" style="cursor:pointer;" onclick="fnCheckInput();" />

</div>

</table>

 

</form>

<!--/quote_txt-->

write.php 파일에서 등록 버튼을 클릭하면 Editor.save()가 호출이 되고, validForm 함수에서 폼첵크를 한후 true가 되돌려지면

setForm 함수에서 제목, 본문 내용, 업로드된 이미지와 파일등을 register.php 파일로 submit 하게 되는 구조다.

 

 

출처 : http://aramjo.blog.me/120105655345


 

editor,daumOpenEditor
Comment Write
Comment List
등록된 코멘트가 없습니다.