홈으로 홈으로 | 무료회원가입 | 아이디/비번찾기 | 즐겨찾기
추천음악방송메인홈1대1상담음악방송청취
운.영.자.1대1.상담

온라이브음악방송
온라이브스토어(앱다운로드)
아리랑가요(무료음악채널)
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)

환상의뽕짝파티 무료음악
명작트로트메들리 무료음악
트로트메들리관광 무료음악
동영상노래방
가사검색

POP Player
신나는 고스톱
컴퓨터 오목
작은 음악다방
최신 인기가요

보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
다음오픈에디터 및 설치방법
8년 전
다음 오픈 에디터가 오픈 웹에디터들 중 그나마 사용성이 좋을 거 같아 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 하게 되는 구조다.

추천추천 : 704 추천 목록
번호 제목
3,026
 여러 도메인들 간 쿠키 공유하기
3,025
 태그 사이에 있는 텍스트를 추출
3,024
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,023
 쿠키 생성,가져오기,삭제
3,022
 사용자 함수 모음
3,021
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,020
 [HTML5] <video> - DOM으로 제어하기
3,019
 HTML5 video 태그에서 영상 좌우반전
3,018
 PHP - 특정 태그 및 문자열 추출, 제거
3,017
 [PHP] define과 defined의 차이
3,016
 우클릭 완벽차단 스크립트
3,015
 iframe 높이 100% 맞추기
3,014
 curl 함수를 이용한 HTTP REFERER 변경
3,013
 윈도우10 시스템 파일 및 Dism 검사
3,012
 텍스트 줄바꿈, 글자자르기 CSS
3,011
 jQuery Mobile에서 유용한 코드 10가지.
3,010
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,009
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,008
 [jQuery] jQuery Quick API
3,007
 [ transition ] 링크 hover 색상 변화 속도 조절
3,006
 PHP 5.3.0 에서 사라진 함수들 대체
3,005
 어떤 파일들이 include 나 require 되었는지 확인하는 함수(get_included_files)
3,004
 PHP 날짜 형식 및 계산하기(날짜 더하고 빼기)
3,003
 jQuery Mobile에서 유용한 코드 10가지.
3,002
 값이 배열 안에 존재하는지 확인하는 in_array함수
3,001
 사용자가 웹브라우저에서 뒤로가기를 했을때 감지하는 방법
3,000
 [jQuery]버튼 활성화, 비활성화
2,999
 jQuery show() / hide() / toggle() 사용법
2,998
 jquery 여러가지 이벤트
2,997
 border-radius 속성
2,996
 네이버 오픈API 음성합성 API 사용하는 PHP 샘플코드
2,995
 UTF8 한글 자르기..
2,994
 iconv 에러 발생시 계속 처리하기 옵션
2,993
 [PHP] 현재 페이지의 도메인 , URL 정보 알아내기.
2,992
 [PHP] 막강 기능 배열..
목록
추억의가요방(가사포함)
인기절정뽕짝파티
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
세월따라노래따라
가슴시린트로트
트로트쌍쌍파티
7080추억속으로
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
POP TOP BEST

최신인기가요특집
추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
가요축제\트롯1번지
댄스\메들리\리믹스
카페\명상\경음악\기타
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.