From 59be0ee67a941a6954cc0f06b5c31cad6e930c1e Mon Sep 17 00:00:00 2001 From: YJSoft Date: Fri, 17 Jul 2015 11:12:39 +0900 Subject: [PATCH] =?UTF-8?q?fix=20#1648=20CKEditor=EC=97=90=EB=8F=84=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EC=A0=80=EC=9E=A5=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존 XpressEditor에 있던 자동저장 기능을 추가합니다. 50초마다 자동으로 저장되며 기존 XpressEditor처럼 설정에서 자동 저장 사용 여부를 바꿀 수 있습니다. + 파일 업로드 미사용시 생길수 있는 문제를 수정하였습니다. --- modules/editor/skins/ckeditor/css/default.css | 1 + modules/editor/skins/ckeditor/editor.html | 13 +++++ .../editor/skins/ckeditor/file_upload.html | 14 ++++-- modules/editor/tpl/js/editor.app.js | 48 +++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/modules/editor/skins/ckeditor/css/default.css b/modules/editor/skins/ckeditor/css/default.css index e69de29bb2..a9afbba8c8 100755 --- a/modules/editor/skins/ckeditor/css/default.css +++ b/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;} diff --git a/modules/editor/skins/ckeditor/editor.html b/modules/editor/skins/ckeditor/editor.html index 850691e896..ad31497928 100755 --- a/modules/editor/skins/ckeditor/editor.html +++ b/modules/editor/skins/ckeditor/editor.html @@ -8,6 +8,10 @@ + + {@ $css_content = null } {@ $css_content = '.xe_content.editable p { margin: 0;'. chr(125); } @@ -23,8 +27,17 @@ {@ $css_content .= chr(125);} + + + + + + +
+

 

+ diff --git a/modules/editor/skins/ckeditor/file_upload.html b/modules/editor/skins/ckeditor/file_upload.html index 63ede0eb73..d68a7eeb3e 100644 --- a/modules/editor/skins/ckeditor/file_upload.html +++ b/modules/editor/skins/ckeditor/file_upload.html @@ -45,20 +45,28 @@ diff --git a/modules/editor/tpl/js/editor.app.js b/modules/editor/tpl/js/editor.app.js index 56941412da..15baab9ce6 100644 --- a/modules/editor/tpl/js/editor.app.js +++ b/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); + } +} + (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;