Moniwiki 설치하기 - 제2판

앞으로 생길 최신버전의 모니위키를 적용할 때마다, 수정되어야 할 부분을 정리했다. 이후 업데이트 시에 유용하게 사용될 것이다.

<?php
$sitename='Fat81 Wiki'; # site name
$data_dir= './data';
$upload_dir= 'pds';
 
$text_dir= $data_dir.'/text';
$cache_dir= $data_dir.'/cache';
$intermap= $data_dir.'/intermap.txt';
$editlog_name= $data_dir.'/editlog';
$shared_metadb= $data_dir."/metadb";
$shared_intermap= $data_dir."/text/InterMap";
 
$url_prefix="";
$imgs_dir= $url_prefix.'/imgs';
$logo_img= $imgs_dir.'/moniwiki-logo.png';
$query_prefix= '/';
 
$css_url= $url_prefix.'/css/nlog.css';
$kbd_script= $url_prefix.'/css/kbd.js';
$logo_string= '<img src="'.$logo_img.'" alt="" border="0" align="middle" />';
$use_smileys= 1;
#$smiley='wikismiley'; # you can also use SmileyMap too.
$use_counter= 0; # counter
$use_fakemtime=0; # dir mtime emulation for FAT filesytem.
$use_hostname= 1; # use hostname or ip address
$mask_hostname=1; # hide some part of hostnames or ip addresses
$show_hosts=0;
$edit_rows=16; # editer rows
$iconset= 'moni2'; # moni, moni2
$inline_latex=0; # 0/1(on/off), mimetex, itex, etc.
...
$lang='auto'; # check language automatically.
$charset='utf-8'; # default character set. euc-kr etc.
$auto_linebreak= 1; # NoSmoke style insert <br> automatically.
$trail= 0; # use trailer (navagation list of some recently visited pages)
#$origin=1; # show upper pages like as Language/Script/Perl => Language > Script > Perl
#$arrow=' <img src="/wiki/imgs/moni-arrow.gif"/> ';
$notify= 0; # enable email notification
$use_referer= 0; # use some basic referer feature.
$use_sistersites=1; # use sistersites/siterwiki feature.
#$use_singlebracket=1; #
$use_twinpages=1;
$use_trackback=0;
$vim_options='+"set expandtab" +"retab"'; # expand tabs in the Vim 6.x
#$vim_options='+"set expandtab" +"retab" +"let g:html_use_css=0"'; # with vim7.1 but hang... why ? :(
#$vim_options='+"set encoding=UTF-8"'; # for UTF-8 wikis
$pds_allowed="png|jpg|jpeg|gif|mp3|zip|tgz|gz|txt|css|exe|hwp|pdf|flv"; # some allowed file extension to upload.
$nonexists='fancy';
...
$security_class="mustlogin";
...
$menu=array('FrontPage'=>1,'FindPage'=>4,'TitleIndex'=>3,'RecentChanges'=>2,'UserPreferences'=>'');
...
$path='/home/hosting_users/fat81/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin';
...
$theme='blog'; # set the theme
$theme_css=1; # change css of theme or not
$hr=''; # obsolute
...
$metatags=<<<META
<meta name="robots" content="noindex,nofollow" />
<link rel="Start" href="FrontPage" />
<link rel="Index" href="TitleIndex" />
<link rel="Help" href="HelpOnFormatting" />
<link rel="Copyright" href="FrontPage" />
<link rel="Search" href="FindPage" />
<link rel="Glossary" href="WordIndex" />
<link rel="Alternate History" title="Page History" href="?action=info" />
<link rel="Alternate" title="xml" type="application/rss+xml" href="?action=rss_rc" />
<link rel="Alternate" title="Wiki Markup" type="text/plain" href="?action=raw" />
META;
...
$javascripts=array(
        'js/i18n.js',
        'Wikiwyg/lib/Wikiwyg.js',
        'Wikiwyg/lib/Wikiwyg/Util.js',
        'Wikiwyg/lib/Wikiwyg/Toolbar.js',
        'Wikiwyg/lib/Wikiwyg/Wikitext.js',
        'Wikiwyg/lib/Wikiwyg/Preview.js',
        'Wikiwyg/lib/Wikiwyg/HTML.js',
        'Wikiwyg/lib/Wikiwyg/Wysiwyg.js',
        'ajax.js',
        'moniwyg.js',
        'ASCIIMathML.js');
