홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
다음오픈에디터 및 설치방법
11년 전
다음 오픈 에디터가 오픈 웹에디터들 중 그나마 사용성이 좋을 거 같아 php 게시판 등에 적용해봤다.

다운로드는 http://code.google.com/p/daumopeneditor/downloads/list

daumeditor-5.4.0.zip

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

 

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

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

 

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

 

/editor.php

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

 

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

..

..

..

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

 

/*

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

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

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

*/

 

<script-x type="text/javascript-x">
// <![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-x>

 

/*

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

 

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

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

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

 

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

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

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

 

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

*/

 

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

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

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

</head>

<body>

 

<script-x type="text/javascript-x">

 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-x>

 

<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>

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

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

추천추천 : 753 추천 목록
번호 제목
3,030
 제이쿼리 기본 명령어
3,029
 웹페이지 가로 모드세로 모드 인식하기
3,028
 모바일 웹 화면 강제 회전(가로모드 고정)
3,027
 [HTML5]에서 frameset 대체 방법과 iframe 속성
3,026
 HTML <Audio> 사용법
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
3,008
 윈도우10 시스템 파일 및 Dism 검사
3,007
 텍스트 줄바꿈, 글자자르기 CSS
3,006
 jQuery Mobile에서 유용한 코드 10가지.
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.