미디어 위키를 운영하면 누가 어떤 활동을 하는 지, 어떤 페이지를 편집했는지 알고 싶을 때가 있다.

 

사용자 개별로는 특수문서의 사용자기여 항목에서 계정이름을 입력하여 찾기를 하면 된다.

 

그렇지만 전체 사용자에 대해서 비교해 보기는 어렵게 되어 있다.

 

그렇게 하기 위해서는 Contribution Scores 라는 Extension을 추가하면 된다.

 

1. 다음  URL에서 자신의 wiki버전에 맞는 파일을 다운로드받는다.

http://www.mediawiki.org/wiki/Special:ExtensionDistributor/ContributionScores

 

2. 다운로드 받은 파일을 압축해제한다.

 

3.미디어위키의 extensions 디렉토리 하위에 ContributionScores 디렉토리로 파일을 복사한다.

 

4. LocalSettins.php 파일을 열어 다음 내용을 추가한다.

 

require_once( "$IP/extensions/ContributionScores/ContributionScores.php" );
 
$wgContribScoreIgnoreBots = true;          // Exclude Bots from the reporting - Can be omitted.
$wgContribScoreIgnoreBlockedUsers = true;  // Exclude Blocked Users from the reporting - Can be omitted.
$wgContribScoreDisableCache = false;       // Set to true to disable cache for parser function and inclusion of table
 
//Each array defines a report - 7,50 is "past 7 days" and "LIMIT 50" - Can be omitted.
$wgContribScoreReports = array(
    array(7,50),
    array(30,50),
    array(0,50));

 

5. 그리고 나서 특수문서 목록을 보면 다음과 같은 항목이 생성되어 있다.

 

6. 볼 수 있는 내용은 다음과 같다. 사용자들 거의 전부가 내용은 보는데, 편집자는 거의 없다.


PS) 개인별로 어떤 페이지를 관심있어 하는 지, 혹은 어느 내용을 가장 많이 찾아보는지는 위의 확장(Extension)으로는 알 수 없다. 그렇게 하려면 다음과 같은 beta Extension을 설치하여야 한다. beta이므로 잘 될 것이라고 보장할 순 없다.

 

Extension:UserPageViewTracker

 

이 익스텐션은 DB의 table도 하나 추가해야 한다. 관심있는 분은 사용해 보시길

Posted by novice9

댓글을 달아 주세요

미디어위키에서 어느 정도크기 이상의 파일을 업로드 하면 다음과 같은 오류가 생기는 것을 볼 수 있다.


============한글 에러메세지==============

올리기 오류


당신이 올린 파일이 빈 파일입니다. 파일명을 잘못 입력했을 수도 있습니다. 다시 한 번 확인해 주시기 바랍니다.
파일을 올리기 위해서는 아래의 양식을 채워주세요. 파일 목록에서 이전에 올라온 파일을 찾을 수 있습니다. 올리기 기록에는 파일이 올라온 기록이 남습니다. 삭제 기록은 삭제 로그에서 볼 수 있습니다.

사용자 삽입 이미지

============영문 에러메세지==============

Upload error


The file you uploaded seems to be empty. This might be due to a typo in the file name. Please check whether you really want to upload this file.
Use the form below to upload files. To view or search previously uploaded files go to the list of uploaded files, (re)uploads are also logged in the upload log, deletions in the deletion log.
To include a file in a page, use a link in one of the following forms:

 


 

메타위키를 참고하여 uploadtmp 폴더를 생성한 후(group 권한을 www-data로 수정) php.ini을 다음과 같이 수정하였다.
 

=======================/etc/php5/apache2/php.ini=============================
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /home/userid/public_html/wiki/uploadtmp  <=적당한 디렉토리명을 설정
; Maximum allowed size for uploaded files.
upload_max_filesize = 800M

주1) tmp폴더를 이렇게 지정한 이유는 동일 하드디스크내에 tmp폴더를 만들기 위해서이다. 즉 wiki 의 root폴더가 개인 계정 밑에(userid) 있다.

주2) 이 팁은 php와 Apache 서버의 설정이 정상적인 경우(파일 업로드 관련 설정 제한)일 경우다. 위와 같은 메세지가 아닐 경우는 APM관련 설정을 보아야 한다.

Posted by novice9

댓글을 달아 주세요

미디어위키의 기본설정으로는 확장자가 svg 인 이미지포맷은 지원하지 않는다. 정상적인 화면을 보기위해서는 다음과 같이 하여야 한다. 내 경우는 ImageMagick은 이미 설치돼 있다.

 그리고 SVG 이미지에 글자가 포함된 경우에 이유는 정확히는 모르겠지만, 썸네일파일 생성오류를 막기위해 2번의 gsfonts 패키지도 필요하였다.

1. 다음을 추가

=============LocalSettings.php================

$wgFileExtensions[] = 'svg';
$wgAllowTitlesInSVG = true;
==============================================

 2. 폰트 추가

debian# apt-get install gsfonts
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  gsfonts
0 upgraded, 1 newly installed, 0 to remove and 74 not upgraded.
Need to get 4648kB of archives.
After unpacking 6373kB of additional disk space will be used.
Get:1
http://ftp.kr.debian.org etch/main gsfonts 1:8.11+urwcyr1.0.7~pre41-1 [4648kB]
Fetched 4648kB in 1s (2463kB/s)
Selecting previously deselected package gsfonts.
(Reading database ... 31588 files and directories currently installed.)
Unpacking gsfonts (from .../gsfonts_1%3a8.11+urwcyr1.0.7~pre41-1_all.deb) ...
Setting up gsfonts (8.11+urwcyr1.0.7~pre41-1) ...
(Re-)registering PostScript fonts...
done.

3. ImageMagick 설치

debian# apt-get install imagemagick

Posted by novice9

댓글을 달아 주세요

1. FCKeditor 툴바에서 글자 색상변경 버튼 추가하기          <=기본설정상으론 나타나지 않는다.

