다음 오픈 에디터가 오픈 웹에디터들 중 그나마 사용성이 좋을 거 같아 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
제가 이미지 업로드 하면 파일 타입으 ... |
감사합니다 |
참고하시라고 적어봅니다. 저는 위에 ... |
asp용 소스 부탁드립니다. 외부가 아닌 ... |
특정일 선택막기에서 for문이랑 if($. ... |
워드프레스를 시작한지 어언 6일... ... |
이미지 사이즈가 계속 0으로 나와서 애 ... |
감사합니다! |
음.. 메일로 보내 드릴게요 |
Comment Write
Comment List