...
$perma_icon='#';
...
$myprocessors=array('syntax'=>'vim','sh'=>'vim','csh'=>'vim',
        'c'=>'vim','cpp'=>'vim','perl'=>'vim','lisp'=>'vim',
        'asm'=>'vim','masm'=>'vim','make'=>'vim',
        'java'=>'vim','ruby'=>'vim','haskell'=>'vim',
        'awk'=>'vim','nosyntax'=>'vim','make'=>'vim',
);
...
$use_resizer=2;
...
$use_wikiwyg=1; # 1 for GUI button/ 2 to set as default behavior/ 3 to set always use GUI.
#$wikiwyg_confirm=1; # always confirm
$use_sectionedit=1;
#$sectionedit_attr=1; # enable wikiwyg section editing
$spam_filter='antispam';
$toc_options='simple,toggle';
...
$local_abbr='LocalDictionary';
$postfilters='';
#$postfilters='';
$use_forcemerge=1;
$default_language='ko';
$use_alias=1;
$aliaspage=$data_dir.'/text/AliasPageNames';
$use_easyalias=1; # direct linking to the dest page
$css_friendly=1;
#$css_friendly=1; # for more CSS friendly support
$use_redirect_msg=0;
#$use_redirect_msg=1; # for MoinMoin compatible
#$use_safelogin=0;
$url_mappings=array('http://faq.ktug.or.kr/mywiki'=>'http://faq.ktug.or.kr/faq');
$shared_url_mappings='';
#$shared_url_mappings=$data_dir.'/text/UrlMap'; # enable builtin fix url
 
#$use_category=0; # on/off categories list in the edit mode
#$use_textbrowsers=1; # check some textbased browsers
$use_preview_uploads=1;
#$use_camelcase=0; # turn off camelcase syntax by default
#$mediawiki_style=0; # 0: wikiCreole style [[foo bar]]=>[[FooBar]], 1: mediawiki style preserve white spaces
#$category_regex=urldecode('%EB%B6%84%EB%A5%98$'); # a category example for Korean
#$use_backlinks=1; # set default fullsearch behavior as backlinks search
$fullsearch_tooshort=2; #
...
$use_errlog=1;
...
$use_resume_download=1;
#$control_read=1; # control read action also
#$use_macro_as_action=0; # XXX warn
#$isbn_img_download=1; # download isbn images to local cache dir.
#$use_clipmacro=1; # use clip applet with AttachmentMacro
$no_register=1; # do not allow to register anymore
#$dot_fontsize=10; # dot font size for the VisualTour
#$dot_fontname='Eunjin'; # webdot font name for graphviz 2.2.x
#$dot_fontname='WEBDOTFONT'; # webdot fontname fot graphviz 1.8.x
#$dot_options="size \"6,6\"\n"; # extra webdot options
$use_save_refresh=2;
$use_refresh=2;
$cachetime=0;
$cache_public_dir='./_cache'; # enhanced caching
$cache_public_url=$url_prefix.'/_cache';
...
$use_jwmediaplayer=1;
$jwmediaplayer_prefix='http://www.jeroenwijering.com/embed';
$flashupload='swfupload';
...
$robots='googlebot|yahoo';
$use_local_translation=0;
$dba_type="db4";
$rcs_user="root";
$admin_passwd='xxxxxxxx';

기존의 파일을 덮어 쓰면 된다.

기존의 파일을 덮어 쓰면 된다.

기존의 파일을 덮어 쓰면 된다.

기존의 파일을 덮어 쓰면 된다.

기존의 파일을 덮어 쓰면 된다.

아래와 같이 코드를 수정한다.