wiki_root/extensions/FCKeditor/fckeditor_config.js 를 편집

//      ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
        ['Link','Unlink','Anchor'],
//      ['TextColor','BGColor'],                                      <==앞에 코멘트 처리를 삭제한다.
        ['FitWindow','-','About']


2. wikitext editor 와 FCKeditor 전환(Rich editor/Disable Rich editor 메뉴 보이기)

사용자환경설정/기타 를 선택
Use toggle to switch between wikitext and rich editor (replace textarea with rich editor) 를 선택

참고) 그 외 Start with rich editor disabled 를 선택해 놓으면 기본적으로는 wiki text 에디터를 사용할 수 있다. 즉 필요할 때만 FCKeditor로 전환하여 사용가능하다.


Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)에서 쓰고 있는 기본폰트를 변경하기 위해서는 다음과 같이 하면 된다.

 

MediaWiki:Common.css 문서를 찾기한다. 문서가 생성되지 않았다면 기본설정대로 쓰고 있는 것이다.  이 때 문서를 다음과 같이 생성한다.

/** 이 CSS 설정은 모든 스킨에 적용됩니다 */
* {
  font-family: 돋움체;       
}

<= 물론 다른 글자체도 가능하며, **체로 끝나는 글자체를 선택하여 영문사용시 고정폭이 유지되도록 했다.

 단, 이 문서를 변경하면 모든 사용자에게 변경사항이 적용되며, 다음과 같은 주의사항을 볼 수 있다.

 참고 - 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 갱신해야 합니다.모질라 / 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R 을 입력 (매킨토시에서는 Command-R); 컨커러: 새로고침을 클릭하거나 F5를 입력; 오페라: 도구→설정에서 캐시를 비움; 인터넷 익스플로러: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.

Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)를 사용하다 보니, 주로 부닥치는 문제가 위키 문법을 새로 배워야 한다는 사실 때문에 발생된다.

 

여기에 기존의 게시판 프로그램을 덧붙이면 약간의 도움이 될까 싶어서, 위키와 연동되는 게시판을 찾아보게 되었다.


너무 마음에 드는 프로그램은 IPB 라는 게시판 프로그램이다. 그렇지만 상용인 관계로.....


그외에 Extension  매트릭스를 찾아보면, 프리웨어로 쓸 수 있는 프로그램이 몇 개 눈에 띈다.

 

그중에서 AWC Forum 이 상당히 깔끔하고, 안정화(stable) 버전으로 표시되어 설치해 보기로 했다.


1. 다운로드           <==잠시 회원가입이 필요하다.^_^

 

2. 다운로드 받은 파일을 폴더에 맞게 풀어놓는다.


3. LocalSettings.php 에 다음과 같이 추가한다. 홈페이지의 설정에 따른 PATH에 약간의 수정이 필요할 수 있다.

require_once( "$IP/includes/DefaultSettings.php" );
require_once( "$IP/extensions/awc/forums/awc_forum.php" );

 

 4. 왼쪽 사이드바(Sidebar)에서 "특수 문서 목록(Special Pages)" 을 클릭하여 아래쪽을 보면 새로운 링크가 추가되어 있다. 이것을 클릭하면 Extension을 추가하기 시작한다.


5. 왼쪽 사이드바에 메뉴를 추가하기 위해서 MediaWiki:Sidebar 페이지를 열어 한 줄을 적당한 곳에 추가한다.

**Special:AWCforum|게시판

Posted by novice9

댓글을 달아 주세요

이 익스텐션(Extension)은 미디어위키(Mediawiki)에서 문서에 대한 주시(Watch)설정 여부의 변화를 로그로 남기는 기능이다.

 

사용자들의 관심사항을 알고자 추가했다.

 

다른 익스텐션을 추가한 적이 없다면 다음과 같이 한다.

 

====처음 설치====

 

1. channel-discover  <==물론 pear패키지가 설치되어 있지 않다면 먼저 설치하여야 한다. 데비안에는 php-pear패키지를 설치한다.

debian:/# pear channel-discover mediawiki.googlecode.com/svn

 

2. stubmanager 설치

debian:/# pear install mediawiki/stubmanager

 

3. WatchLog 설치

debian:/# pear install mediawiki/WatchLog

 

4. LocalSettings.php 편집

require 'MediaWiki/WatchLog/WatchLog.php';


====추가 설치시====

추가 설치시에는 여러가지 에러를 만날 수 있다.

 

1. pear패키지의 cache 를 clear 시킨다.

debian:/# pear clear-cache

 

2. 현재의 stubmanager가 버전이 낮다면 다음과 같이 업그레이드하여야 한다.

debian:/# pear upgrade mediawiki/stubmanager
mediawiki/StubManager requires PEAR Installer (version >= 1.6.2), installed version is 1.4.11
No valid packages foundupgrade failed

 

3. 위와 같은 에러메세지가 발생되어 업그레이드가 실패한다면 다음과 같이 한다.

debian/# pear upgrade PEAR
Did not download optional dependencies: pear/XML_RPC, use --alldeps to download automatically
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
downloading PEAR-1.7.2.tgz ...
Starting to download PEAR-1.7.2.tgz (302,744 bytes)
........................................done: 302,744 bytes
downloading Archive_Tar-1.3.2.tgz ...
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
...done: 17,150 bytes
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
...done: 30,947 bytes
downloading Console_Getopt-1.2.3.tgz ...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
...done: 4,011 bytes
upgrade ok: channel://pear.php.net/Console_Getopt-1.2.3
upgrade ok: channel://pear.php.net/Structures_Graph-1.0.2
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.2
upgrade ok: channel://pear.php.net/PEAR-1.7.2
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

 

4. 업그레이드 재시도

debian:# pear upgrade mediawiki/stubmanager
downloading StubManager-1.3.2.tgz ...
Starting to download StubManager-1.3.2.tgz (11,921 bytes)
.....done: 11,921 bytes
upgrade ok: channel://mediawiki.googlecode.com/svn/StubManager-1.3.2

