'동시 편집'에 해당되는 글 1건

  1. 2009.05.06 미디어위키(Mediawiki) Ajax Show Editors

여러 사용자가 동시에 사용할 가능성이 있는 게시판을 사용하다 보면 생기는 문제가 있다. 바로 동일한 글을 여러 사람이 동시에 편집하다 보면, 누군가가 힘들여 편집한 글이 날아가는 문제점이다.

 

게시판 프로그램은 댓글형식으로 설계되었으니 그렇다 치고, 위키(wiki)는 더욱 문제이다. 물론 미디어위키에서는 history(역사)기능으로 차이점을 비교해서 결국 살려낼 수 있기는 하겠지만, 동시에 다른 누군가가 자신과 같은 페이지를 편집하고 있는 지 미리 알 수 있다면 더욱 더 도움이 될 것이다.

 

이런 때 쓸 수 있는 것이 미디어위키(mediawiki) 의Ajax Show Editors Extension 이다.

 

참고링크: http://www.mediawiki.org/wiki/Extension:Ajax_Show_Editors

 

1. 자신이 사용하고 미디어위키(mediawiki) 버전에 따라 파일을 다운로드한다.

debian:~/temp$ wget http://upload.wikimedia.org/ext-dist/AjaxShowEditors-MW1.14-r45265.tar.gz
--11:20:51--  http://upload.wikimedia.org/ext-dist/AjaxShowEditors-MW1.14-r45265.tar.gz
           => `AjaxShowEditors-MW1.14-r45265.tar.gz'
Resolving upload.wikimedia.org... 208.80.152.3
Connecting to upload.wikimedia.org|208.80.152.3|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25,249 (25K) [application/x-tar]

100%[======================================================================================>] 25,249        36.27K/s

11:20:52 (36.19 KB/s) - `AjaxShowEditors-MW1.14-r45265.tar.gz' saved [25249/25249]

debian:~/temp$ tar -xvzf AjaxShowEditors-MW1.14-r45265.tar.gz
AjaxShowEditors/
AjaxShowEditors/AjaxShowEditors.css
AjaxShowEditors/AjaxShowEditors.i18n.php
AjaxShowEditors/AjaxShowEditors.js
AjaxShowEditors/COPYING
AjaxShowEditors/Hooks.php
AjaxShowEditors/Load.php
AjaxShowEditors/README
AjaxShowEditors/Response.php
AjaxShowEditors/patch-editings.pg.sql
AjaxShowEditors/patch-editings.sql

 

2. mediawiki의 extensions 하위 디렉토리로 AjaxShowEditors 디렉토리를 복사한다.

 

3. 데이터베이스 종류에 따른 패치를 적용한다.

  대부분 MySQL을 사용하고 있을 것이다. 이 경우 패치적용할 파일이름은 patch-editings.sql 이다.

debian:~/temp$ mysql -u root -pxxxx
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 194521
Server version: 5.0.32-Debian_7etch8-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mediawiki;                           <==반드시 wiki데이터베이스를 선택    
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> CREATE TABLE /*$wgDBprefix*/editings (
    ->   `editings_page` int(8) NOT NULL,
    ->   `editings_user` varchar(255) NOT NULL,
    ->   `editings_started` char(14) NOT NULL,
    ->   `editings_touched` char(14) NOT NULL,
    ->   PRIMARY KEY  (`editings_page`,`editings_user`),
    ->   KEY `editings_page` (`editings_page`),
    ->   KEY `editings_page_started` (`editings_page`,`editings_user`,`editings_started`)
    -> ) TYPE=MEMORY;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

 

4. LocalSettings.php 를 편집하여 다음 한 줄을 추가한다.

 

require_once("extensions/AjaxShowEditors/Load.php");

 

5. 한글이 나오게 하기 위해서는 다음파일을 편집하여 다음 내용을 적당한 곳에 삽입한다.

 

debian:$ vi extensions/AjaxShowEditors/AjaxShowEditors.i18n.php

$messages['en'] = array(
        'ajax-se-desc'             => '동일한 문서를 편집하고 있는 사용자를 보여줌',
        'ajax-se-title'            => '편집 시작 시간:',
        'ajax-se-pending'          => '상태 새로고침 대기중… (여기를 클릭하거나 편집을 시작하세요.)',
        'ajax-se-idling'           => '($1초 전)',
        'ajax-se-pagedoesnotexist' => '문서가 존재하지 않습니다.',
        'ajax-se-userinvalid'      => '에러: 유효하지 않은 사용자',
        'ajax-se-usernotfound'     => '에러: 존재하지 않는 사용자',
);

 

6. 다 완료하였다면 편집창에서 다음과 같은 박스가 뜨는 것을 볼 수 있다. 동시에 누군가 문서를 편집하고 있다면 사용자가 표시되는 것은 물론이다.

주1) 당연히 $wgUseAjax = true; 로 설정되어 있어야 한다. 제대로 동작하지 않는다면 LocalSettings.php를 다시 한번 확인한다.

주2) 비슷한 기능을 하는 EditWarning 이라는 Extension 도 있다.

참고링크: http://www.mediawiki.org/wiki/Extension:EditWarning

 

 

Posted by novice9

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
이 블로그는 삽질을 기록하는 곳입니다. ^_^
novice9
텍스트큐브,티스토리 검색

달력

 « |  » 2018.08
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

최근에 받은 트랙백

글 보관함

Yesterday15,788
Today12,013
Total4,294,564