...
  function get_instructions(&$body) {
    global $Config;
    $pikeys=array('#redirect','#action','#title','#notitle','#keywords','#noindex',
      '#format','#filter','#postfilter','#twinpages','#notwins','#nocomment','#comment',
      '#language','#camelcase','#nocamelcase','#cache','#nocache',
      '#singlebracket','#nosinglebracket','#rating','#norating','#nodtd','#private');      // #private 추가
    $pi=array();
...
   $formatter->pi=$formatter->get_instructions($dum);
    if (!empty($DBInfo->body_attr))
      $options['attr']=$DBInfo->body_attr;
 
    if ($formatter->pi['#private'] and !$DBInfo->security->is_allowed('read_private',$options)) {     // 추가 
      do_invalid($formatter,$options);                          // 추가 
      return;                                                   // 추가 
    }                                                           // 추가
 
    $ret = $formatter->send_header('', $options);
...

목차를 사용할 때 표시하는 jpg 파일을 변경하기 위해서 아래와 같이 수정한다.

...
  $TOC_close=<<<EOS
<script type="text/javascript">
/*<![CDATA[*/
 if (window.showTocToggle) { showTocToggle('<img src="$DBInfo->imgs_dir/plugin/plus.jpg" width="10px" border="0" alt="[+]" title="[+]" />','<img src="$DBInfo->imgs_dir/plugin/minus.jpg" width="10px" border="0" alt="[-]" title="[-]" />'); }        // plus, minus 수정 
/*]]>*/
</script>
EOS;
...

해당 테마의 default.css 파일을 다음과 같이 수정한다.

table.wiki { 
  border: 0px outset #000000; 
  border-spacing: 0px; 
  padding: 0px; 
  border-collapse:collapse; 
} 
 
table.wiki tr { 
  border: 0px inset #000000; 
  background-color: #ECECEC; 
} 
 
table.wiki td { 
  border: 1px inset #000000; 
  background-color: #ECECEC; 
}

또한 print 시에 이를 적용하기 위해 print.css 파일에 동일하게 수정한다.

table.wiki { 
  border: 0px outset #000000; 
  border-spacing: 0px; 
  padding: 0px; 
  border-collapse:collapse; 
} 
 
table.wiki tr { 
  border: 0px inset #000000; 
  background-color: #ECECEC; 
} 
 
table.wiki td { 
  border: 1px inset #000000; 
  background-color: #ECECEC; 
}

날짜마다 목표 권수를 나타내기 위해 Book 라는 매크로 함수를 추가했다.
plugin/Book.php 라는 파일을 만들고, 아래처럼 추가한다.

<?php
// Copyright 2003-2004 Won-Kyu Park <wkpark at kldp.org>
// All rights reserved. Distributable under GPL see COPYING
// DueDate plugin for the MoniWiki
//
// Usage: DueDate([[YYYY]MM]DD)
//
// $Id: Moniwiki_ec_84_a4_ec_b9_98_ed_95_98_ea_b8_b0_ec_a0_9c2_ed_8c_90,v 1.2 2013/06/06 01:35:53 root Exp root $
 
function macro_Book($formatter,$value) {
  $time= localtime(time(),true);
 
  $day= $time['tm_mday'];
  $month= $time['tm_mon']+1;
  $year= $time['tm_year']+1900;
  $now_val= strtotime($year.sprintf("%02d%02d",$month,$day));
 
  $date_val=$value;
 
  if (strlen($value) == 2) {
    if ((int) $value < $time['tm_mday'])
      $month+=1;
    if ($month > 12) {
      $year+=1; $month=1;
    }
    $date_val=$year.sprintf("%02d%s",$month,$value);
  } else if (strlen($value) == 4) {
    if ($value < $month.$day)
      $year++;
    $date_val=$year.$value;
  } else if (strlen($value) != 8) {
    return "[[DueDate($value error!)]]";
  }
 
  $time_val= strtotime($date_val);
  $time_diff= (int) (($time_val - $now_val)/86400);
 
  $date = gmdate("Y-m-d", $time_val + $formatter->tz_offset);
 
  if  ($time_diff > 0)
     $msg=sprintf(_("%d day(s) left until %s."), $time_diff, $date);
  else if ($time_diff == 0)
     $msg=_("It's today.");
  else
     $msg=sprintf(_("%d"), (abs($time_diff))/7, $date);
 
  return $msg;
// vim:et:sts=4:
}
 
?>

이제 태그를 사용해서 제대로 동작하는지 확인하자.

[[BOOK(20130102)]]권


  • computer/os/moniwiki2.txt
  • Last modified: 5 weeks ago
  • by 127.0.0.1