5. WatchLog 설치

debian:/# pear install mediawiki/WatchLog
downloading WatchLog-1.0.0.tgz ...
Starting to download WatchLog-1.0.0.tgz (2,329 bytes)
....done: 2,329 bytes
install ok: channel://mediawiki.googlecode.com/svn/WatchLog-1.0.0

 

6. LocalSettings.php편집하여 한 줄 추가

require 'MediaWiki/WatchLog/WatchLog.php';


주) 그럼에도 불구하고 아무도 이 기능을 사용하는 사람이 없다.

Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)에서 다음과 같은 각주기능을 사용하기 위해서는 Cite 익스텐션을 설치하여야 한다. 위키백과(Wikipedia)에서는 주로 References(참조) 항목을 편집하기 위해 사용한다.  

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

==실제 위키태그로 사용예==

다음 링크에서 최신 버전을 다운로드 받는다.

http://www.mediawiki.org/wiki/Special:ExtensionDistributor/Cite

위키 설정파일에 다음 한 줄을 추가한다.

====LocalSettings.php=========

require_once('extensions/Cite/Cite.php');

==============================

실제 사용은 위의 사용예의 그림처럼 <ref> </ref> 태그 쌍과 <references /> 태그를 이용하여 한다. 

원문은 아래와 같다.
http://www.mediawiki.org/wiki/Extension:Cite

Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)에도 문법강조를 위해서 추가할 수 있는 여러 확장(Extension)들이 있다. 대부분 Generic Syntax Highlighter(줄여서 GeSHi)라고 불리는 문법강조기(?)를 위키에서 사용할 수 있도록 만든 것이다. GeSHi에 대해서는 다음 홈페이지에서 참고할 수 있다.



이 GeSHi를 미디어위키에 사용할 수 있도록 만든 Extension들은 다음과 같은 것들이다.(stable버전으로 표시되는 것들중 일부이다.) 물론 위의 GeSHi와는 별도로 설치되어야 한다.

http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi

http://www.mediawiki.org/wiki/Extension:GeSHiCodeTag

http://www.mediawiki.org/wiki/Extension:Geshi


이 중에서 SyntaxHighlight_GeSHi 는 미디어위키 홈페이지에서 사용되고 있는 만큼 차후 호환성 문제가 뛰어난 것 같아, 선택을 했다.

설치순서는 다음과 같다.(2009년 3월 3일 현재)

1.  svn이 설치되어 있지 않다면 설치를 한다. 

debian:# apt-get install subversion
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  libneon26 libsvn1
Suggested packages:
  subversion-tools db4.4-util
The following NEW packages will be installed:
  libneon26 libsvn1 subversion
0 upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Need to get 1739kB of archives.
After unpacking 5014kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://ftp.kr.debian.org etch/main libneon26 0.26.2-4 [119kB]
Get:2 http://ftp.kr.debian.org etch/main libsvn1 1.4.2dfsg1-2 [593kB]
Get:3 http://ftp.kr.debian.org etch/main subversion 1.4.2dfsg1-2 [1027kB]
Fetched 1739kB in 2s (788kB/s)
Selecting previously deselected package libneon26.
(Reading database ... 31999 files and directories currently installed.)
Unpacking libneon26 (from .../libneon26_0.26.2-4_i386.deb) ...
Selecting previously deselected package libsvn1.
Unpacking libsvn1 (from .../libsvn1_1.4.2dfsg1-2_i386.deb) ...
Selecting previously deselected package subversion.
Unpacking subversion (from .../subversion_1.4.2dfsg1-2_i386.deb) ...
Setting up libneon26 (0.26.2-4) ...

Setting up libsvn1 (1.4.2dfsg1-2) ...

Setting up subversion (1.4.2dfsg1-2) ...




2. wiki의 root 폴더 밑에서 다음과 같이 폴더 위치로 이동하여 설치한다.  

debian$ cd extensions

debian$ svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

A    SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php
A    SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php
A    SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php
A    SyntaxHighlight_GeSHi/README
U   SyntaxHighlight_GeSHi

Fetching external item into 'SyntaxHighlight_GeSHi/geshi'
A    SyntaxHighlight_GeSHi/geshi/geshi
A    SyntaxHighlight_GeSHi/geshi/geshi/qbasic.php
A    SyntaxHighlight_GeSHi/geshi/geshi/oobas.php
--------------중략--------------

A    SyntaxHighlight_GeSHi/geshi/docs/api/classtrees_geshi.html
A    SyntaxHighlight_GeSHi/geshi/docs/api/index.html
A    SyntaxHighlight_GeSHi/geshi/docs/README
U   SyntaxHighlight_GeSHi/geshi
Checked out external at revision 1402.

Checked out revision 47969.

debian$ cd SyntaxHighlight_GeSHi

debian$ svn co http://geshi.svn.sourceforge.net/svnroot/geshi/branches/RELEASE_1_0_X_STABLE/geshi-1.0.X/src/ geshi

A    geshi/geshi/scilab.php
A    geshi/geshi/intercal.php
A    geshi/geshi/rebol.php
U    geshi/geshi/inno.php
A    geshi/geshi/modula3.php
A    geshi/geshi/avisynth.php
----------------중 략---------------

U    geshi/docs/api/todolist.html
U    geshi/docs/api/li_geshi.html
U    geshi/docs/api/blank.html
U    geshi/docs/api/classtrees_geshi.html
U    geshi/docs/api/index.html
A    geshi/docs/api/__filesource
A    geshi/docs/api/__filesource/fsource_geshi_core_geshi.php.html
A    geshi/docs/phpdoc.ini
U    geshi/docs/README
U   geshi
Checked out revision 2011.



 3. LocalSettings.php 에 다음 설정을 추가한다.

require_once("extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");



4.제대로 동작하지 않을 경우, 다음 링크의 Step.3 의 option설정을 할 필요가 있을 수 있다.


