아직 저장하지 않았는데 쓰던 글 날려버렸어.... 드루팔 Autosave 모듈로 예방하자

웹 화면에서 바로 글을 작성하는 것은 편한 점, 나쁜 점이 있다.

나쁜 점 중 하나는, 폼에 많은 글을 작성하던 도중에 날려먹는 문제다.

문제의 패턴에 빈번한 예가 아래 세 가지로,
1. 쓰는 도중에 브라우저가 확 죽어버리거나 멈추는 현상. (특정 스크립트 등에 의해)
2. 쓰는 도중에 백 버튼이나 여타 링크를 눌러버림, 돌아와 보니 쓰던 글 사라짐.
3. 다 쓰고 저장 버튼을 눌렀는데, 로그인 풀림이나 인증 문제 등으로 이상 발생.

얼마나 애를 많이 먹었는지, 예전에 우리나라의 모-보드는 이런 문제를 원본소스 수정한 팁으로, 글 쓰는 중간중간 혹은 저장버튼 누를 때 클립보드에 자동(Ctrl+C)으로 저장되도록 하는 방법을 사용했었다.

위 문제들의 근본적으로 피하려면, 가능한 로컬 상 (잘 죽지 않는) 메모장 등에서 글을 작성하고 수시로 저장하며, 다 쓰고 나서 복사/붙여넣기로 웹 화면에 글을 투고하는 방법이 있지만, 으--- 귀찮다.

드루팔을 주력으로 사용하는 드루지기들도 위 문제를 몇 번 당하다가, 짬을 내서 해결책을 찾아보았다.

결론부터 말하자면, 다소 많은 방법들이 있는 것 같았지만 복잡해 보였고, 딱 원하는 기능은 없어보였다. 그 중에서도 Autosave 모듈이 제일 무난한 것 같아 소개한다.

http://drupal.org/project/autosave

설치/사용법 (아래는 전부 관리자로 로그인한 상태에서 실행)

1. 모듈을 다운로드해 설치, 관리자에서 활성화한다.

2. admin/settings/autosave 에서, 자동 저장할 시간을 초 단위로 지정한다.
   60초 정도가 적당할 것 같다.
   Run in stealth mode 체크박스는 해도 그만, 안해도 그만이다.
   체크해 두면 자동 저장할 주기마다 나오는 작은 안내글이 안보인다고 한다.
   체크해 두지 않고 실제로 확인해 보니,
   브라우저 상태바 위로 한 줄 정도 차지해 굳이 체크해 둘 이유가 없어 보였다.

3. 그런 다음에는, 모든 작성글에 자동저장을 사용할 작정이 아니므로,
   특정 컨텐츠 타입을 지정해 줄 필요가 있다.
   (모든 종류의 작성글에 사용하려면 아래 과정을 모든 컨텐츠 타입에 설정)
  
   admin/content/types 에 가서, 하나의 컨텐츠 타입을 고른다. (예:Book타입)
   해당 컨텐츠 타입의 편집 링크를 눌러 Workflow settings 항목을 보자.

   체크박스 Enable Autosave to add/edit forms for this node type 가 있을 것이다.
   이를 체크하고 컨텐츠 타입 저장하면 설정 완료.

4. 이후에 해당 컨텐츠 타입을 새로 작성하거나 편집하면, 화면 아래 좌측에
   Form autosaved. 라는 메시지가 살짝 보인다. (잠시 후 사라짐)

5. 문제가 발생(위에서 언급했던 3가지 종류 등등)한 순간,
   해당 글을 다시 폼을 열어 작성하기 시작하면, (아직 저장되지 않았기에)
  
   This form was autosaved on 해당날짜 00:18  [View] [Ignore]
   라는 안내 메시지가 보인다. [View]링크를 선택하면, 짜잔 하고
   이전에 작성하다 사라져 버린 글이 폼에 나타나 복원된다.

   그 이후에 보이는 Reset Ignore Keep 링크는 말그대로,
   "원래대로"  "무시"  "유지"(복원한 채로) 역할을 수행한다.

아쉽게도... 실제 써 보면 5, 6번 중 한 번은 저장에 실패하는 경우가 있었다.
(지독한 테스트 : 브라우저에서 폼 열고 글 쓰던 도중에 프로세스를 강제로 죽임)

자동 저장의 주기만 잘 맞춰주면 아주 애 먹지는 않고 안정적으로 글을 기억해 주기에는 무방해 보인다.

그리고 아래에는 여타 비슷해 보이는 모듈들이다.
자세히 보지는 못했고 이번 목적에서 벗어난 것들이거나 복잡한 것들이었다.

http://drupal.org/project/draft

The Draft module provides the ability too create drafts of existing nodes as well as new nodes before you have saved them.

The module utilizes the jquery.fields plugin to serialize all of the information and then the information is stored in a database row serialized.

The module provides the ability to autosave the content without the user having to hit the Save as Draft button on the form.

http://drupal.org/project/save_as_draft
노드를 공개하기 전에 위임자를 통해 검증하기 좋은 모듈?

This module is very similar to Revision Moderation, and uses much of the code therein. The major difference is that instead of a moderater releasing the 'future' revision, any user with appropriate permissions can do this.

This effectively allows the user to save their work as a 'draft' until they are sure that they want to commit/publish the changes and make them live. The term 'draft' is merely a unique revision, a future revision of a node.

http://drupal.org/project/revision_moderation/

http://drupal.org/project/save_draft

Save Draft adds a 'Save as Draft' Button to the node_form for content types, allowing the user to click the 'Save as Draft' button to save the node as a draft.

http://drupal.org/project/zeroclipboard
클립보드를 활용하는 모듈.
특정 영역의 글이나 링크를 버튼 하나로 간편하게 클립보드에 넣어주는 모듈이다

This module is a wrapper for a Javascript library called Zero Clipboard, which allows content to be copied to a user's clipboard, when a specific area of the page is clicked on.

http://drupal.org/project/clipboard

클립보드에 작성 중 글을 보관하는 방법도 좋지만, 한 단계 업그레이드해서 노드 전체를 기억해 주니까 Autosave로 낙점. 게다가 zeroclipboard 는 작성/편집 중 보관 목적보다는, 특정 영역의 글이나 링크를 버튼 하나로 간편하게 클립보드에 넣어주는 모듈이다. 이처럼 버튼을 한 번 눌러 주어야 한다는 점이 이번 문제해결 목적에서 다소 미진해 보였다.

Your rating: None 평균 : 5 (2 votes)

댓글

참고 사항인데, 위 모듈을 이용한 안전대책과 아울러

참고 사항인데, 위 모듈을 이용한 안전대책과 아울러 OS자체에서 클립보드 히스토리를 기억해 두면 더욱 더 든든하다.

관련 툴로는,

on [Mac]
- Clyppan
- Jumpcut
- Flycut
- ClipMenu
...
http://superuser.com/questions/17200/how-do-i-view-my-clipboard-history-...

on [Windows]
- Clipdiary
...

늘 하는 이야기이지만, 이러한 툴들은 역사가 오래됐다. 새로운 발견인 양 호들갑 떨지 않으면서 안내해 드린다. (Windows 95 시절에도 있었는데, 그 전에도?)