131 lines
5.1 KiB
JavaScript
131 lines
5.1 KiB
JavaScript
var AUTOSAVE_INTERVAL = 600000;
|
|
|
|
function autosave() {
|
|
//console.log("자동 저장 실행");
|
|
|
|
$("form#fwrite").each(function () {
|
|
let contentToSave = "";
|
|
const formElement = this; // 현재 폼 요소를 formElement로 지정
|
|
const uid = $(formElement).find("input[name='uid']").val(); // ✅ uid 가져오기
|
|
|
|
if (typeof g5_editor !== "undefined") {
|
|
if (g5_editor.indexOf("ckeditor4") !== -1 && typeof CKEDITOR.instances.wr_content !== "undefined") {
|
|
contentToSave = CKEDITOR.instances.wr_content.getData();
|
|
} else if (g5_editor.indexOf("cheditor5") !== -1 && typeof ed_wr_content !== "undefined") {
|
|
contentToSave = ed_wr_content.outputBodyHTML();
|
|
} else if (g5_editor.indexOf("rb.editor") !== -1) {
|
|
//console.log("RB 에디터 감지됨");
|
|
|
|
const editorIframe = document.querySelector("iframe[data-editor-id]");
|
|
if (editorIframe) {
|
|
//console.log("iframe 메시지 전송 시작");
|
|
|
|
// RB 에디터에서 데이터 요청
|
|
editorIframe.contentWindow.postMessage({
|
|
type: "rbeditor-get-content"
|
|
}, "*");
|
|
|
|
// 메시지 이벤트 리스너 추가 (한 번만 실행되도록 변경)
|
|
const messageHandler = function (event) {
|
|
if (event.data.type === "rbeditor-content") {
|
|
//console.log("RB 에디터에서 데이터 응답 받음", event.data);
|
|
contentToSave = event.data.content;
|
|
|
|
saveContentToServer(formElement, contentToSave); // formElement를 올바르게 전달
|
|
window.removeEventListener("message", messageHandler);
|
|
}
|
|
};
|
|
|
|
// 기존 중복 등록 방지 후 추가
|
|
window.removeEventListener("message", messageHandler);
|
|
window.addEventListener("message", messageHandler);
|
|
} else {
|
|
console.error("에디터를 찾을 수 없습니다.");
|
|
}
|
|
}
|
|
}
|
|
|
|
// ✅ 기존 CKEditor, cheditor 데이터 저장
|
|
if (contentToSave) {
|
|
saveContentToServer(formElement, contentToSave); // ✅ formElement를 올바르게 전달
|
|
}
|
|
});
|
|
}
|
|
|
|
function saveContentToServer(formElement, content) {
|
|
const uid = $(formElement).find("input[name='uid']").val(); // uid 값을 가져옴
|
|
const subject = $(formElement).find("input[name='wr_subject']").val(); // 제목 가져오기
|
|
|
|
//if (save_wr_subject !== subject || save_wr_content !== content) { 클릭 > 저장 기존데이터 덮어쓰지 않음
|
|
$.ajax({
|
|
url: g5_bbs_url + "/ajax.autosave.php",
|
|
data: {
|
|
"uid": uid, // 아이프레임 부모에서 uid 값을 올바르게 가져옴
|
|
"subject": subject,
|
|
"content": content
|
|
},
|
|
type: "POST",
|
|
success: function (data) {
|
|
if (data) {
|
|
$("#autosave_count").html(data);
|
|
//console.log("자동저장 완료", data);
|
|
alert('임시저장이 완료 되었습니다.');
|
|
} else {
|
|
alert('저장될 내용과 이전 내용이 동일합니다.\n최초 저장시 제목을 입력해주셔야 합니다.');
|
|
}
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("AJAX 오류:", error); // 에러 로그 추가
|
|
}
|
|
});
|
|
|
|
save_wr_subject = subject;
|
|
save_wr_content = content;
|
|
//}
|
|
}
|
|
|
|
|
|
// 아이프레임 내부 버튼클릭, 정보받기
|
|
window.addEventListener("message", function (event) {
|
|
if (event.data.type === "autosave-trigger") {
|
|
//console.log("RB 에디터에서 autosave-trigger 요청 수신 → autosave 실행");
|
|
autosave();
|
|
}
|
|
|
|
if (event.data.type === "trigger-autosave-popup") {
|
|
//console.log("팝업 실행");
|
|
$("#btn_autosave").click(); // 기존 버튼 클릭 이벤트 실행
|
|
}
|
|
});
|
|
|
|
|
|
$(document).on('click', '.autosave_load', function () {
|
|
var $li = $(this).parents('li');
|
|
var as_id = $li.data('as_id');
|
|
var as_uid = $li.data('uid');
|
|
|
|
$('#fwrite input[name=\"uid\"]').val(as_uid);
|
|
|
|
$.get(g5_bbs_url + '/ajax.autosaveload.php', {
|
|
'as_id': as_id
|
|
}, function (data) {
|
|
var subject = $(data).find('item').find('subject').text();
|
|
var content = $(data).find('item').find('content').text();
|
|
|
|
$('#wr_subject').val(subject);
|
|
|
|
// RB 에디터가 존재하는 경우 iframe으로 데이터 전달
|
|
const editorIframe = document.querySelector('iframe[data-editor-id]');
|
|
if (editorIframe) {
|
|
editorIframe.contentWindow.postMessage({
|
|
type: 'rbeditor-insert-content',
|
|
content: content
|
|
}, '*');
|
|
} else {
|
|
console.error('에디터를 찾을 수 없습니다.');
|
|
}
|
|
}, 'xml');
|
|
|
|
$('#autosave_pop').hide();
|
|
});
|