5. 실제 test code를 넣어 편집하여 제대로 보이는지 확인한다.

<source lang="tcl">

~~~~~~~~~코드를 여기에~~~~~~~~~

</tcl>

Posted by novice9

댓글을 달아 주세요

미디어 위키에서는 로그인 상태를 PHP의 설정대로 유지한다.

다시 말해 일반게시판 프로그램과 같이 php의 ini_set함수를 써서 임의로 변경하지 않는다.


php.ini 파일을 보면 기본값이 1440(24분)초 이다.


이 값을 그대로 놔둔 상태에서는 위키를 로그인했다가 다른 일을 하고 있으면, 조금 있다가 세션이 끊어져서 다시 로그인을 해야 한다.

그래서 다음과 같이 2시간 정도로 변경했다.

 

=========php.ini=======

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 7200

=====================


 만약 폴더별로 세션을 유지시간을 변경하고자 한다면, .htaccess 파일을 만들어 다음 내용이 들어가면 된다.  


========.htaccess=======

php_value session.gc_maxlifetime 7200

=====================

 <==그러나, 폴더별로 이렇게 하여 "분산 설정파일"을 사용하는 것은 보안상 권장 사항은 아니며, 데비안(Debian)의 아파치 기본설정으로는 다음과 같이 막혀있다. 해당 폴더의 설정이 다음과 같이 되어 있다면 .htaccess 파일을 사용할 수 없어 페이지가 아예 뜨지 않을 것이다.


 ======/etc/apache2/sites-enabled/000-default,/etc/apache2/apache2.conf===

AllowOverride None

=====================

Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)가 1.14.0 으로 버전업되면서 관리하고 있던 위키를 버전업하게 되었다....그런데 웬일!!!

편집버튼을 누르기만 하면 다음과 같은 에러 화면이 보이면서, 위키를 수정할 수 없었다.

Catchable fatal error: Argument 1 passed to Skin::setupUserCss() must be an instance of OutputPage, none given, called in /xxx/xxx/public_html/wiki/extensions/FCKeditor/FCKeditor.body.php on line 341 and defined in /xxx/xxx/public_html/wiki/includes/Skin.php on line 560

대강 FCKeditorMediawiki 1.14.0 버전의 충돌로 짐작을 하고,  사용자 환경설정 탭에서 FCKeditor를 기본적으로는 막았지만 소용없었다.

 
-----------LocalSettings.php----------------
#require_once( "extensions/FCKeditor/FCKeditor.php" );
#$wgUseAjax = true;
---------------------------------------------------
Posted by novice9

댓글을 달아 주세요

위키피디아(Wikipedia)의 좌측 Sidebar메뉴에서 Search 메뉴를 이용하여 아무 글자나 쳐보면 다음과 같은  리스트 박스가 열린다.
사용자 삽입 이미지

이 기능은 Search Suggest 라는 기능인데, 단어가 확실하지 않을 때 유용한 기능이 될 수 있다. 원래 이 기능은 mediawiki 1.13.0 이전에는 익스텐션으로 구현되었으나, 1.13.0 버전부터는 위키의 기본기능이 되었다. 그렇지만 이 기능을 사용하기 위해서는 다음 옵션을 켜 주어야 한다.

-----------LocalSettings.php---------------
    $wgEnableMWSuggest = true;
--------------------------------------------------

주: $wgUseAjax 옵션은 기본적으로 켜 주지 않아도 작동하는 데 문제가 없었다.
Posted by novice9

댓글을 달아 주세요

앞의 게시물에서 Search Suggest 기능 켜기에 대해서 이미 언급을 한 적이 있다. 그런데 이 기능을 켜더라도 위키피디아(Wikipedia)와 같이 대소문자에 상관없이 Search Suggest 가 작동되지는 않는다. 대소문자와 상관없이 기능이 작동되려면 TitleKey 익스텐션을 추가해야 한다.
http://www.mediawiki.org/wiki/Extension:TitleKey

1. 다음과 같이 TitleKey 를 설치한다.
    debian:wiki/extensions$ svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/TitleKey/
    A    TitleKey/TitleKey.php
    A    TitleKey/titlekey.sql
    A    TitleKey/rebuildTitleKeys.php
    A    TitleKey/README
    A    TitleKey/TitleKey_body.php
    A    TitleKey/titlekey.pg.sql
    A    TitleKey/TitleKey.i18n.php
    체크아웃된 리비전 48216.
2. 폴더가 생겼는지 확인한다.
    debian:~/public_html/wiki/extensions$ ls
    Cite  FCKeditor  README  StubManager  SyntaxHighlight_GeSHi  TitleKey  UserLoginLogoutLog  UserMerge  awc
    debian:~/public_html/wiki/extensions$ cd TitleKey/
3. 설치과정을 확인하기 위해 README 파일을 참고한다.
    debian:~/public_html/wiki/extensions/TitleKey$ more README
    This extension provides case-insensitive matches for a few points in
    MediaWiki's functionality:
    * "go" exact title matches
    * Prefix-based searches in OpenSearch (Firefox plugin) and internal AJAX searches
    It does not provide complete case-insensitivity for title linking within the wiki.

    == Database schema ==
    A 'titlekey' table is added to the wiki's database, which maintains a case-folded
    copy of each page's title. This is then binary-indexed for matching and sorting.
    The table must be present for the wiki to function once the extension is enabled,
    and it must be populated for the title match functions to pick up matches.

    == Installation ==
    To enable the extension, add the following line to your LocalSettings.php file:
      include "$IP/extensions/TitleKey/TitleKey.php";

    You must then create and populate the new database table.
    The easiest way to do this is to run MediaWIki's standard updaters:
      php maintenance/update.php

    If you do not have command-line access to your server, you can manually
    apply the titlekey.sql file's commands to your database (check for proper
    table prefix, etc).

    == Repopulating the titlekey table ==
    The titlekey table can be repopulated by hand by running the rebuildTitleKeys.php
    command-line script.

