위지윅에디터의 rewrite mod에 따른 첨부이미지/파일등의 경로가 바뀌는 오류를 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6107 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2009-04-15 03:16:43 +00:00
parent 13ad615f77
commit 5bf4b345a9
6 changed files with 58 additions and 34 deletions

View file

@ -9,7 +9,7 @@ function insertEmoticon(obj) {
var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl)
opener.editorReplaceHTML(iframe_obj, text);
opener.editorFocus(opener.editorPrevSrl);
self.focus();
}
/* 선택된 이모티콘 목록을 가져옴 */

View file

@ -50,9 +50,16 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
var oHTMLSrcTextarea = htmlsrc.get(0);
var elAppContainer = jQuery('.xpress-editor', form).get(0);
oEditor.getFrame = function(){ return oWYSIWYGIFrame;}
var content = form[content_key].value;
var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
content = content.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
content = content.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
form[content_key].value = content;
jQuery("#xpress-editor-"+editor_sequence).val(content);
// Set standard API
editorRelKeys[editor_sequence] = new Array();
editorRelKeys[editor_sequence]["primary"] = form[primary_key];
@ -97,6 +104,7 @@ function editorStart_xe(editor_sequence, primary_key, content_key, editor_height
oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_MODE(editor_sequence));
oEditor.registerPlugin(new xe.XE_Extension(elAppContainer, editor_sequence));
oEditor.registerPlugin(new xe.XE_FormatWithSelectUI(elAppContainer));
oEditor.registerPlugin(new xe.XE_GET_WYSYWYG_CONTENT());
if (!jQuery.browser.msie && !jQuery.browser.opera) {
oEditor.registerPlugin(new xe.XE_WYSIWYGEnterKey(oWYSIWYGIFrame));
@ -145,6 +153,14 @@ function editorGetIframe(srl) {
}
function editorReplaceHTML(iframe_obj, text) {
// 이미지 경로 재지정 (rewrite mod)
var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
text = text.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
// href 경로 재지정 (rewrite mod)
var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
text = text.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
var srl = parseInt(iframe_obj.id.replace(/^.*_/,''),10);
editorRelKeys[srl]["pasteHTML"](text);
}
@ -162,6 +178,23 @@ xe.XE_GET_WYSYWYG_MODE = jQuery.Class({
}
});
// 이미지등의 상대경로를 절대경로로 바꾸는 플러그인
xe.XE_GET_WYSYWYG_CONTENT = jQuery.Class({
name : "XE_GET_WYSYWYG_CONTENT",
$ON_MSG_APP_READY : function() {
this.oApp.addConverter("IR_TO_WYSIWYG", this.TO_WYSIWYG_SET);
},
TO_WYSIWYG_SET : function(content) {
var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
content = content.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
content = content.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
return content;
}
});
// 미리보기 확장기능
xe.XE_Preview = jQuery.Class({
name : "XE_Preview",

View file

@ -344,6 +344,14 @@ function editorSearchComponent(evt) {
// 에디터 내의 선택된 부분의 html코드를 변경
function editorReplaceHTML(iframe_obj, html) {
// 이미지 경로 재지정 (rewrite mod)
var srcPathRegx = /src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/g;
html = html.replace(srcPathRegx, 'src="'+request_uri+'$3/$4.$5"');
// href 경로 재지정 (rewrite mod)
var hrefPathRegx = /href=("|\'){1}(\.\/)?\?([^"\']+)("|\'){1}/g;
html = html.replace(hrefPathRegx, 'href="'+request_uri+'?$3"');
// 에디터가 활성화 되어 있는지 확인 후 비활성화시 활성화
var editor_sequence = iframe_obj.contentWindow.document.body.getAttribute("editor_sequence");

View file

@ -385,13 +385,13 @@ function insertUploadedFile(editorSequence) {
obj.src = file.download_url;
}
temp_code = '';
temp_code += "<img src=\""+request_uri+file.download_url+"\" alt=\""+file.source_filename+"\"";
temp_code += "<img src=\""+file.download_url+"\" alt=\""+file.source_filename+"\"";
if(obj.complete == true) { temp_code += " width=\""+obj.width+"\" height=\""+obj.height+"\""; }
temp_code += " />\r\n";
text.push(temp_code);
// 이미지외의 경우는 multimedia_link 컴포넌트 연결
} else {
text.push("<img src=\""+request_uri+"common/tpl/images/blank.gif\" editor_component=\"multimedia_link\" multimedia_src=\""+file.download_url+"\" width=\"400\" height=\"320\" style=\"display:block;width:400px;height:320px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;\" auto_start=\"false\" alt=\"\" />");
text.push("<img src=\"common/tpl/images/blank.gif\" editor_component=\"multimedia_link\" multimedia_src=\""+file.download_url+"\" width=\"400\" height=\"320\" style=\"display:block;width:400px;height:320px;border:2px dotted #4371B9;background:url(./modules/editor/components/multimedia_link/tpl/multimedia_link_component.gif) no-repeat center;\" auto_start=\"false\" alt=\"\" />");
}
// binary파일의 경우 url_link 컴포넌트 연결
@ -400,19 +400,14 @@ function insertUploadedFile(editorSequence) {
}
}
// html 모드
if(editorMode[editorSequence]=='html'){
if(text.length>0) xGetElementById('editor_textarea_'+editorSequence).value += text.join('');
if(jQuery.isFunction(editorRelKeys[editorSequence]['pasteHTML'])){
editorRelKeys[editorSequence]['pasteHTML'](text.join(''));
// 위지윅 모드
}else{
// html 모드
if(editorMode[editorSequence]=='html'){
if(text.length>0) xGetElementById('editor_textarea_'+editorSequence).value += text.join('');
// 위지윅 모드
}else{
var iframe_obj = editorGetIFrame(editorSequence);
if(!iframe_obj) return;
if(text.length>0) editorReplaceHTML(iframe_obj, text.join(''));
}
var iframe_obj = editorGetIFrame(editorSequence);
if(!iframe_obj) return;
if(text.length>0) editorReplaceHTML(iframe_obj, text.join(''));
}
}