textarea 에디터 미리보기에서 오류가 발생되는 문제 수정

This commit is contained in:
conory 2017-07-15 21:10:04 +09:00
parent 77418672bb
commit 56d62a816f
5 changed files with 61 additions and 12 deletions

View file

@ -653,6 +653,7 @@ function doDocumentPreview(obj) {
'<form id="previewDocument" target="previewDocument" method="post" action="'+request_uri+'">'+
'<input type="hidden" name="module" value="document" />'+
'<input type="hidden" name="act" value="dispDocumentPreview" />'+
'<input type="hidden" name="mid" value="' + current_mid +'" />'+
'<input type="hidden" name="content" />'+
'</form>'
).appendTo(document.body);

View file

@ -61,11 +61,21 @@ class documentView extends document
return new Object(-1, 'msg_invalid_request');
}
$content = Context::get('content');
if(Context::get('logged_info')->is_admin != 'Y')
{
Context::set('content', removeHackTag(Context::get('content')));
$content = removeHackTag($content);
}
// Editor converter
$obj = new stdClass;
$obj->content = $content;
$obj->module_srl = getModel('module')->getModuleInfoByMid(Context::get('mid'))->module_srl;
$content = getModel('editor')->converter($obj, 'document');
Context::set('content', $content);
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('preview_page');
Context::set('layout', 'none');

View file

@ -1,4 +1,7 @@
<load target="../../tpl/js/editor_common.js" />
<load target="css/textarea.css" />
<load target="js/textarea.js" />
<load target="js/interface.js" />
<div id="textarea_wrapper_{$editor_sequence}" class="rx_editor_wrapper">
<textarea id="textarea_instance_{$editor_sequence}" class="rx_editor_textarea {$colorset}" data-editor-sequence="{$editor_sequence}" data-editor-primary-key-name="{$editor_primary_key_name}" data-editor-content-key-name="{$editor_content_key_name}"></textarea>
@ -19,17 +22,8 @@
textarea.css("word-wrap", "break-word");
}
// Load existing content
var content_key = textarea.data("editor-content-key-name");
var content_input = textarea.parents("form").find("input[name='" + content_key + "']");
if (content_input.size()) {
textarea.val(String(content_input.val()).stripTags().unescape());
}
// Save edited content
textarea.on("change", function() {
content_input.val(String($(this).val()).escape());
});
// Load
editorTextarea({$editor_sequence});
});
</script>
</div>

View file

@ -0,0 +1,16 @@
function _getTextareaInstance(editor_sequence) {
return jQuery('#textarea_instance_' + editor_sequence);
}
function editorGetContent(editor_sequence) {
return _getTextareaInstance(editor_sequence).val().escape();
}
function editorReplaceHTML(iframe_obj, content) {
var editor_sequence = parseInt(iframe_obj.id.replace(/^.*_/, ''), 10);
_getTextareaInstance(editor_sequence).val(String(content).stripTags());
}
function editorGetIFrame(editor_sequence) {
return _getTextareaInstance(editor_sequence).get(0);
}

View file

@ -0,0 +1,28 @@
function editorTextarea(editor_sequence) {
var textarea = jQuery("#textarea_instance_" + editor_sequence);
var content_key = textarea.data("editor-content-key-name");
var primary_key = textarea.data("editor-primary-key-name");
var insert_form = textarea.closest("form");
var content_input = insert_form.find("input[name='" + content_key + "']");
// Set editor keys
editorRelKeys[editor_sequence] = {};
editorRelKeys[editor_sequence].primary = insert_form.find("input[name='" + primary_key + "']");
editorRelKeys[editor_sequence].content = content_input;
editorRelKeys[editor_sequence].func = editorGetContent;
// Set editor_sequence
insert_form[0].setAttribute('editor_sequence', editor_sequence);
// Load existing content
if (content_input.size()) {
var content = String(content_input.val()).stripTags();
content_input.val(content);
textarea.val(content.unescape());
}
// Save edited content
textarea.on("change", function() {
content_input.val(String(jQuery(this).val()).escape());
});
}