4. LocalSettings.php 를 편집하여 다음 줄을 추가한다.
    -------------
    include "extensions/TitleKey/TitleKey.php";
    -------------

5. wiki root 하위의 maintenance 폴더의 update.php를 다음과 같이 실행한다.
    debian:~/public_html/wiki$ php maintenance/update.php
    MediaWiki 1.14.0 Updater
    Going to run database updates for mediawiki
    Depending on the size of your database this may take a while!
    Abort with control-c in the next five seconds...0
    ...creating titlekey table...
    ...populating titlekey table...
    ... 1000...
    ... 1594 ok.
    ...have ipb_id field in ipblocks table.
    ...have ipb_expiry field in ipblocks table.
    ...already have interwiki table
    ...indexes seem up to 20031107 standards
    ...hitcounter table already exists.
    ...have rc_type field in recentchanges table.
    ...have user_real_name field in user table.
    ...querycache table already exists.
    ...objectcache table already exists.
    ...categorylinks table already exists.
    Already have pagelinks; skipping old links table updates.
    ...have rc_ip field in recentchanges table.
    ...image primary key already set.
    ...have rc_id field in recentchanges table.
    ...have rc_patrolled field in recentchanges table.
    ...logging table already exists.
    ...have user_token field in user table.
    The watchlist table is already set up for email notification.
    ...watchlist talk page rows already present
    ...user table does not contain old email authentication field.
    ...page table already exists.
    ...have log_params field in logging table.
    logging table has correct log_title encoding.
    ...have ar_rev_id field in archive table.
    ...have page_len field in page table.
    revision timestamp indexes already up to 2005-03-13
    ...rev_text_id already in place.
    ...have rev_deleted field in revision table.
    ...have img_width field in image table.
    ...have img_metadata field in image table.
    ...have user_email_token field in user table.
    ...have ar_text_id field in archive table.
    ...page_namespace is already a full int (int(11)).
    ...ar_namespace is already a full int (int(11)).
    ...rc_namespace is already a full int (int(11)).
    ...wl_namespace is already a full int (int(11)).
    ...........................................
Posted by novice9

댓글을 달아 주세요

미디어위키가 1.14.0 이 되면서 FCKeditor와 문제가 생긴 것은 이미 앞의 게시물에서 언급한 적이 있다. 오늘 확인해 보니 나름대로 해결된 패치버전이 올라온 모양이다. 설치해보니 에러가 발생되지 않는다. 물론 사소한 문제가 있긴 하지만, 전에도 있던 문제라....

만약 미디어위키 1.14.0 에서 FCKeditor를 사용해야 한다면, 다음 링크를 참고하여 다시 설치를 해야 한다. 참고로 아직은 SVN에 포함되진 않는 모양이다.

http://www.mediawiki.org/wiki/Extension:FCKeditor_(by_FCKeditor_and_Wikia)

다운로드는 여기에서 받아야 한다.

http://rapidshare.com/files/205304883/FCKeditor.zip


전의 글:

by notes | 2009/05/19 15:44

미디어위키(Mediawiki)가 1.14.0 으로 버전업되면서 관리하고 있던 위키를 버전업하게 되었다....그런데 웬일!!! 편집버튼을 누르기만 하면...


Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)에는 사이트를 유지보수(Maintenance) 할 수 있는 스크립트들이 포함되어 있는데, 가끔 Extension들을 추가하다 보면 사용할 때가 있다. 다음 페이지에서는 이 유지보수용 스크립트들의 리스트들을 포함하고 있다.

 http://www.mediawiki.org/wiki/Manual:Maintenance_scripts

 이 중에서 쓸만한 스크립트들이 몇 개 눈에 띈다.

deleteOldRevisions.php <= 지나간 버전의 문서를 삭제한다.

removeUnusedAccounts.php <= 사용하지 않은 계정을 삭제한다. 한번도 편집을 하거나 파일을 올리지 않았다는 의미다.

update.php <= DB를 업데이트한다. 이 스크립트를 TitleKey Extension을 추가할 때 한번 사용한 적이 있다.

changePassword.php <= 사용자 패스워드를 변경한다. 패스워드를 분실했을 때 사용가능 할 것 같다.

rebuildtextindex.php <= 검색 인덱스를 재구성한다.

이 밖에도, 용도를 짐작하기 어려운 많은 스크립트가 있다. 아직도 길은 멀고 험하다. ^_^

Posted by novice9

댓글을 달아 주세요

처음에 미디어위키(Mediawiki)를 데비안(Debian)서버에서 사용할 때는 잘 모르기도 했고, 그 전에 다른 환경에서 넘어오는 게시판들이 같이 동작해야 했기 때문에, 동작되는 것을 최우선으로 설정을 하였다.


다른 게시판들은 WEB서비스환경이 euc-kr 환경에서 넘어왔고, 미디어위키는 utf-8 이었기 때문에, 솔직히 자신이 없었다. 하지만, 지금까지 쓰던 미디어위키를 내 개인 노트북(Notebook)에서 쓰고 싶어지면서, 비전문가인 나로서는 삽질 밖엔 대안이 없었다.

 

그 결과 데비안서버에서 작동하고 있는 미디어위키의 Mysql은 latin1 을 기본값으로 가지고 있고, 내부에서 사용하는 캐릭터셋은 utf-8이라는 것을 알게 되었다. 결과적으로 아래 그림과 같은 환경이라는 말이었다.


 

그래서 XP에서도 똑같은 환경으로 만들어 주면, 별 지장없이 동작할 것이므로 똑같이 만들어 주고 백업받은 DB를 넣어 주었다.


물론 이 때에는 내가 모르는 몇 가지 사항이 더 있었지만, 결과적으로 잘 동작했다. 데비안에서 DB를 백업받는 명령은 다음과 같다.

 

 # mysqldump -u wikiuser -p wikidb --default-character-set=latin1 > wikidb_latin1.sql

 # mysqldump -u wikiuser -p wikidb --default-character-set=utf8 > wikidb_utf8.sql

 

