XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠
제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 | sejin7940 |
---|
요즘 제가 다국어 사이트를 하나 크게 만들다보니, 온갖 다국어 버그를 잡아내는군요 ^^
다국어 글 이동시 발생하는 문제가 두가지 있습니다.
하나의 글에 한가지 이슈씩을 등록하라고 해서 나눠서 기재합니다.
첫번째, 다국어 글을 이동할 경우, 내용이 바뀌는 버그입니다.
현상은 이렇습니다.
처음에 한국어 기반으로 글을 기재한 후 (documents DB에는 ko 를 언어체계로 해서 content 값에 등록이 되겠죠)
그 후 글을 차례대로 수정 저장해서 영어, 일어 를 저장합니다 (이 content 들은 document_extra_vars 에 저장이 되겠죠)
이 글을 다른 게시판에 복사할때..
처음 글을 썼던 한국어 체계에서 이동을 하면 문제는 없습니다.
문제는, 처음 쓴 체계가 아닌 언어체계 기반에서 이동할때 발생합니다
즉, 영어 로 언어 설정한 상태에서 위의 글을 이동시키면..
해당 글의 기반언어인 한국어의 content 부분에, 이동할때 보던 언어인 영어 가 저장이 되어버립니다.
즉 content 가 바뀌어버리는거죠..
소스상 이유는 이렇습니다.
moveDocumentModule 함수에서, $obj->content 부분 값을 업데이트하는데 ( 모듈번호가 바뀔때 file번호가 바뀌어서 그렇게 구성되어있더군요)
이 때 getDocument 함수를 통해 불러들이고 이 때 setToAllDocumentExtraVars 를 실행하게 되는데
setToAllDocumentExtraVars 에서, 다국어 로 된 글이 있는 경우, Title 과 Content 값을 언어코드에 맞게 대체해버리기 때문에 발생합니다
즉, 이동시에는 첫 기반 글의 content 값이 바뀌어야하는데..
setToAllDocumentExtraVars 때문에 현재 보던 content 값을 기준으로 해서 content 값이 업데이트가 되어버리기 때문에 발생합니다
결국, 이를 해결하기 제가 수정한 소스는...
modules/document/document.admin.controller.php 에서
moveDocumentModule 함수에서
// Move the attached file if the target module is different
바로 위에다가
// sejin7940 ( 다국어 이동시 content 언어가 현재 보던 언어로 바뀌는 현상 수정위해)
$args_ori->document_srl = $document_srl;
$output_ori = executeQuery('document.getDocument', $args_ori);
$obj->content = $output_ori->data->content;
를 추가하면 됩니다.
즉, getDocument 과 별도로 원본글의 content 값을 불러내도록 수정한거죠.
검토부탁드립니다.
저도 다국어 사이트를 만들고 있어서 꼭 필요한 기능이라 적용을 해봤는데 글 이동시 반응이 없습니다.
참고로 전 1.5.4.2 버전을 사용하고 있고, 모듈은 여러가지 사용하고 있지만 소셜xe와 관련이 있는지는 모르겠군요.