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;


전체 3건
번호 카테고리 제목 출처 등록일 조회
공지 XE 기능개선 XE 1.11.18 이후 버전의 익명 수정 버그 수정법 xetown  2023.10.07 2752
공지 XE 기능개선 XE 1.11.14 보안패치 - 타인의 쪽지 내용을 확인할 수 있는 버그 패치방법 xetown  2023.10.03 2851
공지 XE 기능개선 XE 1.11.6 이후 보안배치 #4 file rhymix  2022.07.05 2933
공지 1.11.6 XE 1.11.6 이후 보안배치 #3 rhymix  2022.04.02 2922
공지 1.11.6 XE 1.11.6 이후 보안배치 #1 xetown  2021.06.22 3289
공지 1.11.6 XE 1.11.6 이하 에서 공개댓글을 비밀댓글로 변경시 생길 수 있는 오류 수정법 sejin7940  2021.01.10 3220
공지 XE 기능개선 XE 1.11.4 이후에서 파일 업로드시 정상 작동 안 하는 현상 수정법 XE github  2019.04.02 5998
공지 XE 기능개선 php 7.1 환경에서 XE 오류 나는 경우 확인할 사항 sejin7940  2018.07.11 5923
공지 유용정보 php7.2 환경에서 XE 오류가 생기는 경우 - Object 클래스 변경 필요 XE Github  2017.11.27 8256
공지 XE 기능개선 XE 1.8.30 이하에서 반드시 수정해주셔야하는 부분입니다. XE 1.8.31  2017.02.26 6692
공지 1.8.18 XE 1.8.18 에서 사용시 반드시 수정해야할 사항들 ( XE 1.8.20 이후에서는 수정 불필요 ) xetown  2016.04.03 25799
공지 XE 기능개선 XE 1.8.12 이후부터 proc controller 일부가 작동 안 할 경우 확인할 부분 [1] XE  2015.10.16 25620
3 1.8.12 통합검색시 결과값이 제대로 안 나오는 경우 sejin7940  2015.10.27 730
» 1.8.12 CKEditor에도 자동 저장 기능 추가 XE Github  2015.10.25 1099
1 1.8.12 IE+XpressEditor에서 업로드가 되지 않는 문제점 수정 YJSoft  2015.10.22 657
XE Login