1

주제: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

저장하기 눌러서
function EntryManager()
스크립트 함수 호출될 때;;


oForm.content.value = editor.html2ttml(editor.contentDocument.body.innerHTML);
이거 밑에


window.clipboardData.setData('text', oForm.content.value);
이거 한 줄 넣어주셨으면 좋겠습니다 ^^
(태그가 같이 들어가서 붙여넣으면 이상해집니다만.. =_=)

2

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

생각보다 어려운 문제입니다. 먼저 clipboarData는 호환성이 없기 때문에 아래와 같은 형태가 되어야 합니다.

  <!--[if IE]>
    window.clipboardData.setData("Text", text);
    return;
  <![endif]-->

물론 if IE를 쓰지 않고 window에서 ie냐 netscape이냐 확인한 후 파이어폭스 여부를 다시 확인하는 방법도 있습니다. 파이어폭스를 위해서는 더 긴코드가 필요합니다. 표준 객체가 아닌 확장 객체이기 때문입니다. (MDC의 문서를 참고)

const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].
                                    getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString("Put me on the clipboard, please.");

물론 이 두코드를 병행해도 기타 브라우져와의 호환성은 없습니다.  관계 표준은 아직 준비 중입니니다. (W3 문서 참고)

표준에 마땅한 내용이 없기 때문에 각 브라우저 별로 호환 코드를 짜고 폴백을 만들어야 할 것입니다. 오페라나 사파리엔 관심이 없어 어떤 구현이 있는지 모르겠습니다. 구현을 아시는 분이 있나요?

CN (2006-12-14 10:49:17)에 의해 마지막으로 수정

3

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

플래시를 이용하면 뭐, 어떻게든 구현은 될 겁니다;; 하지만 CN님 말씀처럼 안정적인 동작에 대한 아무런 보장이 없기 때문에, 클립보드를 액세스하는 코드는 되도록이면 피하는게 좋겠지요. 대신 이걸 원하는 목적은 최종적으로 저장 버튼을 누를때의 글 내용과 임시저장본 사이의 차이(이게 생각보다 크더군요_-;;)를 커버하기 위한 임시 저장이니 이를 구현하기 위한 다른 방법을 고민해보면 어떨까요.

$_POST 를 serialize 해서 한 변수로 만들어 세션에 등록하면?....음; 이것도 결국 세션테이블을 무겁게 만들겠군요;;
일단 자동저장이 제 기능을 충분히 발휘할 수 있게 하기 위한 고민이 우선일 것 같습니다. 보조장치는 그 다음..

4

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

laziel 작성:

플래시를 이용하면 뭐, 어떻게든 구현은 될 겁니다;;

플래시를 이용하는 방법으로 하면 더 넓은 브라우저 호환성을 얻을 수 있겠군요. 플래시에 의존적인 코드가 되겠습니다. 그래서 플래시, 각 브라우저 별 폴백, 그외의 폴백 이런 순서로 작동이 되도록 작성될 필요가 있겠군요.

5

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

글 쓰는 중간에 저장하기가 가능하도록 하였습니다. 기존의 저장하기는 완료하기로 바꾸었습니다. r2717입니다.

아직 중간 저장시에 싱크 처리가 되지 않도록 하는 부분을 어떻게 할까 고민 중입니다. 이미 싱크된 글 수정시에는 어떻게 해야 하는가가 동선의 문제로 남는데, 일단은 현재대로 두겠습니다.^^

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

6

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

흐음...
클립보드는 사용자가 의도한 게 아니라면 안 건드리는 게 좋다는 생각입니다만...;

문제의 답은 우리 안에 있다.
내면에 귀를 기울여 보자.

7

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

daybreaker 작성:

흐음...
클립보드는 사용자가 의도한 게 아니라면 안 건드리는 게 좋다는 생각입니다만...;

저도 아침놀님에 한표..

의도하지 않은 동작으로 다른 중요한(?) 클립보드에 들어있는 자료가 날아가버리는 경우도 생각을 해주는게 어떨까요?
PC방 등의 장소에서 글을 저장하고 아무 작업없이 브라우저만 끄고 집에 가버린 경우 글의 내용이 클립보드에 남아있어서 보호/비공개 글의 경우 사생활 유출 등의 문제가 발생할 소지도 있겠군요.

8

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

Peris 작성:
daybreaker 작성:

흐음...
클립보드는 사용자가 의도한 게 아니라면 안 건드리는 게 좋다는 생각입니다만...;

저도 아침놀님에 한표..

의도하지 않은 동작으로 다른 중요한(?) 클립보드에 들어있는 자료가 날아가버리는 경우도 생각을 해주는게 어떨까요?
PC방 등의 장소에서 글을 저장하고 아무 작업없이 브라우저만 끄고 집에 가버린 경우 글의 내용이 클립보드에 남아있어서 보호/비공개 글의 경우 사생활 유출 등의 문제가 발생할 소지도 있겠군요.

지적하신 문제들은 어떤식으로든 해결책을 찾으면 나올겁니다.
...하지만 저도 클립보드를 액세스하는건 썩 내키지 않는군요.

지금 문제가 되는 부분은, 타임아웃으로 로그인이 풀림으로서 중간에 증발하는 글을 보호하자는 것이 취지인것 같은데요
이걸 그냥 무시하고 바로 로그인 안되었으니 퉷! 하는 현재 상태를 개선해서, 일단 PHP가 POST 로 글 내용은 받은 상태이니 이걸 handle 해서 별도의 draft 를 두면 어떨까요. 임시보관소 라든가 하는 이름으로해서, 로그인 타임아웃이나 조작 실수라고 판단할 수 있는 경우 ownership 과 상관없이 관리자 모드에서만 확인할 수 있는 임시 보관소를 만들어 여기에 글을 넣어두고, 후에 여기에서 '글 작성을 재개합니다' 를 한다든가 해서 살릴 수 있다면 그것도 나쁘지 않다고 생각합니다.
그리고 이 글들은 일정한 유효기간 (48시간 정도?)을 갖고 이후에는 소거되도록 하고 말이죠.

실수한 놈이 나빠! 라고 하기엔 정말 앗 하는 사이에 어처구니 없는 실수를 하는 경우가 생각보다 비일비재하니 다른 각도로도 한번 생각해 볼 문제라고 봅니다.

9

답글: 임시저장도 좋지만; 글 쓰기 전에 클립보드 저장도...

클립보드는 안건드리는 식입니다. 베타 트리 확인하시라 smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'