rhymix/modules/editor/skins/dreditor/js/xe_interface.js
2011-04-01 06:51:30 +00:00

107 lines
2.9 KiB
JavaScript

/**
* @file xe_interface.js
* @brief XE Editor Standard Interface
* @author NHN (developers@xpressengine.com)
*/
(function($){
// get editor app
var editor = xe.getApp('DrEditor');
if ($.isArray(editor)) editor = editor[0];
function _get_content(editor_sequence) {
var content = editor.cast('GET_CONTENT', [editor_sequence]);
return $.isArray(content)?content[0]:content;
}
function _set_content(editor_sequence, content) {
editor.cast('SET_CONTENT', [editor_sequence, content]);
}
function _create(editor_sequence, primary_key, content_key, editor_height, colorset, content_style, content_font, content_font_size) {
if (!colorset) colorset = 'white';
if (!content_style) content_style = 'xeStyle';
if (!content_font) content_font = '';
if (!content_font_size) content_font_size = '';
var seq = editor_sequence;
var form = $('#dreditor_dummy_'+editor_sequence).parents('form:first').get(0);
var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html';
var content = form[content_key].value;
try {
form.setAttribute('editor_sequence', seq);
} catch(e) {
form.edtior_sequence = seq;
}
// Set Standard API
if (editorRelKeys) {
editorRelKeys[seq] = {
primary : form[primary_key],
content : form[content_key],
editor : null,
func : function(){ return editor.cast('GET_CONTENT', [seq]) },
pasteHTML : function(content){ editor.cast('SET_CONTENT', [seq, content]); }
};
}
editor.cast('CREATE_EDITOR', [seq, form]); // create new editor
jQuery(function(){
editor.cast('SET_CONTENT', [seq, content]);
if (editorRelKeys) editorRelKeys[seq].content.value = editorRelKeys[seq].func();
});
// Auto save
if (form._disable_autosaved) {
editorRemoveSavedDoc();
} else {
if (form._saved_doc_title && form._saved_doc_title.value) { // Check auto-saved document
var saved_title = form._saved_doc_title.value;
var saved_content = form._saved_doc_content.value;
if (saved_title || saved_content) {
// 자동저장된 문서 활용여부를 물은 후 사용하지 않는다면 자동저장된 문서 삭제
if(confirm(form._saved_doc_message.value)) {
if(typeof(form.title)!='undefined') form.title.value = saved_title;
if(editorRelKeys){
$(function(){
editorRelKeys[seq].content.value = saved_content;
editorRelKeys[seq].pasteHTML(saved_content);
});
}
} else {
editorRemoveSavedDoc();
}
}
}
editorEnableAutoSave(form, editor_sequence);
}
}
// before unload
window.onbeforeunload = function(e) {
var msg = '';
$.each(editorRelKeys, function(seq, obj){
if (!obj) return true;
var content = obj.func();
if (content != obj.content.value) {
msg = msg_close_before_write;
return false;
}
});
if (msg) {
if ($.browser.msie) window.event.returnValue = msg;
else return msg;
}
};
// register as global function
window.editorStart_xe = _create;
window.editorGetContentTextarea_xe = _get_content;
})(jQuery);