주) 위 두가지의 백업파일을 모두 사용가능하였다. 그런데, latin1으로 백업받은 파일은 한글이 잘 보이지만(putty 를 utf8로 설정할 경우), utf8로 백업받은 파일은 한글이 깨져 보였다.

 

C:\Windows\my.ini 의 다음 줄을 찾아 euckr이 기본 캐릭터셋으로 지정되어 있는 것을 코멘트 처리해 주었다.(RWAPM의 경우)

 

#default-character-set=euckr

skip-character-set-client-handshake

 

그리고 나서 mysql를 재시작하고 다시 캐릭터셋지정을 확인해 보면 다음과 같다. 물론 latin1으로 지정하여도 같은 결과가 나올 것이다. 이것은 mysql을 컴파일할 때, 기본 옵션을 그렇게 지정했기 때문이란다.


 

XP에 미디어위키를 설치하는 것은 다른 게시물을 참고하면 된다. 설치할 때 만들어진 DB에 다음과 같은 명령으로 데이터를 복구하면 된다.

 

 주) 이 방법대로 하려면 DB를 latin1으로 만들어야 하므로 collation도 latin1_swedish_ci 를 선택하여야 할 것이다.



주) 내 경우에는 mysql의 초기값이 데비안 기본값인 latin1 으로 설정되어 있었다. 그러나, 미디어위키의 DB데이터 자체는 utf-8로 되어있어, 이전할 때 iconv 를 사용할 필요는 없었다.

 

물론 위의 내용은 기본값 latin1 이던 DB를 그대로 옮겨와서 사용하기 위한 것이다. 미디어위키를 신규로 설치할 경우는  미디어위키 XP에 처음 설치하기-DB설정(RWAPM) 를 참고하라.



Posted by novice9

댓글을 달아 주세요

이번엔 또 미디어위키(Mediawiki)를 쓰다가, utf-8 과 euc-kr의 캐릭터셋간의 문제로 고민하는 게시물들을 많이 읽게 되었다. 나 또한 지금까지의 작업결과를 잃고 싶지는 않았으므로, 또다시 새로운 시도를 하기 시작했다. 데비안(Debian) 서버에서 돌고 있는 미디어위키 DB(latin1)를 XP로 이전하면서 utf8로 전환하는 것이었다. 물론 나중에 데비안에서도 utf8로 전환할 것을 염두에 둔 것이었다.

 

Mysql DB생성방법과 XP에 미디어위키 설치하는 방법은 이미 게시물이 있으므로 언급하지 않고 DB백업만을 설명한다.

 

1. 먼저 데비안에서 DB를 백업받는다. 이 경우는 안전하게 latin1으로 받도록 했다. (utf8로 받아서 되는지는 확인하지 않았다.)

 

  # mysqldump -u wikiuser -p wikidb --default-character-set=latin1 > wikidb_latin1.sql

        <= 이렇게 하면 실제 백업데이타 속의 한글데이타의 캐릭터셋은 utf8이다.

 

2. 백업파일을 열어서 latin1을 utf8로 치환한다.

 

3. 백업파일에서 다음 줄을 숫자를 찾아서 오른쪽에 있는 값으로 수정한다. 이렇게 하지 않으면 에러가 생겨 DB를 복구할 수 없다.

 주) 아직 이해가 안 가는 것은 미디어위키설치에서는 에러 없이 만들어지는 table들이 백업복구시에는 에러메시지를 토해 낸다는 것이다. T_T

 ---------------------DUMP 파일 수정(미디어위키 1.13.2 의 경우)--------------------------

