RX/XE 팁
XE FAQ 는 제가 XE공홈 '묻고 답하기'에 답변한 내용들 중 일부를 정리한 내용입니다. (대부분이 제가 한 답변이죠)
XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠

제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 XE Github 
출처URL https://github.com/xpressengine/xe-core/pull/1651/files 

XpressEditor 에서는 자동저장기능이 있었는데

Ckeditor 에서는 작동을 안 한다.


이 부분 보완하는 방법을

YJSoft 님과 misol 님이 github 에 올려둔 내용이다.





 modules/editor/skins/ckeditor/css/default.css
@@ -0,0 +1 @@
+p.editor_autosaved_message.autosave_message {display:none;background: #f6ffdb;padding:6px 10px;margin:0;line-height:1;}
View  
13  modules/editor/skins/ckeditor/editor.html
@@ -8,6 +8,10 @@
<load target="../../tpl/js/editor.app.js" />
<load target="js/xe_interface.js" />
+<script>
+var auto_saved_msg = "{$lang->msg_auto_saved}";
+</script>
+
{@ $css_content = null }
<!--@if($content_font || $content_font_size)-->
<!--@if($content_style === 'ckeditor_light')-->{@ $css_content = '.xe_content.editable p { margin: 0;'. chr(125); }<!--@endif-->
@@ -23,8 +27,17 @@
{@ $css_content .= chr(125);}
<!--@endif-->
+<!--@if($enable_autosave)-->
+<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" />
+<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}" />
+<input type="hidden" name="_saved_doc_document_srl" value="{$saved_doc->document_srl}" />
+<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
+<!--@end-->
+
<div id="ckeditor_instance_{$editor_sequence}" data-editor-sequence="{$editor_sequence}" data-editor-primary-key-name="{$editor_primary_key_name}" data-editor-content-key-name="{$editor_content_key_name}" style="min-height:{$editor_height}px;"></div>
+<p cond="$enable_autosave" class="editor_autosaved_message autosave_message" id="editor_autosaved_message_{$editor_sequence}">&nbsp;</p>
+
<block cond="$allow_fileupload">
<include target="file_upload.html" />
</block>
 View  
14  modules/editor/skins/ckeditor/file_upload.html
@@ -44,10 +44,18 @@
</div>
-<script>
+<script cond="$allow_fileupload">
@misol
misol added a note 12 hours ago

파일 업로드가 허용되어 있지 않다면 다음 스크립트들은 정의되지 않습니다.

+ function reloadUploader(editor_sequence){
+ jQuery(function($){
+ var setting = {
+ maxFileSize: {$file_config->allowed_filesize},
+ limitMultiFileUploadSize: {$file_config->allowed_filesize}
+ };
+ var uploader = $('#xefu-container-' + editor_sequence).xeUploader(setting);
+ });
+ }
jQuery(function($){
// uploader
- <!--@if($allow_fileupload)-->
var setting = {
maxFileSize: {$file_config->allowed_filesize},
limitMultiFileUploadSize: {$file_config->allowed_filesize}
@@ -59,6 +67,6 @@
window.xe.msg_checked_file_is_deleted = '{$lang->msg_checked_file_is_deleted}';
window.xe.msg_not_allowed_filetype = '{$lang->msg_not_allowed_filetype}';
window.xe.msg_file_upload_error = '{$lang->msg_file_upload_error}';
- <!--@endif-->
+
});
</script>

 View  
48  modules/editor/tpl/js/editor.app.js

@@ -1,3 +1,23 @@
+function getCkFormInstance(editor_sequence)
+{
+ var fo_obj = document.getElementById('ckeditor_instance_' + editor_sequence).parentNode;
+ while(fo_obj.nodeName != 'FORM') { fo_obj = fo_obj.parentNode; }
+ if(fo_obj.nodeName == 'FORM') return fo_obj;
+ return;
+}
+
+function getAutoSavedSrl(ret_obj, response_tags, c) {
+ var editor_sequence = ret_obj.editor_sequence;
+ var primary_key = ret_obj.key;
+ var fo_obj = getCkFormInstance(editor_sequence);
+
+ if(ret_obj.document_srl !== 0)
+ {
+ fo_obj[primary_key].value = ret_obj.document_srl;
+ reloadUploader(editor_sequence);
+ }
@misol
misol added a note 12 hours ago

reloadUploader 가 정의되어 있지 않을 수도 있는 것 같아요.

+}
+
(function($){
"use strict";
var default_ckeconfig = {
@@ -60,6 +80,8 @@
var $contentField = $form.find(opts.content_field);
var data = $containerEl.data();
var editor_sequence = $containerEl.data().editorSequence;
+ var primary_key = $containerEl.data().editorPrimaryKeyName;
+ var fo_obj = getCkFormInstance(editor_sequence);
this.ckeconfig = $.extend({}, default_ckeconfig, opts.ckeconfig || {});
@@ -67,6 +89,29 @@
$form.attr('editor_sequence', data.editorSequence);
if(CKEDITOR.env.mobile) CKEDITOR.env.isCompatible = true;
+
+ // saved document(자동저장 문서)에 대한 확인
+ if(typeof(fo_obj._saved_doc_title)!= "undefined") { ///<< _saved_doc_title field가 없으면 자동저장 하지 않음
+ var saved_title = fo_obj._saved_doc_title.value;
+ var saved_content = fo_obj._saved_doc_content.value;
+
+ if(saved_title || saved_content) {
+ // 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
+ if(confirm(fo_obj._saved_doc_message.value)) {
+ if(typeof(fo_obj.title)!='undefined') fo_obj.title.value = saved_title;
+ $contentField.val(saved_content);
+
+ var param = [];
+ param.editor_sequence = editor_sequence;
+ param.primary_key = primary_key;
+ param.mid = current_mid;
+ var response_tags = new Array("error","message","editor_sequence","key","title","content","document_srl");
+ exec_xml('editor',"procEditorLoadSavedDocument", param, getAutoSavedSrl, response_tags);
+ } else {
+ editorRemoveSavedDoc();
+ }
+ }
+ }
var instance = CKEDITOR.appendTo($containerEl[0], {}, $contentField.val());
@@ -109,6 +154,9 @@
window.editorRelKeys[data.editorSequence].pasteHTML = function(text){
instance.insertHtml(text, 'html');
};
+
+ // 자동저장 필드가 있다면 자동 저장 기능 활성화
+ if(typeof(fo_obj._saved_doc_title)!="undefined" ) editorEnableAutoSave(fo_obj, editor_sequence);
},
getContent : function(seq) {
var self = this;


전체 695건
번호 카테고리 제목 출처 등록일 조회
공지 XE 기능개선 XE 1.11.18 이후 버전의 익명 수정 버그 수정법 xetown  2023.10.07 3201
공지 XE 기능개선 XE 1.11.14 보안패치 - 타인의 쪽지 내용을 확인할 수 있는 버그 패치방법 xetown  2023.10.03 3267
공지 XE 기능개선 XE 1.11.6 이후 보안배치 #4 file rhymix  2022.07.05 3434
공지 1.11.6 XE 1.11.6 이후 보안배치 #3 rhymix  2022.04.02 3380
공지 1.11.6 XE 1.11.6 이후 보안배치 #1 xetown  2021.06.22 3778
공지 1.11.6 XE 1.11.6 이하 에서 공개댓글을 비밀댓글로 변경시 생길 수 있는 오류 수정법 sejin7940  2021.01.10 3698
공지 XE 기능개선 XE 1.11.4 이후에서 파일 업로드시 정상 작동 안 하는 현상 수정법 XE github  2019.04.02 6452
공지 XE 기능개선 php 7.1 환경에서 XE 오류 나는 경우 확인할 사항 sejin7940  2018.07.11 6375
공지 유용정보 php7.2 환경에서 XE 오류가 생기는 경우 - Object 클래스 변경 필요 XE Github  2017.11.27 9949
공지 XE 기능개선 XE 1.8.30 이하에서 반드시 수정해주셔야하는 부분입니다. XE 1.8.31  2017.02.26 7160
공지 1.8.18 XE 1.8.18 에서 사용시 반드시 수정해야할 사항들 ( XE 1.8.20 이후에서는 수정 불필요 ) xetown  2016.04.03 26282
공지 XE 기능개선 XE 1.8.12 이후부터 proc controller 일부가 작동 안 할 경우 확인할 부분 [1] XE  2015.10.16 26201
374 유용정보 제이쿼리 강좌 (jQuery Selector)_제이쿼리 선택자 정리 F2F  2015.10.07 1942
373 유용정보 제이쿼리 강좌 _ 선택자 (jQuery Selector) 입문 강의 file F2F  2015.10.07 1653
372 XE 기능개선 자동 링크 애드온이 적용되는 링크들에 특정 색깔등 css 적용하는 방법 sejin7940  2015.10.08 1233
371 XE 기능개선 글 삭제를 누르면 나오는 안내문구 이상 ( 영어등 다른 언어에서 ) 수정방법 sejin7940  2015.10.08 1317
370 XE 기능개선 애드온에서 언어파일 사용하는 방법 sejin7940  2015.10.09 1172
369 유용정보 세계시간 위젯 소스 사이트 timenow  2015.10.11 1186
368 유용정보 스케치북 스킨에서 사용자정의가 뒤늦게 출력되는 현상 변경법 sejin7940  2015.10.13 1049
367 XE 기능개선 이미지 파일 업로드시 본문 자동삽입되도록 수정 YJSoft  2015.10.13 1482
366 XE 기능개선 cURL 을 이용하고 있는 모듈이 최신XE에서 잘 안 되는 경우 배워서남준다  2015.10.18 1351
365 1.8.12 IE+XpressEditor에서 업로드가 되지 않는 문제점 수정 YJSoft  2015.10.22 674
364 유용정보 에디트 플러스에서 FTP 접속은 되나 파일 열기나 업로드가 안 되는 경우 sejin7940  2015.10.22 1164
» 1.8.12 CKEditor에도 자동 저장 기능 추가 XE Github  2015.10.25 1118
362 1.8.12 통합검색시 결과값이 제대로 안 나오는 경우 sejin7940  2015.10.27 749
361 XE 기능개선 xpresseditor 의 경우, 파일첨부 / 선택삭제 / 본문삽입 버튼을 눈에 잘 보이게 변경하는 방법 sejin7940  2015.10.28 1280
360 XE 기능개선 글 수정일때만 업데이트 아이콘이 뜨게 하고 싶은 경우 ( 댓글 입력시에는 별도로 안 뜨고) sejin7940  2015.11.01 1221
359 유용정보 엑셀을 csv 화해서 fgetcsv 로 import 할때 주의할 점 ( 줄바꿈 제거 처리 반드시!) sejin7940  2015.11.28 2418
358 XE 기능개선 "이 페이지 나가기" 경고창이 뜨는 사이트의 경우 XE  2015.12.03 1559
357 XE 기능개선 http://도메인/admin 접근 안 되던 문제 & 글등록시 잘못된 요청라면서 등록 안 되던 현상 해결책 sejin7940  2015.12.14 1395
356 XE 기능개선 비밀글 이여도 갤러리나 웹진형에서, 썸네일이나 요약 부분이 나타나게 수정하려면.. sejin7940  2015.12.23 1195
XE Login