=====87===========
CREATE TABLE `categorylinks` (
  `cl_from` int(8) unsigned NOT NULL default '0',
  `cl_to` varchar(255) character set utf8 collate utf8_bin NOT NULL default '', 
<==200
  `cl_sortkey` varchar(86) character set utf8 collate utf8_bin NOT NULL default '',
  `cl_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_sortkey` (`cl_to`,`cl_sortkey`,`cl_from`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
====319,321========
CREATE TABLE `job` (
  `job_id` int(9) unsigned NOT NULL auto_increment,
  `job_cmd` varchar(255) NOT NULL default '',  
<==100
  `job_namespace` int(11) NOT NULL,  
<==100
  `job_title` varchar(255) character set utf8 collate utf8_bin NOT NULL,
  `job_params` blob NOT NULL,
  PRIMARY KEY  (`job_id`),
  KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
===536,537=========
CREATE TABLE `page_restrictions` (
  `pr_page` int(8) NOT NULL,
  `pr_type` varchar(255) NOT NULL, <==100
  `pr_level` varchar(255) NOT NULL, 
<==100
  `pr_cascade` tinyint(4) NOT NULL,
  `pr_user` int(8) default NULL,
  `pr_expiry` char(14) character set utf8 collate utf8_bin default NULL,
  `pr_id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`pr_page`,`pr_type`),
  UNIQUE KEY `pr_id` (`pr_id`),
  KEY `pr_page` (`pr_page`),
  KEY `pr_typelevel` (`pr_type`,`pr_level`),
  KEY `pr_level` (`pr_level`),
  KEY `pr_cascade` (`pr_cascade`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

------------------------DUMP 파일 수정---------------------------------------------

 

4. DB가 정상적으로 복구되었으면 웹페이지를 띄워보면 된다.

Posted by novice9

댓글을 달아 주세요

내가 관리하고 있던 데비안(Debian)서버에 미디어위키(Mediawiki)를 설치하여 사용하던 중, 인터넷이 되지 않는 곳에서도 사용할 수 있도록 내 노트북에도 똑같이 서버를 유지하고 싶은 생각이 들었다. 노트북에서도 미디어위키를 사용하려면 다른 여러가지 방법이 있겠지만, 사용상의 편의로 XP에 APM환경을 구축하기로 했다.

 

사용할 수 있는 APM환경은 여러가지가 있었다.

 - 근사모: http://www.apmsetup.com/

 - RWAPM : http://kldp.net/projects/rwapm <=전에는 따로 개발자가 홈을 운영했는데, 지금은 보이지 않는다.

 - XAMPP: http://www.apachefriends.org/en/xampp.html 

 

이 중에서 한글환경구축도 기본적으로 되어 있고, 무엇보다도 레지스트리를 건드릴 필요없는 점이 마음에 들어 RWAPM을 사용하기로 했다.

 

== RWAPM_x86.exe 파일을 다운로드 하여 적당한 디렉토리에 압축을 풀어 놓는다. "로컬디스크 C" 밑이 아니라도 상관없다.  내 경우는 XP를 재설치시에도 데이터를 잃어버리지 않도록 D: 에 설치하였다. 이렇게 하면 "D:\RWAPM" 폴더가 생기고 그 밑에 파일들이 풀린다. 차후 WEB의 root 디렉토리는 D:\RWAPM\www 가 된다.

 

== D:\RWAPM\manual.txt 화일은 참고하여 다음과 같은 순서로 진행한다.

  1.  DIR-setup.bat 을 한번 실행하여 현재의 디렉토리로 설정이 지정된다.  

  2.  RWAPM-install.bat,MYSQL-install.bat 를 실행시킨다. 처음 설치시에만 필요하다.

  3.  브라우저를 열어 http://localhost 로 접속하면 웹페이지가 뜬다. 여기에서  mysql의 관리자 비밀번호를 변경한다.





  4. PHPMYADMIN 버튼을 클릭하여 root 권한으로 로그인한다. command line 모드가 편하다면 D:\RWAPM\DB\bin 폴더 밑에서 mysql -u root -p 명령을 입력하여도 된다.


 

 

5. 적당한 DB를 생성한다. DB생성에 관해서는 다른 게시물을 참고하라.

 

6. D:\RWAPM\www\index.php 를 다음에도 RWAPM에 쉽게 접근하게 하기 위해 적당한 이름으로 변경한다. 나는 index1.php로 변경했다.

 

7. http://www.mediawiki.org 홈에 접속해서 최근의 안정버전을 내려받는다. 이 글을 쓴 현재는 1.13.2 버전이 최신이다.

 

8. 내려받은 파일을 D:\RWAPM\www 폴더 밑에 풀어 놓는다. tar로 묶여 있다는 것을 주의하라.

 

9. 브라우저로 다시 http://localhost 로 접근하면 미디어위키 설치화면을 볼 수 있다. "set up the mediawiki" 를 클릭한다.

 

 

10. 다음과 같이 DB설정값, 위키사용자 ID/패스워드 를 설정하고 Install MediaWiki 버튼을 클릭한다.





 

11. 설치가 끝나면 D:\RWAPM\www\config 폴더에서 LocalSettings.php 를 상위폴더로 이동시킨다.


Posted by novice9

댓글을 달아 주세요

미디어위키(Mediawiki)를 사용하다 보니, 사용자별로 권한을 지정하거나, 로그인상태에서만 페이지가 보이게 하고 싶어졌다. 어디선가 이 설정을 복사해다 약간 고쳐썼던 것 같다. 다음 예제를 약간 고쳐서 LocalSettings.php에 추가한 후 사용하면 된다.

 

$wgShowIPinHeader = false; # For non-logged in users

 

// Implicit group for all visitors,로그인하지 않은 상태에서 권한을 제한한다.
$wgWhitelistRead = array("Main Page", "Special:Userlogin", "-", "MediaWiki:Monobook.css");
$wgGroupPermissions['*']['createaccount'] = true;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;


// Implicit group for all logged-in accounts,로그인상태이더라도, 그룹이 지정되지 않았을 경우 권한을 제한한다.
$wgGroupPermissions['user']['read'] = false;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['user']['createtalk'] = false;
$wgGroupPermissions['user']['move'] = false;
$wgGroupPermissions['user']['upload'] = false;
$wgGroupPermissions['user']['upload_by_url'] = false;
$wgGroupPermissions['user']['delete'] = false;
$wgGroupPermissions['user']['import'] = false;


// Permission to change users' group assignments, 권한제어를 bureaucrat 계정에서 할 수 있다.
$wgGroupPermissions['bureaucrat']['userrights'] = true;


// Group for all logged-in accounts who had their email confirmed and have been
// accepted as readers. wiki_reader 권한을 지정한다.
$wgGroupPermissions['wiki_reader']['read']            = true;
$wgGroupPermissions['wiki_reader']['edit']            = false;
$wgGroupPermissions['wiki_reader']['createpage']      = false;
$wgGroupPermissions['wiki_reader']['createtalk']      = true;
$wgGroupPermissions['wiki_reader']['move']            = false;
$wgGroupPermissions['wiki_reader']['upload']          = false;
$wgGroupPermissions['wiki_reader']['upload_by_url']   = false;
$wgGroupPermissions['wiki_reader']['delete']          = false;
$wgGroupPermissions['wiki_reader']['import']          = false;

 

// Group for all logged-in accounts who had their email confirmed and have been
// accepted as editors. wiki_editor 그룹에 대해 권한을 지정한다.
$wgGroupPermissions['wiki_editor']['read']            = true;
$wgGroupPermissions['wiki_editor']['edit']            = true;
$wgGroupPermissions['wiki_editor']['createpage']      = true;
$wgGroupPermissions['wiki_editor']['createtalk']      = true;
$wgGroupPermissions['wiki_editor']['move']            = true;
$wgGroupPermissions['wiki_editor']['upload']          = true;
$wgGroupPermissions['wiki_editor']['upload_by_url']   = true;
$wgGroupPermissions['wiki_editor']['delete']          = true;
$wgGroupPermissions['wiki_editor']['import']          = true;

 

// sysop 그룹의 권한을 제어한다.

$wgGroupPermissions['sysop']['read']            = true;
$wgGroupPermissions['sysop']['edit']            = true;
$wgGroupPermissions['sysop']['createpage']      = true;
$wgGroupPermissions['sysop']['createtalk']      = true;
$wgGroupPermissions['sysop']['move']            = true;
$wgGroupPermissions['sysop']['upload']          = true;
$wgGroupPermissions['sysop']['upload_by_url']   = true;
$wgGroupPermissions['sysop']['delete']          = true;
$wgGroupPermissions['sysop']['import']          = true;

 

$wgGroupPermissions['sysop']['protect']          = true;
$wgGroupPermissions['sysop']['block']          = true;
$wgGroupPermissions['sysop']['siteadmin']          = true;
$wgGroupPermissions['sysop']['rollback']          = true;

Posted by novice9

댓글을 달아 주세요

미디어 위키를 사용하다 보니 사용자 삭제 기능이 필요하게 되었다.

물론 삭제 전용 확장(Extension)도 있었지만, 삭제되는 사용자가 작성한 글이 어떻게 되야하는 지 등등의 문제 때문에 사용자를 합치는 익스텐션을 사용하기로 했다.

 

참고 URL은 아래와 같다.

http://www.mediawiki.org/wiki/Extension:User_Merge_and_Delete

 

- 4개 파일을 특정디렉토리로 다운로드하여 저장한다.(extensions/UserMerge)

 UserMerge_body.php
 UserMerge.alias.php
 UserMerge.i18n.php
 UserMerge.php

 

- LocalSettings.php 파일을 편집

 require_once( "$IP/extensions/UserMerge/UserMerge.php" );
 $wgGroupPermissions['bureaucrat']['usermerge'] = true;

 #optional - default is array( 'sysop' )
 $wgUserMergeProtectedGroups = array( 'groupname' );

 

- 이제 bureaucrat 권한을 가진 사용자 계정으로 로그인하면 Merge and Delete Users 메뉴가 보인다.

Posted by novice9

댓글을 달아 주세요

미디어위키에는 많은 확장(Extension)들이 있다. 그중에 하나가 사용자가 로그인/로그아웃했을 때 로그를 남기는 것이다.

이것은 두가지 방법으로 설치가능하다. 나는 그중에 UserLoginLogoutLog 란 익스텐션을 설치했다.

 

이것은 UserLoginLogoutLog 1.0.0 의 예이다.

 

* SVN을 통하여 설치 <= 이 방법은 부가적인 php-pear 패키지(PHP Extension)가 필요하다.

 

- UserLoginLogoutLog(StubManager extension에 의존성이 있음)

 

# pear channel-discover mediawiki.googlecode.com/svn
# pear install mediawiki/stubmanager
# pear install mediawiki/UserLoginLogoutLog

 

- LocalSettings.php에 다음 행을 추가하여야 한다.

 

require 'MediaWiki/StubManager/StubManager.php';
require 'MediaWiki/UserLoginLogoutLog/UserLoginLogoutLog.php';

 

- 로그를 남기기 위해 사용자(WikiAgent) 추가

 

* 수동설치  <==XP에 미디어위키가 설치되어있을 경우는 이 방법을 써야 한다.

 

- 두 패키지 수동다운로드 후 적당한 디렉토리에 푼다(extensions 하위에)

 StubMangerUserLoginLogouutLog 디렉토리 생성

 

- LocalSettings.php에 다음행을 추가. 현재 미디어위키가 설치된 디렉토리에 대한 각 파일이 있는 상대경로이다.

 

require_once( "extensions/UserLoginLogoutLog/UserLoginLogoutLog.php" );
require_once( "extensions/StubManager/StubManager.php" );

 

- 마찬가지로 로그를 남기기 위해 사용자(WikiAgent) 추가

Posted by novice9

댓글을 달아 주세요

  1. Favicon of http://matia.tistory.com BlogIcon matia 2010.02.07 02:32 신고  댓글주소  수정/삭제  댓글쓰기

    UserLoginLogoutLog 익스텐션 설치후
    LocalSetting.php 에 위와 같은 코드를 삽입후

    위키 페이지에 접속을 하면 홈페이지가 유지보수중이라는 에러 메세지가 뜹니다..
    왜그럴까요..

    답변좀 부탁 드립니다... ㅜㅜ

    • Favicon of http://notes.textcube.com BlogIcon notes 2010.02.07 15:58 신고  댓글주소  수정/삭제

      글쎄요. 말씀만 듣고서는 어떤 현상이다라고 말하기가...잘못될 경우는 디렉토리가 잘못 지정될 경우 뿐인데..그리고 사용자(WikiAgent)는 추가해 주셨나요?

  2. Favicon of http://matia.tistory.com BlogIcon matia 2010.02.07 18:25 신고  댓글주소  수정/삭제  댓글쓰기

    사용자는 어디다 추가해야 되죠..?
    기존 사용자들 중에 로그인, 로그아웃 로그를 남길 사용자를 따로 등록하는건가요?

    • Favicon of http://notes.textcube.com BlogIcon notes 2010.02.07 18:58 신고  댓글주소  수정/삭제

      좌측 도구모음에 보시면 특수 문서 목록/사용자와 권한/사용자 목록 에 WikiAgent 라는 사용자가 있어야 합니다. 로그인/계정 만들기 에서 WikiAgent 사용자를 새로 하나 만들어주세요..

  3. Favicon of http://matia.tistory.com BlogIcon matia 2010.02.07 19:23 신고  댓글주소  수정/삭제  댓글쓰기

    무슨 영문인지 되질 않네요... ㅜㅜ

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

 

게시판 프로그램은 댓글형식으로 설계되었으니 그렇다 치고, 위키(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.02
        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      

최근에 받은 트랙백

글 보관함

Yesterday218
Today181
Total2,359,191